pc8736x_gpio: add support for PC87365 chips
Andre Haupt [Sun, 19 Oct 2008 03:28:33 +0000 (20:28 -0700)]
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>

drivers/char/pc8736x_gpio.c

index b930de5..3f7da8c 100644 (file)
@@ -41,7 +41,8 @@ static u8 pc8736x_gpio_shadow[4];
 #define SIO_BASE2       0x4E   /* alt command-reg to check */
 
 #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 */
 
@@ -91,13 +92,17 @@ static inline int superio_inb(int addr)
 
 static int pc8736x_superio_present(void)
 {
+       int id;
+
        /* try the 2 possible values, read a hardware reg to verify */
        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;
 
        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 0;