• mt7981支持leds驱动 - 修改5g led为普通led


    一. 前言

            由于工作中需要驱动mt7981的gpio,所以研究了下怎么使用mt7981的leds驱动子系统,记录如下文。

    二. 将5g wifi灯复用为普通GPIO

    1. 查看drivers/pinctrl/mediatek/pinctrl-mt7981.c

    1. static const struct group_desc mt7981_groups[] = {
    2. ......
    3. /* @GPIO(35): WF5G_LED(1) */
    4. PINCTRL_PIN_GROUP("wf5g_led1", mt7981_wf5g_led1),
    5. ......
    6. };
    1. ......
    2. static const char *mt7981_led_groups[] = { "gbe_led0", "gbe_led1", "wf2g_led0",
    3. "wf2g_led1", "wf5g_led0", "wf5g_led1", };
    4. ......
    1. static const struct function_desc mt7981_functions[] = {
    2. ......
    3. {"led", mt7981_led_groups, ARRAY_SIZE(mt7981_led_groups)},
    4. ......
    5. };

    三. 修改设备树

    修改arch/arm64/boot/dts/mediatek/mt7981-spim-nor-rfb.dts文件

    1. 修改"wf5g_led1" pin的复用关系为普通的GPIO。"led"表示mt7981_functions数组中的一项,"wf5g_led1"为mt7981_led_groups数组中的一项。

    1. &pio {
    2.  ......
    3.         ledc_pins: led-pins {
    4.             mux {
    5.                 function = "led";
    6.                 groups = "wf5g_led1";
    7.             };
    8.     };
    9. };

    2. 添加leds项,<&pio 35 0>表示普通wifi-led为gpio35。

    1. / {
    2. model = "MediaTek MT7981 RFB";
    3. compatible = "mediatek,mt7981-spim-nor-rfb";
    4. chosen {
    5. bootargs = "console=ttyS0,115200n1 loglevel=8 \
    6. earlycon=uart8250,mmio32,0x11002000";
    7. };
    8. memory {
    9. // fpga ddr2: 128MB*2
    10. reg = <0 0x40000000 0 0x10000000>;
    11. };
    12. leds {
    13. compatible = "gpio-leds";
    14. wifi-led {
    15. label = "wifi-led";
    16. gpios = <&pio 35 0>;
    17. };
    18. };
    19. };

            如上是通过参考mt7622的dts文件修改的。        

    四. 修改内核配置选项

    1. 修改内核的配置文件,添加如下选项

    1. CONFIG_LEDS_CLASS=y
    2. LEDS_TRIGGERS=y
    3. CONFIG_LEDS_TRIGGER_TIMER=y
    4. CONFIG_LEDS_TRIGGER_ONESHOT=y
    5. CONFIG_LEDS_TRIGGER_HEARTBEAT=y

    CONFIG_LEDS_CLASS表示可以通过sysfs文件系统控制led的状态。

    五.  查看结果

    1. / # ls /sys/class/leds/
    2. wifi-led
    3. / # ls /sys/class/leds/wifi-led/
    4. brightness device subsystem
    5. delay_off max_brightness trigger
    6. delay_on power uevent

    六. 总结

            本文通过简单的介绍了mt7981如何支持leds驱动。

  • 相关阅读:
    vue-router源码分析(上)
    一键自动化数据分析!快来看看这些宝藏工具库
    对本地存储的有效期的理解
    PHP的学习入门建议
    带宽储备能力超100 Tbps,华为云CDN保障平台从容应对流量高峰
    【samba】Ubuntu20.04安装并配置Samba服务
    Java.lang ClassLoader findClass()方法具有什么功能呢?
    C# 构造函数
    Golang——通过实例了解并解决CORS跨域问题
    第三天:配置+运行代码+改个保存键
  • 原文地址:https://blog.csdn.net/to_be_better_wen/article/details/132841973