• Stephen Boyd's avatar
    usb: core: Set connect_type of ports based on DT node · 82e82130
    Stephen Boyd authored
    When a USB hub is described in DT, such as any device that matches the
    onboard-hub driver, the connect_type is set to "unknown" or
    USB_PORT_CONNECT_TYPE_UNKNOWN. This makes any device plugged into that
    USB port report their 'removable' device attribute as "unknown".
    ChromeOS userspace would like to know if the USB device is actually
    removable or not so that security policies can be applied. Improve the
    connect_type attribute for ports, and in turn the removable attribute
    for USB devices, by looking for child devices with a reg property or an
    OF graph when the device is described in DT.
    
    If the graph exists, endpoints that are connected to a remote node must
    be something like a usb-{a,b,c}-connector compatible node, or an
    intermediate node like a redriver, and not a hardwired USB device on the
    board. Set the connect_type to USB_PORT_CONNECT_TYPE_HOT_PLUG in this
    case because the device is going to be plugged in. Set the connect_type
    to USB_PORT_CONNECT_TYPE_HARD_WIRED if there's a child node for the port
    like 'device@2' for port2. Set the connect_type to USB_PORT_NOT_USED if
    there isn't an endpoint or child node corresponding to the port number.
    
    To make sure things don't change, only set the port to not used if
    there are child nodes. This way an onboard hub connect_type doesn't
    change until ports are added or child nodes are added to describe
    hardwired devices. It's assumed that all ports or no ports will be
    described for a device.
    
    Cc: Matthias Kaehlcke <mka@chromium.org>
    Cc: linux-usb@vger.kernel.org
    Cc: devicetree@vger.kernel.org
    Cc: Pin-yen Lin <treapking@chromium.org>
    Cc: maciek swiech <drmasquatch@google.com>
    Signed-off-by: default avatarStephen Boyd <swboyd@chromium.org>
    Link: https://lore.kernel.org/r/20240223005823.3074029-3-swboyd@chromium.orgSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    82e82130
of.c 4.81 KB