• Lan Tianyu's avatar
    usb/acpi: Store info on device removability. · 05f91689
    Lan Tianyu authored
    In the upcoming USB port power off patches, we need to know whether a
    USB port can ever see a disconnect event.  Often USB ports are internal
    to a system, and users can't disconnect USB devices from that port.
    Sometimes those ports will remain empty, because the OEM chose not to
    connect an internal USB device to that port.
    
    According to ACPI Spec 9.13, PLD indicates whether USB port is
    user visible and _UPC indicates whether a USB device can be connected to
    the USB port (we'll call this "connectible").  Here's a matrix of the
    possible combinations:
    
    Visible Connectible
    		Name		Example
    -------------------------------------------------------------------------
    
    Yes	No	Unknown		(Invalid state.)
    
    Yes	Yes	Hot-plug	USB ports on the outside of a laptop.
    				A user could freely connect and disconnect
    				USB devices.
    
    No	Yes	Hard-wired	A USB modem hard-wired to a port on the
    				inside of a laptop.
    
    No	No	Not used	The port is internal to the system and
    				will remain empty.
    
    Represent each of these four states with an enum usb_port_connect_type.
    The four states are USB_PORT_CONNECT_TYPE_UNKNOWN,
    USB_PORT_CONNECT_TYPE_HOT_PLUG, USB_PORT_CONNECT_TYPE_HARD_WIRED, and
    USB_PORT_NOT_USED.  When we get the USB port's acpi_handle, store the
    state in connect_type in struct usb_port.
    Signed-off-by: default avatarLan Tianyu <tianyu.lan@intel.com>
    Signed-off-by: default avatarSarah Sharp <sarah.a.sharp@linux.intel.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    05f91689
hub.c 145 KB