• Nuno Lucas's avatar
    Input: usbtouchscreen - fix TSC-10 DM USB controllers without EEPROM · 2ec6f246
    Nuno Lucas authored
    The usbtouchscreen module implements a driver for the TSC-10 DM USB
    touchscreen controllers, but assumes a 2-byte response for the
    CMD_RESET and CMD_RATE commands, when they can be only a single byte
    when no EEPROM is connected.
    
    The driver worked with an earlier controller revision, but new
    revisions of the controller fail.
    
    It seems the problem is that the early controller had the
    SEL4/EEPROM-CS pin high, but the new controller has it down, making
    the response different.
    
    Without the fix, the controller would answer the single byte 0x06
    (ACK), making the init fail with -ENODEV because buf[1] is 0xFF (as
    initialized before).
    
    As the single byte is the only thing we need to check it was ok, there
    is no need to verify the second byte.
    
    The [0x15 0x01] case is the NAK [0x15] response for when there is no
    data in the EEPROM [bit-0 of second byte set], so I let that be, as I
    don't have any controller with an EEPROM.
    
    With this patch, both the earlier and latest controller work the same.
    
    Note: This was previously submited as BUG #11961 [1] on the bugzilla
    tracker, but rebased to version 2.6.27.4 and with unnecessary comments
    and printk's removed.
    
    [1] http://bugzilla.kernel.org/show_bug.cgi?id=11961Signed-off-by: default avatarNuno Lucas <ntlucas@gmail.com>
    Acked-by: default avatarDaniel Ritz <daniel.ritz@gmx.ch>
    Signed-off-by: default avatarDmitry Torokhov <dtor@mail.ru>
    2ec6f246
usbtouchscreen.c 25.2 KB