1/* 2 * Support for Wiliboard WBD-111 3 * 4 * Copyright (C) 2009 Imre Kaloz <kaloz@openwrt.org> 5 * 6 * This program is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation; either version 2 of the License, or 9 * (at your option) any later version. 10 */ 11#include <linux/kernel.h> 12#include <linux/init.h> 13#include <linux/platform_device.h> 14#include <linux/leds.h> 15#include <linux/input.h> 16#include <linux/skbuff.h> 17#include <linux/gpio_keys.h> 18#include <linux/mdio-gpio.h> 19#include <linux/mtd/mtd.h> 20#include <linux/mtd/partitions.h> 21#include <asm/mach-types.h> 22#include <asm/mach/arch.h> 23#include <asm/mach/time.h> 24 25 26#include "common.h" 27 28static struct gpio_keys_button wbd111_keys[] = { 29 { 30 .code = KEY_SETUP, 31 .gpio = 5, 32 .active_low = 1, 33 .desc = "reset", 34 .type = EV_KEY, 35 }, 36}; 37 38static struct gpio_keys_platform_data wbd111_keys_data = { 39 .buttons = wbd111_keys, 40 .nbuttons = ARRAY_SIZE(wbd111_keys), 41}; 42 43static struct platform_device wbd111_keys_device = { 44 .name = "gpio-keys", 45 .id = -1, 46 .dev = { 47 .platform_data = &wbd111_keys_data, 48 }, 49}; 50 51static struct gpio_led wbd111_leds[] = { 52 { 53 .name = "L3red", 54 .gpio = 1, 55 }, 56 { 57 .name = "L4green", 58 .gpio = 2, 59 }, 60 { 61 .name = "L4red", 62 .gpio = 3, 63 }, 64 { 65 .name = "L3green", 66 .gpio = 5, 67 }, 68}; 69 70static struct gpio_led_platform_data wbd111_leds_data = { 71 .num_leds = ARRAY_SIZE(wbd111_leds), 72 .leds = wbd111_leds, 73}; 74 75static struct platform_device wbd111_leds_device = { 76 .name = "leds-gpio", 77 .id = -1, 78 .dev = { 79 .platform_data = &wbd111_leds_data, 80 }, 81}; 82 83static struct mtd_partition wbd111_partitions[] = { 84 { 85 .name = "RedBoot", 86 .offset = 0, 87 .size = 0x020000, 88 .mask_flags = MTD_WRITEABLE, 89 } , { 90 .name = "kernel", 91 .offset = 0x020000, 92 .size = 0x100000, 93 } , { 94 .name = "rootfs", 95 .offset = 0x120000, 96 .size = 0x6a0000, 97 } , { 98 .name = "VCTL", 99 .offset = 0x7c0000, 100 .size = 0x010000, 101 .mask_flags = MTD_WRITEABLE, 102 } , { 103 .name = "cfg", 104 .offset = 0x7d0000, 105 .size = 0x010000, 106 .mask_flags = MTD_WRITEABLE, 107 } , { 108 .name = "FIS", 109 .offset = 0x7e0000, 110 .size = 0x010000, 111 .mask_flags = MTD_WRITEABLE, 112 } 113}; 114#define wbd111_num_partitions ARRAY_SIZE(wbd111_partitions) 115 116static void __init wbd111_init(void) 117{ 118 gemini_gpio_init(); 119 platform_register_uart(); 120 platform_register_pflash(SZ_8M, wbd111_partitions, 121 wbd111_num_partitions); 122 platform_device_register(&wbd111_leds_device); 123 platform_device_register(&wbd111_keys_device); 124 platform_register_rtc(); 125} 126 127MACHINE_START(WBD111, "Wiliboard WBD-111") 128 .atag_offset = 0x100, 129 .map_io = gemini_map_io, 130 .init_irq = gemini_init_irq, 131 .init_time = gemini_timer_init, 132 .init_machine = wbd111_init, 133 .restart = gemini_restart, 134MACHINE_END 135