Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

mmc: pwrseq_simple: Parse DTS for the power-off-delay-us property

If the optional power-off-delay-us property is found, insert the
corresponding delay after asserting the GPIO during power off. This enables
a graceful shutdown sequence for some devices.

Cc: linux-mmc@vger.kernel.org
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Acked-by: Arnd Bergmann <arnd@arndb.de>

+7
+7
drivers/mmc/core/pwrseq_simple.c
··· 27 27 struct mmc_pwrseq pwrseq; 28 28 bool clk_enabled; 29 29 u32 post_power_on_delay_ms; 30 + u32 power_off_delay_us; 30 31 struct clk *ext_clk; 31 32 struct gpio_descs *reset_gpios; 32 33 }; ··· 79 78 80 79 mmc_pwrseq_simple_set_gpios_value(pwrseq, 1); 81 80 81 + if (pwrseq->power_off_delay_us) 82 + usleep_range(pwrseq->power_off_delay_us, 83 + 2 * pwrseq->power_off_delay_us); 84 + 82 85 if (!IS_ERR(pwrseq->ext_clk) && pwrseq->clk_enabled) { 83 86 clk_disable_unprepare(pwrseq->ext_clk); 84 87 pwrseq->clk_enabled = false; ··· 124 119 125 120 device_property_read_u32(dev, "post-power-on-delay-ms", 126 121 &pwrseq->post_power_on_delay_ms); 122 + device_property_read_u32(dev, "power-off-delay-us", 123 + &pwrseq->power_off_delay_us); 127 124 128 125 pwrseq->pwrseq.dev = dev; 129 126 pwrseq->pwrseq.ops = &mmc_pwrseq_simple_ops;