xref: /dpdk/drivers/net/pfe/pfe_mod.h (revision f513f620591370c7b10f43fc7baa2e258d2f428d)
167fc3ff9SGagandeep Singh /* SPDX-License-Identifier: BSD-3-Clause
2*f513f620SSachin Saxena  * Copyright 2018-2019 NXP
367fc3ff9SGagandeep Singh  */
467fc3ff9SGagandeep Singh 
567fc3ff9SGagandeep Singh #ifndef _PFE_MOD_H_
667fc3ff9SGagandeep Singh #define _PFE_MOD_H_
767fc3ff9SGagandeep Singh 
867fc3ff9SGagandeep Singh struct pfe;
967fc3ff9SGagandeep Singh 
1036220514SGagandeep Singh #include <rte_ethdev.h>
1136220514SGagandeep Singh 
125253fe37SGagandeep Singh #include "pfe.h"
135253fe37SGagandeep Singh #include "pfe_hif.h"
145253fe37SGagandeep Singh #include "pfe_hif_lib.h"
1567fc3ff9SGagandeep Singh #include "pfe_eth.h"
1667fc3ff9SGagandeep Singh 
1767fc3ff9SGagandeep Singh #define PHYID_MAX_VAL 32
1867fc3ff9SGagandeep Singh 
1967fc3ff9SGagandeep Singh /* PFE DPDK driver supports two interfaces.
2067fc3ff9SGagandeep Singh  */
2167fc3ff9SGagandeep Singh #define PFE_CDEV_ETH_COUNT 2
2267fc3ff9SGagandeep Singh 
2367fc3ff9SGagandeep Singh /* PFE DPDK driver needs a kernel module named "pfe.ko", This module
2467fc3ff9SGagandeep Singh  * is required for PHY initialisation and creates a character device
2567fc3ff9SGagandeep Singh  * "pfe_us_cdev" for IOCTL support. PFE DPDK driver uses this character
2667fc3ff9SGagandeep Singh  * device for link status.
2767fc3ff9SGagandeep Singh  */
2867fc3ff9SGagandeep Singh #define PFE_CDEV_PATH		"/dev/pfe_us_cdev"
2967fc3ff9SGagandeep Singh #define PFE_CDEV_INVALID_FD	-1
3067fc3ff9SGagandeep Singh #define PFE_NAME_PMD		net_pfe
3167fc3ff9SGagandeep Singh 
3267fc3ff9SGagandeep Singh /* used when 'read' call is issued, returning PFE_CDEV_ETH_COUNT number of
3367fc3ff9SGagandeep Singh  * pfe_shared_info as array.
3467fc3ff9SGagandeep Singh  */
3567fc3ff9SGagandeep Singh struct pfe_shared_info {
3667fc3ff9SGagandeep Singh 	uint32_t phy_id; /* Link phy ID */
3767fc3ff9SGagandeep Singh 	uint8_t state;  /* Has either 0 or 1 */
3867fc3ff9SGagandeep Singh };
3967fc3ff9SGagandeep Singh 
4067fc3ff9SGagandeep Singh struct pfe_eth {
4167fc3ff9SGagandeep Singh 	struct pfe_eth_priv_s *eth_priv[PFE_CDEV_ETH_COUNT];
4267fc3ff9SGagandeep Singh };
4367fc3ff9SGagandeep Singh 
4467fc3ff9SGagandeep Singh struct pfe {
4567fc3ff9SGagandeep Singh 	uint64_t ddr_phys_baseaddr;
4667fc3ff9SGagandeep Singh 	void *ddr_baseaddr;
4767fc3ff9SGagandeep Singh 	uint64_t ddr_size;
4867fc3ff9SGagandeep Singh 	void *cbus_baseaddr;
4967fc3ff9SGagandeep Singh 	uint64_t cbus_size;
505253fe37SGagandeep Singh 	struct ls1012a_pfe_platform_data platform_data;
515253fe37SGagandeep Singh 	struct pfe_hif hif;
5267fc3ff9SGagandeep Singh 	struct pfe_eth eth;
53fe38ad9bSGagandeep Singh 	struct hif_client_s *hif_client[HIF_CLIENTS_MAX];
5467fc3ff9SGagandeep Singh 	int mdio_muxval[PHYID_MAX_VAL];
5567fc3ff9SGagandeep Singh 	uint8_t nb_devs;
5667fc3ff9SGagandeep Singh 	uint8_t max_intf;
5767fc3ff9SGagandeep Singh 	int cdev_fd;
5867fc3ff9SGagandeep Singh };
5967fc3ff9SGagandeep Singh 
6067fc3ff9SGagandeep Singh /* IOCTL Commands */
6167fc3ff9SGagandeep Singh #define PFE_CDEV_ETH0_STATE_GET		_IOR('R', 0, int)
6267fc3ff9SGagandeep Singh #define PFE_CDEV_ETH1_STATE_GET		_IOR('R', 1, int)
6367fc3ff9SGagandeep Singh #define PFE_CDEV_HIF_INTR_EN		_IOWR('R', 2, int)
6467fc3ff9SGagandeep Singh #endif /* _PFE_MOD_H */
65