• Jó Ágila Bitsch's avatar
    usb: gadget: add WebUSB landing page support · 93c47394
    Jó Ágila Bitsch authored
    There is a custom (non-USB IF) extension to the USB standard:
    
    https://wicg.github.io/webusb/
    
    This specification is published under the W3C Community Contributor
    Agreement, which in particular allows to implement the specification
    without any royalties.
    
    The specification allows USB gadgets to announce an URL to landing
    page and describes a Javascript interface for websites to interact
    with the USB gadget, if the user allows it. It is currently
    supported by Chromium-based browsers, such as Chrome, Edge and
    Opera on all major operating systems including Linux.
    
    This patch adds optional support for Linux-based USB gadgets
    wishing to expose such a landing page.
    
    During device enumeration, a host recognizes that the announced
    USB version is at least 2.01, which means, that there are BOS
    descriptors available. The device than announces WebUSB support
    using a platform device capability. This includes a vendor code
    under which the landing page URL can be retrieved using a
    vendor-specific request.
    
    Previously, the BOS descriptors would unconditionally include an
    LPM related descriptor, as BOS descriptors were only ever sent
    when the device was LPM capable. As this is no longer the case,
    this patch puts this descriptor behind a lpm_capable condition.
    
    Usage is modeled after os_desc descriptors:
    echo 1 > webusb/use
    echo "https://www.kernel.org" > webusb/landingPage
    
    lsusb will report the device with the following lines:
      Platform Device Capability:
        bLength                24
        bDescriptorType        16
        bDevCapabilityType      5
        bReserved               0
        PlatformCapabilityUUID    {3408b638-09a9-47a0-8bfd-a0768815b665}
          WebUSB:
            bcdVersion    1.00
            bVendorCode      0
            iLandingPage     1 https://www.kernel.orgSigned-off-by: default avatarJó Ágila Bitsch <jgilab@gmail.com>
    Link: https://lore.kernel.org/r/Y8Crf8P2qAWuuk/F@jo-einhundertSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    93c47394
configfs.c 44.9 KB