linux/arch/arm/mach-gemini/board-nas4220b.c
<<
>>
Prefs
   1/*
   2 *  Support for Raidsonic NAS-4220-B
   3 *
   4 *  Copyright (C) 2009 Janos Laube <janos.dev@gmail.com>
   5 *
   6 * based on rut1xx.c
   7 *  Copyright (C) 2008 Paulius Zaleckas <paulius.zaleckas@teltonika.lt>
   8 *
   9 * This program is free software; you can redistribute it and/or modify
  10 * it under the terms of the GNU General Public License as published by
  11 * the Free Software Foundation; either version 2 of the License, or
  12 * (at your option) any later version.
  13 */
  14
  15#include <linux/kernel.h>
  16#include <linux/init.h>
  17#include <linux/platform_device.h>
  18#include <linux/leds.h>
  19#include <linux/input.h>
  20#include <linux/gpio_keys.h>
  21#include <linux/mdio-gpio.h>
  22#include <linux/io.h>
  23
  24#include <asm/setup.h>
  25#include <asm/mach-types.h>
  26#include <asm/mach/arch.h>
  27#include <asm/mach/time.h>
  28
  29#include <mach/hardware.h>
  30#include <mach/global_reg.h>
  31
  32#include "common.h"
  33
  34static struct gpio_led ib4220b_leds[] = {
  35        {
  36                .name                   = "nas4220b:orange:hdd",
  37                .default_trigger        = "none",
  38                .gpio                   = 60,
  39        },
  40        {
  41                .name                   = "nas4220b:green:os",
  42                .default_trigger        = "heartbeat",
  43                .gpio                   = 62,
  44        },
  45};
  46
  47static struct gpio_led_platform_data ib4220b_leds_data = {
  48        .num_leds       = ARRAY_SIZE(ib4220b_leds),
  49        .leds           = ib4220b_leds,
  50};
  51
  52static struct platform_device ib4220b_led_device = {
  53        .name   = "leds-gpio",
  54        .id     = -1,
  55        .dev    = {
  56                .platform_data = &ib4220b_leds_data,
  57        },
  58};
  59
  60static struct gpio_keys_button ib4220b_keys[] = {
  61        {
  62                .code           = KEY_SETUP,
  63                .gpio           = 61,
  64                .active_low     = 1,
  65                .desc           = "Backup Button",
  66                .type           = EV_KEY,
  67        },
  68        {
  69                .code           = KEY_RESTART,
  70                .gpio           = 63,
  71                .active_low     = 1,
  72                .desc           = "Softreset Button",
  73                .type           = EV_KEY,
  74        },
  75};
  76
  77static struct gpio_keys_platform_data ib4220b_keys_data = {
  78        .buttons        = ib4220b_keys,
  79        .nbuttons       = ARRAY_SIZE(ib4220b_keys),
  80};
  81
  82static struct platform_device ib4220b_key_device = {
  83        .name   = "gpio-keys",
  84        .id     = -1,
  85        .dev    = {
  86                .platform_data = &ib4220b_keys_data,
  87        },
  88};
  89
  90static void __init ib4220b_init(void)
  91{
  92        gemini_gpio_init();
  93        platform_register_uart();
  94        platform_register_pflash(SZ_16M, NULL, 0);
  95        platform_device_register(&ib4220b_led_device);
  96        platform_device_register(&ib4220b_key_device);
  97        platform_register_rtc();
  98}
  99
 100MACHINE_START(NAS4220B, "Raidsonic NAS IB-4220-B")
 101        .atag_offset    = 0x100,
 102        .map_io         = gemini_map_io,
 103        .init_irq       = gemini_init_irq,
 104        .init_time      = gemini_timer_init,
 105        .init_machine   = ib4220b_init,
 106        .restart        = gemini_restart,
 107MACHINE_END
 108