* [PATCH 0/4] clocksource: Add support for Aspeed timer
@ 2016-05-09 12:32 ` Joel Stanley
0 siblings, 0 replies; 24+ messages in thread
From: Joel Stanley @ 2016-05-09 12:32 UTC (permalink / raw)
To: daniel.lezcano-QSEj5FYQhm4dnm+yROfE0A,
tglx-hfZtesqFncYOwBW4kG4KsQ, jonas.jensen-Re5JQEeQqe8AvxtiuMwx3w
Cc: devicetree-u79uwXL29TY76Z2rM5mHXA,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
jk-mnsaURCQ41sdnm+yROfE0A, benh-XVmvHMARGAS8U2dJNN8I7kB+6BGkLq7r,
arnd-r2nGTMty4D4
Hello All,
This adds support for the Aspeed ast2400 and ast2500 families of BMC SoCs to
the moxart driver.
I've addressed the feedback from Daniel and spent a bit of time trying to
ensure the series makes sense.
I've not included a patch that renames the driver to fttmr010, from Faraday
Tech, as I wasn't sure if we had consensus. If you would prefer I do so then
let me know.
Cheers,
Joel
Joel Stanley (4):
drivers/clocksouree/moxart: Add kbuild symbol
drivers/clocksource/moxart: Refactor enable/disable
drivers/clocksource/moxart: Use struct to hold state
drivers/clocksource/moxart: Add Aspeed support
.../bindings/timer/moxa,moxart-timer.txt | 4 +-
arch/arm/mach-moxart/Kconfig | 2 +-
drivers/clocksource/Kconfig | 9 +
drivers/clocksource/Makefile | 2 +-
drivers/clocksource/moxart_timer.c | 191 ++++++++++++++-------
5 files changed, 143 insertions(+), 65 deletions(-)
--
2.8.1
--
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] 24+ messages in thread
* [PATCH 0/4] clocksource: Add support for Aspeed timer
@ 2016-05-09 12:32 ` Joel Stanley
0 siblings, 0 replies; 24+ messages in thread
From: Joel Stanley @ 2016-05-09 12:32 UTC (permalink / raw)
To: linux-arm-kernel
Hello All,
This adds support for the Aspeed ast2400 and ast2500 families of BMC SoCs to
the moxart driver.
I've addressed the feedback from Daniel and spent a bit of time trying to
ensure the series makes sense.
I've not included a patch that renames the driver to fttmr010, from Faraday
Tech, as I wasn't sure if we had consensus. If you would prefer I do so then
let me know.
Cheers,
Joel
Joel Stanley (4):
drivers/clocksouree/moxart: Add kbuild symbol
drivers/clocksource/moxart: Refactor enable/disable
drivers/clocksource/moxart: Use struct to hold state
drivers/clocksource/moxart: Add Aspeed support
.../bindings/timer/moxa,moxart-timer.txt | 4 +-
arch/arm/mach-moxart/Kconfig | 2 +-
drivers/clocksource/Kconfig | 9 +
drivers/clocksource/Makefile | 2 +-
drivers/clocksource/moxart_timer.c | 191 ++++++++++++++-------
5 files changed, 143 insertions(+), 65 deletions(-)
--
2.8.1
^ permalink raw reply [flat|nested] 24+ messages in thread
* [PATCH 1/4] drivers/clocksouree/moxart: Add kbuild symbol
2016-05-09 12:32 ` Joel Stanley
@ 2016-05-09 12:32 ` Joel Stanley
-1 siblings, 0 replies; 24+ messages in thread
From: Joel Stanley @ 2016-05-09 12:32 UTC (permalink / raw)
To: daniel.lezcano-QSEj5FYQhm4dnm+yROfE0A,
tglx-hfZtesqFncYOwBW4kG4KsQ, jonas.jensen-Re5JQEeQqe8AvxtiuMwx3w
Cc: devicetree-u79uwXL29TY76Z2rM5mHXA,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
jk-mnsaURCQ41sdnm+yROfE0A, benh-XVmvHMARGAS8U2dJNN8I7kB+6BGkLq7r,
arnd-r2nGTMty4D4
Add a Kconfig entry for this driver so other SoCs can select it. This
updates the moxart Kconfig in order to select the symbol.
Signed-off-by: Joel Stanley <joel-U3u1mxZcP9KHXe+LvDLADg@public.gmane.org>
---
arch/arm/mach-moxart/Kconfig | 2 +-
drivers/clocksource/Kconfig | 9 +++++++++
drivers/clocksource/Makefile | 2 +-
3 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/arch/arm/mach-moxart/Kconfig b/arch/arm/mach-moxart/Kconfig
index 180d9d216719..505fab683b81 100644
--- a/arch/arm/mach-moxart/Kconfig
+++ b/arch/arm/mach-moxart/Kconfig
@@ -3,9 +3,9 @@ menuconfig ARCH_MOXART
depends on ARCH_MULTI_V4
select CPU_FA526
select ARM_DMA_MEM_BUFFERABLE
- select CLKSRC_MMIO
select GENERIC_IRQ_CHIP
select ARCH_REQUIRE_GPIOLIB
+ select MOXART_TIMER
select PHYLIB if NETDEVICES
help
Say Y here if you want to run your kernel on hardware with a
diff --git a/drivers/clocksource/Kconfig b/drivers/clocksource/Kconfig
index c346be650892..9a54d1ce4ce7 100644
--- a/drivers/clocksource/Kconfig
+++ b/drivers/clocksource/Kconfig
@@ -411,4 +411,13 @@ config CLKSRC_ST_LPC
Enable this option to use the Low Power controller timer
as clocksource.
+config MOXART_TIMER
+ bool "Moxart timer" if COMPILE_TEST
+ depends on GENERIC_CLOCKEVENTS && HAS_IOMEM
+ select CLKSRC_OF
+ select CLKSRC_MMIO
+ help
+ Enables the support for the timer used in the Moxart and Aspeed
+ system on chips.
+
endmenu
diff --git a/drivers/clocksource/Makefile b/drivers/clocksource/Makefile
index dc2b8997f6e6..14fe8172c174 100644
--- a/drivers/clocksource/Makefile
+++ b/drivers/clocksource/Makefile
@@ -22,7 +22,7 @@ obj-$(CONFIG_ORION_TIMER) += time-orion.o
obj-$(CONFIG_ARCH_BCM2835) += bcm2835_timer.o
obj-$(CONFIG_ARCH_CLPS711X) += clps711x-timer.o
obj-$(CONFIG_ARCH_ATLAS7) += timer-atlas7.o
-obj-$(CONFIG_ARCH_MOXART) += moxart_timer.o
+obj-$(CONFIG_MOXART_TIMER) += moxart_timer.o
obj-$(CONFIG_ARCH_MXS) += mxs_timer.o
obj-$(CONFIG_CLKSRC_PXA) += pxa_timer.o
obj-$(CONFIG_ARCH_PRIMA2) += timer-prima2.o
--
2.8.1
--
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 related [flat|nested] 24+ messages in thread
* [PATCH 1/4] drivers/clocksouree/moxart: Add kbuild symbol
@ 2016-05-09 12:32 ` Joel Stanley
0 siblings, 0 replies; 24+ messages in thread
From: Joel Stanley @ 2016-05-09 12:32 UTC (permalink / raw)
To: linux-arm-kernel
Add a Kconfig entry for this driver so other SoCs can select it. This
updates the moxart Kconfig in order to select the symbol.
Signed-off-by: Joel Stanley <joel@jms.id.au>
---
arch/arm/mach-moxart/Kconfig | 2 +-
drivers/clocksource/Kconfig | 9 +++++++++
drivers/clocksource/Makefile | 2 +-
3 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/arch/arm/mach-moxart/Kconfig b/arch/arm/mach-moxart/Kconfig
index 180d9d216719..505fab683b81 100644
--- a/arch/arm/mach-moxart/Kconfig
+++ b/arch/arm/mach-moxart/Kconfig
@@ -3,9 +3,9 @@ menuconfig ARCH_MOXART
depends on ARCH_MULTI_V4
select CPU_FA526
select ARM_DMA_MEM_BUFFERABLE
- select CLKSRC_MMIO
select GENERIC_IRQ_CHIP
select ARCH_REQUIRE_GPIOLIB
+ select MOXART_TIMER
select PHYLIB if NETDEVICES
help
Say Y here if you want to run your kernel on hardware with a
diff --git a/drivers/clocksource/Kconfig b/drivers/clocksource/Kconfig
index c346be650892..9a54d1ce4ce7 100644
--- a/drivers/clocksource/Kconfig
+++ b/drivers/clocksource/Kconfig
@@ -411,4 +411,13 @@ config CLKSRC_ST_LPC
Enable this option to use the Low Power controller timer
as clocksource.
+config MOXART_TIMER
+ bool "Moxart timer" if COMPILE_TEST
+ depends on GENERIC_CLOCKEVENTS && HAS_IOMEM
+ select CLKSRC_OF
+ select CLKSRC_MMIO
+ help
+ Enables the support for the timer used in the Moxart and Aspeed
+ system on chips.
+
endmenu
diff --git a/drivers/clocksource/Makefile b/drivers/clocksource/Makefile
index dc2b8997f6e6..14fe8172c174 100644
--- a/drivers/clocksource/Makefile
+++ b/drivers/clocksource/Makefile
@@ -22,7 +22,7 @@ obj-$(CONFIG_ORION_TIMER) += time-orion.o
obj-$(CONFIG_ARCH_BCM2835) += bcm2835_timer.o
obj-$(CONFIG_ARCH_CLPS711X) += clps711x-timer.o
obj-$(CONFIG_ARCH_ATLAS7) += timer-atlas7.o
-obj-$(CONFIG_ARCH_MOXART) += moxart_timer.o
+obj-$(CONFIG_MOXART_TIMER) += moxart_timer.o
obj-$(CONFIG_ARCH_MXS) += mxs_timer.o
obj-$(CONFIG_CLKSRC_PXA) += pxa_timer.o
obj-$(CONFIG_ARCH_PRIMA2) += timer-prima2.o
--
2.8.1
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH 2/4] drivers/clocksource/moxart: Refactor enable/disable
2016-05-09 12:32 ` Joel Stanley
@ 2016-05-09 12:32 ` Joel Stanley
-1 siblings, 0 replies; 24+ messages in thread
From: Joel Stanley @ 2016-05-09 12:32 UTC (permalink / raw)
To: daniel.lezcano-QSEj5FYQhm4dnm+yROfE0A,
tglx-hfZtesqFncYOwBW4kG4KsQ, jonas.jensen-Re5JQEeQqe8AvxtiuMwx3w
Cc: devicetree-u79uwXL29TY76Z2rM5mHXA,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
jk-mnsaURCQ41sdnm+yROfE0A, benh-XVmvHMARGAS8U2dJNN8I7kB+6BGkLq7r,
arnd-r2nGTMty4D4
Signed-off-by: Joel Stanley <joel-U3u1mxZcP9KHXe+LvDLADg@public.gmane.org>
---
drivers/clocksource/moxart_timer.c | 22 ++++++++++++++++------
1 file changed, 16 insertions(+), 6 deletions(-)
diff --git a/drivers/clocksource/moxart_timer.c b/drivers/clocksource/moxart_timer.c
index 19857af651c1..b00b2b21e8b3 100644
--- a/drivers/clocksource/moxart_timer.c
+++ b/drivers/clocksource/moxart_timer.c
@@ -58,15 +58,25 @@
static void __iomem *base;
static unsigned int clock_count_per_tick;
-static int moxart_shutdown(struct clock_event_device *evt)
+static inline void moxart_disable(struct clock_event_device *evt)
{
writel(TIMER1_DISABLE, base + TIMER_CR);
+}
+
+static inline void moxart_enable(struct clock_event_device *evt)
+{
+ writel(TIMER1_ENABLE, base + TIMER_CR);
+}
+
+static int moxart_shutdown(struct clock_event_device *evt)
+{
+ moxart_disable(evt);
return 0;
}
static int moxart_set_oneshot(struct clock_event_device *evt)
{
- writel(TIMER1_DISABLE, base + TIMER_CR);
+ moxart_disable(evt);
writel(~0, base + TIMER1_BASE + REG_LOAD);
return 0;
}
@@ -74,21 +84,21 @@ static int moxart_set_oneshot(struct clock_event_device *evt)
static int moxart_set_periodic(struct clock_event_device *evt)
{
writel(clock_count_per_tick, base + TIMER1_BASE + REG_LOAD);
- writel(TIMER1_ENABLE, base + TIMER_CR);
+ moxart_enable(evt);
return 0;
}
static int moxart_clkevt_next_event(unsigned long cycles,
- struct clock_event_device *unused)
+ struct clock_event_device *evt)
{
u32 u;
- writel(TIMER1_DISABLE, base + TIMER_CR);
+ moxart_disable(evt);
u = readl(base + TIMER1_BASE + REG_COUNT) - cycles;
writel(u, base + TIMER1_BASE + REG_MATCH1);
- writel(TIMER1_ENABLE, base + TIMER_CR);
+ moxart_enable(evt);
return 0;
}
--
2.8.1
--
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 related [flat|nested] 24+ messages in thread
* [PATCH 2/4] drivers/clocksource/moxart: Refactor enable/disable
@ 2016-05-09 12:32 ` Joel Stanley
0 siblings, 0 replies; 24+ messages in thread
From: Joel Stanley @ 2016-05-09 12:32 UTC (permalink / raw)
To: linux-arm-kernel
Signed-off-by: Joel Stanley <joel@jms.id.au>
---
drivers/clocksource/moxart_timer.c | 22 ++++++++++++++++------
1 file changed, 16 insertions(+), 6 deletions(-)
diff --git a/drivers/clocksource/moxart_timer.c b/drivers/clocksource/moxart_timer.c
index 19857af651c1..b00b2b21e8b3 100644
--- a/drivers/clocksource/moxart_timer.c
+++ b/drivers/clocksource/moxart_timer.c
@@ -58,15 +58,25 @@
static void __iomem *base;
static unsigned int clock_count_per_tick;
-static int moxart_shutdown(struct clock_event_device *evt)
+static inline void moxart_disable(struct clock_event_device *evt)
{
writel(TIMER1_DISABLE, base + TIMER_CR);
+}
+
+static inline void moxart_enable(struct clock_event_device *evt)
+{
+ writel(TIMER1_ENABLE, base + TIMER_CR);
+}
+
+static int moxart_shutdown(struct clock_event_device *evt)
+{
+ moxart_disable(evt);
return 0;
}
static int moxart_set_oneshot(struct clock_event_device *evt)
{
- writel(TIMER1_DISABLE, base + TIMER_CR);
+ moxart_disable(evt);
writel(~0, base + TIMER1_BASE + REG_LOAD);
return 0;
}
@@ -74,21 +84,21 @@ static int moxart_set_oneshot(struct clock_event_device *evt)
static int moxart_set_periodic(struct clock_event_device *evt)
{
writel(clock_count_per_tick, base + TIMER1_BASE + REG_LOAD);
- writel(TIMER1_ENABLE, base + TIMER_CR);
+ moxart_enable(evt);
return 0;
}
static int moxart_clkevt_next_event(unsigned long cycles,
- struct clock_event_device *unused)
+ struct clock_event_device *evt)
{
u32 u;
- writel(TIMER1_DISABLE, base + TIMER_CR);
+ moxart_disable(evt);
u = readl(base + TIMER1_BASE + REG_COUNT) - cycles;
writel(u, base + TIMER1_BASE + REG_MATCH1);
- writel(TIMER1_ENABLE, base + TIMER_CR);
+ moxart_enable(evt);
return 0;
}
--
2.8.1
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH 3/4] drivers/clocksource/moxart: Use struct to hold state
2016-05-09 12:32 ` Joel Stanley
@ 2016-05-09 12:32 ` Joel Stanley
-1 siblings, 0 replies; 24+ messages in thread
From: Joel Stanley @ 2016-05-09 12:32 UTC (permalink / raw)
To: daniel.lezcano, tglx, jonas.jensen
Cc: devicetree, arnd, jk, linux-arm-kernel, benh
Add a struct moxart_timer to hold the driver state, including the
irqaction and struct clock_event_device.
Most importantly this holds values for enabling and disabling the timer,
so future support can be added for devices that use different bits for
enable/disable.
In preparation for future hardware support we add a MOXART prefix to the
existing values.
Signed-off-by: Joel Stanley <joel@jms.id.au>
---
drivers/clocksource/moxart_timer.c | 143 ++++++++++++++++++++++---------------
1 file changed, 84 insertions(+), 59 deletions(-)
diff --git a/drivers/clocksource/moxart_timer.c b/drivers/clocksource/moxart_timer.c
index b00b2b21e8b3..d17e3eface87 100644
--- a/drivers/clocksource/moxart_timer.c
+++ b/drivers/clocksource/moxart_timer.c
@@ -21,6 +21,7 @@
#include <linux/io.h>
#include <linux/clocksource.h>
#include <linux/bitops.h>
+#include <linux/slab.h>
#define TIMER1_BASE 0x00
#define TIMER2_BASE 0x10
@@ -36,36 +37,51 @@
#define TIMER_INTR_MASK 0x38
/*
- * TIMER_CR flags:
+ * Moxart TIMER_CR flags:
*
- * TIMEREG_CR_*_CLOCK 0: PCLK, 1: EXT1CLK
- * TIMEREG_CR_*_INT overflow interrupt enable bit
+ * MOXART_CR_*_CLOCK 0: PCLK, 1: EXT1CLK
+ * MOXART_CR_*_INT overflow interrupt enable bit
*/
-#define TIMEREG_CR_1_ENABLE BIT(0)
-#define TIMEREG_CR_1_CLOCK BIT(1)
-#define TIMEREG_CR_1_INT BIT(2)
-#define TIMEREG_CR_2_ENABLE BIT(3)
-#define TIMEREG_CR_2_CLOCK BIT(4)
-#define TIMEREG_CR_2_INT BIT(5)
-#define TIMEREG_CR_3_ENABLE BIT(6)
-#define TIMEREG_CR_3_CLOCK BIT(7)
-#define TIMEREG_CR_3_INT BIT(8)
-#define TIMEREG_CR_COUNT_UP BIT(9)
-
-#define TIMER1_ENABLE (TIMEREG_CR_2_ENABLE | TIMEREG_CR_1_ENABLE)
-#define TIMER1_DISABLE (TIMEREG_CR_2_ENABLE)
-
-static void __iomem *base;
-static unsigned int clock_count_per_tick;
+#define MOXART_CR_1_ENABLE BIT(0)
+#define MOXART_CR_1_CLOCK BIT(1)
+#define MOXART_CR_1_INT BIT(2)
+#define MOXART_CR_2_ENABLE BIT(3)
+#define MOXART_CR_2_CLOCK BIT(4)
+#define MOXART_CR_2_INT BIT(5)
+#define MOXART_CR_3_ENABLE BIT(6)
+#define MOXART_CR_3_CLOCK BIT(7)
+#define MOXART_CR_3_INT BIT(8)
+#define MOXART_CR_COUNT_UP BIT(9)
+
+#define MOXART_TIMER1_ENABLE (MOXART_CR_2_ENABLE | MOXART_CR_1_ENABLE)
+#define MOXART_TIMER1_DISABLE (MOXART_CR_2_ENABLE)
+
+struct moxart_timer {
+ void __iomem *base;
+ unsigned int t1_disable_val;
+ unsigned int t1_enable_val;
+ unsigned int count_per_tick;
+ struct clock_event_device clkevt;
+ struct irqaction act;
+};
+
+static inline struct moxart_timer *to_moxart(struct clock_event_device *evt)
+{
+ return container_of(evt, struct moxart_timer, clkevt);
+}
static inline void moxart_disable(struct clock_event_device *evt)
{
- writel(TIMER1_DISABLE, base + TIMER_CR);
+ struct moxart_timer *timer = to_moxart(evt);
+
+ writel(timer->t1_disable_val, timer->base + TIMER_CR);
}
static inline void moxart_enable(struct clock_event_device *evt)
{
- writel(TIMER1_ENABLE, base + TIMER_CR);
+ struct moxart_timer *timer = to_moxart(evt);
+
+ writel(timer->t1_enable_val, timer->base + TIMER_CR);
}
static int moxart_shutdown(struct clock_event_device *evt)
@@ -77,13 +93,17 @@ static int moxart_shutdown(struct clock_event_device *evt)
static int moxart_set_oneshot(struct clock_event_device *evt)
{
moxart_disable(evt);
- writel(~0, base + TIMER1_BASE + REG_LOAD);
+ writel(~0, to_moxart(evt)->base + TIMER1_BASE + REG_LOAD);
return 0;
}
static int moxart_set_periodic(struct clock_event_device *evt)
{
- writel(clock_count_per_tick, base + TIMER1_BASE + REG_LOAD);
+ struct moxart_timer *timer = to_moxart(evt);
+
+ moxart_disable(evt);
+ writel(timer->count_per_tick, timer->base + TIMER1_BASE + REG_LOAD);
+ writel(0, timer->base + TIMER1_BASE + REG_MATCH1);
moxart_enable(evt);
return 0;
}
@@ -91,30 +111,19 @@ static int moxart_set_periodic(struct clock_event_device *evt)
static int moxart_clkevt_next_event(unsigned long cycles,
struct clock_event_device *evt)
{
+ struct moxart_timer *timer = to_moxart(evt);
u32 u;
moxart_disable(evt);
- u = readl(base + TIMER1_BASE + REG_COUNT) - cycles;
- writel(u, base + TIMER1_BASE + REG_MATCH1);
+ u = readl(timer->base + TIMER1_BASE + REG_COUNT) - cycles;
+ writel(u, timer->base + TIMER1_BASE + REG_MATCH1);
moxart_enable(evt);
return 0;
}
-static struct clock_event_device moxart_clockevent = {
- .name = "moxart_timer",
- .rating = 200,
- .features = CLOCK_EVT_FEAT_PERIODIC |
- CLOCK_EVT_FEAT_ONESHOT,
- .set_state_shutdown = moxart_shutdown,
- .set_state_periodic = moxart_set_periodic,
- .set_state_oneshot = moxart_set_oneshot,
- .tick_resume = moxart_set_oneshot,
- .set_next_event = moxart_clkevt_next_event,
-};
-
static irqreturn_t moxart_timer_interrupt(int irq, void *dev_id)
{
struct clock_event_device *evt = dev_id;
@@ -122,49 +131,66 @@ static irqreturn_t moxart_timer_interrupt(int irq, void *dev_id)
return IRQ_HANDLED;
}
-static struct irqaction moxart_timer_irq = {
- .name = "moxart-timer",
- .flags = IRQF_TIMER,
- .handler = moxart_timer_interrupt,
- .dev_id = &moxart_clockevent,
-};
-
static void __init moxart_timer_init(struct device_node *node)
{
int ret, irq;
unsigned long pclk;
struct clk *clk;
+ struct moxart_timer *timer;
+
+ timer = kzalloc(sizeof(*timer), GFP_KERNEL);
+ if (!timer)
+ panic("Can't allocate timer struct\n");
- base = of_iomap(node, 0);
- if (!base)
+ timer->base = of_iomap(node, 0);
+ if (!timer->base)
panic("%s: of_iomap failed\n", node->full_name);
irq = irq_of_parse_and_map(node, 0);
if (irq <= 0)
panic("%s: irq_of_parse_and_map failed\n", node->full_name);
- ret = setup_irq(irq, &moxart_timer_irq);
- if (ret)
- panic("%s: setup_irq failed\n", node->full_name);
-
clk = of_clk_get(node, 0);
if (IS_ERR(clk))
panic("%s: of_clk_get failed\n", node->full_name);
pclk = clk_get_rate(clk);
- if (clocksource_mmio_init(base + TIMER2_BASE + REG_COUNT,
+ if (of_device_is_compatible(node, "moxa,moxart-timer")) {
+ timer->t1_enable_val = MOXART_TIMER1_ENABLE;
+ timer->t1_disable_val = MOXART_TIMER1_DISABLE;
+ } else
+ panic("%s: unknown platform\n", node->full_name);
+
+ timer->count_per_tick = DIV_ROUND_CLOSEST(pclk, HZ);
+
+ timer->clkevt.name = node->name;
+ timer->clkevt.rating = 200;
+ timer->clkevt.features = CLOCK_EVT_FEAT_PERIODIC |
+ CLOCK_EVT_FEAT_ONESHOT;
+ timer->clkevt.set_state_shutdown = moxart_shutdown;
+ timer->clkevt.set_state_periodic = moxart_set_periodic;
+ timer->clkevt.set_state_oneshot = moxart_set_oneshot;
+ timer->clkevt.tick_resume = moxart_set_oneshot;
+ timer->clkevt.set_next_event = moxart_clkevt_next_event;
+ timer->clkevt.cpumask = cpumask_of(0);
+ timer->clkevt.irq = irq;
+ timer->act.name = node->name;
+ timer->act.flags = IRQF_TIMER;
+ timer->act.handler = moxart_timer_interrupt;
+ timer->act.dev_id = &timer->clkevt;
+
+ if (clocksource_mmio_init(timer->base + TIMER2_BASE + REG_COUNT,
"moxart_timer", pclk, 200, 32,
clocksource_mmio_readl_down))
panic("%s: clocksource_mmio_init failed\n", node->full_name);
- clock_count_per_tick = DIV_ROUND_CLOSEST(pclk, HZ);
-
- writel(~0, base + TIMER2_BASE + REG_LOAD);
- writel(TIMEREG_CR_2_ENABLE, base + TIMER_CR);
+ ret = setup_irq(irq, &timer->act);
+ if (ret)
+ panic("%s: setup_irq failed\n", node->full_name);
- moxart_clockevent.cpumask = cpumask_of(0);
- moxart_clockevent.irq = irq;
+ writel(~0, timer->base + TIMER2_BASE + REG_LOAD);
+ writel(timer->t1_disable_val, timer->base + TIMER_CR);
/*
* documentation is not publicly available:
@@ -172,7 +198,6 @@ static void __init moxart_timer_init(struct device_node *node)
* max_delta 0xfffffffe should be ok because count
* register size is u32
*/
- clockevents_config_and_register(&moxart_clockevent, pclk,
- 0x4, 0xfffffffe);
+ clockevents_config_and_register(&timer->clkevt, pclk, 0x4, 0xfffffffe);
}
CLOCKSOURCE_OF_DECLARE(moxart, "moxa,moxart-timer", moxart_timer_init);
--
2.8.1
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH 3/4] drivers/clocksource/moxart: Use struct to hold state
@ 2016-05-09 12:32 ` Joel Stanley
0 siblings, 0 replies; 24+ messages in thread
From: Joel Stanley @ 2016-05-09 12:32 UTC (permalink / raw)
To: linux-arm-kernel
Add a struct moxart_timer to hold the driver state, including the
irqaction and struct clock_event_device.
Most importantly this holds values for enabling and disabling the timer,
so future support can be added for devices that use different bits for
enable/disable.
In preparation for future hardware support we add a MOXART prefix to the
existing values.
Signed-off-by: Joel Stanley <joel@jms.id.au>
---
drivers/clocksource/moxart_timer.c | 143 ++++++++++++++++++++++---------------
1 file changed, 84 insertions(+), 59 deletions(-)
diff --git a/drivers/clocksource/moxart_timer.c b/drivers/clocksource/moxart_timer.c
index b00b2b21e8b3..d17e3eface87 100644
--- a/drivers/clocksource/moxart_timer.c
+++ b/drivers/clocksource/moxart_timer.c
@@ -21,6 +21,7 @@
#include <linux/io.h>
#include <linux/clocksource.h>
#include <linux/bitops.h>
+#include <linux/slab.h>
#define TIMER1_BASE 0x00
#define TIMER2_BASE 0x10
@@ -36,36 +37,51 @@
#define TIMER_INTR_MASK 0x38
/*
- * TIMER_CR flags:
+ * Moxart TIMER_CR flags:
*
- * TIMEREG_CR_*_CLOCK 0: PCLK, 1: EXT1CLK
- * TIMEREG_CR_*_INT overflow interrupt enable bit
+ * MOXART_CR_*_CLOCK 0: PCLK, 1: EXT1CLK
+ * MOXART_CR_*_INT overflow interrupt enable bit
*/
-#define TIMEREG_CR_1_ENABLE BIT(0)
-#define TIMEREG_CR_1_CLOCK BIT(1)
-#define TIMEREG_CR_1_INT BIT(2)
-#define TIMEREG_CR_2_ENABLE BIT(3)
-#define TIMEREG_CR_2_CLOCK BIT(4)
-#define TIMEREG_CR_2_INT BIT(5)
-#define TIMEREG_CR_3_ENABLE BIT(6)
-#define TIMEREG_CR_3_CLOCK BIT(7)
-#define TIMEREG_CR_3_INT BIT(8)
-#define TIMEREG_CR_COUNT_UP BIT(9)
-
-#define TIMER1_ENABLE (TIMEREG_CR_2_ENABLE | TIMEREG_CR_1_ENABLE)
-#define TIMER1_DISABLE (TIMEREG_CR_2_ENABLE)
-
-static void __iomem *base;
-static unsigned int clock_count_per_tick;
+#define MOXART_CR_1_ENABLE BIT(0)
+#define MOXART_CR_1_CLOCK BIT(1)
+#define MOXART_CR_1_INT BIT(2)
+#define MOXART_CR_2_ENABLE BIT(3)
+#define MOXART_CR_2_CLOCK BIT(4)
+#define MOXART_CR_2_INT BIT(5)
+#define MOXART_CR_3_ENABLE BIT(6)
+#define MOXART_CR_3_CLOCK BIT(7)
+#define MOXART_CR_3_INT BIT(8)
+#define MOXART_CR_COUNT_UP BIT(9)
+
+#define MOXART_TIMER1_ENABLE (MOXART_CR_2_ENABLE | MOXART_CR_1_ENABLE)
+#define MOXART_TIMER1_DISABLE (MOXART_CR_2_ENABLE)
+
+struct moxart_timer {
+ void __iomem *base;
+ unsigned int t1_disable_val;
+ unsigned int t1_enable_val;
+ unsigned int count_per_tick;
+ struct clock_event_device clkevt;
+ struct irqaction act;
+};
+
+static inline struct moxart_timer *to_moxart(struct clock_event_device *evt)
+{
+ return container_of(evt, struct moxart_timer, clkevt);
+}
static inline void moxart_disable(struct clock_event_device *evt)
{
- writel(TIMER1_DISABLE, base + TIMER_CR);
+ struct moxart_timer *timer = to_moxart(evt);
+
+ writel(timer->t1_disable_val, timer->base + TIMER_CR);
}
static inline void moxart_enable(struct clock_event_device *evt)
{
- writel(TIMER1_ENABLE, base + TIMER_CR);
+ struct moxart_timer *timer = to_moxart(evt);
+
+ writel(timer->t1_enable_val, timer->base + TIMER_CR);
}
static int moxart_shutdown(struct clock_event_device *evt)
@@ -77,13 +93,17 @@ static int moxart_shutdown(struct clock_event_device *evt)
static int moxart_set_oneshot(struct clock_event_device *evt)
{
moxart_disable(evt);
- writel(~0, base + TIMER1_BASE + REG_LOAD);
+ writel(~0, to_moxart(evt)->base + TIMER1_BASE + REG_LOAD);
return 0;
}
static int moxart_set_periodic(struct clock_event_device *evt)
{
- writel(clock_count_per_tick, base + TIMER1_BASE + REG_LOAD);
+ struct moxart_timer *timer = to_moxart(evt);
+
+ moxart_disable(evt);
+ writel(timer->count_per_tick, timer->base + TIMER1_BASE + REG_LOAD);
+ writel(0, timer->base + TIMER1_BASE + REG_MATCH1);
moxart_enable(evt);
return 0;
}
@@ -91,30 +111,19 @@ static int moxart_set_periodic(struct clock_event_device *evt)
static int moxart_clkevt_next_event(unsigned long cycles,
struct clock_event_device *evt)
{
+ struct moxart_timer *timer = to_moxart(evt);
u32 u;
moxart_disable(evt);
- u = readl(base + TIMER1_BASE + REG_COUNT) - cycles;
- writel(u, base + TIMER1_BASE + REG_MATCH1);
+ u = readl(timer->base + TIMER1_BASE + REG_COUNT) - cycles;
+ writel(u, timer->base + TIMER1_BASE + REG_MATCH1);
moxart_enable(evt);
return 0;
}
-static struct clock_event_device moxart_clockevent = {
- .name = "moxart_timer",
- .rating = 200,
- .features = CLOCK_EVT_FEAT_PERIODIC |
- CLOCK_EVT_FEAT_ONESHOT,
- .set_state_shutdown = moxart_shutdown,
- .set_state_periodic = moxart_set_periodic,
- .set_state_oneshot = moxart_set_oneshot,
- .tick_resume = moxart_set_oneshot,
- .set_next_event = moxart_clkevt_next_event,
-};
-
static irqreturn_t moxart_timer_interrupt(int irq, void *dev_id)
{
struct clock_event_device *evt = dev_id;
@@ -122,49 +131,66 @@ static irqreturn_t moxart_timer_interrupt(int irq, void *dev_id)
return IRQ_HANDLED;
}
-static struct irqaction moxart_timer_irq = {
- .name = "moxart-timer",
- .flags = IRQF_TIMER,
- .handler = moxart_timer_interrupt,
- .dev_id = &moxart_clockevent,
-};
-
static void __init moxart_timer_init(struct device_node *node)
{
int ret, irq;
unsigned long pclk;
struct clk *clk;
+ struct moxart_timer *timer;
+
+ timer = kzalloc(sizeof(*timer), GFP_KERNEL);
+ if (!timer)
+ panic("Can't allocate timer struct\n");
- base = of_iomap(node, 0);
- if (!base)
+ timer->base = of_iomap(node, 0);
+ if (!timer->base)
panic("%s: of_iomap failed\n", node->full_name);
irq = irq_of_parse_and_map(node, 0);
if (irq <= 0)
panic("%s: irq_of_parse_and_map failed\n", node->full_name);
- ret = setup_irq(irq, &moxart_timer_irq);
- if (ret)
- panic("%s: setup_irq failed\n", node->full_name);
-
clk = of_clk_get(node, 0);
if (IS_ERR(clk))
panic("%s: of_clk_get failed\n", node->full_name);
pclk = clk_get_rate(clk);
- if (clocksource_mmio_init(base + TIMER2_BASE + REG_COUNT,
+ if (of_device_is_compatible(node, "moxa,moxart-timer")) {
+ timer->t1_enable_val = MOXART_TIMER1_ENABLE;
+ timer->t1_disable_val = MOXART_TIMER1_DISABLE;
+ } else
+ panic("%s: unknown platform\n", node->full_name);
+
+ timer->count_per_tick = DIV_ROUND_CLOSEST(pclk, HZ);
+
+ timer->clkevt.name = node->name;
+ timer->clkevt.rating = 200;
+ timer->clkevt.features = CLOCK_EVT_FEAT_PERIODIC |
+ CLOCK_EVT_FEAT_ONESHOT;
+ timer->clkevt.set_state_shutdown = moxart_shutdown;
+ timer->clkevt.set_state_periodic = moxart_set_periodic;
+ timer->clkevt.set_state_oneshot = moxart_set_oneshot;
+ timer->clkevt.tick_resume = moxart_set_oneshot;
+ timer->clkevt.set_next_event = moxart_clkevt_next_event;
+ timer->clkevt.cpumask = cpumask_of(0);
+ timer->clkevt.irq = irq;
+ timer->act.name = node->name;
+ timer->act.flags = IRQF_TIMER;
+ timer->act.handler = moxart_timer_interrupt;
+ timer->act.dev_id = &timer->clkevt;
+
+ if (clocksource_mmio_init(timer->base + TIMER2_BASE + REG_COUNT,
"moxart_timer", pclk, 200, 32,
clocksource_mmio_readl_down))
panic("%s: clocksource_mmio_init failed\n", node->full_name);
- clock_count_per_tick = DIV_ROUND_CLOSEST(pclk, HZ);
-
- writel(~0, base + TIMER2_BASE + REG_LOAD);
- writel(TIMEREG_CR_2_ENABLE, base + TIMER_CR);
+ ret = setup_irq(irq, &timer->act);
+ if (ret)
+ panic("%s: setup_irq failed\n", node->full_name);
- moxart_clockevent.cpumask = cpumask_of(0);
- moxart_clockevent.irq = irq;
+ writel(~0, timer->base + TIMER2_BASE + REG_LOAD);
+ writel(timer->t1_disable_val, timer->base + TIMER_CR);
/*
* documentation is not publicly available:
@@ -172,7 +198,6 @@ static void __init moxart_timer_init(struct device_node *node)
* max_delta 0xfffffffe should be ok because count
* register size is u32
*/
- clockevents_config_and_register(&moxart_clockevent, pclk,
- 0x4, 0xfffffffe);
+ clockevents_config_and_register(&timer->clkevt, pclk, 0x4, 0xfffffffe);
}
CLOCKSOURCE_OF_DECLARE(moxart, "moxa,moxart-timer", moxart_timer_init);
--
2.8.1
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH 4/4] drivers/clocksource/moxart: Add Aspeed support
2016-05-09 12:32 ` Joel Stanley
@ 2016-05-09 12:32 ` Joel Stanley
-1 siblings, 0 replies; 24+ messages in thread
From: Joel Stanley @ 2016-05-09 12:32 UTC (permalink / raw)
To: daniel.lezcano-QSEj5FYQhm4dnm+yROfE0A,
tglx-hfZtesqFncYOwBW4kG4KsQ, jonas.jensen-Re5JQEeQqe8AvxtiuMwx3w
Cc: devicetree-u79uwXL29TY76Z2rM5mHXA,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
jk-mnsaURCQ41sdnm+yROfE0A, benh-XVmvHMARGAS8U2dJNN8I7kB+6BGkLq7r,
arnd-r2nGTMty4D4
The Aspeed SoC has timer IP with a very similar register layout to the
moxart timer. This patch adds support for the fourth and fifth gen
aspeed SoCs, and has been tested on the ast2400 and ast2500.
Signed-off-by: Joel Stanley <joel-U3u1mxZcP9KHXe+LvDLADg@public.gmane.org>
---
.../bindings/timer/moxa,moxart-timer.txt | 4 ++-
drivers/clocksource/moxart_timer.c | 32 ++++++++++++++++++++++
2 files changed, 35 insertions(+), 1 deletion(-)
diff --git a/Documentation/devicetree/bindings/timer/moxa,moxart-timer.txt b/Documentation/devicetree/bindings/timer/moxa,moxart-timer.txt
index da2d510cae47..e207c11630af 100644
--- a/Documentation/devicetree/bindings/timer/moxa,moxart-timer.txt
+++ b/Documentation/devicetree/bindings/timer/moxa,moxart-timer.txt
@@ -2,7 +2,9 @@ MOXA ART timer
Required properties:
-- compatible : Must be "moxa,moxart-timer"
+- compatible : Must be one of:
+ - "moxa,moxart-timer"
+ - "aspeed,ast2400-timer"
- reg : Should contain registers location and length
- interrupts : Should contain the timer interrupt number
- clocks : Should contain phandle for the clock that drives the counter
diff --git a/drivers/clocksource/moxart_timer.c b/drivers/clocksource/moxart_timer.c
index d17e3eface87..83ffa2727699 100644
--- a/drivers/clocksource/moxart_timer.c
+++ b/drivers/clocksource/moxart_timer.c
@@ -56,6 +56,23 @@
#define MOXART_TIMER1_ENABLE (MOXART_CR_2_ENABLE | MOXART_CR_1_ENABLE)
#define MOXART_TIMER1_DISABLE (MOXART_CR_2_ENABLE)
+/*
+ * The ASpeed variant of the IP block has a different layout
+ * for the control register
+ */
+#define ASPEED_CR_1_ENABLE BIT(0)
+#define ASPEED_CR_1_CLOCK BIT(1)
+#define ASPEED_CR_1_INT BIT(2)
+#define ASPEED_CR_2_ENABLE BIT(4)
+#define ASPEED_CR_2_CLOCK BIT(5)
+#define ASPEED_CR_2_INT BIT(6)
+#define ASPEED_CR_3_ENABLE BIT(8)
+#define ASPEED_CR_3_CLOCK BIT(9)
+#define ASPEED_CR_3_INT BIT(10)
+
+#define ASPEED_TIMER1_ENABLE (ASPEED_CR_2_ENABLE | ASPEED_CR_1_ENABLE)
+#define ASPEED_TIMER1_DISABLE (ASPEED_CR_2_ENABLE)
+
struct moxart_timer {
void __iomem *base;
unsigned int t1_disable_val;
@@ -159,6 +176,9 @@ static void __init moxart_timer_init(struct device_node *node)
if (of_device_is_compatible(node, "moxa,moxart-timer")) {
timer->t1_enable_val = MOXART_TIMER1_ENABLE;
timer->t1_disable_val = MOXART_TIMER1_DISABLE;
+ } else if (of_device_is_compatible(node, "aspeed,ast2400-timer")) {
+ timer->t1_enable_val = ASPEED_TIMER1_ENABLE;
+ timer->t1_disable_val = ASPEED_TIMER1_DISABLE;
} else
panic("%s: unknown platform\n", node->full_name);
@@ -189,6 +209,17 @@ static void __init moxart_timer_init(struct device_node *node)
if (ret)
panic("%s: setup_irq failed\n", node->full_name);
+ /* Clear match registers */
+ writel(0, timer->base + TIMER1_BASE + REG_MATCH1);
+ writel(0, timer->base + TIMER1_BASE + REG_MATCH2);
+ writel(0, timer->base + TIMER2_BASE + REG_MATCH1);
+ writel(0, timer->base + TIMER2_BASE + REG_MATCH2);
+
+ /*
+ * Start timer 2 rolling as our main wall clock source, keep timer 1
+ * disabled
+ */
+ writel(0, timer->base + TIMER_CR);
writel(~0, timer->base + TIMER2_BASE + REG_LOAD);
writel(timer->t1_disable_val, timer->base + TIMER_CR);
@@ -201,3 +232,4 @@ static void __init moxart_timer_init(struct device_node *node)
clockevents_config_and_register(&timer->clkevt, pclk, 0x4, 0xfffffffe);
}
CLOCKSOURCE_OF_DECLARE(moxart, "moxa,moxart-timer", moxart_timer_init);
+CLOCKSOURCE_OF_DECLARE(aspeed, "aspeed,ast2400-timer", moxart_timer_init);
--
2.8.1
--
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 related [flat|nested] 24+ messages in thread
* [PATCH 4/4] drivers/clocksource/moxart: Add Aspeed support
@ 2016-05-09 12:32 ` Joel Stanley
0 siblings, 0 replies; 24+ messages in thread
From: Joel Stanley @ 2016-05-09 12:32 UTC (permalink / raw)
To: linux-arm-kernel
The Aspeed SoC has timer IP with a very similar register layout to the
moxart timer. This patch adds support for the fourth and fifth gen
aspeed SoCs, and has been tested on the ast2400 and ast2500.
Signed-off-by: Joel Stanley <joel@jms.id.au>
---
.../bindings/timer/moxa,moxart-timer.txt | 4 ++-
drivers/clocksource/moxart_timer.c | 32 ++++++++++++++++++++++
2 files changed, 35 insertions(+), 1 deletion(-)
diff --git a/Documentation/devicetree/bindings/timer/moxa,moxart-timer.txt b/Documentation/devicetree/bindings/timer/moxa,moxart-timer.txt
index da2d510cae47..e207c11630af 100644
--- a/Documentation/devicetree/bindings/timer/moxa,moxart-timer.txt
+++ b/Documentation/devicetree/bindings/timer/moxa,moxart-timer.txt
@@ -2,7 +2,9 @@ MOXA ART timer
Required properties:
-- compatible : Must be "moxa,moxart-timer"
+- compatible : Must be one of:
+ - "moxa,moxart-timer"
+ - "aspeed,ast2400-timer"
- reg : Should contain registers location and length
- interrupts : Should contain the timer interrupt number
- clocks : Should contain phandle for the clock that drives the counter
diff --git a/drivers/clocksource/moxart_timer.c b/drivers/clocksource/moxart_timer.c
index d17e3eface87..83ffa2727699 100644
--- a/drivers/clocksource/moxart_timer.c
+++ b/drivers/clocksource/moxart_timer.c
@@ -56,6 +56,23 @@
#define MOXART_TIMER1_ENABLE (MOXART_CR_2_ENABLE | MOXART_CR_1_ENABLE)
#define MOXART_TIMER1_DISABLE (MOXART_CR_2_ENABLE)
+/*
+ * The ASpeed variant of the IP block has a different layout
+ * for the control register
+ */
+#define ASPEED_CR_1_ENABLE BIT(0)
+#define ASPEED_CR_1_CLOCK BIT(1)
+#define ASPEED_CR_1_INT BIT(2)
+#define ASPEED_CR_2_ENABLE BIT(4)
+#define ASPEED_CR_2_CLOCK BIT(5)
+#define ASPEED_CR_2_INT BIT(6)
+#define ASPEED_CR_3_ENABLE BIT(8)
+#define ASPEED_CR_3_CLOCK BIT(9)
+#define ASPEED_CR_3_INT BIT(10)
+
+#define ASPEED_TIMER1_ENABLE (ASPEED_CR_2_ENABLE | ASPEED_CR_1_ENABLE)
+#define ASPEED_TIMER1_DISABLE (ASPEED_CR_2_ENABLE)
+
struct moxart_timer {
void __iomem *base;
unsigned int t1_disable_val;
@@ -159,6 +176,9 @@ static void __init moxart_timer_init(struct device_node *node)
if (of_device_is_compatible(node, "moxa,moxart-timer")) {
timer->t1_enable_val = MOXART_TIMER1_ENABLE;
timer->t1_disable_val = MOXART_TIMER1_DISABLE;
+ } else if (of_device_is_compatible(node, "aspeed,ast2400-timer")) {
+ timer->t1_enable_val = ASPEED_TIMER1_ENABLE;
+ timer->t1_disable_val = ASPEED_TIMER1_DISABLE;
} else
panic("%s: unknown platform\n", node->full_name);
@@ -189,6 +209,17 @@ static void __init moxart_timer_init(struct device_node *node)
if (ret)
panic("%s: setup_irq failed\n", node->full_name);
+ /* Clear match registers */
+ writel(0, timer->base + TIMER1_BASE + REG_MATCH1);
+ writel(0, timer->base + TIMER1_BASE + REG_MATCH2);
+ writel(0, timer->base + TIMER2_BASE + REG_MATCH1);
+ writel(0, timer->base + TIMER2_BASE + REG_MATCH2);
+
+ /*
+ * Start timer 2 rolling as our main wall clock source, keep timer 1
+ * disabled
+ */
+ writel(0, timer->base + TIMER_CR);
writel(~0, timer->base + TIMER2_BASE + REG_LOAD);
writel(timer->t1_disable_val, timer->base + TIMER_CR);
@@ -201,3 +232,4 @@ static void __init moxart_timer_init(struct device_node *node)
clockevents_config_and_register(&timer->clkevt, pclk, 0x4, 0xfffffffe);
}
CLOCKSOURCE_OF_DECLARE(moxart, "moxa,moxart-timer", moxart_timer_init);
+CLOCKSOURCE_OF_DECLARE(aspeed, "aspeed,ast2400-timer", moxart_timer_init);
--
2.8.1
^ permalink raw reply related [flat|nested] 24+ messages in thread
* Re: [PATCH 4/4] drivers/clocksource/moxart: Add Aspeed support
2016-05-09 12:32 ` Joel Stanley
@ 2016-05-09 20:36 ` Rob Herring
-1 siblings, 0 replies; 24+ messages in thread
From: Rob Herring @ 2016-05-09 20:36 UTC (permalink / raw)
To: Joel Stanley
Cc: daniel.lezcano-QSEj5FYQhm4dnm+yROfE0A,
tglx-hfZtesqFncYOwBW4kG4KsQ, jonas.jensen-Re5JQEeQqe8AvxtiuMwx3w,
devicetree-u79uwXL29TY76Z2rM5mHXA,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
jk-mnsaURCQ41sdnm+yROfE0A, benh-XVmvHMARGAS8U2dJNN8I7kB+6BGkLq7r,
arnd-r2nGTMty4D4
On Mon, May 09, 2016 at 10:02:49PM +0930, Joel Stanley wrote:
> The Aspeed SoC has timer IP with a very similar register layout to the
> moxart timer. This patch adds support for the fourth and fifth gen
> aspeed SoCs, and has been tested on the ast2400 and ast2500.
>
> Signed-off-by: Joel Stanley <joel-U3u1mxZcP9KHXe+LvDLADg@public.gmane.org>
> ---
> .../bindings/timer/moxa,moxart-timer.txt | 4 ++-
> drivers/clocksource/moxart_timer.c | 32 ++++++++++++++++++++++
> 2 files changed, 35 insertions(+), 1 deletion(-)
Acked-by: Rob Herring <robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
--
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] 24+ messages in thread
* [PATCH 4/4] drivers/clocksource/moxart: Add Aspeed support
@ 2016-05-09 20:36 ` Rob Herring
0 siblings, 0 replies; 24+ messages in thread
From: Rob Herring @ 2016-05-09 20:36 UTC (permalink / raw)
To: linux-arm-kernel
On Mon, May 09, 2016 at 10:02:49PM +0930, Joel Stanley wrote:
> The Aspeed SoC has timer IP with a very similar register layout to the
> moxart timer. This patch adds support for the fourth and fifth gen
> aspeed SoCs, and has been tested on the ast2400 and ast2500.
>
> Signed-off-by: Joel Stanley <joel@jms.id.au>
> ---
> .../bindings/timer/moxa,moxart-timer.txt | 4 ++-
> drivers/clocksource/moxart_timer.c | 32 ++++++++++++++++++++++
> 2 files changed, 35 insertions(+), 1 deletion(-)
Acked-by: Rob Herring <robh@kernel.org>
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH 0/4] clocksource: Add support for Aspeed timer
2016-05-09 12:32 ` Joel Stanley
@ 2016-05-10 10:22 ` Daniel Lezcano
-1 siblings, 0 replies; 24+ messages in thread
From: Daniel Lezcano @ 2016-05-10 10:22 UTC (permalink / raw)
To: Joel Stanley
Cc: tglx-hfZtesqFncYOwBW4kG4KsQ, jonas.jensen-Re5JQEeQqe8AvxtiuMwx3w,
devicetree-u79uwXL29TY76Z2rM5mHXA,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
jk-mnsaURCQ41sdnm+yROfE0A, benh-XVmvHMARGAS8U2dJNN8I7kB+6BGkLq7r,
arnd-r2nGTMty4D4
On Mon, May 09, 2016 at 10:02:45PM +0930, Joel Stanley wrote:
> Hello All,
>
> This adds support for the Aspeed ast2400 and ast2500 families of BMC SoCs to
> the moxart driver.
>
> I've addressed the feedback from Daniel and spent a bit of time trying to
> ensure the series makes sense.
>
> I've not included a patch that renames the driver to fttmr010, from Faraday
> Tech, as I wasn't sure if we had consensus. If you would prefer I do so then
> let me know.
>
> Cheers,
>
> Joel
>
> Joel Stanley (4):
> drivers/clocksouree/moxart: Add kbuild symbol
> drivers/clocksource/moxart: Refactor enable/disable
> drivers/clocksource/moxart: Use struct to hold state
> drivers/clocksource/moxart: Add Aspeed support
>
> .../bindings/timer/moxa,moxart-timer.txt | 4 +-
> arch/arm/mach-moxart/Kconfig | 2 +-
> drivers/clocksource/Kconfig | 9 +
> drivers/clocksource/Makefile | 2 +-
> drivers/clocksource/moxart_timer.c | 191 ++++++++++++++-------
> 5 files changed, 143 insertions(+), 65 deletions(-)
The changes look ok. Could you please reply to patch 2 with a changelog I
can add.
Thanks.
-- Daniel
--
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] 24+ messages in thread
* [PATCH 0/4] clocksource: Add support for Aspeed timer
@ 2016-05-10 10:22 ` Daniel Lezcano
0 siblings, 0 replies; 24+ messages in thread
From: Daniel Lezcano @ 2016-05-10 10:22 UTC (permalink / raw)
To: linux-arm-kernel
On Mon, May 09, 2016 at 10:02:45PM +0930, Joel Stanley wrote:
> Hello All,
>
> This adds support for the Aspeed ast2400 and ast2500 families of BMC SoCs to
> the moxart driver.
>
> I've addressed the feedback from Daniel and spent a bit of time trying to
> ensure the series makes sense.
>
> I've not included a patch that renames the driver to fttmr010, from Faraday
> Tech, as I wasn't sure if we had consensus. If you would prefer I do so then
> let me know.
>
> Cheers,
>
> Joel
>
> Joel Stanley (4):
> drivers/clocksouree/moxart: Add kbuild symbol
> drivers/clocksource/moxart: Refactor enable/disable
> drivers/clocksource/moxart: Use struct to hold state
> drivers/clocksource/moxart: Add Aspeed support
>
> .../bindings/timer/moxa,moxart-timer.txt | 4 +-
> arch/arm/mach-moxart/Kconfig | 2 +-
> drivers/clocksource/Kconfig | 9 +
> drivers/clocksource/Makefile | 2 +-
> drivers/clocksource/moxart_timer.c | 191 ++++++++++++++-------
> 5 files changed, 143 insertions(+), 65 deletions(-)
The changes look ok. Could you please reply to patch 2 with a changelog I
can add.
Thanks.
-- Daniel
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH 2/4] drivers/clocksource/moxart: Refactor enable/disable
2016-05-09 12:32 ` Joel Stanley
@ 2016-05-10 11:06 ` Joel Stanley
-1 siblings, 0 replies; 24+ messages in thread
From: Joel Stanley @ 2016-05-10 11:06 UTC (permalink / raw)
To: Daniel Lezcano, Thomas Gleixner, jonas.jensen-Re5JQEeQqe8AvxtiuMwx3w
Cc: devicetree-u79uwXL29TY76Z2rM5mHXA, Arnd Bergmann, Jeremy Kerr,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
Benjamin Herrenschmidt
Hi Daniel,
Here's a commit message for this patch. If you'd prefer me to resend
the entire series with this included then I can do that.
This patch abstracts the enable and disable register writes into their
own functions in preparation for future changes to use SoC specific
values for the writes.
> Signed-off-by: Joel Stanley <joel-U3u1mxZcP9KHXe+LvDLADg@public.gmane.org>
> ---
> drivers/clocksource/moxart_timer.c | 22 ++++++++++++++++------
> 1 file changed, 16 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/clocksource/moxart_timer.c b/drivers/clocksource/moxart_timer.c
> index 19857af651c1..b00b2b21e8b3 100644
> --- a/drivers/clocksource/moxart_timer.c
> +++ b/drivers/clocksource/moxart_timer.c
> @@ -58,15 +58,25 @@
> static void __iomem *base;
> static unsigned int clock_count_per_tick;
>
> -static int moxart_shutdown(struct clock_event_device *evt)
> +static inline void moxart_disable(struct clock_event_device *evt)
> {
> writel(TIMER1_DISABLE, base + TIMER_CR);
> +}
> +
> +static inline void moxart_enable(struct clock_event_device *evt)
> +{
> + writel(TIMER1_ENABLE, base + TIMER_CR);
> +}
> +
> +static int moxart_shutdown(struct clock_event_device *evt)
> +{
> + moxart_disable(evt);
> return 0;
> }
>
> static int moxart_set_oneshot(struct clock_event_device *evt)
> {
> - writel(TIMER1_DISABLE, base + TIMER_CR);
> + moxart_disable(evt);
> writel(~0, base + TIMER1_BASE + REG_LOAD);
> return 0;
> }
> @@ -74,21 +84,21 @@ static int moxart_set_oneshot(struct clock_event_device *evt)
> static int moxart_set_periodic(struct clock_event_device *evt)
> {
> writel(clock_count_per_tick, base + TIMER1_BASE + REG_LOAD);
> - writel(TIMER1_ENABLE, base + TIMER_CR);
> + moxart_enable(evt);
> return 0;
> }
>
> static int moxart_clkevt_next_event(unsigned long cycles,
> - struct clock_event_device *unused)
> + struct clock_event_device *evt)
> {
> u32 u;
>
> - writel(TIMER1_DISABLE, base + TIMER_CR);
> + moxart_disable(evt);
>
> u = readl(base + TIMER1_BASE + REG_COUNT) - cycles;
> writel(u, base + TIMER1_BASE + REG_MATCH1);
>
> - writel(TIMER1_ENABLE, base + TIMER_CR);
> + moxart_enable(evt);
>
> return 0;
> }
> --
> 2.8.1
>
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
--
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] 24+ messages in thread
* [PATCH 2/4] drivers/clocksource/moxart: Refactor enable/disable
@ 2016-05-10 11:06 ` Joel Stanley
0 siblings, 0 replies; 24+ messages in thread
From: Joel Stanley @ 2016-05-10 11:06 UTC (permalink / raw)
To: linux-arm-kernel
Hi Daniel,
Here's a commit message for this patch. If you'd prefer me to resend
the entire series with this included then I can do that.
This patch abstracts the enable and disable register writes into their
own functions in preparation for future changes to use SoC specific
values for the writes.
> Signed-off-by: Joel Stanley <joel@jms.id.au>
> ---
> drivers/clocksource/moxart_timer.c | 22 ++++++++++++++++------
> 1 file changed, 16 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/clocksource/moxart_timer.c b/drivers/clocksource/moxart_timer.c
> index 19857af651c1..b00b2b21e8b3 100644
> --- a/drivers/clocksource/moxart_timer.c
> +++ b/drivers/clocksource/moxart_timer.c
> @@ -58,15 +58,25 @@
> static void __iomem *base;
> static unsigned int clock_count_per_tick;
>
> -static int moxart_shutdown(struct clock_event_device *evt)
> +static inline void moxart_disable(struct clock_event_device *evt)
> {
> writel(TIMER1_DISABLE, base + TIMER_CR);
> +}
> +
> +static inline void moxart_enable(struct clock_event_device *evt)
> +{
> + writel(TIMER1_ENABLE, base + TIMER_CR);
> +}
> +
> +static int moxart_shutdown(struct clock_event_device *evt)
> +{
> + moxart_disable(evt);
> return 0;
> }
>
> static int moxart_set_oneshot(struct clock_event_device *evt)
> {
> - writel(TIMER1_DISABLE, base + TIMER_CR);
> + moxart_disable(evt);
> writel(~0, base + TIMER1_BASE + REG_LOAD);
> return 0;
> }
> @@ -74,21 +84,21 @@ static int moxart_set_oneshot(struct clock_event_device *evt)
> static int moxart_set_periodic(struct clock_event_device *evt)
> {
> writel(clock_count_per_tick, base + TIMER1_BASE + REG_LOAD);
> - writel(TIMER1_ENABLE, base + TIMER_CR);
> + moxart_enable(evt);
> return 0;
> }
>
> static int moxart_clkevt_next_event(unsigned long cycles,
> - struct clock_event_device *unused)
> + struct clock_event_device *evt)
> {
> u32 u;
>
> - writel(TIMER1_DISABLE, base + TIMER_CR);
> + moxart_disable(evt);
>
> u = readl(base + TIMER1_BASE + REG_COUNT) - cycles;
> writel(u, base + TIMER1_BASE + REG_MATCH1);
>
> - writel(TIMER1_ENABLE, base + TIMER_CR);
> + moxart_enable(evt);
>
> return 0;
> }
> --
> 2.8.1
>
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH 2/4] drivers/clocksource/moxart: Refactor enable/disable
2016-05-10 11:06 ` Joel Stanley
@ 2016-05-10 13:04 ` Daniel Lezcano
-1 siblings, 0 replies; 24+ messages in thread
From: Daniel Lezcano @ 2016-05-10 13:04 UTC (permalink / raw)
To: Joel Stanley
Cc: Thomas Gleixner, jonas.jensen-Re5JQEeQqe8AvxtiuMwx3w,
devicetree-u79uwXL29TY76Z2rM5mHXA, Arnd Bergmann, Jeremy Kerr,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
Benjamin Herrenschmidt
On Tue, May 10, 2016 at 08:36:50PM +0930, Joel Stanley wrote:
> Hi Daniel,
>
> Here's a commit message for this patch. If you'd prefer me to resend
> the entire series with this included then I can do that.
No, it is ok (except if there are comments on the patches before I merge
them).
> This patch abstracts the enable and disable register writes into their
> own functions in preparation for future changes to use SoC specific
> values for the writes.
Thanks !
-- Daniel
--
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] 24+ messages in thread
* [PATCH 2/4] drivers/clocksource/moxart: Refactor enable/disable
@ 2016-05-10 13:04 ` Daniel Lezcano
0 siblings, 0 replies; 24+ messages in thread
From: Daniel Lezcano @ 2016-05-10 13:04 UTC (permalink / raw)
To: linux-arm-kernel
On Tue, May 10, 2016 at 08:36:50PM +0930, Joel Stanley wrote:
> Hi Daniel,
>
> Here's a commit message for this patch. If you'd prefer me to resend
> the entire series with this included then I can do that.
No, it is ok (except if there are comments on the patches before I merge
them).
> This patch abstracts the enable and disable register writes into their
> own functions in preparation for future changes to use SoC specific
> values for the writes.
Thanks !
-- Daniel
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH 2/4] drivers/clocksource/moxart: Refactor enable/disable
2016-05-10 13:04 ` Daniel Lezcano
@ 2016-07-20 5:17 ` Joel Stanley
-1 siblings, 0 replies; 24+ messages in thread
From: Joel Stanley @ 2016-07-20 5:17 UTC (permalink / raw)
To: Daniel Lezcano
Cc: Thomas Gleixner, Jonas Jensen, devicetree-u79uwXL29TY76Z2rM5mHXA,
Arnd Bergmann, Jeremy Kerr,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
Benjamin Herrenschmidt
Hello Daniel,
On Tue, May 10, 2016 at 10:34 PM, Daniel Lezcano
<daniel.lezcano-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> wrote:
> On Tue, May 10, 2016 at 08:36:50PM +0930, Joel Stanley wrote:
>> Hi Daniel,
>>
>> Here's a commit message for this patch. If you'd prefer me to resend
>> the entire series with this included then I can do that.
>
> No, it is ok (except if there are comments on the patches before I merge
> them).
I couldn't find this in your tree. Any chance I could get it merged now?
Cheers,
Joel
>
>> This patch abstracts the enable and disable register writes into their
>> own functions in preparation for future changes to use SoC specific
>> values for the writes.
--
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] 24+ messages in thread
* [PATCH 2/4] drivers/clocksource/moxart: Refactor enable/disable
@ 2016-07-20 5:17 ` Joel Stanley
0 siblings, 0 replies; 24+ messages in thread
From: Joel Stanley @ 2016-07-20 5:17 UTC (permalink / raw)
To: linux-arm-kernel
Hello Daniel,
On Tue, May 10, 2016 at 10:34 PM, Daniel Lezcano
<daniel.lezcano@linaro.org> wrote:
> On Tue, May 10, 2016 at 08:36:50PM +0930, Joel Stanley wrote:
>> Hi Daniel,
>>
>> Here's a commit message for this patch. If you'd prefer me to resend
>> the entire series with this included then I can do that.
>
> No, it is ok (except if there are comments on the patches before I merge
> them).
I couldn't find this in your tree. Any chance I could get it merged now?
Cheers,
Joel
>
>> This patch abstracts the enable and disable register writes into their
>> own functions in preparation for future changes to use SoC specific
>> values for the writes.
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH 2/4] drivers/clocksource/moxart: Refactor enable/disable
2016-07-20 5:17 ` Joel Stanley
@ 2016-07-20 8:14 ` Daniel Lezcano
-1 siblings, 0 replies; 24+ messages in thread
From: Daniel Lezcano @ 2016-07-20 8:14 UTC (permalink / raw)
To: Joel Stanley
Cc: Thomas Gleixner, Jonas Jensen, devicetree-u79uwXL29TY76Z2rM5mHXA,
Arnd Bergmann, Jeremy Kerr,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
Benjamin Herrenschmidt
On Wed, Jul 20, 2016 at 02:47:15PM +0930, Joel Stanley wrote:
> Hello Daniel,
>
> On Tue, May 10, 2016 at 10:34 PM, Daniel Lezcano
> <daniel.lezcano-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> wrote:
> > On Tue, May 10, 2016 at 08:36:50PM +0930, Joel Stanley wrote:
> >> Hi Daniel,
> >>
> >> Here's a commit message for this patch. If you'd prefer me to resend
> >> the entire series with this included then I can do that.
> >
> > No, it is ok (except if there are comments on the patches before I merge
> > them).
>
> I couldn't find this in your tree. Any chance I could get it merged now?
Hi Joel,
actually I forgot to include your patchset which is no longer applying
correctly and the conflicts are not trivials (easy but not trivial). It is a
bit late to ask for a last minute pull. Sorry for that.
Please respin and resend your patchset, I will include it in my tree
immediately so that won't happen again. The patch 1/4 is no longer needed.
If there is a really urgent need of this series, please let us know and
Thomas can take a decision accordingly.
-- Daniel
--
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] 24+ messages in thread
* [PATCH 2/4] drivers/clocksource/moxart: Refactor enable/disable
@ 2016-07-20 8:14 ` Daniel Lezcano
0 siblings, 0 replies; 24+ messages in thread
From: Daniel Lezcano @ 2016-07-20 8:14 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, Jul 20, 2016 at 02:47:15PM +0930, Joel Stanley wrote:
> Hello Daniel,
>
> On Tue, May 10, 2016 at 10:34 PM, Daniel Lezcano
> <daniel.lezcano@linaro.org> wrote:
> > On Tue, May 10, 2016 at 08:36:50PM +0930, Joel Stanley wrote:
> >> Hi Daniel,
> >>
> >> Here's a commit message for this patch. If you'd prefer me to resend
> >> the entire series with this included then I can do that.
> >
> > No, it is ok (except if there are comments on the patches before I merge
> > them).
>
> I couldn't find this in your tree. Any chance I could get it merged now?
Hi Joel,
actually I forgot to include your patchset which is no longer applying
correctly and the conflicts are not trivials (easy but not trivial). It is a
bit late to ask for a last minute pull. Sorry for that.
Please respin and resend your patchset, I will include it in my tree
immediately so that won't happen again. The patch 1/4 is no longer needed.
If there is a really urgent need of this series, please let us know and
Thomas can take a decision accordingly.
-- Daniel
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH 2/4] drivers/clocksource/moxart: Refactor enable/disable
2016-07-20 8:14 ` Daniel Lezcano
@ 2016-07-20 8:22 ` Benjamin Herrenschmidt
-1 siblings, 0 replies; 24+ messages in thread
From: Benjamin Herrenschmidt @ 2016-07-20 8:22 UTC (permalink / raw)
To: Daniel Lezcano, Joel Stanley
Cc: Thomas Gleixner, Jonas Jensen, devicetree-u79uwXL29TY76Z2rM5mHXA,
Arnd Bergmann, Jeremy Kerr,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r
On Wed, 2016-07-20 at 10:14 +0200, Daniel Lezcano wrote:
>
> actually I forgot to include your patchset which is no longer applying
> correctly and the conflicts are not trivials (easy but not trivial). It is a
> bit late to ask for a last minute pull. Sorry for that.
>
> Please respin and resend your patchset, I will include it in my tree
> immediately so that won't happen again. The patch 1/4 is no longer needed.
>
> If there is a really urgent need of this series, please let us know and
> Thomas can take a decision accordingly.
I think all the other bits to have basic support for the Aspeed SoC are
in except this one, so it would be nice for this to make the merge
window...
Cheers,
Ben.
--
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] 24+ messages in thread
* [PATCH 2/4] drivers/clocksource/moxart: Refactor enable/disable
@ 2016-07-20 8:22 ` Benjamin Herrenschmidt
0 siblings, 0 replies; 24+ messages in thread
From: Benjamin Herrenschmidt @ 2016-07-20 8:22 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, 2016-07-20 at 10:14 +0200, Daniel Lezcano wrote:
>
> actually I forgot to include your patchset which is no longer applying?
> correctly and the conflicts are not trivials (easy but not trivial). It is a?
> bit late to ask for a last minute pull. Sorry for that.
>
> Please respin and resend your patchset, I will include it in my tree?
> immediately so that won't happen again. The patch 1/4 is no longer needed.
>
> If there is a really urgent need of this series, please let us know and?
> Thomas can take a decision accordingly.
I think all the other bits to have basic support for the Aspeed SoC are
in except this one, so it would be nice for this to make the merge
window...
Cheers,
Ben.
^ permalink raw reply [flat|nested] 24+ messages in thread
end of thread, other threads:[~2016-07-20 8:22 UTC | newest]
Thread overview: 24+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-05-09 12:32 [PATCH 0/4] clocksource: Add support for Aspeed timer Joel Stanley
2016-05-09 12:32 ` Joel Stanley
2016-05-09 12:32 ` [PATCH 3/4] drivers/clocksource/moxart: Use struct to hold state Joel Stanley
2016-05-09 12:32 ` Joel Stanley
[not found] ` <1462797169-14512-1-git-send-email-joel-U3u1mxZcP9KHXe+LvDLADg@public.gmane.org>
2016-05-09 12:32 ` [PATCH 1/4] drivers/clocksouree/moxart: Add kbuild symbol Joel Stanley
2016-05-09 12:32 ` Joel Stanley
2016-05-09 12:32 ` [PATCH 2/4] drivers/clocksource/moxart: Refactor enable/disable Joel Stanley
2016-05-09 12:32 ` Joel Stanley
[not found] ` <1462797169-14512-3-git-send-email-joel-U3u1mxZcP9KHXe+LvDLADg@public.gmane.org>
2016-05-10 11:06 ` Joel Stanley
2016-05-10 11:06 ` Joel Stanley
[not found] ` <CACPK8XfJ2e1kr-WftidvqsoYew7LqPiNo0sw7opgh8UH=3q_3A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-05-10 13:04 ` Daniel Lezcano
2016-05-10 13:04 ` Daniel Lezcano
[not found] ` <20160510130414.GE14952-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2016-07-20 5:17 ` Joel Stanley
2016-07-20 5:17 ` Joel Stanley
[not found] ` <CACPK8XdK35p9rxr8et58omvQExjdri20yCq91LGocnPRYpGLQQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-07-20 8:14 ` Daniel Lezcano
2016-07-20 8:14 ` Daniel Lezcano
[not found] ` <20160720081400.GA2705-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2016-07-20 8:22 ` Benjamin Herrenschmidt
2016-07-20 8:22 ` Benjamin Herrenschmidt
2016-05-09 12:32 ` [PATCH 4/4] drivers/clocksource/moxart: Add Aspeed support Joel Stanley
2016-05-09 12:32 ` Joel Stanley
[not found] ` <1462797169-14512-5-git-send-email-joel-U3u1mxZcP9KHXe+LvDLADg@public.gmane.org>
2016-05-09 20:36 ` Rob Herring
2016-05-09 20:36 ` Rob Herring
2016-05-10 10:22 ` [PATCH 0/4] clocksource: Add support for Aspeed timer Daniel Lezcano
2016-05-10 10:22 ` Daniel Lezcano
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.