1/* 2 * Applied Micro X-Gene SoC Ethernet v2 Driver 3 * 4 * Copyright (c) 2017, Applied Micro Circuits Corporation 5 * Author(s): Iyappan Subramanian <isubramanian@apm.com> 6 * Keyur Chudgar <kchudgar@apm.com> 7 * 8 * This program is free software; you can redistribute it and/or modify it 9 * under the terms of the GNU General Public License as published by the 10 * Free Software Foundation; either version 2 of the License, or (at your 11 * option) any later version. 12 * 13 * This program is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 * GNU General Public License for more details. 17 * 18 * You should have received a copy of the GNU General Public License 19 * along with this program. If not, see <http://www.gnu.org/licenses/>. 20 */ 21 22#ifndef __XGENE_ENET_V2_MAIN_H__ 23#define __XGENE_ENET_V2_MAIN_H__ 24 25#include <linux/acpi.h> 26#include <linux/clk.h> 27#include <linux/efi.h> 28#include <linux/if_vlan.h> 29#include <linux/irq.h> 30#include <linux/io.h> 31#include <linux/module.h> 32#include <linux/of_platform.h> 33#include <linux/of_net.h> 34#include <linux/of_mdio.h> 35#include <linux/prefetch.h> 36#include <linux/phy.h> 37#include <net/ip.h> 38#include "mac.h" 39#include "enet.h" 40#include "ring.h" 41#include "ethtool.h" 42 43#define XGENE_ENET_V2_VERSION "v1.0" 44#define XGENE_ENET_STD_MTU 1536 45#define XGENE_ENET_MIN_FRAME 60 46#define IRQ_ID_SIZE 16 47 48struct xge_resource { 49 void __iomem *base_addr; 50 int phy_mode; 51 u32 irq; 52}; 53 54struct xge_stats { 55 u64 tx_packets; 56 u64 tx_bytes; 57 u64 rx_packets; 58 u64 rx_bytes; 59 u64 rx_errors; 60}; 61 62/* ethernet private data */ 63struct xge_pdata { 64 struct xge_resource resources; 65 struct xge_desc_ring *tx_ring; 66 struct xge_desc_ring *rx_ring; 67 struct platform_device *pdev; 68 char irq_name[IRQ_ID_SIZE]; 69 struct mii_bus *mdio_bus; 70 struct net_device *ndev; 71 struct napi_struct napi; 72 struct xge_stats stats; 73 int phy_speed; 74 u8 nbufs; 75}; 76 77int xge_mdio_config(struct net_device *ndev); 78void xge_mdio_remove(struct net_device *ndev); 79 80#endif /* __XGENE_ENET_V2_MAIN_H__ */ 81