sunxi: spl: fix SPL_SUNXI_LED active low configuration

The newly introduced Allwinner SPL LED "framework" defined a
SPL_SUNXI_LED_STATUS_STATE Kconfig symbol, that was supposed to denote
the active-low vs. active-high polarity of the LED. However this is
a bool symbol, so it will simply vanish if not defined, and we cannot use
it directly inside a C statement.

Filter the symbol through the IS_ENABLED() macro, which will return 0 if
the symbol is not defined, which is the intended value here.

Since the STATUS_STATE name is a bit confusing, rename it to ACTIVE_HIGH
on the way, because that is its real meaning. Also the LED_STATUS_BIT
name for the GPIO number is similarly a remnant of the old status LED
code, so rename it to LED_STATUS_GPIO as well.

This fixes configuring LEDs with active-low polarity.

Fixes: 256557dd9aae ("sunxi: remove usage of legacy LED API")
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Reviewed-by: Paul Kocialkowski <paulk@sys-base.io>
Closes: https://lore.kernel.org/u-boot/adfMQBPdntWy1KIq@shepard/
Acked-by: Quentin Schulz <quentin.schulz@cherry.de>
This commit is contained in:
Andre Przywara 2026-04-08 00:34:45 +02:00
parent 2472b31997
commit dc2427ab20
3 changed files with 9 additions and 8 deletions

View File

@ -1245,15 +1245,17 @@ config SPL_SUNXI_LED_STATUS
if SPL_SUNXI_LED_STATUS
config SPL_SUNXI_LED_STATUS_BIT
config SPL_SUNXI_LED_STATUS_GPIO
int "GPIO number for GPIO status LED"
help
GPIO number for the GPIO controlling the GPIO status LED in SPL.
config SPL_SUNXI_LED_STATUS_STATE
bool "GPIO status LED initial state is on"
config SPL_SUNXI_LED_STATUS_ACTIVE_HIGH
bool "GPIO status LED is active high"
default y
help
Whether the initial state of the status LED in SPL must be on or off.
Whether the GPIO of the status LED must be set high or low to turn
the LED on.
endif # SPL_SUNXI_LED_STATUS

View File

@ -563,8 +563,8 @@ static void sunxi_spl_store_dram_size(phys_addr_t dram_size)
static void status_led_init(void)
{
#if CONFIG_IS_ENABLED(SUNXI_LED_STATUS)
unsigned int state = CONFIG_SPL_SUNXI_LED_STATUS_STATE;
unsigned int gpio = CONFIG_SPL_SUNXI_LED_STATUS_BIT;
unsigned int state = IS_ENABLED(CONFIG_SPL_SUNXI_LED_STATUS_ACTIVE_HIGH);
unsigned int gpio = CONFIG_SPL_SUNXI_LED_STATUS_GPIO;
gpio_request(gpio, "gpio_led");
gpio_direction_output(gpio, state);

View File

@ -9,8 +9,7 @@ CONFIG_DRAM_ZQ=3881949
CONFIG_MMC_SUNXI_SLOT_EXTRA=2
CONFIG_PINEPHONE_DT_SELECTION=y
CONFIG_SPL_SUNXI_LED_STATUS=y
CONFIG_SPL_SUNXI_LED_STATUS_BIT=114
CONFIG_SPL_SUNXI_LED_STATUS_STATE=y
CONFIG_SPL_SUNXI_LED_STATUS_GPIO=114
# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
CONFIG_CMD_PSTORE=y
CONFIG_CMD_PSTORE_MEM_ADDR=0x61000000