Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

siox: Provide a devm variant of siox_master_register()

This allows to simplify siox master drivers in the next step.

Acked-by: Thorsten Scherer <t.scherer@eckelmann.de>
Link: https://lore.kernel.org/r/e961dfb3e94f106b16f5eacff2110fc7fa0cab13.1708328466.git.u.kleine-koenig@pengutronix.de
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>

+21
+19
drivers/siox/siox-core.c
··· 795 795 } 796 796 EXPORT_SYMBOL_GPL(siox_master_unregister); 797 797 798 + static void devm_siox_master_unregister(void *data) 799 + { 800 + struct siox_master *smaster = data; 801 + 802 + siox_master_unregister(smaster); 803 + } 804 + 805 + int devm_siox_master_register(struct device *dev, struct siox_master *smaster) 806 + { 807 + int ret; 808 + 809 + ret = siox_master_register(smaster); 810 + if (ret) 811 + return ret; 812 + 813 + return devm_add_action_or_reset(dev, devm_siox_master_unregister, smaster); 814 + } 815 + EXPORT_SYMBOL_GPL(devm_siox_master_register); 816 + 798 817 static struct siox_device *siox_device_add(struct siox_master *smaster, 799 818 const char *type, size_t inbytes, 800 819 size_t outbytes, u8 statustype)
+2
drivers/siox/siox.h
··· 49 49 50 50 int siox_master_register(struct siox_master *smaster); 51 51 void siox_master_unregister(struct siox_master *smaster); 52 + 53 + int devm_siox_master_register(struct device *dev, struct siox_master *smaster);