History log of /drivers/sh/pfc.c
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
e499ada829cf769ac6f16627cd9f09b855a7fd6d 13-Dec-2011 Magnus Damm <damm@opensource.se> sh: pfc: Unlock register support

Add PFC support for a 32-bit unlock register. Needed to
drive the r8a7779 PFC that comes with a funky PMMR register.

Signed-off-by: Magnus Damm <damm@opensource.se>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
/drivers/sh/pfc.c
f78a26f55b2438c439609fc90b473f7f08f5b697 13-Dec-2011 Magnus Damm <damm@opensource.se> sh: pfc: Variable bitfield width config register support

Add support for variable config reg hardware by adding
the macro PINMUX_CFG_REG_VAR(). The width of each bitfield
needs to be passed to the macro, and the correct space must
be consumed by each bitfield in the enum table following the
macro. Data registers still need to have fixed bitfields.

Signed-off-by: Magnus Damm <damm@opensource.se>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
/drivers/sh/pfc.c
18925e118b3b4d55b45711218cd3c3c4360e5cd1 13-Dec-2011 Magnus Damm <damm@opensource.se> sh: pfc: Add config_reg_helper() function

Add a helper function for shared config reg access
calculations. This allows us to reduce the amount
of duplicated code, and at the same time prepare
for a common place for future variable bitwidth
config reg support.

Signed-off-by: Magnus Damm <damm@opensource.se>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
/drivers/sh/pfc.c
ad4a07ff8da7147b391f1ff0034f313a8b9da9e5 13-Dec-2011 Magnus Damm <damm@opensource.se> sh: pfc: Convert index to field and value pair

Update the way the PFC code is passing bitfield
selection between configure register functions.

Convert the code from using index only to bitfield
number and selected value. First step towards future
variable bitfield width support.

Signed-off-by: Magnus Damm <damm@opensource.se>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
/drivers/sh/pfc.c
92554d97c6dcc448afd56f96bbe933998868be74 13-Dec-2011 Magnus Damm <damm@opensource.se> sh: pfc: Add gpio_read_bit() for data register access

Introduce gpio_read_bit() for data register read access
and modify sh_gpio_get_value() to make use of the new
function instead of gpio_read_reg(). The purpose of
this change is to update the code to only use the
gpio_read_reg() function for config register access.

Signed-off-by: Magnus Damm <damm@opensource.se>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
/drivers/sh/pfc.c
b0e10211cba1629e2e534ca9cb3d87cfc7e389ea 08-Dec-2011 Magnus Damm <damm@opensource.se> 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
ad2a8e7ea4128af984a98537b1b9484722b6b4bb 28-Sep-2011 Magnus Damm <damm@opensource.se> sh: pfc: Add GPIO IRQ support

Add GPIO IRQ support to the shared PFC code in drivers/sh/pfc.c

The enums pointed out by a certain GPIO will be matched against
a table for IRQ to enum mappings.

Only the shared PFC code is updated by this patch. SoC specific
changes are also needed to allow platforms to make use of this
feature.

Signed-off-by: Magnus Damm <damm@opensource.se>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
/drivers/sh/pfc.c
c63bcc6ff135397b38cdb510c173e4a6629cede5 17-Oct-2011 Magnus Damm <damm@opensource.se> sh: pfc: get_config_reg() shift clean up

Clean up the f_width shift code in get_config_reg().

Reported-by: Ryusuke Sakato <ryusuke.sakato.bx@renesas.com>
Signed-off-by: Magnus Damm <damm@opensource.se>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
/drivers/sh/pfc.c
e8184a47c9cc04380553114815356d1042a27788 03-Oct-2010 Paul Mundt <lethal@linux-sh.org> sh: pfc: Fix up BUG() triggered by gpiolib debugfs lookups.

The gpiolib debugfs entry takes a hammer approach and iterates over all
of the potential GPIOs, regardless of their type. The SH PFC code on the
other hand contains a variable mismash of input/output/function types
spread out sparsely, leading to situations where the debug code can
trigger an out of range enum for the type. Since we already have an error
path for out of range enums, we can just hand that up to the higher level
instead of the current BUG() behaviour.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
/drivers/sh/pfc.c
b72421d8aa39724474ec2bfb91e182001f1f25a7 03-Oct-2010 Paul Mundt <lethal@linux-sh.org> sh: pfc: support pinmux deregistration.

Presently the pinmux code is a one-way thing, but there's nothing
preventing an unregistration if no one has grabbed any of the pins.
This will permit us to save a bit of memory on systems that require pin
demux for certain peripherals in the case where registration of those
peripherals fails, or they are otherwise not attached to the system.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
/drivers/sh/pfc.c
50dd3145a58b5cef03a95c1b98765bcc847a72d0 19-Jan-2010 Magnus Damm <damm@opensource.se> sh: update PFC to allow any enum in MARK lists

This patch updates the PFC code with some clarifying
comments together with a functional change. The change
allows function type of GPIO to select any type of enum
in their MARK lists. Without this patch only function
type of enums are allowed in MARK lists.

Signed-off-by: Magnus Damm <damm@opensource.se>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
/drivers/sh/pfc.c
ca6f2d7fafd2d48b2f6943f5c6787beaec2014d0 09-Dec-2009 Paul Mundt <lethal@linux-sh.org> sh: pfc: Fixup type mismatch in debug printks.

!!value works out to an int while we were still using %ld, so fix this up
and shut gcc up.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
/drivers/sh/pfc.c
fd2cb0ce74e07babaf8c7bf96ef03c25d194e463 29-Nov-2009 Paul Mundt <lethal@linux-sh.org> sh: pfc: pr_info() -> pr_debug() cleanups.

For some reason this was using pr_info() nested under an ifdef DEBUG.
While this is appealing in that it circumvents the effort necessary to
change ones loglevel, it's not terribly practical. So, convert it over
to pr_debug().

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
/drivers/sh/pfc.c
9cdae914b2d08febca6e6e0440817d60da115ba5 29-Nov-2009 Paul Mundt <lethal@linux-sh.org> sh: pfc: Convert from ctrl_xxx() to __raw_xxx() I/O routines.

Now that the PFC code is exposed for other architectures, use the common
__raw_xxx() routines instead of the ctrl_xxx() ones. This will be needed
for ARM-based SH-Mobiles amongst others.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
/drivers/sh/pfc.c
fae4339919c741f89f7e293b8c646207e1df28e1 27-Nov-2009 Magnus Damm <damm@opensource.se> sh: Break out SuperH PFC code

This file breaks out the SuperH PFC code from
arch/sh/kernel/gpio.c + arch/sh/include/asm/gpio.h
to drivers/sh/pfc.c + include/linux/sh_pfc.h.

Similar to the INTC stuff. The non-SuperH specific
file location makes it possible to share the code
between multiple architectures.

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