Hi,
On 30-12-2019 14:31, Linus Walleij wrote:
On Mon, Dec 16, 2019 at 9:51 PM Hans de Goede hdegoede@redhat.com wrote:
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
This v2 works fine for me, I applied it to this immutable branch in the pinctrl tree: https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl.git/log...
And pulled that into the pinctrl "devel" branch for v5.6.
Please pull this immutable branch into the Intel DRM tree and apply the rest of the stuff on top!
Great, thank you!
Regards,
Hans
p.s.
Happy New year everyone.