static int pnx4008_restart_handler(struct watchdog_device *wdd,
                                   unsigned long mode, void *cmd)
 {
+       const char *boot_cmd = cmd;
+
+       /*
+        * Verify if a "cmd" passed from the userspace program rebooting
+        * the system; if available, handle it.
+        * - For details, see the 'reboot' syscall in kernel/reboot.c
+        * - If the received "cmd" is not supported, use the default mode.
+        */
+       if (boot_cmd) {
+               if (boot_cmd[0] == 'h')
+                       mode = REBOOT_HARD;
+               else if (boot_cmd[0] == 's')
+                       mode = REBOOT_SOFT;
+       }
+
        if (mode == REBOOT_SOFT) {
                /* Force match output active */
                writel(EXT_MATCH0, WDTIM_EMR(wdt_base));