Skip to content
  • Frank Schäfer's avatar
    pl2303: improve the chip type detection/distinction · 034d1527
    Frank Schäfer authored
    The driver currently knows about 3 different PL2303 chip types:
    The two legacy chip types type_0 and type_1 (PL2303H ?) and the HX
    type.
    The device distinction is currently completely based on the examination
    of the USB descriptors.
    During the last years, Prolific has introduced further PL2303 chips,
    such as the HXD (HX rev. D), TA (which replaced the X/HX chips), SA,
    RA, EA and TB variants.
    Unfortunately, all these new chips are currently detected as HX chips,
    because they are all using the same bMaxPacketSize0 = 0x40 value in the
    USB device descriptor.
    
    At this point it is not clear if these chips are really working with
    the driver, there are just some positive indicators (like device
    manufacturers claiming Linux support for these devices or commit
    8d48fdf6
    
     "correctly handle baudrates above 115200" which should only
    be necessary for newer devices, ...)
    
    For a complete support of all devices, we need to distinguish between
    them, because they differ in several functional aspects, such  as the
    maximum supported baud rate (HXD, TB, EA: 12Mbps, HX, TA: 6Mbps,
    RA: 1Mbps, SA: 115.2kbps), handshaking line support, RS422/485 and
    GPIO ports support (currently not supported by the driver).
    And there might be further differences that we don't know yet.
    
    This patch improves the chip type detection by evaluating the bcdDevice
    value of the device descriptor. The values are taken from the
    datasheets and are safe to use because manufacturers can't change them:
    
    3.00: X/HX, TA
    4.00: HXD, EA, RA, SA
    5.00: TB
    
    The rest of the device descriptors is completely identical, so no
    further distinction is possible this way.
    Anyway, Prolifics "checkChipVersion.exe"-tool is definitely able to
    distinguish for example between the X/HX and the TA chips, so there
    must be a possibility to improve the distinction further...
    
    Signed-off-by: default avatarFrank Schäfer <fschaefer.oss@googlemail.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    034d1527