2012-05-30 21:02:49 +00:00
/*
* This file is subject to the terms and conditions of the GNU General Public
* License . See the file " COPYING " in the main directory of this archive
* for more details .
*
* Copyright ( C ) 2012 MIPS Technologies , Inc . All rights reserved .
2015-03-27 23:50:58 +01:00
* Copyright ( C ) 2015 Imagination Technologies , Inc .
2012-05-30 21:02:49 +00:00
*/
# include <linux/kernel.h>
# include <linux/module.h>
# include <linux/init.h>
# include <linux/platform_device.h>
# include <linux/leds.h>
# include <linux/err.h>
# include <linux/io.h>
2015-03-27 23:50:58 +01:00
# include <asm/mips-boards/sead3-addr.h>
2012-05-30 21:02:49 +00:00
static void sead3_pled_set ( struct led_classdev * led_cdev ,
enum led_brightness value )
{
2015-03-27 23:50:58 +01:00
writel ( value , ( void __iomem * ) SEAD3_CPLD_P_LED ) ;
2012-05-30 21:02:49 +00:00
}
static void sead3_fled_set ( struct led_classdev * led_cdev ,
enum led_brightness value )
{
2015-03-27 23:50:58 +01:00
writel ( value , ( void __iomem * ) SEAD3_CPLD_F_LED ) ;
2012-05-30 21:02:49 +00:00
}
static struct led_classdev sead3_pled = {
. name = " sead3::pled " ,
2013-01-22 12:59:30 +01:00
. brightness_set = sead3_pled_set ,
2013-03-25 11:54:17 -05:00
. flags = LED_CORE_SUSPENDRESUME ,
2012-05-30 21:02:49 +00:00
} ;
static struct led_classdev sead3_fled = {
. name = " sead3::fled " ,
2013-01-22 12:59:30 +01:00
. brightness_set = sead3_fled_set ,
2013-03-25 11:54:17 -05:00
. flags = LED_CORE_SUSPENDRESUME ,
2012-05-30 21:02:49 +00:00
} ;
static int sead3_led_probe ( struct platform_device * pdev )
{
int ret ;
ret = led_classdev_register ( & pdev - > dev , & sead3_pled ) ;
if ( ret < 0 )
return ret ;
ret = led_classdev_register ( & pdev - > dev , & sead3_fled ) ;
if ( ret < 0 )
led_classdev_unregister ( & sead3_pled ) ;
return ret ;
}
static int sead3_led_remove ( struct platform_device * pdev )
{
led_classdev_unregister ( & sead3_pled ) ;
led_classdev_unregister ( & sead3_fled ) ;
2015-08-03 17:04:01 +02:00
2012-05-30 21:02:49 +00:00
return 0 ;
}
static struct platform_driver sead3_led_driver = {
. probe = sead3_led_probe ,
. remove = sead3_led_remove ,
. driver = {
2015-03-27 21:57:36 +01:00
. name = " sead3-led " ,
2012-05-30 21:02:49 +00:00
} ,
} ;
2015-03-27 21:47:01 +01:00
module_platform_driver ( sead3_led_driver ) ;
2012-05-30 21:02:49 +00:00
MODULE_AUTHOR ( " Kristian Kielhofner <kris@krisk.org> " ) ;
MODULE_DESCRIPTION ( " SEAD3 LED driver " ) ;
MODULE_LICENSE ( " GPL " ) ;