2019-05-19 15:08:20 +03:00
// SPDX-License-Identifier: GPL-2.0-only
2007-02-13 02:16:27 +03:00
/*
* Copyright 2006 - Florian Fainelli < florian @ openwrt . org >
*
* Control the Cobalt Qube / RaQ front LED
*/
2007-09-27 12:51:17 +04:00
# include <linux/io.h>
# include <linux/ioport.h>
# include <linux/leds.h>
2007-02-13 02:16:27 +03:00
# include <linux/module.h>
2007-09-27 12:51:17 +04:00
# include <linux/platform_device.h>
2007-02-13 02:16:27 +03:00
# include <linux/types.h>
2007-09-27 12:51:17 +04:00
# 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 ,
2008-03-09 23:59:57 +03:00
enum led_brightness brightness )
2007-02-13 02:16:27 +03:00
{
if ( brightness )
2007-09-27 12:51:17 +04:00
led_value = LED_FRONT_LEFT | LED_FRONT_RIGHT ;
2007-02-13 02:16:27 +03:00
else
2007-09-27 12:51:17 +04:00
led_value = ~ ( LED_FRONT_LEFT | LED_FRONT_RIGHT ) ;
writeb ( led_value , led_port ) ;
}
static struct led_classdev qube_front_led = {
2009-09-07 17:37:27 +04:00
. name = " qube::front " ,
2007-09-27 12:51:17 +04:00
. brightness = LED_FULL ,
. brightness_set = qube_front_led_set ,
2009-11-26 21:41:02 +03:00
. default_trigger = " default-on " ,
2007-09-27 12:51:17 +04:00
} ;
2012-11-19 22:23:02 +04:00
static int cobalt_qube_led_probe ( struct platform_device * pdev )
2007-09-27 12:51:17 +04:00
{
struct resource * res ;
res = platform_get_resource ( pdev , IORESOURCE_MEM , 0 ) ;
if ( ! res )
return - EBUSY ;
2012-10-23 16:21:27 +04:00
led_port = devm_ioremap ( & pdev - > dev , res - > start , resource_size ( res ) ) ;
2007-09-27 12:51:17 +04:00
if ( ! led_port )
return - ENOMEM ;
led_value = LED_FRONT_LEFT | LED_FRONT_RIGHT ;
writeb ( led_value , led_port ) ;
2015-09-04 13:12:01 +03:00
return devm_led_classdev_register ( & pdev - > dev , & qube_front_led ) ;
2007-02-13 02:16:27 +03:00
}
2007-09-27 12:51:17 +04:00
static struct platform_driver cobalt_qube_led_driver = {
. probe = cobalt_qube_led_probe ,
. driver = {
. name = " cobalt-qube-leds " ,
} ,
2007-02-13 02:16:27 +03:00
} ;
2012-01-11 03:09:24 +04:00
module_platform_driver ( cobalt_qube_led_driver ) ;
2007-02-13 02:16:27 +03:00
MODULE_LICENSE ( " GPL " ) ;
MODULE_DESCRIPTION ( " Front LED support for Cobalt Server " ) ;
MODULE_AUTHOR ( " Florian Fainelli <florian@openwrt.org> " ) ;
2012-01-11 03:09:24 +04:00
MODULE_ALIAS ( " platform:cobalt-qube-leds " ) ;