Re: Touchpad stickiness on AMD laptops (was Dell Inspiron/XPS)
From: Miroslav Bendík <hidden>
Date: 2022-01-17 08:39:37
Also in:
linux-i2c, platform-driver-x86
[AMD Official Use Only]quoted
Now i am trying to change ASF registers instead of SMBus registers. I have tried to enable interrupts and set listen address, but it don't work or i can't recognize the difference between interrupts generated by transfers and interrupts generated from slave.Try reading the value of SFx0A ASFStatus bit 5 (it's write to clear if it's an interrupt).quoted
outb_p(0x02, 0x15 + piix4_smba); // SlaveIntrListenEn outb_p(0x2c << 1 | 0x01, 0x09 + piix4_smba); // ListenAdr | ListenAdrEnASFx04 SlaveAddress instead of ASFx09 ListenAdr ?
Little bit more informations: Interrupts are generated only if ASFx09 ListenAdr is: (0x08 << 1) | 0x01 (0x10 << 1) | 0x01 and touchpad is initialized with synaptics_intertouch=1 There is maybe small correlation between frequency and touch, but i am not 100% sure. There are no register changed in interrupt handler except of ASFx13 DataBankSel. I can't determine if interrupt is generated from transfer, or from external event. ASF should be system for remote management. It should have access to SMBus and data / command registers are identical, this means, that SMBus should work (except block transfers). If ASF just mirrors SMBus, then question is, why i can't access to touchpad using SMBus? One strange thing is, that i2cdetect on standard SMbus (0xb00), port 0 returns: 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- 36 37 -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: 50 -- -- -- -- -- -- -- 58 -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- -- Address 0x58 is exactly 0x2c (synaptics) moved 1 bit left, but i2c-piix4 correctly moves address.