* [PATCH v3 0/3] Introduce clocksource driver for Keystone platform
@ 2013-12-25 12:32 Ivan Khoronzhuk
2013-12-25 12:32 ` [PATCH v3 1/3] clocksource: timer-keystone: introduce clocksource driver for Keystone Ivan Khoronzhuk
` (2 more replies)
0 siblings, 3 replies; 15+ messages in thread
From: Ivan Khoronzhuk @ 2013-12-25 12:32 UTC (permalink / raw)
To: linux-arm-kernel
Add a broadcast timer64 based clockevent driver for keystone arch.
This driver uses timer in 64-bit general purpose mode as clock event
device.
Documentation:
http://www.ti.com/lit/ug/sprugv5a/sprugv5a.pdf
Based on
git://git.kernel.org/pub/scm/linux/kernel/git/ssantosh/linux-keystone.git
keystone/master
v2..v3:
- clocksource: timer-keystone: introduce clocksource driver for
changed "u64" type to "unsigned long" for hz_period as more appropriate
hz_period rounded up by DIV_ROUND_UP(rate, HZ)
corrected comments
v1..v2:
- clocksource: timer-keystone: introduce clocksource driver for
renamed timer on "timer-keystone"
in keystone_timer_interrupt() evet pointer is passed via "dev_id"
used __relaxed variants of writel/readl and added explicit barriers
added "keystone_timer_disable()" for using in keystone_set_mode()
keystone_timer_config() is not used for disabling the timer any more
in case of an unsupported mode the keystone_timer_config() returns -1.
used request_irq() instead of setup_irq()
assigned irq for event_device in event_dev->irq
calculated timer.hz_period for CLOCK_EVT_MODE_PERIODIC at init
deleted spare call of keystone_timer_config() in keystone_timer_init()
Ivan Khoronzhuk (3):
clocksource: timer-keystone: introduce clocksource driver for
Keystone
clocksource: keystone: add bindings for keystone timer
arm: dts: keystone: add keystone timer entry
.../bindings/timer/ti,keystone-timer.txt | 29 +++
arch/arm/boot/dts/keystone-clocks.dtsi | 10 +
arch/arm/boot/dts/keystone.dtsi | 7 +
drivers/clocksource/Makefile | 1 +
drivers/clocksource/timer-keystone.c | 233 ++++++++++++++++++++
5 files changed, 280 insertions(+)
create mode 100644 Documentation/devicetree/bindings/timer/ti,keystone-timer.txt
create mode 100644 drivers/clocksource/timer-keystone.c
--
1.7.9.5
^ permalink raw reply [flat|nested] 15+ messages in thread* [PATCH v3 1/3] clocksource: timer-keystone: introduce clocksource driver for Keystone 2013-12-25 12:32 [PATCH v3 0/3] Introduce clocksource driver for Keystone platform Ivan Khoronzhuk @ 2013-12-25 12:32 ` Ivan Khoronzhuk 2013-12-26 17:58 ` Santosh Shilimkar 2013-12-26 18:22 ` Stephen Boyd 2013-12-25 12:32 ` [PATCH v3 2/3] clocksource: keystone: add bindings for keystone timer Ivan Khoronzhuk 2013-12-25 12:32 ` [PATCH v3 3/3] arm: dts: keystone: add keystone timer entry Ivan Khoronzhuk 2 siblings, 2 replies; 15+ messages in thread From: Ivan Khoronzhuk @ 2013-12-25 12:32 UTC (permalink / raw) To: linux-arm-kernel Add broadcast clock-event device for the Keystone arch. The timer can be configured as a general-purpose 64-bit timer, dual general-purpose 32-bit timers. When configured as dual 32-bit timers, each half can operate in conjunction (chain mode) or independently (unchained mode) of each other. Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com> --- drivers/clocksource/Makefile | 1 + drivers/clocksource/timer-keystone.c | 233 ++++++++++++++++++++++++++++++++++ 2 files changed, 234 insertions(+) create mode 100644 drivers/clocksource/timer-keystone.c diff --git a/drivers/clocksource/Makefile b/drivers/clocksource/Makefile index 33621ef..2acf3fc 100644 --- a/drivers/clocksource/Makefile +++ b/drivers/clocksource/Makefile @@ -36,3 +36,4 @@ obj-$(CONFIG_ARM_ARCH_TIMER) += arm_arch_timer.o obj-$(CONFIG_ARM_GLOBAL_TIMER) += arm_global_timer.o obj-$(CONFIG_CLKSRC_METAG_GENERIC) += metag_generic.o obj-$(CONFIG_ARCH_HAS_TICK_BROADCAST) += dummy_timer.o +obj-$(CONFIG_ARCH_KEYSTONE) += timer-keystone.o diff --git a/drivers/clocksource/timer-keystone.c b/drivers/clocksource/timer-keystone.c new file mode 100644 index 0000000..cbac8d0 --- /dev/null +++ b/drivers/clocksource/timer-keystone.c @@ -0,0 +1,233 @@ +/* + * Keystone broadcast clock-event + * + * Copyright 2013 Texas Instruments, Inc. + * + * Author: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + */ + +#include <linux/clk.h> +#include <linux/clockchips.h> +#include <linux/clocksource.h> +#include <linux/interrupt.h> +#include <linux/of_address.h> +#include <linux/of_irq.h> + +#define TIMER_NAME "timer-keystone" + +/* Timer register offsets */ +#define TIM12 0x10 +#define TIM34 0x14 +#define PRD12 0x18 +#define PRD34 0x1c +#define TCR 0x20 +#define TGCR 0x24 +#define INTCTLSTAT 0x44 + +/* Timer register bitfields */ +#define TCR_ENAMODE_MASK 0xC0 +#define TCR_ENAMODE_ONESHOT_MASK 0x40 +#define TCR_ENAMODE_PERIODIC_MASK 0x80 + +#define TGCR_TIM_UNRESET_MASK 0x03 +#define INTCTLSTAT_ENINT_MASK 0x01 + +/** + * struct keystone_timer: holds timer's data + * @base: timer memory base address + * @hz_period: cycles per HZ period + * @event_dev: event device based on timer + */ +static struct keystone_timer { + void __iomem *base; + unsigned long hz_period; + struct clock_event_device event_dev; +} timer; + +static inline u32 keystone_timer_readl(unsigned long rg) +{ + return readl_relaxed(timer.base + rg); +} + +static inline void keystone_timer_writel(u32 val, unsigned long rg) +{ + writel_relaxed(val, timer.base + rg); +} + +/** + * keystone_timer_config: configures timer to work in oneshot/periodic modes. + * @ mode: mode to configure + * @ period: cycles number to configure for + */ +static int keystone_timer_config(u64 period, enum clock_event_mode mode) +{ + u32 tcr; + u32 off; + + tcr = keystone_timer_readl(TCR); + off = tcr & ~(TCR_ENAMODE_MASK); + + /* set enable mode */ + switch (mode) { + case CLOCK_EVT_MODE_ONESHOT: + tcr |= TCR_ENAMODE_ONESHOT_MASK; + break; + case CLOCK_EVT_MODE_PERIODIC: + tcr |= TCR_ENAMODE_PERIODIC_MASK; + break; + default: + return -1; + } + + /* disable timer */ + keystone_timer_writel(off, TCR); + /* here we have to be sure the timer has been disabled */ + wmb(); + + /* reset counter to zero, set new period */ + keystone_timer_writel(0, TIM12); + keystone_timer_writel(0, TIM34); + keystone_timer_writel(period & 0xffffffff, PRD12); + keystone_timer_writel(period >> 32, PRD34); + + /* + * enable timer + * here we have to be sure that CNTLO, CNTHI, PRDLO, PRDHI registers + * have been written. + */ + wmb(); + keystone_timer_writel(tcr, TCR); + return 0; +} + +static void keystone_timer_disable(void) +{ + u32 tcr; + + tcr = keystone_timer_readl(TCR); + + /* disable timer */ + tcr &= ~(TCR_ENAMODE_MASK); + keystone_timer_writel(tcr, TCR); +} + +static irqreturn_t keystone_timer_interrupt(int irq, void *dev_id) +{ + struct clock_event_device *evt = dev_id; + + evt->event_handler(evt); + return IRQ_HANDLED; +} + +static int keystone_set_next_event(unsigned long cycles, + struct clock_event_device *evt) +{ + return keystone_timer_config(cycles, evt->mode); +} + +static void keystone_set_mode(enum clock_event_mode mode, + struct clock_event_device *evt) +{ + switch (mode) { + case CLOCK_EVT_MODE_PERIODIC: + keystone_timer_config(timer.hz_period, CLOCK_EVT_MODE_PERIODIC); + break; + case CLOCK_EVT_MODE_UNUSED: + case CLOCK_EVT_MODE_SHUTDOWN: + case CLOCK_EVT_MODE_ONESHOT: + keystone_timer_disable(); + break; + default: + break; + } +} + +static void __init keystone_timer_init(struct device_node *np) +{ + struct clock_event_device *event_dev = &timer.event_dev; + unsigned long rate; + struct clk *clk; + int irq, error; + u32 tgcr; + + irq = irq_of_parse_and_map(np, 0); + if (irq == NO_IRQ) { + pr_err("%s: failed to map interrupts\n", __func__); + return; + } + + timer.base = of_iomap(np, 0); + if (!timer.base) { + pr_err("%s: failed to map registers\n", __func__); + return; + } + + clk = of_clk_get(np, 0); + if (!clk) { + pr_err("%s: failed to get clock\n", __func__); + iounmap(timer.base); + return; + } + + error = clk_prepare_enable(clk); + if (error) { + pr_err("%s: failed to enable clock\n", __func__); + goto err; + } + + rate = clk_get_rate(clk); + + /* disable, use internal clock source */ + keystone_timer_writel(0, TCR); + /* here we have to be sure the timer has been disabled */ + wmb(); + + /* reset timer as 64-bit, no pre-scaler, plus features are disabled */ + tgcr = 0; + keystone_timer_writel(0, TGCR); + + /* unreset timer */ + tgcr |= TGCR_TIM_UNRESET_MASK; + keystone_timer_writel(tgcr, TGCR); + + /* init counter to zero */ + keystone_timer_writel(0, TIM12); + keystone_timer_writel(0, TIM34); + + timer.hz_period = DIV_ROUND_UP(rate, HZ); + + /* enable timer interrupts */ + keystone_timer_writel(INTCTLSTAT_ENINT_MASK, INTCTLSTAT); + + error = request_irq(irq, keystone_timer_interrupt, IRQF_TIMER, + TIMER_NAME, event_dev); + if (error) { + pr_err("%s: failed to setup irq\n", __func__); + goto err; + } + + /* setup clockevent */ + event_dev->features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT; + event_dev->set_next_event = keystone_set_next_event; + event_dev->set_mode = keystone_set_mode; + event_dev->cpumask = cpu_all_mask; + event_dev->owner = THIS_MODULE; + event_dev->name = TIMER_NAME; + event_dev->irq = irq; + + clockevents_config_and_register(event_dev, rate, 1, ULONG_MAX); + + pr_info("keystone timer clock @%lu Hz\n", rate); + return; +err: + clk_put(clk); + iounmap(timer.base); +} + +CLOCKSOURCE_OF_DECLARE(keystone_timer, "ti,keystone-timer", + keystone_timer_init); -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH v3 1/3] clocksource: timer-keystone: introduce clocksource driver for Keystone 2013-12-25 12:32 ` [PATCH v3 1/3] clocksource: timer-keystone: introduce clocksource driver for Keystone Ivan Khoronzhuk @ 2013-12-26 17:58 ` Santosh Shilimkar 2013-12-26 18:22 ` Stephen Boyd 1 sibling, 0 replies; 15+ messages in thread From: Santosh Shilimkar @ 2013-12-26 17:58 UTC (permalink / raw) To: linux-arm-kernel On Wednesday 25 December 2013 07:32 AM, Ivan Khoronzhuk wrote: > Add broadcast clock-event device for the Keystone arch. > > The timer can be configured as a general-purpose 64-bit timer, > dual general-purpose 32-bit timers. When configured as dual 32-bit > timers, each half can operate in conjunction (chain mode) or > independently (unchained mode) of each other. > > Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com> > --- Thanks for the update Ivan. This version looks good to me. Acked-by: Santosh shilimkar <santosh.shilimkar@ti.com> ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH v3 1/3] clocksource: timer-keystone: introduce clocksource driver for Keystone 2013-12-25 12:32 ` [PATCH v3 1/3] clocksource: timer-keystone: introduce clocksource driver for Keystone Ivan Khoronzhuk 2013-12-26 17:58 ` Santosh Shilimkar @ 2013-12-26 18:22 ` Stephen Boyd 2013-12-26 18:40 ` ivan.khoronzhuk 1 sibling, 1 reply; 15+ messages in thread From: Stephen Boyd @ 2013-12-26 18:22 UTC (permalink / raw) To: linux-arm-kernel On 12/25, Ivan Khoronzhuk wrote: > + > + /* enable timer interrupts */ > + keystone_timer_writel(INTCTLSTAT_ENINT_MASK, INTCTLSTAT); > + > + error = request_irq(irq, keystone_timer_interrupt, IRQF_TIMER, > + TIMER_NAME, event_dev); > + if (error) { > + pr_err("%s: failed to setup irq\n", __func__); > + goto err; > + } > + > + /* setup clockevent */ > + event_dev->features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT; > + event_dev->set_next_event = keystone_set_next_event; > + event_dev->set_mode = keystone_set_mode; > + event_dev->cpumask = cpu_all_mask; > + event_dev->owner = THIS_MODULE; > + event_dev->name = TIMER_NAME; > + event_dev->irq = irq; > + > + clockevents_config_and_register(event_dev, rate, 1, ULONG_MAX); > + I hope you don't get an interrupt before you register the clockevent. You might want to reorder the interrupt request and the clockevent registration so that it isn't a problem. Other than that you can have my Reviewed-by: Stephen Boyd <sboyd@codeaurora.org> -- Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH v3 1/3] clocksource: timer-keystone: introduce clocksource driver for Keystone 2013-12-26 18:22 ` Stephen Boyd @ 2013-12-26 18:40 ` ivan.khoronzhuk 2013-12-26 19:42 ` Stephen Boyd 0 siblings, 1 reply; 15+ messages in thread From: ivan.khoronzhuk @ 2013-12-26 18:40 UTC (permalink / raw) To: linux-arm-kernel On 12/26/2013 08:22 PM, Stephen Boyd wrote: > On 12/25, Ivan Khoronzhuk wrote: >> + >> + /* enable timer interrupts */ >> + keystone_timer_writel(INTCTLSTAT_ENINT_MASK, INTCTLSTAT); >> + >> + error = request_irq(irq, keystone_timer_interrupt, IRQF_TIMER, >> + TIMER_NAME, event_dev); >> + if (error) { >> + pr_err("%s: failed to setup irq\n", __func__); >> + goto err; >> + } >> + >> + /* setup clockevent */ >> + event_dev->features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT; >> + event_dev->set_next_event = keystone_set_next_event; >> + event_dev->set_mode = keystone_set_mode; >> + event_dev->cpumask = cpu_all_mask; >> + event_dev->owner = THIS_MODULE; >> + event_dev->name = TIMER_NAME; >> + event_dev->irq = irq; >> + >> + clockevents_config_and_register(event_dev, rate, 1, ULONG_MAX); >> + > > I hope you don't get an interrupt before you register the > clockevent. You might want to reorder the interrupt request and > the clockevent registration so that it isn't a problem. Other > than that you can have my > > Reviewed-by: Stephen Boyd <sboyd@codeaurora.org> > Thanks. While interrupt enabling the timer is disabled, so it cannot generate interrupt. The timer will be enabled when next event is set by clockevent core. -- Regards, Ivan Khoronzhuk ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH v3 1/3] clocksource: timer-keystone: introduce clocksource driver for Keystone 2013-12-26 18:40 ` ivan.khoronzhuk @ 2013-12-26 19:42 ` Stephen Boyd 0 siblings, 0 replies; 15+ messages in thread From: Stephen Boyd @ 2013-12-26 19:42 UTC (permalink / raw) To: linux-arm-kernel On 12/26, ivan.khoronzhuk wrote: > On 12/26/2013 08:22 PM, Stephen Boyd wrote: > > On 12/25, Ivan Khoronzhuk wrote: > >> + > >> + /* enable timer interrupts */ > >> + keystone_timer_writel(INTCTLSTAT_ENINT_MASK, INTCTLSTAT); > >> + > >> + error = request_irq(irq, keystone_timer_interrupt, IRQF_TIMER, > >> + TIMER_NAME, event_dev); > >> + if (error) { > >> + pr_err("%s: failed to setup irq\n", __func__); > >> + goto err; > >> + } > >> + > >> + /* setup clockevent */ > >> + event_dev->features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT; > >> + event_dev->set_next_event = keystone_set_next_event; > >> + event_dev->set_mode = keystone_set_mode; > >> + event_dev->cpumask = cpu_all_mask; > >> + event_dev->owner = THIS_MODULE; > >> + event_dev->name = TIMER_NAME; > >> + event_dev->irq = irq; > >> + > >> + clockevents_config_and_register(event_dev, rate, 1, ULONG_MAX); > >> + > > > > I hope you don't get an interrupt before you register the > > clockevent. You might want to reorder the interrupt request and > > the clockevent registration so that it isn't a problem. Other > > than that you can have my > > > > Reviewed-by: Stephen Boyd <sboyd@codeaurora.org> > > > > Thanks. > > While interrupt enabling the timer is disabled, so it cannot generate interrupt. > The timer will be enabled when next event is set by clockevent core. > Ok, I was thinking more like the interrupt is level triggered and the bootloader left it triggered. Sounds like that doesn't happen. -- Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH v3 2/3] clocksource: keystone: add bindings for keystone timer 2013-12-25 12:32 [PATCH v3 0/3] Introduce clocksource driver for Keystone platform Ivan Khoronzhuk 2013-12-25 12:32 ` [PATCH v3 1/3] clocksource: timer-keystone: introduce clocksource driver for Keystone Ivan Khoronzhuk @ 2013-12-25 12:32 ` Ivan Khoronzhuk 2013-12-26 18:00 ` Santosh Shilimkar 2013-12-25 12:32 ` [PATCH v3 3/3] arm: dts: keystone: add keystone timer entry Ivan Khoronzhuk 2 siblings, 1 reply; 15+ messages in thread From: Ivan Khoronzhuk @ 2013-12-25 12:32 UTC (permalink / raw) To: linux-arm-kernel This patch provides bindings for the 64-bit timer in the KeyStone architecture devices. The timer can be configured as a general-purpose 64-bit timer, dual general-purpose 32-bit timers. When configured as dual 32-bit timers, each half can operate in conjunction (chain mode) or independently (unchained mode) of each other. It is global timer is a free running up-counter and can generate interrupt when the counter reaches preset counter values. Documentation: http://www.ti.com/lit/ug/sprugv5a/sprugv5a.pdf Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com> --- .../bindings/timer/ti,keystone-timer.txt | 29 ++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 Documentation/devicetree/bindings/timer/ti,keystone-timer.txt diff --git a/Documentation/devicetree/bindings/timer/ti,keystone-timer.txt b/Documentation/devicetree/bindings/timer/ti,keystone-timer.txt new file mode 100644 index 0000000..5fbe361 --- /dev/null +++ b/Documentation/devicetree/bindings/timer/ti,keystone-timer.txt @@ -0,0 +1,29 @@ +* Device tree bindings for Texas instruments Keystone timer + +This document provides bindings for the 64-bit timer in the KeyStone +architecture devices. The timer can be configured as a general-purpose 64-bit +timer, dual general-purpose 32-bit timers. When configured as dual 32-bit +timers, each half can operate in conjunction (chain mode) or independently +(unchained mode) of each other. + +It is global timer is a free running up-counter and can generate interrupt +when the counter reaches preset counter values. + +Documentation: +http://www.ti.com/lit/ug/sprugv5a/sprugv5a.pdf + +Required properties: + +- compatible : should be "ti,keystone-timer". +- reg : specifies base physical address and count of the registers. +- interrupts : interrupt generated by the timer. +- clocks : the clock feeding the timer clock. + +Example: + +timer at 22f0000 { + compatible = "ti,keystone-timer"; + reg = <0x022f0000 0x80>; + interrupts = <GIC_SPI 110 IRQ_TYPE_EDGE_RISING>; + clocks = <&clktimer15>; +}; -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH v3 2/3] clocksource: keystone: add bindings for keystone timer 2013-12-25 12:32 ` [PATCH v3 2/3] clocksource: keystone: add bindings for keystone timer Ivan Khoronzhuk @ 2013-12-26 18:00 ` Santosh Shilimkar 0 siblings, 0 replies; 15+ messages in thread From: Santosh Shilimkar @ 2013-12-26 18:00 UTC (permalink / raw) To: linux-arm-kernel On Wednesday 25 December 2013 07:32 AM, Ivan Khoronzhuk wrote: > This patch provides bindings for the 64-bit timer in the KeyStone > architecture devices. The timer can be configured as a general-purpose 64-bit > timer, dual general-purpose 32-bit timers. When configured as dual 32-bit > timers, each half can operate in conjunction (chain mode) or independently > (unchained mode) of each other. > > It is global timer is a free running up-counter and can generate interrupt > when the counter reaches preset counter values. > > Documentation: > http://www.ti.com/lit/ug/sprugv5a/sprugv5a.pdf > > Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com> > --- The binding is trivial but still needs to be blessed by DT folks. It looks good for me. Acked-by: Santosh Shilimkar <santosh.shilimkar@ti.com> > .../bindings/timer/ti,keystone-timer.txt | 29 ++++++++++++++++++++ > 1 file changed, 29 insertions(+) > create mode 100644 Documentation/devicetree/bindings/timer/ti,keystone-timer.txt > > diff --git a/Documentation/devicetree/bindings/timer/ti,keystone-timer.txt b/Documentation/devicetree/bindings/timer/ti,keystone-timer.txt > new file mode 100644 > index 0000000..5fbe361 > --- /dev/null > +++ b/Documentation/devicetree/bindings/timer/ti,keystone-timer.txt > @@ -0,0 +1,29 @@ > +* Device tree bindings for Texas instruments Keystone timer > + > +This document provides bindings for the 64-bit timer in the KeyStone > +architecture devices. The timer can be configured as a general-purpose 64-bit > +timer, dual general-purpose 32-bit timers. When configured as dual 32-bit > +timers, each half can operate in conjunction (chain mode) or independently > +(unchained mode) of each other. > + > +It is global timer is a free running up-counter and can generate interrupt > +when the counter reaches preset counter values. > + > +Documentation: > +http://www.ti.com/lit/ug/sprugv5a/sprugv5a.pdf > + > +Required properties: > + > +- compatible : should be "ti,keystone-timer". > +- reg : specifies base physical address and count of the registers. > +- interrupts : interrupt generated by the timer. > +- clocks : the clock feeding the timer clock. > + > +Example: > + > +timer at 22f0000 { > + compatible = "ti,keystone-timer"; > + reg = <0x022f0000 0x80>; > + interrupts = <GIC_SPI 110 IRQ_TYPE_EDGE_RISING>; > + clocks = <&clktimer15>; > +}; > ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH v3 3/3] arm: dts: keystone: add keystone timer entry 2013-12-25 12:32 [PATCH v3 0/3] Introduce clocksource driver for Keystone platform Ivan Khoronzhuk 2013-12-25 12:32 ` [PATCH v3 1/3] clocksource: timer-keystone: introduce clocksource driver for Keystone Ivan Khoronzhuk 2013-12-25 12:32 ` [PATCH v3 2/3] clocksource: keystone: add bindings for keystone timer Ivan Khoronzhuk @ 2013-12-25 12:32 ` Ivan Khoronzhuk 2013-12-26 18:02 ` Santosh Shilimkar 2 siblings, 1 reply; 15+ messages in thread From: Ivan Khoronzhuk @ 2013-12-25 12:32 UTC (permalink / raw) To: linux-arm-kernel Add keystone timer entry to keystone device tree. This 64-bit timer is used as backup clock event device. Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com> --- arch/arm/boot/dts/keystone-clocks.dtsi | 10 ++++++++++ arch/arm/boot/dts/keystone.dtsi | 7 +++++++ 2 files changed, 17 insertions(+) diff --git a/arch/arm/boot/dts/keystone-clocks.dtsi b/arch/arm/boot/dts/keystone-clocks.dtsi index 2363593..16d2aba 100644 --- a/arch/arm/boot/dts/keystone-clocks.dtsi +++ b/arch/arm/boot/dts/keystone-clocks.dtsi @@ -737,6 +737,16 @@ clocks { domain-id = <0>; }; + clktimer15: clktimer15 { + #clock-cells = <0>; + compatible = "ti,keystone,psc-clock"; + clocks = <&clkmodrst0>; + clock-output-names = "timer15"; + reg = <0x02350000 0xb00>, <0x02350000 0x400>; + reg-names = "control", "domain"; + domain-id = <0>; + }; + clkuart0: clkuart0 { #clock-cells = <0>; compatible = "ti,keystone,psc-clock"; diff --git a/arch/arm/boot/dts/keystone.dtsi b/arch/arm/boot/dts/keystone.dtsi index f6d6d9e..3f05c07 100644 --- a/arch/arm/boot/dts/keystone.dtsi +++ b/arch/arm/boot/dts/keystone.dtsi @@ -181,5 +181,12 @@ interrupts = <GIC_SPI 300 IRQ_TYPE_EDGE_RISING>; clocks = <&clkspi>; }; + + clock_event: timer at 22f0000 { + compatible = "ti,keystone-timer"; + reg = <0x022f0000 0x80>; + interrupts = <GIC_SPI 110 IRQ_TYPE_EDGE_RISING>; + clocks = <&clktimer15>; + }; }; }; -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH v3 3/3] arm: dts: keystone: add keystone timer entry 2013-12-25 12:32 ` [PATCH v3 3/3] arm: dts: keystone: add keystone timer entry Ivan Khoronzhuk @ 2013-12-26 18:02 ` Santosh Shilimkar 2013-12-28 19:07 ` Daniel Lezcano 0 siblings, 1 reply; 15+ messages in thread From: Santosh Shilimkar @ 2013-12-26 18:02 UTC (permalink / raw) To: linux-arm-kernel $subject s/arm/ARM, On Wednesday 25 December 2013 07:32 AM, Ivan Khoronzhuk wrote: > Add keystone timer entry to keystone device tree. > This 64-bit timer is used as backup clock event device. > > Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com> > --- No need to repost. I will fix it up while applying based on state of PATCH 1/3 and 2/3. Regards, Santosh ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH v3 3/3] arm: dts: keystone: add keystone timer entry 2013-12-26 18:02 ` Santosh Shilimkar @ 2013-12-28 19:07 ` Daniel Lezcano 2013-12-29 19:23 ` Santosh Shilimkar 2014-01-13 11:28 ` ivan.khoronzhuk 0 siblings, 2 replies; 15+ messages in thread From: Daniel Lezcano @ 2013-12-28 19:07 UTC (permalink / raw) To: linux-arm-kernel On 12/26/2013 07:02 PM, Santosh Shilimkar wrote: > $subject > s/arm/ARM, > > On Wednesday 25 December 2013 07:32 AM, Ivan Khoronzhuk wrote: >> Add keystone timer entry to keystone device tree. >> This 64-bit timer is used as backup clock event device. >> >> Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com> >> --- > No need to repost. I will fix it up while applying based > on state of PATCH 1/3 and 2/3. I assume you will take the patchset in your tree. I am back from vacations, give me a couple of days to review the patchset before applying it please. Thanks -- Daniel -- <http://www.linaro.org/> Linaro.org ? Open source software for ARM SoCs Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook | <http://twitter.com/#!/linaroorg> Twitter | <http://www.linaro.org/linaro-blog/> Blog ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH v3 3/3] arm: dts: keystone: add keystone timer entry 2013-12-28 19:07 ` Daniel Lezcano @ 2013-12-29 19:23 ` Santosh Shilimkar 2014-01-13 11:28 ` ivan.khoronzhuk 1 sibling, 0 replies; 15+ messages in thread From: Santosh Shilimkar @ 2013-12-29 19:23 UTC (permalink / raw) To: linux-arm-kernel On Saturday 28 December 2013 02:07 PM, Daniel Lezcano wrote: > On 12/26/2013 07:02 PM, Santosh Shilimkar wrote: >> $subject >> s/arm/ARM, >> >> On Wednesday 25 December 2013 07:32 AM, Ivan Khoronzhuk wrote: >>> Add keystone timer entry to keystone device tree. >>> This 64-bit timer is used as backup clock event device. >>> >>> Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com> >>> --- >> No need to repost. I will fix it up while applying based >> on state of PATCH 1/3 and 2/3. > > I assume you will take the patchset in your tree. > I wasn't planning to take patch 1/3 and 2/3, assuming they will go via clocksource tree. Only the dts $subject patch is what I was planning to pick it up if the 1/3 and 2/3 gets lined up via thomas's tree. > I am back from vacations, give me a couple of days to review the patchset before applying it please. > Take your time. Am not applying them as mentioned above. Regards, Santosh ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH v3 3/3] arm: dts: keystone: add keystone timer entry 2013-12-28 19:07 ` Daniel Lezcano 2013-12-29 19:23 ` Santosh Shilimkar @ 2014-01-13 11:28 ` ivan.khoronzhuk 2014-01-13 13:14 ` Daniel Lezcano 1 sibling, 1 reply; 15+ messages in thread From: ivan.khoronzhuk @ 2014-01-13 11:28 UTC (permalink / raw) To: linux-arm-kernel On 12/28/2013 09:07 PM, Daniel Lezcano wrote: > On 12/26/2013 07:02 PM, Santosh Shilimkar wrote: >> $subject >> s/arm/ARM, >> >> On Wednesday 25 December 2013 07:32 AM, Ivan Khoronzhuk wrote: >>> Add keystone timer entry to keystone device tree. >>> This 64-bit timer is used as backup clock event device. >>> >>> Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com> >>> --- >> No need to repost. I will fix it up while applying based >> on state of PATCH 1/3 and 2/3. > > I assume you will take the patchset in your tree. > > I am back from vacations, give me a couple of days to review the > patchset before applying it please. > > Thanks > -- Daniel > Hi, Daniel Do you have any comments on this patch series? Can we expect it in k3.14 -- Regards, Ivan Khoronzhuk ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH v3 3/3] arm: dts: keystone: add keystone timer entry 2014-01-13 11:28 ` ivan.khoronzhuk @ 2014-01-13 13:14 ` Daniel Lezcano 2014-01-13 14:20 ` Santosh Shilimkar 0 siblings, 1 reply; 15+ messages in thread From: Daniel Lezcano @ 2014-01-13 13:14 UTC (permalink / raw) To: linux-arm-kernel On 01/13/2014 12:28 PM, ivan.khoronzhuk wrote: > On 12/28/2013 09:07 PM, Daniel Lezcano wrote: >> On 12/26/2013 07:02 PM, Santosh Shilimkar wrote: >>> $subject >>> s/arm/ARM, >>> >>> On Wednesday 25 December 2013 07:32 AM, Ivan Khoronzhuk wrote: >>>> Add keystone timer entry to keystone device tree. >>>> This 64-bit timer is used as backup clock event device. >>>> >>>> Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com> >>>> --- >>> No need to repost. I will fix it up while applying based >>> on state of PATCH 1/3 and 2/3. >> >> I assume you will take the patchset in your tree. >> >> I am back from vacations, give me a couple of days to review the >> patchset before applying it please. >> >> Thanks >> -- Daniel >> > > Hi, Daniel > > Do you have any comments on this patch series? > Can we expect it in k3.14 I have applied the patch 1/3 and 2/3 in my tree but I was expecting the DT folks to give their acked-by for the patch 2/3. It is a bit late for 3.14 but if the patch 3/3 is in Santosh's tree, the patch 2/3 gets its acked-by and you absolutely need the driver for this version, I may consider to send another PR to the upstream maintainers. That will be up to them to accept to pull it or not. -- <http://www.linaro.org/> Linaro.org ? Open source software for ARM SoCs Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook | <http://twitter.com/#!/linaroorg> Twitter | <http://www.linaro.org/linaro-blog/> Blog ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH v3 3/3] arm: dts: keystone: add keystone timer entry 2014-01-13 13:14 ` Daniel Lezcano @ 2014-01-13 14:20 ` Santosh Shilimkar 0 siblings, 0 replies; 15+ messages in thread From: Santosh Shilimkar @ 2014-01-13 14:20 UTC (permalink / raw) To: linux-arm-kernel On Monday 13 January 2014 08:14 AM, Daniel Lezcano wrote: > On 01/13/2014 12:28 PM, ivan.khoronzhuk wrote: >> On 12/28/2013 09:07 PM, Daniel Lezcano wrote: >>> On 12/26/2013 07:02 PM, Santosh Shilimkar wrote: >>>> $subject >>>> s/arm/ARM, >>>> >>>> On Wednesday 25 December 2013 07:32 AM, Ivan Khoronzhuk wrote: >>>>> Add keystone timer entry to keystone device tree. >>>>> This 64-bit timer is used as backup clock event device. >>>>> >>>>> Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com> >>>>> --- >>>> No need to repost. I will fix it up while applying based >>>> on state of PATCH 1/3 and 2/3. >>> >>> I assume you will take the patchset in your tree. >>> >>> I am back from vacations, give me a couple of days to review the >>> patchset before applying it please. >>> >>> Thanks >>> -- Daniel >>> >> >> Hi, Daniel >> >> Do you have any comments on this patch series? >> Can we expect it in k3.14 > > I have applied the patch 1/3 and 2/3 in my tree but I was expecting the DT folks to give their acked-by for the patch 2/3. > > It is a bit late for 3.14 but if the patch 3/3 is in Santosh's tree, the patch 2/3 gets its acked-by and you absolutely need the driver for this version, I may consider to send another PR to the upstream maintainers. That will be up to them to accept to pull it or not. > They can wait for next merge window (3.15). Regards, Santosh ^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2014-01-13 14:20 UTC | newest] Thread overview: 15+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2013-12-25 12:32 [PATCH v3 0/3] Introduce clocksource driver for Keystone platform Ivan Khoronzhuk 2013-12-25 12:32 ` [PATCH v3 1/3] clocksource: timer-keystone: introduce clocksource driver for Keystone Ivan Khoronzhuk 2013-12-26 17:58 ` Santosh Shilimkar 2013-12-26 18:22 ` Stephen Boyd 2013-12-26 18:40 ` ivan.khoronzhuk 2013-12-26 19:42 ` Stephen Boyd 2013-12-25 12:32 ` [PATCH v3 2/3] clocksource: keystone: add bindings for keystone timer Ivan Khoronzhuk 2013-12-26 18:00 ` Santosh Shilimkar 2013-12-25 12:32 ` [PATCH v3 3/3] arm: dts: keystone: add keystone timer entry Ivan Khoronzhuk 2013-12-26 18:02 ` Santosh Shilimkar 2013-12-28 19:07 ` Daniel Lezcano 2013-12-29 19:23 ` Santosh Shilimkar 2014-01-13 11:28 ` ivan.khoronzhuk 2014-01-13 13:14 ` Daniel Lezcano 2014-01-13 14:20 ` Santosh Shilimkar
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).