[U-Boot] [RFC 1/2] mmc: introduce mmc_power_init and pwrup hook function

Simon Glass sjg at chromium.org
Wed Apr 20 16:40:10 CEST 2016


Hi Peng,

On 10 April 2016 at 23:34, Peng Fan <van.freenix at gmail.com> wrote:
> Hi Simon,
>
> On Sat, Apr 09, 2016 at 12:34:13PM -0600, Simon Glass wrote:
>>Hi Peng,
>>
>>On 15 March 2016 at 19:32, Peng Fan <van.freenix at gmail.com> wrote:
>>> In device tree, there is vmmc-supply property for SD/MMC.
>>> Introduce mmc_power_init function and pwrup hook function to let
>>> the specific drivers handle vmmc-supply.
>>>
>>> mmc_power_init will first invoke board_mmc_power_init to
>>> avoid break boards which already implement board_mmc_power_init.
>>>
>>> Then if pwrup hook functions have been implemented for different
>>> mmc drivers, pwrup will be invoked.
>>>
>>> Signed-off-by: Peng Fan <van.freenix at gmail.com>
>>> Cc: Pantelis Antoniou <panto at antoniou-consulting.com>
>>> Cc: Andrew Gabbasov <andrew_gabbasov at mentor.com>
>>> Cc: Simon Glass <sjg at chromium.org>
>>> Cc: Stephen Warren <swarren at nvidia.com>
>>> Cc: Clemens Gruber <clemens.gruber at pqgruber.com>
>>> Cc: Eric Nelson <eric at nelint.com>
>>> Cc: Stefano Babic <sbabic at denx.de>
>>> Cc: Fabio Estevam <fabio.estevam at nxp.com>
>>> ---
>>>  drivers/mmc/mmc.c | 15 ++++++++++++++-
>>>  include/mmc.h     |  1 +
>>>  2 files changed, 15 insertions(+), 1 deletion(-)
>>
>>Acked-by: Simon Glass <sjg at chromium.org>
>>
>>I wonder if there is a way to handle this property generically?
>
> Now I do not have a better idea for this  (:
>
> Or we directly more the following piece code to driver/mmc/mmc.c?
> And Add a device entry for struct mmc.
>
> static int xxx_pwrup(struct mmc *mmc)
> {
> #ifdef CONFIG_DM_MMC
>         struct udevice *vmmc_supply;
>         int ret;
>
>         ret = device_get_supply_regulator(mmc->dev, "vmmc-supply",
>                                           &vmmc_supply);
>         if (ret) {
>                 debug("No vmmc supply\n");
>                 return 0;
>         }
>
>         ret = regulator_set_enable(vmmc_supply, true);
>         if (ret) {
>                 puts("Error enabling VMMC supply\n");
>                 return ret;
>         }
> #endif
>         return 0;
> }
>

That seems better to me.

Regards,
Simon


More information about the U-Boot mailing list