• Aleksander Morgado's avatar
    USB: serial: option: add support for SIM7070/SIM7080/SIM7090 modules · 3e4bdae4
    Aleksander Morgado authored
    commit 1ac69879 upstream.
    
    These modules have 2 different USB layouts:
    
    The default layout with PID 0x9205 (AT+CUSBSELNV=1) exposes 4 TTYs and
    an ECM interface:
    
      T:  Bus=02 Lev=01 Prnt=01 Port=02 Cnt=01 Dev#=  6 Spd=480 MxCh= 0
      D:  Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
      P:  Vendor=1e0e ProdID=9205 Rev=00.00
      S:  Manufacturer=SimTech, Incorporated
      S:  Product=SimTech SIM7080
      S:  SerialNumber=1234567890ABCDEF
      C:  #Ifs= 6 Cfg#= 1 Atr=e0 MxPwr=500mA
      I:  If#=0x0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
      I:  If#=0x1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
      I:  If#=0x2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
      I:  If#=0x3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
      I:  If#=0x4 Alt= 0 #EPs= 1 Cls=02(commc) Sub=06 Prot=00 Driver=cdc_ether
      I:  If#=0x5 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
    
    The purpose of each TTY is as follows:
     * ttyUSB0: DIAG/QCDM port.
     * ttyUSB1: GNSS data.
     * ttyUSB2: AT-capable port (control).
     * ttyUSB3: AT-capable port (data).
    
    In the secondary layout with PID=0x9206 (AT+CUSBSELNV=86) the module
    exposes 6 TTY ports:
    
      T:  Bus=02 Lev=01 Prnt=01 Port=02 Cnt=01 Dev#=  8 Spd=480 MxCh= 0
      D:  Ver= 2.00 Cls=02(commc) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
      P:  Vendor=1e0e ProdID=9206 Rev=00.00
      S:  Manufacturer=SimTech, Incorporated
      S:  Product=SimTech SIM7080
      S:  SerialNumber=1234567890ABCDEF
      C:  #Ifs= 6 Cfg#= 1 Atr=e0 MxPwr=500mA
      I:  If#=0x0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
      I:  If#=0x1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
      I:  If#=0x2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
      I:  If#=0x3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
      I:  If#=0x4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
      I:  If#=0x5 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    
    The purpose of each TTY is as follows:
     * ttyUSB0: DIAG/QCDM port.
     * ttyUSB1: GNSS data.
     * ttyUSB2: AT-capable port (control).
     * ttyUSB3: QFLOG interface.
     * ttyUSB4: DAM interface.
     * ttyUSB5: AT-capable port (data).
    Signed-off-by: default avatarAleksander Morgado <aleksander@aleksander.es>
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    3e4bdae4
option.c 123 KB