All pastes #435148 Raw Edit

Something

public c v1 · immutable
·published 2007-04-11 20:07 UTC
rendered paste body
/* * LEDs support for the HP iPaq hx4700 * * Copyright (c) 2006  Anton Vorontsov <cbou@mail.ru> * * 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. * */#include <linux/kernel.h>#include <linux/init.h>#include <linux/platform_device.h>#include <linux/leds.h>#include <linux/soc/asic3_base.h>#include <asm/hardware/ipaq-asic3.h>#include <asm/mach-types.h>#include <asm/hardware/asic3_leds.h>#include <asm/arch/htcblueangel-asic.h>DEFINE_LED_TRIGGER_SHARED_GLOBAL(blueangel_radio_trig);EXPORT_LED_TRIGGER_SHARED(blueangel_radio_trig);extern struct platform_device blueangel_asic3;static struct asic3_led blueangel_leds[] = {	{		.led_cdev  = {			.name	        = "blueangel:orange",			.default_trigger = "blueangel-charging",		},		.hw_num = 0,	},	{		.led_cdev  = {			.name	         = "blueangel:green",			.default_trigger = "blueangel-chargefull",		},		.hw_num = 1,	},	{		.led_cdev  = {			.name	         = "blueangel:red",			.default_trigger = "blueangel-radio",		},		.hw_num = 2,	},	{		.led_cdev  = {			.name	         = "blueangel:phonebuttons",			.default_trigger = "blueangel-phonebuttons",		},		.hw_num = -1,		.gpio_num = ('B'-'A')*16+GPIOB_PHONEL_PWR_ON,	},	{		.led_cdev  = {			.name	         = "blueangel:vibra",			.default_trigger = "blueangel-vibra",		},		.hw_num = -1,		.gpio_num = ('B'-'A')*16+GPIOB_VIBRA_PWR_ON,	},	{		.led_cdev  = {			.name	         = "blueangel:kbdbacklight",			.default_trigger = "blueangel-kbdbacklight",		},		.hw_num = -1,		.gpio_num = ('C'-'A')*16+GPIOC_KEYBL_PWR_ON,	},};void blueangel_leds_release(struct device *dev){	return;}staticstruct asic3_leds_machinfo blueangel_leds_machinfo = {	.num_leds = ARRAY_SIZE(blueangel_leds),	.leds = blueangel_leds,	.asic3_pdev = &blueangel_asic3,};staticstruct platform_device blueangel_leds_pdev = {	.name = "asic3-leds",	.dev = {		.platform_data = &blueangel_leds_machinfo,		.release = blueangel_leds_release,	},};staticint __init blueangel_leds_init(void){	int ret;	printk("blueangel LEDs Driver\n");	led_trigger_register_shared("blueangel-radio", &blueangel_radio_trig);		ret = asic3_leds_register();	if (ret) goto asic3_leds_failed;	ret = platform_device_register(&blueangel_leds_pdev);	if (ret) goto platform_device_failed;		goto success;platform_device_failed:	asic3_leds_unregister();asic3_leds_failed:	led_trigger_unregister_shared(blueangel_radio_trig);	printk("blueangel LEDs Driver failed to init");success:	return ret;}staticvoid __exit blueangel_leds_exit(void){	led_trigger_unregister_shared(blueangel_radio_trig);	platform_device_unregister(&blueangel_leds_pdev);	asic3_leds_unregister();	return;}module_init(blueangel_leds_init);module_exit(blueangel_leds_exit);MODULE_AUTHOR("Anton Vorontsov <cbou@mail.ru>");MODULE_DESCRIPTION("blueangel LEDs driver");MODULE_LICENSE("GPL");