Hi Toradex,
We have designed our custom carrier board with apalis imx6q som. We have used PEX8604 pcie hub, this not detecting by the kernel.
We tried googling this issues,then found some patches related to delay addtion in pci-imx.c source file. Then sometimes this is detecting but not always.
Kernel version:
uname -a
Linux apalis-imx6-medha 5.4.77-5.1.0-devel+git.8fc7bd5da76f #1 SMP Mon Nov 30 08:44:04 UTC 2020 armv7l armv7l armv7l GNU/Linux
Below link contains kernel config and dts file.
https://share.toradex.com/ol7q4fjid7vbdc4?direct
Please help us on this ,
Regards,
Narayana Swamy M
Hi Narayana Swamy M,
I can see multiple pcie switch node in device tree. Can you try with the one which you have connected on custom carrier board and see if that improve stability.
Also can you share what changes you have made in pci-imx.c ?
Best Regards
Ritesh Kumar
Hi @ritesh.tx,
We have removed other PCIe switch node in dts file. There is no improvement.
We added delay in “imx6_pcie_deassert_core_reset()” at below code
// Some boards don't have PCIe reset GPIO.
if (imx6_pcie->reset_gpiod) {
//msleep(1000);
gpiod_set_value_cansleep(imx6_pcie->reset_gpiod,
!imx6_pcie->gpio_active_high);
msleep(100);
gpiod_set_value_cansleep(imx6_pcie->reset_gpiod,
imx6_pcie->gpio_active_high);
// working after changing to 1000
**msleep(1000);//msleep(10);**
}
Modified pci-imx6.c file
After this is some times detecting and some times we are getting revision as ‘ff’ in “lspci” output for three ports and one port revision is okay.
dmesg and lspci output when revision ‘ff’ case
dmesg_working case
After “reboot” command PCIe switch is never detecting. We are suspecting GPIO7(switch reset signal),please confirm.
Thank you,
Narayana Swamy M