Re: [PATCH v5 01/44] dt-bindings: clock: Add new bindings for TI Davinci PLL clocks
From: David Lechner <hidden>
Date: 2018-01-11 21:04:32
Also in:
linux-arm-kernel, linux-clk, lkml
Subsystem:
common clk framework, the rest, ti davinci series clock driver · Maintainers:
Michael Turquette, Stephen Boyd, Linus Torvalds, David Lechner
On 01/11/2018 02:58 PM, Adam Ford wrote:
On Thu, Jan 11, 2018 at 2:04 PM, David Lechner [off-list ref] wrote:quoted
On 01/11/2018 12:50 PM, Adam Ford wrote:quoted
On Thu, Jan 11, 2018 at 12:29 PM, David Lechner [off-list ref] wrote:quoted
If removing the "clk_ignore_unused" option causes the board to not boot, then we still have problems that need to be fixed, so please also test without this option.Without this option, it still does not boot. Without device tree it hangs after: [snip] NET: Registered protocol family 17 Loading compiled-in X.509 certificates console [netcon0] enabled netconsole: network logging started davinci_emac davinci_emac.1: using random MAC addr: 5e:38:1a:1f:4f:77 mmc0: host does not support reading read-only switch, assuming write-enable hctosys: unable to open rtc device (rtc0) mmc0: new high speed SDHC card at address b368 With device tree it hangs after: [snip] mmc0: host does not support reading read-only switch, assuming write-enable mmc0: new high speed SDHC card at address b368 mmcblk0: mmc0:b368 00000 3.75 GiB mmcblk0: p1 p2 pca953x 0-0020: 0-0020 supply vcc not found, using dummy regulator pca953x 0-0020: failed reading register pca953x: probe of 0-0020 failed with error -121 console [netcon0] enabled netconsole: network logging started davinci_emac 1e20000.ethernet: incompatible machine/device type for reading mac address hctosys: unable to open rtc device (rtc0)Please try this change:diff --git a/drivers/clk/davinci/psc-da850.cb/drivers/clk/davinci/psc-da850.c index 3fd6b49..a526cc2 100644--- a/drivers/clk/davinci/psc-da850.c +++ b/drivers/clk/davinci/psc-da850.c@@ -17,7 +17,7 @@ static const struct davinci_psc_clk_info da850_psc0_info[]__initconst = { LPSC(0, 0, tpcc0, pll0_sysclk2, LPSC_ALWAYS_ENABLED), LPSC(1, 0, tptc0, pll0_sysclk2, LPSC_ALWAYS_ENABLED), LPSC(2, 0, tptc1, pll0_sysclk2, LPSC_ALWAYS_ENABLED), - LPSC(3, 0, aemif, pll0_sysclk3, 0), + LPSC(3, 0, aemif, pll0_sysclk3, LPSC_ALWAYS_ENABLED), LPSC(4, 0, spi0, pll0_sysclk2, 0), LPSC(5, 0, mmcsd0, pll0_sysclk2, 0), LPSC(6, 0, aintc, pll0_sysclk4, LPSC_ALWAYS_ENABLED), If that does not work, try adding LPSC_ALWAYS_ENABLED to all of the clocks in this file and then eliminate them one by one until you find which one is preventing boot.Unfortunately, that didn't work. I switch all the entries in both tables that had a 0 to LPSC_ALWAYS_ENABLED, but no luck booting.quoted
If it still does not boot, there is a similar DIVCLK_ALWAYS_ENABLED flag in drivers/clk/davinci/pll-da850.c that you can repeat the exercise with. Add DIVCLK_ALWAYS_ENABLED to all of the clocks there and then eliminate it one by one until you find the clock that is causing the problem.Still no good news. I switched all the entries with a 0 to DIVCLK_ALWAYS_ENABLED and it still didn't finish booting. I wonder if Sekhar Nori might have some suggestions. I didn't look at the code or try to understand it. I just changed the settings.quoted
Even if a clock had another flag besides zero, you will need to add LPSC_ALWAYS_ENABLED by or-ing it with the other flag.
diff --git a/drivers/clk/davinci/psc-da850.c b/drivers/clk/davinci/psc-da850.c
index 3fd6b49..3375df6a1 100644
--- a/drivers/clk/davinci/psc-da850.c
+++ b/drivers/clk/davinci/psc-da850.c@@ -17,38 +17,38 @@ static const struct davinci_psc_clk_info da850_psc0_info[] __initconst = { LPSC(0, 0, tpcc0, pll0_sysclk2, LPSC_ALWAYS_ENABLED), LPSC(1, 0, tptc0, pll0_sysclk2, LPSC_ALWAYS_ENABLED), LPSC(2, 0, tptc1, pll0_sysclk2, LPSC_ALWAYS_ENABLED), - LPSC(3, 0, aemif, pll0_sysclk3, 0), - LPSC(4, 0, spi0, pll0_sysclk2, 0), - LPSC(5, 0, mmcsd0, pll0_sysclk2, 0), + LPSC(3, 0, aemif, pll0_sysclk3, LPSC_ALWAYS_ENABLED), + LPSC(4, 0, spi0, pll0_sysclk2, LPSC_ALWAYS_ENABLED), + LPSC(5, 0, mmcsd0, pll0_sysclk2, LPSC_ALWAYS_ENABLED), LPSC(6, 0, aintc, pll0_sysclk4, LPSC_ALWAYS_ENABLED), LPSC(7, 0, arm_rom, pll0_sysclk2, LPSC_ALWAYS_ENABLED), - LPSC(9, 0, uart0, pll0_sysclk2, 0), - LPSC(13, 0, pruss, pll0_sysclk2, 0), + LPSC(9, 0, uart0, pll0_sysclk2, LPSC_ALWAYS_ENABLED), + LPSC(13, 0, pruss, pll0_sysclk2, LPSC_ALWAYS_ENABLED), LPSC(14, 0, arm, pll0_sysclk6, LPSC_ALWAYS_ENABLED), - LPSC(15, 1, dsp, pll0_sysclk1, LPSC_FORCE | LPSC_LOCAL_RESET), + LPSC(15, 1, dsp, pll0_sysclk1, LPSC_FORCE | LPSC_LOCAL_RESET | LPSC_ALWAYS_ENABLED), { } }; static const struct davinci_psc_clk_info da850_psc1_info[] __initconst = { LPSC(0, 0, tpcc1, pll0_sysclk2, LPSC_ALWAYS_ENABLED), - LPSC(1, 0, usb0, pll0_sysclk2, 0), - LPSC(2, 0, usb1, pll0_sysclk4, 0), - LPSC(3, 0, gpio, pll0_sysclk4, 0), - LPSC(5, 0, emac, pll0_sysclk4, 0), + LPSC(1, 0, usb0, pll0_sysclk2, LPSC_ALWAYS_ENABLED), + LPSC(2, 0, usb1, pll0_sysclk4, LPSC_ALWAYS_ENABLED), + LPSC(3, 0, gpio, pll0_sysclk4, LPSC_ALWAYS_ENABLED), + LPSC(5, 0, emac, pll0_sysclk4, LPSC_ALWAYS_ENABLED), LPSC(6, 0, emif3, pll0_sysclk5, LPSC_ALWAYS_ENABLED), - LPSC(7, 0, mcasp0, async3, 0), - LPSC(8, 0, sata, pll0_sysclk2, LPSC_FORCE), - LPSC(9, 0, vpif, pll0_sysclk2, 0), - LPSC(10, 0, spi1, async3, 0), - LPSC(11, 0, i2c1, pll0_sysclk4, 0), - LPSC(12, 0, uart1, async3, 0), - LPSC(13, 0, uart2, async3, 0), - LPSC(14, 0, mcbsp0, async3, 0), - LPSC(15, 0, mcbsp1, async3, 0), - LPSC(16, 0, lcdc, pll0_sysclk2, 0), - LPSC(17, 0, ehrpwm, async3, 0), - LPSC(18, 0, mmcsd1, pll0_sysclk2, 0), - LPSC(20, 0, ecap, async3, 0), + LPSC(7, 0, mcasp0, async3, LPSC_ALWAYS_ENABLED), + LPSC(8, 0, sata, pll0_sysclk2, LPSC_FORCE | LPSC_ALWAYS_ENABLED), + LPSC(9, 0, vpif, pll0_sysclk2, LPSC_ALWAYS_ENABLED), + LPSC(10, 0, spi1, async3, LPSC_ALWAYS_ENABLED), + LPSC(11, 0, i2c1, pll0_sysclk4, LPSC_ALWAYS_ENABLED), + LPSC(12, 0, uart1, async3, LPSC_ALWAYS_ENABLED), + LPSC(13, 0, uart2, async3, LPSC_ALWAYS_ENABLED), + LPSC(14, 0, mcbsp0, async3, LPSC_ALWAYS_ENABLED), + LPSC(15, 0, mcbsp1, async3, LPSC_ALWAYS_ENABLED), + LPSC(16, 0, lcdc, pll0_sysclk2, LPSC_ALWAYS_ENABLED), + LPSC(17, 0, ehrpwm, async3, LPSC_ALWAYS_ENABLED), + LPSC(18, 0, mmcsd1, pll0_sysclk2, LPSC_ALWAYS_ENABLED), + LPSC(20, 0, ecap, async3, LPSC_ALWAYS_ENABLED), LPSC(21, 0, tptc2, pll0_sysclk2, LPSC_ALWAYS_ENABLED), { } };
diff --git a/drivers/clk/davinci/pll-da850.c b/drivers/clk/davinci/pll-da850.c
index 77a7223..f334e69 100644
--- a/drivers/clk/davinci/pll-da850.c
+++ b/drivers/clk/davinci/pll-da850.c@@ -22,21 +22,21 @@ static const struct davinci_pll_divclk_info da850_pll0_divclk_info[] __initconst = { - DIVCLK(1, pll0_sysclk1, pll0, DIVCLK_FIXED_DIV), - DIVCLK(2, pll0_sysclk2, pll0, DIVCLK_FIXED_DIV), - DIVCLK(3, pll0_sysclk3, pll0, 0), - DIVCLK(4, pll0_sysclk4, pll0, DIVCLK_FIXED_DIV), - DIVCLK(5, pll0_sysclk5, pll0, 0), - DIVCLK(6, pll0_sysclk6, pll0, DIVCLK_ARM_RATE | DIVCLK_FIXED_DIV), - DIVCLK(7, pll0_sysclk7, pll0, 0), + DIVCLK(1, pll0_sysclk1, pll0, DIVCLK_FIXED_DIV | DIVCLK_ALWAYS_ENABLED), + DIVCLK(2, pll0_sysclk2, pll0, DIVCLK_FIXED_DIV | DIVCLK_ALWAYS_ENABLED), + DIVCLK(3, pll0_sysclk3, pll0, DIVCLK_ALWAYS_ENABLED), + DIVCLK(4, pll0_sysclk4, pll0, DIVCLK_FIXED_DIV | DIVCLK_ALWAYS_ENABLED), + DIVCLK(5, pll0_sysclk5, pll0, DIVCLK_ALWAYS_ENABLED), + DIVCLK(6, pll0_sysclk6, pll0, DIVCLK_ARM_RATE | DIVCLK_FIXED_DIV| DIVCLK_ALWAYS_ENABLED), + DIVCLK(7, pll0_sysclk7, pll0, DIVCLK_ALWAYS_ENABLED), { } }; static const struct davinci_pll_divclk_info da850_pll1_divclk_info[] __initconst = { DIVCLK(1, pll1_sysclk1, pll1, DIVCLK_ALWAYS_ENABLED), - DIVCLK(2, pll1_sysclk2, pll1, 0), - DIVCLK(3, pll1_sysclk3, pll1, 0), + DIVCLK(2, pll1_sysclk2, pll1, DIVCLK_ALWAYS_ENABLED), + DIVCLK(3, pll1_sysclk3, pll1, DIVCLK_ALWAYS_ENABLED), { } }; --
To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html