From: David Goodenough Add PCI device supoprt for the Geode SC1100-based Microtik Routerboard 230. Signed-off-by: Andrew Morton --- 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 _