8a41370c32b266afc685835029432b95fa8d5f95
[dpdk.git] / drivers / net / pfe / pfe_mod.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright 2019 NXP
3  */
4
5 #ifndef _PFE_MOD_H_
6 #define _PFE_MOD_H_
7
8 struct pfe;
9
10 #include "pfe_eth.h"
11
12 #define PHYID_MAX_VAL 32
13
14 /* PFE DPDK driver supports two interfaces.
15  */
16 #define PFE_CDEV_ETH_COUNT 2
17
18 /* PFE DPDK driver needs a kernel module named "pfe.ko", This module
19  * is required for PHY initialisation and creates a character device
20  * "pfe_us_cdev" for IOCTL support. PFE DPDK driver uses this character
21  * device for link status.
22  */
23 #define PFE_CDEV_PATH           "/dev/pfe_us_cdev"
24 #define PFE_CDEV_INVALID_FD     -1
25 #define PFE_NAME_PMD            net_pfe
26
27 /* used when 'read' call is issued, returning PFE_CDEV_ETH_COUNT number of
28  * pfe_shared_info as array.
29  */
30 struct pfe_shared_info {
31         uint32_t phy_id; /* Link phy ID */
32         uint8_t state;  /* Has either 0 or 1 */
33 };
34
35 struct pfe_eth {
36         struct pfe_eth_priv_s *eth_priv[PFE_CDEV_ETH_COUNT];
37 };
38
39 struct pfe {
40         uint64_t ddr_phys_baseaddr;
41         void *ddr_baseaddr;
42         uint64_t ddr_size;
43         void *cbus_baseaddr;
44         uint64_t cbus_size;
45         struct pfe_eth eth;
46         int mdio_muxval[PHYID_MAX_VAL];
47         uint8_t nb_devs;
48         uint8_t max_intf;
49         int cdev_fd;
50 };
51
52 /* IOCTL Commands */
53 #define PFE_CDEV_ETH0_STATE_GET         _IOR('R', 0, int)
54 #define PFE_CDEV_ETH1_STATE_GET         _IOR('R', 1, int)
55 #define PFE_CDEV_HIF_INTR_EN            _IOWR('R', 2, int)
56 #endif /* _PFE_MOD_H */