感谢同事jack,否则这点修改得花一部分时间了
系统灯不亮,即要修改GPIO,刚开始以为挺简单的,因为设备树文件前面也分析几次,看来是自己轻视了
这次有个关键的东西,pinctrl,现在还是比较迷糊。而DTS文件的内容也要深入理解了。
1、分析原理图和datasheet,找到系统灯的GPIO是38,要低电平点亮,即gpios = <&gpio1 14 0>;在dts文件增加相关代码即可。
2、在dtsi文件发现,发现gpio1居然status = "disabled";,删掉status = "disabled",即可
3、编译发现,结果还是不亮,在diag.sh里,增加对应开发板的status_led=" ",这样就OK了。
但是这个LED驱动其实还是不咋懂,看了简单一些东西,如下:
1.在leds-gpio.c:里面有
static const struct of_device_id of_gpio_leds_match[] = {
{ .compatible = "gpio-leds", },
{},
};
这个函数,就跟DTS文件相关联了。
2.cat /sys/kernel/debug/gpio 可以查看GPIO状态
3.在mt76**.c里有static struct rt2880_pmx_func refclk_grp[] = { FUNC("spi refclk", 0, 37, 3) };这样一句,即修改在DTS文件里ralink,group = "spi refclk"