Files
linux/include/linux
Hans de Goede c72bed23b9 pinctrl: Allow modules to use pinctrl_[un]register_mappings
Currently only the drivers/pinctrl/devicetree.c code allows registering
pinctrl-mappings which may later be unregistered, all other mappings
are assumed to be permanent.

Non-dt platforms may also want to register pinctrl mappings from code which
is build as a module, which requires being able to unregister the mapping
when the module is unloaded to avoid dangling pointers.

To allow unregistering the mappings the devicetree code uses 2 internal
functions: pinctrl_register_map and pinctrl_unregister_map.

pinctrl_register_map allows the devicetree code to tell the core to
not memdup the mappings as it retains ownership of them and
pinctrl_unregister_map does the unregistering, note this only works
when the mappings where not memdupped.

The only code relying on the memdup/shallow-copy done by
pinctrl_register_mappings is arch/arm/mach-u300/core.c this commit
replaces the __initdata with const, so that the shallow-copy is no
longer necessary.

After that we can get rid of the internal pinctrl_unregister_map function
and just use pinctrl_register_mappings directly everywhere.

This commit also renames pinctrl_unregister_map to
pinctrl_unregister_mappings so that its naming matches its
pinctrl_register_mappings counter-part and exports it.

Together these 2 changes will allow non-dt platform code to
register pinctrl-mappings from modules without breaking things on
module unload (as they can now unregister the mapping on unload).

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Link: https://lore.kernel.org/r/20191216205122.1850923-2-hdegoede@redhat.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2019-12-30 14:27:17 +01:00
..
2019-08-09 09:15:05 +02:00
2019-09-16 09:56:27 -07:00
2019-05-31 11:13:10 +02:00
2019-11-12 11:43:29 -05:00
2019-10-31 16:54:00 +05:30
2019-08-20 22:09:52 +02:00
2019-05-14 19:52:50 -07:00
2019-07-01 08:18:54 -06:00
2019-11-15 23:44:48 +01:00
2019-12-03 07:36:38 -07:00
2019-06-12 20:27:13 +02:00
2019-11-26 10:26:26 +01:00
2019-10-09 19:33:43 -07:00
2019-12-03 11:20:37 +01:00
2019-09-05 19:52:33 -06:00
2019-02-28 03:28:53 -05:00
2019-02-28 08:24:23 -07:00
2019-11-20 09:40:10 +01:00
2019-12-01 12:59:06 -08:00
2019-02-15 16:54:38 +01:00
2019-09-05 11:40:54 +02:00
2019-10-02 06:36:50 -07:00
2019-07-05 21:34:50 +02:00
2019-06-26 13:19:46 -07:00
2019-10-04 12:31:46 -07:00
2019-10-15 13:34:25 +02:00
2019-11-11 09:02:56 +01:00
2019-06-10 13:00:24 +02:00
2019-04-08 22:56:14 +02:00
2019-12-04 19:44:14 -08:00
2019-09-02 11:43:54 +01:00
2019-10-15 20:40:06 -07:00
2019-03-07 18:32:03 -08:00
2019-09-05 12:32:05 +02:00
2019-08-14 15:30:35 +02:00
2019-08-08 09:09:25 +02:00
2019-11-15 13:49:04 -05:00
2019-11-14 19:06:47 -08:00
2019-07-08 19:25:19 -07:00
2019-11-06 08:55:23 -05:00
2019-10-09 12:06:19 -04:00
2019-11-06 08:55:23 -05:00
2019-06-13 09:02:33 -04:00
2019-02-20 07:22:10 -07:00
2019-02-08 15:02:49 -08:00
2019-07-26 17:01:29 -06:00
2019-11-13 19:09:47 +08:00
2019-07-16 19:23:25 -07:00
2019-06-15 12:25:49 +02:00
2019-05-14 19:52:48 -07:00
2019-08-23 16:39:26 +01:00
2019-10-19 22:55:46 +02:00
2019-11-14 13:07:48 +08:00
2019-12-04 19:44:14 -08:00
2019-10-10 14:55:24 -07:00
2019-05-16 15:51:55 -07:00
2019-12-01 06:29:17 -08:00
2019-11-13 12:15:34 -08:00
2019-02-07 16:38:35 +01:00
2019-11-13 00:33:21 +11:00
2019-11-07 07:00:26 +01:00
2019-08-30 07:27:17 -07:00
2019-08-01 20:51:22 +02:00
2019-08-20 17:05:05 +02:00
2019-07-31 19:03:35 +02:00
2019-01-11 18:05:40 -08:00
2019-11-14 12:20:02 +08:00
2019-05-15 17:35:54 +01:00
2019-10-14 15:04:01 -07:00