diff options
author | Ralph Hempel <ralph.hempel@lantiq.com> | 2010-04-27 15:45:43 +0000 |
---|---|---|
committer | Ralph Hempel <ralph.hempel@lantiq.com> | 2010-04-27 15:45:43 +0000 |
commit | bb75a978286729467ca2e00173e19f7f95e55b59 (patch) | |
tree | df8f25f3ca8de6d4e308cdcca83c323388689e3e /target/linux/ifxmips/files-2.6.33/arch/mips | |
parent | 2c0aef5df799db53a01287c162c9436fd8018d97 (diff) | |
download | master-187ad058-bb75a978286729467ca2e00173e19f7f95e55b59.tar.gz master-187ad058-bb75a978286729467ca2e00173e19f7f95e55b59.tar.bz2 master-187ad058-bb75a978286729467ca2e00173e19f7f95e55b59.zip |
[ifxmips] add ar9 target
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@21200 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/ifxmips/files-2.6.33/arch/mips')
7 files changed, 117 insertions, 463 deletions
diff --git a/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/ar9/Kconfig b/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/ar9/Kconfig index f4a6a8a595..0b192aafab 100644 --- a/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/ar9/Kconfig +++ b/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/ar9/Kconfig @@ -4,26 +4,12 @@ config IFXMIPS_ARCAYDIAN_BRNBOOT bool default n -menu "infineon SoC machine selection" +menu "Lantiq SoC machine selection" -config DANUBE_MACH_EASY50712 - bool "Easy50712" +config DANUBE_MACH_EASY80712 + bool "Easy50812" default y -config DANUBE_MACH_EASY4010 - bool "Easy4010" - default y - -config DANUBE_MACH_ARV4519 - bool "ARV4519" - default y - select DANUBE_ARCAYDIAN_BRNBOOT - -config DANUBE_MACH_ARV452 - bool "ARV452" - default y - select IFXMIPS_ARCAYDIAN_BRNBOOT - endmenu endif diff --git a/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/ar9/Makefile b/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/ar9/Makefile index 328f082af4..df0f38ddaa 100644 --- a/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/ar9/Makefile +++ b/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/ar9/Makefile @@ -1,3 +1,2 @@ obj-y := dma-core.o irq.o ebu.o setup.o devices.o cgu.o -obj-$(CONFIG_IFXMIPS_ARCAYDIAN_BRNBOOT) += arcaydian.o -obj-$(CONFIG_DANUBE_MACH_ARV452) += mach-arv452.o +obj-$(CONFIG_DANUBE_MACH_EASY50812) += mach-easy50812.o diff --git a/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/ar9/board.c b/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/ar9/board.c index e4a418b728..e06284ed1c 100644 --- a/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/ar9/board.c +++ b/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/ar9/board.c @@ -37,421 +37,3 @@ #include <ifxmips.h> #include <ifxmips_irq.h> - -#define MAX_BOARD_NAME_LEN 32 -#define MAX_IFXMIPS_DEVS 9 - -#define SYSTEM_DANUBE "Danube" -#define SYSTEM_DANUBE_CHIPID1 0x00129083 -#define SYSTEM_DANUBE_CHIPID2 0x0012B083 - -#define SYSTEM_TWINPASS "Twinpass" -#define SYSTEM_TWINPASS_CHIPID 0x0012D083 - -enum { - EASY50712, - EASY4010, - ARV4519, - ARV452, -}; - -extern int ifxmips_pci_external_clock; -extern int ifxmips_pci_req_mask; - -static unsigned int chiprev; -static int cmdline_mac; -char board_name[MAX_BOARD_NAME_LEN + 1] = { 0 }; - -struct ifxmips_board { - int type; - char name[32]; - unsigned int system_type; - struct platform_device **devs; - struct resource reset_resource; - struct resource gpiodev_resource; - struct gpio_led *ifxmips_leds; - struct gpio_led *gpio_leds; - int pci_external_clock; - int pci_req_mask; - int num_devs; -}; - -DEFINE_SPINLOCK(ebu_lock); -EXPORT_SYMBOL_GPL(ebu_lock); - -extern unsigned char ifxmips_ethaddr[6]; -static int ifxmips_brn; - -static struct gpio_led_platform_data ifxmips_led_data; - -static struct platform_device ifxmips_led = { - .id = 0, - .name = "ifxmips_led", - .dev = { - .platform_data = (void *) &ifxmips_led_data, - } -}; - -static struct platform_device ifxmips_gpio = { - .id = 0, - .name = "ifxmips_gpio", - .num_resources = 1, -}; - -static struct platform_device ifxmips_mii = { - .id = 0, - .name = "ifxmips_mii0", - .dev = { - .platform_data = ifxmips_ethaddr, - } -}; - -static struct platform_device ifxmips_wdt = { - .id = 0, - .name = "ifxmips_wdt", -}; - -static struct platform_device ifxmips_ebu = { - .id = 0, - .name = "ifxmips_ebu", -}; - -static struct resource ifxmips_mtd_resource = { - .start = IFXMIPS_FLASH_START, - .end = IFXMIPS_FLASH_START + IFXMIPS_FLASH_MAX - 1, - .flags = IORESOURCE_MEM, -}; - -static struct platform_device ifxmips_mtd = { - .id = 0, - .name = "ifxmips_mtd", - .num_resources = 1, - .resource = &ifxmips_mtd_resource, -}; - -static struct platform_device ifxmips_gpio_dev = { - .name = "GPIODEV", - .id = -1, - .num_resources = 1, -}; - -#ifdef CONFIG_LEDS_GPIO -static struct gpio_led arv4519_gpio_leds[] = { - { .name = "ifx:green:power", .gpio = 3, .active_low = 1, }, - { .name = "ifx:red:power", .gpio = 7, .active_low = 1, }, - { .name = "ifx:green:adsl", .gpio = 4, .active_low = 1, }, - { .name = "ifx:green:internet", .gpio = 5, .active_low = 1, }, - { .name = "ifx:red:internet", .gpio = 8, .active_low = 1, }, - { .name = "ifx:green:wlan", .gpio = 6, .active_low = 1, }, - { .name = "ifx:green:usbpwr", .gpio = 14, .active_low = 1, }, - { .name = "ifx:green:usb", .gpio = 19, .active_low = 1, }, -}; - -static struct gpio_led arv452_gpio_leds[] = { - { .name = "ifx:blue:power", .gpio = 3, .active_low = 1, }, - { .name = "ifx:blue:adsl", .gpio = 4, .active_low = 1, }, - { .name = "ifx:blue:internet", .gpio = 5, .active_low = 1, }, - { .name = "ifx:red:power", .gpio = 6, .active_low = 1, }, - { .name = "ifx:yello:wps", .gpio = 7, .active_low = 1, }, - { .name = "ifx:red:wps", .gpio = 9, .active_low = 1, }, - { .name = "ifx:blue:voip", .gpio = 32, .active_low = 1, }, - { .name = "ifx:blue:fxs1", .gpio = 33, .active_low = 1, }, - { .name = "ifx:blue:fxs2", .gpio = 34, .active_low = 1, }, - { .name = "ifx:blue:fxo", .gpio = 35, .active_low = 1, }, - { .name = "ifx:blue:voice", .gpio = 36, .active_low = 1, }, - { .name = "ifx:blue:usb", .gpio = 37, .active_low = 1, }, - { .name = "ifx:blue:wlan", .gpio = 38, .active_low = 1, }, - { .name = "ifx:red:internet", .gpio = 41, .active_low = 1, }, -}; - -static struct gpio_led_platform_data ifxmips_gpio_led_data; - -static struct platform_device ifxmips_gpio_leds = { - .name = "leds-gpio", - .id = -1, - .dev = { - .platform_data = (void *) &ifxmips_gpio_led_data, - } -}; -#endif - -static struct resource dwc_usb_res[] = { - { - .name = "dwc3884_membase", - .flags = IORESOURCE_MEM, - .start = 0x1E101000, - .end = 0x1E101FFF - }, - { - .name = "dwc3884_irq", - .flags = IORESOURCE_IRQ, - .start = IFXMIPS_USB_INT, - } -}; - -static struct platform_device dwc_usb = -{ - .id = 0, - .name = "dwc3884-hcd", - .resource = dwc_usb_res, - .num_resources = ARRAY_SIZE(dwc_usb_res), -}; - -struct platform_device *easy50712_devs[] = { - &ifxmips_led, &ifxmips_gpio, &ifxmips_mii, - &ifxmips_mtd, &ifxmips_wdt, &ifxmips_gpio_dev, &dwc_usb -}; - -struct platform_device *easy4010_devs[] = { - &ifxmips_led, &ifxmips_gpio, &ifxmips_mii, - &ifxmips_mtd, &ifxmips_wdt, &ifxmips_gpio_dev, &dwc_usb -}; - -struct platform_device *arv5419_devs[] = { - &ifxmips_gpio, &ifxmips_mii, &ifxmips_mtd, - &ifxmips_gpio_dev, &ifxmips_wdt, &dwc_usb, -#ifdef CONFIG_LEDS_GPIO - &ifxmips_gpio_leds, -#endif -}; - -struct platform_device *arv452_devs[] = { - &ifxmips_gpio, &ifxmips_mii, &ifxmips_mtd, - &ifxmips_gpio_dev, &ifxmips_wdt, &dwc_usb, - &ifxmips_ebu, -#ifdef CONFIG_LEDS_GPIO - &ifxmips_gpio_leds, -#endif -}; - -static struct gpio_led easy50712_leds[] = { - { .name = "ifx:green:test0", .gpio = 0,}, - { .name = "ifx:green:test1", .gpio = 1,}, - { .name = "ifx:green:test2", .gpio = 2,}, - { .name = "ifx:green:test3", .gpio = 3,}, -}; - -static struct gpio_led easy4010_leds[] = { - { .name = "ifx:green:test0", .gpio = 0,}, - { .name = "ifx:green:test1", .gpio = 1,}, - { .name = "ifx:green:test2", .gpio = 2,}, - { .name = "ifx:green:test3", .gpio = 3,}, -}; - -static struct ifxmips_board boards[] = { - { - /* infineon eval kit */ - .type = EASY50712, - .name = "EASY50712", - .system_type = SYSTEM_DANUBE_CHIPID1, - .devs = easy50712_devs, - .reset_resource = {.name = "reset", .start = 1, .end = 15,}, - .gpiodev_resource = { .name = "gpio", - .start = (1 << 0) | (1 << 1), - .end = (1 << 0) | (1 << 1)}, - .ifxmips_leds = easy50712_leds, - }, { - /* infineon eval kit */ - .type = EASY4010, - .name = "EASY4010", - .system_type = SYSTEM_TWINPASS_CHIPID, - .devs = easy4010_devs, - .reset_resource = {.name = "reset", .start = 1, .end = 15}, - .gpiodev_resource = { .name = "gpio", - .start = (1 << 0) | (1 << 1), - .end = (1 << 0) | (1 << 1)}, - .ifxmips_leds = easy4010_leds, - }, { - /* arcaydian annex-a board used by thompson, airties, ... */ - .type = ARV4519, - .name = "ARV4519", - .system_type = SYSTEM_DANUBE_CHIPID2, - .devs = arv5419_devs, - .reset_resource = {.name = "reset", .start = 1, .end = 14}, - .pci_external_clock = 1, -#ifdef CONFIG_LEDS_GPIO - .gpio_leds = arv4519_gpio_leds, -#endif - }, { - /* arcaydian annex-b board used by airties, arcor */ - .type = ARV452, - .name = "ARV452", - .system_type = SYSTEM_DANUBE_CHIPID2, - .devs = arv452_devs, - .reset_resource = {.name = "reset", .start = 1, .end = 14}, - .pci_external_clock = 1, -#ifdef CONFIG_LEDS_GPIO - .gpio_leds = arv452_gpio_leds, -#endif - }, -}; - -const char *get_system_type(void) -{ - chiprev = (ifxmips_r32(IFXMIPS_MPS_CHIPID) & 0x0FFFFFFF); - - switch (chiprev) { - case SYSTEM_DANUBE_CHIPID1: - case SYSTEM_DANUBE_CHIPID2: - return SYSTEM_DANUBE; - - case SYSTEM_TWINPASS_CHIPID: - return SYSTEM_TWINPASS; - } - - return BOARD_SYSTEM_TYPE; -} - -static int __init ifxmips_set_board_type(char *str) -{ - str = strchr(str, '='); - if (!str) - goto out; - str++; - if (strlen(str) > MAX_BOARD_NAME_LEN) - goto out; - strncpy(board_name, str, MAX_BOARD_NAME_LEN); - printk(KERN_INFO "bootloader told us, that this is a %s board\n", - board_name); -out: - return 1; -} -__setup("ifxmips_board", ifxmips_set_board_type); - -static int __init ifxmips_set_ethaddr(char *str) -{ -#define IS_HEX(x) \ - (((x >= '0' && x <= '9') || (x >= 'a' && x <= 'f') \ - || (x >= 'A' && x <= 'F')) ? (1) : (0)) - int i; - str = strchr(str, '='); - if (!str) - goto out; - str++; - if (strlen(str) != 17) - goto out; - for (i = 0; i < 6; i++) { - if (!IS_HEX(str[3 * i]) || !IS_HEX(str[(3 * i) + 1])) - goto out; - if ((i != 5) && (str[(3 * i) + 2] != ':')) - goto out; - ifxmips_ethaddr[i] = simple_strtoul(&str[3 * i], NULL, 16); - } - if (is_valid_ether_addr(ifxmips_ethaddr)) - cmdline_mac = 1; -out: - return 1; -} -__setup("ethaddr", ifxmips_set_ethaddr); - -int ifxmips_find_brn_block(void) -{ - unsigned char temp[8]; - memcpy_fromio(temp, - (void *)KSEG1ADDR(IFXMIPS_FLASH_START + 0x800000 - 0x10000), 8); - if (memcmp(temp, "BRN-BOOT", 8) == 0) { - if (!cmdline_mac) - memcpy_fromio(ifxmips_ethaddr, - (void *)KSEG1ADDR(IFXMIPS_FLASH_START + - 0x800000 - 0x10000 + 0x16), 6); - if (is_valid_ether_addr(ifxmips_ethaddr)) - cmdline_mac = 1; - return 1; - } else { - return 0; - } -} - -int ifxmips_has_brn_block(void) -{ - return ifxmips_brn; -} -EXPORT_SYMBOL(ifxmips_has_brn_block); - -struct ifxmips_board *ifxmips_find_board(void) -{ - int i; - if (!*board_name) - return 0; - for (i = 0; i < ARRAY_SIZE(boards); i++) - if ((boards[i].system_type == chiprev) && - (!strcmp(boards[i].name, board_name))) - return &boards[i]; - return 0; -} - -int __init ifxmips_init_devices(void) -{ - struct ifxmips_board *board; - - chiprev = (ifxmips_r32(IFXMIPS_MPS_CHIPID) & 0x0FFFFFFF); - board = ifxmips_find_board(); - ifxmips_brn = ifxmips_find_brn_block(); - - if (!cmdline_mac) - random_ether_addr(ifxmips_ethaddr); - - if (!board) { - switch (chiprev) { - case SYSTEM_DANUBE_CHIPID1: - case SYSTEM_DANUBE_CHIPID2: - default: - board = &boards[0]; - break; - case SYSTEM_TWINPASS_CHIPID: - board = &boards[1]; - break; - } - } - - switch (board->type) { - case EASY50712: - board->num_devs = ARRAY_SIZE(easy50712_devs); - ifxmips_led_data.num_leds = ARRAY_SIZE(easy50712_leds); - break; - case EASY4010: - board->num_devs = ARRAY_SIZE(easy4010_devs); - ifxmips_led_data.num_leds = ARRAY_SIZE(easy4010_leds); - break; - case ARV4519: - /* set some sane defaults for the gpios */ - gpio_set_value(3, 0); - gpio_set_value(4, 0); - gpio_set_value(5, 0); - gpio_set_value(6, 0); - gpio_set_value(7, 1); - gpio_set_value(8, 1); - gpio_set_value(19, 0); - board->num_devs = ARRAY_SIZE(arv5419_devs); -#ifdef CONFIG_LEDS_GPIO - ifxmips_gpio_led_data.num_leds = ARRAY_SIZE(arv4519_gpio_leds); -#endif - break; - case ARV452: - /* set some sane defaults for the gpios */ - board->num_devs = ARRAY_SIZE(arv452_devs); - ifxmips_w32(0x8001e7ff, IFXMIPS_EBU_BUSCON1); -#ifdef CONFIG_LEDS_GPIO - ifxmips_gpio_led_data.num_leds = ARRAY_SIZE(arv452_gpio_leds); -#endif - break; - } -#ifdef CONFIG_LEDS_GPIO - ifxmips_gpio_led_data.leds = board->gpio_leds; -#endif - ifxmips_led_data.leds = board->ifxmips_leds; - - printk(KERN_INFO "%s: adding %d devs\n", - __func__, board->num_devs); - - ifxmips_gpio.resource = &board->reset_resource; - ifxmips_gpio_dev.resource = &board->gpiodev_resource; - if (board->pci_external_clock) - ifxmips_pci_external_clock = 1; - if (board->pci_req_mask) - ifxmips_pci_req_mask = board->pci_req_mask; - printk(KERN_INFO "using board definition %s\n", board->name); - return platform_add_devices(board->devs, board->num_devs); -} - -arch_initcall(ifxmips_init_devices); diff --git a/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/ar9/devices.h b/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/ar9/devices.h index 75201a2ece..0d1618a67a 100644 --- a/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/ar9/devices.h +++ b/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/ar9/devices.h @@ -8,9 +8,9 @@ enum { PCI_CLOCK_EXT }; -void __init danube_register_usb(void); -void __init danube_register_ebu_gpio(struct resource *resource, u32 value); -void __init danube_register_ethernet(unsigned char *mac); -void __init danube_register_pci(int clock, int irq_mask); +void __init ar9_register_usb(void); +void __init ar9_register_ebu_gpio(struct resource *resource, u32 value); +void __init ar9_register_ethernet(unsigned char *mac); +void __init ar9_register_pci(int clock, int irq_mask); #endif diff --git a/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/ar9/mach-arv452.c b/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/ar9/mach-arv452.c index 1b76c73d7b..1a53b82ce6 100644 --- a/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/ar9/mach-arv452.c +++ b/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/ar9/mach-arv452.c @@ -149,19 +149,19 @@ arv452_init(void) ifxmips_register_gpio(); - danube_register_ebu_gpio(&arv452_ebu_resource, ARV452_LATCH_SWITCH); + ar9_register_ebu_gpio(&arv452_ebu_resource, ARV452_LATCH_SWITCH); ifxmips_register_mtd(&arv452_flash_data); - danube_register_pci(PCI_CLOCK_EXT, 0); + ar9_register_pci(PCI_CLOCK_EXT, 0); ifxmips_register_wdt(); ifxmips_register_gpio_leds(arv452_leds_gpio, ARRAY_SIZE(arv452_leds_gpio)); - danube_register_ethernet(mac); + ar9_register_ethernet(mac); - danube_register_usb(); + ar9_register_usb(); } MIPS_MACHINE(IFXMIPS_MACH_ARV452, diff --git a/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/ar9/mach-easy50812.c b/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/ar9/mach-easy50812.c new file mode 100644 index 0000000000..0baaba37c2 --- /dev/null +++ b/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/ar9/mach-easy50812.c @@ -0,0 +1,80 @@ +#include <linux/init.h> +#include <linux/platform_device.h> +#include <linux/leds.h> +#include <linux/gpio.h> +#include <linux/gpio_buttons.h> +#include <linux/mtd/mtd.h> +#include <linux/mtd/partitions.h> +#include <linux/mtd/physmap.h> +#include <linux/input.h> + +#include <machine.h> +#include <ifxmips_prom.h> + +#include "devices.h" + +extern unsigned char ifxmips_ethaddr[6]; + +#ifdef CONFIG_MTD_PARTITIONS +static struct mtd_partition easy50812_partitions[] = +{ + { + .name = "uboot", + .offset = 0x0, + .size = 0x40000, + }, + { + .name = "uboot_env", + .offset = 0x40000, + .size = 0x10000, + }, + { + .name = "kernel", + .offset = 0x0, + .size = 0x0, + }, + { + .name = "rootfs", + .offset = 0x0, + .size = 0x0, + } +}; +#endif + +static struct physmap_flash_data easy50812_flash_data = { +#ifdef CONFIG_MTD_PARTITIONS + .nr_parts = ARRAY_SIZE(easy50812_partitions), + .parts = easy50812_partitions, +#endif +}; + +static struct gpio_led easy50812_leds[] = { + { .name = "ifx:green:test0", .gpio = 0,}, + { .name = "ifx:green:test1", .gpio = 1,}, + { .name = "ifx:green:test2", .gpio = 2,}, + { .name = "ifx:green:test3", .gpio = 3,}, +}; + +static void __init +easy50812_init(void) +{ + ifxmips_register_gpio(); + + //printk("ifxmips_register_gpio_dev\n"); + //ifxmips_register_gpio_dev(); + + ifxmips_register_mtd(&easy50812_flash_data); + + ifxmips_register_leds(easy50812_leds, ARRAY_SIZE(easy50812_leds)); + + ifxmips_register_wdt(); + + ar9_register_ethernet(ifxmips_ethaddr); + + ar9_register_usb(); +} + +MIPS_MACHINE(IFXMIPS_MACH_EASY50812, + "EASY50812", + "Lantiq AR9 Eval Board", + easy50812_init); diff --git a/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/ar9/setup.c b/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/ar9/setup.c index 35e6fd9645..5db8bb7e83 100644 --- a/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/ar9/setup.c +++ b/target/linux/ifxmips/files-2.6.33/arch/mips/ifxmips/ar9/setup.c @@ -9,12 +9,9 @@ #include <ifxmips.h> #include <ifxmips_cgu.h> -#define SYSTEM_DANUBE "Danube" -#define SYSTEM_DANUBE_CHIPID1 0x00129083 -#define SYSTEM_DANUBE_CHIPID2 0x0012B083 - -#define SYSTEM_TWINPASS "Twinpass" -#define SYSTEM_TWINPASS_CHIPID 0x0012D083 +#define SYSTEM_AR9 "AR9" +#define SYSTEM_AR9_CHIPID1 0x00129083 +#define SYSTEM_AR9_CHIPID2 0x0012B083 static unsigned int chiprev = 0; unsigned char ifxmips_sys_type[IFXMIPS_SYS_TYPE_LEN]; @@ -58,10 +55,15 @@ ifxmips_machine_power_off(void) for(;;); } +static inline u16 get_chip_partnum(void) +{ + return (ifxmips_r32(IFXMIPS_MPS_CHIPID) & 0x0FFFF000) >> 12; +} + void __init ifxmips_soc_setup(void) { - char *name = SYSTEM_DANUBE; + char *name = SYSTEM_AR9; ioport_resource.start = IOPORT_RESOURCE_START; ioport_resource.end = IOPORT_RESOURCE_END; iomem_resource.start = IOMEM_RESOURCE_START; @@ -71,24 +73,29 @@ ifxmips_soc_setup(void) _machine_halt = ifxmips_machine_halt; pm_power_off = ifxmips_machine_power_off; - chiprev = (ifxmips_r32(IFXMIPS_MPS_CHIPID) & 0x0FFFFFFF); - - switch (chiprev) + switch (get_chip_partnum()) { - case SYSTEM_DANUBE_CHIPID1: - case SYSTEM_DANUBE_CHIPID2: - name = SYSTEM_DANUBE; + case 0x16C, + name = = "ARX188", break; - - case SYSTEM_TWINPASS_CHIPID: - name = SYSTEM_TWINPASS; + case 0x16D, + name = = "ARX168", + break; + case 0x16F, + name = = "ARX182", + break; + case 0x170, + name = = "GRX188", + break; + case 0x171, + name = = "GRX168", break; - default: - printk(KERN_ERR "This is not a danube chiprev : 0x%08X\n", chiprev); + printk(KERN_ERR "This is not a AR9 chiprev : 0x%08X\n", get_chip_partnum()); BUG(); break; } + snprintf(ifxmips_sys_type, IFXMIPS_SYS_TYPE_LEN - 1, "%s rev1.%d %dMhz", name, ifxmips_get_cpu_ver(), ifxmips_get_cpu_hz() / 1000000); |