* [PATCHv3 0/3] clocksource: Add Freescale FlexTimer Module (FTM) timer support @ 2014-04-29 2:18 Xiubo Li 2014-04-29 2:18 ` [PATCHv3 1/3] clocksource: ftm: Add FlexTimer Module (FTM) Timer devicetree Documentation Xiubo Li ` (3 more replies) 0 siblings, 4 replies; 14+ messages in thread From: Xiubo Li @ 2014-04-29 2:18 UTC (permalink / raw) To: daniel.lezcano, tglx, shawn.guo Cc: linux-kernel, linux-doc, devicetree, Xiubo Li Changes in V3: - Fix the ftm_irq_disable. Changes in V2: - Add big-endian support. - Add using pr_err instead of BUG_ON. - Add more detail comment message of FTM. - Add DT binding documentation. - Remove some header files and macros not useful. Xiubo Li (3): clocksource: ftm: Add FlexTimer Module (FTM) Timer devicetree Documentation ARM: dts: vf610: Add Freescale FlexTimer Module timer node. clocksource: Add Freescale FlexTimer Module (FTM) timer support .../devicetree/bindings/timer/fsl,ftm-timer.txt | 31 ++ arch/arm/boot/dts/vf610.dtsi | 12 + drivers/clocksource/Kconfig | 5 + drivers/clocksource/Makefile | 1 + drivers/clocksource/fsl_ftm_timer.c | 344 +++++++++++++++++++++ 5 files changed, 393 insertions(+) create mode 100644 Documentation/devicetree/bindings/timer/fsl,ftm-timer.txt create mode 100644 drivers/clocksource/fsl_ftm_timer.c -- 1.8.4 ^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCHv3 1/3] clocksource: ftm: Add FlexTimer Module (FTM) Timer devicetree Documentation 2014-04-29 2:18 [PATCHv3 0/3] clocksource: Add Freescale FlexTimer Module (FTM) timer support Xiubo Li @ 2014-04-29 2:18 ` Xiubo Li 2014-04-29 2:18 ` [PATCHv3 2/3] ARM: dts: vf610: Add Freescale FlexTimer Module timer node Xiubo Li ` (2 subsequent siblings) 3 siblings, 0 replies; 14+ messages in thread From: Xiubo Li @ 2014-04-29 2:18 UTC (permalink / raw) To: daniel.lezcano, tglx, shawn.guo Cc: linux-kernel, linux-doc, devicetree, Xiubo Li, Jingchang Lu The FTM binding could be used on Vybrid and LS1+, add a binding document for it. Signed-off-by: Xiubo Li <Li.Xiubo@freescale.com> Cc: Shawn Guo <shawn.guo@linaro.org> Cc: Jingchang Lu <b35083@freescale.com> --- .../devicetree/bindings/timer/fsl,ftm-timer.txt | 31 ++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 Documentation/devicetree/bindings/timer/fsl,ftm-timer.txt diff --git a/Documentation/devicetree/bindings/timer/fsl,ftm-timer.txt b/Documentation/devicetree/bindings/timer/fsl,ftm-timer.txt new file mode 100644 index 0000000..aa8c402 --- /dev/null +++ b/Documentation/devicetree/bindings/timer/fsl,ftm-timer.txt @@ -0,0 +1,31 @@ +Freescale FlexTimer Module (FTM) Timer + +Required properties: + +- compatible : should be "fsl,ftm-timer" +- reg : Specifies base physical address and size of the register sets for the + clock event device and clock source device. +- interrupts : Should be the clock event device interrupt. +- clocks : The clocks provided by the SoC to drive the timer, must contain an + entry for each entry in clock-names. +- clock-names : Must include the following entries: + o "ftm-evt" + o "ftm-src" + o "ftm-evt-counter-en" + o "ftm-src-counter-en" +- big-endian: One boolean property, the big endian mode will be in use if it is + present, or the little endian mode will be in use for all the device registers. + +Example: +ftm: ftm@400b8000 { + compatible = "fsl,ftm-timer"; + reg = <0x400b8000 0x1000 0x400b9000 0x1000>; + interrupts = <0 44 IRQ_TYPE_LEVEL_HIGH>; + clock-names = "ftm-evt", "ftm-src", + "ftm-evt-counter-en", "ftm-src-counter-en"; + clocks = <&clks VF610_CLK_FTM2>, + <&clks VF610_CLK_FTM3>, + <&clks VF610_CLK_FTM2_EXT_FIX_EN>, + <&clks VF610_CLK_FTM3_EXT_FIX_EN>; + big-endian; +}; -- 1.8.4 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCHv3 2/3] ARM: dts: vf610: Add Freescale FlexTimer Module timer node. 2014-04-29 2:18 [PATCHv3 0/3] clocksource: Add Freescale FlexTimer Module (FTM) timer support Xiubo Li 2014-04-29 2:18 ` [PATCHv3 1/3] clocksource: ftm: Add FlexTimer Module (FTM) Timer devicetree Documentation Xiubo Li @ 2014-04-29 2:18 ` Xiubo Li 2014-04-29 2:18 ` [PATCHv3 3/3] clocksource: Add Freescale FlexTimer Module (FTM) timer support Xiubo Li 2014-05-19 9:14 ` [PATCHv3 0/3] " Daniel Lezcano 3 siblings, 0 replies; 14+ messages in thread From: Xiubo Li @ 2014-04-29 2:18 UTC (permalink / raw) To: daniel.lezcano, tglx, shawn.guo Cc: linux-kernel, linux-doc, devicetree, Xiubo Li, Jingchang Lu Signed-off-by: Xiubo Li <Li.Xiubo@freescale.com> Cc: Shawn Guo <shawn.guo@linaro.org> Cc: Jingchang Lu <b35083@freescale.com> --- arch/arm/boot/dts/vf610.dtsi | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/arch/arm/boot/dts/vf610.dtsi b/arch/arm/boot/dts/vf610.dtsi index 107e2c0..7e30bb1 100644 --- a/arch/arm/boot/dts/vf610.dtsi +++ b/arch/arm/boot/dts/vf610.dtsi @@ -281,6 +281,18 @@ status = "disabled"; }; + ftm: ftm@400b8000 { + compatible = "fsl,ftm-timer"; + reg = <0x400b8000 0x1000 0x400b9000 0x1000>; + interrupts = <0 44 IRQ_TYPE_LEVEL_HIGH>; + clock-names = "ftm-evt", "ftm-src", + "ftm-evt-counter-en", "ftm-src-counter-en"; + clocks = <&clks VF610_CLK_FTM2>, + <&clks VF610_CLK_FTM3>, + <&clks VF610_CLK_FTM2_EXT_FIX_EN>, + <&clks VF610_CLK_FTM3_EXT_FIX_EN>; + }; + fec0: ethernet@400d0000 { compatible = "fsl,mvf600-fec"; reg = <0x400d0000 0x1000>; -- 1.8.4 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCHv3 3/3] clocksource: Add Freescale FlexTimer Module (FTM) timer support 2014-04-29 2:18 [PATCHv3 0/3] clocksource: Add Freescale FlexTimer Module (FTM) timer support Xiubo Li 2014-04-29 2:18 ` [PATCHv3 1/3] clocksource: ftm: Add FlexTimer Module (FTM) Timer devicetree Documentation Xiubo Li 2014-04-29 2:18 ` [PATCHv3 2/3] ARM: dts: vf610: Add Freescale FlexTimer Module timer node Xiubo Li @ 2014-04-29 2:18 ` Xiubo Li 2014-05-16 13:01 ` Daniel Lezcano [not found] ` <1398737939-5334-4-git-send-email-Li.Xiubo-KZfg59tc24xl57MIdRCFDg@public.gmane.org> 2014-05-19 9:14 ` [PATCHv3 0/3] " Daniel Lezcano 3 siblings, 2 replies; 14+ messages in thread From: Xiubo Li @ 2014-04-29 2:18 UTC (permalink / raw) To: daniel.lezcano, tglx, shawn.guo Cc: linux-kernel, linux-doc, devicetree, Xiubo Li, Jingchang Lu The Freescale FlexTimer Module time reference is a 16-bit counter that can be used as an unsigned or signed increase counter. CNTIN defines the starting value of the count and MOD defines the final value of the count. The value of CNTIN is loaded into the FTM counter, and the counter increments until the value of MOD is reached, at which point the counter is reloaded with the value of CNTIN. That's also when an overflow interrupt will be generated. Here using the 'evt' prefix or postfix as clock event device and the 'src' as clock source device. Signed-off-by: Xiubo Li <Li.Xiubo@freescale.com> Cc: Shawn Guo <shawn.guo@linaro.org> Cc: Jingchang Lu <b35083@freescale.com> --- drivers/clocksource/Kconfig | 5 + drivers/clocksource/Makefile | 1 + drivers/clocksource/fsl_ftm_timer.c | 344 ++++++++++++++++++++++++++++++++++++ 3 files changed, 350 insertions(+) create mode 100644 drivers/clocksource/fsl_ftm_timer.c diff --git a/drivers/clocksource/Kconfig b/drivers/clocksource/Kconfig index cd6950f..28321c5 100644 --- a/drivers/clocksource/Kconfig +++ b/drivers/clocksource/Kconfig @@ -136,6 +136,11 @@ config CLKSRC_SAMSUNG_PWM for all devicetree enabled platforms. This driver will be needed only on systems that do not have the Exynos MCT available. +config FSL_FTM_TIMER + bool + help + Support for Freescale FlexTimer Module (FTM) timer. + config VF_PIT_TIMER bool help diff --git a/drivers/clocksource/Makefile b/drivers/clocksource/Makefile index c7ca50a..ce0a967 100644 --- a/drivers/clocksource/Makefile +++ b/drivers/clocksource/Makefile @@ -31,6 +31,7 @@ obj-$(CONFIG_CADENCE_TTC_TIMER) += cadence_ttc_timer.o obj-$(CONFIG_CLKSRC_EFM32) += time-efm32.o obj-$(CONFIG_CLKSRC_EXYNOS_MCT) += exynos_mct.o obj-$(CONFIG_CLKSRC_SAMSUNG_PWM) += samsung_pwm_timer.o +obj-$(CONFIG_FSL_FTM_TIMER) += fsl_ftm_timer.o obj-$(CONFIG_VF_PIT_TIMER) += vf_pit_timer.o obj-$(CONFIG_ARM_ARCH_TIMER) += arm_arch_timer.o diff --git a/drivers/clocksource/fsl_ftm_timer.c b/drivers/clocksource/fsl_ftm_timer.c new file mode 100644 index 0000000..7f6246a --- /dev/null +++ b/drivers/clocksource/fsl_ftm_timer.c @@ -0,0 +1,344 @@ +/* + * Freescale FlexTimer Module (FTM) timer driver. + * + * Copyright 2014 Freescale Semiconductor, Inc. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + */ + +#include <linux/clk.h> +#include <linux/clockchips.h> +#include <linux/clocksource.h> +#include <linux/err.h> +#include <linux/interrupt.h> +#include <linux/io.h> +#include <linux/of_address.h> +#include <linux/of_irq.h> +#include <linux/sched_clock.h> + +#define FTM_SC 0x00 +#define FTM_SC_CLK_SHIFT 3 +#define FTM_SC_CLK_MASK (0x3 << FTM_SC_CLK_SHIFT) +#define FTM_SC_CLK(c) ((c) << FTM_SC_CLK_SHIFT) +#define FTM_SC_PS_MASK 0x7 +#define FTM_SC_TOIE BIT(6) +#define FTM_SC_TOF BIT(7) + +#define FTM_CNT 0x04 +#define FTM_MOD 0x08 +#define FTM_CNTIN 0x4C + +static void __iomem *clksrc_base; +static void __iomem *clkevt_base; +static unsigned long peroidic_cyc; +static unsigned long ps; +bool big_endian; + +static inline u32 ftm_readl(void __iomem *addr) +{ + if (big_endian) + return ioread32be(addr); + else + return ioread32(addr); +} + +static inline void ftm_writel(u32 val, void __iomem *addr) +{ + if (big_endian) + iowrite32be(val, addr); + else + iowrite32(val, addr); +} + +static inline void ftm_counter_enable(void __iomem *base) +{ + u32 val; + + /* select and enable counter clock source */ + val = ftm_readl(base + FTM_SC); + val &= ~(FTM_SC_PS_MASK | FTM_SC_CLK_MASK); + val |= ps | FTM_SC_CLK(1); + ftm_writel(val, base + FTM_SC); +} + +static inline void ftm_counter_disable(void __iomem *base) +{ + u32 val; + + /* disable counter clock source */ + val = ftm_readl(base + FTM_SC); + val &= ~(FTM_SC_PS_MASK | FTM_SC_CLK_MASK); + ftm_writel(val, base + FTM_SC); +} + +static inline void ftm_irq_acknowledge(void __iomem *base) +{ + u32 val; + + val = ftm_readl(base + FTM_SC); + val &= ~FTM_SC_TOF; + ftm_writel(val, base + FTM_SC); +} + +static inline void ftm_irq_enable(void __iomem *base) +{ + u32 val; + + val = ftm_readl(base + FTM_SC); + val |= FTM_SC_TOIE; + ftm_writel(val, base + FTM_SC); +} + +static inline void ftm_irq_disable(void __iomem *base) +{ + u32 val; + + val = ftm_readl(base + FTM_SC); + val &= ~FTM_SC_TOIE; + ftm_writel(val, base + FTM_SC); +} + +static inline void ftm_reset_counter(void __iomem *base) +{ + /* + * The CNT register contains the FTM counter value. + * Reset clears the CNT register. Writing any value to COUNT + * updates the counter with its initial value, CNTIN. + */ + ftm_writel(0x00, base + FTM_CNT); +} + +static u64 ftm_read_sched_clock(void) +{ + return ftm_readl(clksrc_base + FTM_CNT); +} + +static int ftm_set_next_event(unsigned long delta, + struct clock_event_device *unused) +{ + /* + * The CNNIN and MOD are all double buffer registers, writing + * to the MOD register latches the value into a buffer. The MOD + * register is updated with the value of its write buffer with + * the following scenario: + * a, the counter source clock is diabled. + */ + ftm_counter_disable(clkevt_base); + + /* Force the value of CNTIN to be loaded into the FTM counter */ + ftm_reset_counter(clkevt_base); + + /* + * The counter increments until the value of MOD is reached, + * at which point the counter is reloaded with the value of CNTIN. + * The TOF (the overflow flag) bit is set when the FTM counter + * changes from MOD to CNTIN. So we should using the delta - 1. + */ + ftm_writel(delta - 1, clkevt_base + FTM_MOD); + + ftm_counter_enable(clkevt_base); + + ftm_irq_enable(clkevt_base); + + return 0; +} + +static void ftm_set_mode(enum clock_event_mode mode, + struct clock_event_device *evt) +{ + switch (mode) { + case CLOCK_EVT_MODE_PERIODIC: + ftm_set_next_event(peroidic_cyc, evt); + break; + case CLOCK_EVT_MODE_ONESHOT: + ftm_counter_disable(clkevt_base); + break; + default: + return; + } +} + +static irqreturn_t ftm_evt_interrupt(int irq, void *dev_id) +{ + struct clock_event_device *evt = dev_id; + + ftm_irq_acknowledge(clkevt_base); + + if (likely(evt->mode == CLOCK_EVT_MODE_ONESHOT)) { + ftm_irq_disable(clkevt_base); + ftm_counter_disable(clkevt_base); + } + + evt->event_handler(evt); + + return IRQ_HANDLED; +} + +static struct clock_event_device ftm_clockevent = { + .name = "Freescale ftm timer", + .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT, + .set_mode = ftm_set_mode, + .set_next_event = ftm_set_next_event, + .rating = 300, +}; + +static struct irqaction ftm_timer_irq = { + .name = "Freescale ftm timer", + .flags = IRQF_TIMER | IRQF_IRQPOLL, + .handler = ftm_evt_interrupt, + .dev_id = &ftm_clockevent, +}; + +static int __init ftm_clockevent_init(unsigned long freq, int irq) +{ + int err; + + ftm_writel(0x00, clkevt_base + FTM_CNTIN); + ftm_writel(~0UL, clkevt_base + FTM_MOD); + + ftm_reset_counter(clkevt_base); + + err = setup_irq(irq, &ftm_timer_irq); + if (err) { + pr_err("ftm: setup irq failed: %d\n", err); + return err; + } + + ftm_clockevent.cpumask = cpumask_of(0); + ftm_clockevent.irq = irq; + + clockevents_config_and_register(&ftm_clockevent, freq / (1 << ps), + 1, 0xffff); + + ftm_counter_enable(clkevt_base); + + return 0; +} + +static int __init ftm_clocksource_init(unsigned long freq) +{ + int err; + + ftm_writel(0x00, clksrc_base + FTM_CNTIN); + ftm_writel(~0UL, clksrc_base + FTM_MOD); + + ftm_reset_counter(clksrc_base); + + sched_clock_register(ftm_read_sched_clock, 16, freq / (1 << ps)); + err = clocksource_mmio_init(clksrc_base + FTM_CNT, "fsl-ftm", + freq / (1 << ps), 300, 16, + clocksource_mmio_readl_up); + if (err) { + pr_err("ftm: init clock source mmio failed: %d\n", err); + return err; + } + + ftm_counter_enable(clksrc_base); + + return 0; +} + +static int __init __ftm_clk_init(struct device_node *np, char *cnt_name, + char *ftm_name) +{ + struct clk *clk; + int err; + + clk = of_clk_get_by_name(np, cnt_name); + if (IS_ERR(clk)) { + pr_err("ftm: Cannot get \"%s\": %ld\n", cnt_name, PTR_ERR(clk)); + return PTR_ERR(clk); + } + err = clk_prepare_enable(clk); + if (err) { + pr_err("ftm: clock failed to prepare+enable \"%s\": %d\n", + cnt_name, err); + return err; + } + + clk = of_clk_get_by_name(np, ftm_name); + if (IS_ERR(clk)) { + pr_err("ftm: Cannot get \"%s\": %ld\n", ftm_name, PTR_ERR(clk)); + return PTR_ERR(clk); + } + err = clk_prepare_enable(clk); + if (err) + pr_err("ftm: clock failed to prepare+enable \"%s\": %d\n", + ftm_name, err); + + return clk_get_rate(clk); +} + +static unsigned long __init ftm_clk_init(struct device_node *np) +{ + unsigned long freq; + + freq = __ftm_clk_init(np, "ftm-evt-counter-en", "ftm-evt"); + if (freq <= 0) + return 0; + + freq = __ftm_clk_init(np, "ftm-src-counter-en", "ftm-src"); + if (freq <= 0) + return 0; + + return freq; +} + +static int __init ftm_calc_closest_round_cyc(unsigned long freq) +{ + ps = 0; + + do { + peroidic_cyc = DIV_ROUND_CLOSEST(freq, HZ * (1 << ps++)); + } while (peroidic_cyc > 0xFFFF); + + if (ps > 7) { + pr_err("ftm: the max prescaler is %lu > 7\n", ps); + return -EINVAL; + } + + return 0; +} + +static void __init ftm_timer_init(struct device_node *np) +{ + unsigned long freq; + int irq; + + clkevt_base = of_iomap(np, 0); + if (!clkevt_base) { + pr_err("ftm: unable to map event timer registers\n"); + return; + } + + clksrc_base = of_iomap(np, 1); + if (!clksrc_base) { + pr_err("ftm: unable to map source timer registers\n"); + return; + } + + irq = irq_of_parse_and_map(np, 0); + if (irq <= 0) { + pr_err("ftm: unable to get IRQ from DT, %d\n", irq); + return; + } + + big_endian = of_property_read_bool(np, "big-endian"); + + freq = ftm_clk_init(np); + if (!freq) + return; + + if (ftm_calc_closest_round_cyc(freq)) + return; + + if (ftm_clocksource_init(freq)) + return; + + if (ftm_clockevent_init(freq, irq)) + return; +} +CLOCKSOURCE_OF_DECLARE(flextimer, "fsl,ftm-timer", ftm_timer_init); -- 1.8.4 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCHv3 3/3] clocksource: Add Freescale FlexTimer Module (FTM) timer support 2014-04-29 2:18 ` [PATCHv3 3/3] clocksource: Add Freescale FlexTimer Module (FTM) timer support Xiubo Li @ 2014-05-16 13:01 ` Daniel Lezcano 2014-05-19 1:55 ` Li.Xiubo [not found] ` <1398737939-5334-4-git-send-email-Li.Xiubo-KZfg59tc24xl57MIdRCFDg@public.gmane.org> 1 sibling, 1 reply; 14+ messages in thread From: Daniel Lezcano @ 2014-05-16 13:01 UTC (permalink / raw) To: Xiubo Li, tglx, shawn.guo Cc: linux-kernel, linux-doc, devicetree, Jingchang Lu On 04/29/2014 04:18 AM, Xiubo Li wrote: > The Freescale FlexTimer Module time reference is a 16-bit counter > that can be used as an unsigned or signed increase counter. > > CNTIN defines the starting value of the count and MOD defines the > final value of the count. The value of CNTIN is loaded into the FTM > counter, and the counter increments until the value of MOD is reached, > at which point the counter is reloaded with the value of CNTIN. That's > also when an overflow interrupt will be generated. > > Here using the 'evt' prefix or postfix as clock event device and > the 'src' as clock source device. > > Signed-off-by: Xiubo Li <Li.Xiubo@freescale.com> > Cc: Shawn Guo <shawn.guo@linaro.org> > Cc: Jingchang Lu <b35083@freescale.com> > --- > drivers/clocksource/Kconfig | 5 + > drivers/clocksource/Makefile | 1 + > drivers/clocksource/fsl_ftm_timer.c | 344 ++++++++++++++++++++++++++++++++++++ > 3 files changed, 350 insertions(+) > create mode 100644 drivers/clocksource/fsl_ftm_timer.c > > diff --git a/drivers/clocksource/Kconfig b/drivers/clocksource/Kconfig > index cd6950f..28321c5 100644 > --- a/drivers/clocksource/Kconfig > +++ b/drivers/clocksource/Kconfig > @@ -136,6 +136,11 @@ config CLKSRC_SAMSUNG_PWM > for all devicetree enabled platforms. This driver will be > needed only on systems that do not have the Exynos MCT available. > > +config FSL_FTM_TIMER > + bool > + help > + Support for Freescale FlexTimer Module (FTM) timer. > + > config VF_PIT_TIMER > bool > help > diff --git a/drivers/clocksource/Makefile b/drivers/clocksource/Makefile > index c7ca50a..ce0a967 100644 > --- a/drivers/clocksource/Makefile > +++ b/drivers/clocksource/Makefile > @@ -31,6 +31,7 @@ obj-$(CONFIG_CADENCE_TTC_TIMER) += cadence_ttc_timer.o > obj-$(CONFIG_CLKSRC_EFM32) += time-efm32.o > obj-$(CONFIG_CLKSRC_EXYNOS_MCT) += exynos_mct.o > obj-$(CONFIG_CLKSRC_SAMSUNG_PWM) += samsung_pwm_timer.o > +obj-$(CONFIG_FSL_FTM_TIMER) += fsl_ftm_timer.o > obj-$(CONFIG_VF_PIT_TIMER) += vf_pit_timer.o > > obj-$(CONFIG_ARM_ARCH_TIMER) += arm_arch_timer.o > diff --git a/drivers/clocksource/fsl_ftm_timer.c b/drivers/clocksource/fsl_ftm_timer.c > new file mode 100644 > index 0000000..7f6246a > --- /dev/null > +++ b/drivers/clocksource/fsl_ftm_timer.c > @@ -0,0 +1,344 @@ > +/* > + * Freescale FlexTimer Module (FTM) timer driver. > + * > + * Copyright 2014 Freescale Semiconductor, Inc. > + * > + * This program is free software; you can redistribute it and/or > + * modify it under the terms of the GNU General Public License > + * as published by the Free Software Foundation; either version 2 > + * of the License, or (at your option) any later version. > + */ > + > +#include <linux/clk.h> > +#include <linux/clockchips.h> > +#include <linux/clocksource.h> > +#include <linux/err.h> > +#include <linux/interrupt.h> > +#include <linux/io.h> > +#include <linux/of_address.h> > +#include <linux/of_irq.h> > +#include <linux/sched_clock.h> > + > +#define FTM_SC 0x00 > +#define FTM_SC_CLK_SHIFT 3 > +#define FTM_SC_CLK_MASK (0x3 << FTM_SC_CLK_SHIFT) > +#define FTM_SC_CLK(c) ((c) << FTM_SC_CLK_SHIFT) > +#define FTM_SC_PS_MASK 0x7 > +#define FTM_SC_TOIE BIT(6) > +#define FTM_SC_TOF BIT(7) > + > +#define FTM_CNT 0x04 > +#define FTM_MOD 0x08 > +#define FTM_CNTIN 0x4C > + > +static void __iomem *clksrc_base; > +static void __iomem *clkevt_base; > +static unsigned long peroidic_cyc; peroidic_cyc ? Did you mean periodic_cyc ? :) -- <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] 14+ messages in thread
* RE: [PATCHv3 3/3] clocksource: Add Freescale FlexTimer Module (FTM) timer support 2014-05-16 13:01 ` Daniel Lezcano @ 2014-05-19 1:55 ` Li.Xiubo 0 siblings, 0 replies; 14+ messages in thread From: Li.Xiubo @ 2014-05-19 1:55 UTC (permalink / raw) To: Daniel Lezcano, tglx@linutronix.de, shawn.guo@linaro.org Cc: linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, devicetree@vger.kernel.org, Jingchang Lu > > +static void __iomem *clksrc_base; > > +static void __iomem *clkevt_base; > > +static unsigned long peroidic_cyc; > > peroidic_cyc ? Did you mean periodic_cyc ? :) > Yes, I'll fix it. Thanks, BRs Xiubo > > > -- > <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] 14+ messages in thread
[parent not found: <1398737939-5334-4-git-send-email-Li.Xiubo-KZfg59tc24xl57MIdRCFDg@public.gmane.org>]
* Re: [PATCHv3 3/3] clocksource: Add Freescale FlexTimer Module (FTM) timer support [not found] ` <1398737939-5334-4-git-send-email-Li.Xiubo-KZfg59tc24xl57MIdRCFDg@public.gmane.org> @ 2014-05-16 14:31 ` Stephen Boyd [not found] ` <5376212D.4080701-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> 2014-05-16 15:07 ` Daniel Lezcano 1 sibling, 1 reply; 14+ messages in thread From: Stephen Boyd @ 2014-05-16 14:31 UTC (permalink / raw) To: Xiubo Li Cc: daniel.lezcano-QSEj5FYQhm4dnm+yROfE0A, tglx-hfZtesqFncYOwBW4kG4KsQ, shawn.guo-QSEj5FYQhm4dnm+yROfE0A, linux-kernel-u79uwXL29TY76Z2rM5mHXA, linux-doc-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA, Jingchang Lu On 04/28/14 19:18, Xiubo Li wrote: > +bool big_endian; > + static? -- Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation -- 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 ^ permalink raw reply [flat|nested] 14+ messages in thread
[parent not found: <5376212D.4080701-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>]
* RE: [PATCHv3 3/3] clocksource: Add Freescale FlexTimer Module (FTM) timer support [not found] ` <5376212D.4080701-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> @ 2014-05-19 1:56 ` Li.Xiubo-KZfg59tc24xl57MIdRCFDg 0 siblings, 0 replies; 14+ messages in thread From: Li.Xiubo-KZfg59tc24xl57MIdRCFDg @ 2014-05-19 1:56 UTC (permalink / raw) To: Stephen Boyd Cc: daniel.lezcano-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org, tglx-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org, shawn.guo-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-doc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Jingchang Lu > Subject: Re: [PATCHv3 3/3] clocksource: Add Freescale FlexTimer Module (FTM) > timer support > > On 04/28/14 19:18, Xiubo Li wrote: > > +bool big_endian; > > + > > static? > I will fix this. Thanks, BRs Xiubo > -- > Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, > hosted by The Linux Foundation -- 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 ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCHv3 3/3] clocksource: Add Freescale FlexTimer Module (FTM) timer support [not found] ` <1398737939-5334-4-git-send-email-Li.Xiubo-KZfg59tc24xl57MIdRCFDg@public.gmane.org> 2014-05-16 14:31 ` Stephen Boyd @ 2014-05-16 15:07 ` Daniel Lezcano 2014-05-19 2:26 ` Li.Xiubo 1 sibling, 1 reply; 14+ messages in thread From: Daniel Lezcano @ 2014-05-16 15:07 UTC (permalink / raw) To: Xiubo Li, tglx-hfZtesqFncYOwBW4kG4KsQ, shawn.guo-QSEj5FYQhm4dnm+yROfE0A Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA, linux-doc-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA, Jingchang Lu On 04/29/2014 04:18 AM, Xiubo Li wrote: > The Freescale FlexTimer Module time reference is a 16-bit counter > that can be used as an unsigned or signed increase counter. > > CNTIN defines the starting value of the count and MOD defines the > final value of the count. The value of CNTIN is loaded into the FTM > counter, and the counter increments until the value of MOD is reached, > at which point the counter is reloaded with the value of CNTIN. That's > also when an overflow interrupt will be generated. > > Here using the 'evt' prefix or postfix as clock event device and > the 'src' as clock source device. > > Signed-off-by: Xiubo Li <Li.Xiubo-KZfg59tc24xl57MIdRCFDg@public.gmane.org> > Cc: Shawn Guo <shawn.guo-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> > Cc: Jingchang Lu <b35083-KZfg59tc24xl57MIdRCFDg@public.gmane.org> > --- > drivers/clocksource/Kconfig | 5 + > drivers/clocksource/Makefile | 1 + > drivers/clocksource/fsl_ftm_timer.c | 344 ++++++++++++++++++++++++++++++++++++ > 3 files changed, 350 insertions(+) > create mode 100644 drivers/clocksource/fsl_ftm_timer.c > > diff --git a/drivers/clocksource/Kconfig b/drivers/clocksource/Kconfig > index cd6950f..28321c5 100644 > --- a/drivers/clocksource/Kconfig > +++ b/drivers/clocksource/Kconfig > @@ -136,6 +136,11 @@ config CLKSRC_SAMSUNG_PWM > for all devicetree enabled platforms. This driver will be > needed only on systems that do not have the Exynos MCT available. > > +config FSL_FTM_TIMER > + bool > + help > + Support for Freescale FlexTimer Module (FTM) timer. > + > config VF_PIT_TIMER > bool > help > diff --git a/drivers/clocksource/Makefile b/drivers/clocksource/Makefile > index c7ca50a..ce0a967 100644 > --- a/drivers/clocksource/Makefile > +++ b/drivers/clocksource/Makefile > @@ -31,6 +31,7 @@ obj-$(CONFIG_CADENCE_TTC_TIMER) += cadence_ttc_timer.o > obj-$(CONFIG_CLKSRC_EFM32) += time-efm32.o > obj-$(CONFIG_CLKSRC_EXYNOS_MCT) += exynos_mct.o > obj-$(CONFIG_CLKSRC_SAMSUNG_PWM) += samsung_pwm_timer.o > +obj-$(CONFIG_FSL_FTM_TIMER) += fsl_ftm_timer.o > obj-$(CONFIG_VF_PIT_TIMER) += vf_pit_timer.o > > obj-$(CONFIG_ARM_ARCH_TIMER) += arm_arch_timer.o > diff --git a/drivers/clocksource/fsl_ftm_timer.c b/drivers/clocksource/fsl_ftm_timer.c > new file mode 100644 > index 0000000..7f6246a > --- /dev/null > +++ b/drivers/clocksource/fsl_ftm_timer.c > @@ -0,0 +1,344 @@ > +/* > + * Freescale FlexTimer Module (FTM) timer driver. > + * > + * Copyright 2014 Freescale Semiconductor, Inc. > + * > + * This program is free software; you can redistribute it and/or > + * modify it under the terms of the GNU General Public License > + * as published by the Free Software Foundation; either version 2 > + * of the License, or (at your option) any later version. > + */ > + > +#include <linux/clk.h> > +#include <linux/clockchips.h> > +#include <linux/clocksource.h> > +#include <linux/err.h> > +#include <linux/interrupt.h> > +#include <linux/io.h> > +#include <linux/of_address.h> > +#include <linux/of_irq.h> > +#include <linux/sched_clock.h> > + > +#define FTM_SC 0x00 > +#define FTM_SC_CLK_SHIFT 3 > +#define FTM_SC_CLK_MASK (0x3 << FTM_SC_CLK_SHIFT) > +#define FTM_SC_CLK(c) ((c) << FTM_SC_CLK_SHIFT) > +#define FTM_SC_PS_MASK 0x7 > +#define FTM_SC_TOIE BIT(6) > +#define FTM_SC_TOF BIT(7) > + > +#define FTM_CNT 0x04 > +#define FTM_MOD 0x08 > +#define FTM_CNTIN 0x4C > + > +static void __iomem *clksrc_base; > +static void __iomem *clkevt_base; > +static unsigned long peroidic_cyc; > +static unsigned long ps; > +bool big_endian; > + Usually this is encaspulated in a structure. struct ftm_clock_device { void __iomem *clksrc_base; ... }; > +static inline u32 ftm_readl(void __iomem *addr) > +{ > + if (big_endian) I am not a big fan of addressing global variables in the functions, so if you can pass the structure pointer around here and the other functions instead that would be nice. Otherwise the patch sounds ok. Thanks for taking care of encapsulating well the functions and commenting the code. > + return ioread32be(addr); > + else > + return ioread32(addr); > +} > + [ ... ] > + > +static int __init ftm_calc_closest_round_cyc(unsigned long freq) > +{ > + ps = 0; > + > + do { > + peroidic_cyc = DIV_ROUND_CLOSEST(freq, HZ * (1 << ps++)); > + } while (peroidic_cyc > 0xFFFF); > + > + if (ps > 7) { > + pr_err("ftm: the max prescaler is %lu > 7\n", ps); > + return -EINVAL; > + } > + Can you explain how this error can happen ? > + return 0; > +} > + [ ... ] -- <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 -- 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 ^ permalink raw reply [flat|nested] 14+ messages in thread
* RE: [PATCHv3 3/3] clocksource: Add Freescale FlexTimer Module (FTM) timer support 2014-05-16 15:07 ` Daniel Lezcano @ 2014-05-19 2:26 ` Li.Xiubo 2014-05-19 9:08 ` Daniel Lezcano 0 siblings, 1 reply; 14+ messages in thread From: Li.Xiubo @ 2014-05-19 2:26 UTC (permalink / raw) To: Daniel Lezcano, tglx@linutronix.de, shawn.guo@linaro.org Cc: linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, devicetree@vger.kernel.org, Jingchang Lu > > +#define FTM_CNTIN 0x4C > > + > > +static void __iomem *clksrc_base; > > +static void __iomem *clkevt_base; > > +static unsigned long peroidic_cyc; > > +static unsigned long ps; > > +bool big_endian; > > + > > Usually this is encaspulated in a structure. > > struct ftm_clock_device { > void __iomem *clksrc_base; > ... > }; > > > > +static inline u32 ftm_readl(void __iomem *addr) > > +{ > > + if (big_endian) > > I am not a big fan of addressing global variables in the functions, so > if you can pass the structure pointer around here and the other > functions instead that would be nice. > > Otherwise the patch sounds ok. Thanks for taking care of encapsulating > well the functions and commenting the code. > Yes, I did think so. But some callbacks like : + static u64 ftm_read_sched_clock(void) + { + return ftm_readl(clksrc_base + FTM_CNT); + } Used by : + sched_clock_register(ftm_read_sched_clock,....); If they are encapsulated in a structure, and should the struct instance be one global instance too ? I'm doubting whether will this make sense ? > > +static int __init ftm_calc_closest_round_cyc(unsigned long freq) > > +{ > > + ps = 0; > > + > > + do { > > + peroidic_cyc = DIV_ROUND_CLOSEST(freq, HZ * (1 << ps++)); > > + } while (peroidic_cyc > 0xFFFF); > > + > > + if (ps > 7) { > > + pr_err("ftm: the max prescaler is %lu > 7\n", ps); > > + return -EINVAL; > > + } > > + > > Can you explain how this error can happen ? > Yes, the hardware limitation of the 'ps' is 0~7, and the counter register Is only using the lower 16 bits. If the 'freq' value is too big here, then the periodic_cyc may exceed 0xFFFF. Or should I add some comment here ? Thanks very much, BRs Xiubo ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCHv3 3/3] clocksource: Add Freescale FlexTimer Module (FTM) timer support 2014-05-19 2:26 ` Li.Xiubo @ 2014-05-19 9:08 ` Daniel Lezcano 2014-05-19 9:16 ` Li.Xiubo 0 siblings, 1 reply; 14+ messages in thread From: Daniel Lezcano @ 2014-05-19 9:08 UTC (permalink / raw) To: Li.Xiubo@freescale.com, tglx@linutronix.de, shawn.guo@linaro.org Cc: linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, devicetree@vger.kernel.org, Jingchang Lu On 05/19/2014 04:26 AM, Li.Xiubo@freescale.com wrote: >>> +#define FTM_CNTIN 0x4C >>> + >>> +static void __iomem *clksrc_base; >>> +static void __iomem *clkevt_base; >>> +static unsigned long peroidic_cyc; >>> +static unsigned long ps; >>> +bool big_endian; >>> + >> >> Usually this is encaspulated in a structure. >> >> struct ftm_clock_device { >> void __iomem *clksrc_base; >> ... >> }; >> >> >>> +static inline u32 ftm_readl(void __iomem *addr) >>> +{ >>> + if (big_endian) >> >> I am not a big fan of addressing global variables in the functions, so >> if you can pass the structure pointer around here and the other >> functions instead that would be nice. >> >> Otherwise the patch sounds ok. Thanks for taking care of encapsulating >> well the functions and commenting the code. >> > > Yes, I did think so. > > But some callbacks like : > + static u64 ftm_read_sched_clock(void) > + { > + return ftm_readl(clksrc_base + FTM_CNT); > + } > > Used by : > + sched_clock_register(ftm_read_sched_clock,....); > > If they are encapsulated in a structure, and should the struct instance > be one global instance too ? I'm doubting whether will this make sense ? Actually, I plan in a near future to consolidate the code and factor out some parts with a common structure across the different drivers. So even if you address the base@ with the global instance but pass around the structure as parameter, that will be ok because that will be less modifications in the future. It is not a strong requirement, just put in place some encapsulation to make the life easier for after. >>> +static int __init ftm_calc_closest_round_cyc(unsigned long freq) >>> +{ >>> + ps = 0; >>> + >>> + do { >>> + peroidic_cyc = DIV_ROUND_CLOSEST(freq, HZ * (1 << ps++)); >>> + } while (peroidic_cyc > 0xFFFF); >>> + >>> + if (ps > 7) { >>> + pr_err("ftm: the max prescaler is %lu > 7\n", ps); >>> + return -EINVAL; >>> + } >>> + >> >> Can you explain how this error can happen ? >> > > Yes, the hardware limitation of the 'ps' is 0~7, and the counter register > Is only using the lower 16 bits. > If the 'freq' value is too big here, then the periodic_cyc may exceed 0xFFFF. > > Or should I add some comment here ? Yes, a comment will be welcome. 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] 14+ messages in thread
* RE: [PATCHv3 3/3] clocksource: Add Freescale FlexTimer Module (FTM) timer support 2014-05-19 9:08 ` Daniel Lezcano @ 2014-05-19 9:16 ` Li.Xiubo 0 siblings, 0 replies; 14+ messages in thread From: Li.Xiubo @ 2014-05-19 9:16 UTC (permalink / raw) To: Daniel Lezcano, tglx@linutronix.de, shawn.guo@linaro.org Cc: linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, devicetree@vger.kernel.org, Jingchang Lu > >>> +static inline u32 ftm_readl(void __iomem *addr) > >>> +{ > >>> + if (big_endian) > >> > >> I am not a big fan of addressing global variables in the functions, so > >> if you can pass the structure pointer around here and the other > >> functions instead that would be nice. > >> > >> Otherwise the patch sounds ok. Thanks for taking care of encapsulating > >> well the functions and commenting the code. > >> > > > > Yes, I did think so. > > > > But some callbacks like : > > + static u64 ftm_read_sched_clock(void) > > + { > > + return ftm_readl(clksrc_base + FTM_CNT); > > + } > > > > Used by : > > + sched_clock_register(ftm_read_sched_clock,....); > > > > If they are encapsulated in a structure, and should the struct instance > > be one global instance too ? I'm doubting whether will this make sense ? > > Actually, I plan in a near future to consolidate the code and factor out > some parts with a common structure across the different drivers. So even > if you address the base@ with the global instance but pass around the > structure as parameter, that will be ok because that will be less > modifications in the future. It is not a strong requirement, just put in > place some encapsulation to make the life easier for after. > Yes, sounds good. I'll follow your advice... > >>> +static int __init ftm_calc_closest_round_cyc(unsigned long freq) > >>> +{ > >>> + ps = 0; > >>> + > >>> + do { > >>> + peroidic_cyc = DIV_ROUND_CLOSEST(freq, HZ * (1 << ps++)); > >>> + } while (peroidic_cyc > 0xFFFF); > >>> + > >>> + if (ps > 7) { > >>> + pr_err("ftm: the max prescaler is %lu > 7\n", ps); > >>> + return -EINVAL; > >>> + } > >>> + > >> > >> Can you explain how this error can happen ? > >> > > > > Yes, the hardware limitation of the 'ps' is 0~7, and the counter register > > Is only using the lower 16 bits. > > If the 'freq' value is too big here, then the periodic_cyc may exceed 0xFFFF. > > > > Or should I add some comment here ? > > Yes, a comment will be welcome. > Okay, Please see the next version. Thanks very much, BRs Xiubo > 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] 14+ messages in thread
* Re: [PATCHv3 0/3] clocksource: Add Freescale FlexTimer Module (FTM) timer support 2014-04-29 2:18 [PATCHv3 0/3] clocksource: Add Freescale FlexTimer Module (FTM) timer support Xiubo Li ` (2 preceding siblings ...) 2014-04-29 2:18 ` [PATCHv3 3/3] clocksource: Add Freescale FlexTimer Module (FTM) timer support Xiubo Li @ 2014-05-19 9:14 ` Daniel Lezcano 2014-05-19 9:17 ` Li.Xiubo 3 siblings, 1 reply; 14+ messages in thread From: Daniel Lezcano @ 2014-05-19 9:14 UTC (permalink / raw) To: Xiubo Li, tglx, shawn.guo; +Cc: linux-kernel, linux-doc, devicetree On 04/29/2014 04:18 AM, Xiubo Li wrote: > > Changes in V3: > - Fix the ftm_irq_disable. > > Changes in V2: > - Add big-endian support. > - Add using pr_err instead of BUG_ON. > - Add more detail comment message of FTM. > - Add DT binding documentation. > - Remove some header files and macros not useful. > > > Xiubo Li (3): > clocksource: ftm: Add FlexTimer Module (FTM) Timer devicetree > Documentation > ARM: dts: vf610: Add Freescale FlexTimer Module timer node. > clocksource: Add Freescale FlexTimer Module (FTM) timer support > > .../devicetree/bindings/timer/fsl,ftm-timer.txt | 31 ++ > arch/arm/boot/dts/vf610.dtsi | 12 + > drivers/clocksource/Kconfig | 5 + > drivers/clocksource/Makefile | 1 + > drivers/clocksource/fsl_ftm_timer.c | 344 +++++++++++++++++++++ > 5 files changed, 393 insertions(+) > create mode 100644 Documentation/devicetree/bindings/timer/fsl,ftm-timer.txt > create mode 100644 drivers/clocksource/fsl_ftm_timer.c By the way, when reposting the serie, could you please add Rob Herring and Grant likely as Cc to review the dts part ? 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] 14+ messages in thread
* RE: [PATCHv3 0/3] clocksource: Add Freescale FlexTimer Module (FTM) timer support 2014-05-19 9:14 ` [PATCHv3 0/3] " Daniel Lezcano @ 2014-05-19 9:17 ` Li.Xiubo 0 siblings, 0 replies; 14+ messages in thread From: Li.Xiubo @ 2014-05-19 9:17 UTC (permalink / raw) To: Daniel Lezcano, tglx@linutronix.de, shawn.guo@linaro.org Cc: linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, devicetree@vger.kernel.org > > Xiubo Li (3): > > clocksource: ftm: Add FlexTimer Module (FTM) Timer devicetree > > Documentation > > ARM: dts: vf610: Add Freescale FlexTimer Module timer node. > > clocksource: Add Freescale FlexTimer Module (FTM) timer support > > > > .../devicetree/bindings/timer/fsl,ftm-timer.txt | 31 ++ > > arch/arm/boot/dts/vf610.dtsi | 12 + > > drivers/clocksource/Kconfig | 5 + > > drivers/clocksource/Makefile | 1 + > > drivers/clocksource/fsl_ftm_timer.c | 344 > +++++++++++++++++++++ > > 5 files changed, 393 insertions(+) > > create mode 100644 Documentation/devicetree/bindings/timer/fsl,ftm- > timer.txt > > create mode 100644 drivers/clocksource/fsl_ftm_timer.c > > By the way, when reposting the serie, could you please add Rob Herring > and Grant likely as Cc to review the dts part ? > No problem. Thanks, BRs Xiubo > 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] 14+ messages in thread
end of thread, other threads:[~2014-05-19 9:17 UTC | newest] Thread overview: 14+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-04-29 2:18 [PATCHv3 0/3] clocksource: Add Freescale FlexTimer Module (FTM) timer support Xiubo Li 2014-04-29 2:18 ` [PATCHv3 1/3] clocksource: ftm: Add FlexTimer Module (FTM) Timer devicetree Documentation Xiubo Li 2014-04-29 2:18 ` [PATCHv3 2/3] ARM: dts: vf610: Add Freescale FlexTimer Module timer node Xiubo Li 2014-04-29 2:18 ` [PATCHv3 3/3] clocksource: Add Freescale FlexTimer Module (FTM) timer support Xiubo Li 2014-05-16 13:01 ` Daniel Lezcano 2014-05-19 1:55 ` Li.Xiubo [not found] ` <1398737939-5334-4-git-send-email-Li.Xiubo-KZfg59tc24xl57MIdRCFDg@public.gmane.org> 2014-05-16 14:31 ` Stephen Boyd [not found] ` <5376212D.4080701-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> 2014-05-19 1:56 ` Li.Xiubo-KZfg59tc24xl57MIdRCFDg 2014-05-16 15:07 ` Daniel Lezcano 2014-05-19 2:26 ` Li.Xiubo 2014-05-19 9:08 ` Daniel Lezcano 2014-05-19 9:16 ` Li.Xiubo 2014-05-19 9:14 ` [PATCHv3 0/3] " Daniel Lezcano 2014-05-19 9:17 ` Li.Xiubo
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).