[PATCH] clockevents/tcb_clksrc: implement suspend/resume

Alexandre Belloni alexandre.belloni at free-electrons.com
Thu Jun 15 12:40:44 PDT 2017


On 14/04/2017 at 21:13:36 +0200, Daniel Lezcano wrote:
> > +void tc_clksrc_resume(struct clocksource *cs)
> > +{
> > +	int i;
> > +
> > +	for (i = 0; i < 3; i++) {
> 
> s/3/ARRAY_SIZE(tcb_cache)/
> 
> > +		__raw_writel(tcb_cache[i].cmr, tcaddr + ATMEL_TC_REG(i, CMR));
> 
> Why __raw_writel?
> 

Ok, I got to the bottom of that question and I think it is worth
answering it. __raw_{read,write}l were necessary to make the driver work
on AVR32, because its core is BE and the IP LE and the regular
readl/writel are (were) not doing the proper conversion.

This was supposed to be changed in a patch that was never applied:
http://lists.infradead.org/pipermail/linux-arm-kernel/2015-March/331775.html

But everything is fine, as AVR32 is now removed from the kernel. I think
I'll switch the driver to regular readl/writel, using the _relaxed
version in the hot path. Is that fine for you?

I'll also do so in the rework if at some point we can agree on some
bindings, I'll try to address that soon too.

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



More information about the linux-arm-kernel mailing list