sh: pfc: support pinmux deregistration.
authorPaul Mundt <lethal@linux-sh.org>
Sun, 3 Oct 2010 18:54:56 +0000 (03:54 +0900)
committerPaul Mundt <lethal@linux-sh.org>
Sun, 3 Oct 2010 18:54:56 +0000 (03:54 +0900)
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
include/linux/sh_pfc.h

index cf0303acab8edb2f1e9d23e4f30cb12330635645..dee581f6382c1f91abf764bc07339edf13c66887 100644 (file)
@@ -7,6 +7,8 @@
  * License.  See the file "COPYING" in the main directory of this archive
  * for more details.
  */
+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
 #include <linux/errno.h>
 #include <linux/kernel.h>
 #include <linux/list.h>
@@ -581,7 +583,7 @@ int register_pinmux(struct pinmux_info *pip)
 {
        struct gpio_chip *chip = &pip->chip;
 
-       pr_info("sh pinmux: %s handling gpio %d -> %d\n",
+       pr_info("%s handling gpio %d -> %d\n",
                pip->name, pip->first_gpio, pip->last_gpio);
 
        setup_data_regs(pip);
@@ -602,3 +604,10 @@ int register_pinmux(struct pinmux_info *pip)
 
        return gpiochip_add(chip);
 }
+
+int unregister_pinmux(struct pinmux_info *pip)
+{
+       pr_info("%s deregistering\n", pip->name);
+
+       return gpiochip_remove(&pip->chip);
+}
index 07c08af9f8f6ab418eab61bb960b84cad805e81c..30cae70874f4a1f10dd564aee7f65858091a10c3 100644 (file)
@@ -92,5 +92,6 @@ struct pinmux_info {
 };
 
 int register_pinmux(struct pinmux_info *pip);
+int unregister_pinmux(struct pinmux_info *pip);
 
 #endif /* __SH_PFC_H */