Hi,
I'm trying to repeat the EP/RC Validation System on an i.MX6DL setup, basically imx6dlsabresd EP <-> RC imx6dlsabresd.
i.MX6Q PCIe EP/RC Validation System
1. I got 2 boards imx6dlsabresd
2. I'm using L3.0.35_4.1.0_130816 built for imx6q with board imx6dlsabresd ( I must choose iMX6Q (iMXQ6S don't) to enable to be able to select imx6dlsabresd)
- One image configured as EP, CONFIG_IMX_PCIE_EP_MODE_IN_EP_RC_SYS=y
- One image configured as RC, CONFIG_IMX_PCIE_RC_MODE_IN_EP_RC_SYS=y
When I start the EP it hangs/crashes when waiting for "link up..."
1. I modified the link up do/while to print what happens.
pr_info("PCIe EP: waiting for link up...\n");
/* link is debug bit 36 debug 1 start in bit 32 */
pcie.c
snippet...
pr_info("PCIe EP: waiting for link up...\n");
/* link is debug bit 36 debug 1 start in bit 32 */
do {
usleep_range(10, 20);
pr_info("PCIe EP: waiting for link up, iteration # %d\n",dbr1_cnt++);
dbr1 = readl(dbi_base + DB_R1);
pr_info("PCIe EP: DB_R1 0x%x\n",dbr1); <--------------- Never printed
} while ((dbr1 & 0x10) == 0);
2. This code produce the following prints showing that we hang/crash when trying to read DB_R1. Does any have a clue why?
PM driver module loaded
iMX6 PCIe PCIe EP mode imx_pcie_pltfm_probe entering.
PCIE: imx_pcie_pltfm_probe start link up.
PCIe EP: waiting for link up...
PCIe EP: waiting for link up, iteration # 0
<No more prints>
Regards
Andreas
andreas,
You tried to reproduce EP/RC Validation System on an iMX6DL. Have you achieved success?
I replaced the imx6dlsabresd EP with an imx6q SabreLite and it worked, RC imx6dlsabresd <-> EP imx6qsabrelite, result below.
Result imx6q SabreLite EP:
iMX6 PCIe PCIe EP mode imx_pcie_pltfm_probe entering..
PCIE: imx_pcie_pltfm_probe start link up.
PCIe EP: waiting for link up...
PCIe EP: waiting for link up, iteration # 0
PCIe EP: DB_R1 0x8000410
PCIe EP: link up.
PCIe EP: Starting data transfer...
PCIe EP: Data transfer is successful.tv_count1 111071us, tv_count2 238153us.
PCIe EP: Data write speed is 147MB/s.
PCIe EP: Data read speed is 68MB/s.
So why don't imx6dlsabresd work as an endpoint? Linux BSP or chip iMX6DL PCIe EP issues?
I'm sure it isn't the cable since the imx6dlsabresd crash/hang regardless if the cable is connected or not while the iMX6Q will loop and print it is waiting for link up.
Regards
Andreas
Why are you choosing i.MX6Q/D if you are using the i.MX6DL/S?.
I was referring to the choice when installing LTIB, only imx6s and imx6q is available.
If I go for imx6s it seems it implicitly mean imx6 SoloLite for U-boot, I can only select 2 i.MX6SL boards.
In Kernel configuration only i.MX6Quad SABRESD is supported is regardless if I choose imx6s or imx6q.
Platform type -> imx6s
Choose board for u-boot
- boards mx6sl_arm2
- boards mx6sl_evk
Kernel Configuration
System Type -> Freescale MXC Implementations
Support i.MX6Quad SABRESD
On the other hand If I go for imx6q I can select mx6dlsabresd for U-boot but for Kernel Configuration only imx6q is avaliable
Platform type -> imx6q
Choose board for u-boot
- boards mx6dlsabresd
Kernel Configuration
System Type -> Freescale MXC Implementations
Support i.MX6Quad SABRESD
So therefor I've went for imx6q to be able to build for imx6dlsabresd.
Are there any other way?
The manual actually state:
"
For the kernel image, the current default kernel configuration builds a single image that works for all i.MX 6 boards except i.MX 6SoloLite boards.
"
So I don't think the issue is concering building imx6q for imx6dl?