net/pfe: introduce basic functions
[dpdk.git] / drivers / net / pfe / pfe_eth.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright 2019 NXP
3  */
4
5 #ifndef _PFE_ETH_H_
6 #define _PFE_ETH_H_
7
8 #include <compat.h>
9 #include <rte_ethdev.h>
10 #include <rte_ethdev_vdev.h>
11
12 #define ETH_ALEN 6
13 #define GEMAC_NO_PHY            BIT(0)
14
15 #define PFE_SOC_ID_FILE "/sys/devices/soc0/soc_id"
16 extern unsigned int pfe_svr;
17 #define SVR_LS1012A_REV2        0x87040020
18 #define SVR_LS1012A_REV1        0x87040010
19
20 struct ls1012a_eth_platform_data {
21         /* device specific information */
22         u32 device_flags;
23         char name[16];
24
25         /* board specific information */
26         u32 mii_config;
27         u32 phy_flags;
28         u32 gem_id;
29         u32 bus_id;
30         u32 phy_id;
31         u32 mdio_muxval;
32         u8 mac_addr[ETH_ALEN];
33 };
34
35 struct ls1012a_mdio_platform_data {
36         int enabled;
37         int irq[32];
38         u32 phy_mask;
39         int mdc_div;
40 };
41
42 struct ls1012a_pfe_platform_data {
43         struct ls1012a_eth_platform_data ls1012a_eth_pdata[3];
44         struct ls1012a_mdio_platform_data ls1012a_mdio_pdata[3];
45 };
46
47 #define EMAC_TXQ_CNT    16
48 #define EMAC_TXQ_DEPTH  (HIF_TX_DESC_NT)
49
50 #define JUMBO_FRAME_SIZE        10258
51 #define EMAC_RXQ_CNT    1
52 #define EMAC_RXQ_DEPTH  HIF_RX_DESC_NT
53
54 struct  pfe_eth_priv_s {
55         struct pfe              *pfe;
56         int                     low_tmu_q;
57         int                     high_tmu_q;
58         struct rte_eth_dev      *ndev;
59         struct rte_eth_stats    stats;
60         int                     id;
61         int                     promisc;
62         int                     link_fd;
63
64         spinlock_t              lock; /* protect member variables */
65         void                    *EMAC_baseaddr;
66         /* This points to the EMAC base from where we access PHY */
67         void                    *PHY_baseaddr;
68         void                    *GPI_baseaddr;
69
70         struct ls1012a_eth_platform_data *einfo;
71 };
72
73 #endif /* _PFE_ETH_H_ */