[AMD Official Use Only]
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).
outb_p(0x02, 0x15 + piix4_smba); // SlaveIntrListenEn
outb_p(0x2c << 1 | 0x01, 0x09 + piix4_smba); // ListenAdr | ListenAdrEn
ASFx04 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.