Re: Touchpad stickiness on AMD laptops (was Dell Inspiron/XPS)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> I think "SMBUSx11 I2CCommand" may be what you're looking for.

This has no effect and i know (probably) why.

In AMD documentation is address ending with 0x20 ASF, not SMBus. Some registers
have same function and this is probably reason, why communication works.

This code should write 0x2c address to I2CCommand. If this is RW, then reading
should return 0x2c, but it returns 0x00.

outb_p(0x2c, (0x11 + piix4_smba)); // I2CCommand
printk(KERN_INFO "smbus I2CCommand %02x\n", inb_p(0x11 + piix4_smba));

If this is ASF, then 0x11 is read only. 0x0e, 0x0f should have initial value
0xa8 0xaa. Here is register dump:

0000 0002 5802 0000 0f59 00ff ff00 a8aa  0000 0081 0002 0400 0000 0000 0000 0000

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.

outb_p(0x02, 0x15 + piix4_smba); // SlaveIntrListenEn
outb_p(0x2c << 1 | 0x01, 0x09 + piix4_smba); // ListenAdr | ListenAdrEn

Here is register dump for interrupts:

https://pastebin.com/eYnb30sL




[Index of Archives]     [Linux Kernel Development]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux