mirror of
				https://xff.cz/git/u-boot/
				synced 2025-10-31 10:26:10 +01:00 
			
		
		
		
	The sysinfo_get_str() implementation checks whether the sysinfo was even detected. In U-Boot proper, sysinfo_detect() is not called anywhere but on one specific board. Call sysinfo_detect() before sysinfo_get_str() to make sure the sysinfo is detected and sysinfo_get_str() returns valid value instead of -EPERM. Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com> Cc: Marcel Ziswiler <marcel.ziswiler@toradex.com> Cc: Simon Glass <sjg@chromium.org> Reviewed-by: Simon Glass <sjg@chromium.org>
		
			
				
	
	
		
			57 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| // SPDX-License-Identifier: GPL-2.0+
 | |
| 
 | |
| #include <common.h>
 | |
| #include <dm.h>
 | |
| #include <init.h>
 | |
| #include <sysinfo.h>
 | |
| #include <asm/global_data.h>
 | |
| #include <linux/libfdt.h>
 | |
| #include <linux/compiler.h>
 | |
| 
 | |
| DECLARE_GLOBAL_DATA_PTR;
 | |
| 
 | |
| int __weak checkboard(void)
 | |
| {
 | |
| 	return 0;
 | |
| }
 | |
| 
 | |
| /*
 | |
|  * Check sysinfo for board information. Failing that if the root node of the DTB
 | |
|  * has a "model" property, show it.
 | |
|  *
 | |
|  * Then call checkboard().
 | |
|  */
 | |
| int __weak show_board_info(void)
 | |
| {
 | |
| 	if (IS_ENABLED(CONFIG_OF_CONTROL)) {
 | |
| 		struct udevice *dev;
 | |
| 		const char *model;
 | |
| 		char str[80];
 | |
| 		int ret = -ENOSYS;
 | |
| 
 | |
| 		if (IS_ENABLED(CONFIG_SYSINFO)) {
 | |
| 			/* This might provide more detail */
 | |
| 			ret = sysinfo_get(&dev);
 | |
| 			if (!ret) {
 | |
| 				ret = sysinfo_detect(dev);
 | |
| 				if (!ret) {
 | |
| 					ret = sysinfo_get_str(dev,
 | |
| 						      SYSINFO_ID_BOARD_MODEL,
 | |
| 						      sizeof(str), str);
 | |
| 				}
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		/* Fail back to the main 'model' if available */
 | |
| 		if (ret)
 | |
| 			model = fdt_getprop(gd->fdt_blob, 0, "model", NULL);
 | |
| 		else
 | |
| 			model = str;
 | |
| 
 | |
| 		if (model)
 | |
| 			printf("Model: %s\n", model);
 | |
| 	}
 | |
| 
 | |
| 	return checkboard();
 | |
| }
 |