mirror of
				https://xff.cz/git/u-boot/
				synced 2025-10-31 18:35:42 +01:00 
			
		
		
		
	stm32mp1: board: support of error led on ed1/ev1 board
Create a function led_error_blink and add node in device tree. Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com>
This commit is contained in:
		
				
					committed by
					
						 Patrice Chotard
						Patrice Chotard
					
				
			
			
				
	
			
			
			
						parent
						
							d573e46168
						
					
				
				
					commit
					dd2810851e
				
			| @@ -15,31 +15,22 @@ | |||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
| 	config { | 	config { | ||||||
|  | 		u-boot,boot-led = "heartbeat"; | ||||||
|  | 		u-boot,error-led = "error"; | ||||||
| 		st,fastboot-gpios = <&gpioa 13 GPIO_ACTIVE_LOW>; | 		st,fastboot-gpios = <&gpioa 13 GPIO_ACTIVE_LOW>; | ||||||
| 		st,stm32prog-gpios = <&gpioa 14 GPIO_ACTIVE_LOW>; | 		st,stm32prog-gpios = <&gpioa 14 GPIO_ACTIVE_LOW>; | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
| 	led { | 	led { | ||||||
| 		compatible = "gpio-leds"; |  | ||||||
|  |  | ||||||
| 		red { | 		red { | ||||||
| 			label = "stm32mp:red:status"; | 			label = "error"; | ||||||
| 			gpios = <&gpioa 13 GPIO_ACTIVE_LOW>; | 			gpios = <&gpioa 13 GPIO_ACTIVE_LOW>; | ||||||
| 			default-state = "off"; | 			default-state = "off"; | ||||||
|  | 			status = "okay"; | ||||||
| 		}; | 		}; | ||||||
| 		green { |  | ||||||
| 			label = "stm32mp:green:user"; |  | ||||||
| 			gpios = <&gpioa 14 GPIO_ACTIVE_LOW>; |  | ||||||
| 			default-state = "on"; |  | ||||||
| 		}; |  | ||||||
| 		orange { |  | ||||||
| 			label = "stm32mp:orange:status"; |  | ||||||
| 			gpios = <&gpioh 7 GPIO_ACTIVE_HIGH>; |  | ||||||
| 			default-state = "off"; |  | ||||||
| 		}; |  | ||||||
| 		blue { | 		blue { | ||||||
| 			label = "stm32mp:blue:user"; | 			default-state = "on"; | ||||||
| 			gpios = <&gpiod 11 GPIO_ACTIVE_HIGH>; |  | ||||||
| 		}; | 		}; | ||||||
| 	}; | 	}; | ||||||
| }; | }; | ||||||
|   | |||||||
| @@ -21,6 +21,7 @@ | |||||||
| #include <reset.h> | #include <reset.h> | ||||||
| #include <syscon.h> | #include <syscon.h> | ||||||
| #include <usb.h> | #include <usb.h> | ||||||
|  | #include <watchdog.h> | ||||||
| #include <asm/io.h> | #include <asm/io.h> | ||||||
| #include <asm/gpio.h> | #include <asm/gpio.h> | ||||||
| #include <asm/arch/stm32.h> | #include <asm/arch/stm32.h> | ||||||
| @@ -232,6 +233,7 @@ int g_dnl_board_usb_cable_connected(void) | |||||||
| } | } | ||||||
| #endif /* CONFIG_USB_GADGET */ | #endif /* CONFIG_USB_GADGET */ | ||||||
|  |  | ||||||
|  | #ifdef CONFIG_LED | ||||||
| static int get_led(struct udevice **dev, char *led_string) | static int get_led(struct udevice **dev, char *led_string) | ||||||
| { | { | ||||||
| 	char *led_name; | 	char *led_name; | ||||||
| @@ -264,12 +266,41 @@ static int setup_led(enum led_state_t cmd) | |||||||
| 	ret = led_set_state(dev, cmd); | 	ret = led_set_state(dev, cmd); | ||||||
| 	return ret; | 	return ret; | ||||||
| } | } | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | static void __maybe_unused led_error_blink(u32 nb_blink) | ||||||
|  | { | ||||||
|  | #ifdef CONFIG_LED | ||||||
|  | 	int ret; | ||||||
|  | 	struct udevice *led; | ||||||
|  | 	u32 i; | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | 	if (!nb_blink) | ||||||
|  | 		return; | ||||||
|  |  | ||||||
|  | #ifdef CONFIG_LED | ||||||
|  | 	ret = get_led(&led, "u-boot,error-led"); | ||||||
|  | 	if (!ret) { | ||||||
|  | 		/* make u-boot,error-led blinking */ | ||||||
|  | 		/* if U32_MAX and 125ms interval, for 17.02 years */ | ||||||
|  | 		for (i = 0; i < 2 * nb_blink; i++) { | ||||||
|  | 			led_set_state(led, LEDST_TOGGLE); | ||||||
|  | 			mdelay(125); | ||||||
|  | 			WATCHDOG_RESET(); | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | 	/* infinite: the boot process must be stopped */ | ||||||
|  | 	if (nb_blink == U32_MAX) | ||||||
|  | 		hang(); | ||||||
|  | } | ||||||
|  |  | ||||||
| static int board_check_usb_power(void) | static int board_check_usb_power(void) | ||||||
| { | { | ||||||
| 	struct ofnode_phandle_args adc_args; | 	struct ofnode_phandle_args adc_args; | ||||||
| 	struct udevice *adc; | 	struct udevice *adc; | ||||||
| 	struct udevice *led; |  | ||||||
| 	ofnode node; | 	ofnode node; | ||||||
| 	unsigned int raw; | 	unsigned int raw; | ||||||
| 	int max_uV = 0; | 	int max_uV = 0; | ||||||
| @@ -395,20 +426,7 @@ static int board_check_usb_power(void) | |||||||
| 		pr_err("****************************************************\n\n"); | 		pr_err("****************************************************\n\n"); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	ret = get_led(&led, "u-boot,error-led"); | 	led_error_blink(nb_blink); | ||||||
| 	if (ret) { |  | ||||||
| 		/* in unattached case, the boot process must be stopped */ |  | ||||||
| 		if (nb_blink == U32_MAX) |  | ||||||
| 			hang(); |  | ||||||
| 		return ret; |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	/* make u-boot,error-led blinking */ |  | ||||||
| 	for (i = 0; i < nb_blink * 2; i++) { |  | ||||||
| 		led_set_state(led, LEDST_TOGGLE); |  | ||||||
| 		mdelay(125); |  | ||||||
| 	} |  | ||||||
| 	led_set_state(led, LEDST_ON); |  | ||||||
|  |  | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user