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 sys_timer ib4220b_timer = {
  35        .init   = gemini_timer_init,
  36};
  37
  38static struct gpio_led ib4220b_leds[] = {
  39        {
  40                .name                   = "nas4220b:orange:hdd",
  41                .default_trigger        = "none",
  42                .gpio                   = 60,
  43        },
  44        {
  45                .name                   = "nas4220b:green:os",
  46                .default_trigger        = "heartbeat",
  47                .gpio                   = 62,
  48        },
  49};
  50
  51static struct gpio_led_platform_data ib4220b_leds_data = {
  52        .num_leds       = ARRAY_SIZE(ib4220b_leds),
  53        .leds           = ib4220b_leds,
  54};
  55
  56static struct platform_device ib4220b_led_device = {
  57        .name   = "leds-gpio",
  58        .id     = -1,
  59        .dev    = {
  60                .platform_data = &ib4220b_leds_data,
  61        },
  62};
  63
  64static struct gpio_keys_button ib4220b_keys[] = {
  65        {
  66                .code           = KEY_SETUP,
  67                .gpio           = 61,
  68                .active_low     = 1,
  69                .desc           = "Backup Button",
  70                .type           = EV_KEY,
  71        },
  72        {
  73                .code           = KEY_RESTART,
  74                .gpio           = 63,
  75                .active_low     = 1,
  76                .desc           = "Softreset Button",
  77                .type           = EV_KEY,
  78        },
  79};
  80
  81static struct gpio_keys_platform_data ib4220b_keys_data = {
  82        .buttons        = ib4220b_keys,
  83        .nbuttons       = ARRAY_SIZE(ib4220b_keys),
  84};
  85
  86static struct platform_device ib4220b_key_device = {
  87        .name   = "gpio-keys",
  88        .id     = -1,
  89        .dev    = {
  90                .platform_data = &ib4220b_keys_data,
  91        },
  92};
  93
  94static void __init ib4220b_init(void)
  95{
  96        gemini_gpio_init();
  97        platform_register_uart();
  98        platform_register_pflash(SZ_16M, NULL, 0);
  99        platform_device_register(&ib4220b_led_device);
 100        platform_device_register(&ib4220b_key_device);
 101}
 102
 103MACHINE_START(NAS4220B, "Raidsonic NAS IB-4220-B")
 104        .boot_params    = 0x100,
 105        .map_io         = gemini_map_io,
 106        .init_irq       = gemini_init_irq,
 107        .timer          = &ib4220b_timer,
 108        .init_machine   = ib4220b_init,
 109MACHINE_END
 110