Add PCIe regions to the MMAP table.
++#define TEGRA_PCIERC_BASE U(0x14100000) //plat/nvidia/tegra/include/t194/tegra_def.h
++ MAP_REGION_FLAT(TEGRA_PCIERC_BASE, 0x40000U, /* 256KB */
(uint8_t)MT_DEVICE | (uint8_t)MT_RW | (uint8_t)MT_SECURE) //plat/nvidia/tegra/soc/t194/plat_setup.c
I’ve got the memory address(14100000) from dts.
get access to the specific area.
++ NOTICE(“debug1 \n”);
++ mmio_read_32(TEGRA_PCIERC_BASE + 0x8000U) //plat/nvidia/tegra/soc/t194/plat_setup.c
++ NOTICE(“debug2 \n”);
It doesn’t go any further, I mean, never print ‘debug2’.
Am I missing something??
Please give me any advices.
plus, please refer to the below url.
One of my coworker created other topics but same issues.
Honestly, we have not tried this flow.
In the case of the kernel, the Linux kernel’s generic power domain framework would un-powergate the PCIe power partition before the PCIe platform driver’s probe is called. Are you un-powergating the PCIe partition in your code? If yes, please do so. You can look around for examples of un-powergating APIs usage by talking to BPMP-FW.
In the above sequence, I expect ‘power ungating’ to happen between steps 4 and 5.
Also, after power ungating the respective partition, please follow the Linux kernel driver’s flow and you should be able to get the PCIe link-up.
Hello,
I found the pcie programming guidelines chapter in Xavier TRM DP09253002.
How can I get the register information about
such as CLK_RST_CONTROLLER_RST_DEV_UPHY_0[SWR_UPHY_RST] or
CLK_RST_CONTROLLER_RST_DEV_PEX_USB_UPHY_0[SWR_PEX_USB_UPHY_RST] which are refered in the document.