All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Andreas Färber" <afaerber@suse.de>
To: arm@kernel.org
Cc: linux-arm-kernel@lists.infradead.org, mp-cs@actions-semi.com,
	96boards@ucrobotics.com, support@lemaker.org,
	linux-kernel@vger.kernel.org, "Andreas Färber" <afaerber@suse.de>,
	"Daniel Lezcano" <daniel.lezcano@linaro.org>,
	"Thomas Gleixner" <tglx@linutronix.de>
Subject: [PATCH v3 05/25] clocksource: owl: Add S900 support
Date: Tue, 28 Feb 2017 07:35:15 +0100	[thread overview]
Message-ID: <20170228063535.32069-6-afaerber@suse.de> (raw)
In-Reply-To: <20170228063535.32069-1-afaerber@suse.de>

The Actions Semi S900 SoC provides four 32-bit timers, TIMER0/1/2/3,
but no 2Hz timers.

Deal with the S500 having less timers.

An S900 datasheet can be found in 96Boards documentation:
https://github.com/96boards/documentation/blob/master/ConsumerEdition/Bubblegum-96/HardwareDocs/SoC_bubblegum96.pdf

Signed-off-by: Andreas Färber <afaerber@suse.de>
---
 v3: new
 
 drivers/clocksource/owl-timer.c | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/drivers/clocksource/owl-timer.c b/drivers/clocksource/owl-timer.c
index 1b1e26d..babbfd5 100644
--- a/drivers/clocksource/owl-timer.c
+++ b/drivers/clocksource/owl-timer.c
@@ -31,7 +31,7 @@
 #define OWL_Tx_CTL_INTEN	BIT(1)
 #define OWL_Tx_CTL_EN		BIT(2)
 
-#define OWL_MAX_Tx 2
+#define OWL_MAX_Tx 4
 
 struct owl_timer_info {
 	int timer_offset[OWL_MAX_Tx];
@@ -43,7 +43,8 @@ static void __iomem *owl_timer_base;
 
 static inline void __iomem *owl_timer_get_base(unsigned timer_nr)
 {
-	if (timer_nr >= OWL_MAX_Tx)
+	if (timer_nr >= OWL_MAX_Tx ||
+	    owl_timer_info->timer_offset[timer_nr] == -1)
 		return NULL;
 
 	return owl_timer_base + owl_timer_info->timer_offset[timer_nr];
@@ -126,10 +127,20 @@ static irqreturn_t owl_timer1_interrupt(int irq, void *dev_id)
 static const struct owl_timer_info s500_timer_info = {
 	.timer_offset[0] = 0x08,
 	.timer_offset[1] = 0x14,
+	.timer_offset[2] = -1,
+	.timer_offset[3] = -1,
+};
+
+static const struct owl_timer_info s900_timer_info = {
+	.timer_offset[0] = 0x08,
+	.timer_offset[1] = 0x14,
+	.timer_offset[2] = 0x30,
+	.timer_offset[3] = 0x3c,
 };
 
 static const struct of_device_id owl_timer_of_matches[] = {
 	{ .compatible = "actions,s500-timer", .data = &s500_timer_info },
+	{ .compatible = "actions,s900-timer", .data = &s900_timer_info },
 	{ }
 };
 
@@ -191,3 +202,4 @@ static int __init owl_timer_init(struct device_node *node)
 	return 0;
 }
 CLOCKSOURCE_OF_DECLARE(owl_s500, "actions,s500-timer", owl_timer_init);
+CLOCKSOURCE_OF_DECLARE(owl_s900, "actions,s900-timer", owl_timer_init);
-- 
2.10.2

WARNING: multiple messages have this Message-ID (diff)
From: afaerber@suse.de (Andreas Färber)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3 05/25] clocksource: owl: Add S900 support
Date: Tue, 28 Feb 2017 07:35:15 +0100	[thread overview]
Message-ID: <20170228063535.32069-6-afaerber@suse.de> (raw)
In-Reply-To: <20170228063535.32069-1-afaerber@suse.de>

The Actions Semi S900 SoC provides four 32-bit timers, TIMER0/1/2/3,
but no 2Hz timers.

Deal with the S500 having less timers.

An S900 datasheet can be found in 96Boards documentation:
https://github.com/96boards/documentation/blob/master/ConsumerEdition/Bubblegum-96/HardwareDocs/SoC_bubblegum96.pdf

Signed-off-by: Andreas F?rber <afaerber@suse.de>
---
 v3: new
 
 drivers/clocksource/owl-timer.c | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/drivers/clocksource/owl-timer.c b/drivers/clocksource/owl-timer.c
index 1b1e26d..babbfd5 100644
--- a/drivers/clocksource/owl-timer.c
+++ b/drivers/clocksource/owl-timer.c
@@ -31,7 +31,7 @@
 #define OWL_Tx_CTL_INTEN	BIT(1)
 #define OWL_Tx_CTL_EN		BIT(2)
 
