• Pali Rohár's avatar
    Input: alps - demystify trackstick initialization for v3 and v6 protocols · d91abc21
    Pali Rohár authored
    Remove cite "Not sure what this does, but it is absolutely essential".
    
    Extract initialization of trackstick part when touchpad is in passthrough
    mode for v3 and v6 protocols into own function. Initialization for v3 is:
    setscale11, setscale11, setscale11, nibble 0x9, nibble 0x4. Initialization
    for v6 is: setscale11, setscale11, setscale11, setrate 0xC8, setrate 0x14.
    Nibbles 0x9 and 0x4 for v3 protocol correspond to setrate 0xC8 and 0x14,
    therefore these sequences are same.
    
    When touchpad is in passthrough mode, then OS communicates with trackstick
    and this sequence is some magic vendor PS/2 command to put trackstick into
    "extended" mode. After that sequence trackstick starts reporting packets in
    some vendor 4 bytes format (first byte is always 0xE8).
    
    Next step after configuring trackstick to be in "extended" mode, is to
    configure touchpad for v3 protocol to expect that trackstick reports data
    in "extended" mode. For v3 protocol this is done by setting bit 1 in
    register 0xC2C8 (offset 0x08 from base address 0xC2C0).
    
    When both touchpad and trackstick are not configured for "extended" mode
    then touchpad reports trackstick packets in different format, which is not
    supported by psmouse/alps driver (yet).
    
    In Cirque documentation GP-AN- 130823 INTERFACING TO GEN4 OVER I2C (PDF)
    available at http://www.cirque.com/gen4-dev-resources is Logical Address
    0xC2C8 named as PS2AuxControl and Bit Number 1 as ProcessAuxExtendedData
    with description: Auxiliary device data is assumed to be extended data when
    set.
    Signed-off-by: default avatarPali Rohár <pali.rohar@gmail.com>
    Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
    d91abc21
alps.c 85.4 KB