* [PATCH v2 0/3] Fix issues with phy configurations in am65x MMC driver @ 2019-05-10 3:42 ` Faiz Abbas 0 siblings, 0 replies; 11+ messages in thread From: Faiz Abbas @ 2019-05-10 3:42 UTC (permalink / raw) To: linux-kernel, linux-mmc; +Cc: ulf.hansson, adrian.hunter, faiz_abbas The following patches fix issues with phy configurations for sdhci_am654 driver. v2: 1. Split patch 1 into 2 separate patches. 2. Improved patch descriptions. Faiz Abbas (3): mmc: sdhci_am654: Improve line wrapping with regmap_*() calls mmc: sdhci_am654: Print error message if the DLL fails to lock mmc: sdhci_am654: Fix SLOTTYPE write drivers/mmc/host/sdhci_am654.c | 37 ++++++++++++++++------------------ 1 file changed, 17 insertions(+), 20 deletions(-) -- 2.19.2 ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v2 0/3] Fix issues with phy configurations in am65x MMC driver @ 2019-05-10 3:42 ` Faiz Abbas 0 siblings, 0 replies; 11+ messages in thread From: Faiz Abbas @ 2019-05-10 3:42 UTC (permalink / raw) To: linux-kernel, linux-mmc; +Cc: ulf.hansson, adrian.hunter, faiz_abbas The following patches fix issues with phy configurations for sdhci_am654 driver. v2: 1. Split patch 1 into 2 separate patches. 2. Improved patch descriptions. Faiz Abbas (3): mmc: sdhci_am654: Improve line wrapping with regmap_*() calls mmc: sdhci_am654: Print error message if the DLL fails to lock mmc: sdhci_am654: Fix SLOTTYPE write drivers/mmc/host/sdhci_am654.c | 37 ++++++++++++++++------------------ 1 file changed, 17 insertions(+), 20 deletions(-) -- 2.19.2 ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v2 1/3] mmc: sdhci_am654: Improve line wrapping with regmap_*() calls 2019-05-10 3:42 ` Faiz Abbas @ 2019-05-10 3:42 ` Faiz Abbas -1 siblings, 0 replies; 11+ messages in thread From: Faiz Abbas @ 2019-05-10 3:42 UTC (permalink / raw) To: linux-kernel, linux-mmc; +Cc: ulf.hansson, adrian.hunter, faiz_abbas Line wrapping with the regmap_*() functions is way more conservative than required by the 80 character rule. Expand the function calls out to use less number of lines. Signed-off-by: Faiz Abbas <faiz_abbas@ti.com> --- drivers/mmc/host/sdhci_am654.c | 34 +++++++++++++--------------------- 1 file changed, 13 insertions(+), 21 deletions(-) diff --git a/drivers/mmc/host/sdhci_am654.c b/drivers/mmc/host/sdhci_am654.c index a91c0b45c48d..337c24b8f4a8 100644 --- a/drivers/mmc/host/sdhci_am654.c +++ b/drivers/mmc/host/sdhci_am654.c @@ -88,8 +88,7 @@ static void sdhci_am654_set_clock(struct sdhci_host *host, unsigned int clock) int ret; if (sdhci_am654->dll_on) { - regmap_update_bits(sdhci_am654->base, PHY_CTRL1, - ENDLL_MASK, 0); + regmap_update_bits(sdhci_am654->base, PHY_CTRL1, ENDLL_MASK, 0); sdhci_am654->dll_on = false; } @@ -101,8 +100,7 @@ static void sdhci_am654_set_clock(struct sdhci_host *host, unsigned int clock) mask = OTAPDLYENA_MASK | OTAPDLYSEL_MASK; val = (1 << OTAPDLYENA_SHIFT) | (sdhci_am654->otap_del_sel << OTAPDLYSEL_SHIFT); - regmap_update_bits(sdhci_am654->base, PHY_CTRL4, - mask, val); + regmap_update_bits(sdhci_am654->base, PHY_CTRL4, mask, val); switch (clock) { case 200000000: sel50 = 0; @@ -120,8 +118,7 @@ static void sdhci_am654_set_clock(struct sdhci_host *host, unsigned int clock) /* Configure PHY DLL frequency */ mask = SEL50_MASK | SEL100_MASK; val = (sel50 << SEL50_SHIFT) | (sel100 << SEL100_SHIFT); - regmap_update_bits(sdhci_am654->base, PHY_CTRL5, - mask, val); + regmap_update_bits(sdhci_am654->base, PHY_CTRL5, mask, val); /* Configure DLL TRIM */ mask = DLL_TRIM_ICP_MASK; val = sdhci_am654->trm_icp << DLL_TRIM_ICP_SHIFT; @@ -129,20 +126,17 @@ static void sdhci_am654_set_clock(struct sdhci_host *host, unsigned int clock) /* Configure DLL driver strength */ mask |= DR_TY_MASK; val |= sdhci_am654->drv_strength << DR_TY_SHIFT; - regmap_update_bits(sdhci_am654->base, PHY_CTRL1, - mask, val); + regmap_update_bits(sdhci_am654->base, PHY_CTRL1, mask, val); /* Enable DLL */ - regmap_update_bits(sdhci_am654->base, PHY_CTRL1, - ENDLL_MASK, 0x1 << ENDLL_SHIFT); + regmap_update_bits(sdhci_am654->base, PHY_CTRL1, ENDLL_MASK, + 0x1 << ENDLL_SHIFT); /* * Poll for DLL ready. Use a one second timeout. * Works in all experiments done so far */ - ret = regmap_read_poll_timeout(sdhci_am654->base, - PHY_STAT1, val, - val & DLLRDY_MASK, - 1000, 1000000); - + ret = regmap_read_poll_timeout(sdhci_am654->base, PHY_STAT1, + val, val & DLLRDY_MASK, 1000, + 1000000); sdhci_am654->dll_on = true; } } @@ -208,8 +202,7 @@ static int sdhci_am654_init(struct sdhci_host *host) /* Reset OTAP to default value */ mask = OTAPDLYENA_MASK | OTAPDLYSEL_MASK; - regmap_update_bits(sdhci_am654->base, PHY_CTRL4, - mask, 0x0); + regmap_update_bits(sdhci_am654->base, PHY_CTRL4, mask, 0x0); regmap_read(sdhci_am654->base, PHY_STAT1, &val); if (~val & CALDONE_MASK) { @@ -223,15 +216,14 @@ static int sdhci_am654_init(struct sdhci_host *host) } /* Enable pins by setting IO mux to 0 */ - regmap_update_bits(sdhci_am654->base, PHY_CTRL1, - IOMUX_ENABLE_MASK, 0); + regmap_update_bits(sdhci_am654->base, PHY_CTRL1, IOMUX_ENABLE_MASK, 0); /* Set slot type based on SD or eMMC */ if (host->mmc->caps & MMC_CAP_NONREMOVABLE) ctl_cfg_2 = SLOTTYPE_EMBEDDED; - regmap_update_bits(sdhci_am654->base, CTL_CFG_2, - ctl_cfg_2, SLOTTYPE_MASK); + regmap_update_bits(sdhci_am654->base, CTL_CFG_2, ctl_cfg_2, + SLOTTYPE_MASK); return sdhci_add_host(host); } -- 2.19.2 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v2 1/3] mmc: sdhci_am654: Improve line wrapping with regmap_*() calls @ 2019-05-10 3:42 ` Faiz Abbas 0 siblings, 0 replies; 11+ messages in thread From: Faiz Abbas @ 2019-05-10 3:42 UTC (permalink / raw) To: linux-kernel, linux-mmc; +Cc: ulf.hansson, adrian.hunter, faiz_abbas Line wrapping with the regmap_*() functions is way more conservative than required by the 80 character rule. Expand the function calls out to use less number of lines. Signed-off-by: Faiz Abbas <faiz_abbas@ti.com> --- drivers/mmc/host/sdhci_am654.c | 34 +++++++++++++--------------------- 1 file changed, 13 insertions(+), 21 deletions(-) diff --git a/drivers/mmc/host/sdhci_am654.c b/drivers/mmc/host/sdhci_am654.c index a91c0b45c48d..337c24b8f4a8 100644 --- a/drivers/mmc/host/sdhci_am654.c +++ b/drivers/mmc/host/sdhci_am654.c @@ -88,8 +88,7 @@ static void sdhci_am654_set_clock(struct sdhci_host *host, unsigned int clock) int ret; if (sdhci_am654->dll_on) { - regmap_update_bits(sdhci_am654->base, PHY_CTRL1, - ENDLL_MASK, 0); + regmap_update_bits(sdhci_am654->base, PHY_CTRL1, ENDLL_MASK, 0); sdhci_am654->dll_on = false; } @@ -101,8 +100,7 @@ static void sdhci_am654_set_clock(struct sdhci_host *host, unsigned int clock) mask = OTAPDLYENA_MASK | OTAPDLYSEL_MASK; val = (1 << OTAPDLYENA_SHIFT) | (sdhci_am654->otap_del_sel << OTAPDLYSEL_SHIFT); - regmap_update_bits(sdhci_am654->base, PHY_CTRL4, - mask, val); + regmap_update_bits(sdhci_am654->base, PHY_CTRL4, mask, val); switch (clock) { case 200000000: sel50 = 0; @@ -120,8 +118,7 @@ static void sdhci_am654_set_clock(struct sdhci_host *host, unsigned int clock) /* Configure PHY DLL frequency */ mask = SEL50_MASK | SEL100_MASK; val = (sel50 << SEL50_SHIFT) | (sel100 << SEL100_SHIFT); - regmap_update_bits(sdhci_am654->base, PHY_CTRL5, - mask, val); + regmap_update_bits(sdhci_am654->base, PHY_CTRL5, mask, val); /* Configure DLL TRIM */ mask = DLL_TRIM_ICP_MASK; val = sdhci_am654->trm_icp << DLL_TRIM_ICP_SHIFT; @@ -129,20 +126,17 @@ static void sdhci_am654_set_clock(struct sdhci_host *host, unsigned int clock) /* Configure DLL driver strength */ mask |= DR_TY_MASK; val |= sdhci_am654->drv_strength << DR_TY_SHIFT; - regmap_update_bits(sdhci_am654->base, PHY_CTRL1, - mask, val); + regmap_update_bits(sdhci_am654->base, PHY_CTRL1, mask, val); /* Enable DLL */ - regmap_update_bits(sdhci_am654->base, PHY_CTRL1, - ENDLL_MASK, 0x1 << ENDLL_SHIFT); + regmap_update_bits(sdhci_am654->base, PHY_CTRL1, ENDLL_MASK, + 0x1 << ENDLL_SHIFT); /* * Poll for DLL ready. Use a one second timeout. * Works in all experiments done so far */ - ret = regmap_read_poll_timeout(sdhci_am654->base, - PHY_STAT1, val, - val & DLLRDY_MASK, - 1000, 1000000); - + ret = regmap_read_poll_timeout(sdhci_am654->base, PHY_STAT1, + val, val & DLLRDY_MASK, 1000, + 1000000); sdhci_am654->dll_on = true; } } @@ -208,8 +202,7 @@ static int sdhci_am654_init(struct sdhci_host *host) /* Reset OTAP to default value */ mask = OTAPDLYENA_MASK | OTAPDLYSEL_MASK; - regmap_update_bits(sdhci_am654->base, PHY_CTRL4, - mask, 0x0); + regmap_update_bits(sdhci_am654->base, PHY_CTRL4, mask, 0x0); regmap_read(sdhci_am654->base, PHY_STAT1, &val); if (~val & CALDONE_MASK) { @@ -223,15 +216,14 @@ static int sdhci_am654_init(struct sdhci_host *host) } /* Enable pins by setting IO mux to 0 */ - regmap_update_bits(sdhci_am654->base, PHY_CTRL1, - IOMUX_ENABLE_MASK, 0); + regmap_update_bits(sdhci_am654->base, PHY_CTRL1, IOMUX_ENABLE_MASK, 0); /* Set slot type based on SD or eMMC */ if (host->mmc->caps & MMC_CAP_NONREMOVABLE) ctl_cfg_2 = SLOTTYPE_EMBEDDED; - regmap_update_bits(sdhci_am654->base, CTL_CFG_2, - ctl_cfg_2, SLOTTYPE_MASK); + regmap_update_bits(sdhci_am654->base, CTL_CFG_2, ctl_cfg_2, + SLOTTYPE_MASK); return sdhci_add_host(host); } -- 2.19.2 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v2 2/3] mmc: sdhci_am654: Print error message if the DLL fails to lock 2019-05-10 3:42 ` Faiz Abbas @ 2019-05-10 3:42 ` Faiz Abbas -1 siblings, 0 replies; 11+ messages in thread From: Faiz Abbas @ 2019-05-10 3:42 UTC (permalink / raw) To: linux-kernel, linux-mmc; +Cc: ulf.hansson, adrian.hunter, faiz_abbas Print an error message and return if DLL fails to lock. Signed-off-by: Faiz Abbas <faiz_abbas@ti.com> --- drivers/mmc/host/sdhci_am654.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/mmc/host/sdhci_am654.c b/drivers/mmc/host/sdhci_am654.c index 337c24b8f4a8..3ff949925127 100644 --- a/drivers/mmc/host/sdhci_am654.c +++ b/drivers/mmc/host/sdhci_am654.c @@ -137,6 +137,11 @@ static void sdhci_am654_set_clock(struct sdhci_host *host, unsigned int clock) ret = regmap_read_poll_timeout(sdhci_am654->base, PHY_STAT1, val, val & DLLRDY_MASK, 1000, 1000000); + if (ret) { + dev_err(mmc_dev(host->mmc), "DLL failed to relock\n"); + return; + } + sdhci_am654->dll_on = true; } } -- 2.19.2 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v2 2/3] mmc: sdhci_am654: Print error message if the DLL fails to lock @ 2019-05-10 3:42 ` Faiz Abbas 0 siblings, 0 replies; 11+ messages in thread From: Faiz Abbas @ 2019-05-10 3:42 UTC (permalink / raw) To: linux-kernel, linux-mmc; +Cc: ulf.hansson, adrian.hunter, faiz_abbas Print an error message and return if DLL fails to lock. Signed-off-by: Faiz Abbas <faiz_abbas@ti.com> --- drivers/mmc/host/sdhci_am654.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/mmc/host/sdhci_am654.c b/drivers/mmc/host/sdhci_am654.c index 337c24b8f4a8..3ff949925127 100644 --- a/drivers/mmc/host/sdhci_am654.c +++ b/drivers/mmc/host/sdhci_am654.c @@ -137,6 +137,11 @@ static void sdhci_am654_set_clock(struct sdhci_host *host, unsigned int clock) ret = regmap_read_poll_timeout(sdhci_am654->base, PHY_STAT1, val, val & DLLRDY_MASK, 1000, 1000000); + if (ret) { + dev_err(mmc_dev(host->mmc), "DLL failed to relock\n"); + return; + } + sdhci_am654->dll_on = true; } } -- 2.19.2 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v2 3/3] mmc: sdhci_am654: Fix SLOTTYPE write 2019-05-10 3:42 ` Faiz Abbas @ 2019-05-10 3:42 ` Faiz Abbas -1 siblings, 0 replies; 11+ messages in thread From: Faiz Abbas @ 2019-05-10 3:42 UTC (permalink / raw) To: linux-kernel, linux-mmc; +Cc: ulf.hansson, adrian.hunter, faiz_abbas In the call to regmap_update_bits() for SLOTTYPE, the mask and value fields are exchanged. Fix this. This didn't have any affect on the driver because this was a NOP and it was taking the correct value from the bootloader. Cc: stable <stable@vger.kernel.org> Signed-off-by: Faiz Abbas <faiz_abbas@ti.com> --- drivers/mmc/host/sdhci_am654.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/mmc/host/sdhci_am654.c b/drivers/mmc/host/sdhci_am654.c index 3ff949925127..d0b20780dd0f 100644 --- a/drivers/mmc/host/sdhci_am654.c +++ b/drivers/mmc/host/sdhci_am654.c @@ -227,8 +227,8 @@ static int sdhci_am654_init(struct sdhci_host *host) if (host->mmc->caps & MMC_CAP_NONREMOVABLE) ctl_cfg_2 = SLOTTYPE_EMBEDDED; - regmap_update_bits(sdhci_am654->base, CTL_CFG_2, ctl_cfg_2, - SLOTTYPE_MASK); + regmap_update_bits(sdhci_am654->base, CTL_CFG_2, SLOTTYPE_MASK, + ctl_cfg_2); return sdhci_add_host(host); } -- 2.19.2 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v2 3/3] mmc: sdhci_am654: Fix SLOTTYPE write @ 2019-05-10 3:42 ` Faiz Abbas 0 siblings, 0 replies; 11+ messages in thread From: Faiz Abbas @ 2019-05-10 3:42 UTC (permalink / raw) To: linux-kernel, linux-mmc; +Cc: ulf.hansson, adrian.hunter, faiz_abbas In the call to regmap_update_bits() for SLOTTYPE, the mask and value fields are exchanged. Fix this. This didn't have any affect on the driver because this was a NOP and it was taking the correct value from the bootloader. Cc: stable <stable@vger.kernel.org> Signed-off-by: Faiz Abbas <faiz_abbas@ti.com> --- drivers/mmc/host/sdhci_am654.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/mmc/host/sdhci_am654.c b/drivers/mmc/host/sdhci_am654.c index 3ff949925127..d0b20780dd0f 100644 --- a/drivers/mmc/host/sdhci_am654.c +++ b/drivers/mmc/host/sdhci_am654.c @@ -227,8 +227,8 @@ static int sdhci_am654_init(struct sdhci_host *host) if (host->mmc->caps & MMC_CAP_NONREMOVABLE) ctl_cfg_2 = SLOTTYPE_EMBEDDED; - regmap_update_bits(sdhci_am654->base, CTL_CFG_2, ctl_cfg_2, - SLOTTYPE_MASK); + regmap_update_bits(sdhci_am654->base, CTL_CFG_2, SLOTTYPE_MASK, + ctl_cfg_2); return sdhci_add_host(host); } -- 2.19.2 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH v2 3/3] mmc: sdhci_am654: Fix SLOTTYPE write 2019-05-10 3:42 ` Faiz Abbas (?) @ 2019-05-10 5:58 ` Adrian Hunter 2019-05-28 8:32 ` Faiz Abbas -1 siblings, 1 reply; 11+ messages in thread From: Adrian Hunter @ 2019-05-10 5:58 UTC (permalink / raw) To: Faiz Abbas, linux-kernel, linux-mmc; +Cc: ulf.hansson On 10/05/19 6:42 AM, Faiz Abbas wrote: > In the call to regmap_update_bits() for SLOTTYPE, the mask and value > fields are exchanged. Fix this. This didn't have any affect on the > driver because this was a NOP and it was taking the correct value from > the bootloader. > > Cc: stable <stable@vger.kernel.org> Except that it doesn't apply to stable because of patch 1. Maybe make this the first patch. > Signed-off-by: Faiz Abbas <faiz_abbas@ti.com> > --- > drivers/mmc/host/sdhci_am654.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/mmc/host/sdhci_am654.c b/drivers/mmc/host/sdhci_am654.c > index 3ff949925127..d0b20780dd0f 100644 > --- a/drivers/mmc/host/sdhci_am654.c > +++ b/drivers/mmc/host/sdhci_am654.c > @@ -227,8 +227,8 @@ static int sdhci_am654_init(struct sdhci_host *host) > if (host->mmc->caps & MMC_CAP_NONREMOVABLE) > ctl_cfg_2 = SLOTTYPE_EMBEDDED; > > - regmap_update_bits(sdhci_am654->base, CTL_CFG_2, ctl_cfg_2, > - SLOTTYPE_MASK); > + regmap_update_bits(sdhci_am654->base, CTL_CFG_2, SLOTTYPE_MASK, > + ctl_cfg_2); > > return sdhci_add_host(host); > } > ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 3/3] mmc: sdhci_am654: Fix SLOTTYPE write 2019-05-10 5:58 ` Adrian Hunter @ 2019-05-28 8:32 ` Faiz Abbas 0 siblings, 0 replies; 11+ messages in thread From: Faiz Abbas @ 2019-05-28 8:32 UTC (permalink / raw) To: Adrian Hunter, linux-kernel, linux-mmc; +Cc: ulf.hansson Hi Adrian, On 10/05/19 11:28 AM, Adrian Hunter wrote: > On 10/05/19 6:42 AM, Faiz Abbas wrote: >> In the call to regmap_update_bits() for SLOTTYPE, the mask and value >> fields are exchanged. Fix this. This didn't have any affect on the >> driver because this was a NOP and it was taking the correct value from >> the bootloader. >> >> Cc: stable <stable@vger.kernel.org> > > Except that it doesn't apply to stable because of patch 1. Maybe make this > the first patch. > Ok. Sending v3 with this as first patch. Thanks, Faiz ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 3/3] mmc: sdhci_am654: Fix SLOTTYPE write @ 2019-05-28 8:32 ` Faiz Abbas 0 siblings, 0 replies; 11+ messages in thread From: Faiz Abbas @ 2019-05-28 8:32 UTC (permalink / raw) To: Adrian Hunter, linux-kernel, linux-mmc; +Cc: ulf.hansson Hi Adrian, On 10/05/19 11:28 AM, Adrian Hunter wrote: > On 10/05/19 6:42 AM, Faiz Abbas wrote: >> In the call to regmap_update_bits() for SLOTTYPE, the mask and value >> fields are exchanged. Fix this. This didn't have any affect on the >> driver because this was a NOP and it was taking the correct value from >> the bootloader. >> >> Cc: stable <stable@vger.kernel.org> > > Except that it doesn't apply to stable because of patch 1. Maybe make this > the first patch. > Ok. Sending v3 with this as first patch. Thanks, Faiz ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2019-05-28 8:32 UTC | newest] Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2019-05-10 3:42 [PATCH v2 0/3] Fix issues with phy configurations in am65x MMC driver Faiz Abbas 2019-05-10 3:42 ` Faiz Abbas 2019-05-10 3:42 ` [PATCH v2 1/3] mmc: sdhci_am654: Improve line wrapping with regmap_*() calls Faiz Abbas 2019-05-10 3:42 ` Faiz Abbas 2019-05-10 3:42 ` [PATCH v2 2/3] mmc: sdhci_am654: Print error message if the DLL fails to lock Faiz Abbas 2019-05-10 3:42 ` Faiz Abbas 2019-05-10 3:42 ` [PATCH v2 3/3] mmc: sdhci_am654: Fix SLOTTYPE write Faiz Abbas 2019-05-10 3:42 ` Faiz Abbas 2019-05-10 5:58 ` Adrian Hunter 2019-05-28 8:32 ` Faiz Abbas 2019-05-28 8:32 ` Faiz Abbas
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.