Expose port sequence in the xhci extended capabilities table to usb core.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Alan&Greg:
	We meet a problem that bind usb3.0 port(supper-speed port) with ACPI.
The main problem is that the port index num of ss port in the usb ocre
is mismatched with its counterpart in the ACPI table.
	The xhci usb3.0 root hub port's index num is based on 0 in the usb
core(xhci's usb3.0 and usb2.0 hub are separate usb device in the usb
core). But in the ACPI table, it is based on the the port num of xhci
usb2.0 port num. Following is the ACPI table code, _ADR is the port
index num. The ss ports start from 0x0F. Just follow the high-speed port
num. This sequence is matched with ports' sequence in the xhci extended
capabilities table. So we have a idea that add a new callback of "struct
hc_driver" to convert the port index num to the one of hc's extended
capabilities table.

Device (XHC)
            Name (_ADR, 0x00140000)
            Device (RHUB)
                Name (_ADR, Zero)
                Device (HS01)
                    Name (_ADR, One)
                Device (HS02)
                    Name (_ADR, 0x02)
                Device (HS03)
                    Name (_ADR, 0x03)
                Device (HS04)
                    Name (_ADR, 0x04)
                Device (HS05)
                    Name (_ADR, 0x05)
                Device (HS06)
                    Name (_ADR, 0x06)
                Device (HS07)
                    Name (_ADR, 0x07)
                Device (HS08)
                    Name (_ADR, 0x08)
                Device (HS09)
                    Name (_ADR, 0x09)
                Device (HS10)
                    Name (_ADR, 0x0A)
                Device (HS11)
                    Name (_ADR, 0x0B)
                Device (HS12)
                    Name (_ADR, 0x0C)
                Device (HS13)
                    Name (_ADR, 0x0D)
                Device (HS14)
                    Name (_ADR, 0x0E)
                Device (HS15)
                    Name (_ADR, 0x0F)
                Device (SSP1)
                    Name (_ADR, 0x10)
                Device (SSP2)
                    Name (_ADR, 0x11)
                Device (SSP3)
                    Name (_ADR, 0x12)
                Device (SSP4)
                    Name (_ADR, 0x13)
                Device (SSP5)
                    Name (_ADR, 0x14)
                Device (SSP6)
                    Name (_ADR, 0x15)

Another idea would be to dynamically allocate an array of ports in
usb_hcd, and fill the port sequence of hc extended capabilities in with
the speed of each rootport. That array pointer could be shared between
the primary and shared usb_hcd structures. The xHCI driver already does
this, by initializing xhci->port_array in
drivers/usb/host/xhci-mem.c:xhci_setup_port_arrays().

-- 
Best regards
Tianyu Lan
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux