* [PATCH] clk: exynos5250: Fix divider values for sclk_mmc{0,1,2,3}
@ 2013-04-02 8:20 Tushar Behera
2013-04-04 21:33 ` Mike Turquette
0 siblings, 1 reply; 11+ messages in thread
From: Tushar Behera @ 2013-04-02 8:20 UTC (permalink / raw)
To: linux-kernel, linux-samsung-soc
Cc: mturquette, kgene.kim, patches, Thomas Abraham
In legacy setup, sclk_mmc{0,1,2,3} used PRE_RATIO bit-field (8-bit wide)
instead of RATIO bit-field (4-bit wide) for dividing clock rate.
With current common clock setup, we are using RATIO bit-field which
is creating FIFO read errors while accessing eMMC. Changing over to
use PRE_RATIO bit-field fixes this issue.
dwmmc_exynos 12200000.dwmmc0: data FIFO error (status=00008020)
mmcblk0: error -5 transferring data, sector 1, nr 7, cmd response 0x900, card status 0x0
end_request: I/O error, dev mmcblk0, sector 1
Signed-off-by: Tushar Behera <tushar.behera@linaro.org>
CC: Thomas Abraham <thomas.abraham@linaro.org>
---
Based on Kukjin's for-next branch.
commit d58f6a153f40 ("Merge branch 'next/clk-exynos-2' into for-next")
drivers/clk/samsung/clk-exynos5250.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/clk/samsung/clk-exynos5250.c b/drivers/clk/samsung/clk-exynos5250.c
index 1152125..2c46fbd 100644
--- a/drivers/clk/samsung/clk-exynos5250.c
+++ b/drivers/clk/samsung/clk-exynos5250.c
@@ -274,10 +274,10 @@ struct samsung_div_clock exynos5250_div_clks[] __initdata = {
DIV(none, "div_pcm0", "sclk_audio0", DIV_MAU, 4, 8),
DIV(none, "div_sata", "mout_sata", DIV_FSYS0, 20, 4),
DIV(none, "div_usb3", "mout_usb3", DIV_FSYS0, 24, 4),
- DIV(none, "div_mmc0", "mout_mmc0", DIV_FSYS1, 0, 4),
- DIV(none, "div_mmc1", "mout_mmc1", DIV_FSYS1, 16, 4),
- DIV(none, "div_mmc2", "mout_mmc2", DIV_FSYS2, 0, 4),
- DIV(none, "div_mmc3", "mout_mmc3", DIV_FSYS2, 16, 4),
+ DIV(none, "div_mmc0", "mout_mmc0", DIV_FSYS1, 8, 8),
+ DIV(none, "div_mmc1", "mout_mmc1", DIV_FSYS1, 24, 8),
+ DIV(none, "div_mmc2", "mout_mmc2", DIV_FSYS2, 8, 8),
+ DIV(none, "div_mmc3", "mout_mmc3", DIV_FSYS2, 24, 8),
DIV(none, "div_uart0", "mout_uart0", DIV_PERIC0, 0, 4),
DIV(none, "div_uart1", "mout_uart1", DIV_PERIC0, 4, 4),
DIV(none, "div_uart2", "mout_uart2", DIV_PERIC0, 8, 4),
--
1.7.9.5
^ permalink raw reply related [flat|nested] 11+ messages in thread* Re: [PATCH] clk: exynos5250: Fix divider values for sclk_mmc{0,1,2,3} 2013-04-02 8:20 [PATCH] clk: exynos5250: Fix divider values for sclk_mmc{0,1,2,3} Tushar Behera @ 2013-04-04 21:33 ` Mike Turquette 2013-04-08 7:22 ` Kukjin Kim 0 siblings, 1 reply; 11+ messages in thread From: Mike Turquette @ 2013-04-04 21:33 UTC (permalink / raw) To: Tushar Behera, linux-kernel, linux-samsung-soc Cc: kgene.kim, patches, Thomas Abraham Quoting Tushar Behera (2013-04-02 01:20:40) > In legacy setup, sclk_mmc{0,1,2,3} used PRE_RATIO bit-field (8-bit wide) > instead of RATIO bit-field (4-bit wide) for dividing clock rate. > > With current common clock setup, we are using RATIO bit-field which > is creating FIFO read errors while accessing eMMC. Changing over to > use PRE_RATIO bit-field fixes this issue. > > dwmmc_exynos 12200000.dwmmc0: data FIFO error (status=00008020) > mmcblk0: error -5 transferring data, sector 1, nr 7, cmd response 0x900, card status 0x0 > end_request: I/O error, dev mmcblk0, sector 1 > > Signed-off-by: Tushar Behera <tushar.behera@linaro.org> > CC: Thomas Abraham <thomas.abraham@linaro.org> I guess this will be applied through the samsung tree, so: Acked-by: Mike Turquette <mturquette@linaro.org> > --- > > Based on Kukjin's for-next branch. > commit d58f6a153f40 ("Merge branch 'next/clk-exynos-2' into for-next") > > drivers/clk/samsung/clk-exynos5250.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/drivers/clk/samsung/clk-exynos5250.c b/drivers/clk/samsung/clk-exynos5250.c > index 1152125..2c46fbd 100644 > --- a/drivers/clk/samsung/clk-exynos5250.c > +++ b/drivers/clk/samsung/clk-exynos5250.c > @@ -274,10 +274,10 @@ struct samsung_div_clock exynos5250_div_clks[] __initdata = { > DIV(none, "div_pcm0", "sclk_audio0", DIV_MAU, 4, 8), > DIV(none, "div_sata", "mout_sata", DIV_FSYS0, 20, 4), > DIV(none, "div_usb3", "mout_usb3", DIV_FSYS0, 24, 4), > - DIV(none, "div_mmc0", "mout_mmc0", DIV_FSYS1, 0, 4), > - DIV(none, "div_mmc1", "mout_mmc1", DIV_FSYS1, 16, 4), > - DIV(none, "div_mmc2", "mout_mmc2", DIV_FSYS2, 0, 4), > - DIV(none, "div_mmc3", "mout_mmc3", DIV_FSYS2, 16, 4), > + DIV(none, "div_mmc0", "mout_mmc0", DIV_FSYS1, 8, 8), > + DIV(none, "div_mmc1", "mout_mmc1", DIV_FSYS1, 24, 8), > + DIV(none, "div_mmc2", "mout_mmc2", DIV_FSYS2, 8, 8), > + DIV(none, "div_mmc3", "mout_mmc3", DIV_FSYS2, 24, 8), > DIV(none, "div_uart0", "mout_uart0", DIV_PERIC0, 0, 4), > DIV(none, "div_uart1", "mout_uart1", DIV_PERIC0, 4, 4), > DIV(none, "div_uart2", "mout_uart2", DIV_PERIC0, 8, 4), > -- > 1.7.9.5 ^ permalink raw reply [flat|nested] 11+ messages in thread
* RE: [PATCH] clk: exynos5250: Fix divider values for sclk_mmc{0,1,2,3} 2013-04-04 21:33 ` Mike Turquette @ 2013-04-08 7:22 ` Kukjin Kim 2013-04-16 19:35 ` Doug Anderson 0 siblings, 1 reply; 11+ messages in thread From: Kukjin Kim @ 2013-04-08 7:22 UTC (permalink / raw) To: 'Mike Turquette', 'Tushar Behera', linux-kernel, linux-samsung-soc Cc: patches, 'Thomas Abraham' Mike Turquette wrote: > > Quoting Tushar Behera (2013-04-02 01:20:40) > > In legacy setup, sclk_mmc{0,1,2,3} used PRE_RATIO bit-field (8-bit wide) > > instead of RATIO bit-field (4-bit wide) for dividing clock rate. > > > > With current common clock setup, we are using RATIO bit-field which > > is creating FIFO read errors while accessing eMMC. Changing over to > > use PRE_RATIO bit-field fixes this issue. > > > > dwmmc_exynos 12200000.dwmmc0: data FIFO error (status=00008020) > > mmcblk0: error -5 transferring data, sector 1, nr 7, cmd response 0x900, > card status 0x0 > > end_request: I/O error, dev mmcblk0, sector 1 > > > > Signed-off-by: Tushar Behera <tushar.behera@linaro.org> > > CC: Thomas Abraham <thomas.abraham@linaro.org> > > I guess this will be applied through the samsung tree, so: > > Acked-by: Mike Turquette <mturquette@linaro.org> > Thanks, applied. - Kukjin ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] clk: exynos5250: Fix divider values for sclk_mmc{0,1,2,3} 2013-04-08 7:22 ` Kukjin Kim @ 2013-04-16 19:35 ` Doug Anderson 2013-04-22 17:40 ` Olof Johansson 2013-04-23 6:31 ` [PATCH] clk: exynos5250: Fix parent clock " Tushar Behera 0 siblings, 2 replies; 11+ messages in thread From: Doug Anderson @ 2013-04-16 19:35 UTC (permalink / raw) To: Kukjin Kim Cc: Mike Turquette, Tushar Behera, linux-kernel@vger.kernel.org, linux-samsung-soc, Patch Tracking, Thomas Abraham, Olof Johansson Hi, On Mon, Apr 8, 2013 at 12:22 AM, Kukjin Kim <kgene.kim@samsung.com> wrote: > Mike Turquette wrote: >> >> Quoting Tushar Behera (2013-04-02 01:20:40) >> > In legacy setup, sclk_mmc{0,1,2,3} used PRE_RATIO bit-field (8-bit wide) >> > instead of RATIO bit-field (4-bit wide) for dividing clock rate. >> > >> > With current common clock setup, we are using RATIO bit-field which >> > is creating FIFO read errors while accessing eMMC. Changing over to >> > use PRE_RATIO bit-field fixes this issue. >> > >> > dwmmc_exynos 12200000.dwmmc0: data FIFO error (status=00008020) >> > mmcblk0: error -5 transferring data, sector 1, nr 7, cmd response 0x900, >> card status 0x0 >> > end_request: I/O error, dev mmcblk0, sector 1 >> > >> > Signed-off-by: Tushar Behera <tushar.behera@linaro.org> >> > CC: Thomas Abraham <thomas.abraham@linaro.org> >> >> I guess this will be applied through the samsung tree, so: >> >> Acked-by: Mike Turquette <mturquette@linaro.org> >> > Thanks, applied. I haven't yet had time to dig / track down why, but this patch totally messes up access to the eMMC on the ARM Chromebook (exynos5250-snow). I suddenly start getting FIFO errors like you show above. When I revert your change then I'm all happy. Perhaps I need a device tree setting change as well? I always forget how the "samsung,dw-mshc-ciu-div" / "samsung,dw-mshc-sdr-timing" properties work... For the short term I'm going to revert locally since I've got a few other things to do over the next few days. If nobody else gets around to it then I'll try to find time to dig further. --- Log messages at boot before your change applied: localhost ~ # dmesg | grep mmc[a-z]*0 [ 1.460000] dwmmc_exynos 12200000.dwmmc0: Using internal DMA controller. [ 1.465000] dwmmc_exynos 12200000.dwmmc0: Version ID is 241a [ 1.475000] dwmmc_exynos 12200000.dwmmc0: DW MMC controller at irq 107, 32 bit host data width, 128 deep fifo [ 1.485000] mmc0: no vmmc regulator found [ 1.510000] mmc_host mmc0: Bus speed (slot 0) = 100000000Hz (slot req 400000Hz, actual 400000HZ div = 125) [ 1.530000] dwmmc_exynos 12200000.dwmmc0: 1 slots initialized [ 1.750000] mmc0: BKOPS_EN bit is not set [ 1.750000] mmc_host mmc0: Bus speed (slot 0) = 100000000Hz (slot req 52000000Hz, actual 50000000HZ div = 1) [ 1.755000] mmc0: new high speed DDR MMC card at address 0001 [ 1.755000] mmcblk0: mmc0:0001 SEM16G 14.6 GiB [ 1.780000] mmcblk0boot0: mmc0:0001 SEM16G partition 1 2.00 MiB [ 1.785000] mmcblk0boot1: mmc0:0001 SEM16G partition 2 2.00 MiB [ 1.790000] mmcblk0rpmb: mmc0:0001 SEM16G partition 3 128 KiB [ 1.800000] mmcblk0: p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 [ 1.825000] mmcblk0boot1: unknown partition table [ 1.835000] mmcblk0boot0: unknown partition table Log messages at boot after your change (note that the bus speed is reported as different which is what lead me to your change): localhost ~ # dmesg | grep mmc[a-z]*0 [ 1.440000] dwmmc_exynos 12200000.dwmmc0: Using internal DMA controller. [ 1.445000] dwmmc_exynos 12200000.dwmmc0: Version ID is 241a [ 1.455000] dwmmc_exynos 12200000.dwmmc0: DW MMC controller at irq 107, 32 bit host data width, 128 deep fifo [ 1.465000] mmc0: no vmmc regulator found [ 1.490000] mmc_host mmc0: Bus speed (slot 0) = 200000000Hz (slot req 400000Hz, actual 400000HZ div = 250) [ 1.510000] dwmmc_exynos 12200000.dwmmc0: 1 slots initialized [ 1.760000] mmc0: BKOPS_EN bit is not set [ 1.770000] mmc_host mmc0: Bus speed (slot 0) = 200000000Hz (slot req 52000000Hz, actual 50000000HZ div = 2) [ 1.770000] mmc0: new high speed DDR MMC card at address 0001 [ 1.785000] mmcblk0: mmc0:0001 SEM16G 14.6 GiB [ 1.855000] mmcblk0boot0: mmc0:0001 SEM16G partition 1 2.00 MiB [ 1.860000] mmcblk0boot1: mmc0:0001 SEM16G partition 2 2.00 MiB [ 1.950000] mmcblk0rpmb: mmc0:0001 SEM16G partition 3 128 KiB [ 1.955000] mmcblk0: error -84 transferring data, sector 0, nr 8, cmd response 0x900, card status 0xb00 [ 1.965000] mmcblk0: retrying using single block read [ 1.970000] mmcblk0: error -84 transferring data, sector 0, nr 8, cmd response 0x900, card status 0x0 [ 1.980000] end_request: I/O error, dev mmcblk0, sector 0 [ 1.985000] mmcblk0: error -84 transferring data, sector 1, nr 7, cmd response 0x900, card status 0x0 [ 1.995000] end_request: I/O error, dev mmcblk0, sector 1 [ 2.000000] mmcblk0: error -84 transferring data, sector 2, nr 6, cmd response 0x900, card status 0x0 [ 2.010000] end_request: I/O error, dev mmcblk0, sector 2 [ 2.015000] mmcblk0: error -84 transferring data, sector 3, nr 5, cmd response 0x900, card status 0x0 [ 2.025000] end_request: I/O error, dev mmcblk0, sector 3 [ 2.030000] mmcblk0: error -84 transferring data, sector 4, nr 4, cmd response 0x900, card status 0x0 [ 2.040000] end_request: I/O error, dev mmcblk0, sector 4 [ 2.045000] dwmmc_exynos 12200000.dwmmc0: data FIFO error (status=00008008) [ 2.050000] mmcblk0: error -5 transferring data, sector 5, nr 3, cmd response 0x900, card status 0x0 [ 2.060000] end_request: I/O error, dev mmcblk0, sector 5 ... ... ... ... -Doug ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] clk: exynos5250: Fix divider values for sclk_mmc{0,1,2,3} 2013-04-16 19:35 ` Doug Anderson @ 2013-04-22 17:40 ` Olof Johansson 2013-04-23 2:52 ` Tushar Behera 2013-04-23 6:31 ` [PATCH] clk: exynos5250: Fix parent clock " Tushar Behera 1 sibling, 1 reply; 11+ messages in thread From: Olof Johansson @ 2013-04-22 17:40 UTC (permalink / raw) To: Doug Anderson, Kukjin Kim, Tushar Behera Cc: Mike Turquette, linux-kernel@vger.kernel.org, linux-samsung-soc, Patch Tracking, Thomas Abraham, Olof Johansson Hi, On Tue, Apr 16, 2013 at 12:35 PM, Doug Anderson <dianders@chromium.org> wrote: > Hi, > > On Mon, Apr 8, 2013 at 12:22 AM, Kukjin Kim <kgene.kim@samsung.com> wrote: >> Mike Turquette wrote: >>> >>> Quoting Tushar Behera (2013-04-02 01:20:40) >>> > In legacy setup, sclk_mmc{0,1,2,3} used PRE_RATIO bit-field (8-bit wide) >>> > instead of RATIO bit-field (4-bit wide) for dividing clock rate. >>> > >>> > With current common clock setup, we are using RATIO bit-field which >>> > is creating FIFO read errors while accessing eMMC. Changing over to >>> > use PRE_RATIO bit-field fixes this issue. >>> > >>> > dwmmc_exynos 12200000.dwmmc0: data FIFO error (status=00008020) >>> > mmcblk0: error -5 transferring data, sector 1, nr 7, cmd response 0x900, >>> card status 0x0 >>> > end_request: I/O error, dev mmcblk0, sector 1 >>> > >>> > Signed-off-by: Tushar Behera <tushar.behera@linaro.org> >>> > CC: Thomas Abraham <thomas.abraham@linaro.org> >>> >>> I guess this will be applied through the samsung tree, so: >>> >>> Acked-by: Mike Turquette <mturquette@linaro.org> >>> >> Thanks, applied. > > I haven't yet had time to dig / track down why, but this patch totally > messes up access to the eMMC on the ARM Chromebook (exynos5250-snow). > I suddenly start getting FIFO errors like you show above. When I > revert your change then I'm all happy. > > Perhaps I need a device tree setting change as well? I always forget > how the "samsung,dw-mshc-ciu-div" / "samsung,dw-mshc-sdr-timing" > properties work... > > For the short term I'm going to revert locally since I've got a few > other things to do over the next few days. If nobody else gets around > to it then I'll try to find time to dig further. Unless I hear differently within 24 hours, I am going to revert this in arm-soc (since that is where it is merged right now). It is obviously causing regressions on existing platforms. I am _NOT_ happy to see dead silence about this for 6 days. Tushar?? -Olof ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] clk: exynos5250: Fix divider values for sclk_mmc{0,1,2,3} 2013-04-22 17:40 ` Olof Johansson @ 2013-04-23 2:52 ` Tushar Behera 0 siblings, 0 replies; 11+ messages in thread From: Tushar Behera @ 2013-04-23 2:52 UTC (permalink / raw) To: Olof Johansson Cc: Doug Anderson, Kukjin Kim, Mike Turquette, linux-kernel@vger.kernel.org, linux-samsung-soc, Patch Tracking, Thomas Abraham, Olof Johansson On 04/22/2013 11:10 PM, Olof Johansson wrote: > Hi, > > On Tue, Apr 16, 2013 at 12:35 PM, Doug Anderson <dianders@chromium.org> wrote: >> Hi, >> >> On Mon, Apr 8, 2013 at 12:22 AM, Kukjin Kim <kgene.kim@samsung.com> wrote: >>> Mike Turquette wrote: >>>> >>>> Quoting Tushar Behera (2013-04-02 01:20:40) >>>>> In legacy setup, sclk_mmc{0,1,2,3} used PRE_RATIO bit-field (8-bit wide) >>>>> instead of RATIO bit-field (4-bit wide) for dividing clock rate. >>>>> >>>>> With current common clock setup, we are using RATIO bit-field which >>>>> is creating FIFO read errors while accessing eMMC. Changing over to >>>>> use PRE_RATIO bit-field fixes this issue. >>>>> >>>>> dwmmc_exynos 12200000.dwmmc0: data FIFO error (status=00008020) >>>>> mmcblk0: error -5 transferring data, sector 1, nr 7, cmd response 0x900, >>>> card status 0x0 >>>>> end_request: I/O error, dev mmcblk0, sector 1 >>>>> >>>>> Signed-off-by: Tushar Behera <tushar.behera@linaro.org> >>>>> CC: Thomas Abraham <thomas.abraham@linaro.org> >>>> >>>> I guess this will be applied through the samsung tree, so: >>>> >>>> Acked-by: Mike Turquette <mturquette@linaro.org> >>>> >>> Thanks, applied. >> >> I haven't yet had time to dig / track down why, but this patch totally >> messes up access to the eMMC on the ARM Chromebook (exynos5250-snow). >> I suddenly start getting FIFO errors like you show above. When I >> revert your change then I'm all happy. >> >> Perhaps I need a device tree setting change as well? I always forget >> how the "samsung,dw-mshc-ciu-div" / "samsung,dw-mshc-sdr-timing" >> properties work... >> >> For the short term I'm going to revert locally since I've got a few >> other things to do over the next few days. If nobody else gets around >> to it then I'll try to find time to dig further. > > Unless I hear differently within 24 hours, I am going to revert this > in arm-soc (since that is where it is merged right now). > I will have a look at it today. > It is obviously causing regressions on existing platforms. I am _NOT_ > happy to see dead silence about this for 6 days. Tushar?? > Apologies. > > > -Olof > -- Tushar Behera ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH] clk: exynos5250: Fix parent clock for sclk_mmc{0,1,2,3} 2013-04-16 19:35 ` Doug Anderson 2013-04-22 17:40 ` Olof Johansson @ 2013-04-23 6:31 ` Tushar Behera 2013-04-23 15:59 ` Doug Anderson ` (2 more replies) 1 sibling, 3 replies; 11+ messages in thread From: Tushar Behera @ 2013-04-23 6:31 UTC (permalink / raw) To: linux-samsung-soc, linux-kernel Cc: dianders, kgene.kim, mturquette, thomas.abraham, olofj, patches commit 688f7d8c9fef ("clk: exynos5250: Fix divider values for sclk_mmc{0,1,2,3}") incorrectly sets the divider for sclk_mmc{0,1,2,3} to fix the wrong clock value. Though this fixed issue with Arndale, it created regressions for other boards like Snow. On Exynos5250, sclk_mmc<n> is generated like below (as per the clock names in drivers/clk/samsung/clk-exynos5250.c) mout_group1_p ==> mout_mmc<n> ==> div_mmc<n> ==> div_mmc_pre<n> => sclk_mmc<n> Earlier div_mmc<n> was set as the parent for sclk_mmc<n>, hence div_mmc_pre<n> was not getting referred in kernel code and depending on its value set during preboot, sclk_mmc<n> value was different for various boards. Setting the correct clock generation path should fix the issues reported in above referenced commit. The changes committed during the earlier patch has also been reverted here. Signed-off-by: Tushar Behera <tushar.behera@linaro.org> CC: Doug Anderson <dianders@chromium.org> --- Doug, Would you please test whether this patch works for Snow? drivers/clk/samsung/clk-exynos5250.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/drivers/clk/samsung/clk-exynos5250.c b/drivers/clk/samsung/clk-exynos5250.c index 7290faa..bb54606 100644 --- a/drivers/clk/samsung/clk-exynos5250.c +++ b/drivers/clk/samsung/clk-exynos5250.c @@ -276,10 +276,10 @@ struct samsung_div_clock exynos5250_div_clks[] __initdata = { DIV(none, "div_pcm0", "sclk_audio0", DIV_MAU, 4, 8), DIV(none, "div_sata", "mout_sata", DIV_FSYS0, 20, 4), DIV(none, "div_usb3", "mout_usb3", DIV_FSYS0, 24, 4), - DIV(none, "div_mmc0", "mout_mmc0", DIV_FSYS1, 8, 8), - DIV(none, "div_mmc1", "mout_mmc1", DIV_FSYS1, 24, 8), - DIV(none, "div_mmc2", "mout_mmc2", DIV_FSYS2, 8, 8), - DIV(none, "div_mmc3", "mout_mmc3", DIV_FSYS2, 24, 8), + DIV(none, "div_mmc0", "mout_mmc0", DIV_FSYS1, 0, 4), + DIV(none, "div_mmc1", "mout_mmc1", DIV_FSYS1, 16, 4), + DIV(none, "div_mmc2", "mout_mmc2", DIV_FSYS2, 0, 4), + DIV(none, "div_mmc3", "mout_mmc3", DIV_FSYS2, 16, 4), DIV(none, "div_uart0", "mout_uart0", DIV_PERIC0, 0, 4), DIV(none, "div_uart1", "mout_uart1", DIV_PERIC0, 4, 4), DIV(none, "div_uart2", "mout_uart2", DIV_PERIC0, 8, 4), @@ -421,13 +421,13 @@ struct samsung_gate_clock exynos5250_gate_clks[] __initdata = { SRC_MASK_DISP1_0, 20, 0, 0), GATE(sclk_audio0, "sclk_audio0", "div_audio0", SRC_MASK_MAU, 0, CLK_SET_RATE_PARENT, 0), - GATE(sclk_mmc0, "sclk_mmc0", "div_mmc0", + GATE(sclk_mmc0, "sclk_mmc0", "div_mmc_pre0", SRC_MASK_FSYS, 0, CLK_SET_RATE_PARENT, 0), - GATE(sclk_mmc1, "sclk_mmc1", "div_mmc1", + GATE(sclk_mmc1, "sclk_mmc1", "div_mmc_pre1", SRC_MASK_FSYS, 4, CLK_SET_RATE_PARENT, 0), - GATE(sclk_mmc2, "sclk_mmc2", "div_mmc2", + GATE(sclk_mmc2, "sclk_mmc2", "div_mmc_pre2", SRC_MASK_FSYS, 8, CLK_SET_RATE_PARENT, 0), - GATE(sclk_mmc3, "sclk_mmc3", "div_mmc3", + GATE(sclk_mmc3, "sclk_mmc3", "div_mmc_pre3", SRC_MASK_FSYS, 12, CLK_SET_RATE_PARENT, 0), GATE(sclk_sata, "sclk_sata", "div_sata", SRC_MASK_FSYS, 24, CLK_SET_RATE_PARENT, 0), -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH] clk: exynos5250: Fix parent clock for sclk_mmc{0,1,2,3} 2013-04-23 6:31 ` [PATCH] clk: exynos5250: Fix parent clock " Tushar Behera @ 2013-04-23 15:59 ` Doug Anderson 2013-04-23 16:23 ` Mike Turquette 2013-04-24 2:53 ` Olof Johansson 2 siblings, 0 replies; 11+ messages in thread From: Doug Anderson @ 2013-04-23 15:59 UTC (permalink / raw) To: Tushar Behera Cc: linux-samsung-soc, linux-kernel@vger.kernel.org, Kukjin Kim, Mike Turquette, Thomas Abraham, Olof Johansson, Patch Tracking Tushar, Thanks for tracking this down. On Mon, Apr 22, 2013 at 11:31 PM, Tushar Behera <tushar.behera@linaro.org> wrote: > commit 688f7d8c9fef ("clk: exynos5250: Fix divider values for > sclk_mmc{0,1,2,3}") incorrectly sets the divider for sclk_mmc{0,1,2,3} > to fix the wrong clock value. Though this fixed issue with Arndale, > it created regressions for other boards like Snow. > > On Exynos5250, sclk_mmc<n> is generated like below (as per the clock > names in drivers/clk/samsung/clk-exynos5250.c) > > mout_group1_p ==> mout_mmc<n> ==> > div_mmc<n> ==> div_mmc_pre<n> => sclk_mmc<n> > > Earlier div_mmc<n> was set as the parent for sclk_mmc<n>, hence > div_mmc_pre<n> was not getting referred in kernel code and depending > on its value set during preboot, sclk_mmc<n> value was different for > various boards. > > Setting the correct clock generation path should fix the issues > reported in above referenced commit. The changes committed during the > earlier patch has also been reverted here. > > Signed-off-by: Tushar Behera <tushar.behera@linaro.org> > CC: Doug Anderson <dianders@chromium.org> > --- > Doug, > > Would you please test whether this patch works for Snow? Yup, it works for me. I did the basic testing of installing to eMMC with this and then booting from eMMC. I saw no errors in the console. I glanced over the patch and it looks reasonable to me. :) Reported-by: Doug Anderson <dianders@chromium.org> Tested-by: Doug Anderson <dianders@chromium.org> ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] clk: exynos5250: Fix parent clock for sclk_mmc{0,1,2,3} 2013-04-23 6:31 ` [PATCH] clk: exynos5250: Fix parent clock " Tushar Behera 2013-04-23 15:59 ` Doug Anderson @ 2013-04-23 16:23 ` Mike Turquette 2013-04-23 16:42 ` Kukjin Kim 2013-04-24 2:53 ` Olof Johansson 2 siblings, 1 reply; 11+ messages in thread From: Mike Turquette @ 2013-04-23 16:23 UTC (permalink / raw) To: Tushar Behera, linux-samsung-soc, linux-kernel Cc: dianders, kgene.kim, thomas.abraham, olofj, patches Quoting Tushar Behera (2013-04-22 23:31:51) > commit 688f7d8c9fef ("clk: exynos5250: Fix divider values for > sclk_mmc{0,1,2,3}") incorrectly sets the divider for sclk_mmc{0,1,2,3} > to fix the wrong clock value. Though this fixed issue with Arndale, > it created regressions for other boards like Snow. > > On Exynos5250, sclk_mmc<n> is generated like below (as per the clock > names in drivers/clk/samsung/clk-exynos5250.c) > > mout_group1_p ==> mout_mmc<n> ==> > div_mmc<n> ==> div_mmc_pre<n> => sclk_mmc<n> > > Earlier div_mmc<n> was set as the parent for sclk_mmc<n>, hence > div_mmc_pre<n> was not getting referred in kernel code and depending > on its value set during preboot, sclk_mmc<n> value was different for > various boards. > > Setting the correct clock generation path should fix the issues > reported in above referenced commit. The changes committed during the > earlier patch has also been reverted here. > > Signed-off-by: Tushar Behera <tushar.behera@linaro.org> > CC: Doug Anderson <dianders@chromium.org> Change looks good to me. Regards, Mike > --- > Doug, > > Would you please test whether this patch works for Snow? > > > drivers/clk/samsung/clk-exynos5250.c | 16 ++++++++-------- > 1 file changed, 8 insertions(+), 8 deletions(-) > > diff --git a/drivers/clk/samsung/clk-exynos5250.c b/drivers/clk/samsung/clk-exynos5250.c > index 7290faa..bb54606 100644 > --- a/drivers/clk/samsung/clk-exynos5250.c > +++ b/drivers/clk/samsung/clk-exynos5250.c > @@ -276,10 +276,10 @@ struct samsung_div_clock exynos5250_div_clks[] __initdata = { > DIV(none, "div_pcm0", "sclk_audio0", DIV_MAU, 4, 8), > DIV(none, "div_sata", "mout_sata", DIV_FSYS0, 20, 4), > DIV(none, "div_usb3", "mout_usb3", DIV_FSYS0, 24, 4), > - DIV(none, "div_mmc0", "mout_mmc0", DIV_FSYS1, 8, 8), > - DIV(none, "div_mmc1", "mout_mmc1", DIV_FSYS1, 24, 8), > - DIV(none, "div_mmc2", "mout_mmc2", DIV_FSYS2, 8, 8), > - DIV(none, "div_mmc3", "mout_mmc3", DIV_FSYS2, 24, 8), > + DIV(none, "div_mmc0", "mout_mmc0", DIV_FSYS1, 0, 4), > + DIV(none, "div_mmc1", "mout_mmc1", DIV_FSYS1, 16, 4), > + DIV(none, "div_mmc2", "mout_mmc2", DIV_FSYS2, 0, 4), > + DIV(none, "div_mmc3", "mout_mmc3", DIV_FSYS2, 16, 4), > DIV(none, "div_uart0", "mout_uart0", DIV_PERIC0, 0, 4), > DIV(none, "div_uart1", "mout_uart1", DIV_PERIC0, 4, 4), > DIV(none, "div_uart2", "mout_uart2", DIV_PERIC0, 8, 4), > @@ -421,13 +421,13 @@ struct samsung_gate_clock exynos5250_gate_clks[] __initdata = { > SRC_MASK_DISP1_0, 20, 0, 0), > GATE(sclk_audio0, "sclk_audio0", "div_audio0", > SRC_MASK_MAU, 0, CLK_SET_RATE_PARENT, 0), > - GATE(sclk_mmc0, "sclk_mmc0", "div_mmc0", > + GATE(sclk_mmc0, "sclk_mmc0", "div_mmc_pre0", > SRC_MASK_FSYS, 0, CLK_SET_RATE_PARENT, 0), > - GATE(sclk_mmc1, "sclk_mmc1", "div_mmc1", > + GATE(sclk_mmc1, "sclk_mmc1", "div_mmc_pre1", > SRC_MASK_FSYS, 4, CLK_SET_RATE_PARENT, 0), > - GATE(sclk_mmc2, "sclk_mmc2", "div_mmc2", > + GATE(sclk_mmc2, "sclk_mmc2", "div_mmc_pre2", > SRC_MASK_FSYS, 8, CLK_SET_RATE_PARENT, 0), > - GATE(sclk_mmc3, "sclk_mmc3", "div_mmc3", > + GATE(sclk_mmc3, "sclk_mmc3", "div_mmc_pre3", > SRC_MASK_FSYS, 12, CLK_SET_RATE_PARENT, 0), > GATE(sclk_sata, "sclk_sata", "div_sata", > SRC_MASK_FSYS, 24, CLK_SET_RATE_PARENT, 0), > -- > 1.7.9.5 ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] clk: exynos5250: Fix parent clock for sclk_mmc{0,1,2,3} 2013-04-23 16:23 ` Mike Turquette @ 2013-04-23 16:42 ` Kukjin Kim 0 siblings, 0 replies; 11+ messages in thread From: Kukjin Kim @ 2013-04-23 16:42 UTC (permalink / raw) To: Mike Turquette Cc: Tushar Behera, linux-samsung-soc, linux-kernel, dianders, kgene.kim, thomas.abraham, olofj, patches On 04/24/13 01:23, Mike Turquette wrote: > Quoting Tushar Behera (2013-04-22 23:31:51) >> commit 688f7d8c9fef ("clk: exynos5250: Fix divider values for >> sclk_mmc{0,1,2,3}") incorrectly sets the divider for sclk_mmc{0,1,2,3} >> to fix the wrong clock value. Though this fixed issue with Arndale, >> it created regressions for other boards like Snow. >> >> On Exynos5250, sclk_mmc<n> is generated like below (as per the clock >> names in drivers/clk/samsung/clk-exynos5250.c) >> >> mout_group1_p ==> mout_mmc<n> ==> >> div_mmc<n> ==> div_mmc_pre<n> => sclk_mmc<n> >> >> Earlier div_mmc<n> was set as the parent for sclk_mmc<n>, hence >> div_mmc_pre<n> was not getting referred in kernel code and depending >> on its value set during preboot, sclk_mmc<n> value was different for >> various boards. >> >> Setting the correct clock generation path should fix the issues >> reported in above referenced commit. The changes committed during the >> earlier patch has also been reverted here. >> >> Signed-off-by: Tushar Behera<tushar.behera@linaro.org> >> CC: Doug Anderson<dianders@chromium.org> > > Change looks good to me. > +1 Olof, I think, you can pick this up in the arm-soc directly. If you want: Acked-by: Kukjin Kim <kgene.kim@samsung.com> Thanks. - Kukjin >> --- >> Doug, >> >> Would you please test whether this patch works for Snow? >> >> >> drivers/clk/samsung/clk-exynos5250.c | 16 ++++++++-------- >> 1 file changed, 8 insertions(+), 8 deletions(-) >> >> diff --git a/drivers/clk/samsung/clk-exynos5250.c b/drivers/clk/samsung/clk-exynos5250.c >> index 7290faa..bb54606 100644 >> --- a/drivers/clk/samsung/clk-exynos5250.c >> +++ b/drivers/clk/samsung/clk-exynos5250.c >> @@ -276,10 +276,10 @@ struct samsung_div_clock exynos5250_div_clks[] __initdata = { >> DIV(none, "div_pcm0", "sclk_audio0", DIV_MAU, 4, 8), >> DIV(none, "div_sata", "mout_sata", DIV_FSYS0, 20, 4), >> DIV(none, "div_usb3", "mout_usb3", DIV_FSYS0, 24, 4), >> - DIV(none, "div_mmc0", "mout_mmc0", DIV_FSYS1, 8, 8), >> - DIV(none, "div_mmc1", "mout_mmc1", DIV_FSYS1, 24, 8), >> - DIV(none, "div_mmc2", "mout_mmc2", DIV_FSYS2, 8, 8), >> - DIV(none, "div_mmc3", "mout_mmc3", DIV_FSYS2, 24, 8), >> + DIV(none, "div_mmc0", "mout_mmc0", DIV_FSYS1, 0, 4), >> + DIV(none, "div_mmc1", "mout_mmc1", DIV_FSYS1, 16, 4), >> + DIV(none, "div_mmc2", "mout_mmc2", DIV_FSYS2, 0, 4), >> + DIV(none, "div_mmc3", "mout_mmc3", DIV_FSYS2, 16, 4), >> DIV(none, "div_uart0", "mout_uart0", DIV_PERIC0, 0, 4), >> DIV(none, "div_uart1", "mout_uart1", DIV_PERIC0, 4, 4), >> DIV(none, "div_uart2", "mout_uart2", DIV_PERIC0, 8, 4), >> @@ -421,13 +421,13 @@ struct samsung_gate_clock exynos5250_gate_clks[] __initdata = { >> SRC_MASK_DISP1_0, 20, 0, 0), >> GATE(sclk_audio0, "sclk_audio0", "div_audio0", >> SRC_MASK_MAU, 0, CLK_SET_RATE_PARENT, 0), >> - GATE(sclk_mmc0, "sclk_mmc0", "div_mmc0", >> + GATE(sclk_mmc0, "sclk_mmc0", "div_mmc_pre0", >> SRC_MASK_FSYS, 0, CLK_SET_RATE_PARENT, 0), >> - GATE(sclk_mmc1, "sclk_mmc1", "div_mmc1", >> + GATE(sclk_mmc1, "sclk_mmc1", "div_mmc_pre1", >> SRC_MASK_FSYS, 4, CLK_SET_RATE_PARENT, 0), >> - GATE(sclk_mmc2, "sclk_mmc2", "div_mmc2", >> + GATE(sclk_mmc2, "sclk_mmc2", "div_mmc_pre2", >> SRC_MASK_FSYS, 8, CLK_SET_RATE_PARENT, 0), >> - GATE(sclk_mmc3, "sclk_mmc3", "div_mmc3", >> + GATE(sclk_mmc3, "sclk_mmc3", "div_mmc_pre3", >> SRC_MASK_FSYS, 12, CLK_SET_RATE_PARENT, 0), >> GATE(sclk_sata, "sclk_sata", "div_sata", >> SRC_MASK_FSYS, 24, CLK_SET_RATE_PARENT, 0), >> -- >> 1.7.9.5 ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] clk: exynos5250: Fix parent clock for sclk_mmc{0,1,2,3} 2013-04-23 6:31 ` [PATCH] clk: exynos5250: Fix parent clock " Tushar Behera 2013-04-23 15:59 ` Doug Anderson 2013-04-23 16:23 ` Mike Turquette @ 2013-04-24 2:53 ` Olof Johansson 2 siblings, 0 replies; 11+ messages in thread From: Olof Johansson @ 2013-04-24 2:53 UTC (permalink / raw) To: Tushar Behera Cc: linux-samsung-soc, linux-kernel, dianders, kgene.kim, mturquette, thomas.abraham, olofj, patches On Tue, Apr 23, 2013 at 12:01:51PM +0530, Tushar Behera wrote: > commit 688f7d8c9fef ("clk: exynos5250: Fix divider values for > sclk_mmc{0,1,2,3}") incorrectly sets the divider for sclk_mmc{0,1,2,3} > to fix the wrong clock value. Though this fixed issue with Arndale, > it created regressions for other boards like Snow. > > On Exynos5250, sclk_mmc<n> is generated like below (as per the clock > names in drivers/clk/samsung/clk-exynos5250.c) > > mout_group1_p ==> mout_mmc<n> ==> > div_mmc<n> ==> div_mmc_pre<n> => sclk_mmc<n> > > Earlier div_mmc<n> was set as the parent for sclk_mmc<n>, hence > div_mmc_pre<n> was not getting referred in kernel code and depending > on its value set during preboot, sclk_mmc<n> value was different for > various boards. > > Setting the correct clock generation path should fix the issues > reported in above referenced commit. The changes committed during the > earlier patch has also been reverted here. > > Signed-off-by: Tushar Behera <tushar.behera@linaro.org> > CC: Doug Anderson <dianders@chromium.org> > --- > Doug, > > Would you please test whether this patch works for Snow? Applied to next/drivers in arm-soc.git. -Olof ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2013-04-24 2:53 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-04-02 8:20 [PATCH] clk: exynos5250: Fix divider values for sclk_mmc{0,1,2,3} Tushar Behera
2013-04-04 21:33 ` Mike Turquette
2013-04-08 7:22 ` Kukjin Kim
2013-04-16 19:35 ` Doug Anderson
2013-04-22 17:40 ` Olof Johansson
2013-04-23 2:52 ` Tushar Behera
2013-04-23 6:31 ` [PATCH] clk: exynos5250: Fix parent clock " Tushar Behera
2013-04-23 15:59 ` Doug Anderson
2013-04-23 16:23 ` Mike Turquette
2013-04-23 16:42 ` Kukjin Kim
2013-04-24 2:53 ` Olof Johansson
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox