📄 leds.h
字号:
/* * Driver model for leds and led triggers * * Copyright (C) 2005 John Lenz <lenz@cs.wisc.edu> * Copyright (C) 2005 Richard Purdie <rpurdie@openedhand.com> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * */#ifndef __LINUX_LEDS_H_INCLUDED#define __LINUX_LEDS_H_INCLUDED#include <linux/list.h>#include <linux/spinlock.h>struct device;struct class_device;/* * LED Core */enum led_brightness { LED_OFF = 0, LED_HALF = 127, LED_FULL = 255,};struct led_classdev { const char *name; int brightness; int flags;#define LED_SUSPENDED (1 << 0) /* Set LED brightness level */ void (*brightness_set)(struct led_classdev *led_cdev, enum led_brightness brightness); struct class_device *class_dev; struct list_head node; /* LED Device list */ char *default_trigger; /* Trigger to use */#ifdef CONFIG_LEDS_TRIGGERS /* Protects the trigger data below */ rwlock_t trigger_lock; struct led_trigger *trigger; struct list_head trig_list; void *trigger_data;#endif};extern int led_classdev_register(struct device *parent, struct led_classdev *led_cdev);extern void led_classdev_unregister(struct led_classdev *led_cdev);extern void led_classdev_suspend(struct led_classdev *led_cdev);extern void led_classdev_resume(struct led_classdev *led_cdev);/* * LED Triggers */#ifdef CONFIG_LEDS_TRIGGERS#define TRIG_NAME_MAX 50struct led_trigger { /* Trigger Properties */ const char *name; void (*activate)(struct led_classdev *led_cdev); void (*deactivate)(struct led_classdev *led_cdev); /* LEDs under control by this trigger (for simple triggers) */ rwlock_t leddev_list_lock; struct list_head led_cdevs; /* Link to next registered trigger */ struct list_head next_trig;};/* Registration functions for complex triggers */extern int led_trigger_register(struct led_trigger *trigger);extern void led_trigger_unregister(struct led_trigger *trigger);/* Registration functions for simple triggers */#define DEFINE_LED_TRIGGER(x) static struct led_trigger *x;#define DEFINE_LED_TRIGGER_GLOBAL(x) struct led_trigger *x;extern void led_trigger_register_simple(const char *name, struct led_trigger **trigger);extern void led_trigger_unregister_simple(struct led_trigger *trigger);extern void led_trigger_event(struct led_trigger *trigger, enum led_brightness event);#else/* Triggers aren't active - null macros */#define DEFINE_LED_TRIGGER(x)#define DEFINE_LED_TRIGGER_GLOBAL(x)#define led_trigger_register_simple(x, y) do {} while(0)#define led_trigger_unregister_simple(x) do {} while(0)#define led_trigger_event(x, y) do {} while(0)#endif/* Trigger specific functions */#ifdef CONFIG_LEDS_TRIGGER_IDE_DISKextern void ledtrig_ide_activity(void);#else#define ledtrig_ide_activity() do {} while(0)#endif#endif /* __LINUX_LEDS_H_INCLUDED */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -