mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-10 18:53:38 +00:00
mmc: renesas_sdhi: limit block count to 16 bit for old revisions
commitc9a9497cce
upstream. R-Car Gen2 has two different SDHI incarnations in the same chip. The older one does not support the recently introduced 32 bit register access to the block count register. Make sure we use this feature only after the first known version. Thanks to the Renesas Testing team for this bug report! Fixes:5603731a15
("mmc: tmio: fix access width of Block Count Register") Reported-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com> Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> Reviewed-by: Simon Horman <horms+renesas@verge.net.au> Tested-by: Phong Hoang <phong.hoang.wz@renesas.com> Cc: stable@vger.kernel.org Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
65a5c93687
commit
42f358b2d4
1 changed files with 7 additions and 1 deletions
|
@ -557,6 +557,7 @@ int renesas_sdhi_probe(struct platform_device *pdev,
|
|||
struct renesas_sdhi *priv;
|
||||
struct resource *res;
|
||||
int irq, ret, i;
|
||||
u16 ver;
|
||||
|
||||
of_data = of_device_get_match_data(&pdev->dev);
|
||||
|
||||
|
@ -671,12 +672,17 @@ int renesas_sdhi_probe(struct platform_device *pdev,
|
|||
if (ret)
|
||||
goto efree;
|
||||
|
||||
ver = sd_ctrl_read16(host, CTL_VERSION);
|
||||
/* GEN2_SDR104 is first known SDHI to use 32bit block count */
|
||||
if (ver < SDHI_VER_GEN2_SDR104 && mmc_data->max_blk_count > U16_MAX)
|
||||
mmc_data->max_blk_count = U16_MAX;
|
||||
|
||||
ret = tmio_mmc_host_probe(host);
|
||||
if (ret < 0)
|
||||
goto edisclk;
|
||||
|
||||
/* One Gen2 SDHI incarnation does NOT have a CBSY bit */
|
||||
if (sd_ctrl_read16(host, CTL_VERSION) == SDHI_VER_GEN2_SDR50)
|
||||
if (ver == SDHI_VER_GEN2_SDR50)
|
||||
mmc_data->flags &= ~TMIO_MMC_HAVE_CBSY;
|
||||
|
||||
/* Enable tuning iff we have an SCC and a supported mode */
|
||||
|
|
Loading…
Reference in a new issue