led子系统

led-class.c

/driver/led/led-class.c led_classdev接口
注册:

int led_classdev_register(struct device *parent, struct led_classdev *led_cdev){
}

注销:

void led_classdev_unregister(struct led_classdev *led_cdev)

挂起:

void led_classdev_suspend(struct led_classdev *led_cdev)

恢复:

void led_classdev_resume(struct led_classdev *led_cdev)

显示亮度:

led_brightness_show

设置亮度:

led_brightness_store

读取触发器名字:

led_trigger_show

指定触发器名字

led_trigger_store

led-core.c

两个接口
控制led的闪烁以及闪烁的时间

void led_blink_set(struct led_classdev *led_cdev,unsigned long *delay_on,unsigned long *delay_off)

设置led的亮灭

void led_brightness_set(struct led_classdev *led_cdev,enum led_brightness brightness)

声明了led的链表和锁
led_classdev_register注册的struct led_classdev加入leds_list链表,这个链表定义在driver/leds/led-core.c。

led-triggers.c

注册led_classdev时,设置trigger会用到led-triggers.c里面的led_trigger_set_default函数
注册触发器

int led_trigger_register(struct led_trigger *trigger)

注销触发器

void led_trigger_unregister(struct led_trigger *trigger)

设置触发器上所有的led为某个亮度

void led_trigger_event(struct led_trigger *trigger, enum led_brightness brightness)

ledtrig-default-on.c用于设置led为最大亮度
ledtrig-heartbeat.c通过定时来实现类似于心跳的led灯

led-gpio

gpio led 设备结构

struct gpio_led {
}

驱动加载后probe

gpio_led_probe() //驱动和设备匹配         

申请gpio, 初始化设备

create_gpio_led() //获取dts的gpio

建立sys接口

led_classdev_register(parent, &led_dat->cdev);

平台总线实现:

platform_set_drvdata(pdev, priv);

驱动

static struct platform_driver gpio_led_driver = {
}

调试

echo 0 > /sys/bus/platform/devices/leds/leds/brightness
echo 255 > /sys/bus/platform/devices/leds/leds/brightness
cat /sys/bus/platform/devices/leds/leds/trigger
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值