X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/f8da08ef397e11c65539762377cac95f356274da..1a7361a5290ff7fe4a4ecc0b99672699436f2332:/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 c41951b98..c61438e36 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 @@ -45,21 +47,93 @@ static struct board_info board; static struct board_info __initdata board_96338gw = { .name = "96338GW", .expected_cpu_id = 0x6338, - + .has_enet0 = 1, .enet0 = { - .has_phy = 1, - .use_internal_phy = 1, + .force_speed_100 = 1, + .force_duplex_full = 1, }, .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 = { .name = "96338W", .expected_cpu_id = 0x6338, - + .has_enet0 = 1, + .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 @@ -78,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 = { @@ -100,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 = { @@ -124,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 = { @@ -143,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 = { @@ -239,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 = { @@ -263,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 = { @@ -296,6 +553,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, @@ -324,9 +584,9 @@ 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_6338() || BCMCPU_IS_6345()) + if (BCMCPU_IS_6345()) val = 0x1fc00000; else { val = bcm_mpi_readl(MPI_CSBASE_REG(0)); @@ -512,6 +772,14 @@ 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, +}; + /* * third stage init callback, register all board devices. */ @@ -542,6 +810,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 @@ -554,8 +826,8 @@ int __init board_register_devices(void) #endif /* read base address of boot chip select (0) */ - if (BCMCPU_IS_6338() || BCMCPU_IS_6345()) - val = 0x1fc0000; + if (BCMCPU_IS_6345()) + val = 0x1fc00000; else { val = bcm_mpi_readl(MPI_CSBASE_REG(0)); val &= MPI_CSBASE_BASE_MASK; @@ -568,6 +840,11 @@ 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); + return 0; }