Lines Matching refs:pcie_port

102  * @param pcie_port PCIe port the IO is for
106 uint64_t cvmx_pcie_get_io_base_address(int pcie_port)
115 pcie_addr.io.port = pcie_port;
124 * @param pcie_port PCIe port the IO is for
128 uint64_t cvmx_pcie_get_io_size(int pcie_port)
138 * @param pcie_port PCIe port the IO is for
142 uint64_t cvmx_pcie_get_mem_base_address(int pcie_port)
149 pcie_addr.mem.subdid = 3 + pcie_port;
158 * @param pcie_port PCIe port the IO is for
162 uint64_t cvmx_pcie_get_mem_size(int pcie_port)
172 * @param pcie_port PCIe port to initialize
174 static void __cvmx_pcie_rc_initialize_config_space(int pcie_port)
182 pciercx_cfg030.u32 = cvmx_pcie_cfgx_read(pcie_port, CVMX_PCIERCX_CFG030(pcie_port));
199 cvmx_pcie_cfgx_write(pcie_port, CVMX_PCIERCX_CFG030(pcie_port), pciercx_cfg030.u32);
210 if (pcie_port)
223 prt_cfg.u64 = cvmx_read_csr(CVMX_DPI_SLI_PRTX_CFG(pcie_port));
228 cvmx_write_csr(CVMX_DPI_SLI_PRTX_CFG(pcie_port), prt_cfg.u64);
230 sli_s2m_portx_ctl.u64 = cvmx_read_csr(CVMX_PEXP_SLI_S2M_PORTX_CTL(pcie_port));
232 cvmx_write_csr(CVMX_PEXP_SLI_S2M_PORTX_CTL(pcie_port), sli_s2m_portx_ctl.u64);
238 pciercx_cfg070.u32 = cvmx_pcie_cfgx_read(pcie_port, CVMX_PCIERCX_CFG070(pcie_port));
241 cvmx_pcie_cfgx_write(pcie_port, CVMX_PCIERCX_CFG070(pcie_port), pciercx_cfg070.u32);
250 pciercx_cfg001.u32 = cvmx_pcie_cfgx_read(pcie_port, CVMX_PCIERCX_CFG001(pcie_port));
255 cvmx_pcie_cfgx_write(pcie_port, CVMX_PCIERCX_CFG001(pcie_port), pciercx_cfg001.u32);
261 cvmx_pcie_cfgx_write(pcie_port, CVMX_PCIERCX_CFG066(pcie_port), 0);
263 cvmx_pcie_cfgx_write(pcie_port, CVMX_PCIERCX_CFG069(pcie_port), 0);
269 pciercx_cfg032.u32 = cvmx_pcie_cfgx_read(pcie_port, CVMX_PCIERCX_CFG032(pcie_port));
271 cvmx_pcie_cfgx_write(pcie_port, CVMX_PCIERCX_CFG032(pcie_port), pciercx_cfg032.u32);
283 cvmx_pcie_cfgx_write(pcie_port, CVMX_PCIERCX_CFG006(pcie_port), pciercx_cfg006.u32);
294 cvmx_pcie_cfgx_write(pcie_port, CVMX_PCIERCX_CFG008(pcie_port), pciercx_cfg008.u32);
305 pciercx_cfg009.u32 = cvmx_pcie_cfgx_read(pcie_port, CVMX_PCIERCX_CFG009(pcie_port));
306 pciercx_cfg010.u32 = cvmx_pcie_cfgx_read(pcie_port, CVMX_PCIERCX_CFG010(pcie_port));
307 pciercx_cfg011.u32 = cvmx_pcie_cfgx_read(pcie_port, CVMX_PCIERCX_CFG011(pcie_port));
312 cvmx_pcie_cfgx_write(pcie_port, CVMX_PCIERCX_CFG009(pcie_port), pciercx_cfg009.u32);
313 cvmx_pcie_cfgx_write(pcie_port, CVMX_PCIERCX_CFG010(pcie_port), pciercx_cfg010.u32);
314 cvmx_pcie_cfgx_write(pcie_port, CVMX_PCIERCX_CFG011(pcie_port), pciercx_cfg011.u32);
321 pciercx_cfg035.u32 = cvmx_pcie_cfgx_read(pcie_port, CVMX_PCIERCX_CFG035(pcie_port));
326 cvmx_pcie_cfgx_write(pcie_port, CVMX_PCIERCX_CFG035(pcie_port), pciercx_cfg035.u32);
333 pciercx_cfg075.u32 = cvmx_pcie_cfgx_read(pcie_port, CVMX_PCIERCX_CFG075(pcie_port));
337 cvmx_pcie_cfgx_write(pcie_port, CVMX_PCIERCX_CFG075(pcie_port), pciercx_cfg075.u32);
344 pciercx_cfg034.u32 = cvmx_pcie_cfgx_read(pcie_port, CVMX_PCIERCX_CFG034(pcie_port));
348 cvmx_pcie_cfgx_write(pcie_port, CVMX_PCIERCX_CFG034(pcie_port), pciercx_cfg034.u32);
358 * @param pcie_port PCIe port to initialize
362 static int __cvmx_pcie_rc_initialize_link_gen1(int pcie_port)
371 pciercx_cfg452.u32 = cvmx_pcie_cfgx_read(pcie_port, CVMX_PCIERCX_CFG452(pcie_port));
372 pescx_ctl_status.u64 = cvmx_read_csr(CVMX_PESCX_CTL_STATUS(pcie_port));
383 cvmx_pcie_cfgx_write(pcie_port, CVMX_PCIERCX_CFG452(pcie_port), pciercx_cfg452.u32);
391 pciercx_cfg455.u32 = cvmx_pcie_cfgx_read(pcie_port, CVMX_PCIERCX_CFG455(pcie_port));
393 cvmx_pcie_cfgx_write(pcie_port, CVMX_PCIERCX_CFG455(pcie_port), pciercx_cfg455.u32);
397 if (OCTEON_IS_MODEL(OCTEON_CN52XX) && (pcie_port == 1))
409 cvmx_write_csr(CVMX_PESCX_CTL_STATUS(pcie_port),pescx_ctl_status.u64);
413 pescx_ctl_status.u64 = cvmx_read_csr(CVMX_PESCX_CTL_STATUS(pcie_port));
415 cvmx_write_csr(CVMX_PESCX_CTL_STATUS(pcie_port), pescx_ctl_status.u64);
427 cvmx_dprintf("PCIe: Port %d link timeout\n", pcie_port);
431 pciercx_cfg032.u32 = cvmx_pcie_cfgx_read(pcie_port, CVMX_PCIERCX_CFG032(pcie_port));
442 pciercx_cfg448.u32 = cvmx_pcie_cfgx_read(pcie_port, CVMX_PCIERCX_CFG448(pcie_port));
458 cvmx_pcie_cfgx_write(pcie_port, CVMX_PCIERCX_CFG448(pcie_port), pciercx_cfg448.u32);
475 * @param pcie_port PCIe port to initialize
479 static int __cvmx_pcie_rc_initialize_gen1(int pcie_port)
498 if ((pcie_port==0) && !npei_ctl_status.s.host_mode)
500 cvmx_dprintf("PCIe: Port %d in endpoint mode\n", pcie_port);
508 if ((pcie_port==1) && npei_dbg_data.cn52xx.qlm0_link_width)
517 cvmx_dprintf ("PCIe port %d: CN56XX_PASS_1, skipping\n", pcie_port);
540 if (pcie_port == 0)
569 if (pcie_port)
580 if (pcie_port)
587 if (pcie_port)
610 pescx_ctl_status2.u64 = cvmx_read_csr(CVMX_PESCX_CTL_STATUS2(pcie_port));
612 cvmx_write_csr(CVMX_PESCX_CTL_STATUS2(pcie_port), pescx_ctl_status2.u64);
615 if (CVMX_WAIT_FOR_FIELD64(CVMX_PESCX_CTL_STATUS2(pcie_port),
618 cvmx_dprintf("PCIe: Port %d isn't clocked, skipping.\n", pcie_port);
626 pescx_ctl_status2.u64 = cvmx_read_csr(CVMX_PESCX_CTL_STATUS2(pcie_port));
629 cvmx_dprintf("PCIe: Port %d stuck in reset, skipping.\n", pcie_port);
635 pescx_bist_status2.u64 = cvmx_read_csr(CVMX_PESCX_BIST_STATUS2(pcie_port));
638 cvmx_dprintf("PCIe: Port %d BIST2 failed. Most likely this port isn't hooked up, skipping.\n", pcie_port);
643 pescx_bist_status.u64 = cvmx_read_csr(CVMX_PESCX_BIST_STATUS(pcie_port));
645 cvmx_dprintf("PCIe: BIST FAILED for port %d (0x%016llx)\n", pcie_port, CAST64(pescx_bist_status.u64));
648 __cvmx_pcie_rc_initialize_config_space(pcie_port);
651 if (__cvmx_pcie_rc_initialize_link_gen1(pcie_port))
653 cvmx_dprintf("PCIe: Failed to initialize port %d, probably the slot is empty\n", pcie_port);
665 mem_access_subid.s.port = pcie_port; /* Port the request is sent to. */
676 for (i=12 + pcie_port*4; i<16 + pcie_port*4; i++)
687 cvmx_write_csr(CVMX_PESCX_P2P_BARX_START(i, pcie_port), -1);
688 cvmx_write_csr(CVMX_PESCX_P2P_BARX_END(i, pcie_port), -1);
692 cvmx_write_csr(CVMX_PESCX_P2N_BAR0_START(pcie_port), 0);
695 cvmx_write_csr(CVMX_PESCX_P2N_BAR1_START(pcie_port), CVMX_PCIE_BAR1_RC_BASE);
703 base = pcie_port ? 16 : 0;
721 cvmx_write_csr(CVMX_PESCX_P2N_BAR2_START(pcie_port), 0);
728 if (pcie_port)
771 uint64_t write_address = (cvmx_pcie_get_mem_base_address(pcie_port) + 0x100000) | (1ull<<63);
786 cvmx_write_csr(CVMX_PEXP_NPEI_DBG_SELECT, (pcie_port) ? 0xd7fc : 0xcffc);
802 cvmx_write_csr(CVMX_PEXP_NPEI_DBG_SELECT, (pcie_port) ? 0xd00f : 0xc80f);
810 cvmx_dprintf("PCIe: Port %d aligning TLP counters as workaround to maintain ordering\n", pcie_port);
822 (pcie_port == 1))
830 pciercx_cfg032.u32 = cvmx_pcie_cfgx_read(pcie_port, CVMX_PCIERCX_CFG032(pcie_port));
831 cvmx_dprintf("PCIe: Port %d link active, %d lanes\n", pcie_port, pciercx_cfg032.s.nlw);
842 * @param pcie_port PCIe port to initialize
846 static int __cvmx_pcie_rc_initialize_link_gen2(int pcie_port)
854 pem_ctl_status.u64 = cvmx_read_csr(CVMX_PEMX_CTL_STATUS(pcie_port));
856 cvmx_write_csr(CVMX_PEMX_CTL_STATUS(pcie_port), pem_ctl_status.u64);
865 pciercx_cfg032.u32 = cvmx_pcie_cfgx_read(pcie_port, CVMX_PCIERCX_CFG032(pcie_port));
873 pciercx_cfg448.u32 = cvmx_pcie_cfgx_read(pcie_port, CVMX_PCIERCX_CFG448(pcie_port));
889 cvmx_pcie_cfgx_write(pcie_port, CVMX_PCIERCX_CFG448(pcie_port), pciercx_cfg448.u32);
899 * @param pcie_port PCIe port to initialize
903 static int __cvmx_pcie_rc_initialize_gen2(int pcie_port)
925 int qlm = pcie_port;
928 qlm = 3 - (pcie_port * 2);
943 cvmx_dprintf("PCIe: Port %d is SRIO, skipping.\n", pcie_port);
948 cvmx_dprintf("PCIe: Port %d is SGMII, skipping.\n", pcie_port);
953 cvmx_dprintf("PCIe: Port %d is XAUI, skipping.\n", pcie_port);
958 cvmx_dprintf("PCIe: Port %d is unknown, skipping.\n", pcie_port);
967 cvmx_helper_qlm_jtag_shift_zeros(pcie_port, 85);
968 cvmx_helper_qlm_jtag_shift(pcie_port, 1, 1);
969 cvmx_helper_qlm_jtag_shift_zeros(pcie_port, 300-86);
970 cvmx_helper_qlm_jtag_shift_zeros(pcie_port, 85);
971 cvmx_helper_qlm_jtag_shift(pcie_port, 1, 1);
972 cvmx_helper_qlm_jtag_shift_zeros(pcie_port, 300-86);
973 cvmx_helper_qlm_jtag_shift_zeros(pcie_port, 85);
974 cvmx_helper_qlm_jtag_shift(pcie_port, 1, 1);
975 cvmx_helper_qlm_jtag_shift_zeros(pcie_port, 300-86);
976 cvmx_helper_qlm_jtag_shift_zeros(pcie_port, 85);
977 cvmx_helper_qlm_jtag_shift(pcie_port, 1, 1);
978 cvmx_helper_qlm_jtag_shift_zeros(pcie_port, 300-86);
979 cvmx_helper_qlm_jtag_update(pcie_port);
983 mio_rst_ctl.u64 = cvmx_read_csr(CVMX_MIO_RST_CTLX(pcie_port));
987 cvmx_dprintf("PCIe: Port %d in endpoint mode.\n", pcie_port);
994 if (pcie_port)
1014 if (pcie_port)
1025 if (pcie_port)
1032 if (pcie_port)
1051 if (CVMX_WAIT_FOR_FIELD64(CVMX_MIO_RST_CTLX(pcie_port), cvmx_mio_rst_ctlx_t, rst_done, ==, 1, 10000))
1053 cvmx_dprintf("PCIe: Port %d stuck in reset, skipping.\n", pcie_port);
1058 pemx_bist_status.u64 = cvmx_read_csr(CVMX_PEMX_BIST_STATUS(pcie_port));
1060 cvmx_dprintf("PCIe: BIST FAILED for port %d (0x%016llx)\n", pcie_port, CAST64(pemx_bist_status.u64));
1061 pemx_bist_status2.u64 = cvmx_read_csr(CVMX_PEMX_BIST_STATUS2(pcie_port));
1066 cvmx_dprintf("PCIe: BIST2 FAILED for port %d (0x%016llx)\n", pcie_port, CAST64(pemx_bist_status2.u64));
1069 __cvmx_pcie_rc_initialize_config_space(pcie_port);
1072 pciercx_cfg515.u32 = cvmx_pcie_cfgx_read(pcie_port, CVMX_PCIERCX_CFG515(pcie_port));
1074 cvmx_pcie_cfgx_write(pcie_port, CVMX_PCIERCX_CFG515(pcie_port), pciercx_cfg515.u32);
1077 if (__cvmx_pcie_rc_initialize_link_gen2(pcie_port))
1082 pciercx_cfg031.u32 = cvmx_pcie_cfgx_read(pcie_port, CVMX_PCIERCX_CFG031(pcie_port));
1084 cvmx_pcie_cfgx_write(pcie_port, CVMX_PCIERCX_CFG031(pcie_port), pciercx_cfg031.u32);
1085 if (__cvmx_pcie_rc_initialize_link_gen2(pcie_port))
1087 cvmx_dprintf("PCIe: Link timeout on port %d, probably the slot is empty\n", pcie_port);
1100 mem_access_subid.s.port = pcie_port; /* Port the request is sent to. */
1113 for (i=12 + pcie_port*4; i<16 + pcie_port*4; i++)
1127 cvmx_write_csr(CVMX_PEMX_P2P_BARX_START(i, pcie_port), -1);
1128 cvmx_write_csr(CVMX_PEMX_P2P_BARX_END(i, pcie_port), -1);
1133 cvmx_write_csr(CVMX_PEMX_P2N_BAR0_START(pcie_port), 0);
1138 cvmx_write_csr(CVMX_PEMX_P2N_BAR2_START(pcie_port), 0);
1145 pemx_bar_ctl.u64 = cvmx_read_csr(CVMX_PEMX_BAR_CTL(pcie_port));
1150 cvmx_write_csr(CVMX_PEMX_BAR_CTL(pcie_port), pemx_bar_ctl.u64);
1151 sli_ctl_portx.u64 = cvmx_read_csr(CVMX_PEXP_SLI_CTL_PORTX(pcie_port));
1156 cvmx_write_csr(CVMX_PEXP_SLI_CTL_PORTX(pcie_port), sli_ctl_portx.u64);
1159 cvmx_write_csr(CVMX_PEMX_P2N_BAR1_START(pcie_port), CVMX_PCIE_BAR1_RC_BASE);
1168 cvmx_write_csr(CVMX_PEMX_BAR1_INDEXX(i, pcie_port), bar1_index.u64);
1175 pemx_ctl_status.u64 = cvmx_read_csr(CVMX_PEMX_CTL_STATUS(pcie_port));
1177 cvmx_write_csr(CVMX_PEMX_CTL_STATUS(pcie_port), pemx_ctl_status.u64);
1180 pciercx_cfg032.u32 = cvmx_pcie_cfgx_read(pcie_port, CVMX_PCIERCX_CFG032(pcie_port));
1181 cvmx_dprintf("PCIe: Port %d link active, %d lanes, speed gen%d\n", pcie_port, pciercx_cfg032.s.nlw, pciercx_cfg032.s.ls);
1189 * @param pcie_port PCIe port to initialize
1193 int cvmx_pcie_rc_initialize(int pcie_port)
1197 result = __cvmx_pcie_rc_initialize_gen1(pcie_port);
1199 result = __cvmx_pcie_rc_initialize_gen2(pcie_port);
1202 cvmx_error_enable_group(CVMX_ERROR_GROUP_PCI, pcie_port);
1211 * @param pcie_port PCIe port to shutdown
1215 int cvmx_pcie_rc_shutdown(int pcie_port)
1218 cvmx_error_disable_group(CVMX_ERROR_GROUP_PCI, pcie_port);
1223 if (CVMX_WAIT_FOR_FIELD64(CVMX_PESCX_CPL_LUT_VALID(pcie_port), cvmx_pescx_cpl_lut_valid_t, tag, ==, 0, 2000))
1224 cvmx_dprintf("PCIe: Port %d shutdown timeout\n", pcie_port);
1228 if (CVMX_WAIT_FOR_FIELD64(CVMX_PEMX_CPL_LUT_VALID(pcie_port), cvmx_pemx_cpl_lut_valid_t, tag, ==, 0, 2000))
1229 cvmx_dprintf("PCIe: Port %d shutdown timeout\n", pcie_port);
1233 if (pcie_port)
1255 * @param pcie_port PCIe port to access
1263 static inline uint64_t __cvmx_pcie_build_config_addr(int pcie_port, int bus, int dev, int fn, int reg)
1268 pciercx_cfg006.u32 = cvmx_pcie_cfgx_read(pcie_port, CVMX_PCIERCX_CFG006(pcie_port));
1278 pcie_addr.config.port = pcie_port;
1291 * @param pcie_port PCIe port the device is on
1299 uint8_t cvmx_pcie_config_read8(int pcie_port, int bus, int dev, int fn, int reg)
1301 uint64_t address = __cvmx_pcie_build_config_addr(pcie_port, bus, dev, fn, reg);
1312 * @param pcie_port PCIe port the device is on
1320 uint16_t cvmx_pcie_config_read16(int pcie_port, int bus, int dev, int fn, int reg)
1322 uint64_t address = __cvmx_pcie_build_config_addr(pcie_port, bus, dev, fn, reg);
1333 * @param pcie_port PCIe port the device is on
1341 uint32_t cvmx_pcie_config_read32(int pcie_port, int bus, int dev, int fn, int reg)
1345 address = __cvmx_pcie_build_config_addr(pcie_port, bus, dev, fn, reg);
1356 * @param pcie_port PCIe port the device is on
1363 void cvmx_pcie_config_write8(int pcie_port, int bus, int dev, int fn, int reg, uint8_t val)
1365 uint64_t address = __cvmx_pcie_build_config_addr(pcie_port, bus, dev, fn, reg);
1374 * @param pcie_port PCIe port the device is on
1381 void cvmx_pcie_config_write16(int pcie_port, int bus, int dev, int fn, int reg, uint16_t val)
1383 uint64_t address = __cvmx_pcie_build_config_addr(pcie_port, bus, dev, fn, reg);
1392 * @param pcie_port PCIe port the device is on
1399 void cvmx_pcie_config_write32(int pcie_port, int bus, int dev, int fn, int reg, uint32_t val)
1401 uint64_t address = __cvmx_pcie_build_config_addr(pcie_port, bus, dev, fn, reg);
1411 * @param pcie_port PCIe port to read from
1416 uint32_t cvmx_pcie_cfgx_read(int pcie_port, uint32_t cfg_offset)
1423 cvmx_write_csr(CVMX_PESCX_CFG_RD(pcie_port), pescx_cfg_rd.u64);
1424 pescx_cfg_rd.u64 = cvmx_read_csr(CVMX_PESCX_CFG_RD(pcie_port));
1432 cvmx_write_csr(CVMX_PEMX_CFG_RD(pcie_port), pemx_cfg_rd.u64);
1433 pemx_cfg_rd.u64 = cvmx_read_csr(CVMX_PEMX_CFG_RD(pcie_port));
1443 * @param pcie_port PCIe port to write to
1447 void cvmx_pcie_cfgx_write(int pcie_port, uint32_t cfg_offset, uint32_t val)
1455 cvmx_write_csr(CVMX_PESCX_CFG_WR(pcie_port), pescx_cfg_wr.u64);
1463 cvmx_write_csr(CVMX_PEMX_CFG_WR(pcie_port), pemx_cfg_wr.u64);
1471 * @param pcie_port PCIe port to initialize
1475 int cvmx_pcie_ep_initialize(int pcie_port)
1488 mio_rst_ctl.u64 = cvmx_read_csr(CVMX_MIO_RST_CTLX(pcie_port));
1497 if (pcie_port)
1518 cvmx_pcie_cfgx_write(pcie_port, CVMX_PCIEEPX_CFG001(pcie_port), 0x6);
1526 pcieepx_cfg030.u32 = cvmx_pcie_cfgx_read(pcie_port, CVMX_PCIEEPX_CFG030(pcie_port));
1543 cvmx_pcie_cfgx_write(pcie_port, CVMX_PCIEEPX_CFG030(pcie_port), pcieepx_cfg030.u32);
1562 prt_cfg.u64 = cvmx_read_csr(CVMX_DPI_SLI_PRTX_CFG(pcie_port));
1567 cvmx_write_csr(CVMX_DPI_SLI_PRTX_CFG(pcie_port), prt_cfg.u64);
1569 sli_s2m_portx_ctl.u64 = cvmx_read_csr(CVMX_PEXP_SLI_S2M_PORTX_CTL(pcie_port));
1571 cvmx_write_csr(CVMX_PEXP_SLI_S2M_PORTX_CTL(pcie_port), sli_s2m_portx_ctl.u64);
1579 mem_access_subid.s.port = pcie_port; /* Port the request is sent to. */
1594 mem_access_subid.s.port = pcie_port; /* Port the request is sent to. */
1605 cvmx_write_csr(CVMX_PEXP_SLI_MEM_ACCESS_SUBIDX(12 + pcie_port*4), mem_access_subid.u64);
1618 * @param pcie_port PCIe port to wait for
1620 void cvmx_pcie_wait_for_pending(int pcie_port)
1632 if (pcie_port)
1650 c = (pcie_port) ? npei_data_out_cnt.s.p1_ucnt : npei_data_out_cnt.s.p0_ucnt;
1671 if (pcie_port)
1689 c = (pcie_port) ? sli_data_out_cnt.s.p1_ucnt : sli_data_out_cnt.s.p0_ucnt;