cmd: adc: Add support for storing ADC result in env variable
Add the ability to save ADC conversion result in an environment variable. This is useful for further arbitrary processing by the U-Boot scripts. Signed-off-by: Marek Vasut <marex@denx.de> Cc: Fabrice Gasnier <fabrice.gasnier@foss.st.com> Cc: Patrice Chotard <patrice.chotard@foss.st.com> Cc: Patrick Delaunay <patrick.delaunay@foss.st.com> Cc: Simon Glass <sjg@chromium.org> Reviewed-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
This commit is contained in:
		
							parent
							
								
									0de71bb580
								
							
						
					
					
						commit
						9de612ae4d
					
				
							
								
								
									
										18
									
								
								cmd/adc.c
								
								
								
								
							
							
						
						
									
										18
									
								
								cmd/adc.c
								
								
								
								
							|  | @ -71,13 +71,17 @@ static int do_adc_info(struct cmd_tbl *cmdtp, int flag, int argc, | ||||||
| static int do_adc_single(struct cmd_tbl *cmdtp, int flag, int argc, | static int do_adc_single(struct cmd_tbl *cmdtp, int flag, int argc, | ||||||
| 			 char *const argv[]) | 			 char *const argv[]) | ||||||
| { | { | ||||||
|  | 	char *varname = NULL; | ||||||
| 	struct udevice *dev; | 	struct udevice *dev; | ||||||
| 	unsigned int data; | 	unsigned int data; | ||||||
| 	int ret, uV; | 	int ret, uV, val; | ||||||
| 
 | 
 | ||||||
| 	if (argc < 3) | 	if (argc < 3) | ||||||
| 		return CMD_RET_USAGE; | 		return CMD_RET_USAGE; | ||||||
| 
 | 
 | ||||||
|  | 	if (argc >= 3) | ||||||
|  | 		varname = argv[2]; | ||||||
|  | 
 | ||||||
| 	ret = adc_channel_single_shot(argv[1], simple_strtol(argv[2], NULL, 0), | 	ret = adc_channel_single_shot(argv[1], simple_strtol(argv[2], NULL, 0), | ||||||
| 				      &data); | 				      &data); | ||||||
| 	if (ret) { | 	if (ret) { | ||||||
|  | @ -87,10 +91,16 @@ static int do_adc_single(struct cmd_tbl *cmdtp, int flag, int argc, | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	ret = uclass_get_device_by_name(UCLASS_ADC, argv[1], &dev); | 	ret = uclass_get_device_by_name(UCLASS_ADC, argv[1], &dev); | ||||||
| 	if (!ret && !adc_raw_to_uV(dev, data, &uV)) | 	if (!ret && !adc_raw_to_uV(dev, data, &uV)) { | ||||||
|  | 		val = uV; | ||||||
| 		printf("%u, %d uV\n", data, uV); | 		printf("%u, %d uV\n", data, uV); | ||||||
| 	else | 	} else { | ||||||
|  | 		val = data; | ||||||
| 		printf("%u\n", data); | 		printf("%u\n", data); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	if (varname) | ||||||
|  | 		env_set_ulong(varname, val); | ||||||
| 
 | 
 | ||||||
| 	return CMD_RET_SUCCESS; | 	return CMD_RET_SUCCESS; | ||||||
| } | } | ||||||
|  | @ -149,7 +159,7 @@ static int do_adc_scan(struct cmd_tbl *cmdtp, int flag, int argc, | ||||||
| static char adc_help_text[] = | static char adc_help_text[] = | ||||||
| 	"list - list ADC devices\n" | 	"list - list ADC devices\n" | ||||||
| 	"adc info <name> - Get ADC device info\n" | 	"adc info <name> - Get ADC device info\n" | ||||||
| 	"adc single <name> <channel> - Get Single data of ADC device channel\n" | 	"adc single <name> <channel> [varname] - Get Single data of ADC device channel\n" | ||||||
| 	"adc scan <name> [channel mask] - Scan all [or masked] ADC channels"; | 	"adc scan <name> [channel mask] - Scan all [or masked] ADC channels"; | ||||||
| 
 | 
 | ||||||
| U_BOOT_CMD_WITH_SUBCMDS(adc, "ADC sub-system", adc_help_text, | U_BOOT_CMD_WITH_SUBCMDS(adc, "ADC sub-system", adc_help_text, | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue