All of lore.kernel.org
 help / color / mirror / Atom feed
From: nicolas.ferre@atmel.com (Nicolas Ferre)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 07/13] clocksource: tcb_clksrc: make IO endian agnostic
Date: Thu, 26 Mar 2015 12:08:17 +0100	[thread overview]
Message-ID: <5513E8A1.1050809@atmel.com> (raw)
In-Reply-To: <5513D7AA.8030008@linaro.org>

Le 26/03/2015 10:55, Daniel Lezcano a ?crit :
> On 03/18/2015 04:53 PM, Ben Dooks wrote:
>> Change the __raw read and write to use readl/writel_relaxed to make the
>> code endian agnostic.
>>
>> Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk>
> 
> Nicolas,
> 
> what about this one ? Do you ack it ?

Yes:
Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com>

We were discussing about having a common macro for this... But we will
think more about it later.

So, let's go for it.

Bye,


>> --
>> CC: Daniel Lezcano <daniel.lezcano@linaro.org>
>> CC: Thomas Gleixner <tglx@linutronix.de>
>> CC: Linux Kernel <linux-kernel@vger.kernel.org>
>> CC: Linux ARM Kernel <linux-arm-kernel@lists.infradead.org>
>> CC: Andrew Victor <linux@maxim.org.za>
>> CC: Nicolas Ferre <nicolas.ferre@atmel.com>
>> CC: Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>
>> ---
>>   drivers/clocksource/tcb_clksrc.c | 66 ++++++++++++++++++++++------------------
>>   1 file changed, 37 insertions(+), 29 deletions(-)
>>
>> diff --git a/drivers/clocksource/tcb_clksrc.c b/drivers/clocksource/tcb_clksrc.c
>> index 8bdbc45..0f819dd3 100644
>> --- a/drivers/clocksource/tcb_clksrc.c
>> +++ b/drivers/clocksource/tcb_clksrc.c
>> @@ -41,6 +41,14 @@
>>
>>   static void __iomem *tcaddr;
>>
>> +#ifdef CONFIG_AVR32
>> +#define tcb_readl	__raw_readl
>> +#define tcb_writel	__raw_writel
>> +#else
>> +#define tcb_readl	readl_relaxed
>> +#define tcb_writel	writel_relaxed
>> +#endif
>> +
>>   static cycle_t tc_get_cycles(struct clocksource *cs)
>>   {
>>   	unsigned long	flags;
>> @@ -48,9 +56,9 @@ static cycle_t tc_get_cycles(struct clocksource *cs)
>>
>>   	raw_local_irq_save(flags);
>>   	do {
>> -		upper = __raw_readl(tcaddr + ATMEL_TC_REG(1, CV));
>> -		lower = __raw_readl(tcaddr + ATMEL_TC_REG(0, CV));
>> -	} while (upper != __raw_readl(tcaddr + ATMEL_TC_REG(1, CV)));
>> +		upper = tcb_readl(tcaddr + ATMEL_TC_REG(1, CV));
>> +		lower = tcb_readl(tcaddr + ATMEL_TC_REG(0, CV));
>> +	} while (upper != tcb_readl(tcaddr + ATMEL_TC_REG(1, CV)));
>>
>>   	raw_local_irq_restore(flags);
>>   	return (upper << 16) | lower;
>> @@ -58,7 +66,7 @@ static cycle_t tc_get_cycles(struct clocksource *cs)
>>
>>   static cycle_t tc_get_cycles32(struct clocksource *cs)
>>   {
>> -	return __raw_readl(tcaddr + ATMEL_TC_REG(0, CV));
>> +	return tcb_readl(tcaddr + ATMEL_TC_REG(0, CV));
>>   }
>>
>>   static struct clocksource clksrc = {
>> @@ -98,8 +106,8 @@ static void tc_mode(enum clock_event_mode m, struct clock_event_device *d)
>>
>>   	if (tcd->clkevt.mode == CLOCK_EVT_MODE_PERIODIC
>>   			|| tcd->clkevt.mode == CLOCK_EVT_MODE_ONESHOT) {
>> -		__raw_writel(0xff, regs + ATMEL_TC_REG(2, IDR));
>> -		__raw_writel(ATMEL_TC_CLKDIS, regs + ATMEL_TC_REG(2, CCR));
>> +		tcb_writel(0xff, regs + ATMEL_TC_REG(2, IDR));
>> +		tcb_writel(ATMEL_TC_CLKDIS, regs + ATMEL_TC_REG(2, CCR));
>>   		clk_disable(tcd->clk);
>>   	}
>>
>> @@ -112,16 +120,16 @@ static void tc_mode(enum clock_event_mode m, struct clock_event_device *d)
>>   		clk_enable(tcd->clk);
>>
>>   		/* slow clock, count up to RC, then irq and restart */
>> -		__raw_writel(timer_clock
>> +		tcb_writel(timer_clock
>>   				| ATMEL_TC_WAVE | ATMEL_TC_WAVESEL_UP_AUTO,
>>   				regs + ATMEL_TC_REG(2, CMR));
>> -		__raw_writel((32768 + HZ/2) / HZ, tcaddr + ATMEL_TC_REG(2, RC));
>> +		tcb_writel((32768 + HZ/2) / HZ, tcaddr + ATMEL_TC_REG(2, RC));
>>
>>   		/* Enable clock and interrupts on RC compare */
>> -		__raw_writel(ATMEL_TC_CPCS, regs + ATMEL_TC_REG(2, IER));
>> +		tcb_writel(ATMEL_TC_CPCS, regs + ATMEL_TC_REG(2, IER));
>>
>>   		/* go go gadget! */
>> -		__raw_writel(ATMEL_TC_CLKEN | ATMEL_TC_SWTRG,
>> +		tcb_writel(ATMEL_TC_CLKEN | ATMEL_TC_SWTRG,
>>   				regs + ATMEL_TC_REG(2, CCR));
>>   		break;
>>
>> @@ -129,10 +137,10 @@ static void tc_mode(enum clock_event_mode m, struct clock_event_device *d)
>>   		clk_enable(tcd->clk);
>>
>>   		/* slow clock, count up to RC, then irq and stop */
>> -		__raw_writel(timer_clock | ATMEL_TC_CPCSTOP
>> +		tcb_writel(timer_clock | ATMEL_TC_CPCSTOP
>>   				| ATMEL_TC_WAVE | ATMEL_TC_WAVESEL_UP_AUTO,
>>   				regs + ATMEL_TC_REG(2, CMR));
>> -		__raw_writel(ATMEL_TC_CPCS, regs + ATMEL_TC_REG(2, IER));
>> +		tcb_writel(ATMEL_TC_CPCS, regs + ATMEL_TC_REG(2, IER));
>>
>>   		/* set_next_event() configures and starts the timer */
>>   		break;
>> @@ -144,10 +152,10 @@ static void tc_mode(enum clock_event_mode m, struct clock_event_device *d)
>>
>>   static int tc_next_event(unsigned long delta, struct clock_event_device *d)
>>   {
>> -	__raw_writel(delta, tcaddr + ATMEL_TC_REG(2, RC));
>> +	tcb_writel(delta, tcaddr + ATMEL_TC_REG(2, RC));
>>
>>   	/* go go gadget! */
>> -	__raw_writel(ATMEL_TC_CLKEN | ATMEL_TC_SWTRG,
>> +	tcb_writel(ATMEL_TC_CLKEN | ATMEL_TC_SWTRG,
>>   			tcaddr + ATMEL_TC_REG(2, CCR));
>>   	return 0;
>>   }
>> @@ -169,7 +177,7 @@ static irqreturn_t ch2_irq(int irq, void *handle)
>>   	struct tc_clkevt_device	*dev = handle;
>>   	unsigned int		sr;
>>
>> -	sr = __raw_readl(dev->regs + ATMEL_TC_REG(2, SR));
>> +	sr = tcb_readl(dev->regs + ATMEL_TC_REG(2, SR));
>>   	if (sr & ATMEL_TC_CPCS) {
>>   		dev->clkevt.event_handler(&dev->clkevt);
>>   		return IRQ_HANDLED;
>> @@ -221,43 +229,43 @@ static int __init setup_clkevents(struct atmel_tc *tc, int clk32k_divisor_idx)
>>   static void __init tcb_setup_dual_chan(struct atmel_tc *tc, int mck_divisor_idx)
>>   {
>>   	/* channel 0:  waveform mode, input mclk/8, clock TIOA0 on overflow */
>> -	__raw_writel(mck_divisor_idx			/* likely divide-by-8 */
>> +	tcb_writel(mck_divisor_idx			/* likely divide-by-8 */
>>   			| ATMEL_TC_WAVE
>>   			| ATMEL_TC_WAVESEL_UP		/* free-run */
>>   			| ATMEL_TC_ACPA_SET		/* TIOA0 rises at 0 */
>>   			| ATMEL_TC_ACPC_CLEAR,		/* (duty cycle 50%) */
>>   			tcaddr + ATMEL_TC_REG(0, CMR));
>> -	__raw_writel(0x0000, tcaddr + ATMEL_TC_REG(0, RA));
>> -	__raw_writel(0x8000, tcaddr + ATMEL_TC_REG(0, RC));
>> -	__raw_writel(0xff, tcaddr + ATMEL_TC_REG(0, IDR));	/* no irqs */
>> -	__raw_writel(ATMEL_TC_CLKEN, tcaddr + ATMEL_TC_REG(0, CCR));
>> +	tcb_writel(0x0000, tcaddr + ATMEL_TC_REG(0, RA));
>> +	tcb_writel(0x8000, tcaddr + ATMEL_TC_REG(0, RC));
>> +	tcb_writel(0xff, tcaddr + ATMEL_TC_REG(0, IDR));	/* no irqs */
>> +	tcb_writel(ATMEL_TC_CLKEN, tcaddr + ATMEL_TC_REG(0, CCR));
>>
>>   	/* channel 1:  waveform mode, input TIOA0 */
>> -	__raw_writel(ATMEL_TC_XC1			/* input: TIOA0 */
>> +	tcb_writel(ATMEL_TC_XC1			/* input: TIOA0 */
>>   			| ATMEL_TC_WAVE
>>   			| ATMEL_TC_WAVESEL_UP,		/* free-run */
>>   			tcaddr + ATMEL_TC_REG(1, CMR));
>> -	__raw_writel(0xff, tcaddr + ATMEL_TC_REG(1, IDR));	/* no irqs */
>> -	__raw_writel(ATMEL_TC_CLKEN, tcaddr + ATMEL_TC_REG(1, CCR));
>> +	tcb_writel(0xff, tcaddr + ATMEL_TC_REG(1, IDR));	/* no irqs */
>> +	tcb_writel(ATMEL_TC_CLKEN, tcaddr + ATMEL_TC_REG(1, CCR));
>>
>>   	/* chain channel 0 to channel 1*/
>> -	__raw_writel(ATMEL_TC_TC1XC1S_TIOA0, tcaddr + ATMEL_TC_BMR);
>> +	tcb_writel(ATMEL_TC_TC1XC1S_TIOA0, tcaddr + ATMEL_TC_BMR);
>>   	/* then reset all the timers */
>> -	__raw_writel(ATMEL_TC_SYNC, tcaddr + ATMEL_TC_BCR);
>> +	tcb_writel(ATMEL_TC_SYNC, tcaddr + ATMEL_TC_BCR);
>>   }
>>
>>   static void __init tcb_setup_single_chan(struct atmel_tc *tc, int mck_divisor_idx)
>>   {
>>   	/* channel 0:  waveform mode, input mclk/8 */
>> -	__raw_writel(mck_divisor_idx			/* likely divide-by-8 */
>> +	tcb_writel(mck_divisor_idx			/* likely divide-by-8 */
>>   			| ATMEL_TC_WAVE
>>   			| ATMEL_TC_WAVESEL_UP,		/* free-run */
>>   			tcaddr + ATMEL_TC_REG(0, CMR));
>> -	__raw_writel(0xff, tcaddr + ATMEL_TC_REG(0, IDR));	/* no irqs */
>> -	__raw_writel(ATMEL_TC_CLKEN, tcaddr + ATMEL_TC_REG(0, CCR));
>> +	tcb_writel(0xff, tcaddr + ATMEL_TC_REG(0, IDR));	/* no irqs */
>> +	tcb_writel(ATMEL_TC_CLKEN, tcaddr + ATMEL_TC_REG(0, CCR));
>>
>>   	/* then reset all the timers */
>> -	__raw_writel(ATMEL_TC_SYNC, tcaddr + ATMEL_TC_BCR);
>> +	tcb_writel(ATMEL_TC_SYNC, tcaddr + ATMEL_TC_BCR);
>>   }
>>
>>   static int __init tcb_clksrc_init(void)
>>
> 
> 


-- 
Nicolas Ferre

WARNING: multiple messages have this Message-ID (diff)
From: Nicolas Ferre <nicolas.ferre@atmel.com>
To: Daniel Lezcano <daniel.lezcano@linaro.org>,
	Ben Dooks <ben.dooks@codethink.co.uk>,
	<linux-kernel@lists.codethink.co.uk>,
	<linux-arm-kernel@lists.infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>,
	Linux Kernel <linux-kernel@vger.kernel.org>,
	Andrew Victor <linux@maxim.org.za>,
	Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>
Subject: Re: [PATCH 07/13] clocksource: tcb_clksrc: make IO endian agnostic
Date: Thu, 26 Mar 2015 12:08:17 +0100	[thread overview]
Message-ID: <5513E8A1.1050809@atmel.com> (raw)
In-Reply-To: <5513D7AA.8030008@linaro.org>

Le 26/03/2015 10:55, Daniel Lezcano a écrit :
> On 03/18/2015 04:53 PM, Ben Dooks wrote:
>> Change the __raw read and write to use readl/writel_relaxed to make the
>> code endian agnostic.
>>
>> Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk>
> 
> Nicolas,
> 
> what about this one ? Do you ack it ?

Yes:
Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com>

We were discussing about having a common macro for this... But we will
think more about it later.

So, let's go for it.

Bye,


>> --
>> CC: Daniel Lezcano <daniel.lezcano@linaro.org>
>> CC: Thomas Gleixner <tglx@linutronix.de>
>> CC: Linux Kernel <linux-kernel@vger.kernel.org>
>> CC: Linux ARM Kernel <linux-arm-kernel@lists.infradead.org>
>> CC: Andrew Victor <linux@maxim.org.za>
>> CC: Nicolas Ferre <nicolas.ferre@atmel.com>
>> CC: Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>
>> ---
>>   drivers/clocksource/tcb_clksrc.c | 66 ++++++++++++++++++++++------------------
>>   1 file changed, 37 insertions(+), 29 deletions(-)
>>
>> diff --git a/drivers/clocksource/tcb_clksrc.c b/drivers/clocksource/tcb_clksrc.c
>> index 8bdbc45..0f819dd3 100644
>> --- a/drivers/clocksource/tcb_clksrc.c
>> +++ b/drivers/clocksource/tcb_clksrc.c
>> @@ -41,6 +41,14 @@
>>
>>   static void __iomem *tcaddr;
>>
>> +#ifdef CONFIG_AVR32
>> +#define tcb_readl	__raw_readl
>> +#define tcb_writel	__raw_writel
>> +#else
>> +#define tcb_readl	readl_relaxed
>> +#define tcb_writel	writel_relaxed
>> +#endif
>> +
>>   static cycle_t tc_get_cycles(struct clocksource *cs)
>>   {
>>   	unsigned long	flags;
>> @@ -48,9 +56,9 @@ static cycle_t tc_get_cycles(struct clocksource *cs)
>>
>>   	raw_local_irq_save(flags);
>>   	do {
>> -		upper = __raw_readl(tcaddr + ATMEL_TC_REG(1, CV));
>> -		lower = __raw_readl(tcaddr + ATMEL_TC_REG(0, CV));
>> -	} while (upper != __raw_readl(tcaddr + ATMEL_TC_REG(1, CV)));
>> +		upper = tcb_readl(tcaddr + ATMEL_TC_REG(1, CV));
>> +		lower = tcb_readl(tcaddr + ATMEL_TC_REG(0, CV));
>> +	} while (upper != tcb_readl(tcaddr + ATMEL_TC_REG(1, CV)));
>>
>>   	raw_local_irq_restore(flags);
>>   	return (upper << 16) | lower;
>> @@ -58,7 +66,7 @@ static cycle_t tc_get_cycles(struct clocksource *cs)
>>
>>   static cycle_t tc_get_cycles32(struct clocksource *cs)
>>   {
>> -	return __raw_readl(tcaddr + ATMEL_TC_REG(0, CV));
>> +	return tcb_readl(tcaddr + ATMEL_TC_REG(0, CV));
>>   }
>>
>>   static struct clocksource clksrc = {
>> @@ -98,8 +106,8 @@ static void tc_mode(enum clock_event_mode m, struct clock_event_device *d)
>>
>>   	if (tcd->clkevt.mode == CLOCK_EVT_MODE_PERIODIC
>>   			|| tcd->clkevt.mode == CLOCK_EVT_MODE_ONESHOT) {
>> -		__raw_writel(0xff, regs + ATMEL_TC_REG(2, IDR));
>> -		__raw_writel(ATMEL_TC_CLKDIS, regs + ATMEL_TC_REG(2, CCR));
>> +		tcb_writel(0xff, regs + ATMEL_TC_REG(2, IDR));
>> +		tcb_writel(ATMEL_TC_CLKDIS, regs + ATMEL_TC_REG(2, CCR));
>>   		clk_disable(tcd->clk);
>>   	}
>>
>> @@ -112,16 +120,16 @@ static void tc_mode(enum clock_event_mode m, struct clock_event_device *d)
>>   		clk_enable(tcd->clk);
>>
>>   		/* slow clock, count up to RC, then irq and restart */
>> -		__raw_writel(timer_clock
>> +		tcb_writel(timer_clock
>>   				| ATMEL_TC_WAVE | ATMEL_TC_WAVESEL_UP_AUTO,
>>   				regs + ATMEL_TC_REG(2, CMR));
>> -		__raw_writel((32768 + HZ/2) / HZ, tcaddr + ATMEL_TC_REG(2, RC));
>> +		tcb_writel((32768 + HZ/2) / HZ, tcaddr + ATMEL_TC_REG(2, RC));
>>
>>   		/* Enable clock and interrupts on RC compare */
>> -		__raw_writel(ATMEL_TC_CPCS, regs + ATMEL_TC_REG(2, IER));
>> +		tcb_writel(ATMEL_TC_CPCS, regs + ATMEL_TC_REG(2, IER));
>>
>>   		/* go go gadget! */
>> -		__raw_writel(ATMEL_TC_CLKEN | ATMEL_TC_SWTRG,
>> +		tcb_writel(ATMEL_TC_CLKEN | ATMEL_TC_SWTRG,
>>   				regs + ATMEL_TC_REG(2, CCR));
>>   		break;
>>
>> @@ -129,10 +137,10 @@ static void tc_mode(enum clock_event_mode m, struct clock_event_device *d)
>>   		clk_enable(tcd->clk);
>>
>>   		/* slow clock, count up to RC, then irq and stop */
>> -		__raw_writel(timer_clock | ATMEL_TC_CPCSTOP
>> +		tcb_writel(timer_clock | ATMEL_TC_CPCSTOP
>>   				| ATMEL_TC_WAVE | ATMEL_TC_WAVESEL_UP_AUTO,
>>   				regs + ATMEL_TC_REG(2, CMR));
>> -		__raw_writel(ATMEL_TC_CPCS, regs + ATMEL_TC_REG(2, IER));
>> +		tcb_writel(ATMEL_TC_CPCS, regs + ATMEL_TC_REG(2, IER));
>>
>>   		/* set_next_event() configures and starts the timer */
>>   		break;
>> @@ -144,10 +152,10 @@ static void tc_mode(enum clock_event_mode m, struct clock_event_device *d)
>>
>>   static int tc_next_event(unsigned long delta, struct clock_event_device *d)
>>   {
>> -	__raw_writel(delta, tcaddr + ATMEL_TC_REG(2, RC));
>> +	tcb_writel(delta, tcaddr + ATMEL_TC_REG(2, RC));
>>
>>   	/* go go gadget! */
>> -	__raw_writel(ATMEL_TC_CLKEN | ATMEL_TC_SWTRG,
>> +	tcb_writel(ATMEL_TC_CLKEN | ATMEL_TC_SWTRG,
>>   			tcaddr + ATMEL_TC_REG(2, CCR));
>>   	return 0;
>>   }
>> @@ -169,7 +177,7 @@ static irqreturn_t ch2_irq(int irq, void *handle)
>>   	struct tc_clkevt_device	*dev = handle;
>>   	unsigned int		sr;
>>
>> -	sr = __raw_readl(dev->regs + ATMEL_TC_REG(2, SR));
>> +	sr = tcb_readl(dev->regs + ATMEL_TC_REG(2, SR));
>>   	if (sr & ATMEL_TC_CPCS) {
>>   		dev->clkevt.event_handler(&dev->clkevt);
>>   		return IRQ_HANDLED;
>> @@ -221,43 +229,43 @@ static int __init setup_clkevents(struct atmel_tc *tc, int clk32k_divisor_idx)
>>   static void __init tcb_setup_dual_chan(struct atmel_tc *tc, int mck_divisor_idx)
>>   {
>>   	/* channel 0:  waveform mode, input mclk/8, clock TIOA0 on overflow */
>> -	__raw_writel(mck_divisor_idx			/* likely divide-by-8 */
>> +	tcb_writel(mck_divisor_idx			/* likely divide-by-8 */
>>   			| ATMEL_TC_WAVE
>>   			| ATMEL_TC_WAVESEL_UP		/* free-run */
>>   			| ATMEL_TC_ACPA_SET		/* TIOA0 rises at 0 */
>>   			| ATMEL_TC_ACPC_CLEAR,		/* (duty cycle 50%) */
>>   			tcaddr + ATMEL_TC_REG(0, CMR));
>> -	__raw_writel(0x0000, tcaddr + ATMEL_TC_REG(0, RA));
>> -	__raw_writel(0x8000, tcaddr + ATMEL_TC_REG(0, RC));
>> -	__raw_writel(0xff, tcaddr + ATMEL_TC_REG(0, IDR));	/* no irqs */
>> -	__raw_writel(ATMEL_TC_CLKEN, tcaddr + ATMEL_TC_REG(0, CCR));
>> +	tcb_writel(0x0000, tcaddr + ATMEL_TC_REG(0, RA));
>> +	tcb_writel(0x8000, tcaddr + ATMEL_TC_REG(0, RC));
>> +	tcb_writel(0xff, tcaddr + ATMEL_TC_REG(0, IDR));	/* no irqs */
>> +	tcb_writel(ATMEL_TC_CLKEN, tcaddr + ATMEL_TC_REG(0, CCR));
>>
>>   	/* channel 1:  waveform mode, input TIOA0 */
>> -	__raw_writel(ATMEL_TC_XC1			/* input: TIOA0 */
>> +	tcb_writel(ATMEL_TC_XC1			/* input: TIOA0 */
>>   			| ATMEL_TC_WAVE
>>   			| ATMEL_TC_WAVESEL_UP,		/* free-run */
>>   			tcaddr + ATMEL_TC_REG(1, CMR));
>> -	__raw_writel(0xff, tcaddr + ATMEL_TC_REG(1, IDR));	/* no irqs */
>> -	__raw_writel(ATMEL_TC_CLKEN, tcaddr + ATMEL_TC_REG(1, CCR));
>> +	tcb_writel(0xff, tcaddr + ATMEL_TC_REG(1, IDR));	/* no irqs */
>> +	tcb_writel(ATMEL_TC_CLKEN, tcaddr + ATMEL_TC_REG(1, CCR));
>>
>>   	/* chain channel 0 to channel 1*/
>> -	__raw_writel(ATMEL_TC_TC1XC1S_TIOA0, tcaddr + ATMEL_TC_BMR);
>> +	tcb_writel(ATMEL_TC_TC1XC1S_TIOA0, tcaddr + ATMEL_TC_BMR);
>>   	/* then reset all the timers */
>> -	__raw_writel(ATMEL_TC_SYNC, tcaddr + ATMEL_TC_BCR);
>> +	tcb_writel(ATMEL_TC_SYNC, tcaddr + ATMEL_TC_BCR);
>>   }
>>
>>   static void __init tcb_setup_single_chan(struct atmel_tc *tc, int mck_divisor_idx)
>>   {
>>   	/* channel 0:  waveform mode, input mclk/8 */
>> -	__raw_writel(mck_divisor_idx			/* likely divide-by-8 */
>> +	tcb_writel(mck_divisor_idx			/* likely divide-by-8 */
>>   			| ATMEL_TC_WAVE
>>   			| ATMEL_TC_WAVESEL_UP,		/* free-run */
>>   			tcaddr + ATMEL_TC_REG(0, CMR));
>> -	__raw_writel(0xff, tcaddr + ATMEL_TC_REG(0, IDR));	/* no irqs */
>> -	__raw_writel(ATMEL_TC_CLKEN, tcaddr + ATMEL_TC_REG(0, CCR));
>> +	tcb_writel(0xff, tcaddr + ATMEL_TC_REG(0, IDR));	/* no irqs */
>> +	tcb_writel(ATMEL_TC_CLKEN, tcaddr + ATMEL_TC_REG(0, CCR));
>>
>>   	/* then reset all the timers */
>> -	__raw_writel(ATMEL_TC_SYNC, tcaddr + ATMEL_TC_BCR);
>> +	tcb_writel(ATMEL_TC_SYNC, tcaddr + ATMEL_TC_BCR);
>>   }
>>
>>   static int __init tcb_clksrc_init(void)
>>
> 
> 


-- 
Nicolas Ferre

  reply	other threads:[~2015-03-26 11:08 UTC|newest]

Thread overview: 66+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-18 15:52 ATSAMA5D big endian work Ben Dooks
2015-03-18 15:53 ` [PATCH 01/13] ARM: at91: Add big endian configuration for ATSAMA5D devices Ben Dooks
2015-03-19  9:03   ` Jean-Christophe PLAGNIOL-VILLARD
2015-03-18 15:53 ` [PATCH 02/13] tty: serial: atmel: fix big-endian on ARMv7 devices Ben Dooks
2015-03-18 15:53   ` Ben Dooks
2015-03-26 21:46   ` Greg Kroah-Hartman
2015-03-26 21:46     ` Greg Kroah-Hartman
2015-03-18 15:53 ` [PATCH 03/13] ARM: at91: use readl/writel relaxed instead of __raw for big endian Ben Dooks
2015-03-18 15:53 ` [PATCH 04/13] ARM: at91: setup.c: use endian agnostic IO functions Ben Dooks
2015-03-18 15:53 ` [PATCH 05/13] ARM: at91: debug: fix debug in big endian mode Ben Dooks
2015-03-18 15:53 ` [PATCH 06/13] ARM: at91: PIT: make IO endian agnostic Ben Dooks
2015-03-18 15:53   ` Ben Dooks
2015-03-23 11:27   ` Nicolas Ferre
2015-03-23 11:27     ` Nicolas Ferre
2015-03-26  9:54     ` Daniel Lezcano
2015-03-26  9:54       ` Daniel Lezcano
2015-03-18 15:53 ` [PATCH 07/13] clocksource: tcb_clksrc: " Ben Dooks
2015-03-18 15:53   ` Ben Dooks
2015-03-26  9:55   ` Daniel Lezcano
2015-03-26  9:55     ` Daniel Lezcano
2015-03-26 11:08     ` Nicolas Ferre [this message]
2015-03-26 11:08       ` Nicolas Ferre
2015-03-26 11:38       ` Ben Dooks
2015-03-26 11:38         ` Ben Dooks
2015-03-18 15:53 ` [PATCH 08/13] rtc: at91rm9200: " Ben Dooks
2015-03-19  9:02   ` [rtc-linux] " Jean-Christophe PLAGNIOL-VILLARD
2015-03-19  9:34     ` Ben Dooks
2015-03-19 16:13   ` Nicolas Ferre
     [not found] ` <1426693992-31163-1-git-send-email-ben.dooks-4yDnlxn2s6sWdaTGBSpHTA@public.gmane.org>
2015-03-18 15:53   ` [PATCH 09/13] spi: atmel: use endian agnostic IO Ben Dooks
2015-03-18 15:53     ` Ben Dooks
     [not found]     ` <1426693992-31163-10-git-send-email-ben.dooks-4yDnlxn2s6sWdaTGBSpHTA@public.gmane.org>
2015-03-19  0:56       ` Mark Brown
2015-03-19  0:56         ` Mark Brown
2015-03-19  8:53       ` Nicolas Ferre
2015-03-19  8:53         ` Nicolas Ferre
2015-03-22 18:01       ` Mark Brown
2015-03-22 18:01         ` Mark Brown
2015-03-18 15:53 ` [PATCH 10/13] usb: gadget: atmel_usba: use endian agnostic IO on ARM Ben Dooks
2015-03-19 16:46   ` Nicolas Ferre
2015-03-19 18:50     ` Felipe Balbi
2015-03-18 15:53 ` [PATCH 11/13] can: at91_can: use endian agnostic IO accessors Ben Dooks
2015-03-18 15:53   ` Ben Dooks
2015-03-19 16:47   ` Nicolas Ferre
2015-03-19 16:47     ` Nicolas Ferre
2015-03-19 16:47     ` Nicolas Ferre
2015-03-20  9:06   ` Marc Kleine-Budde
2015-03-20  9:06     ` Marc Kleine-Budde
2015-03-18 15:53 ` [PATCH 12/13] mmc: atmel-mci: use endian agnostic IO Ben Dooks
2015-03-18 15:53   ` Ben Dooks
2015-03-19 14:22   ` [Linux-kernel] " Ben Hutchings
2015-03-19 14:22     ` Ben Hutchings
2015-03-24 12:53     ` Ben Dooks
2015-03-24 12:53       ` Ben Dooks
2015-03-25  6:14       ` Hans-Christian Egtvedt
2015-03-25  6:14         ` Hans-Christian Egtvedt
2015-03-24 14:08   ` Ludovic Desroches
2015-03-24 14:08     ` Ludovic Desroches
2015-03-25  8:52   ` Ulf Hansson
2015-03-25  8:52     ` Ulf Hansson
2015-03-18 18:30 ` ATSAMA5D big endian work Alexandre Belloni
2015-03-19  9:34   ` Ben Dooks
2015-03-19 13:30     ` Alexandre Belloni
2015-03-20 16:58       ` Ben Dooks
2015-03-20 17:19         ` Alexandre Belloni
2015-03-20 17:29           ` Ben Dooks
2015-03-23 11:31             ` Nicolas Ferre
2015-03-19  9:42 ` [Linux-kernel] " Ben Dooks

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=5513E8A1.1050809@atmel.com \
    --to=nicolas.ferre@atmel.com \
    --cc=linux-arm-kernel@lists.infradead.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.