summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--common/board_r.c24
-rw-r--r--common/stdio.c18
-rw-r--r--include/stdio_dev.h24
3 files changed, 50 insertions, 16 deletions
diff --git a/common/board_r.c b/common/board_r.c
index 64beae5f34..6ac2b7e160 100644
--- a/common/board_r.c
+++ b/common/board_r.c
@@ -715,6 +715,15 @@ init_fnc_t init_sequence_r[] = {
/* TODO: could x86/PPC have this also perhaps? */
#ifdef CONFIG_ARM
initr_caches,
+#endif
+ initr_reloc_global_data,
+ initr_barrier,
+ initr_malloc,
+ bootstage_relocate,
+#ifdef CONFIG_DM
+ initr_dm,
+#endif
+#ifdef CONFIG_ARM
board_init, /* Setup chipselects */
#endif
/*
@@ -726,16 +735,7 @@ init_fnc_t init_sequence_r[] = {
#ifdef CONFIG_CLOCKS
set_cpu_clk_info, /* Setup clock information */
#endif
- initr_reloc_global_data,
- initr_barrier,
- initr_malloc,
- bootstage_relocate,
-#ifdef CONFIG_DM_SERIAL
- stdio_init,
-#endif
-#ifdef CONFIG_DM
- initr_dm,
-#endif
+ stdio_init_tables,
initr_serial,
initr_announce,
INIT_FUNC_WATCHDOG_RESET
@@ -821,9 +821,7 @@ init_fnc_t init_sequence_r[] = {
*/
initr_pci,
#endif
-#ifndef CONFIG_DM_SERIAL
- stdio_init,
-#endif
+ stdio_add_devices,
initr_jumptable,
#ifdef CONFIG_API
initr_api,
diff --git a/common/stdio.c b/common/stdio.c
index 692ca7f1cd..c878103a48 100644
--- a/common/stdio.c
+++ b/common/stdio.c
@@ -215,7 +215,7 @@ int stdio_deregister(const char *devname)
}
#endif /* CONFIG_SYS_STDIO_DEREGISTER */
-int stdio_init (void)
+int stdio_init_tables(void)
{
#if defined(CONFIG_NEEDS_MANUAL_RELOC)
/* already relocated for current ARM implementation */
@@ -232,6 +232,11 @@ int stdio_init (void)
/* Initialize the list */
INIT_LIST_HEAD(&(devs.list));
+ return 0;
+}
+
+int stdio_add_devices(void)
+{
#ifdef CONFIG_SYS_I2C
i2c_init_all();
#else
@@ -265,5 +270,14 @@ int stdio_init (void)
#ifdef CONFIG_CBMEM_CONSOLE
cbmemc_init();
#endif
- return (0);
+
+ return 0;
+}
+
+int stdio_init(void)
+{
+ stdio_init_tables();
+ stdio_add_devices();
+
+ return 0;
}
diff --git a/include/stdio_dev.h b/include/stdio_dev.h
index a7d0825c7e..268de8ea70 100644
--- a/include/stdio_dev.h
+++ b/include/stdio_dev.h
@@ -78,7 +78,29 @@ extern char *stdio_names[MAX_FILES];
*/
int stdio_register (struct stdio_dev * dev);
int stdio_register_dev(struct stdio_dev *dev, struct stdio_dev **devp);
-int stdio_init (void);
+
+/**
+ * stdio_init_tables() - set up stdio tables ready for devices
+ *
+ * This does not add any devices, but just prepares stdio for use.
+ */
+int stdio_init_tables(void);
+
+/**
+ * stdio_add_devices() - Add stdio devices to the table
+ *
+ * This makes calls to all the various subsystems that use stdio, to make
+ * them register with stdio.
+ */
+int stdio_add_devices(void);
+
+/**
+ * stdio_init() - Sets up stdio ready for use
+ *
+ * This calls stdio_init_tables() and stdio_add_devices()
+ */
+int stdio_init(void);
+
void stdio_print_current_devices(void);
#ifdef CONFIG_SYS_STDIO_DEREGISTER
int stdio_deregister(const char *devname);
OpenPOWER on IntegriCloud