Lines Matching defs:pcie_port

95 static int cvmx_pcie_rc_initialize(int pcie_port);
101 * @pcie_port: PCIe port the IO is for
105 static inline uint64_t cvmx_pcie_get_io_base_address(int pcie_port)
114 pcie_addr.io.port = pcie_port;
122 * @pcie_port: PCIe port the IO is for
126 static inline uint64_t cvmx_pcie_get_io_size(int pcie_port)
135 * @pcie_port: PCIe port the IO is for
139 static inline uint64_t cvmx_pcie_get_mem_base_address(int pcie_port)
146 pcie_addr.mem.subdid = 3 + pcie_port;
154 * @pcie_port: PCIe port the IO is for
158 static inline uint64_t cvmx_pcie_get_mem_size(int pcie_port)
167 * @pcie_port: PCIe port to read from
172 static uint32_t cvmx_pcie_cfgx_read(int pcie_port, uint32_t cfg_offset)
178 cvmx_write_csr(CVMX_PESCX_CFG_RD(pcie_port), pescx_cfg_rd.u64);
179 pescx_cfg_rd.u64 = cvmx_read_csr(CVMX_PESCX_CFG_RD(pcie_port));
185 cvmx_write_csr(CVMX_PEMX_CFG_RD(pcie_port), pemx_cfg_rd.u64);
186 pemx_cfg_rd.u64 = cvmx_read_csr(CVMX_PEMX_CFG_RD(pcie_port));
195 * @pcie_port: PCIe port to write to
199 static void cvmx_pcie_cfgx_write(int pcie_port, uint32_t cfg_offset,
207 cvmx_write_csr(CVMX_PESCX_CFG_WR(pcie_port), pescx_cfg_wr.u64);
213 cvmx_write_csr(CVMX_PEMX_CFG_WR(pcie_port), pemx_cfg_wr.u64);
220 * @pcie_port: PCIe port to access
228 static inline uint64_t __cvmx_pcie_build_config_addr(int pcie_port, int bus,
235 cvmx_pcie_cfgx_read(pcie_port, CVMX_PCIERCX_CFG006(pcie_port));
245 pcie_addr.config.port = pcie_port;
257 * @pcie_port: PCIe port the device is on
265 static uint8_t cvmx_pcie_config_read8(int pcie_port, int bus, int dev,
269 __cvmx_pcie_build_config_addr(pcie_port, bus, dev, fn, reg);
279 * @pcie_port: PCIe port the device is on
287 static uint16_t cvmx_pcie_config_read16(int pcie_port, int bus, int dev,
291 __cvmx_pcie_build_config_addr(pcie_port, bus, dev, fn, reg);
301 * @pcie_port: PCIe port the device is on
309 static uint32_t cvmx_pcie_config_read32(int pcie_port, int bus, int dev,
313 __cvmx_pcie_build_config_addr(pcie_port, bus, dev, fn, reg);
323 * @pcie_port: PCIe port the device is on
330 static void cvmx_pcie_config_write8(int pcie_port, int bus, int dev, int fn,
334 __cvmx_pcie_build_config_addr(pcie_port, bus, dev, fn, reg);
342 * @pcie_port: PCIe port the device is on
349 static void cvmx_pcie_config_write16(int pcie_port, int bus, int dev, int fn,
353 __cvmx_pcie_build_config_addr(pcie_port, bus, dev, fn, reg);
361 * @pcie_port: PCIe port the device is on
368 static void cvmx_pcie_config_write32(int pcie_port, int bus, int dev, int fn,
372 __cvmx_pcie_build_config_addr(pcie_port, bus, dev, fn, reg);
380 * @pcie_port: PCIe port to initialize
382 static void __cvmx_pcie_rc_initialize_config_space(int pcie_port)
402 pciercx_cfg030.u32 = cvmx_pcie_cfgx_read(pcie_port, CVMX_PCIERCX_CFG030(pcie_port));
425 cvmx_pcie_cfgx_write(pcie_port, CVMX_PCIERCX_CFG030(pcie_port), pciercx_cfg030.u32);
441 if (pcie_port)
456 prt_cfg.u64 = cvmx_read_csr(CVMX_DPI_SLI_PRTX_CFG(pcie_port));
461 cvmx_write_csr(CVMX_DPI_SLI_PRTX_CFG(pcie_port), prt_cfg.u64);
463 sli_s2m_portx_ctl.u64 = cvmx_read_csr(CVMX_PEXP_SLI_S2M_PORTX_CTL(pcie_port));
465 cvmx_write_csr(CVMX_PEXP_SLI_S2M_PORTX_CTL(pcie_port), sli_s2m_portx_ctl.u64);
469 pciercx_cfg070.u32 = cvmx_pcie_cfgx_read(pcie_port, CVMX_PCIERCX_CFG070(pcie_port));
472 cvmx_pcie_cfgx_write(pcie_port, CVMX_PCIERCX_CFG070(pcie_port), pciercx_cfg070.u32);
480 pciercx_cfg001.u32 = cvmx_pcie_cfgx_read(pcie_port, CVMX_PCIERCX_CFG001(pcie_port));
485 cvmx_pcie_cfgx_write(pcie_port, CVMX_PCIERCX_CFG001(pcie_port), pciercx_cfg001.u32);
489 cvmx_pcie_cfgx_write(pcie_port, CVMX_PCIERCX_CFG066(pcie_port), 0);
491 cvmx_pcie_cfgx_write(pcie_port, CVMX_PCIERCX_CFG069(pcie_port), 0);
495 pciercx_cfg032.u32 = cvmx_pcie_cfgx_read(pcie_port, CVMX_PCIERCX_CFG032(pcie_port));
497 cvmx_pcie_cfgx_write(pcie_port, CVMX_PCIERCX_CFG032(pcie_port), pciercx_cfg032.u32);
512 cvmx_pcie_cfgx_write(pcie_port, CVMX_PCIERCX_CFG006(pcie_port), pciercx_cfg006.u32);
523 cvmx_pcie_cfgx_write(pcie_port, CVMX_PCIERCX_CFG008(pcie_port), pciercx_cfg008.u32);
532 pciercx_cfg009.u32 = cvmx_pcie_cfgx_read(pcie_port, CVMX_PCIERCX_CFG009(pcie_port));
533 pciercx_cfg010.u32 = cvmx_pcie_cfgx_read(pcie_port, CVMX_PCIERCX_CFG010(pcie_port));
534 pciercx_cfg011.u32 = cvmx_pcie_cfgx_read(pcie_port, CVMX_PCIERCX_CFG011(pcie_port));
539 cvmx_pcie_cfgx_write(pcie_port, CVMX_PCIERCX_CFG009(pcie_port), pciercx_cfg009.u32);
540 cvmx_pcie_cfgx_write(pcie_port, CVMX_PCIERCX_CFG010(pcie_port), pciercx_cfg010.u32);
541 cvmx_pcie_cfgx_write(pcie_port, CVMX_PCIERCX_CFG011(pcie_port), pciercx_cfg011.u32);
547 pciercx_cfg035.u32 = cvmx_pcie_cfgx_read(pcie_port, CVMX_PCIERCX_CFG035(pcie_port));
552 cvmx_pcie_cfgx_write(pcie_port, CVMX_PCIERCX_CFG035(pcie_port), pciercx_cfg035.u32);
558 pciercx_cfg075.u32 = cvmx_pcie_cfgx_read(pcie_port, CVMX_PCIERCX_CFG075(pcie_port));
562 cvmx_pcie_cfgx_write(pcie_port, CVMX_PCIERCX_CFG075(pcie_port), pciercx_cfg075.u32);
568 pciercx_cfg034.u32 = cvmx_pcie_cfgx_read(pcie_port, CVMX_PCIERCX_CFG034(pcie_port));
572 cvmx_pcie_cfgx_write(pcie_port, CVMX_PCIERCX_CFG034(pcie_port), pciercx_cfg034.u32);
580 * @pcie_port: PCIe port to initialize
584 static int __cvmx_pcie_rc_initialize_link_gen1(int pcie_port)
593 pciercx_cfg452.u32 = cvmx_pcie_cfgx_read(pcie_port, CVMX_PCIERCX_CFG452(pcie_port));
594 pescx_ctl_status.u64 = cvmx_read_csr(CVMX_PESCX_CTL_STATUS(pcie_port));
601 cvmx_pcie_cfgx_write(pcie_port, CVMX_PCIERCX_CFG452(pcie_port), pciercx_cfg452.u32);
610 pciercx_cfg455.u32 = cvmx_pcie_cfgx_read(pcie_port, CVMX_PCIERCX_CFG455(pcie_port));
612 cvmx_pcie_cfgx_write(pcie_port, CVMX_PCIERCX_CFG455(pcie_port), pciercx_cfg455.u32);
616 if (OCTEON_IS_MODEL(OCTEON_CN52XX) && (pcie_port == 1)) {
618 cvmx_write_csr(CVMX_PESCX_CTL_STATUS(pcie_port), pescx_ctl_status.u64);
622 pescx_ctl_status.u64 = cvmx_read_csr(CVMX_PESCX_CTL_STATUS(pcie_port));
624 cvmx_write_csr(CVMX_PESCX_CTL_STATUS(pcie_port), pescx_ctl_status.u64);
637 cvmx_dprintf("PCIe: Port %d link timeout\n", pcie_port);
641 pciercx_cfg032.u32 = cvmx_pcie_cfgx_read(pcie_port, CVMX_PCIERCX_CFG032(pcie_port));
655 pciercx_cfg448.u32 = cvmx_pcie_cfgx_read(pcie_port, CVMX_PCIERCX_CFG448(pcie_port));
670 cvmx_pcie_cfgx_write(pcie_port, CVMX_PCIERCX_CFG448(pcie_port), pciercx_cfg448.u32);
687 * @pcie_port: PCIe port to initialize
691 static int __cvmx_pcie_rc_initialize_gen1(int pcie_port)
713 if ((pcie_port == 0) && !npei_ctl_status.s.host_mode) {
714 cvmx_dprintf("PCIe: Port %d in endpoint mode\n", pcie_port);
724 if ((pcie_port == 1) && npei_dbg_data.cn52xx.qlm0_link_width) {
756 if (pcie_port == 0) {
787 if (pcie_port)
799 if (pcie_port)
806 if (pcie_port) {
830 pescx_ctl_status2.u64 = cvmx_read_csr(CVMX_PESCX_CTL_STATUS2(pcie_port));
832 cvmx_write_csr(CVMX_PESCX_CTL_STATUS2(pcie_port), pescx_ctl_status2.u64);
836 if (CVMX_WAIT_FOR_FIELD64(CVMX_PESCX_CTL_STATUS2(pcie_port),
838 cvmx_dprintf("PCIe: Port %d isn't clocked, skipping.\n", pcie_port);
848 pescx_ctl_status2.u64 = cvmx_read_csr(CVMX_PESCX_CTL_STATUS2(pcie_port));
850 cvmx_dprintf("PCIe: Port %d stuck in reset, skipping.\n", pcie_port);
859 pescx_bist_status2.u64 = cvmx_read_csr(CVMX_PESCX_BIST_STATUS2(pcie_port));
862 pcie_port);
867 pescx_bist_status.u64 = cvmx_read_csr(CVMX_PESCX_BIST_STATUS(pcie_port));
870 pcie_port, CAST64(pescx_bist_status.u64));
873 __cvmx_pcie_rc_initialize_config_space(pcie_port);
876 if (__cvmx_pcie_rc_initialize_link_gen1(pcie_port)) {
878 pcie_port);
890 mem_access_subid.s.port = pcie_port; /* Port the request is sent to. */
904 for (i = 12 + pcie_port * 4; i < 16 + pcie_port * 4; i++) {
915 cvmx_write_csr(CVMX_PESCX_P2P_BARX_START(i, pcie_port), -1);
916 cvmx_write_csr(CVMX_PESCX_P2P_BARX_END(i, pcie_port), -1);
920 cvmx_write_csr(CVMX_PESCX_P2N_BAR0_START(pcie_port), 0);
923 cvmx_write_csr(CVMX_PESCX_P2N_BAR1_START(pcie_port), CVMX_PCIE_BAR1_RC_BASE);
931 base = pcie_port ? 16 : 0;
953 cvmx_write_csr(CVMX_PESCX_P2N_BAR2_START(pcie_port), 0);
964 if (pcie_port) {
1010 uint64_t write_address = (cvmx_pcie_get_mem_base_address(pcie_port) + 0x100000) | (1ull<<63);
1029 cvmx_write_csr(CVMX_PEXP_NPEI_DBG_SELECT, (pcie_port) ? 0xd7fc : 0xcffc);
1044 cvmx_write_csr(CVMX_PEXP_NPEI_DBG_SELECT, (pcie_port) ? 0xd00f : 0xc80f);
1051 cvmx_dprintf("PCIe: Port %d aligning TLP counters as workaround to maintain ordering\n", pcie_port);
1066 (pcie_port == 1))
1074 pciercx_cfg032.u32 = cvmx_pcie_cfgx_read(pcie_port, CVMX_PCIERCX_CFG032(pcie_port));
1075 cvmx_dprintf("PCIe: Port %d link active, %d lanes\n", pcie_port, pciercx_cfg032.s.nlw);
1085 * @pcie_port: PCIe port to initialize
1089 static int __cvmx_pcie_rc_initialize_link_gen2(int pcie_port)
1097 pem_ctl_status.u64 = cvmx_read_csr(CVMX_PEMX_CTL_STATUS(pcie_port));
1099 cvmx_write_csr(CVMX_PEMX_CTL_STATUS(pcie_port), pem_ctl_status.u64);
1107 pciercx_cfg032.u32 = cvmx_pcie_cfgx_read(pcie_port, CVMX_PCIERCX_CFG032(pcie_port));
1118 pciercx_cfg448.u32 = cvmx_pcie_cfgx_read(pcie_port, CVMX_PCIERCX_CFG448(pcie_port));
1133 cvmx_pcie_cfgx_write(pcie_port, CVMX_PCIERCX_CFG448(pcie_port), pciercx_cfg448.u32);
1143 * @pcie_port: PCIe port to initialize
1147 static int __cvmx_pcie_rc_initialize_gen2(int pcie_port)
1173 qlmx_cfg.u64 = cvmx_read_csr(CVMX_MIO_QLMX_CFG(pcie_port));
1176 pr_notice("PCIe: Port %d is disabled, skipping.\n", pcie_port);
1185 pr_notice("PCIe: Port %d is SRIO, skipping.\n", pcie_port);
1188 pr_notice("PCIe: Port %d is SGMII, skipping.\n", pcie_port);
1191 pr_notice("PCIe: Port %d is XAUI, skipping.\n", pcie_port);
1199 pr_notice("PCIe: Port %d is unknown, skipping.\n", pcie_port);
1203 sriox_status_reg.u64 = cvmx_read_csr(CVMX_SRIOX_STATUS_REG(pcie_port));
1205 pr_notice("PCIe: Port %d is SRIO, skipping.\n", pcie_port);
1215 cvmx_helper_qlm_jtag_shift_zeros(pcie_port, 85);
1216 cvmx_helper_qlm_jtag_shift(pcie_port, 1, 1);
1217 cvmx_helper_qlm_jtag_shift_zeros(pcie_port, 300-86);
1218 cvmx_helper_qlm_jtag_shift_zeros(pcie_port, 85);
1219 cvmx_helper_qlm_jtag_shift(pcie_port, 1, 1);
1220 cvmx_helper_qlm_jtag_shift_zeros(pcie_port, 300-86);
1221 cvmx_helper_qlm_jtag_shift_zeros(pcie_port, 85);
1222 cvmx_helper_qlm_jtag_shift(pcie_port, 1, 1);
1223 cvmx_helper_qlm_jtag_shift_zeros(pcie_port, 300-86);
1224 cvmx_helper_qlm_jtag_shift_zeros(pcie_port, 85);
1225 cvmx_helper_qlm_jtag_shift(pcie_port, 1, 1);
1226 cvmx_helper_qlm_jtag_shift_zeros(pcie_port, 300-86);
1227 cvmx_helper_qlm_jtag_update(pcie_port);
1231 mio_rst_ctl.u64 = cvmx_read_csr(CVMX_MIO_RST_CTLX(pcie_port));
1233 pr_notice("PCIe: Port %d in endpoint mode.\n", pcie_port);
1239 if (pcie_port) {
1256 if (pcie_port)
1268 if (pcie_port)
1275 if (pcie_port) {
1293 if (CVMX_WAIT_FOR_FIELD64(CVMX_MIO_RST_CTLX(pcie_port), union cvmx_mio_rst_ctlx, rst_done, ==, 1, 10000)) {
1294 pr_notice("PCIe: Port %d stuck in reset, skipping.\n", pcie_port);
1299 pemx_bist_status.u64 = cvmx_read_csr(CVMX_PEMX_BIST_STATUS(pcie_port));
1301 pr_notice("PCIe: BIST FAILED for port %d (0x%016llx)\n", pcie_port, CAST64(pemx_bist_status.u64));
1302 pemx_bist_status2.u64 = cvmx_read_csr(CVMX_PEMX_BIST_STATUS2(pcie_port));
1307 pr_notice("PCIe: BIST2 FAILED for port %d (0x%016llx)\n", pcie_port, CAST64(pemx_bist_status2.u64));
1310 __cvmx_pcie_rc_initialize_config_space(pcie_port);
1313 pciercx_cfg515.u32 = cvmx_pcie_cfgx_read(pcie_port, CVMX_PCIERCX_CFG515(pcie_port));
1315 cvmx_pcie_cfgx_write(pcie_port, CVMX_PCIERCX_CFG515(pcie_port), pciercx_cfg515.u32);
1318 if (__cvmx_pcie_rc_initialize_link_gen2(pcie_port)) {
1325 pciercx_cfg031.u32 = cvmx_pcie_cfgx_read(pcie_port, CVMX_PCIERCX_CFG031(pcie_port));
1327 cvmx_pcie_cfgx_write(pcie_port, CVMX_PCIERCX_CFG031(pcie_port), pciercx_cfg031.u32);
1328 if (__cvmx_pcie_rc_initialize_link_gen2(pcie_port)) {
1329 pr_notice("PCIe: Link timeout on port %d, probably the slot is empty\n", pcie_port);
1342 mem_access_subid.s.port = pcie_port; /* Port the request is sent to. */
1358 for (i = 12 + pcie_port * 4; i < 16 + pcie_port * 4; i++) {
1370 cvmx_write_csr(CVMX_PEMX_P2P_BARX_START(i, pcie_port), -1);
1371 cvmx_write_csr(CVMX_PEMX_P2P_BARX_END(i, pcie_port), -1);
1375 cvmx_write_csr(CVMX_PEMX_P2N_BAR0_START(pcie_port), 0);
1383 cvmx_write_csr(CVMX_PEMX_P2N_BAR2_START(pcie_port), 0);
1392 pemx_bar_ctl.u64 = cvmx_read_csr(CVMX_PEMX_BAR_CTL(pcie_port));
1397 cvmx_write_csr(CVMX_PEMX_BAR_CTL(pcie_port), pemx_bar_ctl.u64);
1398 sli_ctl_portx.u64 = cvmx_read_csr(CVMX_PEXP_SLI_CTL_PORTX(pcie_port));
1403 cvmx_write_csr(CVMX_PEXP_SLI_CTL_PORTX(pcie_port), sli_ctl_portx.u64);
1406 cvmx_write_csr(CVMX_PEMX_P2N_BAR1_START(pcie_port), CVMX_PCIE_BAR1_RC_BASE);
1415 cvmx_write_csr(CVMX_PEMX_BAR1_INDEXX(i, pcie_port), bar1_index.u64);
1424 pemx_ctl_status.u64 = cvmx_read_csr(CVMX_PEMX_CTL_STATUS(pcie_port));
1426 cvmx_write_csr(CVMX_PEMX_CTL_STATUS(pcie_port), pemx_ctl_status.u64);
1429 pciercx_cfg032.u32 = cvmx_pcie_cfgx_read(pcie_port, CVMX_PCIERCX_CFG032(pcie_port));
1430 pr_notice("PCIe: Port %d link active, %d lanes, speed gen%d\n", pcie_port, pciercx_cfg032.s.nlw, pciercx_cfg032.s.ls);
1438 * @pcie_port: PCIe port to initialize
1442 static int cvmx_pcie_rc_initialize(int pcie_port)
1446 result = __cvmx_pcie_rc_initialize_gen1(pcie_port);
1448 result = __cvmx_pcie_rc_initialize_gen2(pcie_port);
1537 static int octeon_pcie_read_config(unsigned int pcie_port, struct pci_bus *bus,
1550 BUG_ON(pcie_port >= ARRAY_SIZE(enable_pcie_bus_num_war));
1556 if (enable_pcie_bus_num_war[pcie_port])
1560 pciercx_cfg006.u32 = cvmx_pcie_cfgx_read(pcie_port,
1561 CVMX_PCIERCX_CFG006(pcie_port));
1566 cvmx_pcie_cfgx_write(pcie_port,
1567 CVMX_PCIERCX_CFG006(pcie_port),
1668 " size=%d ", pcie_port, bus_number, devfn, reg, size);
1672 *val = cvmx_pcie_config_read32(pcie_port, bus_number,
1676 *val = cvmx_pcie_config_read16(pcie_port, bus_number,
1680 *val = cvmx_pcie_config_read8(pcie_port, bus_number,
1730 static int octeon_pcie_write_config(unsigned int pcie_port, struct pci_bus *bus,
1736 BUG_ON(pcie_port >= ARRAY_SIZE(enable_pcie_bus_num_war));
1738 if ((bus->parent == NULL) && (enable_pcie_bus_num_war[pcie_port]))
1742 " reg=0x%03x size=%d val=%08x\n", pcie_port, bus_number, devfn,
1748 cvmx_pcie_config_write32(pcie_port, bus_number, devfn >> 3,
1752 cvmx_pcie_config_write16(pcie_port, bus_number, devfn >> 3,
1756 cvmx_pcie_config_write8(pcie_port, bus_number, devfn >> 3,