-#define OWL_MAX_Tx 2
+#define OWL_MAX_Tx 4
 
 struct owl_timer_info {
 	int timer_offset[OWL_MAX_Tx];
@@ -43,7 +43,8 @@ static void __iomem *owl_timer_base;
 
 static inline void __iomem *owl_timer_get_base(unsigned timer_nr)
 {
-	if (timer_nr >= OWL_MAX_Tx)
+	if (timer_nr >= OWL_MAX_Tx ||
+	    owl_timer_info->timer_offset[timer_nr] == -1)
 		return NULL;
 
 	return owl_timer_base + owl_timer_info->timer_offset[timer_nr];
@@ -126,10 +127,20 @@ static irqreturn_t owl_timer1_interrupt(int irq, void *dev_id)
 static const struct owl_timer_info s500_timer_info = {
 	.timer_offset[0] = 0x08,
 	.timer_offset[1] = 0x14,
+	.timer_offset[2] = -1,
+	.timer_offset[3] = -1,
+};
+
+static const struct owl_timer_info s900_timer_info = {
+	.timer_offset[0] = 0x08,
+	.timer_offset[1] = 0x14,
+	.timer_offset[2] = 0x30,
+	.timer_offset[3] = 0x3c,
 };
 
 static const struct of_device_id owl_timer_of_matches[] = {
 	{ .compatible = "actions,s500-timer", .data = &s500_timer_info },
+	{ .compatible = "actions,s900-timer", .data = &s900_timer_info },
 	{ }
 };
 
@@ -191,3 +202,4 @@ static int __init owl_timer_init(struct device_node *node)
 	return 0;
 }
 CLOCKSOURCE_OF_DECLARE(owl_s500, "actions,s500-timer", owl_timer_init);
+CLOCKSOURCE_OF_DECLARE(owl_s900, "actions,s900-timer", owl_timer_init);
-- 
2.10.2

  parent reply	other threads:[~2017-02-28  6:58 UTC|newest]

Thread overview: 108+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-02-28  6:35 [PATCH v3 00/25] ARM: Initial Actions Semi S500 and S900 enablement Andreas Färber
2017-02-28  6:35 ` Andreas Färber
2017-02-28  6:35 ` Andreas Färber
2017-02-28  6:35 ` [PATCH v3 01/25] dt-bindings: Add vendor prefix for Actions Semi Andreas Färber
2017-02-28  6:35   ` Andreas Färber
2017-02-28  6:35   ` Andreas Färber
2017-02-28  6:35 ` [PATCH v3 02/25] dt-bindings: arm: Document Actions Semi S500 Andreas Färber
2017-02-28  6:35   ` Andreas Färber
2017-02-28  6:35   ` Andreas Färber
2017-02-28  6:35 ` [PATCH v3 03/25] dt-bindings: timer: Document Owl timer Andreas Färber
2017-02-28  6:35   ` Andreas Färber
2017-02-28  6:35   ` Andreas Färber
2017-02-28 12:39   ` Mark Rutland
2017-02-28 12:39     ` Mark Rutland
2017-02-28 12:39     ` Mark Rutland
2017-03-03  6:20     ` Rob Herring
2017-03-03  6:20       ` Rob Herring
2017-03-03  6:20       ` Rob Herring
2017-03-03 21:36       ` Andreas Färber
2017-03-03 21:36         ` Andreas Färber
2017-03-03 21:36         ` Andreas Färber
2017-02-28  6:35 ` [PATCH v3 04/25] clocksource: Add " Andreas Färber
2017-02-28  6:35   ` Andreas Färber
2017-02-28 16:47   ` Daniel Lezcano
2017-02-28 16:47     ` Daniel Lezcano
2017-02-28 17:08     ` Andreas Färber
2017-02-28 17:08       ` Andreas Färber
2017-02-28 17:39       ` Daniel Lezcano
2017-02-28 17:39         ` Daniel Lezcano
2017-02-28 18:01         ` Andreas Färber
2017-02-28 18:01           ` Andreas Färber
2017-02-28 18:56           ` Thomas Gleixner
2017-02-28 18:56             ` Thomas Gleixner
2017-02-28 18:53         ` Thomas Gleixner
2017-02-28 18:53           ` Thomas Gleixner
2017-02-28  6:35 ` Andreas Färber [this message]
2017-02-28  6:35   ` [PATCH v3 05/25] clocksource: owl: Add S900 support Andreas Färber
2017-02-28 17:16   ` Andreas Färber
2017-02-28 17:16     ` Andreas Färber
2017-02-28 17:42     ` Daniel Lezcano
2017-02-28 17:42       ` Daniel Lezcano
2017-02-28  6:35 ` [PATCH v3 06/25] ARM: Prepare Actions Semi S500 Andreas Färber
2017-02-28  6:35   ` Andreas Färber
2017-02-28  6:35 ` [PATCH v3 07/25] ARM64: Prepare Actions Semi S900 Andreas Färber
2017-02-28  6:35   ` Andreas Färber
2017-02-28  6:35 ` [PATCH v3 08/25] dt-bindings: serial: Document Actions Semi Owl UARTs Andreas Färber
2017-02-28  6:35   ` Andreas Färber
2017-02-28  6:35   ` Andreas Färber
2017-02-28  6:35 ` [PATCH v3 09/25] tty: serial: Add Actions Semi Owl UART earlycon Andreas Färber
2017-02-28  6:35   ` Andreas Färber
2017-02-28  6:35   ` Andreas Färber
2017-02-28  6:35 ` [PATCH v3 10/25] Documentation: kernel-parameters: Document owl earlycon Andreas Färber
2017-02-28  6:35   ` Andreas Färber
2017-02-28  6:35 ` [PATCH v3 11/25] ARM: dts: Add Actions Semi S500 and LeMaker Guitar Andreas Färber
2017-02-28  6:35   ` Andreas Färber
2017-02-28  6:35   ` Andreas Färber
2017-02-28 12:32   ` Mark Rutland
2017-02-28 12:32     ` Mark Rutland
2017-02-28 12:32     ` Mark Rutland
2017-02-28 15:13     ` Andreas Färber
2017-02-28 15:13       ` Andreas Färber
2017-02-28 15:13       ` Andreas Färber
2017-03-01 18:43       ` Mark Rutland
2017-03-01 18:43         ` Mark Rutland
2017-03-01 18:43         ` Mark Rutland
2017-02-28  6:35 ` [PATCH v3 12/25] dt-bindings: Add vendor prefix for uCRobotics Andreas Färber
2017-02-28  6:35   ` Andreas Färber
2017-02-28  6:35   ` Andreas Färber
2017-02-28  6:35 ` [PATCH v3 13/25] dt-bindings: arm: Document Actions Semi S900 Andreas Färber
2017-02-28  6:35   ` Andreas Färber
2017-02-28  6:35   ` Andreas Färber
2017-02-28  6:35 ` [PATCH v3 14/25] ARM64: dts: Add Actions Semi S900 and Bubblegum-96 Andreas Färber
2017-02-28  6:35   ` Andreas Färber
2017-02-28  6:35   ` Andreas Färber
2017-02-28  6:35 ` [PATCH v3 15/25] MAINTAINERS: Add Actions Semi Owl section Andreas Färber
2017-02-28  6:35   ` Andreas Färber
2017-02-28  6:35 ` [PATCH v3 16/25] tty: serial: owl: Implement console driver Andreas Färber
2017-02-28  6:35   ` Andreas Färber
2017-02-28  6:35 ` [PATCH v3 17/25] ARM64: dts: actions: s900-bubblegum-96: Add fake uart5 clock Andreas Färber
2017-02-28  6:35   ` Andreas Färber
2017-02-28  6:35 ` [PATCH v3 18/25] ARM: dts: s500-guitar-bb-rev-b: Add fake uart3 clock Andreas Färber
2017-02-28  6:35   ` Andreas Färber
2017-02-28  6:35 ` [PATCH v3 19/25] dt-bindings: arm: cpus: Add S500 enable-method Andreas Färber
2017-02-28  6:35   ` Andreas Färber
2017-03-03  6:21   ` Rob Herring
2017-03-03  6:21     ` Rob Herring
2017-03-03  6:21     ` Rob Herring
2017-02-28  6:35 ` [PATCH v3 20/25] ARM: owl: Implement CPU enable-method for S500 Andreas Färber
2017-02-28  6:35   ` Andreas Färber
2017-03-01  7:19   ` kbuild test robot
2017-03-01  7:19     ` kbuild test robot
2017-03-01 10:40     ` Andreas Färber
2017-03-01 10:40       ` Andreas Färber
2017-03-03 23:00       ` Andreas Färber
2017-03-03 23:00         ` Andreas Färber
2017-02-28  6:35 ` [PATCH v3 21/25] ARM: dts: s500: Set CPU enable-method Andreas Färber
2017-02-28  6:35   ` Andreas Färber
2017-02-28  6:35 ` [PATCH v3 22/25] dt-bindings: power: Add Owl SPS power domains Andreas Färber
2017-02-28  6:35   ` Andreas Färber
2017-03-03  6:21   ` Rob Herring
2017-03-03  6:21     ` Rob Herring
2017-03-03  6:21     ` Rob Herring
2017-02-28  6:35 ` [PATCH v3 23/25] soc: actions: Add Owl SPS Andreas Färber
2017-02-28  6:35   ` Andreas Färber
2017-02-28  6:35 ` [PATCH v3 24/25] ARM: dts: s500: Add SPS node Andreas Färber
2017-02-28  6:35   ` Andreas Färber
2017-02-28  6:35 ` [PATCH v3 25/25] ARM: owl: smp: Reimplement SPS power-gating for CPU2 and CPU3 Andreas Färber
2017-02-28  6:35   ` Andreas Färber

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170228063535.32069-6-afaerber@suse.de \
    --to=afaerber@suse.de \
    --cc=96boards@ucrobotics.com \
    --cc=arm@kernel.org \
    --cc=daniel.lezcano@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mp-cs@actions-semi.com \
    --cc=support@lemaker.org \
    --cc=tglx@linutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.