All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.