* [PATCH 0/2] ARM: OMAP2+: Add device-tree support for 32kHz counter @ 2012-10-17 18:33 Jon Hunter 2012-10-17 18:33 ` [PATCH 1/2] ARM: dts: OMAP: Add counter-32k nodes Jon Hunter 2012-10-17 18:33 ` [PATCH 2/2] ARM: OMAP2+: Add device-tree support for 32kHz counter Jon Hunter 0 siblings, 2 replies; 5+ messages in thread From: Jon Hunter @ 2012-10-17 18:33 UTC (permalink / raw) To: Benoit Cousson, Tony Lindgren, Rob Herring, Grant Likely Cc: device-tree, linux-omap, linux-arm, Jon Hunter This series adds device-tree support for the 32kHz counter on OMAP2+ devices, which is used as the default kernel clock-source for OMAP devices. Boot tested on OMAP2420 H4, OMAP3430 Beagle Board and OMAP4430 Panda Board with and without device-tree present. Based and dependent upon OMAP2+ series that adds device-tree support for DMTIMERs [1]. [1] http://marc.info/?l=linux-omap&m=135049690119218&w=2 Jon Hunter (2): ARM: dts: OMAP: Add counter-32k nodes ARM: OMAP2+: Add device-tree support for 32kHz counter .../devicetree/bindings/arm/omap/counter32k.txt | 15 +++++++++++ arch/arm/boot/dts/omap2420.dtsi | 6 +++++ arch/arm/boot/dts/omap2430.dtsi | 6 +++++ arch/arm/boot/dts/omap3.dtsi | 6 +++++ arch/arm/boot/dts/omap4.dtsi | 6 +++++ arch/arm/mach-omap2/timer.c | 28 +++++++++++++++++++- 6 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 Documentation/devicetree/bindings/arm/omap/counter32k.txt -- 1.7.9.5 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 1/2] ARM: dts: OMAP: Add counter-32k nodes 2012-10-17 18:33 [PATCH 0/2] ARM: OMAP2+: Add device-tree support for 32kHz counter Jon Hunter @ 2012-10-17 18:33 ` Jon Hunter 2012-10-18 14:23 ` Benoit Cousson 2012-10-17 18:33 ` [PATCH 2/2] ARM: OMAP2+: Add device-tree support for 32kHz counter Jon Hunter 1 sibling, 1 reply; 5+ messages in thread From: Jon Hunter @ 2012-10-17 18:33 UTC (permalink / raw) To: Benoit Cousson, Tony Lindgren, Rob Herring, Grant Likely Cc: device-tree, linux-omap, linux-arm, Jon Hunter Adds the counter-32k timers nodes present in OMAP2/3/4 devices and device-tree binding documentation for OMAP counter-32k. Signed-off-by: Jon Hunter <jon-hunter@ti.com> --- .../devicetree/bindings/arm/omap/counter32k.txt | 15 +++++++++++++++ arch/arm/boot/dts/omap2420.dtsi | 6 ++++++ arch/arm/boot/dts/omap2430.dtsi | 6 ++++++ arch/arm/boot/dts/omap3.dtsi | 6 ++++++ arch/arm/boot/dts/omap4.dtsi | 6 ++++++ 5 files changed, 39 insertions(+) create mode 100644 Documentation/devicetree/bindings/arm/omap/counter32k.txt diff --git a/Documentation/devicetree/bindings/arm/omap/counter32k.txt b/Documentation/devicetree/bindings/arm/omap/counter32k.txt new file mode 100644 index 0000000..1983fae --- /dev/null +++ b/Documentation/devicetree/bindings/arm/omap/counter32k.txt @@ -0,0 +1,15 @@ +OMAP Counter-32K bindings + +Required properties: +- compatible: Must be "ti,omap-counter32k" for OMAP controllers +- reg: Contains timer register address range (base address and length) +- ti,hwmods: Name of the hwmod associated to the counter, which is typically + "counter_32k" + +Example: + +counter32k: counter32k@4a304000 { + compatible = "ti,omap-counter32k"; + reg = <0x4a304000 0x001f>; + ti,hwmods = "counter_32k"; +}; diff --git a/arch/arm/boot/dts/omap2420.dtsi b/arch/arm/boot/dts/omap2420.dtsi index 5f68a70..082193f 100644 --- a/arch/arm/boot/dts/omap2420.dtsi +++ b/arch/arm/boot/dts/omap2420.dtsi @@ -14,6 +14,12 @@ compatible = "ti,omap2420", "ti,omap2"; ocp { + counter32k: counter32k@48004000 { + compatible = "ti,omap-counter32k"; + reg = <0x48004000 0x001f>; + ti,hwmods = "counter_32k"; + }; + omap2420_pmx: pinmux@48000030 { compatible = "ti,omap2420-padconf", "pinctrl-single"; reg = <0x48000030 0x0113>; diff --git a/arch/arm/boot/dts/omap2430.dtsi b/arch/arm/boot/dts/omap2430.dtsi index 7439987..2e568cf 100644 --- a/arch/arm/boot/dts/omap2430.dtsi +++ b/arch/arm/boot/dts/omap2430.dtsi @@ -14,6 +14,12 @@ compatible = "ti,omap2430", "ti,omap2"; ocp { + counter32k: counter32k@49020000 { + compatible = "ti,omap-counter32k"; + reg = <0x49020000 0x001f>; + ti,hwmods = "counter_32k"; + }; + omap2430_pmx: pinmux@49002030 { compatible = "ti,omap2430-padconf", "pinctrl-single"; reg = <0x49002030 0x0154>; diff --git a/arch/arm/boot/dts/omap3.dtsi b/arch/arm/boot/dts/omap3.dtsi index 3fb910f..aa775b2 100644 --- a/arch/arm/boot/dts/omap3.dtsi +++ b/arch/arm/boot/dts/omap3.dtsi @@ -61,6 +61,12 @@ ranges; ti,hwmods = "l3_main"; + counter32k: counter32k@48320000 { + compatible = "ti,omap-counter32k"; + reg = <0x48320000 0x001f>; + ti,hwmods = "counter_32k"; + }; + intc: interrupt-controller@48200000 { compatible = "ti,omap2-intc"; interrupt-controller; diff --git a/arch/arm/boot/dts/omap4.dtsi b/arch/arm/boot/dts/omap4.dtsi index f6ac2b7..3eb66ee 100644 --- a/arch/arm/boot/dts/omap4.dtsi +++ b/arch/arm/boot/dts/omap4.dtsi @@ -95,6 +95,12 @@ ranges; ti,hwmods = "l3_main_1", "l3_main_2", "l3_main_3"; + counter32k: counter32k@4a304000 { + compatible = "ti,omap-counter32k"; + reg = <0x4a304000 0x001f>; + ti,hwmods = "counter_32k"; + }; + omap4_pmx_core: pinmux@4a100040 { compatible = "ti,omap4-padconf", "pinctrl-single"; reg = <0x4a100040 0x0196>; -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] ARM: dts: OMAP: Add counter-32k nodes 2012-10-17 18:33 ` [PATCH 1/2] ARM: dts: OMAP: Add counter-32k nodes Jon Hunter @ 2012-10-18 14:23 ` Benoit Cousson [not found] ` <508010E1.6010102-l0cyMroinI0@public.gmane.org> 0 siblings, 1 reply; 5+ messages in thread From: Benoit Cousson @ 2012-10-18 14:23 UTC (permalink / raw) To: Jon Hunter Cc: Tony Lindgren, Rob Herring, Grant Likely, device-tree, linux-omap, linux-arm Hi Jon, This looks good to me, I just have a minor nit comment. On 10/17/2012 08:33 PM, Jon Hunter wrote: > Adds the counter-32k timers nodes present in OMAP2/3/4 devices and > device-tree binding documentation for OMAP counter-32k. > > Signed-off-by: Jon Hunter <jon-hunter@ti.com> > --- > .../devicetree/bindings/arm/omap/counter32k.txt | 15 +++++++++++++++ > arch/arm/boot/dts/omap2420.dtsi | 6 ++++++ > arch/arm/boot/dts/omap2430.dtsi | 6 ++++++ > arch/arm/boot/dts/omap3.dtsi | 6 ++++++ > arch/arm/boot/dts/omap4.dtsi | 6 ++++++ > 5 files changed, 39 insertions(+) > create mode 100644 Documentation/devicetree/bindings/arm/omap/counter32k.txt > > diff --git a/Documentation/devicetree/bindings/arm/omap/counter32k.txt b/Documentation/devicetree/bindings/arm/omap/counter32k.txt > new file mode 100644 > index 0000000..1983fae > --- /dev/null > +++ b/Documentation/devicetree/bindings/arm/omap/counter32k.txt > @@ -0,0 +1,15 @@ > +OMAP Counter-32K bindings > + > +Required properties: > +- compatible: Must be "ti,omap-counter32k" for OMAP controllers > +- reg: Contains timer register address range (base address and length) > +- ti,hwmods: Name of the hwmod associated to the counter, which is typically > + "counter_32k" > + > +Example: > + > +counter32k: counter32k@4a304000 { > + compatible = "ti,omap-counter32k"; > + reg = <0x4a304000 0x001f>; > + ti,hwmods = "counter_32k"; > +}; > diff --git a/arch/arm/boot/dts/omap2420.dtsi b/arch/arm/boot/dts/omap2420.dtsi > index 5f68a70..082193f 100644 > --- a/arch/arm/boot/dts/omap2420.dtsi > +++ b/arch/arm/boot/dts/omap2420.dtsi > @@ -14,6 +14,12 @@ > compatible = "ti,omap2420", "ti,omap2"; > > ocp { > + counter32k: counter32k@48004000 { I'd rather use "counter" as generic type to be consistent with the timer type we are already using. + counter32k: counter@48004000 { Regards, Benoit ^ permalink raw reply [flat|nested] 5+ messages in thread
[parent not found: <508010E1.6010102-l0cyMroinI0@public.gmane.org>]
* Re: [PATCH 1/2] ARM: dts: OMAP: Add counter-32k nodes [not found] ` <508010E1.6010102-l0cyMroinI0@public.gmane.org> @ 2012-10-18 14:27 ` Jon Hunter 0 siblings, 0 replies; 5+ messages in thread From: Jon Hunter @ 2012-10-18 14:27 UTC (permalink / raw) To: Benoit Cousson; +Cc: device-tree, Rob Herring, linux-omap, linux-arm On 10/18/2012 09:23 AM, Benoit Cousson wrote: > Hi Jon, > > This looks good to me, I just have a minor nit comment. > > On 10/17/2012 08:33 PM, Jon Hunter wrote: >> Adds the counter-32k timers nodes present in OMAP2/3/4 devices and >> device-tree binding documentation for OMAP counter-32k. >> >> Signed-off-by: Jon Hunter <jon-hunter-l0cyMroinI0@public.gmane.org> >> --- >> .../devicetree/bindings/arm/omap/counter32k.txt | 15 +++++++++++++++ >> arch/arm/boot/dts/omap2420.dtsi | 6 ++++++ >> arch/arm/boot/dts/omap2430.dtsi | 6 ++++++ >> arch/arm/boot/dts/omap3.dtsi | 6 ++++++ >> arch/arm/boot/dts/omap4.dtsi | 6 ++++++ >> 5 files changed, 39 insertions(+) >> create mode 100644 Documentation/devicetree/bindings/arm/omap/counter32k.txt >> >> diff --git a/Documentation/devicetree/bindings/arm/omap/counter32k.txt b/Documentation/devicetree/bindings/arm/omap/counter32k.txt >> new file mode 100644 >> index 0000000..1983fae >> --- /dev/null >> +++ b/Documentation/devicetree/bindings/arm/omap/counter32k.txt >> @@ -0,0 +1,15 @@ >> +OMAP Counter-32K bindings >> + >> +Required properties: >> +- compatible: Must be "ti,omap-counter32k" for OMAP controllers >> +- reg: Contains timer register address range (base address and length) >> +- ti,hwmods: Name of the hwmod associated to the counter, which is typically >> + "counter_32k" >> + >> +Example: >> + >> +counter32k: counter32k@4a304000 { >> + compatible = "ti,omap-counter32k"; >> + reg = <0x4a304000 0x001f>; >> + ti,hwmods = "counter_32k"; >> +}; >> diff --git a/arch/arm/boot/dts/omap2420.dtsi b/arch/arm/boot/dts/omap2420.dtsi >> index 5f68a70..082193f 100644 >> --- a/arch/arm/boot/dts/omap2420.dtsi >> +++ b/arch/arm/boot/dts/omap2420.dtsi >> @@ -14,6 +14,12 @@ >> compatible = "ti,omap2420", "ti,omap2"; >> >> ocp { >> + counter32k: counter32k@48004000 { > > I'd rather use "counter" as generic type to be consistent with the timer > type we are already using. > > + counter32k: counter@48004000 { Sounds good. Will update. Cheers Jon ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 2/2] ARM: OMAP2+: Add device-tree support for 32kHz counter 2012-10-17 18:33 [PATCH 0/2] ARM: OMAP2+: Add device-tree support for 32kHz counter Jon Hunter 2012-10-17 18:33 ` [PATCH 1/2] ARM: dts: OMAP: Add counter-32k nodes Jon Hunter @ 2012-10-17 18:33 ` Jon Hunter 1 sibling, 0 replies; 5+ messages in thread From: Jon Hunter @ 2012-10-17 18:33 UTC (permalink / raw) To: Benoit Cousson, Tony Lindgren, Rob Herring, Grant Likely Cc: device-tree, linux-omap, linux-arm, Jon Hunter For OMAP devices, the 32kHz counter is the default clock-source for the kernel. However, this is not the only possible clock-source the kernel can use for OMAP devices. When booting with device-tree, if the 32kHz counter is the desired clock-source for the kernel, then parse the device-tree blob to ensure that the counter is present and if so map memory for the counter using the device-tree of_iomap() function so we are no longer reliant on the OMAP HWMOD framework to do this for us. Signed-off-by: Jon Hunter <jon-hunter@ti.com> --- arch/arm/mach-omap2/timer.c | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c index d064afd..a67688f 100644 --- a/arch/arm/mach-omap2/timer.c +++ b/arch/arm/mach-omap2/timer.c @@ -159,6 +159,11 @@ static struct of_device_id omap_timer_match[] __initdata = { { } }; +static struct of_device_id omap_counter_match[] __initdata = { + { .compatible = "ti,omap-counter32k", }, + { } +}; + /** * omap_get_timer_dt - get a timer using device-tree * @match - device-tree match structure for matching a device type @@ -378,11 +383,26 @@ static u32 notrace dmtimer_read_sched_clock(void) static int __init omap2_sync32k_clocksource_init(void) { int ret; + struct device_node *np = NULL; struct omap_hwmod *oh; void __iomem *vbase; const char *oh_name = "counter_32k"; /* + * If device-tree is present, then search the DT blob + * to see if the 32kHz counter is supported. + */ + if (of_have_populated_dt()) { + np = omap_get_timer_dt(omap_counter_match, NULL); + if (!np) + return -ENODEV; + + of_property_read_string_index(np, "ti,hwmods", 0, &oh_name); + if (!oh_name) + return -ENODEV; + } + + /* * First check hwmod data is available for sync32k counter */ oh = omap_hwmod_lookup(oh_name); @@ -391,7 +411,13 @@ static int __init omap2_sync32k_clocksource_init(void) omap_hwmod_setup_one(oh_name); - vbase = omap_hwmod_get_mpu_rt_va(oh); + if (of_have_populated_dt()) { + vbase = of_iomap(np, 0); + of_node_put(np); + } else { + vbase = omap_hwmod_get_mpu_rt_va(oh); + } + if (!vbase) { pr_warn("%s: failed to get counter_32k resource\n", __func__); return -ENXIO; -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 5+ messages in thread
end of thread, other threads:[~2012-10-18 14:27 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2012-10-17 18:33 [PATCH 0/2] ARM: OMAP2+: Add device-tree support for 32kHz counter Jon Hunter 2012-10-17 18:33 ` [PATCH 1/2] ARM: dts: OMAP: Add counter-32k nodes Jon Hunter 2012-10-18 14:23 ` Benoit Cousson [not found] ` <508010E1.6010102-l0cyMroinI0@public.gmane.org> 2012-10-18 14:27 ` Jon Hunter 2012-10-17 18:33 ` [PATCH 2/2] ARM: OMAP2+: Add device-tree support for 32kHz counter Jon Hunter
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).