extern void mxs_restart(char, const char *);
 extern int mxs_saif_clkmux_select(unsigned int clkmux);
 
+extern void mx23_soc_init(void);
 extern int mx23_register_gpios(void);
 extern int mx23_clocks_init(void);
 extern void mx23_map_io(void);
 extern void mx23_init_irq(void);
 
+extern void mx28_soc_init(void);
 extern int mx28_register_gpios(void);
 extern int mx28_clocks_init(void);
 extern void mx28_map_io(void);
 
 
 static void __init apx4devkit_init(void)
 {
+       mx28_soc_init();
+
        mxs_iomux_setup_multiple_pads(apx4devkit_pads,
                        ARRAY_SIZE(apx4devkit_pads));
 
 
 
 static void __init m28evk_init(void)
 {
+       mx28_soc_init();
+
        mxs_iomux_setup_multiple_pads(m28evk_pads, ARRAY_SIZE(m28evk_pads));
 
        mx28_add_duart();
 
 {
        int ret;
 
+       mx23_soc_init();
+
        mxs_iomux_setup_multiple_pads(mx23evk_pads, ARRAY_SIZE(mx23evk_pads));
 
        mx23_add_duart();
 
 {
        int ret;
 
+       mx28_soc_init();
+
        mxs_iomux_setup_multiple_pads(mx28evk_pads, ARRAY_SIZE(mx28evk_pads));
 
        mx28_add_duart();
 
 {
        int ret;
 
+       mx23_soc_init();
+
        mxs_iomux_setup_multiple_pads(stmp378x_dvb_pads,
                        ARRAY_SIZE(stmp378x_dvb_pads));
 
 
 
 static void __init tx28_stk5v3_init(void)
 {
+       mx28_soc_init();
+
        mxs_iomux_setup_multiple_pads(tx28_stk5v3_pads,
                        ARRAY_SIZE(tx28_stk5v3_pads));
 
 
 
 #include <linux/mm.h>
 #include <linux/init.h>
+#include <linux/pinctrl/machine.h>
 
 #include <asm/mach/map.h>
 
 {
        icoll_init_irq();
 }
+
+void __init mx23_soc_init(void)
+{
+       pinctrl_provide_dummies();
+}
+
+void __init mx28_soc_init(void)
+{
+       pinctrl_provide_dummies();
+}