From: David Goodenough <david.goodenough@btconnect.com>

Add PCI device supoprt for the Geode SC1100-based Microtik Routerboard 230.

Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 25-akpm/arch/i386/kernel/scx200.c          |    5 ++++-
 25-akpm/drivers/char/watchdog/scx200_wdt.c |   10 ++++++++--
 25-akpm/drivers/i2c/busses/scx200_acb.c    |    7 +++++--
 25-akpm/include/linux/pci_ids.h            |    1 +
 4 files changed, 18 insertions(+), 5 deletions(-)

diff -puN arch/i386/kernel/scx200.c~support-for-sc1100-in-linux-kernel arch/i386/kernel/scx200.c
--- 25/arch/i386/kernel/scx200.c~support-for-sc1100-in-linux-kernel	2004-05-29 00:41:22.000000000 -0700
+++ 25-akpm/arch/i386/kernel/scx200.c	2004-05-29 00:41:22.000000000 -0700
@@ -86,7 +86,10 @@ int __init scx200_init(void)
 
 	if ((bridge = pci_find_device(PCI_VENDOR_ID_NS, 
 				      PCI_DEVICE_ID_NS_SCx200_BRIDGE,
-				      NULL)) == NULL)
+				      NULL)) == NULL
+	    && (bridge = pci_find_device(PCI_VENDOR_ID_NS,
+					 PCI_DEVICE_ID_NS_SC1100_BRIDGE,
+					 NULL)) == NULL)
 		return -ENODEV;
 
 	base = pci_resource_start(bridge, 0);
diff -puN drivers/char/watchdog/scx200_wdt.c~support-for-sc1100-in-linux-kernel drivers/char/watchdog/scx200_wdt.c
--- 25/drivers/char/watchdog/scx200_wdt.c~support-for-sc1100-in-linux-kernel	2004-05-29 00:41:22.000000000 -0700
+++ 25-akpm/drivers/char/watchdog/scx200_wdt.c	2004-05-29 02:32:13.661637160 -0700
@@ -221,10 +221,16 @@ static int __init scx200_wdt_init(void)
 
 	printk(KERN_DEBUG NAME ": NatSemi SCx200 Watchdog Driver\n");
 
-	/* First check that this really is a NatSemi SCx200 CPU */
+	/*
+	 * First check that this really is a NatSemi SCx200 CPU or a Geode
+	 * SC1100 processor
+	 */
 	if ((pci_find_device(PCI_VENDOR_ID_NS,
 			     PCI_DEVICE_ID_NS_SCx200_BRIDGE,
-			     NULL)) == NULL)
+			     NULL)) == NULL
+	    && (pci_find_device(PCI_VENDOR_ID_NS,
+				PCI_DEVICE_ID_NS_SC1100_BRIDGE,
+				NULL)) == NULL)
 		return -ENODEV;
 
 	/* More sanity checks, verify that the configuration block is there */
diff -puN drivers/i2c/busses/scx200_acb.c~support-for-sc1100-in-linux-kernel drivers/i2c/busses/scx200_acb.c
--- 25/drivers/i2c/busses/scx200_acb.c~support-for-sc1100-in-linux-kernel	2004-05-29 00:41:22.000000000 -0700
+++ 25-akpm/drivers/i2c/busses/scx200_acb.c	2004-05-29 00:41:22.000000000 -0700
@@ -43,7 +43,7 @@ MODULE_DESCRIPTION("NatSemi SCx200 ACCES
 MODULE_LICENSE("GPL");
 
 #define MAX_DEVICES 4
-static int base[MAX_DEVICES] = { 0x840 };
+static int base[MAX_DEVICES] = { 0x820, 0x840 };
 MODULE_PARM(base, "1-4i");
 MODULE_PARM_DESC(base, "Base addresses for the ACCESS.bus controllers");
 
@@ -510,7 +510,10 @@ static int __init scx200_acb_init(void)
 	/* Verify that this really is a SCx200 processor */
 	if (pci_find_device(PCI_VENDOR_ID_NS,
 			    PCI_DEVICE_ID_NS_SCx200_BRIDGE,
-			    NULL) == NULL)
+			    NULL) == NULL
+	    && pci_find_device(PCI_VENDOR_ID_NS,
+			       PCI_DEVICE_ID_NS_SC1100_BRIDGE,
+			       NULL) == NULL)
 		return -ENODEV;
 
 	rc = -ENXIO;
diff -puN include/linux/pci_ids.h~support-for-sc1100-in-linux-kernel include/linux/pci_ids.h
--- 25/include/linux/pci_ids.h~support-for-sc1100-in-linux-kernel	2004-05-29 00:41:22.000000000 -0700
+++ 25-akpm/include/linux/pci_ids.h	2004-05-29 00:41:22.000000000 -0700
@@ -373,6 +373,7 @@
 #define PCI_DEVICE_ID_NS_SCx200_AUDIO	0x0503
 #define PCI_DEVICE_ID_NS_SCx200_VIDEO	0x0504
 #define PCI_DEVICE_ID_NS_SCx200_XBUS	0x0505
+#define PCI_DEVICE_ID_NS_SC1100_BRIDGE	0x0510
 #define PCI_DEVICE_ID_NS_87410		0xd001
 
 #define PCI_VENDOR_ID_TSENG		0x100c
_