aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/sh
diff options
context:
space:
mode:
authorPaul Mundt <lethal@linux-sh.org>2010-10-03 14:54:56 -0400
committerPaul Mundt <lethal@linux-sh.org>2010-10-03 14:54:56 -0400
commitb72421d8aa39724474ec2bfb91e182001f1f25a7 (patch)
treed9f13d2e5641d9379c796898782756c50996bbf3 /drivers/sh
parent3bccf534f98ddc4962665b68d99f752ea010aacc (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.c11
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
608int unregister_pinmux(struct pinmux_info *pip)
609{
610 pr_info("%s deregistering\n", pip->name);
611
612 return gpiochip_remove(&pip->chip);
613}