aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/leds
diff options
context:
space:
mode:
authorPhilip Prindeville <philipp@redfish-solutions.com>2012-03-05 18:05:15 -0500
committerIngo Molnar <mingo@elte.hu>2012-03-06 03:23:56 -0500
commitda4e3302949f4a702f1ddfefe067762232d363d5 (patch)
tree4495a9f21607a8605e61c06fcae044010e509fd2 /drivers/leds
parent373913b568cbfbefcee3263b98bd5a1a8b491f1b (diff)
x86/geode/net5501: Add platform driver for Soekris Engineering net5501
Add platform driver for the Soekris Engineering net5501 single-board computer. Probes well-known locations in ROM for BIOS signature to confirm correct platform. Registers 1 LED and 1 GPIO-based button (typically used for soft reset). Signed-off-by: Philip Prindeville <philipp@redfish-solutions.com> Acked-by: Alessandro Zummo <a.zummo@towertech.it> Cc: Richard Purdie <rpurdie@rpsys.net> Cc: Andres Salomon <dilinger@queued.net> Cc: Matthew Garrett <mjg@redhat.com> [ Removed Kconfig and Makefile detritus from drivers/leds/] Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Link: http://lkml.kernel.org/n/tip-jv5uf34996juqh5syes8mn4h@git.kernel.org Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'drivers/leds')
-rw-r--r--drivers/leds/Kconfig10
-rw-r--r--drivers/leds/Makefile1
-rw-r--r--drivers/leds/leds-net5501.c97
3 files changed, 0 insertions, 108 deletions
diff --git a/drivers/leds/Kconfig b/drivers/leds/Kconfig
index 9ca28fced2b9..8c7a75d53101 100644
--- a/drivers/leds/Kconfig
+++ b/drivers/leds/Kconfig
@@ -89,16 +89,6 @@ config LEDS_NET48XX
89 This option enables support for the Soekris net4801 and net4826 error 89 This option enables support for the Soekris net4801 and net4826 error
90 LED. 90 LED.
91 91
92config LEDS_NET5501
93 tristate "LED Support for Soekris net5501 series Error LED"
94 depends on LEDS_TRIGGERS
95 depends on X86 && GPIO_CS5535
96 select LEDS_TRIGGER_DEFAULT_ON
97 default n
98 help
99 Add support for the Soekris net5501 board (detection, error led
100 and GPIO).
101
102config LEDS_FSG 92config LEDS_FSG
103 tristate "LED Support for the Freecom FSG-3" 93 tristate "LED Support for the Freecom FSG-3"
104 depends on LEDS_CLASS 94 depends on LEDS_CLASS
diff --git a/drivers/leds/Makefile b/drivers/leds/Makefile
index 1fc6875a8b20..6bcf4f695515 100644
--- a/drivers/leds/Makefile
+++ b/drivers/leds/Makefile
@@ -14,7 +14,6 @@ obj-$(CONFIG_LEDS_MIKROTIK_RB532) += leds-rb532.o
14obj-$(CONFIG_LEDS_S3C24XX) += leds-s3c24xx.o 14obj-$(CONFIG_LEDS_S3C24XX) += leds-s3c24xx.o
15obj-$(CONFIG_LEDS_AMS_DELTA) += leds-ams-delta.o 15obj-$(CONFIG_LEDS_AMS_DELTA) += leds-ams-delta.o
16obj-$(CONFIG_LEDS_NET48XX) += leds-net48xx.o 16obj-$(CONFIG_LEDS_NET48XX) += leds-net48xx.o
17obj-$(CONFIG_LEDS_NET5501) += leds-net5501.o
18obj-$(CONFIG_LEDS_WRAP) += leds-wrap.o 17obj-$(CONFIG_LEDS_WRAP) += leds-wrap.o
19obj-$(CONFIG_LEDS_COBALT_QUBE) += leds-cobalt-qube.o 18obj-$(CONFIG_LEDS_COBALT_QUBE) += leds-cobalt-qube.o
20obj-$(CONFIG_LEDS_COBALT_RAQ) += leds-cobalt-raq.o 19obj-$(CONFIG_LEDS_COBALT_RAQ) += leds-cobalt-raq.o
diff --git a/drivers/leds/leds-net5501.c b/drivers/leds/leds-net5501.c
deleted file mode 100644
index 0555d4709a7c..000000000000
--- a/drivers/leds/leds-net5501.c
+++ /dev/null
@@ -1,97 +0,0 @@
1/*
2 * Soekris board support code
3 *
4 * Copyright (C) 2008-2009 Tower Technologies
5 * Written by Alessandro Zummo <a.zummo@towertech.it>
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2
9 * as published by the Free Software Foundation.
10 */
11
12#include <linux/kernel.h>
13#include <linux/init.h>
14#include <linux/io.h>
15#include <linux/string.h>
16#include <linux/leds.h>
17#include <linux/platform_device.h>
18#include <linux/gpio.h>
19#include <linux/module.h>
20
21#include <asm/geode.h>
22
23static const struct gpio_led net5501_leds[] = {
24 {
25 .name = "error",
26 .gpio = 6,
27 .default_trigger = "default-on",
28 },
29};
30
31static struct gpio_led_platform_data net5501_leds_data = {
32 .num_leds = ARRAY_SIZE(net5501_leds),
33 .leds = net5501_leds,
34};
35
36static struct platform_device net5501_leds_dev = {
37 .name = "leds-gpio",
38 .id = -1,
39 .dev.platform_data = &net5501_leds_data,
40};
41
42static void __init init_net5501(void)
43{
44 platform_device_register(&net5501_leds_dev);
45}
46
47struct soekris_board {
48 u16 offset;
49 char *sig;
50 u8 len;
51 void (*init)(void);
52};
53
54static struct soekris_board __initdata boards[] = {
55 { 0xb7b, "net5501", 7, init_net5501 }, /* net5501 v1.33/1.33c */
56 { 0xb1f, "net5501", 7, init_net5501 }, /* net5501 v1.32i */
57};
58
59static int __init soekris_init(void)
60{
61 int i;
62 unsigned char *rombase, *bios;
63
64 if (!is_geode())
65 return 0;
66
67 rombase = ioremap(0xffff0000, 0xffff);
68 if (!rombase) {
69 printk(KERN_INFO "Soekris net5501 LED driver failed to get rombase");
70 return 0;
71 }
72
73 bios = rombase + 0x20; /* null terminated */
74
75 if (strncmp(bios, "comBIOS", 7))
76 goto unmap;
77
78 for (i = 0; i < ARRAY_SIZE(boards); i++) {
79 unsigned char *model = rombase + boards[i].offset;
80
81 if (strncmp(model, boards[i].sig, boards[i].len) == 0) {
82 printk(KERN_INFO "Soekris %s: %s\n", model, bios);
83
84 if (boards[i].init)
85 boards[i].init();
86 break;
87 }
88 }
89
90unmap:
91 iounmap(rombase);
92 return 0;
93}
94
95arch_initcall(soekris_init);
96
97MODULE_LICENSE("GPL");