* [PATCH v2 0/3] Introduce clocksource driver for Keystone platform @ 2013-12-17 16:22 Ivan Khoronzhuk 2013-12-17 16:22 ` [PATCH v2 1/3] clocksource: timer-keystone: introduce clocksource driver for Keystone Ivan Khoronzhuk ` (2 more replies) 0 siblings, 3 replies; 10+ messages in thread From: Ivan Khoronzhuk @ 2013-12-17 16:22 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 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] 10+ messages in thread
* [PATCH v2 1/3] clocksource: timer-keystone: introduce clocksource driver for Keystone 2013-12-17 16:22 [PATCH v2 0/3] Introduce clocksource driver for Keystone platform Ivan Khoronzhuk @ 2013-12-17 16:22 ` Ivan Khoronzhuk 2013-12-17 20:43 ` Santosh Shilimkar 2013-12-24 0:58 ` Stephen Boyd 2013-12-17 16:22 ` [PATCH v2 2/3] clocksource: keystone: add bindings for keystone timer Ivan Khoronzhuk 2013-12-17 16:22 ` [PATCH v2 3/3] arm: dts: keystone: add keystone timer entry Ivan Khoronzhuk 2 siblings, 2 replies; 10+ messages in thread From: Ivan Khoronzhuk @ 2013-12-17 16:22 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..34c6ab8 --- /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 + * @period: source clock rate + * @irqacrion: interrupt action descriptor + * @event_dev: event device based on timer + */ +static struct keystone_timer { + u64 hz_period; + void __iomem *base; + 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 = 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] 10+ messages in thread
* [PATCH v2 1/3] clocksource: timer-keystone: introduce clocksource driver for Keystone 2013-12-17 16:22 ` [PATCH v2 1/3] clocksource: timer-keystone: introduce clocksource driver for Keystone Ivan Khoronzhuk @ 2013-12-17 20:43 ` Santosh Shilimkar 2013-12-24 0:58 ` Stephen Boyd 1 sibling, 0 replies; 10+ messages in thread From: Santosh Shilimkar @ 2013-12-17 20:43 UTC (permalink / raw) To: linux-arm-kernel On Tuesday 17 December 2013 11:22 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> > --- > 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..34c6ab8 > --- /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 > + * @period: source clock rate > + * @irqacrion: interrupt action descriptor > + * @event_dev: event device based on timer > + */ > +static struct keystone_timer { > + u64 hz_period; > + void __iomem *base; > + 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. > + */ Comment style ? /* * */ Other than the minor comment. The patch looks fine to me.. Acked-by: Santosh Shilimkar <santosh.shilimkar@ti.com> ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v2 1/3] clocksource: timer-keystone: introduce clocksource driver for Keystone 2013-12-17 16:22 ` [PATCH v2 1/3] clocksource: timer-keystone: introduce clocksource driver for Keystone Ivan Khoronzhuk 2013-12-17 20:43 ` Santosh Shilimkar @ 2013-12-24 0:58 ` Stephen Boyd 2013-12-24 8:36 ` ivan.khoronzhuk 1 sibling, 1 reply; 10+ messages in thread From: Stephen Boyd @ 2013-12-24 0:58 UTC (permalink / raw) To: linux-arm-kernel On 12/17, Ivan Khoronzhuk wrote: > +static void __init keystone_timer_init(struct device_node *np) > +{ > + struct clock_event_device *event_dev = &timer.event_dev; > + unsigned long rate; [...] > + > + timer.hz_period = rate / (HZ); Unnecessary parentheses here. Also, do you need to use do_div() here? I'm lost how the hz_period is ever greater than 32 bits though because HZ is most likely very small and the rate is unsigned long. -- Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v2 1/3] clocksource: timer-keystone: introduce clocksource driver for Keystone 2013-12-24 0:58 ` Stephen Boyd @ 2013-12-24 8:36 ` ivan.khoronzhuk 2013-12-24 11:36 ` ivan.khoronzhuk 0 siblings, 1 reply; 10+ messages in thread From: ivan.khoronzhuk @ 2013-12-24 8:36 UTC (permalink / raw) To: linux-arm-kernel On 12/24/2013 02:58 AM, Stephen Boyd wrote: > On 12/17, Ivan Khoronzhuk wrote: >> +static void __init keystone_timer_init(struct device_node *np) >> +{ >> + struct clock_event_device *event_dev = &timer.event_dev; >> + unsigned long rate; > [...] >> + >> + timer.hz_period = rate / (HZ); > > Unnecessary parentheses here. Also, do you need to use do_div() > here? I'm lost how the hz_period is ever greater than 32 bits > though because HZ is most likely very small and the rate is > unsigned long. > You are right. I'll do the following: timer.hz_period = rate / (HZ) ---> timer.hz_period = rate / HZ u64 hz_period ---> unsigned long hz_period -- Regards, Ivan Khoronzhuk ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v2 1/3] clocksource: timer-keystone: introduce clocksource driver for Keystone 2013-12-24 8:36 ` ivan.khoronzhuk @ 2013-12-24 11:36 ` ivan.khoronzhuk 0 siblings, 0 replies; 10+ messages in thread From: ivan.khoronzhuk @ 2013-12-24 11:36 UTC (permalink / raw) To: linux-arm-kernel On 12/24/2013 10:36 AM, ivan.khoronzhuk wrote: > On 12/24/2013 02:58 AM, Stephen Boyd wrote: >> On 12/17, Ivan Khoronzhuk wrote: >>> +static void __init keystone_timer_init(struct device_node *np) >>> +{ >>> + struct clock_event_device *event_dev = &timer.event_dev; >>> + unsigned long rate; >> [...] >>> + >>> + timer.hz_period = rate / (HZ); >> >> Unnecessary parentheses here. Also, do you need to use do_div() >> here? I'm lost how the hz_period is ever greater than 32 bits >> though because HZ is most likely very small and the rate is >> unsigned long. >> > > You are right. > I'll do the following: > > timer.hz_period = rate / (HZ) ---> timer.hz_period = rate / HZ > u64 hz_period ---> unsigned long hz_period > ... maybe it be better to use DIV_ROUND_UP to be sure in no less than HZ period: timer.hz_period = rate / (HZ) --> timer.hz_period = DIV_ROUND_UP(rate, HZ) -- Regards, Ivan Khoronzhuk ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v2 2/3] clocksource: keystone: add bindings for keystone timer 2013-12-17 16:22 [PATCH v2 0/3] Introduce clocksource driver for Keystone platform Ivan Khoronzhuk 2013-12-17 16:22 ` [PATCH v2 1/3] clocksource: timer-keystone: introduce clocksource driver for Keystone Ivan Khoronzhuk @ 2013-12-17 16:22 ` Ivan Khoronzhuk 2013-12-17 20:43 ` Santosh Shilimkar 2013-12-17 16:22 ` [PATCH v2 3/3] arm: dts: keystone: add keystone timer entry Ivan Khoronzhuk 2 siblings, 1 reply; 10+ messages in thread From: Ivan Khoronzhuk @ 2013-12-17 16:22 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] 10+ messages in thread
* [PATCH v2 2/3] clocksource: keystone: add bindings for keystone timer 2013-12-17 16:22 ` [PATCH v2 2/3] clocksource: keystone: add bindings for keystone timer Ivan Khoronzhuk @ 2013-12-17 20:43 ` Santosh Shilimkar 0 siblings, 0 replies; 10+ messages in thread From: Santosh Shilimkar @ 2013-12-17 20:43 UTC (permalink / raw) To: linux-arm-kernel On Tuesday 17 December 2013 11:22 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> > --- Acked-by: Santosh Shilimkar <santosh.shilimkar@ti.com> ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v2 3/3] arm: dts: keystone: add keystone timer entry 2013-12-17 16:22 [PATCH v2 0/3] Introduce clocksource driver for Keystone platform Ivan Khoronzhuk 2013-12-17 16:22 ` [PATCH v2 1/3] clocksource: timer-keystone: introduce clocksource driver for Keystone Ivan Khoronzhuk 2013-12-17 16:22 ` [PATCH v2 2/3] clocksource: keystone: add bindings for keystone timer Ivan Khoronzhuk @ 2013-12-17 16:22 ` Ivan Khoronzhuk 2013-12-17 20:44 ` Santosh Shilimkar 2 siblings, 1 reply; 10+ messages in thread From: Ivan Khoronzhuk @ 2013-12-17 16:22 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] 10+ messages in thread
* [PATCH v2 3/3] arm: dts: keystone: add keystone timer entry 2013-12-17 16:22 ` [PATCH v2 3/3] arm: dts: keystone: add keystone timer entry Ivan Khoronzhuk @ 2013-12-17 20:44 ` Santosh Shilimkar 0 siblings, 0 replies; 10+ messages in thread From: Santosh Shilimkar @ 2013-12-17 20:44 UTC (permalink / raw) To: linux-arm-kernel On Tuesday 17 December 2013 11:22 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> > --- I can pick this up once patch 1 and 2 are picked up. Thanks for the Patches Ivan. Regards, Santosh ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2013-12-24 11:36 UTC | newest] Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2013-12-17 16:22 [PATCH v2 0/3] Introduce clocksource driver for Keystone platform Ivan Khoronzhuk 2013-12-17 16:22 ` [PATCH v2 1/3] clocksource: timer-keystone: introduce clocksource driver for Keystone Ivan Khoronzhuk 2013-12-17 20:43 ` Santosh Shilimkar 2013-12-24 0:58 ` Stephen Boyd 2013-12-24 8:36 ` ivan.khoronzhuk 2013-12-24 11:36 ` ivan.khoronzhuk 2013-12-17 16:22 ` [PATCH v2 2/3] clocksource: keystone: add bindings for keystone timer Ivan Khoronzhuk 2013-12-17 20:43 ` Santosh Shilimkar 2013-12-17 16:22 ` [PATCH v2 3/3] arm: dts: keystone: add keystone timer entry Ivan Khoronzhuk 2013-12-17 20:44 ` Santosh Shilimkar
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.