Touchpad/AVC Sentelic FSP configuration

From OLPC
Jump to: navigation, search


The behaviour of Sentelic AVC touchpads is controlled by configuration parameters.

  • Base parameters will be set at the factory
  • Some parameters may be set by Linux during boot (OS 11.3.1 and later)

Tools

olpc-fsp-fwread

Will dump the registers as set at the factory. It ignores the registers in use. Useful to know what version of configuration was loaded at the factory -- these are also the settings that OFW will operate under.

olpc-fsp-regs

  • 'verify' parameter will check if your touchpad has been loaded with the latest config
  • 'set' parameter will load the latest config in the touchpad

olpc-configure

This is our init script (in /etc/init.d or in /usr/sbin) and calls `olpc-fsp-regs set`. Comment out the call if you want to use the touchpad with its factory settings.

Configuration versions

Versions we have shipped. Unfortunately, there is no register that indicates "configuration version".

The pairs below are register position, register value.

2F

This is our "base" configuration.

3F

Fixes jitter in ebook mode.

These registers are changed on top of a "2F" configuration.

  • 0x45 0xc1
  • 0x15 0x64
  • 0x17 0x99
  • 0x1b 0x6f
  • 0x30 0xa0
  • 0x42 0xe7

4F

Fixes finger rolling causes cursor position jumps

These registers are changed on top of a "3F" configuration.

  • 0x64 0x63
  • 0x65 0x63
  • 0x6c 0xa8
  • 0x6d 0x8a

5F

Reverts the "ebook jitter"(3F) changes, tunes finger rolling (4F) changes. As the ebook jitter changes made for a brittle tuning, we switch them off and rely instead on using olpc-kbdshim to actively tell the TP to stop the stream when in ebook mode (and then to resume the stream when we're out of ebook mode).

These registers can be applied to 2F,3F,4F

  • 0x45=21
  • 0x64=63
  • 0x65=63
  • 0x6C=A8
  • 0x6D=8A
  • 0x30=A0
  • 0x42=E7

6F

Adds the following values:

  • 0x17=AA To enlarge the signal amplitude
    • bit[7:4] for Y axis
    • bit[3:0] for X axis
  • 0x48=A3 To disable ground difference checking mechanism. Ground difference checking mechanism is used to check if entering multi-finger mode or not. So we can disable it in this model. (we are not using multi-finger gesture)
    • bit[6] EN_GND_DIFF: ground difference condition enable
      • 0=> disable
      • 1=> enable
  • 0x61=00
    • bit[4] EN_GND_DIFF_REF: reference max ground diff check enable
    • bit[5] EN_AVE_DIFF_REF: reference average ground diff check enable