• Sebastian Andrzej Siewior's avatar
    usb: gadget: composite: introduce usb_gstrings_attach() · 9bb2859f
    Sebastian Andrzej Siewior authored
    The USB strings don't (yet) fully work in multiple configs/gadget
    environment. The string id is assigned to the descriptor and the struct
    usb_strings. We create a copy of the individual descriptor so we don't
    clash if we use a function more than once. However, we have only one
    struct usb_string for each string.
    
    Currently each function which is used multiple times checks for
    "id != 0" and only assigns string ids if it did not happen yet. This
    works well if we use the same function multiple times as long as we do
    it within the "one" gadget we have. Trouble starts once we use the same
    function in a second gadget.
    
    In order to solve this I introduce usb_gstrings_attach(). This function will
    crate a copy all structs except for the strings which are not copied.
    After the copy it will assign USB ids and attach it to cdev.
    Signed-off-by: default avatarSebastian Andrzej Siewior <bigeasy@linutronix.de>
    Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
    9bb2859f
composite.c 50.9 KB