diff options
author | Paul Mundt <lethal@linux-sh.org> | 2010-10-03 14:54:56 -0400 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2010-10-03 14:54:56 -0400 |
commit | b72421d8aa39724474ec2bfb91e182001f1f25a7 (patch) | |
tree | d9f13d2e5641d9379c796898782756c50996bbf3 /drivers/sh | |
parent | 3bccf534f98ddc4962665b68d99f752ea010aacc (diff) |
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>
Diffstat (limited to 'drivers/sh')
-rw-r--r-- | drivers/sh/pfc.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/sh/pfc.c b/drivers/sh/pfc.c index cf0303acab8e..dee581f6382c 100644 --- a/drivers/sh/pfc.c +++ b/drivers/sh/pfc.c | |||
@@ -7,6 +7,8 @@ | |||
7 | * License. See the file "COPYING" in the main directory of this archive | 7 | * License. See the file "COPYING" in the main directory of this archive |
8 | * for more details. | 8 | * for more details. |
9 | */ | 9 | */ |
10 | #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt | ||
11 | |||
10 | #include <linux/errno.h> | 12 | #include <linux/errno.h> |
11 | #include <linux/kernel.h> | 13 | #include <linux/kernel.h> |
12 | #include <linux/list.h> | 14 | #include <linux/list.h> |
@@ -581,7 +583,7 @@ int register_pinmux(struct pinmux_info *pip) | |||
581 | { | 583 | { |
582 | struct gpio_chip *chip = &pip->chip; | 584 | struct gpio_chip *chip = &pip->chip; |
583 | 585 | ||
584 | pr_info("sh pinmux: %s handling gpio %d -> %d\n", | 586 | pr_info("%s handling gpio %d -> %d\n", |
585 | pip->name, pip->first_gpio, pip->last_gpio); | 587 | pip->name, pip->first_gpio, pip->last_gpio); |
586 | 588 | ||
587 | setup_data_regs(pip); | 589 | setup_data_regs(pip); |
@@ -602,3 +604,10 @@ int register_pinmux(struct pinmux_info *pip) | |||
602 | 604 | ||
603 | return gpiochip_add(chip); | 605 | return gpiochip_add(chip); |
604 | } | 606 | } |
607 | |||
608 | int unregister_pinmux(struct pinmux_info *pip) | ||
609 | { | ||
610 | pr_info("%s deregistering\n", pip->name); | ||
611 | |||
612 | return gpiochip_remove(&pip->chip); | ||
613 | } | ||