...The end of the range could allow for more margin. Also consider busy looping for very short delays as in http://lxr.free-electrons.com/source/drivers/regulator/core.c#L2062
+static int pwrseq_generic_on(struct device_node *np, struct pwrseq *pwrseq)
+{
...
+ if (gpiod_reset) {
+ u32 duration_us = 50;
+
+ of_property_read_u32(np, "reset-duration-us",
+ &duration_us);
+ usleep_range(duration_us, duration_us + 10);
...This only gets the first of potentially multiple clocks, is that intended?
+static int pwrseq_generic_get(struct device_node *np, struct pwrseq *pwrseq)
+{
+ struct pwrseq_generic *pwrseq_gen = to_generic_pwrseq(pwrseq);
+ enum of_gpio_flags flags;
+ int reset_gpio, ret = 0;
+
+ pwrseq_gen->clk = of_clk_get_by_name(np, NULL);