[PATCH 2/2] samsung: common: only load CROS_EC if enabled in config

Henrik Grimler
2023-02-08T19:05:23Z

Otherwise non-ChromeOS samsung devices, like the odroid boards, are
stuck in a bootloop if CONFIG_CROS_EC is not enabled:

<...>
MMC: SAMSUNG SDHCI: 2, EXYNOS DWMMC: 0
Loading Environment from MMC... *** Warning - bad CRC, using default environment

cros-ec communications failure -96

Please reset with Power+Refresh

Cannot init cros-ec device
resetting ...

Issue started after commit e44d7e73fe0d ("dm: core: Switch
uclass_*_device_err to use uclass_*_device_check").

Signed-off-by: Henrik Grimler <henrik@grimler.se>
---
board/samsung/common/board.c | 27 ++++++++++++++-------------
1 file changed, 14 insertions(+), 13 deletions(-)

diff --git a/board/samsung/common/board.c b/board/samsung/common/board.c
index 16ce5cb89253..78161b807bac 100644
--- a/board/samsung/common/board.c
+++ b/board/samsung/common/board.c
@@ -217,26 +217,27 @@ int checkboard(void)
#ifdef CONFIG_BOARD_LATE_INIT
int board_late_init(void)
{
- struct udevice *dev;
- int ret;
int mmcbootdev = get_boot_mmc_dev();
char mmcbootdev_str[16];

- ret = uclass_first_device_err(UCLASS_CROS_EC, &dev);
- if (ret && ret != -ENODEV) {
- /* Force console on */
- gd->flags &= ~GD_FLG_SILENT;
-
- printf("cros-ec communications failure %d\n", ret);
- puts("\nPlease reset with Power+Refresh\n\n");
- panic("Cannot init cros-ec device");
- return -1;
- }
-
printf("Boot device: MMC(%u)\n", mmcbootdev);
sprintf(mmcbootdev_str, "%u", mmcbootdev);
env_set("mmcbootdev", mmcbootdev_str);

+ if (IS_ENABLED(CONFIG_CROS_EC)) {
+ struct udevice *dev;
+ int ret = uclass_first_device_err(UCLASS_CROS_EC, &dev);
+ if (ret && ret != -ENODEV) {
+ /* Force console on */
+ gd->flags &= ~GD_FLG_SILENT;
+
+ printf("cros-ec communications failure %d\n", ret);
+ puts("\nPlease reset with Power+Refresh\n\n");
+ panic("Cannot init cros-ec device");
+ return -1;
+ }
+ }
+
return 0;
}
#endif
--
2.30.2