[PATCH 20/22] sandbox: mmc: Support fixed MMC devices
Jaehoon Chung
jh80.chung at samsung.com
Tue Jul 6 03:12:04 CEST 2021
On 7/6/21 7:32 AM, Simon Glass wrote:
> Add support for reading devicetree flags for MMC devices. With this we
> can distinguish between fixed and removable drives. Note that this
> information is only available when the device is probed, not when it is
> bound, since it is read in the of_to_plat() method. This could be changed
> if needed later.
>
> Signed-off-by: Simon Glass <sjg at chromium.org>
Reviewed-by: Jaehoon Chung <jh80.chung at samsung.com>
Best Regards,
Jaehoon Chung
> ---
>
> arch/sandbox/dts/test.dts | 1 +
> drivers/mmc/sandbox_mmc.c | 24 +++++++++++++++++++++---
> 2 files changed, 22 insertions(+), 3 deletions(-)
>
> diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts
> index d85bb46ceba..0cee15a0ea2 100644
> --- a/arch/sandbox/dts/test.dts
> +++ b/arch/sandbox/dts/test.dts
> @@ -819,6 +819,7 @@
>
> mmc2 {
> compatible = "sandbox,mmc";
> + non-removable;
> };
>
> mmc1 {
> diff --git a/drivers/mmc/sandbox_mmc.c b/drivers/mmc/sandbox_mmc.c
> index 18ba020aacc..895fbffecfc 100644
> --- a/drivers/mmc/sandbox_mmc.c
> +++ b/drivers/mmc/sandbox_mmc.c
> @@ -136,14 +136,31 @@ static const struct dm_mmc_ops sandbox_mmc_ops = {
> .get_cd = sandbox_mmc_get_cd,
> };
>
> -int sandbox_mmc_probe(struct udevice *dev)
> +static int sandbox_mmc_of_to_plat(struct udevice *dev)
> +{
> + struct sandbox_mmc_plat *plat = dev_get_plat(dev);
> + struct mmc_config *cfg = &plat->cfg;
> + struct blk_desc *blk;
> + int ret;
> +
> + ret = mmc_of_parse(dev, cfg);
> + if (ret)
> + return ret;
> + blk = mmc_get_blk_desc(&plat->mmc);
> + if (blk)
> + blk->removable = !(cfg->host_caps & MMC_CAP_NONREMOVABLE);
> +
> + return 0;
> +}
> +
> +static int sandbox_mmc_probe(struct udevice *dev)
> {
> struct sandbox_mmc_plat *plat = dev_get_plat(dev);
>
> return mmc_init(&plat->mmc);
> }
>
> -int sandbox_mmc_bind(struct udevice *dev)
> +static int sandbox_mmc_bind(struct udevice *dev)
> {
> struct sandbox_mmc_plat *plat = dev_get_plat(dev);
> struct mmc_config *cfg = &plat->cfg;
> @@ -158,7 +175,7 @@ int sandbox_mmc_bind(struct udevice *dev)
> return mmc_bind(dev, &plat->mmc, cfg);
> }
>
> -int sandbox_mmc_unbind(struct udevice *dev)
> +static int sandbox_mmc_unbind(struct udevice *dev)
> {
> mmc_unbind(dev);
>
> @@ -177,6 +194,7 @@ U_BOOT_DRIVER(mmc_sandbox) = {
> .ops = &sandbox_mmc_ops,
> .bind = sandbox_mmc_bind,
> .unbind = sandbox_mmc_unbind,
> + .of_to_plat = sandbox_mmc_of_to_plat,
> .probe = sandbox_mmc_probe,
> .priv_auto = sizeof(struct sandbox_mmc_priv),
> .plat_auto = sizeof(struct sandbox_mmc_plat),
>
More information about the U-Boot
mailing list