X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/5a3fb9580200401662013f78d83ecf98f187ed6e..d303e45f4bbad9c4fff934cf8f63f33538af8cee:/target/linux/brcm63xx/files/arch/mips/bcm63xx/boards/board_bcm963xx.c diff --git a/target/linux/brcm63xx/files/arch/mips/bcm63xx/boards/board_bcm963xx.c b/target/linux/brcm63xx/files/arch/mips/bcm63xx/boards/board_bcm963xx.c index e27264dfd..0a8ecbd36 100644 --- a/target/linux/brcm63xx/files/arch/mips/bcm63xx/boards/board_bcm963xx.c +++ b/target/linux/brcm63xx/files/arch/mips/bcm63xx/boards/board_bcm963xx.c @@ -4,6 +4,7 @@ * for more details. * * Copyright (C) 2008 Maxime Bizon + * Copyright (C) 2009 Florian Fainelli */ #include @@ -24,6 +25,7 @@ #include #include #include +#include #include #include #include @@ -53,6 +55,35 @@ static struct board_info __initdata board_96338gw = { }, .has_ohci0 = 1, + + .leds = { + { + .name = "adsl", + .gpio = 3, + .active_low = 1, + }, + { + .name = "ses", + .gpio = 5, + .active_low = 1, + }, + { + .name = "ppp-fail", + .gpio = 4, + .active_low = 1, + }, + { + .name = "power", + .gpio = 0, + .active_low = 1, + .default_trigger = "default-on", + }, + { + .name = "stop", + .gpio = 1, + .active_low = 1, + } + }, }; static struct board_info __initdata board_96338w = { @@ -63,7 +94,46 @@ static struct board_info __initdata board_96338w = { .enet0 = { .force_speed_100 = 1, .force_duplex_full = 1, - } + }, + + .leds = { + { + .name = "adsl", + .gpio = 3, + .active_low = 1, + }, + { + .name = "ses", + .gpio = 5, + .active_low = 1, + }, + { + .name = "ppp-fail", + .gpio = 4, + .active_low = 1, + }, + { + .name = "power", + .gpio = 0, + .active_low = 1, + .default_trigger = "default-on", + }, + { + .name = "stop", + .gpio = 1, + .active_low = 1, + }, + }, +}; +#endif + +/* + * known 6345 boards + */ +#ifdef CONFIG_BCM63XX_CPU_6345 +static struct board_info __initdata board_96345gw2 = { + .name = "96345GW2", + .expected_cpu_id = 0x6345, }; #endif @@ -82,6 +152,36 @@ static struct board_info __initdata board_96348r = { .has_phy = 1, .use_internal_phy = 1, }, + + .leds = { + { + .name = "adsl-fail", + .gpio = 2, + .active_low = 1, + }, + { + .name = "ppp", + .gpio = 3, + .active_low = 1, + }, + { + .name = "ppp-fail", + .gpio = 4, + .active_low = 1, + }, + { + .name = "power", + .gpio = 0, + .active_low = 1, + .default_trigger = "default-on", + + }, + { + .name = "stop", + .gpio = 1, + .active_low = 1, + }, + }, }; static struct board_info __initdata board_96348gw_10 = { @@ -104,6 +204,43 @@ static struct board_info __initdata board_96348gw_10 = { .has_ohci0 = 1, .has_pccard = 1, .has_ehci0 = 1, + + .has_dsp = 1, + .dsp = { + .gpio_rst = 6, + .gpio_int = 34, + .cs = 2, + .ext_irq = 2, + }, + + .leds = { + { + .name = "adsl-fail", + .gpio = 2, + .active_low = 1, + }, + { + .name = "ppp", + .gpio = 3, + .active_low = 1, + }, + { + .name = "ppp-fail", + .gpio = 4, + .active_low = 1, + }, + { + .name = "power", + .gpio = 0, + .active_low = 1, + .default_trigger = "default-on", + }, + { + .name = "stop", + .gpio = 1, + .active_low = 1, + }, + }, }; static struct board_info __initdata board_96348gw_11 = { @@ -128,6 +265,35 @@ static struct board_info __initdata board_96348gw_11 = { .has_ohci0 = 1, .has_pccard = 1, .has_ehci0 = 1, + + .leds = { + { + .name = "adsl-fail", + .gpio = 2, + .active_low = 1, + }, + { + .name = "ppp", + .gpio = 3, + .active_low = 1, + }, + { + .name = "ppp-fail", + .gpio = 4, + .active_low = 1, + }, + { + .name = "power", + .gpio = 0, + .active_low = 1, + .default_trigger = "default-on", + }, + { + .name = "stop", + .gpio = 1, + .active_low = 1, + }, + }, }; static struct board_info __initdata board_96348gw = { @@ -147,7 +313,44 @@ static struct board_info __initdata board_96348gw = { .force_duplex_full = 1, }, - .has_ohci0 = 1, + .has_ohci0 = 1, + .has_dsp = 1, + + .dsp = { + .gpio_rst = 6, + .gpio_int = 34, + .ext_irq = 2, + .cs = 2, + }, + + .leds = { + { + .name = "adsl-fail", + .gpio = 2, + .active_low = 1, + }, + { + .name = "ppp", + .gpio = 3, + .active_low = 1, + }, + { + .name = "ppp-fail", + .gpio = 4, + .active_low = 1, + }, + { + .name = "power", + .gpio = 0, + .active_low = 1, + .default_trigger = "default-on", + }, + { + .name = "stop", + .gpio = 1, + .active_low = 1, + }, + }, }; static struct board_info __initdata board_FAST2404 = { @@ -243,6 +446,33 @@ static struct board_info __initdata board_96358vw = { .has_ohci0 = 1, .has_pccard = 1, .has_ehci0 = 1, + + .leds = { + { + .name = "adsl-fail", + .gpio = 15, + .active_low = 1, + }, + { + .name = "ppp", + .gpio = 22, + .active_low = 1, + }, + { + .name = "ppp-fail", + .gpio = 23, + .active_low = 1, + }, + { + .name = "power", + .gpio = 4, + .default_trigger = "default-on", + }, + { + .name = "stop", + .gpio = 5, + }, + }, }; static struct board_info __initdata board_96358vw2 = { @@ -267,6 +497,29 @@ static struct board_info __initdata board_96358vw2 = { .has_ohci0 = 1, .has_pccard = 1, .has_ehci0 = 1, + + .leds = { + { + .name = "adsl", + .gpio = 22, + .active_low = 1, + }, + { + .name = "ppp-fail", + .gpio = 23, + }, + { + .name = "power", + .gpio = 5, + .active_low = 1, + .default_trigger = "default-on", + }, + { + .name = "stop", + .gpio = 4, + .active_low = 1, + }, + }, }; static struct board_info __initdata board_AGPFS0 = { @@ -290,6 +543,27 @@ static struct board_info __initdata board_AGPFS0 = { .has_ohci0 = 1, .has_ehci0 = 1, }; + +static struct board_info __initdata board_DWVS0 = { + .name = "DWV-S0", + .expected_cpu_id = 0x6358, + + .has_enet0 = 1, + .has_enet1 = 1, + .has_pci = 1, + + .enet0 = { + .has_phy = 1, + .use_internal_phy = 1, + }, + + .enet1 = { + .force_speed_100 = 1, + .force_duplex_full = 1, + }, + + .has_ohci0 = 1, +}; #endif /* @@ -300,6 +574,9 @@ static const struct board_info __initdata *bcm963xx_boards[] = { &board_96338gw, &board_96338w, #endif +#ifdef CONFIG_BCM63XX_CPU_6345 + &board_96345gw2, +#endif #ifdef CONFIG_BCM63XX_CPU_6348 &board_96348r, &board_96348gw, @@ -314,6 +591,7 @@ static const struct board_info __initdata *bcm963xx_boards[] = { &board_96358vw, &board_96358vw2, &board_AGPFS0, + &board_DWVS0, #endif }; @@ -328,7 +606,7 @@ void __init board_prom_init(void) u32 val; /* read base address of boot chip select (0) - * 6338/6345 does not have MPI but boots from standard + * 6345 does not have MPI but boots from standard * MIPS Flash address */ if (BCMCPU_IS_6345()) val = 0x1fc00000; @@ -516,6 +794,25 @@ static struct resource gpiodev_resource = { .start = 0xFFFFFFFF, }; +static struct gpio_led_platform_data bcm63xx_led_data; + +static struct platform_device bcm63xx_gpio_leds = { + .name = "leds-gpio", + .id = 0, + .dev.platform_data = &bcm63xx_led_data, +}; + +struct gpio_buttons_platform_data bcm63xx_gpio_buttons_data = { + .poll_interval = 20, +}; + +struct platform_device bcm63xx_gpio_buttons_device = { + .name = "gpio-buttons", + .id = 0, + .dev.platform_data = &bcm63xx_gpio_buttons_data, +}; + + /* * third stage init callback, register all board devices. */ @@ -525,7 +822,9 @@ int __init board_register_devices(void) bcm63xx_uart_register(); bcm63xx_wdt_register(); - bcm63xx_spi_register(); + + if (!BCMCPU_IS_6345()) + bcm63xx_spi_register(); if (board.has_pccard) bcm63xx_pcmcia_register(); @@ -546,6 +845,10 @@ int __init board_register_devices(void) if (board.has_udc0) bcm63xx_udc_register(); + + if (board.has_dsp) + bcm63xx_dsp_register(&board.dsp); + /* Generate MAC address for WLAN and * register our SPROM */ #ifdef CONFIG_PCI @@ -559,7 +862,7 @@ int __init board_register_devices(void) /* read base address of boot chip select (0) */ if (BCMCPU_IS_6345()) - val = 0x1fc0000; + val = 0x1fc00000; else { val = bcm_mpi_readl(MPI_CSBASE_REG(0)); val &= MPI_CSBASE_BASE_MASK; @@ -572,6 +875,16 @@ int __init board_register_devices(void) /* Register GPIODEV */ platform_device_register_simple("GPIODEV", 0, &gpiodev_resource, 1); + bcm63xx_led_data.num_leds = ARRAY_SIZE(board.leds); + bcm63xx_led_data.leds = board.leds; + + platform_device_register(&bcm63xx_gpio_leds); + + bcm63xx_gpio_buttons_data.nbuttons = 1, + bcm63xx_gpio_buttons_data.buttons = board.reset_btm; + + platform_device_register(&bcm63xx_gpio_buttons); + return 0; }