mt7981 admite controlador de LED: modifique el LED de 5 g a LED normal

I. Introducción

        Como necesito manejar el gpio de mt7981 en el trabajo, estudié cómo usar el subsistema de controlador de LED de mt7981, que se registra de la siguiente manera.

2. Reutiliza la luz wifi de 5g como un GPIO normal

1. Ver controladores/pinctrl/mediatek/pinctrl-mt7981.c

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

3. Modificar el árbol de dispositivos.

Modifique el archivo arch/arm64/boot/dts/mediatek/mt7981-spim-nor-rfb.dts

1. Modifique la relación de multiplexación del pin "wf5g_led1" al GPIO normal. "led" representa un elemento de la matriz mt7981_functions y "wf5g_led1" es un elemento de la matriz mt7981_led_groups.

&pio {
 ......
        ledc_pins: led-pins {
            mux {
                function = "led";
                groups = "wf5g_led1";
            };
    };
};

 

2. Agregue el elemento LED, <&pio 35 0> significa que el LED wifi normal es gpio35.

/ {
        model = "MediaTek MT7981 RFB";
        compatible = "mediatek,mt7981-spim-nor-rfb";
        chosen {
                bootargs = "console=ttyS0,115200n1 loglevel=8  \
                                earlycon=uart8250,mmio32,0x11002000";
        };

        memory {
                // fpga ddr2: 128MB*2
                reg = <0 0x40000000 0 0x10000000>;
        };

    leds {
        compatible = "gpio-leds";
        wifi-led {
            label = "wifi-led";
            gpios = <&pio 35 0>;
        };
    };
};

        Lo anterior se modifica haciendo referencia al archivo dts de mt7622.        

4. Modificar las opciones de configuración del kernel

1. Modifique el archivo de configuración del kernel y agregue las siguientes opciones

CONFIG_LEDS_CLASS=y
LEDS_TRIGGERS=y
CONFIG_LEDS_TRIGGER_TIMER=y
CONFIG_LEDS_TRIGGER_ONESHOT=y
CONFIG_LEDS_TRIGGER_HEARTBEAT=y

CONFIG_LEDS_CLASS indica que el estado de los LED se puede controlar a través del sistema de archivos sysfs.

5. Ver resultados

/ # ls /sys/class/leds/
wifi-led

/ # ls /sys/class/leds/wifi-led/
brightness      device          subsystem
delay_off       max_brightness  trigger
delay_on        power           uevent

6. Resumen

        Este artículo presenta brevemente cómo mt7981 admite el controlador de LED.

Supongo que te gusta

Origin blog.csdn.net/to_be_better_wen/article/details/132841973
Recomendado
Clasificación