Skip to content

Commit

Permalink
sh: update PFC to allow any enum in MARK lists
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Magnus Damm authored and Paul Mundt committed Jan 19, 2010
1 parent 70911b8 commit 50dd314
Showing 1 changed file with 32 additions and 5 deletions.
37 changes: 32 additions & 5 deletions drivers/sh/pfc.c
Original file line number Diff line number Diff line change
Expand Up @@ -337,12 +337,39 @@ static int pinmux_config_gpio(struct pinmux_info *gpioc, unsigned gpio,
if (!enum_id)
break;

/* first check if this is a function enum */
in_range = enum_in_range(enum_id, &gpioc->function);
if (!in_range && range) {
in_range = enum_in_range(enum_id, range);

if (in_range && enum_id == range->force)
continue;
if (!in_range) {
/* not a function enum */
if (range) {
/*
* other range exists, so this pin is
* a regular GPIO pin that now is being
* bound to a specific direction.
*
* for this case we only allow function enums
* and the enums that match the other range.
*/
in_range = enum_in_range(enum_id, range);

/*
* special case pass through for fixed
* input-only or output-only pins without
* function enum register association.
*/
if (in_range && enum_id == range->force)
continue;
} else {
/*
* no other range exists, so this pin
* must then be of the function type.
*
* allow function type pins to select
* any combination of function/in/out
* in their MARK lists.
*/
in_range = 1;
}
}

if (!in_range)
Expand Down

0 comments on commit 50dd314

Please sign in to comment.