| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- --- /dev/null
- +++ b/arch/arm/mach-gemini/board-wbd111.c
- @@ -0,0 +1,125 @@
- +/*
- + * Support for Wiliboard WBD-111
- + *
- + * Copyright (C) 2009 Imre Kaloz <[email protected]>
- + *
- + * This program is free software; you can redistribute it and/or modify
- + * it under the terms of the GNU General Public License as published by
- + * the Free Software Foundation; either version 2 of the License, or
- + * (at your option) any later version.
- + */
- +#include <linux/kernel.h>
- +#include <linux/init.h>
- +#include <linux/platform_device.h>
- +#include <linux/leds.h>
- +#include <linux/input.h>
- +#include <linux/skbuff.h>
- +#include <linux/gpio_keys.h>
- +#include <linux/mdio-gpio.h>
- +#include <asm/mach-types.h>
- +#include <asm/mach/arch.h>
- +#include <asm/mach/time.h>
- +
- +#include <mach/gmac.h>
- +
- +#include "common.h"
- +
- +static struct mdio_gpio_platform_data wbd111_mdio = {
- + .mdc = 22,
- + .mdio = 21,
- + .phy_mask = ~(1 << 1),
- +};
- +
- +static struct platform_device wbd111_phy_device = {
- + .name = "mdio-gpio",
- + .id = 0,
- + .dev = {
- + .platform_data = &wbd111_mdio,
- + },
- +};
- +
- +static struct gemini_gmac_platform_data gmac_data = {
- + .bus_id[0] = "0:01",
- + .interface[0] = PHY_INTERFACE_MODE_MII,
- +};
- +
- +static struct gpio_keys_button wbd111_keys[] = {
- + {
- + .code = KEY_SETUP,
- + .gpio = 5,
- + .active_low = 1,
- + .desc = "reset",
- + .type = EV_KEY,
- + },
- +};
- +
- +static struct gpio_keys_platform_data wbd111_keys_data = {
- + .buttons = wbd111_keys,
- + .nbuttons = ARRAY_SIZE(wbd111_keys),
- +};
- +
- +static struct platform_device wbd111_keys_device = {
- + .name = "gpio-keys",
- + .id = -1,
- + .dev = {
- + .platform_data = &wbd111_keys_data,
- + },
- +};
- +
- +static struct gpio_led wbd111_leds[] = {
- + {
- + .name = "L3red",
- + .gpio = 1,
- + },
- + {
- + .name = "L4green",
- + .gpio = 2,
- + },
- + {
- + .name = "L4red",
- + .gpio = 3,
- + },
- + {
- + .name = "L3green",
- + .gpio = 5,
- + },
- +};
- +
- +static struct gpio_led_platform_data wbd111_leds_data = {
- + .num_leds = ARRAY_SIZE(wbd111_leds),
- + .leds = wbd111_leds,
- +};
- +
- +static struct platform_device wbd111_leds_device = {
- + .name = "leds-gpio",
- + .id = -1,
- + .dev = {
- + .platform_data = &wbd111_leds_data,
- + },
- +};
- +
- +static struct sys_timer wbd111_timer = {
- + .init = gemini_timer_init,
- +};
- +
- +static void __init wbd111_init(void)
- +{
- + gemini_gpio_init();
- + platform_register_uart();
- + platform_register_watchdog();
- + platform_register_pflash(SZ_8M, NULL, 0);
- + platform_device_register(&wbd111_leds_device);
- + platform_device_register(&wbd111_keys_device);
- + platform_device_register(&wbd111_phy_device);
- + platform_register_ethernet(&gmac_data);
- +}
- +
- +MACHINE_START(WBD111, "Wiliboard WBD-111")
- + .phys_io = 0x7fffc000,
- + .io_pg_offst = ((0xffffc000) >> 18) & 0xfffc,
- + .boot_params = 0x100,
- + .map_io = gemini_map_io,
- + .init_irq = gemini_init_irq,
- + .timer = &wbd111_timer,
- + .init_machine = wbd111_init,
- +MACHINE_END
- --- a/arch/arm/mach-gemini/Kconfig
- +++ b/arch/arm/mach-gemini/Kconfig
- @@ -16,6 +16,13 @@ config MACH_RUT100
- Say Y here if you intend to run this kernel on a
- Teltonika 3G Router RUT100.
-
- +config MACH_WBD111
- + bool "Wiliboard WBD-111"
- + select GEMINI_MEM_SWAP
- + help
- + Say Y here if you intend to run this kernel on a
- + Wiliboard WBD-111.
- +
- endmenu
-
- config GEMINI_MEM_SWAP
- --- a/arch/arm/mach-gemini/Makefile
- +++ b/arch/arm/mach-gemini/Makefile
- @@ -11,3 +11,4 @@ obj-$(CONFIG_PCI) += pci.o
- # Board-specific support
- obj-$(CONFIG_MACH_NAS4220B) += board-nas4220b.o
- obj-$(CONFIG_MACH_RUT100) += board-rut1xx.o
- +obj-$(CONFIG_MACH_WBD111) += board-wbd111.o
|