All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alexandre Belloni <alexandre.belloni-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
To: Daniel Lezcano <daniel.lezcano-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
Cc: Nicolas Ferre
	<nicolas.ferre-AIFe0yeh4nAAvxtiuMwx3w@public.gmane.org>,
	Boris Brezillon
	<boris.brezillon-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>,
	Jean-Christophe Plagniol-Villard
	<plagnioj-sclMFOaUSTBWk0Htik3J/w@public.gmane.org>,
	Thomas Gleixner <tglx-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org>,
	Lee Jones <lee.jones-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
	Wim Van Sebroeck <wim-IQzOog9fTRqzQB+pC5nmwQ@public.gmane.org>,
	Guenter Roeck <linux-0h96xk9xTtrk1uMJSBkQmQ@public.gmane.org>,
	Sebastian Reichel <sre-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
	Dmitry Eremin-Solenikov
	<dbaryshkov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	linux-watchdog-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-pm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH v4 8/9] clocksource: atmel-st: use syscon/regmap
Date: Fri, 6 Mar 2015 09:47:27 +0100	[thread overview]
Message-ID: <20150306084727.GH3989@piout.net> (raw)
In-Reply-To: <54F96896.6040204-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>

On 06/03/2015 at 09:43:02 +0100, Daniel Lezcano wrote :
> On 03/05/2015 04:49 PM, Alexandre Belloni wrote:
> >The register range from the system timer is also used by the watchdog driver.
> >Use a regmap to handle concurrent accesses.
> >
> >Signed-off-by: Alexandre Belloni <alexandre.belloni-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
> >Acked-by: Boris Brezillon <boris.brezillon-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
> >---
> >  drivers/clocksource/timer-atmel-st.c | 99 ++++++++++++++----------------------
> >  1 file changed, 37 insertions(+), 62 deletions(-)
> >
> >diff --git a/drivers/clocksource/timer-atmel-st.c b/drivers/clocksource/timer-atmel-st.c
> >index 7d062ab32674..c4a52e32675e 100644
> >--- a/drivers/clocksource/timer-atmel-st.c
> >+++ b/drivers/clocksource/timer-atmel-st.c
> >@@ -24,19 +24,19 @@
> >  #include <linux/irq.h>
> >  #include <linux/clockchips.h>
> >  #include <linux/export.h>
> >-#include <linux/of.h>
> >-#include <linux/of_address.h>
> >+#include <linux/mfd/syscon.h>
> >+#include <linux/mfd/syscon/atmel-st.h>
> >  #include <linux/of_irq.h>
> >+#include <linux/regmap.h>
> >
> >  #include <asm/mach/time.h>
> >
> >-#include <mach/at91_st.h>
> >-#include <mach/hardware.h>
> >-
> >  static unsigned long last_crtr;
> >  static u32 irqmask;
> >  static struct clock_event_device clkevt;
> >+static struct regmap *regmap_st;
> >
> >+#define AT91_SLOW_CLOCK		32768
> >  #define RM9200_TIMER_LATCH	((AT91_SLOW_CLOCK + HZ/2) / HZ)
> >
> >  /*
> >@@ -46,11 +46,11 @@ static struct clock_event_device clkevt;
> >   */
> >  static inline unsigned long read_CRTR(void)
> >  {
> >-	unsigned long x1, x2;
> >+	unsigned int x1, x2;
> >
> >-	x1 = at91_st_read(AT91_ST_CRTR);
> >+	regmap_read(regmap_st, AT91_ST_CRTR, &x1);
> >  	do {
> >-		x2 = at91_st_read(AT91_ST_CRTR);
> >+		regmap_read(regmap_st, AT91_ST_CRTR, &x2);
> >  		if (x1 == x2)
> >  			break;
> >  		x1 = x2;
> >@@ -63,7 +63,10 @@ static inline unsigned long read_CRTR(void)
> >   */
> >  static irqreturn_t at91rm9200_timer_interrupt(int irq, void *dev_id)
> >  {
> >-	u32	sr = at91_st_read(AT91_ST_SR) & irqmask;
> >+	u32 sr;
> >+
> >+	regmap_read(regmap_st, AT91_ST_SR, &sr);
> >+	sr &= irqmask;
> >
> >  	/*
> >  	 * irqs should be disabled here, but as the irq is shared they are only
> >@@ -96,7 +99,7 @@ static struct irqaction at91rm9200_timer_irq = {
> >  	.name		= "at91_tick",
> >  	.flags		= IRQF_SHARED | IRQF_TIMER | IRQF_IRQPOLL,
> >  	.handler	= at91rm9200_timer_interrupt,
> >-	.irq		= NR_IRQS_LEGACY + AT91_ID_SYS,
> >+	.irq		= 0,
> 
> Is this change related to regmap ?
> 

It is related to the removing of hardware.h. I can do that in a separate
patch if you prefer.

> By the way, perhaps take the opportunity to replace setup_irq by request_irq
> (and check the return value) ?
> 

I tried and it fails, I didn't investigate yet.

-- 
Alexandre Belloni, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
--
To unsubscribe from this list: send the line "unsubscribe linux-watchdog" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

WARNING: multiple messages have this Message-ID (diff)
From: Alexandre Belloni <alexandre.belloni@free-electrons.com>
To: Daniel Lezcano <daniel.lezcano@linaro.org>
Cc: Nicolas Ferre <nicolas.ferre@atmel.com>,
	Boris Brezillon <boris.brezillon@free-electrons.com>,
	Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Lee Jones <lee.jones@linaro.org>,
	Wim Van Sebroeck <wim@iguana.be>,
	Guenter Roeck <linux@roeck-us.net>,
	Sebastian Reichel <sre@kernel.org>,
	Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>,
	linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-watchdog@vger.kernel.org, linux-pm@vger.kernel.org
Subject: Re: [PATCH v4 8/9] clocksource: atmel-st: use syscon/regmap
Date: Fri, 6 Mar 2015 09:47:27 +0100	[thread overview]
Message-ID: <20150306084727.GH3989@piout.net> (raw)
In-Reply-To: <54F96896.6040204@linaro.org>

On 06/03/2015 at 09:43:02 +0100, Daniel Lezcano wrote :
> On 03/05/2015 04:49 PM, Alexandre Belloni wrote:
> >The register range from the system timer is also used by the watchdog driver.
> >Use a regmap to handle concurrent accesses.
> >
> >Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
> >Acked-by: Boris Brezillon <boris.brezillon@free-electrons.com>
> >---
> >  drivers/clocksource/timer-atmel-st.c | 99 ++++++++++++++----------------------
> >  1 file changed, 37 insertions(+), 62 deletions(-)
> >
> >diff --git a/drivers/clocksource/timer-atmel-st.c b/drivers/clocksource/timer-atmel-st.c
> >index 7d062ab32674..c4a52e32675e 100644
> >--- a/drivers/clocksource/timer-atmel-st.c
> >+++ b/drivers/clocksource/timer-atmel-st.c
> >@@ -24,19 +24,19 @@
> >  #include <linux/irq.h>
> >  #include <linux/clockchips.h>
> >  #include <linux/export.h>
> >-#include <linux/of.h>
> >-#include <linux/of_address.h>
> >+#include <linux/mfd/syscon.h>
> >+#include <linux/mfd/syscon/atmel-st.h>
> >  #include <linux/of_irq.h>
> >+#include <linux/regmap.h>
> >
> >  #include <asm/mach/time.h>
> >
> >-#include <mach/at91_st.h>
> >-#include <mach/hardware.h>
> >-
> >  static unsigned long last_crtr;
> >  static u32 irqmask;
> >  static struct clock_event_device clkevt;
> >+static struct regmap *regmap_st;
> >
> >+#define AT91_SLOW_CLOCK		32768
> >  #define RM9200_TIMER_LATCH	((AT91_SLOW_CLOCK + HZ/2) / HZ)
> >
> >  /*
> >@@ -46,11 +46,11 @@ static struct clock_event_device clkevt;
> >   */
> >  static inline unsigned long read_CRTR(void)
> >  {
> >-	unsigned long x1, x2;
> >+	unsigned int x1, x2;
> >
> >-	x1 = at91_st_read(AT91_ST_CRTR);
> >+	regmap_read(regmap_st, AT91_ST_CRTR, &x1);
> >  	do {
> >-		x2 = at91_st_read(AT91_ST_CRTR);
> >+		regmap_read(regmap_st, AT91_ST_CRTR, &x2);
> >  		if (x1 == x2)
> >  			break;
> >  		x1 = x2;
> >@@ -63,7 +63,10 @@ static inline unsigned long read_CRTR(void)
> >   */
> >  static irqreturn_t at91rm9200_timer_interrupt(int irq, void *dev_id)
> >  {
> >-	u32	sr = at91_st_read(AT91_ST_SR) & irqmask;
> >+	u32 sr;
> >+
> >+	regmap_read(regmap_st, AT91_ST_SR, &sr);
> >+	sr &= irqmask;
> >
> >  	/*
> >  	 * irqs should be disabled here, but as the irq is shared they are only
> >@@ -96,7 +99,7 @@ static struct irqaction at91rm9200_timer_irq = {
> >  	.name		= "at91_tick",
> >  	.flags		= IRQF_SHARED | IRQF_TIMER | IRQF_IRQPOLL,
> >  	.handler	= at91rm9200_timer_interrupt,
> >-	.irq		= NR_IRQS_LEGACY + AT91_ID_SYS,
> >+	.irq		= 0,
> 
> Is this change related to regmap ?
> 

It is related to the removing of hardware.h. I can do that in a separate
patch if you prefer.

> By the way, perhaps take the opportunity to replace setup_irq by request_irq
> (and check the return value) ?
> 

I tried and it fails, I didn't investigate yet.

-- 
Alexandre Belloni, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

WARNING: multiple messages have this Message-ID (diff)
From: alexandre.belloni@free-electrons.com (Alexandre Belloni)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v4 8/9] clocksource: atmel-st: use syscon/regmap
Date: Fri, 6 Mar 2015 09:47:27 +0100	[thread overview]
Message-ID: <20150306084727.GH3989@piout.net> (raw)
In-Reply-To: <54F96896.6040204@linaro.org>

On 06/03/2015 at 09:43:02 +0100, Daniel Lezcano wrote :
> On 03/05/2015 04:49 PM, Alexandre Belloni wrote:
> >The register range from the system timer is also used by the watchdog driver.
> >Use a regmap to handle concurrent accesses.
> >
> >Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
> >Acked-by: Boris Brezillon <boris.brezillon@free-electrons.com>
> >---
> >  drivers/clocksource/timer-atmel-st.c | 99 ++++++++++++++----------------------
> >  1 file changed, 37 insertions(+), 62 deletions(-)
> >
> >diff --git a/drivers/clocksource/timer-atmel-st.c b/drivers/clocksource/timer-atmel-st.c
> >index 7d062ab32674..c4a52e32675e 100644
> >--- a/drivers/clocksource/timer-atmel-st.c
> >+++ b/drivers/clocksource/timer-atmel-st.c
> >@@ -24,19 +24,19 @@
> >  #include <linux/irq.h>
> >  #include <linux/clockchips.h>
> >  #include <linux/export.h>
> >-#include <linux/of.h>
> >-#include <linux/of_address.h>
> >+#include <linux/mfd/syscon.h>
> >+#include <linux/mfd/syscon/atmel-st.h>
> >  #include <linux/of_irq.h>
> >+#include <linux/regmap.h>
> >
> >  #include <asm/mach/time.h>
> >
> >-#include <mach/at91_st.h>
> >-#include <mach/hardware.h>
> >-
> >  static unsigned long last_crtr;
> >  static u32 irqmask;
> >  static struct clock_event_device clkevt;
> >+static struct regmap *regmap_st;
> >
> >+#define AT91_SLOW_CLOCK		32768
> >  #define RM9200_TIMER_LATCH	((AT91_SLOW_CLOCK + HZ/2) / HZ)
> >
> >  /*
> >@@ -46,11 +46,11 @@ static struct clock_event_device clkevt;
> >   */
> >  static inline unsigned long read_CRTR(void)
> >  {
> >-	unsigned long x1, x2;
> >+	unsigned int x1, x2;
> >
> >-	x1 = at91_st_read(AT91_ST_CRTR);
> >+	regmap_read(regmap_st, AT91_ST_CRTR, &x1);
> >  	do {
> >-		x2 = at91_st_read(AT91_ST_CRTR);
> >+		regmap_read(regmap_st, AT91_ST_CRTR, &x2);
> >  		if (x1 == x2)
> >  			break;
> >  		x1 = x2;
> >@@ -63,7 +63,10 @@ static inline unsigned long read_CRTR(void)
> >   */
> >  static irqreturn_t at91rm9200_timer_interrupt(int irq, void *dev_id)
> >  {
> >-	u32	sr = at91_st_read(AT91_ST_SR) & irqmask;
> >+	u32 sr;
> >+
> >+	regmap_read(regmap_st, AT91_ST_SR, &sr);
> >+	sr &= irqmask;
> >
> >  	/*
> >  	 * irqs should be disabled here, but as the irq is shared they are only
> >@@ -96,7 +99,7 @@ static struct irqaction at91rm9200_timer_irq = {
> >  	.name		= "at91_tick",
> >  	.flags		= IRQF_SHARED | IRQF_TIMER | IRQF_IRQPOLL,
> >  	.handler	= at91rm9200_timer_interrupt,
> >-	.irq		= NR_IRQS_LEGACY + AT91_ID_SYS,
> >+	.irq		= 0,
> 
> Is this change related to regmap ?
> 

It is related to the removing of hardware.h. I can do that in a separate
patch if you prefer.

> By the way, perhaps take the opportunity to replace setup_irq by request_irq
> (and check the return value) ?
> 

I tried and it fails, I didn't investigate yet.

-- 
Alexandre Belloni, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

  parent reply	other threads:[~2015-03-06  8:47 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-05 15:49 [PATCH v4 0/9] Atmel System Timer cleanups Alexandre Belloni
2015-03-05 15:49 ` Alexandre Belloni
2015-03-05 15:49 ` Alexandre Belloni
2015-03-05 15:49 ` [PATCH v4 1/9] ARM: at91/dt: declare atmel,at91rm9200-st as a syscon Alexandre Belloni
2015-03-05 15:49   ` Alexandre Belloni
2015-03-05 15:49 ` [PATCH v4 2/9] mfd: syscon: Add atmel system timer registers definition Alexandre Belloni
2015-03-05 15:49   ` Alexandre Belloni
2015-03-05 15:49   ` Alexandre Belloni
2015-03-06 10:58   ` Lee Jones
2015-03-06 10:58     ` Lee Jones
2015-03-06 10:58     ` Lee Jones
2015-03-05 15:49 ` [PATCH v4 3/9] watchdog: at91rm9200: use the system timer syscon Alexandre Belloni
2015-03-05 15:49   ` Alexandre Belloni
2015-03-09 15:33   ` [v4,3/9] " Guenter Roeck
2015-03-09 15:33     ` Guenter Roeck
2015-03-05 15:49 ` [PATCH v4 4/9] power: reset: Add AT91RM9200 reset driver Alexandre Belloni
2015-03-05 15:49   ` Alexandre Belloni
2015-03-05 19:49   ` Paul Bolle
2015-03-05 19:49     ` Paul Bolle
2015-03-05 20:34     ` Alexandre Belloni
2015-03-05 20:34       ` Alexandre Belloni
2015-03-05 20:34       ` Alexandre Belloni
2015-03-05 15:49 ` [PATCH v4 5/9] ARM: at91: at91rm9200: remove deprecated arm_pm_restart Alexandre Belloni
2015-03-05 15:49   ` Alexandre Belloni
2015-03-05 15:49 ` [PATCH v4 6/9] ARM: at91: time: move the system timer driver to drivers/clocksource Alexandre Belloni
2015-03-05 15:49   ` Alexandre Belloni
     [not found]   ` <1425570594-13124-7-git-send-email-alexandre.belloni-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
2015-03-05 19:41     ` Paul Bolle
2015-03-05 19:41       ` Paul Bolle
2015-03-05 19:41       ` Paul Bolle
2015-03-05 19:47       ` Alexandre Belloni
2015-03-05 19:47         ` Alexandre Belloni
2015-03-05 19:47         ` Alexandre Belloni
2015-03-06  8:36     ` Daniel Lezcano
2015-03-06  8:36       ` Daniel Lezcano
2015-03-06  8:36       ` Daniel Lezcano
2015-03-06  8:36       ` Daniel Lezcano
2015-03-05 15:49 ` [PATCH v4 7/9] clocksource: atmel-st: properly initialize driver Alexandre Belloni
2015-03-05 15:49   ` Alexandre Belloni
2015-03-06  8:38   ` Daniel Lezcano
2015-03-06  8:38     ` Daniel Lezcano
2015-03-06  8:38     ` Daniel Lezcano
2015-03-05 15:49 ` [PATCH v4 8/9] clocksource: atmel-st: use syscon/regmap Alexandre Belloni
2015-03-05 15:49   ` Alexandre Belloni
     [not found]   ` <1425570594-13124-9-git-send-email-alexandre.belloni-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
2015-03-06  8:43     ` Daniel Lezcano
2015-03-06  8:43       ` Daniel Lezcano
2015-03-06  8:43       ` Daniel Lezcano
2015-03-06  8:43       ` Daniel Lezcano
     [not found]       ` <54F96896.6040204-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2015-03-06  8:47         ` Alexandre Belloni [this message]
2015-03-06  8:47           ` Alexandre Belloni
2015-03-06  8:47           ` Alexandre Belloni
     [not found]           ` <20150306084727.GH3989-m++hUPXGwpdeoWH0uzbU5w@public.gmane.org>
2015-03-09 11:13             ` Daniel Lezcano
2015-03-09 11:13               ` Daniel Lezcano
2015-03-09 11:13               ` Daniel Lezcano
2015-03-09 11:13               ` Daniel Lezcano
2015-03-05 15:49 ` [PATCH v4 9/9] ARM: at91: remove useless include Alexandre Belloni
2015-03-05 15:49   ` Alexandre Belloni

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=20150306084727.GH3989@piout.net \
    --to=alexandre.belloni-wi1+55scjutkeb57/3fjtnbpr1lh4cv8@public.gmane.org \
    --cc=boris.brezillon-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org \
    --cc=daniel.lezcano-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
    --cc=dbaryshkov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=lee.jones-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
    --cc=linux-0h96xk9xTtrk1uMJSBkQmQ@public.gmane.org \
    --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-pm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-watchdog-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=nicolas.ferre-AIFe0yeh4nAAvxtiuMwx3w@public.gmane.org \
    --cc=plagnioj-sclMFOaUSTBWk0Htik3J/w@public.gmane.org \
    --cc=sre-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
    --cc=tglx-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org \
    --cc=wim-IQzOog9fTRqzQB+pC5nmwQ@public.gmane.org \
    /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.