[PATCH v2 03/17] mmc: rockchip_sdhci: Fix use of device private data
Kever Yang
kever.yang at rock-chips.com
Thu Apr 20 11:55:35 CEST 2023
On 2023/4/19 00:46, Jonas Karlman wrote:
> The device private data is misused in rockchip_sdhci_of_to_plat and
> rockchip_sdhci_execute_tuning.
>
> In these functions dev_get_priv is assigned to struct sdhci_host:
>
> struct sdhci_host *host = dev_get_priv(dev);
>
> Instead, the sdhci host should refer to host in struct rockchip_sdhc:
>
> struct rockchip_sdhc *priv = dev_get_priv(dev);
> struct sdhci_host *host = &priv->host;
>
> Because host is the first member in struct rockchip_sdhc this is not a
> real problem, lets fix it anyway and also use priv name consistently.
>
> Signed-off-by: Jonas Karlman <jonas at kwiboo.se>
Reviewed-by: Kever Yang <kever.yang at rock-chips.com>
Thanks,
- Kever
> ---
> v2:
> - No change
>
> drivers/mmc/rockchip_sdhci.c | 16 +++++++++-------
> 1 file changed, 9 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/mmc/rockchip_sdhci.c b/drivers/mmc/rockchip_sdhci.c
> index e1409dd2c749..ae28840f6081 100644
> --- a/drivers/mmc/rockchip_sdhci.c
> +++ b/drivers/mmc/rockchip_sdhci.c
> @@ -450,7 +450,8 @@ static int rockchip_sdhci_set_ios_post(struct sdhci_host *host)
>
> static int rockchip_sdhci_execute_tuning(struct mmc *mmc, u8 opcode)
> {
> - struct sdhci_host *host = dev_get_priv(mmc->dev);
> + struct rockchip_sdhc *priv = dev_get_priv(mmc->dev);
> + struct sdhci_host *host = &priv->host;
> char tuning_loop_counter = SDHCI_TUNING_LOOP_COUNT;
> struct mmc_cmd cmd;
> u32 ctrl, blk_size;
> @@ -531,9 +532,9 @@ static int rockchip_sdhci_probe(struct udevice *dev)
> struct sdhci_data *data = (struct sdhci_data *)dev_get_driver_data(dev);
> struct mmc_uclass_priv *upriv = dev_get_uclass_priv(dev);
> struct rockchip_sdhc_plat *plat = dev_get_plat(dev);
> - struct rockchip_sdhc *prv = dev_get_priv(dev);
> + struct rockchip_sdhc *priv = dev_get_priv(dev);
> struct mmc_config *cfg = &plat->cfg;
> - struct sdhci_host *host = &prv->host;
> + struct sdhci_host *host = &priv->host;
> struct clk clk;
> int ret;
>
> @@ -547,8 +548,8 @@ static int rockchip_sdhci_probe(struct udevice *dev)
> printf("%s fail to get clk\n", __func__);
> }
>
> - prv->emmc_clk = clk;
> - prv->dev = dev;
> + priv->emmc_clk = clk;
> + priv->dev = dev;
>
> if (data->get_phy) {
> ret = data->get_phy(dev);
> @@ -566,7 +567,7 @@ static int rockchip_sdhci_probe(struct udevice *dev)
> host->quirks = SDHCI_QUIRK_WAIT_SEND_CMD;
>
> host->mmc = &plat->mmc;
> - host->mmc->priv = &prv->host;
> + host->mmc->priv = &priv->host;
> host->mmc->dev = dev;
> upriv->mmc = host->mmc;
>
> @@ -580,8 +581,9 @@ static int rockchip_sdhci_probe(struct udevice *dev)
> static int rockchip_sdhci_of_to_plat(struct udevice *dev)
> {
> struct rockchip_sdhc_plat *plat = dev_get_plat(dev);
> - struct sdhci_host *host = dev_get_priv(dev);
> + struct rockchip_sdhc *priv = dev_get_priv(dev);
> struct mmc_config *cfg = &plat->cfg;
> + struct sdhci_host *host = &priv->host;
> int ret;
>
> host->name = dev->name;
More information about the U-Boot
mailing list