env: restore old env_get_char() behaviour

With multiple environments, the 'get_char' callback for env
drivers does not really make sense any more because it is
only supported by two drivers (eeprom and nvram).

To restore single character loading for these drivers,
override 'env_get_char_spec'.

Signed-off-by: Simon Goldschmidt <sgoldschmidt@de.pepperl-fuchs.com>
Acked-by: Maxime Ripard <maxime.ripard@bootlin.com>
diff --git a/env/env.c b/env/env.c
index edfb575..3795dbc 100644
--- a/env/env.c
+++ b/env/env.c
@@ -147,32 +147,17 @@
 	return drv;
 }
 
+__weak int env_get_char_spec(int index)
+{
+	return *(uchar *)(gd->env_addr + index);
+}
+
 int env_get_char(int index)
 {
-	struct env_driver *drv;
-	int prio;
-
 	if (gd->env_valid == ENV_INVALID)
 		return default_environment[index];
-
-	for (prio = 0; (drv = env_driver_lookup(ENVOP_GET_CHAR, prio)); prio++) {
-		int ret;
-
-		if (!drv->get_char)
-			continue;
-
-		if (!env_has_inited(drv->location))
-			continue;
-
-		ret = drv->get_char(index);
-		if (!ret)
-			return 0;
-
-		debug("%s: Environment %s failed to load (err=%d)\n", __func__,
-		      drv->name, ret);
-	}
-
-	return -ENODEV;
+	else
+		return env_get_char_spec(index);
 }
 
 int env_load(void)