]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - drivers/pinctrl/core.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
[linux.git] / drivers / pinctrl / core.c
index 46600d9380ea6a43e8b9be9b1810aa697b97a4d4..446d84fe0e31c7ec471bfc7fa66a3e782996ac04 100644 (file)
@@ -1376,8 +1376,15 @@ void devm_pinctrl_put(struct pinctrl *p)
 }
 EXPORT_SYMBOL_GPL(devm_pinctrl_put);
 
-int pinctrl_register_map(const struct pinctrl_map *maps, unsigned num_maps,
-                        bool dup)
+/**
+ * pinctrl_register_mappings() - register a set of pin controller mappings
+ * @maps: the pincontrol mappings table to register. Note the pinctrl-core
+ *     keeps a reference to the passed in maps, so they should _not_ be
+ *     marked with __initdata.
+ * @num_maps: the number of maps in the mapping table
+ */
+int pinctrl_register_mappings(const struct pinctrl_map *maps,
+                             unsigned num_maps)
 {
        int i, ret;
        struct pinctrl_maps *maps_node;
@@ -1430,17 +1437,8 @@ int pinctrl_register_map(const struct pinctrl_map *maps, unsigned num_maps,
        if (!maps_node)
                return -ENOMEM;
 
+       maps_node->maps = maps;
        maps_node->num_maps = num_maps;
-       if (dup) {
-               maps_node->maps = kmemdup(maps, sizeof(*maps) * num_maps,
-                                         GFP_KERNEL);
-               if (!maps_node->maps) {
-                       kfree(maps_node);
-                       return -ENOMEM;
-               }
-       } else {
-               maps_node->maps = maps;
-       }
 
        mutex_lock(&pinctrl_maps_mutex);
        list_add_tail(&maps_node->node, &pinctrl_maps);
@@ -1448,22 +1446,14 @@ int pinctrl_register_map(const struct pinctrl_map *maps, unsigned num_maps,
 
        return 0;
 }
+EXPORT_SYMBOL_GPL(pinctrl_register_mappings);
 
 /**
- * pinctrl_register_mappings() - register a set of pin controller mappings
- * @maps: the pincontrol mappings table to register. This should probably be
- *     marked with __initdata so it can be discarded after boot. This
- *     function will perform a shallow copy for the mapping entries.
- * @num_maps: the number of maps in the mapping table
+ * pinctrl_unregister_mappings() - unregister a set of pin controller mappings
+ * @maps: the pincontrol mappings table passed to pinctrl_register_mappings()
+ *     when registering the mappings.
  */
-int pinctrl_register_mappings(const struct pinctrl_map *maps,
-                             unsigned num_maps)
-{
-       return pinctrl_register_map(maps, num_maps, true);
-}
-EXPORT_SYMBOL_GPL(pinctrl_register_mappings);
-
-void pinctrl_unregister_map(const struct pinctrl_map *map)
+void pinctrl_unregister_mappings(const struct pinctrl_map *map)
 {
        struct pinctrl_maps *maps_node;
 
@@ -1478,6 +1468,7 @@ void pinctrl_unregister_map(const struct pinctrl_map *map)
        }
        mutex_unlock(&pinctrl_maps_mutex);
 }
+EXPORT_SYMBOL_GPL(pinctrl_unregister_mappings);
 
 /**
  * pinctrl_force_sleep() - turn a given controller device into sleep state