sh: pfc: ioremap() support
authorMagnus Damm <damm@opensource.se>
Fri, 9 Dec 2011 03:14:27 +0000 (12:14 +0900)
committerPaul Mundt <lethal@linux-sh.org>
Fri, 9 Dec 2011 09:07:15 +0000 (18:07 +0900)
commitb0e10211cba1629e2e534ca9cb3d87cfc7e389ea
treef545599adeabd07c3dc76a4d90860599fea800b0
parent883381d9f1c5a6329bbb796e23ae52c939940310
sh: pfc: ioremap() support

Add support for non-entity mapped PFC registers through
the use of struct resource and ioremap()/iounmap().

The PFC main data structure gets updated with a pointer
to a struct resources array that point out all register
windows used by the PFC instance. The register definitions
are kept as physical addresses but the PFC code will do
transparent conversion into virtual addresses whenever
register windows are specified using with struct resource.

To introduce as little performance penalty as possible the
virtual address of each data register is cached in memory.
The virtual address of each configuration register is however
calculated during run time. This because the configuration
is considered slow path so focus is instead put on keeping
memory foot print as small as possible.

The PFC register access  code is in this patch updated from
__raw_readN() / __raw_writeN() into ioreadN() / iowriteN().

This patch is needed to support the PFC block in r8a7779.

Signed-off-by: Magnus Damm <damm@opensource.se>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
drivers/sh/pfc.c
include/linux/sh_pfc.h