/* Maintainer: Eric Bénard <eric@eukrea.com> */
        .boot_params = MX51_PHYS_OFFSET + 0x100,
        .map_io = mx51_map_io,
+       .init_early = imx51_init_early,
        .init_irq = mx51_init_irq,
-       .init_machine = eukrea_cpuimx51_init,
        .timer = &mxc_timer,
+       .init_machine = eukrea_cpuimx51_init,
 MACHINE_END
 
        /* Maintainer: Eric Bénard <eric@eukrea.com> */
        .boot_params = MX51_PHYS_OFFSET + 0x100,
        .map_io = mx51_map_io,
+       .init_early = imx51_init_early,
        .init_irq = mx51_init_irq,
-       .init_machine = eukrea_cpuimx51sd_init,
        .timer = &mxc_timer,
+       .init_machine = eukrea_cpuimx51sd_init,
 MACHINE_END
 
 
 MACHINE_START(MX50_RDP, "Freescale MX50 Reference Design Platform")
        .map_io = mx50_map_io,
+       .init_early = imx50_init_early,
        .init_irq = mx50_init_irq,
-       .init_machine = mx50_rdp_board_init,
        .timer = &mx50_rdp_timer,
+       .init_machine = mx50_rdp_board_init,
 MACHINE_END
 
        /* Maintainer: Freescale Semiconductor, Inc. */
        .boot_params = MX51_PHYS_OFFSET + 0x100,
        .map_io = mx51_map_io,
+       .init_early = imx51_init_early,
        .init_irq = mx51_init_irq,
-       .init_machine = mxc_board_init,
        .timer = &mxc_timer,
+       .init_machine = mxc_board_init,
 MACHINE_END
 
        /* Maintainer: Amit Kucheria <amit.kucheria@canonical.com> */
        .boot_params = MX51_PHYS_OFFSET + 0x100,
        .map_io = mx51_map_io,
+       .init_early = imx51_init_early,
        .init_irq = mx51_init_irq,
-       .init_machine = mxc_board_init,
        .timer = &mxc_timer,
+       .init_machine = mxc_board_init,
 MACHINE_END
 
        /* Maintainer: Amit Kucheria <amit.kucheria@linaro.org> */
        .boot_params = MX51_PHYS_OFFSET + 0x100,
        .map_io = mx51_map_io,
+       .init_early = imx51_init_early,
        .init_irq = mx51_init_irq,
-       .init_machine =  mxc_board_init,
        .timer = &mxc_timer,
+       .init_machine =  mxc_board_init,
 MACHINE_END
 
 
 MACHINE_START(MX53_EVK, "Freescale MX53 EVK Board")
        .map_io = mx53_map_io,
+       .init_early = imx53_init_early,
        .init_irq = mx53_init_irq,
-       .init_machine = mx53_evk_board_init,
        .timer = &mx53_evk_timer,
+       .init_machine = mx53_evk_board_init,
 MACHINE_END
 
 
 MACHINE_START(MX53_LOCO, "Freescale MX53 LOCO Board")
        .map_io = mx53_map_io,
+       .init_early = imx53_init_early,
        .init_irq = mx53_init_irq,
-       .init_machine = mx53_loco_board_init,
        .timer = &mx53_loco_timer,
+       .init_machine = mx53_loco_board_init,
 MACHINE_END
 
 
 MACHINE_START(MX53_SMD, "Freescale MX53 SMD Board")
        .map_io = mx53_map_io,
+       .init_early = imx53_init_early,
        .init_irq = mx53_init_irq,
-       .init_machine = mx53_smd_board_init,
        .timer = &mx53_smd_timer,
+       .init_machine = mx53_smd_board_init,
 MACHINE_END
 
  * for the IO modules.
  */
 void __init mx50_map_io(void)
+{
+       iotable_init(mx50_io_desc, ARRAY_SIZE(mx50_io_desc));
+}
+
+void __init imx50_init_early(void)
 {
        mxc_set_cpu_type(MXC_CPU_MX50);
        mxc_iomux_v3_init(MX50_IO_ADDRESS(MX50_IOMUXC_BASE_ADDR));
        mxc_arch_reset_init(MX50_IO_ADDRESS(MX50_WDOG_BASE_ADDR));
-       iotable_init(mx50_io_desc, ARRAY_SIZE(mx50_io_desc));
 }
 
 int imx50_register_gpios(void);
 
  * for the IO modules.
  */
 void __init mx51_map_io(void)
+{
+       iotable_init(mx51_io_desc, ARRAY_SIZE(mx51_io_desc));
+}
+
+void __init imx51_init_early(void)
 {
        mxc_set_cpu_type(MXC_CPU_MX51);
        mxc_iomux_v3_init(MX51_IO_ADDRESS(MX51_IOMUXC_BASE_ADDR));
        mxc_arch_reset_init(MX51_IO_ADDRESS(MX51_WDOG1_BASE_ADDR));
-       iotable_init(mx51_io_desc, ARRAY_SIZE(mx51_io_desc));
 }
 
 void __init mx53_map_io(void)
+{
+       iotable_init(mx53_io_desc, ARRAY_SIZE(mx53_io_desc));
+}
+
+void __init imx53_init_early(void)
 {
        mxc_set_cpu_type(MXC_CPU_MX53);
        mxc_iomux_v3_init(MX53_IO_ADDRESS(MX53_IOMUXC_BASE_ADDR));
        mxc_arch_reset_init(MX53_IO_ADDRESS(MX53_WDOG_BASE_ADDR));
-       iotable_init(mx53_io_desc, ARRAY_SIZE(mx53_io_desc));
 }
 
 int imx51_register_gpios(void);
 
 extern void imx31_init_early(void);
 extern void imx35_init_early(void);
 extern void imx50_init_early(void);
+extern void imx51_init_early(void);
+extern void imx53_init_early(void);
 extern void mxc_init_irq(void __iomem *);
 extern void tzic_init_irq(void __iomem *);
 extern void mx1_init_irq(void);