Re: [U-Boot] [PATCH] tegra: mmc: Set the bus width correctly
On Wed, Jun 14, 2017 at 03:33:18PM +, Tom Warren wrote: > Thanks, Simon. I'll take it in to u-boot-tegra/master for the next PR. I assume this means it'll make v2017.07? Currently v2017.07-rc2 is broken, and this patch fixes the regression for me: Tested-by: Thierry Reding > > -Original Message- > > From: s...@google.com [mailto:s...@google.com] On Behalf Of Simon Glass > > Sent: Wednesday, June 14, 2017 4:32 AM > > To: Peter Chubb > > Cc: U-Boot Mailing List ; Tom Warren > > ; Stephen Warren ; > > Jaehoon Chung ; Stephen Warren > > > > Subject: Re: [PATCH] tegra: mmc: Set the bus width correctly > > > > Hi, > > > > On 7 June 2017 at 22:03, wrote: > > >> "Simon" == Simon Glass writes: > > > > > > Simon> The driver currently does not reset bit 5 of the hostctl > > > Simon> register even if the MMC stack requests it. Then means that > > > Simon> once a bus width of 8 is selected it is not possible to change > > > Simon> it back to 1. This breaks 'mmc rescan' which needs to start off > > > Simon> with a bus width of 1. > > > > > > Simon> The problem was surfaced by enabling CONFIG_DM_MMC_OPS on > > > Simon> tegra. Without this option the MMC stack fully reinits the > > > Simon> driver on a 'mmc rescan'. But with this option driver model > > > Simon> does not re-probe a driver once it has been probed once. > > > > > > Simon> Fix the driver to honour the request. > > > > > > Simon> Signed-off-by: Simon Glass --- > > > > > > Tested-by: Peter Chubb > > > > > > Simon> drivers/mmc/tegra_mmc.c | 2 +- 1 file changed, 1 insertion(+), > > > Simon> 1 deletion(-) > > > > > > Simon> diff --git a/drivers/mmc/tegra_mmc.c b/drivers/mmc/tegra_mmc.c > > > Simon> index 338e42b528..7d945a172e 100644 --- > > > Simon> a/drivers/mmc/tegra_mmc.c +++ b/drivers/mmc/tegra_mmc.c @@ > > > Simon> -438,7 +438,7 @@ static int tegra_mmc_set_ios(struct udevice > > > Simon> *dev) else if (mmc->bus_width == 4) ctrl |= (1 << 1); else - > > > Simon> ctrl &= ~(1 << 1); + ctrl &= ~(1 << 1 | 1 << 5); > > > > > > Simon> writeb(ctrl, &priv->reg->hostctl); debug("mmc_set_ios: > > > Simon> hostctl = %08X\n", ctrl); -- 2.13.0.506.g27d5fe0cd-goog > > > > Thanks for testing this. > > > > Tom please note this is a bug fix. > > > > - Simon > -- > nvpublic > ___ > U-Boot mailing list > U-Boot@lists.denx.de > https://lists.denx.de/listinfo/u-boot signature.asc Description: PGP signature ___ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot
Re: [U-Boot] [PATCH] tegra: mmc: Set the bus width correctly
Thanks, Simon. I'll take it in to u-boot-tegra/master for the next PR. > -Original Message- > From: s...@google.com [mailto:s...@google.com] On Behalf Of Simon Glass > Sent: Wednesday, June 14, 2017 4:32 AM > To: Peter Chubb > Cc: U-Boot Mailing List ; Tom Warren > ; Stephen Warren ; > Jaehoon Chung ; Stephen Warren > > Subject: Re: [PATCH] tegra: mmc: Set the bus width correctly > > Hi, > > On 7 June 2017 at 22:03, wrote: > >> "Simon" == Simon Glass writes: > > > > Simon> The driver currently does not reset bit 5 of the hostctl > > Simon> register even if the MMC stack requests it. Then means that > > Simon> once a bus width of 8 is selected it is not possible to change > > Simon> it back to 1. This breaks 'mmc rescan' which needs to start off > > Simon> with a bus width of 1. > > > > Simon> The problem was surfaced by enabling CONFIG_DM_MMC_OPS on > > Simon> tegra. Without this option the MMC stack fully reinits the > > Simon> driver on a 'mmc rescan'. But with this option driver model > > Simon> does not re-probe a driver once it has been probed once. > > > > Simon> Fix the driver to honour the request. > > > > Simon> Signed-off-by: Simon Glass --- > > > > Tested-by: Peter Chubb > > > > Simon> drivers/mmc/tegra_mmc.c | 2 +- 1 file changed, 1 insertion(+), > > Simon> 1 deletion(-) > > > > Simon> diff --git a/drivers/mmc/tegra_mmc.c b/drivers/mmc/tegra_mmc.c > > Simon> index 338e42b528..7d945a172e 100644 --- > > Simon> a/drivers/mmc/tegra_mmc.c +++ b/drivers/mmc/tegra_mmc.c @@ > > Simon> -438,7 +438,7 @@ static int tegra_mmc_set_ios(struct udevice > > Simon> *dev) else if (mmc->bus_width == 4) ctrl |= (1 << 1); else - > > Simon> ctrl &= ~(1 << 1); + ctrl &= ~(1 << 1 | 1 << 5); > > > > Simon> writeb(ctrl, &priv->reg->hostctl); debug("mmc_set_ios: > > Simon> hostctl = %08X\n", ctrl); -- 2.13.0.506.g27d5fe0cd-goog > > Thanks for testing this. > > Tom please note this is a bug fix. > > - Simon -- nvpublic ___ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot
Re: [U-Boot] [PATCH] tegra: mmc: Set the bus width correctly
Hi, On 7 June 2017 at 22:03, wrote: >> "Simon" == Simon Glass writes: > > Simon> The driver currently does not reset bit 5 of the hostctl > Simon> register even if the MMC stack requests it. Then means that > Simon> once a bus width of 8 is selected it is not possible to change > Simon> it back to 1. This breaks 'mmc rescan' which needs to start off > Simon> with a bus width of 1. > > Simon> The problem was surfaced by enabling CONFIG_DM_MMC_OPS on > Simon> tegra. Without this option the MMC stack fully reinits the > Simon> driver on a 'mmc rescan'. But with this option driver model > Simon> does not re-probe a driver once it has been probed once. > > Simon> Fix the driver to honour the request. > > Simon> Signed-off-by: Simon Glass --- > > Tested-by: Peter Chubb > > Simon> drivers/mmc/tegra_mmc.c | 2 +- 1 file changed, 1 insertion(+), > Simon> 1 deletion(-) > > Simon> diff --git a/drivers/mmc/tegra_mmc.c b/drivers/mmc/tegra_mmc.c > Simon> index 338e42b528..7d945a172e 100644 --- > Simon> a/drivers/mmc/tegra_mmc.c +++ b/drivers/mmc/tegra_mmc.c @@ > Simon> -438,7 +438,7 @@ static int tegra_mmc_set_ios(struct udevice > Simon> *dev) else if (mmc->bus_width == 4) ctrl |= (1 << 1); else - > Simon> ctrl &= ~(1 << 1); + ctrl &= ~(1 << 1 | 1 << 5); > > Simon> writeb(ctrl, &priv->reg->hostctl); debug("mmc_set_ios: > Simon> hostctl = %08X\n", ctrl); -- 2.13.0.506.g27d5fe0cd-goog Thanks for testing this. Tom please note this is a bug fix. - Simon ___ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot
Re: [U-Boot] [PATCH] tegra: mmc: Set the bus width correctly
> "Simon" == Simon Glass writes: Simon> The driver currently does not reset bit 5 of the hostctl Simon> register even if the MMC stack requests it. Then means that Simon> once a bus width of 8 is selected it is not possible to change Simon> it back to 1. This breaks 'mmc rescan' which needs to start off Simon> with a bus width of 1. Simon> The problem was surfaced by enabling CONFIG_DM_MMC_OPS on Simon> tegra. Without this option the MMC stack fully reinits the Simon> driver on a 'mmc rescan'. But with this option driver model Simon> does not re-probe a driver once it has been probed once. Simon> Fix the driver to honour the request. Simon> Signed-off-by: Simon Glass --- Tested-by: Peter Chubb Simon> drivers/mmc/tegra_mmc.c | 2 +- 1 file changed, 1 insertion(+), Simon> 1 deletion(-) Simon> diff --git a/drivers/mmc/tegra_mmc.c b/drivers/mmc/tegra_mmc.c Simon> index 338e42b528..7d945a172e 100644 --- Simon> a/drivers/mmc/tegra_mmc.c +++ b/drivers/mmc/tegra_mmc.c @@ Simon> -438,7 +438,7 @@ static int tegra_mmc_set_ios(struct udevice Simon> *dev) else if (mmc->bus_width == 4) ctrl |= (1 << 1); else - Simon> ctrl &= ~(1 << 1); + ctrl &= ~(1 << 1 | 1 << 5); Simon> writeb(ctrl, &priv->reg->hostctl); debug("mmc_set_ios: Simon> hostctl = %08X\n", ctrl); -- 2.13.0.506.g27d5fe0cd-goog Simon> -- Dr Peter Chubb Tel: +61 2 9490 5852 http://ts.data61.csiro.au/ Trustworthy Systems Group Data61 (formerly NICTA) ___ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot
[U-Boot] [PATCH] tegra: mmc: Set the bus width correctly
The driver currently does not reset bit 5 of the hostctl register even if the MMC stack requests it. Then means that once a bus width of 8 is selected it is not possible to change it back to 1. This breaks 'mmc rescan' which needs to start off with a bus width of 1. The problem was surfaced by enabling CONFIG_DM_MMC_OPS on tegra. Without this option the MMC stack fully reinits the driver on a 'mmc rescan'. But with this option driver model does not re-probe a driver once it has been probed once. Fix the driver to honour the request. Signed-off-by: Simon Glass --- drivers/mmc/tegra_mmc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/mmc/tegra_mmc.c b/drivers/mmc/tegra_mmc.c index 338e42b528..7d945a172e 100644 --- a/drivers/mmc/tegra_mmc.c +++ b/drivers/mmc/tegra_mmc.c @@ -438,7 +438,7 @@ static int tegra_mmc_set_ios(struct udevice *dev) else if (mmc->bus_width == 4) ctrl |= (1 << 1); else - ctrl &= ~(1 << 1); + ctrl &= ~(1 << 1 | 1 << 5); writeb(ctrl, &priv->reg->hostctl); debug("mmc_set_ios: hostctl = %08X\n", ctrl); -- 2.13.0.506.g27d5fe0cd-goog ___ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot