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_alloc()

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/ad141dd22c7d95ad0bd347f257ce586e1afb22a4.1708328466.git.u.kleine-koenig@pengutronix.de
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>

+27
+25
drivers/siox/siox-core.c
··· 707 707 } 708 708 EXPORT_SYMBOL_GPL(siox_master_alloc); 709 709 710 + static void devm_siox_master_put(void *data) 711 + { 712 + struct siox_master *smaster = data; 713 + 714 + siox_master_put(smaster); 715 + } 716 + 717 + struct siox_master *devm_siox_master_alloc(struct device *dev, 718 + size_t size) 719 + { 720 + struct siox_master *smaster; 721 + int ret; 722 + 723 + smaster = siox_master_alloc(dev, size); 724 + if (!smaster) 725 + return NULL; 726 + 727 + ret = devm_add_action_or_reset(dev, devm_siox_master_put, smaster); 728 + if (ret) 729 + return NULL; 730 + 731 + return smaster; 732 + } 733 + EXPORT_SYMBOL_GPL(devm_siox_master_alloc); 734 + 710 735 int siox_master_register(struct siox_master *smaster) 711 736 { 712 737 int ret;
+2
drivers/siox/siox.h
··· 45 45 put_device(&smaster->dev); 46 46 } 47 47 48 + struct siox_master *devm_siox_master_alloc(struct device *dev, size_t size); 49 + 48 50 int siox_master_register(struct siox_master *smaster); 49 51 void siox_master_unregister(struct siox_master *smaster);