linux/arch/arm/mach-gemini/board-rut1xx.c
<<
>>
Prefs
   1/*
   2 *  Support for Teltonika RUT1xx
   3 *
   4 *  Copyright (C) 2008-2009 Paulius Zaleckas <paulius.zaleckas@teltonika.lt>
   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/gpio_keys.h>
  17#include <linux/sizes.h>
  18
  19#include <asm/mach-types.h>
  20#include <asm/mach/arch.h>
  21#include <asm/mach/time.h>
  22
  23#include "common.h"
  24
  25static struct gpio_keys_button rut1xx_keys[] = {
  26        {
  27                .code           = KEY_SETUP,
  28                .gpio           = 60,
  29                .active_low     = 1,
  30                .desc           = "Reset to defaults",
  31                .type           = EV_KEY,
  32        },
  33};
  34
  35static struct gpio_keys_platform_data rut1xx_keys_data = {
  36        .buttons        = rut1xx_keys,
  37        .nbuttons       = ARRAY_SIZE(rut1xx_keys),
  38};
  39
  40static struct platform_device rut1xx_keys_device = {
  41        .name   = "gpio-keys",
  42        .id     = -1,
  43        .dev    = {
  44                .platform_data = &rut1xx_keys_data,
  45        },
  46};
  47
  48static struct gpio_led rut100_leds[] = {
  49        {
  50                .name                   = "Power",
  51                .default_trigger        = "heartbeat",
  52                .gpio                   = 17,
  53        },
  54        {
  55                .name                   = "GSM",
  56                .default_trigger        = "default-on",
  57                .gpio                   = 7,
  58                .active_low             = 1,
  59        },
  60};
  61
  62static struct gpio_led_platform_data rut100_leds_data = {
  63        .num_leds       = ARRAY_SIZE(rut100_leds),
  64        .leds           = rut100_leds,
  65};
  66
  67static struct platform_device rut1xx_leds = {
  68        .name   = "leds-gpio",
  69        .id     = -1,
  70        .dev    = {
  71                .platform_data = &rut100_leds_data,
  72        },
  73};
  74
  75static void __init rut1xx_init(void)
  76{
  77        gemini_gpio_init();
  78        platform_register_uart();
  79        platform_register_pflash(SZ_8M, NULL, 0);
  80        platform_device_register(&rut1xx_leds);
  81        platform_device_register(&rut1xx_keys_device);
  82        platform_register_rtc();
  83}
  84
  85MACHINE_START(RUT100, "Teltonika RUT100")
  86        .atag_offset    = 0x100,
  87        .map_io         = gemini_map_io,
  88        .init_irq       = gemini_init_irq,
  89        .init_time      = gemini_timer_init,
  90        .init_machine   = rut1xx_init,
  91        .restart        = gemini_restart,
  92MACHINE_END
  93