pc8736x_gpio: add support for PC87365 chips

This is only compile tested, because I do not own appropriate hardware.

Signed-off-by: Andre Haupt <andre@bitwigglers.org>
Cc: Jim Cromie <jim.cromie@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Andre Haupt 2008-10-18 20:28:33 -07:00 committed by Linus Torvalds
parent b231cca438
commit b64fd291ac

View file

@ -41,7 +41,8 @@ static u8 pc8736x_gpio_shadow[4];
#define SIO_BASE2 0x4E /* alt command-reg to check */ #define SIO_BASE2 0x4E /* alt command-reg to check */
#define SIO_SID 0x20 /* SuperI/O ID Register */ #define SIO_SID 0x20 /* SuperI/O ID Register */
#define SIO_SID_VALUE 0xe9 /* Expected value in SuperI/O ID Register */ #define SIO_SID_PC87365 0xe5 /* Expected value in ID Register for PC87365 */
#define SIO_SID_PC87366 0xe9 /* Expected value in ID Register for PC87366 */
#define SIO_CF1 0x21 /* chip config, bit0 is chip enable */ #define SIO_CF1 0x21 /* chip config, bit0 is chip enable */
@ -91,13 +92,17 @@ static inline int superio_inb(int addr)
static int pc8736x_superio_present(void) static int pc8736x_superio_present(void)
{ {
int id;
/* try the 2 possible values, read a hardware reg to verify */ /* try the 2 possible values, read a hardware reg to verify */
superio_cmd = SIO_BASE1; superio_cmd = SIO_BASE1;
if (superio_inb(SIO_SID) == SIO_SID_VALUE) id = superio_inb(SIO_SID);
if (id == SIO_SID_PC87365 || id == SIO_SID_PC87366)
return superio_cmd; return superio_cmd;
superio_cmd = SIO_BASE2; superio_cmd = SIO_BASE2;
if (superio_inb(SIO_SID) == SIO_SID_VALUE) id = superio_inb(SIO_SID);
if (id == SIO_SID_PC87365 || id == SIO_SID_PC87366)
return superio_cmd; return superio_cmd;
return 0; return 0;