xref: /dpdk/drivers/net/pfe/pfe_eth.h (revision df96fd0d73955bdc7ca3909e772ff2ad903249c6)
167fc3ff9SGagandeep Singh /* SPDX-License-Identifier: BSD-3-Clause
2f513f620SSachin Saxena  * Copyright 2018-2019 NXP
367fc3ff9SGagandeep Singh  */
467fc3ff9SGagandeep Singh 
567fc3ff9SGagandeep Singh #ifndef _PFE_ETH_H_
667fc3ff9SGagandeep Singh #define _PFE_ETH_H_
767fc3ff9SGagandeep Singh 
867fc3ff9SGagandeep Singh #include <compat.h>
967fc3ff9SGagandeep Singh #include <rte_ethdev.h>
10*df96fd0dSBruce Richardson #include <ethdev_vdev.h>
1167fc3ff9SGagandeep Singh 
1267fc3ff9SGagandeep Singh #define ETH_ALEN 6
1367fc3ff9SGagandeep Singh #define GEMAC_NO_PHY            BIT(0)
1467fc3ff9SGagandeep Singh 
1567fc3ff9SGagandeep Singh #define PFE_SOC_ID_FILE	"/sys/devices/soc0/soc_id"
1667fc3ff9SGagandeep Singh extern unsigned int pfe_svr;
1767fc3ff9SGagandeep Singh #define SVR_LS1012A_REV2	0x87040020
1867fc3ff9SGagandeep Singh #define SVR_LS1012A_REV1	0x87040010
1967fc3ff9SGagandeep Singh 
205253fe37SGagandeep Singh #define PFE_ETH_OVERHEAD        (RTE_ETHER_HDR_LEN + RTE_ETHER_CRC_LEN)
215253fe37SGagandeep Singh #define MAX_MTU_ON_REV1         1878
2267fc3ff9SGagandeep Singh struct ls1012a_eth_platform_data {
2367fc3ff9SGagandeep Singh 	/* device specific information */
2467fc3ff9SGagandeep Singh 	u32 device_flags;
2567fc3ff9SGagandeep Singh 	char name[16];
2667fc3ff9SGagandeep Singh 
2767fc3ff9SGagandeep Singh 	/* board specific information */
2867fc3ff9SGagandeep Singh 	u32 mii_config;
2967fc3ff9SGagandeep Singh 	u32 phy_flags;
3067fc3ff9SGagandeep Singh 	u32 gem_id;
3167fc3ff9SGagandeep Singh 	u32 bus_id;
3267fc3ff9SGagandeep Singh 	u32 phy_id;
3367fc3ff9SGagandeep Singh 	u32 mdio_muxval;
3467fc3ff9SGagandeep Singh 	u8 mac_addr[ETH_ALEN];
3567fc3ff9SGagandeep Singh };
3667fc3ff9SGagandeep Singh 
3767fc3ff9SGagandeep Singh struct ls1012a_mdio_platform_data {
3867fc3ff9SGagandeep Singh 	int enabled;
3967fc3ff9SGagandeep Singh 	int irq[32];
4067fc3ff9SGagandeep Singh 	u32 phy_mask;
4167fc3ff9SGagandeep Singh 	int mdc_div;
4267fc3ff9SGagandeep Singh };
4367fc3ff9SGagandeep Singh 
4467fc3ff9SGagandeep Singh struct ls1012a_pfe_platform_data {
4567fc3ff9SGagandeep Singh 	struct ls1012a_eth_platform_data ls1012a_eth_pdata[3];
4667fc3ff9SGagandeep Singh 	struct ls1012a_mdio_platform_data ls1012a_mdio_pdata[3];
4767fc3ff9SGagandeep Singh };
4867fc3ff9SGagandeep Singh 
4967fc3ff9SGagandeep Singh #define EMAC_TXQ_CNT	16
5067fc3ff9SGagandeep Singh #define EMAC_TXQ_DEPTH	(HIF_TX_DESC_NT)
5167fc3ff9SGagandeep Singh 
5267fc3ff9SGagandeep Singh #define JUMBO_FRAME_SIZE	10258
5367fc3ff9SGagandeep Singh #define EMAC_RXQ_CNT	1
5467fc3ff9SGagandeep Singh #define EMAC_RXQ_DEPTH	HIF_RX_DESC_NT
5567fc3ff9SGagandeep Singh 
5667fc3ff9SGagandeep Singh struct  pfe_eth_priv_s {
5767fc3ff9SGagandeep Singh 	struct pfe		*pfe;
58fe38ad9bSGagandeep Singh 	struct hif_client_s	client;
5967fc3ff9SGagandeep Singh 	int			low_tmu_q;
6067fc3ff9SGagandeep Singh 	int			high_tmu_q;
6167fc3ff9SGagandeep Singh 	struct rte_eth_dev	*ndev;
6267fc3ff9SGagandeep Singh 	struct rte_eth_stats	stats;
6367fc3ff9SGagandeep Singh 	int			id;
6467fc3ff9SGagandeep Singh 	int			promisc;
6567fc3ff9SGagandeep Singh 	int			link_fd;
6667fc3ff9SGagandeep Singh 
6767fc3ff9SGagandeep Singh 	spinlock_t		lock; /* protect member variables */
6867fc3ff9SGagandeep Singh 	void			*EMAC_baseaddr;
6967fc3ff9SGagandeep Singh 	/* This points to the EMAC base from where we access PHY */
7067fc3ff9SGagandeep Singh 	void			*PHY_baseaddr;
7167fc3ff9SGagandeep Singh 	void			*GPI_baseaddr;
7267fc3ff9SGagandeep Singh 
7367fc3ff9SGagandeep Singh 	struct ls1012a_eth_platform_data *einfo;
7467fc3ff9SGagandeep Singh };
7567fc3ff9SGagandeep Singh 
7667fc3ff9SGagandeep Singh #endif /* _PFE_ETH_H_ */
77