On Fri, Feb 26, 2016 at 09:14:10AM +0100, Thomas Petazzoni wrote:
atomic_io_modify() is also used in the ->start() and ->stop() hooks, so not only during initialization. The reason we use atomic_io_modify() here is because this TIMER_CTRL register is shared with the clocksource drivers (time-orion.c, time-armada-370-xp.c). Indeed, the timers and watchdogs share a single register that allows to enable/disable all timers/watchdogs. Somewhat unfortunate choice, but that's how the HW is.
By far the easiest solution is to add "depends on ARM" to ORION_WATCHDOG.
Another solution would be to provide an implementation of atomic_io_modify() on arm64, though that would need the ACK from the ARM64 maintainers.
It also sounds like a more modern solution might be to use syscon for the shared register, but perhaps I'm missing something about how the IP is set up so ICBW.