Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-or-later */
0002 /*
0003  * Applied Micro X-Gene SoC Ethernet v2 Driver
0004  *
0005  * Copyright (c) 2017, Applied Micro Circuits Corporation
0006  * Author(s): Iyappan Subramanian <isubramanian@apm.com>
0007  *        Keyur Chudgar <kchudgar@apm.com>
0008  */
0009 
0010 #ifndef __XGENE_ENET_V2_MAIN_H__
0011 #define __XGENE_ENET_V2_MAIN_H__
0012 
0013 #include <linux/acpi.h>
0014 #include <linux/clk.h>
0015 #include <linux/efi.h>
0016 #include <linux/if_vlan.h>
0017 #include <linux/irq.h>
0018 #include <linux/io.h>
0019 #include <linux/module.h>
0020 #include <linux/of_platform.h>
0021 #include <linux/of_net.h>
0022 #include <linux/of_mdio.h>
0023 #include <linux/prefetch.h>
0024 #include <linux/phy.h>
0025 #include <net/ip.h>
0026 #include "mac.h"
0027 #include "enet.h"
0028 #include "ring.h"
0029 #include "ethtool.h"
0030 
0031 #define XGENE_ENET_STD_MTU  1536
0032 #define XGENE_ENET_MIN_FRAME    60
0033 #define IRQ_ID_SIZE             16
0034 
0035 struct xge_resource {
0036     void __iomem *base_addr;
0037     int phy_mode;
0038     u32 irq;
0039 };
0040 
0041 struct xge_stats {
0042     u64 tx_packets;
0043     u64 tx_bytes;
0044     u64 rx_packets;
0045     u64 rx_bytes;
0046     u64 rx_errors;
0047 };
0048 
0049 /* ethernet private data */
0050 struct xge_pdata {
0051     struct xge_resource resources;
0052     struct xge_desc_ring *tx_ring;
0053     struct xge_desc_ring *rx_ring;
0054     struct platform_device *pdev;
0055     char irq_name[IRQ_ID_SIZE];
0056     struct mii_bus *mdio_bus;
0057     struct net_device *ndev;
0058     struct napi_struct napi;
0059     struct xge_stats stats;
0060     int phy_speed;
0061     u8 nbufs;
0062 };
0063 
0064 int xge_mdio_config(struct net_device *ndev);
0065 void xge_mdio_remove(struct net_device *ndev);
0066 
0067 #endif /* __XGENE_ENET_V2_MAIN_H__ */