18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Applied Micro X-Gene SoC Ethernet v2 Driver 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Copyright (c) 2017, Applied Micro Circuits Corporation 68c2ecf20Sopenharmony_ci * Author(s): Iyappan Subramanian <isubramanian@apm.com> 78c2ecf20Sopenharmony_ci * Keyur Chudgar <kchudgar@apm.com> 88c2ecf20Sopenharmony_ci */ 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci#ifndef __XGENE_ENET_V2_MAIN_H__ 118c2ecf20Sopenharmony_ci#define __XGENE_ENET_V2_MAIN_H__ 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_ci#include <linux/acpi.h> 148c2ecf20Sopenharmony_ci#include <linux/clk.h> 158c2ecf20Sopenharmony_ci#include <linux/efi.h> 168c2ecf20Sopenharmony_ci#include <linux/if_vlan.h> 178c2ecf20Sopenharmony_ci#include <linux/irq.h> 188c2ecf20Sopenharmony_ci#include <linux/io.h> 198c2ecf20Sopenharmony_ci#include <linux/module.h> 208c2ecf20Sopenharmony_ci#include <linux/of_platform.h> 218c2ecf20Sopenharmony_ci#include <linux/of_net.h> 228c2ecf20Sopenharmony_ci#include <linux/of_mdio.h> 238c2ecf20Sopenharmony_ci#include <linux/prefetch.h> 248c2ecf20Sopenharmony_ci#include <linux/phy.h> 258c2ecf20Sopenharmony_ci#include <net/ip.h> 268c2ecf20Sopenharmony_ci#include "mac.h" 278c2ecf20Sopenharmony_ci#include "enet.h" 288c2ecf20Sopenharmony_ci#include "ring.h" 298c2ecf20Sopenharmony_ci#include "ethtool.h" 308c2ecf20Sopenharmony_ci 318c2ecf20Sopenharmony_ci#define XGENE_ENET_STD_MTU 1536 328c2ecf20Sopenharmony_ci#define XGENE_ENET_MIN_FRAME 60 338c2ecf20Sopenharmony_ci#define IRQ_ID_SIZE 16 348c2ecf20Sopenharmony_ci 358c2ecf20Sopenharmony_cistruct xge_resource { 368c2ecf20Sopenharmony_ci void __iomem *base_addr; 378c2ecf20Sopenharmony_ci int phy_mode; 388c2ecf20Sopenharmony_ci u32 irq; 398c2ecf20Sopenharmony_ci}; 408c2ecf20Sopenharmony_ci 418c2ecf20Sopenharmony_cistruct xge_stats { 428c2ecf20Sopenharmony_ci u64 tx_packets; 438c2ecf20Sopenharmony_ci u64 tx_bytes; 448c2ecf20Sopenharmony_ci u64 rx_packets; 458c2ecf20Sopenharmony_ci u64 rx_bytes; 468c2ecf20Sopenharmony_ci u64 rx_errors; 478c2ecf20Sopenharmony_ci}; 488c2ecf20Sopenharmony_ci 498c2ecf20Sopenharmony_ci/* ethernet private data */ 508c2ecf20Sopenharmony_cistruct xge_pdata { 518c2ecf20Sopenharmony_ci struct xge_resource resources; 528c2ecf20Sopenharmony_ci struct xge_desc_ring *tx_ring; 538c2ecf20Sopenharmony_ci struct xge_desc_ring *rx_ring; 548c2ecf20Sopenharmony_ci struct platform_device *pdev; 558c2ecf20Sopenharmony_ci char irq_name[IRQ_ID_SIZE]; 568c2ecf20Sopenharmony_ci struct mii_bus *mdio_bus; 578c2ecf20Sopenharmony_ci struct net_device *ndev; 588c2ecf20Sopenharmony_ci struct napi_struct napi; 598c2ecf20Sopenharmony_ci struct xge_stats stats; 608c2ecf20Sopenharmony_ci int phy_speed; 618c2ecf20Sopenharmony_ci u8 nbufs; 628c2ecf20Sopenharmony_ci}; 638c2ecf20Sopenharmony_ci 648c2ecf20Sopenharmony_ciint xge_mdio_config(struct net_device *ndev); 658c2ecf20Sopenharmony_civoid xge_mdio_remove(struct net_device *ndev); 668c2ecf20Sopenharmony_ci 678c2ecf20Sopenharmony_ci#endif /* __XGENE_ENET_V2_MAIN_H__ */ 68