aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/rose.h
Commit message (Expand)AuthorAge
* Linux-2.6.12-rc2v2.6.12-rc2Linus Torvalds2005-04-16
d9777100fdcf1140771b4e'>4276fd7349bf
2fea6f35c388
4276fd7349bf
2fea6f35c388
2fea6f35c388
4276fd7349bf






4d404fd5c517
2fea6f35c388

4276fd7349bf
2fea6f35c388
4276fd7349bf




db3f520738a8
4276fd7349bf

51de036ba388
4276fd7349bf

98ea1ea20cb7
4276fd7349bf







f87ef101056a
4276fd7349bf







f87ef101056a
4276fd7349bf


f87ef101056a
4276fd7349bf




678e8a6be911
4276fd7349bf


f87ef101056a
4276fd7349bf
4276fd7349bf

2fea6f35c388

4276fd7349bf

df07cf812681
4276fd7349bf



2fea6f35c388

892a8843fbef
2fea6f35c388



892a8843fbef
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89




                                                          



                         
                         
                                  
                        
 






                                                             
                                                              

                       
                                                             
            




                                                                
                                                

                                                     
                                               

  
                                                              







                                                             
                                                                            







                                                                    
                              


                 
         




                        
                                                               


                                                 
                     
                                

                 

 

                                                        
                                         



                                             

  
                                               



                                                          
                                          
/*
 * Copyright 2006 - Florian Fainelli <florian@openwrt.org>
 *
 * Control the Cobalt Qube/RaQ front LED
 */
#include <linux/init.h>
#include <linux/io.h>
#include <linux/ioport.h>
#include <linux/leds.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/types.h>

#define LED_FRONT_LEFT	0x01
#define LED_FRONT_RIGHT	0x02

static void __iomem *led_port;
static u8 led_value;

static void qube_front_led_set(struct led_classdev *led_cdev,
			       enum led_brightness brightness)
{
	if (brightness)
		led_value = LED_FRONT_LEFT | LED_FRONT_RIGHT;
	else
		led_value = ~(LED_FRONT_LEFT | LED_FRONT_RIGHT);
	writeb(led_value, led_port);
}

static struct led_classdev qube_front_led = {
	.name			= "qube::front",
	.brightness		= LED_FULL,
	.brightness_set		= qube_front_led_set,
	.default_trigger	= "default-on",
};

static int cobalt_qube_led_probe(struct platform_device *pdev)
{
	struct resource *res;
	int retval;

	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
	if (!res)
		return -EBUSY;

	led_port = devm_ioremap(&pdev->dev, res->start, resource_size(res));
	if (!led_port)
		return -ENOMEM;

	led_value = LED_FRONT_LEFT | LED_FRONT_RIGHT;
	writeb(led_value, led_port);

	retval = led_classdev_register(&pdev->dev, &qube_front_led);
	if (retval)
		goto err_null;

	return 0;

err_null:
	led_port = NULL;

	return retval;
}

static int cobalt_qube_led_remove(struct platform_device *pdev)
{
	led_classdev_unregister(&qube_front_led);

	if (led_port)
		led_port = NULL;

	return 0;
}

static struct platform_driver cobalt_qube_led_driver = {
	.probe	= cobalt_qube_led_probe,
	.remove	= cobalt_qube_led_remove,
	.driver	= {
		.name	= "cobalt-qube-leds",
		.owner	= THIS_MODULE,
	},
};

module_platform_driver(cobalt_qube_led_driver);

MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("Front LED support for Cobalt Server");
MODULE_AUTHOR("Florian Fainelli <florian@openwrt.org>");
MODULE_ALIAS("platform:cobalt-qube-leds");