I am testing MCS9990 on Apalis i.MX6 2GB with Ixora board. The PCIe is fixed at PCIe 1.0. The MCS9990 card can be recognized.
root@apalis-imx6:~# lspci
00:00.0 PCI bridge: Synopsys, Inc. Device abcd (rev 01)
01:00.0 USB controller: MosChip Semiconductor Technology Ltd. MCS9990 PCIe to 4-Port USB 2.0 Host Controller
01:00.1 USB controller: MosChip Semiconductor Technology Ltd. MCS9990 PCIe to 4‐Port USB 2.0 Host Controller
01:00.2 USB controller: MosChip Semiconductor Technology Ltd. MCS9990 PCIe to 4‐Port USB 2.0 Host Controller
01:00.3 USB controller: MosChip Semiconductor Technology Ltd. MCS9990 PCIe to 4‐Port USB 2.0 Host Controller
01:00.4 USB controller: MosChip Semiconductor Technology Ltd. MCS9990 PCIe to 4‐Port USB 2.0 Host Controller
01:00.5 USB controller: MosChip Semiconductor Technology Ltd. MCS9990 PCIe to 4‐Port USB 2.0 Host Controller
01:00.6 USB controller: MosChip Semiconductor Technology Ltd. MCS9990 PCIe to 4‐Port USB 2.0 Host Controller
01:00.7 USB controller: MosChip Semiconductor Technology Ltd. MCS9990 PCIe to 4‐Port USB 2.0 Host Controller
root@apalis-imx6:~# lsusb
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
But the usb stick can’t be seen when plugged into MCS9990 card. There is some kernel error when poweoff.
37.818297] systemd-shutdown[1]: Powering off.
[ 38.251990] irq 152: nobody cared (try booting with the "irqpoll" option)
[ 38.259030] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 3.14.52 #8
[ 38.265236] Backtrace:
[ 38.267858] [<80011dbc>] (dump_backtrace) from [<80011fcc>] (show_stack+0x18/0x1c)
[ 38.275672] r7:00000000 r6:00000098 r5:808ee748 r4:00000000
[ 38.281714] [<80011fb4>] (show_stack) from [<806664b8>] (dump_stack+0x7c/0x8c)
[ 38.289194] [<8066643c>] (dump_stack) from [<800734cc>] (__report_bad_irq+0x30/0xd4)
[ 38.297182] r5:ce0113c0 r4:ce01141c
[ 38.300979] [<8007349c>] (__report_bad_irq) from [<80073ac0>] (note_interrupt+0x2a4/0x2f4)
[ 38.309500] r9:ce0113c0 r8:00000098 r7:00000000 r6:00000098 r5:00000000 r4:ce0113c0
[ 38.317707] [<8007381c>] (note_interrupt) from [<80071578>] (handle_irq_event_percpu+0x144/0x1a0)
[ 38.326852] r10:80913dc0 r9:ce0113c0 r8:00000098 r7:00000000 r6:00000000 r5:00000000
[ 38.335128] r4:00000000 r3:00000000
[ 38.338919] [<80071434>] (handle_irq_event_percpu) from [<80071620>] (handle_irq_event+0x4c/0x6c)
[ 38.348063] r10:808d0000 r9:00000001 r8:00000001 r7:f4a00100 r6:808d1ed0 r5:ce01141c
[ 38.356339] r4:ce0113c0
[ 38.359022] [<800715d4>] (handle_irq_event) from [<800747d0>] (handle_fasteoi_irq+0x88/0x160)
[ 38.367808] r7:f4a00100 r6:808d1ed0 r5:00000098 r4:ce0113c0
[ 38.373826] [<80074748>] (handle_fasteoi_irq) from [<80070b74>] (generic_handle_irq+0x34/0x44)
[ 38.382703] r5:00000098 r4:00000098
[ 38.386499] [<80070b40>] (generic_handle_irq) from [<8000f000>] (handle_IRQ+0x48/0x98)
[ 38.394663] r5:00000098 r4:808cddbc
[ 38.398457] [<8000efb8>] (handle_IRQ) from [<80008520>] (gic_handle_irq+0x34/0x64)
[ 38.406264] r7:f4a00100 r6:808d1dd0 r5:808d8978 r4:f4a0010c
[ 38.412288] [<800084ec>] (gic_handle_irq) from [<80012ac0>] (__irq_svc+0x40/0x50)
[ 38.420007] Exception stack(0x808d1dd0 to 0x808d1e18)
[ 38.425233] 1dc0: 00000001 80915a00 00000000 00000000
[ 38.433676] 1de0: 00000282 00000057 808d0000 f4a00100 00000001 00000001 808d0000 808d1e74
[ 38.442114] 1e00: 80915a00 808d1e18 800344a8 80034548 20010113 ffffffff
[ 38.448939] r7:808d1e04 r6:ffffffff r5:20010113 r4:80034548
[ 38.454969] [<80034488>] (__do_softirq) from [<80034968>] (irq_exit+0xb0/0xf8)
[ 38.462419] r10:808d0000 r9:00000001 r8:00000001 r7:f4a00100 r6:00000000 r5:00000057
[ 38.470697] r4:808d0000
[ 38.473381] [<800348b8>] (irq_exit) from [<8000f004>] (handle_IRQ+0x4c/0x98)
[ 38.480654] r5:00000057 r4:808cddbc
[ 38.484446] [<8000efb8>] (handle_IRQ) from [<80008520>] (gic_handle_irq+0x34/0x64)
[ 38.492255] r7:f4a00100 r6:808d1ed0 r5:808d8978 r4:f4a0010c
[ 38.498277] [<800084ec>] (gic_handle_irq) from [<80012ac0>] (__irq_svc+0x40/0x50)
[ 38.505996] Exception stack(0x808d1ed0 to 0x808d1f18)
[ 38.511223] 1ec0: 808d1f18 3b9aca00 ce3db036 00000008
[ 38.519666] 1ee0: d0f0d010 808de3d8 ce394b36 00000008 00000001 00000001 808d0000 808d1f4c
[ 38.528104] 1f00: 00000017 808d1f18 00000009 80499ac8 00010013 ffffffff
[ 38.534930] r7:808d1f04 r6:ffffffff r5:00010013 r4:80499ac8
[ 38.540966] [<80499a70>] (cpuidle_enter_state) from [<80499c60>] (cpuidle_idle_call+0x104/0x158)
[ 38.550023] r8:d0f0d014 r7:808de3d8 r6:8096b598 r5:00000000 r4:d0f0d010
[ 38.557157] [<80499b5c>] (cpuidle_idle_call) from [<8000f3b4>] (arch_cpu_idle+0x10/0x4c)
[ 38.565502] r9:80913dbe r8:8066e70c r7:808d0000 r6:808d8574 r5:808d8510 r4:808d0000
[ 38.573709] [<8000f3a4>] (arch_cpu_idle) from [<80070ae0>] (cpu_startup_entry+0x104/0x144)
[ 38.582252] [<800709dc>] (cpu_startup_entry) from [<8066384c>] (rest_init+0x7c/0x80)
[ 38.590238] r7:ffffffff
[ 38.592929] [<806637d0>] (rest_init) from [<8087dbc4>] (start_kernel+0x354/0x360)
[ 38.612173] [<8087d870>] (start_kernel) from [<10008074>] (0x10008074)
[ 38.630514] handlers:
[ 38.644410] [<802ebe20>] imx6_pcie_msi_handler
[ 38.660513] [<8041b36c>] usb_hcd_irq
[ 38.675629] Disabling IRQ #152
irq 152 ~ 155 are assigned to MCS9990 device.
152: 100001 0 0 0 GIC 152 mx6-pcie-msi, ehci_hcd:usb5
153: 0 0 0 0 GIC 153 ehci_hcd:usb4
154: 0 0 0 0 GIC 154 ehci_hcd:usb3
155: 0 0 0 0 GIC 155 ehci_hcd:usb2
Boot option ‘irqpoll’ will lead to errors from mmc.