|
@@ -501,23 +501,27 @@ EXPORT_SYMBOL_GPL(snd_hdac_get_connections);
|
|
* This function calls the runtime PM helper to power up the given codec.
|
|
* This function calls the runtime PM helper to power up the given codec.
|
|
* Unlike snd_hdac_power_up_pm(), you should call this only for the code
|
|
* Unlike snd_hdac_power_up_pm(), you should call this only for the code
|
|
* path that isn't included in PM path. Otherwise it gets stuck.
|
|
* path that isn't included in PM path. Otherwise it gets stuck.
|
|
|
|
+ *
|
|
|
|
+ * Returns zero if successful, or a negative error code.
|
|
*/
|
|
*/
|
|
-void snd_hdac_power_up(struct hdac_device *codec)
|
|
|
|
|
|
+int snd_hdac_power_up(struct hdac_device *codec)
|
|
{
|
|
{
|
|
- pm_runtime_get_sync(&codec->dev);
|
|
|
|
|
|
+ return pm_runtime_get_sync(&codec->dev);
|
|
}
|
|
}
|
|
EXPORT_SYMBOL_GPL(snd_hdac_power_up);
|
|
EXPORT_SYMBOL_GPL(snd_hdac_power_up);
|
|
|
|
|
|
/**
|
|
/**
|
|
* snd_hdac_power_down - power down the codec
|
|
* snd_hdac_power_down - power down the codec
|
|
* @codec: the codec object
|
|
* @codec: the codec object
|
|
|
|
+ *
|
|
|
|
+ * Returns zero if successful, or a negative error code.
|
|
*/
|
|
*/
|
|
-void snd_hdac_power_down(struct hdac_device *codec)
|
|
|
|
|
|
+int snd_hdac_power_down(struct hdac_device *codec)
|
|
{
|
|
{
|
|
struct device *dev = &codec->dev;
|
|
struct device *dev = &codec->dev;
|
|
|
|
|
|
pm_runtime_mark_last_busy(dev);
|
|
pm_runtime_mark_last_busy(dev);
|
|
- pm_runtime_put_autosuspend(dev);
|
|
|
|
|
|
+ return pm_runtime_put_autosuspend(dev);
|
|
}
|
|
}
|
|
EXPORT_SYMBOL_GPL(snd_hdac_power_down);
|
|
EXPORT_SYMBOL_GPL(snd_hdac_power_down);
|
|
|
|
|
|
@@ -529,11 +533,14 @@ EXPORT_SYMBOL_GPL(snd_hdac_power_down);
|
|
* which may be called by PM suspend/resume again. OTOH, if a power-up
|
|
* which may be called by PM suspend/resume again. OTOH, if a power-up
|
|
* call must wake up the sleeper (e.g. in a kctl callback), use
|
|
* call must wake up the sleeper (e.g. in a kctl callback), use
|
|
* snd_hdac_power_up() instead.
|
|
* snd_hdac_power_up() instead.
|
|
|
|
+ *
|
|
|
|
+ * Returns zero if successful, or a negative error code.
|
|
*/
|
|
*/
|
|
-void snd_hdac_power_up_pm(struct hdac_device *codec)
|
|
|
|
|
|
+int snd_hdac_power_up_pm(struct hdac_device *codec)
|
|
{
|
|
{
|
|
if (!atomic_inc_not_zero(&codec->in_pm))
|
|
if (!atomic_inc_not_zero(&codec->in_pm))
|
|
- snd_hdac_power_up(codec);
|
|
|
|
|
|
+ return snd_hdac_power_up(codec);
|
|
|
|
+ return 0;
|
|
}
|
|
}
|
|
EXPORT_SYMBOL_GPL(snd_hdac_power_up_pm);
|
|
EXPORT_SYMBOL_GPL(snd_hdac_power_up_pm);
|
|
|
|
|
|
@@ -543,11 +550,14 @@ EXPORT_SYMBOL_GPL(snd_hdac_power_up_pm);
|
|
*
|
|
*
|
|
* Like snd_hdac_power_up_pm(), this function is used in a recursive
|
|
* Like snd_hdac_power_up_pm(), this function is used in a recursive
|
|
* code path like init code which may be called by PM suspend/resume again.
|
|
* code path like init code which may be called by PM suspend/resume again.
|
|
|
|
+ *
|
|
|
|
+ * Returns zero if successful, or a negative error code.
|
|
*/
|
|
*/
|
|
-void snd_hdac_power_down_pm(struct hdac_device *codec)
|
|
|
|
|
|
+int snd_hdac_power_down_pm(struct hdac_device *codec)
|
|
{
|
|
{
|
|
if (atomic_dec_if_positive(&codec->in_pm) < 0)
|
|
if (atomic_dec_if_positive(&codec->in_pm) < 0)
|
|
- snd_hdac_power_down(codec);
|
|
|
|
|
|
+ return snd_hdac_power_down(codec);
|
|
|
|
+ return 0;
|
|
}
|
|
}
|
|
EXPORT_SYMBOL_GPL(snd_hdac_power_down_pm);
|
|
EXPORT_SYMBOL_GPL(snd_hdac_power_down_pm);
|
|
#endif
|
|
#endif
|