mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-30 11:01:33 +00:00
mmc: uniphier-sd: return error code if unsupported width is given
With the CONFIG_DM_MMC_OPS migration, the .set_ios callback can return an integer now. Return an appropriate error value rather than sudden death by BUG(). Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
This commit is contained in:
parent
4eb008460c
commit
8be12e2839
1 changed files with 9 additions and 5 deletions
|
@ -496,8 +496,8 @@ static int uniphier_sd_send_cmd(struct udevice *dev, struct mmc_cmd *cmd,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void uniphier_sd_set_bus_width(struct uniphier_sd_priv *priv,
|
static int uniphier_sd_set_bus_width(struct uniphier_sd_priv *priv,
|
||||||
struct mmc *mmc)
|
struct mmc *mmc)
|
||||||
{
|
{
|
||||||
u32 val, tmp;
|
u32 val, tmp;
|
||||||
|
|
||||||
|
@ -512,14 +512,15 @@ static void uniphier_sd_set_bus_width(struct uniphier_sd_priv *priv,
|
||||||
val = UNIPHIER_SD_OPTION_WIDTH_8;
|
val = UNIPHIER_SD_OPTION_WIDTH_8;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
BUG();
|
return -EINVAL;
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
tmp = readl(priv->regbase + UNIPHIER_SD_OPTION);
|
tmp = readl(priv->regbase + UNIPHIER_SD_OPTION);
|
||||||
tmp &= ~UNIPHIER_SD_OPTION_WIDTH_MASK;
|
tmp &= ~UNIPHIER_SD_OPTION_WIDTH_MASK;
|
||||||
tmp |= val;
|
tmp |= val;
|
||||||
writel(tmp, priv->regbase + UNIPHIER_SD_OPTION);
|
writel(tmp, priv->regbase + UNIPHIER_SD_OPTION);
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void uniphier_sd_set_ddr_mode(struct uniphier_sd_priv *priv,
|
static void uniphier_sd_set_ddr_mode(struct uniphier_sd_priv *priv,
|
||||||
|
@ -587,11 +588,14 @@ static int uniphier_sd_set_ios(struct udevice *dev)
|
||||||
{
|
{
|
||||||
struct uniphier_sd_priv *priv = dev_get_priv(dev);
|
struct uniphier_sd_priv *priv = dev_get_priv(dev);
|
||||||
struct mmc *mmc = mmc_get_mmc_dev(dev);
|
struct mmc *mmc = mmc_get_mmc_dev(dev);
|
||||||
|
int ret;
|
||||||
|
|
||||||
dev_dbg(dev, "clock %uHz, DDRmode %d, width %u\n",
|
dev_dbg(dev, "clock %uHz, DDRmode %d, width %u\n",
|
||||||
mmc->clock, mmc->ddr_mode, mmc->bus_width);
|
mmc->clock, mmc->ddr_mode, mmc->bus_width);
|
||||||
|
|
||||||
uniphier_sd_set_bus_width(priv, mmc);
|
ret = uniphier_sd_set_bus_width(priv, mmc);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
uniphier_sd_set_ddr_mode(priv, mmc);
|
uniphier_sd_set_ddr_mode(priv, mmc);
|
||||||
uniphier_sd_set_clk_rate(priv, mmc);
|
uniphier_sd_set_clk_rate(priv, mmc);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue