From 9cc32bfa49d23a4d1bed9e6119255f2e78e20232 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Fri, 22 Apr 2022 15:15:53 +0200 Subject: dm: core: Add DM_FLAG_PROBE_AFTER_BIND flag Introduce DM_FLAG_PROBE_AFTER_BIND flag, which can be set by driver or uclass in .bind(), to indicate such driver instance should be probe()d once binding of all devices is complete. This is useful in case the driver determines that hardware initialization is mandatory on boot, and such initialization happens only in probe(). This also solves the inability to call device_probe() from .bind(). Signed-off-by: Marek Vasut Cc: Patrice Chotard Cc: Patrick Delaunay Cc: Sean Anderson Cc: Simon Glass Cc: Steven Lawrance Reviewed-by: Patrice Chotard Tested-by: Patrice Chotard --- include/dm/device.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'include') diff --git a/include/dm/device.h b/include/dm/device.h index b474888d025..5bdb10653f8 100644 --- a/include/dm/device.h +++ b/include/dm/device.h @@ -80,6 +80,9 @@ struct driver_info; */ #define DM_FLAG_VITAL (1 << 14) +/* Device must be probed after it was bound */ +#define DM_FLAG_PROBE_AFTER_BIND (1 << 15) + /* * One or multiple of these flags are passed to device_remove() so that * a selective device removal as specified by the remove-stage and the -- cgit v1.3.1 From 69245e406e919012d45d40f045f9b7369086ce17 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Fri, 22 Apr 2022 15:41:42 +0200 Subject: led: Drop led_default_state() This function is empty, drop it. Signed-off-by: Marek Vasut Cc: Patrice Chotard Cc: Patrick Delaunay Cc: Sean Anderson Cc: Simon Glass Cc: Steven Lawrance Reviewed-by: Patrice Chotard --- board/aristainetos/aristainetos.c | 1 - board/bosch/guardian/board.c | 3 --- board/dhelectronics/dh_stm32mp1/board.c | 3 --- board/gardena/smart-gateway-at91sam/board.c | 3 --- board/gardena/smart-gateway-mt7688/board.c | 3 --- board/gateworks/venice/venice.c | 2 -- board/k+p/kp_imx6q_tpc/kp_imx6q_tpc.c | 3 --- board/mscc/jr2/jr2.c | 4 ---- board/mscc/luton/luton.c | 4 ---- board/mscc/ocelot/ocelot.c | 4 ---- board/mscc/serval/serval.c | 4 ---- board/mscc/servalt/servalt.c | 4 ---- board/phytec/pcm052/pcm052.c | 3 --- board/sandbox/sandbox.c | 3 --- board/siemens/capricorn/board.c | 4 ---- board/st/stm32mp1/stm32mp1.c | 3 --- drivers/led/led-uclass.c | 6 ------ include/led.h | 9 --------- test/dm/led.c | 3 --- 19 files changed, 69 deletions(-) (limited to 'include') diff --git a/board/aristainetos/aristainetos.c b/board/aristainetos/aristainetos.c index 19af59606da..514cb60d5ba 100644 --- a/board/aristainetos/aristainetos.c +++ b/board/aristainetos/aristainetos.c @@ -418,7 +418,6 @@ int board_late_init(void) int x, y; int ret; - led_default_state(); splash_get_pos(&x, &y); bmp_display((ulong)&bmp_logo_bitmap[0], x, y); diff --git a/board/bosch/guardian/board.c b/board/bosch/guardian/board.c index 105b75e65e9..68f2744610b 100644 --- a/board/bosch/guardian/board.c +++ b/board/bosch/guardian/board.c @@ -327,9 +327,6 @@ int board_late_init(void) int ret; struct udevice *cdev; -#ifdef CONFIG_LED_GPIO - led_default_state(); -#endif set_bootmode_env(); ret = uclass_get_device(UCLASS_PANEL, 0, &cdev); diff --git a/board/dhelectronics/dh_stm32mp1/board.c b/board/dhelectronics/dh_stm32mp1/board.c index f44afb01e27..67273f90992 100644 --- a/board/dhelectronics/dh_stm32mp1/board.c +++ b/board/dhelectronics/dh_stm32mp1/board.c @@ -607,9 +607,6 @@ int board_init(void) board_init_fmc2(); - if (CONFIG_IS_ENABLED(LED)) - led_default_state(); - return 0; } diff --git a/board/gardena/smart-gateway-at91sam/board.c b/board/gardena/smart-gateway-at91sam/board.c index 3f402cfeee8..c6eb11e9326 100644 --- a/board/gardena/smart-gateway-at91sam/board.c +++ b/board/gardena/smart-gateway-at91sam/board.c @@ -24,9 +24,6 @@ int board_late_init(void) { at91_prepare_cpu_var(); - if (IS_ENABLED(CONFIG_LED)) - led_default_state(); - return 0; } diff --git a/board/gardena/smart-gateway-mt7688/board.c b/board/gardena/smart-gateway-mt7688/board.c index 8a3a6e34825..aa833a030fd 100644 --- a/board/gardena/smart-gateway-mt7688/board.c +++ b/board/gardena/smart-gateway-mt7688/board.c @@ -183,9 +183,6 @@ err_free: int board_late_init(void) { - if (IS_ENABLED(CONFIG_LED)) - led_default_state(); - factory_data_env_config(); return 0; diff --git a/board/gateworks/venice/venice.c b/board/gateworks/venice/venice.c index 4290a698077..f1efabb203d 100644 --- a/board/gateworks/venice/venice.c +++ b/board/gateworks/venice/venice.c @@ -128,8 +128,6 @@ int board_late_init(void) u8 enetaddr[6]; char fdt[64]; - led_default_state(); - /* Set board serial/model */ if (!env_get("serial#")) env_set_ulong("serial#", eeprom_get_serial()); diff --git a/board/k+p/kp_imx6q_tpc/kp_imx6q_tpc.c b/board/k+p/kp_imx6q_tpc/kp_imx6q_tpc.c index 110496d9950..e6877e4c070 100644 --- a/board/k+p/kp_imx6q_tpc/kp_imx6q_tpc.c +++ b/board/k+p/kp_imx6q_tpc/kp_imx6q_tpc.c @@ -137,9 +137,6 @@ int board_late_init(void) add_board_boot_modes(board_boot_modes); #endif - if (IS_ENABLED(CONFIG_LED)) - led_default_state(); - env_set("boardname", "kp-tpc"); env_set("boardsoc", "imx6q"); return 0; diff --git a/board/mscc/jr2/jr2.c b/board/mscc/jr2/jr2.c index 1c516aacd88..6abf08bd24c 100644 --- a/board/mscc/jr2/jr2.c +++ b/board/mscc/jr2/jr2.c @@ -30,10 +30,6 @@ int board_early_init_r(void) /* Address of boot parameters */ gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE; - /* LED setup */ - if (IS_ENABLED(CONFIG_LED)) - led_default_state(); - return 0; } diff --git a/board/mscc/luton/luton.c b/board/mscc/luton/luton.c index 038902d08a9..76e3f2ebbce 100644 --- a/board/mscc/luton/luton.c +++ b/board/mscc/luton/luton.c @@ -31,10 +31,6 @@ int board_early_init_r(void) /* Address of boot parameters */ gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE; - /* LED setup */ - if (IS_ENABLED(CONFIG_LED)) - led_default_state(); - return 0; } diff --git a/board/mscc/ocelot/ocelot.c b/board/mscc/ocelot/ocelot.c index c462890bb85..2a75ec281cb 100644 --- a/board/mscc/ocelot/ocelot.c +++ b/board/mscc/ocelot/ocelot.c @@ -79,10 +79,6 @@ int board_early_init_r(void) /* Address of boot parameters */ gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE; - /* LED setup */ - if (IS_ENABLED(CONFIG_LED)) - led_default_state(); - return 0; } diff --git a/board/mscc/serval/serval.c b/board/mscc/serval/serval.c index 94c1c42b79b..87e79076574 100644 --- a/board/mscc/serval/serval.c +++ b/board/mscc/serval/serval.c @@ -24,10 +24,6 @@ int board_early_init_r(void) /* Address of boot parameters */ gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE; - /* LED setup */ - if (IS_ENABLED(CONFIG_LED)) - led_default_state(); - return 0; } diff --git a/board/mscc/servalt/servalt.c b/board/mscc/servalt/servalt.c index 252d8e3156d..bd8c7e8b700 100644 --- a/board/mscc/servalt/servalt.c +++ b/board/mscc/servalt/servalt.c @@ -24,10 +24,6 @@ int board_early_init_r(void) /* Address of boot parameters */ gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE; - /* LED setup */ - if (IS_ENABLED(CONFIG_LED)) - led_default_state(); - return 0; } diff --git a/board/phytec/pcm052/pcm052.c b/board/phytec/pcm052/pcm052.c index f9cf4abd474..0f7235979b0 100644 --- a/board/phytec/pcm052/pcm052.c +++ b/board/phytec/pcm052/pcm052.c @@ -360,9 +360,6 @@ int board_late_init(void) struct src *psrc = (struct src *)SRC_BASE_ADDR; u32 reg; - if (IS_ENABLED(CONFIG_LED)) - led_default_state(); - /* * BK4r1 handle emergency/service SD card boot * Checking the SBMR1 register BOOTCFG1 byte: diff --git a/board/sandbox/sandbox.c b/board/sandbox/sandbox.c index 28ad6efd136..e054f300c4a 100644 --- a/board/sandbox/sandbox.c +++ b/board/sandbox/sandbox.c @@ -107,9 +107,6 @@ int dram_init(void) int board_init(void) { - if (IS_ENABLED(CONFIG_LED)) - led_default_state(); - return 0; } diff --git a/board/siemens/capricorn/board.c b/board/siemens/capricorn/board.c index dcbab8e4d21..4a02d64aec3 100644 --- a/board/siemens/capricorn/board.c +++ b/board/siemens/capricorn/board.c @@ -244,10 +244,6 @@ static int board_led_init(void) u8 pca_led[2] = { 0x00, 0x00 }; int ret; - /* init all GPIO LED's */ - if (IS_ENABLED(CONFIG_LED)) - led_default_state(); - /* enable all leds on PCA9552 */ ret = uclass_get_device_by_seq(UCLASS_I2C, PCA9552_1_I2C_BUS, &bus); if (ret) { diff --git a/board/st/stm32mp1/stm32mp1.c b/board/st/stm32mp1/stm32mp1.c index fff1880e5b0..7466e1c732a 100644 --- a/board/st/stm32mp1/stm32mp1.c +++ b/board/st/stm32mp1/stm32mp1.c @@ -666,9 +666,6 @@ int board_init(void) if (IS_ENABLED(CONFIG_ARMV7_NONSEC)) sysconf_init(); - if (CONFIG_IS_ENABLED(LED)) - led_default_state(); - setup_led(LEDST_ON); return 0; diff --git a/drivers/led/led-uclass.c b/drivers/led/led-uclass.c index 2ce72933b6c..68ca3c29702 100644 --- a/drivers/led/led-uclass.c +++ b/drivers/led/led-uclass.c @@ -66,12 +66,6 @@ int led_set_period(struct udevice *dev, int period_ms) } #endif -/* This is superseded by led_post_bind()/led_post_probe() below. */ -int led_default_state(void) -{ - return 0; -} - static int led_post_bind(struct udevice *dev) { struct led_uc_plat *uc_plat = dev_get_uclass_plat(dev); diff --git a/include/led.h b/include/led.h index 43acca85719..329041008c1 100644 --- a/include/led.h +++ b/include/led.h @@ -110,13 +110,4 @@ enum led_state_t led_get_state(struct udevice *dev); */ int led_set_period(struct udevice *dev, int period_ms); -/** - * led_default_state() - set the default state for all the LED - * - * This enables all leds which have default state. - * see Documentation/devicetree/bindings/leds/common.txt - * - */ -int led_default_state(void); - #endif diff --git a/test/dm/led.c b/test/dm/led.c index ac6ee363940..5bbe04648a1 100644 --- a/test/dm/led.c +++ b/test/dm/led.c @@ -33,9 +33,6 @@ static int dm_test_led_default_state(struct unit_test_state *uts) { struct udevice *dev; - /* configure the default state (auto-probe) */ - led_default_state(); - /* Check that we handle the default-state property correctly. */ ut_assertok(led_get_by_label("sandbox:default_on", &dev)); ut_asserteq(LEDST_ON, led_get_state(dev)); -- cgit v1.3.1 From 53ee48b67302e188dc2805cef393707975b305c8 Mon Sep 17 00:00:00 2001 From: Pali Rohár Date: Thu, 28 Apr 2022 13:26:53 +0200 Subject: dt-bindings: leds: import common led bindings from linux 5.17 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This allows usage of LED_COLOR_ID_RGB macro in DTS files. Signed-off-by: Pali Rohár --- include/dt-bindings/leds/common.h | 48 ++++++++++++++++++++++++++++++--------- 1 file changed, 37 insertions(+), 11 deletions(-) (limited to 'include') diff --git a/include/dt-bindings/leds/common.h b/include/dt-bindings/leds/common.h index 9e1256a7c1b..3be89a7c20a 100644 --- a/include/dt-bindings/leds/common.h +++ b/include/dt-bindings/leds/common.h @@ -6,6 +6,7 @@ * Author: Jacek Anaszewski * * Copyright (C) 2019 Jacek Anaszewski + * Copyright (C) 2020 Pavel Machek */ #ifndef __DT_BINDINGS_LEDS_H @@ -29,19 +30,51 @@ #define LED_COLOR_ID_VIOLET 5 #define LED_COLOR_ID_YELLOW 6 #define LED_COLOR_ID_IR 7 -#define LED_COLOR_ID_MAX 8 +#define LED_COLOR_ID_MULTI 8 /* For multicolor LEDs */ +#define LED_COLOR_ID_RGB 9 /* For multicolor LEDs that can do arbitrary color, + so this would include RGBW and similar */ +#define LED_COLOR_ID_MAX 10 /* Standard LED functions */ +/* Keyboard LEDs, usually it would be input4::capslock etc. */ +/* Obsolete equivalent: "shift-key-light" */ +#define LED_FUNCTION_CAPSLOCK "capslock" +#define LED_FUNCTION_SCROLLLOCK "scrolllock" +#define LED_FUNCTION_NUMLOCK "numlock" +/* Obsolete equivalents: "tpacpi::thinklight" (IBM/Lenovo Thinkpads), + "lp5523:kb{1,2,3,4,5,6}" (Nokia N900) */ +#define LED_FUNCTION_KBD_BACKLIGHT "kbd_backlight" + +/* System LEDs, usually found on system body. + platform::mute (etc) is sometimes seen, :mute would be better */ +#define LED_FUNCTION_POWER "power" +#define LED_FUNCTION_DISK "disk" + +/* Obsolete: "platform:*:charging" (allwinner sun50i) */ +#define LED_FUNCTION_CHARGING "charging" +/* Used RGB notification LEDs common on phones. + Obsolete equivalents: "status-led:{red,green,blue}" (Motorola Droid 4), + "lp5523:{r,g,b}" (Nokia N900) */ +#define LED_FUNCTION_STATUS "status" + +#define LED_FUNCTION_MICMUTE "micmute" +#define LED_FUNCTION_MUTE "mute" + +/* Used for player LEDs as found on game controllers from e.g. Nintendo, Sony. */ +#define LED_FUNCTION_PLAYER1 "player-1" +#define LED_FUNCTION_PLAYER2 "player-2" +#define LED_FUNCTION_PLAYER3 "player-3" +#define LED_FUNCTION_PLAYER4 "player-4" +#define LED_FUNCTION_PLAYER5 "player-5" + +/* Miscelleaus functions. Use functions above if you can. */ #define LED_FUNCTION_ACTIVITY "activity" #define LED_FUNCTION_ALARM "alarm" #define LED_FUNCTION_BACKLIGHT "backlight" #define LED_FUNCTION_BLUETOOTH "bluetooth" #define LED_FUNCTION_BOOT "boot" #define LED_FUNCTION_CPU "cpu" -#define LED_FUNCTION_CAPSLOCK "capslock" -#define LED_FUNCTION_CHARGING "charging" #define LED_FUNCTION_DEBUG "debug" -#define LED_FUNCTION_DISK "disk" #define LED_FUNCTION_DISK_ACTIVITY "disk-activity" #define LED_FUNCTION_DISK_ERR "disk-err" #define LED_FUNCTION_DISK_READ "disk-read" @@ -50,21 +83,14 @@ #define LED_FUNCTION_FLASH "flash" #define LED_FUNCTION_HEARTBEAT "heartbeat" #define LED_FUNCTION_INDICATOR "indicator" -#define LED_FUNCTION_KBD_BACKLIGHT "kbd_backlight" #define LED_FUNCTION_LAN "lan" #define LED_FUNCTION_MAIL "mail" #define LED_FUNCTION_MTD "mtd" -#define LED_FUNCTION_MICMUTE "micmute" -#define LED_FUNCTION_MUTE "mute" -#define LED_FUNCTION_NUMLOCK "numlock" #define LED_FUNCTION_PANIC "panic" #define LED_FUNCTION_PROGRAMMING "programming" -#define LED_FUNCTION_POWER "power" #define LED_FUNCTION_RX "rx" #define LED_FUNCTION_SD "sd" -#define LED_FUNCTION_SCROLLLOCK "scrolllock" #define LED_FUNCTION_STANDBY "standby" -#define LED_FUNCTION_STATUS "status" #define LED_FUNCTION_TORCH "torch" #define LED_FUNCTION_TX "tx" #define LED_FUNCTION_USB "usb" -- cgit v1.3.1