mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-28 00:11:32 +00:00
mmc: fsl_esdhc: always check write protect state
The QorIQ eSDHC on all platforms supports checking write protect state through register bit. So check it always. Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
This commit is contained in:
parent
08197cb8df
commit
0cc127c424
2 changed files with 4 additions and 12 deletions
|
@ -75,7 +75,6 @@ struct fsl_esdhc_plat {
|
||||||
* @mmc: mmc
|
* @mmc: mmc
|
||||||
* Following is used when Driver Model is enabled for MMC
|
* Following is used when Driver Model is enabled for MMC
|
||||||
* @dev: pointer for the device
|
* @dev: pointer for the device
|
||||||
* @wp_enable: 1: enable checking wp; 0: no check
|
|
||||||
* @cd_gpio: gpio for card detection
|
* @cd_gpio: gpio for card detection
|
||||||
* @wp_gpio: gpio for write protection
|
* @wp_gpio: gpio for write protection
|
||||||
*/
|
*/
|
||||||
|
@ -88,7 +87,6 @@ struct fsl_esdhc_priv {
|
||||||
struct mmc *mmc;
|
struct mmc *mmc;
|
||||||
#endif
|
#endif
|
||||||
struct udevice *dev;
|
struct udevice *dev;
|
||||||
int wp_enable;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Return the XFERTYP flags for a given command and data packet */
|
/* Return the XFERTYP flags for a given command and data packet */
|
||||||
|
@ -231,12 +229,10 @@ static int esdhc_setup_data(struct fsl_esdhc_priv *priv, struct mmc *mmc,
|
||||||
#endif
|
#endif
|
||||||
if (wml_value > WML_WR_WML_MAX)
|
if (wml_value > WML_WR_WML_MAX)
|
||||||
wml_value = WML_WR_WML_MAX_VAL;
|
wml_value = WML_WR_WML_MAX_VAL;
|
||||||
if (priv->wp_enable) {
|
|
||||||
if ((esdhc_read32(®s->prsstat) &
|
if (!(esdhc_read32(®s->prsstat) & PRSSTAT_WPSPL)) {
|
||||||
PRSSTAT_WPSPL) == 0) {
|
printf("Can not write to locked SD card.\n");
|
||||||
printf("\nThe SD card is locked. Can not write to a locked card.\n\n");
|
return -EINVAL;
|
||||||
return -ETIMEDOUT;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
esdhc_clrsetbits32(®s->wml, WML_WR_WML_MASK,
|
esdhc_clrsetbits32(®s->wml, WML_WR_WML_MASK,
|
||||||
|
@ -722,7 +718,6 @@ int fsl_esdhc_initialize(bd_t *bis, struct fsl_esdhc_cfg *cfg)
|
||||||
|
|
||||||
priv->esdhc_regs = (struct fsl_esdhc *)(unsigned long)(cfg->esdhc_base);
|
priv->esdhc_regs = (struct fsl_esdhc *)(unsigned long)(cfg->esdhc_base);
|
||||||
priv->sdhc_clk = cfg->sdhc_clk;
|
priv->sdhc_clk = cfg->sdhc_clk;
|
||||||
priv->wp_enable = cfg->wp_enable;
|
|
||||||
|
|
||||||
mmc_cfg = &plat->cfg;
|
mmc_cfg = &plat->cfg;
|
||||||
|
|
||||||
|
@ -862,8 +857,6 @@ static int fsl_esdhc_probe(struct udevice *dev)
|
||||||
#endif
|
#endif
|
||||||
priv->dev = dev;
|
priv->dev = dev;
|
||||||
|
|
||||||
priv->wp_enable = 1;
|
|
||||||
|
|
||||||
if (IS_ENABLED(CONFIG_CLK)) {
|
if (IS_ENABLED(CONFIG_CLK)) {
|
||||||
/* Assigned clock already set clock */
|
/* Assigned clock already set clock */
|
||||||
ret = clk_get_by_name(dev, "per", &priv->per_clk);
|
ret = clk_get_by_name(dev, "per", &priv->per_clk);
|
||||||
|
|
|
@ -168,7 +168,6 @@ struct fsl_esdhc_cfg {
|
||||||
phys_addr_t esdhc_base;
|
phys_addr_t esdhc_base;
|
||||||
u32 sdhc_clk;
|
u32 sdhc_clk;
|
||||||
u8 max_bus_width;
|
u8 max_bus_width;
|
||||||
int wp_enable;
|
|
||||||
int vs18_enable; /* Use 1.8V if set to 1 */
|
int vs18_enable; /* Use 1.8V if set to 1 */
|
||||||
struct mmc_config cfg;
|
struct mmc_config cfg;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Reference in a new issue