it to an output when the power-off handler is called. If this optional
   property is not specified, the GPIO is initialized as an output in its
   inactive state.
+- active-delay-ms: Delay (default 100) to wait after driving gpio active
+- inactive-delay-ms: Delay (default 100) to wait after driving gpio inactive
 - timeout-ms: Time to wait before asserting a WARN_ON(1). If nothing is
               specified, 3000 ms is used.
 
 
  */
 static struct gpio_desc *reset_gpio;
 static u32 timeout = DEFAULT_TIMEOUT_MS;
+static u32 active_delay = 100;
+static u32 inactive_delay = 100;
 
 static void gpio_poweroff_do_poweroff(void)
 {
 
        /* drive it active, also inactive->active edge */
        gpiod_direction_output(reset_gpio, 1);
-       mdelay(100);
+       mdelay(active_delay);
+
        /* drive inactive, also active->inactive edge */
        gpiod_set_value_cansleep(reset_gpio, 0);
-       mdelay(100);
+       mdelay(inactive_delay);
 
        /* drive it active, also inactive->active edge */
        gpiod_set_value_cansleep(reset_gpio, 1);
        else
                flags = GPIOD_OUT_LOW;
 
+       device_property_read_u32(&pdev->dev, "active-delay-ms", &active_delay);
+       device_property_read_u32(&pdev->dev, "inactive-delay-ms",
+                                &inactive_delay);
        device_property_read_u32(&pdev->dev, "timeout-ms", &timeout);
 
        reset_gpio = devm_gpiod_get(&pdev->dev, NULL, flags);