[U-Boot] [PATCH v6] mmc: gen_atmel_mci: add driver model support for mci

Simon Glass sjg at chromium.org
Tue Jul 4 19:33:15 UTC 2017


Hi Wenyou,

On 12 April 2017 at 20:29, Wenyou Yang <wenyou.yang at atmel.com> wrote:
> Add the driver model support for Atmel mci while retaining the
> existing legacy code. This allows the driver to support boards
> that have converted to driver model as well as those that have not.
>
> Signed-off-by: Wenyou Yang <wenyou.yang at atmel.com>
> ---
>
> Changes in v6:
>  - Rebase the master branch (commit: 4f6d85bb51).
>
> Changes in v5:
>  - Rebase on v2017.03.
>
> Changes in v4:
>  - Remove unneeded #ifdef CONFIG_DM_MMC.
>
> Changes in v3:
>  - Use unified #ifdef CONFIG_DM_MMC #else...#endif, instead of #ifndef CONFIG_DM_MMC
>    #else...#endif.
>
> Changes in v2:
>  - Change the return type of atmel_mci_setup_cfg() from int to void.
>  - Add comments on the features depends on the IP version.
>  - Add the error handle path of clock.
>  - Fix the missing use priv->bus_clk_rate.
>  - Return from mmc_bind() directly, instead of checking its return.
>
>  drivers/mmc/Kconfig         |   9 +++
>  drivers/mmc/gen_atmel_mci.c | 158 +++++++++++++++++++++++++++++++++++++++++++-
>  2 files changed, 166 insertions(+), 1 deletion(-)

> +static int atmel_mci_bind(struct udevice *dev)
> +{
> +       struct atmel_mci_priv *priv = dev_get_priv(dev);
> +
> +       return mmc_bind(dev, &priv->mmc, &priv->cfg);
> +}

Sorry for not noticing this before, but I don't think this works as
intended. The bind() method is called before the device is probed and
so the device has no private data. You should use dev_get_platdata()
here, and set up a new structure to hold the mmc and cfg members.

See for example omap_hsmmc.c

Regards,
Simon


More information about the U-Boot mailing list