Other Parts Discussed in Thread: TUSB7340
Tool/software: Linux
We are having a problem with non 32 bit aligned access to a PCI switch from our AM5728 RC. We have a PEX 8606 underneath the RC and the switch header type is not getting picked up correctly. I initially discussed this in e2e.ti.com/.../597740.
A summary illustrating the problem is:
debian@arm:~$ lspci -s 0000:01:00.0 -x
0000:01:00.0 PCI bridge: PLX Technology, Inc. PEX 8606 6 Lane, 6 Port PCI Express Gen 2 (5.0 GT/s) Switch (rev ba)
00: b5 10 06 86 40 01 10 00 ba 00 04 06 10 00 01 00
10: 00 00 20 20 00 00 00 00 01 02 07 00 f1 01 00 00
20: f0 ff 00 00 f1 ff 01 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 40 00 00 00 00 00 00 00 00 01 01 00
Then do a byte access of the header type:
debian@arm:~$ sudo setpci -s 0001:02:09.0 e.b
00
But do a 32bit access:
debian@arm:~$ sudo setpci -s 0001:02:09.0 c.l
00010010
So PCI device probe fails as follows with the stock code:
[ 1.850281] pci 0000:01:00.0: [10b5:8606] type 00 class 0x060400
[ 1.850311] pci 0000:01:00.0: ignoring class 0x060400 (doesn't match header type 00)
We can modify the kernel driver code, but this operation seems fundamental and there has to be something else wrong.
Any ideas why the non aligned access is failing?