static struct simatic_ipc_platform platform_data;
 
-#define SIMATIC_IPC_MAX_EXTRA_MODULES 1
+#define SIMATIC_IPC_MAX_EXTRA_MODULES 2
 
 static struct {
        u32 station_id;
 } device_modes[] = {
        {SIMATIC_IPC_IPC127E,
                SIMATIC_IPC_DEVICE_127E, SIMATIC_IPC_DEVICE_NONE, SIMATIC_IPC_DEVICE_127E,
-               { "emc1403" }},
+               { "emc1403", NULL }},
        {SIMATIC_IPC_IPC227D,
                SIMATIC_IPC_DEVICE_227D, SIMATIC_IPC_DEVICE_NONE, SIMATIC_IPC_DEVICE_NONE,
-               { "emc1403" }},
+               { "emc1403", NULL }},
        {SIMATIC_IPC_IPC227E,
                SIMATIC_IPC_DEVICE_427E, SIMATIC_IPC_DEVICE_227E, SIMATIC_IPC_DEVICE_227E,
-               { "emc1403" }},
+               { "emc1403", NULL }},
        {SIMATIC_IPC_IPC227G,
-               SIMATIC_IPC_DEVICE_227G, SIMATIC_IPC_DEVICE_227G, SIMATIC_IPC_DEVICE_227G,
-               { "nct6775" }},
+               SIMATIC_IPC_DEVICE_227G, SIMATIC_IPC_DEVICE_NONE, SIMATIC_IPC_DEVICE_227G,
+               { "nct6775", "w83627hf_wdt" }},
        {SIMATIC_IPC_IPC277G,
-               SIMATIC_IPC_DEVICE_NONE, SIMATIC_IPC_DEVICE_227G, SIMATIC_IPC_DEVICE_227G,
-               { "nct6775" }},
+               SIMATIC_IPC_DEVICE_NONE, SIMATIC_IPC_DEVICE_NONE, SIMATIC_IPC_DEVICE_227G,
+               { "nct6775", "w83627hf_wdt" }},
        {SIMATIC_IPC_IPC277E,
                SIMATIC_IPC_DEVICE_NONE, SIMATIC_IPC_DEVICE_227E, SIMATIC_IPC_DEVICE_227E,
-               { "emc1403" }},
+               { "emc1403", NULL }},
        {SIMATIC_IPC_IPC427D,
                SIMATIC_IPC_DEVICE_427E, SIMATIC_IPC_DEVICE_NONE, SIMATIC_IPC_DEVICE_NONE,
-               { "emc1403" }},
+               { "emc1403", NULL }},
        {SIMATIC_IPC_IPC427E,
                SIMATIC_IPC_DEVICE_427E, SIMATIC_IPC_DEVICE_427E, SIMATIC_IPC_DEVICE_NONE,
-               { "emc1403" }},
+               { "emc1403", NULL }},
        {SIMATIC_IPC_IPC477E,
                SIMATIC_IPC_DEVICE_NONE, SIMATIC_IPC_DEVICE_427E, SIMATIC_IPC_DEVICE_NONE,
-               { "emc1403" }},
+               { "emc1403", NULL }},
        {SIMATIC_IPC_IPCBX_39A,
-               SIMATIC_IPC_DEVICE_227G, SIMATIC_IPC_DEVICE_227G, SIMATIC_IPC_DEVICE_BX_39A,
-               { "nct6775" }},
+               SIMATIC_IPC_DEVICE_227G, SIMATIC_IPC_DEVICE_NONE, SIMATIC_IPC_DEVICE_BX_39A,
+               { "nct6775", "w83627hf_wdt" }},
        {SIMATIC_IPC_IPCPX_39A,
-               SIMATIC_IPC_DEVICE_NONE, SIMATIC_IPC_DEVICE_227G, SIMATIC_IPC_DEVICE_BX_39A,
-               { "nct6775" }},
+               SIMATIC_IPC_DEVICE_NONE, SIMATIC_IPC_DEVICE_NONE, SIMATIC_IPC_DEVICE_BX_39A,
+               { "nct6775", "w83627hf_wdt" }},
        {SIMATIC_IPC_IPCBX_21A,
                SIMATIC_IPC_DEVICE_BX_21A, SIMATIC_IPC_DEVICE_NONE, SIMATIC_IPC_DEVICE_BX_21A,
-               { "emc1403" }},
+               { "emc1403", NULL }},
 };
 
 static int register_platform_devices(u32 station_id)
                         ipc_led_platform_device->name);
        }
 
-       if (wdtmode == SIMATIC_IPC_DEVICE_227G) {
-               request_module("w83627hf_wdt");
-               return 0;
-       }
-
        if (wdtmode != SIMATIC_IPC_DEVICE_NONE) {
                platform_data.devmode = wdtmode;
                ipc_wdt_platform_device =
        }
 
        if (ledmode == SIMATIC_IPC_DEVICE_NONE &&
-           wdtmode == SIMATIC_IPC_DEVICE_NONE) {
+           wdtmode == SIMATIC_IPC_DEVICE_NONE &&
+           battmode == SIMATIC_IPC_DEVICE_NONE) {
                pr_warn("unsupported IPC detected, station id=%08x\n",
                        station_id);
                return -EINVAL;