1 /* 2 * Copyright (c) 2016 - 2020, Broadcom 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 */ 6 7 #ifndef PAXB_H 8 #define PAXB_H 9 10 /* total number of PCIe cores */ 11 #define NUM_OF_SR_PCIE_CORES 8 12 #define NUM_OF_NS3Z_PCIE_CORES 1 13 14 /* 15 * List of PCIe core and PAXB wrapper memory power registers 16 */ 17 #define PCIE_CORE_BASE 0x40000800 18 #define PCIE_CORE_SOFT_RST_CFG_BASE (PCIE_CORE_BASE + 0x40) 19 #define PCIE_CORE_SOFT_RST 0x1 20 #define PCIE_CORE_ISO_CFG_BASE (PCIE_CORE_BASE + 0x54) 21 #define PCIE_CORE_MEM_ISO 0x2 22 #define PCIE_CORE_ISO 0x1 23 24 #define PCIE_CORE_MEM_PWR_BASE (PCIE_CORE_BASE + 0x58) 25 #define PCIE_PAXB_MEM_PWR_BASE (PCIE_CORE_BASE + 0x5c) 26 #define PCIE_CORE_PMI_CFG_BASE (PCIE_CORE_BASE + 0x64) 27 #define PCIE_CORE_RESERVED_CFG (PCIE_CORE_BASE + 0x6c) 28 #define PCIE_CORE_MEM_PWR_STATUS_BASE (PCIE_CORE_BASE + 0x74) 29 #define PCIE_PAXB_MEM_PWR_STATUS_BASE (PCIE_CORE_BASE + 0x78) 30 #define PCIE_CORE_PWR_OFFSET 0x100 31 32 #define SR_A0_DEVICE_ID 0xd713 33 #define SR_B0_DEVICE_ID 0xd714 34 /* TODO: Modify device ID once available */ 35 #define NS3Z_DEVICE_ID 0xd715 36 37 /* FIXME: change link speed to GEN3 when it's ready */ 38 #define GEN1_LINK_SPEED 1 39 #define GEN2_LINK_SPEED 2 40 #define GEN3_LINK_SPEED 3 41 42 typedef struct { 43 uint32_t type; 44 uint32_t device_id; 45 uint32_t pipemux_idx; 46 uint32_t num_cores; 47 int (*pipemux_init)(void); 48 int (*phy_init)(void); 49 int (*core_needs_enable)(unsigned int core_idx); 50 unsigned int (*get_link_width)(unsigned int core_idx); 51 unsigned int (*get_link_speed)(void); 52 } paxb_cfg; 53 54 enum paxb_type { 55 PAXB_SR, 56 PAXB_NS3Z, 57 }; 58 59 extern const paxb_cfg *paxb; 60 61 #ifdef USE_PAXB 62 void paxb_init(void); 63 void paxb_rc_cfg_write(unsigned int core_idx, unsigned int where, 64 uint32_t val); 65 unsigned int paxb_rc_cfg_read(unsigned int core_idx, unsigned int where); 66 int pcie_core_needs_enable(unsigned int core_idx); 67 const paxb_cfg *paxb_get_sr_config(void); 68 #else paxb_init(void)69static inline void paxb_init(void) 70 { 71 } 72 #endif 73 74 #endif /* PAXB_H */ 75