i2c: piix4: Add support for multiplexed main adapter in SB800
authorChristian Fetzer <fetzer.ch@gmail.com>
Thu, 19 Nov 2015 19:13:48 +0000 (20:13 +0100)
committerWolfram Sang <wsa@the-dreams.de>
Mon, 30 Nov 2015 13:36:25 +0000 (14:36 +0100)
commit2fee61d22e606fc99ade9079fda15fdee83ec33e
treed4cc17f9b1f10caf71a2297b4a143f91b5015145
parentca2061e1283b787b49e3f6817645b9f0a2151671
i2c: piix4: Add support for multiplexed main adapter in SB800

The SB800 chipset supports a multiplexed main SMBus controller with
four ports. The multiplexed ports share the same SMBus address and
register set. The port is selected by bits 2:1 of the smb_en register
(0x2C).

Only one port can be active at any point in time therefore a mutex is
needed in order to synchronize access.

Additionally, the commit avoids requesting and releasing the SMBus base
address index region on every multiplexed transfer by moving the
request_region call into piix4_probe.

Tested on HP ProLiant MicroServer G7 N54L (where this patch adds
support to access sensor data from the w83795adg).

Cc: Thomas Brandon <tbrandonau@gmail.com>
Cc: Eddi De Pieri <eddi@depieri.net>
Signed-off-by: Christian Fetzer <fetzer.ch@gmail.com>
Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
drivers/i2c/busses/i2c-piix4.c