We are designing a product based on sabresd. After we select 396/352 boot, kernel is dead at "readl(dbi_base)" of imx_pcie_regions_setup() in pcie.c.how to deal with it?? Anybody can help me, thanks very much!!
Configure the LNK_CAP (offset 0xc) of 0x70 PCI Express Capabilities, can keep the PCIe in GEN1 mode.
You can make a reference to the chapter " PCI Standard Capability Structures Register Maps " of imx6 RM DOC too.
Here are the codes used to keep the PCIe always in GEN1 mode.
@@ -714,6 +714,13 @@ static int __devinit imx_pcie_pltfm_probe(struct platform_device *pdev)
imx_pcie_regions_setup(dbi_base);
+ /*
+ * Force to GEN1
+ */
+ writel(((readl(dbi_base + LNK_CAP) & 0xfffffff0) | 0x1),
+ dbi_base + LNK_CAP);
+
*****
Hi,jamesbone
Thanks very much! The problem has been resolved, and the reason is power to pcie is not stable. After re-welding related resistances, accesing to registers of pcie is ok!