1/* 2 * Support for Wiliboard WBD-222 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/mtd/mtd.h> 19#include <linux/mtd/partitions.h> 20#include <asm/mach-types.h> 21#include <asm/mach/arch.h> 22#include <asm/mach/time.h> 23 24 25#include "common.h" 26 27static struct gpio_keys_button wbd222_keys[] = { 28 { 29 .code = KEY_SETUP, 30 .gpio = 5, 31 .active_low = 1, 32 .desc = "reset", 33 .type = EV_KEY, 34 }, 35}; 36 37static struct gpio_keys_platform_data wbd222_keys_data = { 38 .buttons = wbd222_keys, 39 .nbuttons = ARRAY_SIZE(wbd222_keys), 40}; 41 42static struct platform_device wbd222_keys_device = { 43 .name = "gpio-keys", 44 .id = -1, 45 .dev = { 46 .platform_data = &wbd222_keys_data, 47 }, 48}; 49 50static struct gpio_led wbd222_leds[] = { 51 { 52 .name = "L3red", 53 .gpio = 1, 54 }, 55 { 56 .name = "L4green", 57 .gpio = 2, 58 }, 59 { 60 .name = "L4red", 61 .gpio = 3, 62 }, 63 { 64 .name = "L3green", 65 .gpio = 5, 66 }, 67}; 68 69static struct gpio_led_platform_data wbd222_leds_data = { 70 .num_leds = ARRAY_SIZE(wbd222_leds), 71 .leds = wbd222_leds, 72}; 73 74static struct platform_device wbd222_leds_device = { 75 .name = "leds-gpio", 76 .id = -1, 77 .dev = { 78 .platform_data = &wbd222_leds_data, 79 }, 80}; 81 82static struct mtd_partition wbd222_partitions[] = { 83 { 84 .name = "RedBoot", 85 .offset = 0, 86 .size = 0x020000, 87 .mask_flags = MTD_WRITEABLE, 88 } , { 89 .name = "kernel", 90 .offset = 0x020000, 91 .size = 0x100000, 92 } , { 93 .name = "rootfs", 94 .offset = 0x120000, 95 .size = 0x6a0000, 96 } , { 97 .name = "VCTL", 98 .offset = 0x7c0000, 99 .size = 0x010000, 100 .mask_flags = MTD_WRITEABLE, 101 } , { 102 .name = "cfg", 103 .offset = 0x7d0000, 104 .size = 0x010000, 105 .mask_flags = MTD_WRITEABLE, 106 } , { 107 .name = "FIS", 108 .offset = 0x7e0000, 109 .size = 0x010000, 110 .mask_flags = MTD_WRITEABLE, 111 } 112}; 113#define wbd222_num_partitions ARRAY_SIZE(wbd222_partitions) 114 115static void __init wbd222_init(void) 116{ 117 gemini_gpio_init(); 118 platform_register_uart(); 119 platform_register_pflash(SZ_8M, wbd222_partitions, 120 wbd222_num_partitions); 121 platform_device_register(&wbd222_leds_device); 122 platform_device_register(&wbd222_keys_device); 123 platform_register_rtc(); 124} 125 126MACHINE_START(WBD222, "Wiliboard WBD-222") 127 .atag_offset = 0x100, 128 .map_io = gemini_map_io, 129 .init_irq = gemini_init_irq, 130 .init_time = gemini_timer_init, 131 .init_machine = wbd222_init, 132 .restart = gemini_restart, 133MACHINE_END 134