Commit Graph

13 Commits

Author SHA1 Message Date
Laurent Pinchart
077664a264 sh: pfc: Release spinlock in sh_pfc_gpio_request_enable() error path
The sh_pfc_gpio_request_enable() function acquires a spinlock but fails
to release it before returning if the requested mux type is not
supported. Fix this.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
2012-09-18 16:54:46 +09:00
Paul Mundt
1e32dfe323 sh: pfc: Fix up init ordering mess.
Commit ca5481c68e ("sh: pfc: Rudimentary
pinctrl-backed GPIO support.") introduced a regression for platforms that
were doing early GPIO API calls (from arch_initcall() or earlier),
leading to a situation where our two-stage registration logic would trip
itself up and we'd -ENODEV out of the pinctrl registration path,
resulting in endless -EPROBE_DEFER errors. Further lack of checking any
sort of errors from gpio_request() resulted in boot time warnings,
tripping on the FLAG_REQUESTED test-and-set in gpio_ensure_requested().

As it turns out there's no particular need to bother with the two-stage
registration, as the platform bus is already available at the point that
we have to start caring. As such, it's easiest to simply fold these
together in to a single init path, the ordering of which is ensured
through the platform's mux registration, as usual.

Reported-by: Rafael J. Wysocki <rjw@sisk.pl>
Reported-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
2012-08-01 16:27:38 +09:00
Paul Mundt
92f53a85db sh: pfc: Build fix for pinctrl_remove_gpio_range() changes.
pinctrl_remove_gpio_range() is now handled by the pinctrl core in the
unreg path for some reason, so use that instead.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
2012-07-25 13:10:11 +09:00
Paul Mundt
fdd85ec3eb sh: pfc: pin config get/set support.
This implements simple support for adjusting the pin config value via the
pinctrl API. The pinconf-generic code is abandoned for now until we've
got a chance to revamp the pinmux_type state tracking that's needed by
legacy code.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
2012-07-20 16:39:09 +09:00
Paul Mundt
5440711073 sh: pfc: Prefer DRV_NAME over KBUILD_MODNAME.
While this code is still being shuffled around the KBUILD_MODNAME value
isn't particularly useful, switch to something a bit more useful.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
2012-07-20 16:18:21 +09:00
Paul Mundt
e3f805e897 sh: pfc: pinctrl legacy group support.
This follows the function support by simply doing 1 pin per group
encapsulation in order to keep with legacy behaviour. This will be
built on incrementally as SoCs define their own pin groups.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
2012-07-17 15:48:18 +09:00
Paul Mundt
e3e79454a7 sh: pfc: Ignore pinmux GPIOs with invalid enum IDs.
If we encounter invalid entries in the pinmux GPIO range, make sure we've
still got a dummy pin definition but don't otherwise map it.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
2012-07-17 15:23:11 +09:00
Paul Mundt
1acbbb4ed8 sh: pfc: Export pinctrl binding init symbol.
symbol_request() requires the registration symbol to be exported, make
sure it is.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
2012-07-17 15:21:47 +09:00
Paul Mundt
159ac0737e sh: pfc: Error out on pinctrl init resolution failure.
pinctrl support is required for correct operation, failure to locate
the init routine is fatal.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
2012-07-17 15:18:37 +09:00
Paul Mundt
a2d3afffd9 sh: pfc: Make pr_fmt consistent across pfc drivers.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
2012-07-11 17:21:04 +09:00
Paul Mundt
d93a891ff9 sh: pfc: pinctrl legacy function support.
This maps out all of the function types to pinctrl function groups.
Presently this is restricted to one pin per function to maintain
compatability with legacy behaviour. This will be extended as groups
are introduced and exiting users migrated.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
2012-07-11 17:17:10 +09:00
Paul Mundt
ca5481c68e sh: pfc: Rudimentary pinctrl-backed GPIO support.
This begins the migration of the PFC core to the pinctrl subsystem.
Initial support is very basic, with the bulk of the implementation simply
being nopped out in such a way to allow registration with the pinctrl
core to succeed.

The gpio chip driver is stripped down considerably now relying purely on
pinctrl API calls to manage the bulk of its operations.

This provides a basis for further PFC refactoring, including decoupling
pin functions from the GPIO API, establishing pin groups, and so forth.
These will all be dealt with incrementally so as to introduce as few
growing and migratory pains to tree-wide PFC pinmux users today.

When the interfaces have been well established and in-tree users have
been migrated off of the legacy interfaces it will be possible to strip
down the core considerably, leading to eventual drivers/pinctrl rehoming.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
2012-07-10 12:08:14 +09:00
Paul Mundt
afae021abe sh: pfc: Shuffle PFC support core.
This follows the intc/clk changes and shuffles the PFC support code under
its own directory. This will facilitate better code sharing, and allow us
to trim down the exported interface by quite a margin.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
2012-07-10 11:49:30 +09:00