가능하면 부트 로더에서 GPIO의 기본 상태를 높게 또는 낮게 만들 수 있습니다. 또는 Linux 커널 및 장치 트리의 다음 변경 사항을 참조하십시오.
: 아치/XXX/부팅/DTS/xxxx.dts
[email protected] {
label = "evmsk:green:heartbeat";
gpios = <&gpio1 7 0>;
linux,default-trigger = "heartbeat";
default-state = "off";
};
: 드라이버/LED에/LED를-gpio.c
state = of_get_property(child, "default-state", NULL);
if (state) {
if (!strcmp(state, "keep"))
led.default_state = LEDS_GPIO_DEFSTATE_KEEP;
else if (!strcmp(state, "on"))
led.default_state = LEDS_GPIO_DEFSTATE_ON;
else
led.default_state = LEDS_GPIO_DEFSTATE_OFF;
}
ret = gpio_direction_output(led_dat->gpio, led_dat->active_low^state);
프로젝트 * 메타 ACPI *이 Github에서에있다 여기에서 ACPI를 통해 GPIO 라인을 조작하는 방법을 찾을 수 있습니다. 참고로 언급 한 방법으로 문제를 완전히 해결할 수는 없으며 기본적으로 UEFI 응용 프로그램을 작성하고 실행하거나 부트 로더를 해킹해야합니다 (UEFI에서 Linux는 UEFI 응용 프로그램으로도로드 될 수 있습니다). – 0andriy