PEX8604 not detecting with apalis-imx6q

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