ALSA SoC is calling try_module_get()/module_put() based on
component->driver->module_get_upon_open.
To keep simple and readable code, we should create its function.
This patch adds new snd_soc_component_get/put().
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87h8795ro4.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
 void snd_soc_component_exit_regmap(struct snd_soc_component *component);
 #endif
 
+#define snd_soc_component_module_get_when_probe(component)\
+       snd_soc_component_module_get(component, 0)
+#define snd_soc_component_module_get_when_open(component)      \
+       snd_soc_component_module_get(component, 1)
+int snd_soc_component_module_get(struct snd_soc_component *component,
+                                int upon_open);
+#define snd_soc_component_module_put_when_remove(component)    \
+       snd_soc_component_module_put(component, 0)
+#define snd_soc_component_module_put_when_close(component)     \
+       snd_soc_component_module_put(component, 1)
+void snd_soc_component_module_put(struct snd_soc_component *component,
+                                 int upon_open);
+
 static inline void snd_soc_component_set_drvdata(struct snd_soc_component *c,
                                                 void *data)
 {
 
 // Copyright (C) 2019 Renesas Electronics Corp.
 // Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
 //
+#include <linux/module.h>
 #include <sound/soc.h>
 
 /**
        return -ENOTSUPP;
 }
 EXPORT_SYMBOL_GPL(snd_soc_component_set_jack);
+
+int snd_soc_component_module_get(struct snd_soc_component *component,
+                                int upon_open)
+{
+       if (component->driver->module_get_upon_open == !!upon_open &&
+           !try_module_get(component->dev->driver->owner))
+               return -ENODEV;
+
+       return 0;
+}
+
+void snd_soc_component_module_put(struct snd_soc_component *component,
+                                 int upon_open)
+{
+       if (component->driver->module_get_upon_open == !!upon_open)
+               module_put(component->dev->driver->owner);
+}
 
        snd_soc_dapm_free(snd_soc_component_get_dapm(component));
        soc_cleanup_component_debugfs(component);
        component->card = NULL;
-       if (!component->driver->module_get_upon_open)
-               module_put(component->dev->driver->owner);
+       snd_soc_component_module_put_when_close(component);
 }
 
 static void soc_remove_component(struct snd_soc_component *component)
                return 0;
        }
 
-       if (!component->driver->module_get_upon_open &&
-           !try_module_get(component->dev->driver->owner))
-               return -ENODEV;
+       ret = snd_soc_component_module_get_when_probe(component);
+       if (ret < 0)
+               return ret;
 
        component->card = card;
        dapm->card = card;
 
 #include <linux/delay.h>
 #include <linux/pinctrl/consumer.h>
 #include <linux/pm_runtime.h>
-#include <linux/module.h>
 #include <linux/slab.h>
 #include <linux/workqueue.h>
 #include <linux/export.h>
                component = rtdcom->component;
                *last = component;
 
-               if (component->driver->module_get_upon_open &&
-                   !try_module_get(component->dev->driver->owner)) {
+               ret = snd_soc_component_module_get_when_open(component);
+               if (ret < 0) {
                        dev_err(component->dev,
                                "ASoC: can't get module %s\n",
                                component->name);
-                       return -ENODEV;
+                       return ret;
                }
 
                if (!component->driver->ops ||
                    component->driver->ops->close)
                        component->driver->ops->close(substream);
 
-               if (component->driver->module_get_upon_open)
-                       module_put(component->dev->driver->owner);
+               snd_soc_component_module_put_when_close(component);
        }
 
        return 0;