* [PATCH 0/2] ARM: i.MX28: define various external xtal frequencies in DT @ 2013-11-08 13:48 Marc Kleine-Budde 2013-11-08 13:48 ` [PATCH 1/2] ARM: i.MX28: define ref_xtal frequency " Marc Kleine-Budde 2013-11-08 13:48 ` [PATCH 2/2] ARM: i.MX28: define external RTC crystal " Marc Kleine-Budde 0 siblings, 2 replies; 5+ messages in thread From: Marc Kleine-Budde @ 2013-11-08 13:48 UTC (permalink / raw) To: linux-arm-kernel Hello, this patch pushes the definition for the external 24m and 32k crystals to the DT. The kernel should continue to work on DT that don't define the 24m clock, the standard 24MHz are assumed. regards, Marc ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 1/2] ARM: i.MX28: define ref_xtal frequency in DT 2013-11-08 13:48 [PATCH 0/2] ARM: i.MX28: define various external xtal frequencies in DT Marc Kleine-Budde @ 2013-11-08 13:48 ` Marc Kleine-Budde 2013-11-11 7:42 ` Shawn Guo 2013-11-11 7:47 ` Shawn Guo 2013-11-08 13:48 ` [PATCH 2/2] ARM: i.MX28: define external RTC crystal " Marc Kleine-Budde 1 sibling, 2 replies; 5+ messages in thread From: Marc Kleine-Budde @ 2013-11-08 13:48 UTC (permalink / raw) To: linux-arm-kernel From: Juergen Beisert <jbe@pengutronix.de> Instead of hardcoding the ref_xtal in the clk driver, get it from the DT. Signed-off-by: Juergen Beisert <jbe@pengutronix.de> Signed-off-by: Steffen Trumtrar <s.trumtrar@pengutronix.de> Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> --- arch/arm/boot/dts/imx28.dtsi | 10 ++++++++++ drivers/clk/mxs/clk-imx28.c | 18 ++++++++++++++++-- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/arch/arm/boot/dts/imx28.dtsi b/arch/arm/boot/dts/imx28.dtsi index 7363fde..979c37d 100644 --- a/arch/arm/boot/dts/imx28.dtsi +++ b/arch/arm/boot/dts/imx28.dtsi @@ -43,6 +43,16 @@ }; }; + clocks { + #address-cells = <1>; + #size-cells = <0>; + + xtal-24m { + compatible = "fsl,mxs-xtal-24m", "fixed-clock"; + clock-frequency = <24000000>; + }; + }; + apb at 80000000 { compatible = "simple-bus"; #address-cells = <1>; diff --git a/drivers/clk/mxs/clk-imx28.c b/drivers/clk/mxs/clk-imx28.c index 4faf0af..874ca4e 100644 --- a/drivers/clk/mxs/clk-imx28.c +++ b/drivers/clk/mxs/clk-imx28.c @@ -156,7 +156,7 @@ static enum imx28_clk clks_init_on[] __initdata = { int __init mx28_clocks_init(void) { - struct device_node *np; + struct device_node *np, *np_tmp; u32 i; np = of_find_compatible_node(NULL, NULL, "fsl,imx28-digctl"); @@ -169,7 +169,21 @@ int __init mx28_clocks_init(void) clk_misc_init(); - clks[ref_xtal] = mxs_clk_fixed("ref_xtal", 24000000); + /* retrieve the crystal's frequencies from device tree */ + for_each_compatible_node(np_tmp, NULL, "fixed-clock") { + u32 rate; + + if (of_property_read_u32(np_tmp, "clock-frequency", &rate)) + continue; + + if (of_device_is_compatible(np_tmp, "fsl,mxs-xtal-24m")) + clks[ref_xtal] = mxs_clk_fixed("ref_xtal", rate); + } + + /* if not set, use default frequency */ + if (!clks[ref_xtal]) + clks[ref_xtal] = mxs_clk_fixed("ref_xtal", 24000000); + clks[pll0] = mxs_clk_pll("pll0", "ref_xtal", PLL0CTRL0, 17, 480000000); clks[pll1] = mxs_clk_pll("pll1", "ref_xtal", PLL1CTRL0, 17, 480000000); clks[pll2] = mxs_clk_pll("pll2", "ref_xtal", PLL2CTRL0, 23, 50000000); -- 1.8.4.rc3 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 1/2] ARM: i.MX28: define ref_xtal frequency in DT 2013-11-08 13:48 ` [PATCH 1/2] ARM: i.MX28: define ref_xtal frequency " Marc Kleine-Budde @ 2013-11-11 7:42 ` Shawn Guo 2013-11-11 7:47 ` Shawn Guo 1 sibling, 0 replies; 5+ messages in thread From: Shawn Guo @ 2013-11-11 7:42 UTC (permalink / raw) To: linux-arm-kernel On Fri, Nov 08, 2013 at 02:48:40PM +0100, Marc Kleine-Budde wrote: > From: Juergen Beisert <jbe@pengutronix.de> > > Instead of hardcoding the ref_xtal in the clk driver, get it from the DT. > > Signed-off-by: Juergen Beisert <jbe@pengutronix.de> > Signed-off-by: Steffen Trumtrar <s.trumtrar@pengutronix.de> > Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> > --- > arch/arm/boot/dts/imx28.dtsi | 10 ++++++++++ > drivers/clk/mxs/clk-imx28.c | 18 ++++++++++++++++-- > 2 files changed, 26 insertions(+), 2 deletions(-) > > diff --git a/arch/arm/boot/dts/imx28.dtsi b/arch/arm/boot/dts/imx28.dtsi > index 7363fde..979c37d 100644 > --- a/arch/arm/boot/dts/imx28.dtsi > +++ b/arch/arm/boot/dts/imx28.dtsi > @@ -43,6 +43,16 @@ > }; > }; > > + clocks { > + #address-cells = <1>; > + #size-cells = <0>; > + > + xtal-24m { To follow the common pattern, we may want to name the node in a generic way, i.e. 'clock at 0'. > + compatible = "fsl,mxs-xtal-24m", "fixed-clock"; DT maintainers start checking undocumented compatible strings. We may need to find a place to document it, even though it's quite trivial. Shawn > + clock-frequency = <24000000>; > + }; > + }; > + > apb at 80000000 { > compatible = "simple-bus"; > #address-cells = <1>; > diff --git a/drivers/clk/mxs/clk-imx28.c b/drivers/clk/mxs/clk-imx28.c > index 4faf0af..874ca4e 100644 > --- a/drivers/clk/mxs/clk-imx28.c > +++ b/drivers/clk/mxs/clk-imx28.c > @@ -156,7 +156,7 @@ static enum imx28_clk clks_init_on[] __initdata = { > > int __init mx28_clocks_init(void) > { > - struct device_node *np; > + struct device_node *np, *np_tmp; > u32 i; > > np = of_find_compatible_node(NULL, NULL, "fsl,imx28-digctl"); > @@ -169,7 +169,21 @@ int __init mx28_clocks_init(void) > > clk_misc_init(); > > - clks[ref_xtal] = mxs_clk_fixed("ref_xtal", 24000000); > + /* retrieve the crystal's frequencies from device tree */ > + for_each_compatible_node(np_tmp, NULL, "fixed-clock") { > + u32 rate; > + > + if (of_property_read_u32(np_tmp, "clock-frequency", &rate)) > + continue; > + > + if (of_device_is_compatible(np_tmp, "fsl,mxs-xtal-24m")) > + clks[ref_xtal] = mxs_clk_fixed("ref_xtal", rate); > + } > + > + /* if not set, use default frequency */ > + if (!clks[ref_xtal]) > + clks[ref_xtal] = mxs_clk_fixed("ref_xtal", 24000000); > + > clks[pll0] = mxs_clk_pll("pll0", "ref_xtal", PLL0CTRL0, 17, 480000000); > clks[pll1] = mxs_clk_pll("pll1", "ref_xtal", PLL1CTRL0, 17, 480000000); > clks[pll2] = mxs_clk_pll("pll2", "ref_xtal", PLL2CTRL0, 23, 50000000); > -- > 1.8.4.rc3 > ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 1/2] ARM: i.MX28: define ref_xtal frequency in DT 2013-11-08 13:48 ` [PATCH 1/2] ARM: i.MX28: define ref_xtal frequency " Marc Kleine-Budde 2013-11-11 7:42 ` Shawn Guo @ 2013-11-11 7:47 ` Shawn Guo 1 sibling, 0 replies; 5+ messages in thread From: Shawn Guo @ 2013-11-11 7:47 UTC (permalink / raw) To: linux-arm-kernel Device tree list is now devicetree at vger.kernel.org Shawn On Fri, Nov 08, 2013 at 02:48:40PM +0100, Marc Kleine-Budde wrote: > From: Juergen Beisert <jbe@pengutronix.de> > > Instead of hardcoding the ref_xtal in the clk driver, get it from the DT. > > Signed-off-by: Juergen Beisert <jbe@pengutronix.de> > Signed-off-by: Steffen Trumtrar <s.trumtrar@pengutronix.de> > Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> > --- > arch/arm/boot/dts/imx28.dtsi | 10 ++++++++++ > drivers/clk/mxs/clk-imx28.c | 18 ++++++++++++++++-- > 2 files changed, 26 insertions(+), 2 deletions(-) > > diff --git a/arch/arm/boot/dts/imx28.dtsi b/arch/arm/boot/dts/imx28.dtsi > index 7363fde..979c37d 100644 > --- a/arch/arm/boot/dts/imx28.dtsi > +++ b/arch/arm/boot/dts/imx28.dtsi > @@ -43,6 +43,16 @@ > }; > }; > > + clocks { > + #address-cells = <1>; > + #size-cells = <0>; > + > + xtal-24m { > + compatible = "fsl,mxs-xtal-24m", "fixed-clock"; > + clock-frequency = <24000000>; > + }; > + }; > + > apb at 80000000 { > compatible = "simple-bus"; > #address-cells = <1>; > diff --git a/drivers/clk/mxs/clk-imx28.c b/drivers/clk/mxs/clk-imx28.c > index 4faf0af..874ca4e 100644 > --- a/drivers/clk/mxs/clk-imx28.c > +++ b/drivers/clk/mxs/clk-imx28.c > @@ -156,7 +156,7 @@ static enum imx28_clk clks_init_on[] __initdata = { > > int __init mx28_clocks_init(void) > { > - struct device_node *np; > + struct device_node *np, *np_tmp; > u32 i; > > np = of_find_compatible_node(NULL, NULL, "fsl,imx28-digctl"); > @@ -169,7 +169,21 @@ int __init mx28_clocks_init(void) > > clk_misc_init(); > > - clks[ref_xtal] = mxs_clk_fixed("ref_xtal", 24000000); > + /* retrieve the crystal's frequencies from device tree */ > + for_each_compatible_node(np_tmp, NULL, "fixed-clock") { > + u32 rate; > + > + if (of_property_read_u32(np_tmp, "clock-frequency", &rate)) > + continue; > + > + if (of_device_is_compatible(np_tmp, "fsl,mxs-xtal-24m")) > + clks[ref_xtal] = mxs_clk_fixed("ref_xtal", rate); > + } > + > + /* if not set, use default frequency */ > + if (!clks[ref_xtal]) > + clks[ref_xtal] = mxs_clk_fixed("ref_xtal", 24000000); > + > clks[pll0] = mxs_clk_pll("pll0", "ref_xtal", PLL0CTRL0, 17, 480000000); > clks[pll1] = mxs_clk_pll("pll1", "ref_xtal", PLL1CTRL0, 17, 480000000); > clks[pll2] = mxs_clk_pll("pll2", "ref_xtal", PLL2CTRL0, 23, 50000000); > -- > 1.8.4.rc3 > ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 2/2] ARM: i.MX28: define external RTC crystal frequency in DT 2013-11-08 13:48 [PATCH 0/2] ARM: i.MX28: define various external xtal frequencies in DT Marc Kleine-Budde 2013-11-08 13:48 ` [PATCH 1/2] ARM: i.MX28: define ref_xtal frequency " Marc Kleine-Budde @ 2013-11-08 13:48 ` Marc Kleine-Budde 1 sibling, 0 replies; 5+ messages in thread From: Marc Kleine-Budde @ 2013-11-08 13:48 UTC (permalink / raw) To: linux-arm-kernel From: Juergen Beisert <jbe@pengutronix.de> The RTC in the i.MX28 may be clocked with different crystals. Get the rate of the connected one from the DT. Signed-off-by: Juergen Beisert <jbe@pengutronix.de> Signed-off-by: Steffen Trumtrar <s.trumtrar@pengutronix.de> Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> --- Documentation/devicetree/bindings/clock/imx28-clock.txt | 1 + arch/arm/boot/dts/imx28.dtsi | 5 +++++ drivers/clk/mxs/clk-imx28.c | 4 +++- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/clock/imx28-clock.txt b/Documentation/devicetree/bindings/clock/imx28-clock.txt index e6587af..c3a9d94 100644 --- a/Documentation/devicetree/bindings/clock/imx28-clock.txt +++ b/Documentation/devicetree/bindings/clock/imx28-clock.txt @@ -76,6 +76,7 @@ clocks and IDs. usb0_phy 62 usb1_phy 63 enet_out 64 + rtc_32k 65 Examples: diff --git a/arch/arm/boot/dts/imx28.dtsi b/arch/arm/boot/dts/imx28.dtsi index 979c37d..6af9094 100644 --- a/arch/arm/boot/dts/imx28.dtsi +++ b/arch/arm/boot/dts/imx28.dtsi @@ -47,6 +47,11 @@ #address-cells = <1>; #size-cells = <0>; + xtal-32k { + compatible = "fsl,mxs-xtal-32k", "fixed-clock"; + clock-frequency = <0>; + }; + xtal-24m { compatible = "fsl,mxs-xtal-24m", "fixed-clock"; clock-frequency = <24000000>; diff --git a/drivers/clk/mxs/clk-imx28.c b/drivers/clk/mxs/clk-imx28.c index 874ca4e..b6afeb1 100644 --- a/drivers/clk/mxs/clk-imx28.c +++ b/drivers/clk/mxs/clk-imx28.c @@ -144,7 +144,7 @@ enum imx28_clk { clk32k_div, rtc, lradc, spdif_div, clk32k, pwm, uart, ssp0, ssp1, ssp2, ssp3, gpmi, spdif, emi, saif0, saif1, lcdif, etm, fec, can0, can1, usb0, usb1, usb0_phy, usb1_phy, enet_out, - clk_max + rtc_32k, clk_max }; static struct clk *clks[clk_max]; @@ -178,6 +178,8 @@ int __init mx28_clocks_init(void) if (of_device_is_compatible(np_tmp, "fsl,mxs-xtal-24m")) clks[ref_xtal] = mxs_clk_fixed("ref_xtal", rate); + else if (of_device_is_compatible(np_tmp, "fsl,mxs-xtal-32k")) + clks[rtc_32k] = mxs_clk_fixed("rtc_32k", rate); } /* if not set, use default frequency */ -- 1.8.4.rc3 ^ permalink raw reply related [flat|nested] 5+ messages in thread
end of thread, other threads:[~2013-11-11 7:47 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2013-11-08 13:48 [PATCH 0/2] ARM: i.MX28: define various external xtal frequencies in DT Marc Kleine-Budde 2013-11-08 13:48 ` [PATCH 1/2] ARM: i.MX28: define ref_xtal frequency " Marc Kleine-Budde 2013-11-11 7:42 ` Shawn Guo 2013-11-11 7:47 ` Shawn Guo 2013-11-08 13:48 ` [PATCH 2/2] ARM: i.MX28: define external RTC crystal " Marc Kleine-Budde
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).