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