Skip to content
  • Sebastian Andrzej Siewior's avatar
    usb: gadget: allocate & giveback serial ports instead hard code them · 19b10a88
    Sebastian Andrzej Siewior authored
    
    
    This patch removes gserial_setup() and gserial_cleanup() and adds
    gserial_alloc_line() and gserial_free_line() to replace them.
    
    The initial setup of u_serial happens now on module load time. A
    maximum of four TTY ports can be requested which is the current limit.
    In theory we could extend this limit, the hard limit is the number of
    available endpoints.
    alloc_tty_driver() is now called at module init time with the max
    available ports. The per-line footprint here is on 32bit is 3 * size of
    pointer + 60 bytes (for cdevs).
    The remaining memory (struct gs_port) is allocated once a port is
    requested.
    
    With this change it is possible to load g_multi and g_serial at the same
    time. GS0 receives the module that is loaded first, GS1 is received by
    the next module and so on. With the configfs interface the port number
    can be exported and the device node is more predictable. Nothing changes
    for g_serial and friends as long as one module is used.
    
    Signed-off-by: default avatarSebastian Andrzej Siewior <bigeasy@linutronix.de>
    Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
    19b10a88