leds-h1940.c

来自「linux 内核源代码」· C语言 代码 · 共 164 行

C
164
字号
/* * drivers/leds/leds-h1940.c * Copyright (c) Arnaud Patard <arnaud.patard@rtp-net.org> * * 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. * * H1940 leds driver * */#include <linux/module.h>#include <linux/platform_device.h>#include <linux/delay.h>#include <linux/string.h>#include <linux/ctype.h>#include <linux/leds.h>#include <asm/arch/regs-gpio.h>#include <asm/hardware.h>#include <asm/arch/h1940-latch.h>/* * Green led. */void h1940_greenled_set(struct led_classdev *led_dev, enum led_brightness value){	switch (value) {		case LED_HALF:			h1940_latch_control(0,H1940_LATCH_LED_FLASH);			s3c2410_gpio_setpin(S3C2410_GPA7,1);			break;		case LED_FULL:			h1940_latch_control(0,H1940_LATCH_LED_GREEN);			s3c2410_gpio_setpin(S3C2410_GPA7,1);			break;		default:		case LED_OFF:			h1940_latch_control(H1940_LATCH_LED_FLASH,0);			h1940_latch_control(H1940_LATCH_LED_GREEN,0);			s3c2410_gpio_setpin(S3C2410_GPA7,0);			break;	}}static struct led_classdev h1940_greenled = {	.name			= "h1940:green",	.brightness_set		= h1940_greenled_set,	.default_trigger	= "h1940-charger",};/* * Red led. */void h1940_redled_set(struct led_classdev *led_dev, enum led_brightness value){	switch (value) {		case LED_HALF:			h1940_latch_control(0,H1940_LATCH_LED_FLASH);			s3c2410_gpio_setpin(S3C2410_GPA1,1);			break;		case LED_FULL:			h1940_latch_control(0,H1940_LATCH_LED_RED);			s3c2410_gpio_setpin(S3C2410_GPA1,1);			break;		default:		case LED_OFF:			h1940_latch_control(H1940_LATCH_LED_FLASH,0);			h1940_latch_control(H1940_LATCH_LED_RED,0);			s3c2410_gpio_setpin(S3C2410_GPA1,0);			break;	}}static struct led_classdev h1940_redled = {	.name			= "h1940:red",	.brightness_set		= h1940_redled_set,	.default_trigger	= "h1940-charger",};/* * Blue led. * (it can only be blue flashing led) */void h1940_blueled_set(struct led_classdev *led_dev, enum led_brightness value){	if (value) {		/* flashing Blue */		h1940_latch_control(0,H1940_LATCH_LED_FLASH);		s3c2410_gpio_setpin(S3C2410_GPA3,1);	} else {		h1940_latch_control(H1940_LATCH_LED_FLASH,0);		s3c2410_gpio_setpin(S3C2410_GPA3,0);	}}static struct led_classdev h1940_blueled = {	.name			= "h1940:blue",	.brightness_set		= h1940_blueled_set,	.default_trigger	= "h1940-bluetooth",};static int __init h1940leds_probe(struct platform_device *pdev){	int ret;	ret = led_classdev_register(&pdev->dev, &h1940_greenled);	if (ret)		goto err_green;	ret = led_classdev_register(&pdev->dev, &h1940_redled);	if (ret)		goto err_red;	ret = led_classdev_register(&pdev->dev, &h1940_blueled);	if (ret)		goto err_blue;	return 0;err_blue:	led_classdev_unregister(&h1940_redled);err_red:	led_classdev_unregister(&h1940_greenled);err_green:	return ret;}static int h1940leds_remove(struct platform_device *pdev){	led_classdev_unregister(&h1940_greenled);	led_classdev_unregister(&h1940_redled);	led_classdev_unregister(&h1940_blueled);	return 0;}static struct platform_driver h1940leds_driver = {	.driver		= {		.name	= "h1940-leds",	},	.probe		= h1940leds_probe,	.remove		= h1940leds_remove,};static int __init h1940leds_init(void){	return platform_driver_register(&h1940leds_driver);}static void __exit h1940leds_exit(void){	platform_driver_unregister(&h1940leds_driver);}module_init(h1940leds_init);module_exit(h1940leds_exit);MODULE_AUTHOR("Arnaud Patard <arnaud.patard@rtp-net.org>");MODULE_DESCRIPTION("LED driver for the iPAQ H1940");MODULE_LICENSE("GPL");

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?