mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-12-28 16:56:26 +00:00
ALSA: hda: codec: Reduce CONFIG_PM dependencies
CONFIG_PM is almost mandatory nowadays for real systems, but we have lots of CONFIG_PM dependent code in snd-hda-codec helper code. Let's reduce the dependencies of CONFIG_PM now. The only visible drawback would be a couple of superfluous trace entries for runtime PM, but we can live with that. Signed-off-by: Takashi Iwai <tiwai@suse.de> Link: https://lore.kernel.org/r/20240506161359.6960-3-tiwai@suse.de
This commit is contained in:
parent
32d7c6cdc9
commit
9e993b3d72
@ -109,11 +109,9 @@ struct hda_codec_ops {
|
||||
void (*unsol_event)(struct hda_codec *codec, unsigned int res);
|
||||
void (*set_power_state)(struct hda_codec *codec, hda_nid_t fg,
|
||||
unsigned int power_state);
|
||||
#ifdef CONFIG_PM
|
||||
int (*suspend)(struct hda_codec *codec);
|
||||
int (*resume)(struct hda_codec *codec);
|
||||
int (*check_power_status)(struct hda_codec *codec, hda_nid_t nid);
|
||||
#endif
|
||||
void (*stream_pm)(struct hda_codec *codec, hda_nid_t nid, bool on);
|
||||
};
|
||||
|
||||
@ -259,11 +257,9 @@ struct hda_codec {
|
||||
unsigned int no_stream_clean_at_suspend:1; /* do not clean streams at suspend */
|
||||
unsigned int ctl_dev_id:1; /* old control element id build behaviour */
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
unsigned long power_on_acct;
|
||||
unsigned long power_off_acct;
|
||||
unsigned long power_jiffies;
|
||||
#endif
|
||||
|
||||
/* filter the requested power state per nid */
|
||||
unsigned int (*power_filter)(struct hda_codec *codec, hda_nid_t nid,
|
||||
@ -481,10 +477,8 @@ extern const struct dev_pm_ops hda_codec_driver_pm;
|
||||
static inline
|
||||
int hda_call_check_power_status(struct hda_codec *codec, hda_nid_t nid)
|
||||
{
|
||||
#ifdef CONFIG_PM
|
||||
if (codec->patch_ops.check_power_status)
|
||||
return codec->patch_ops.check_power_status(codec, nid);
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -495,14 +489,9 @@ int hda_call_check_power_status(struct hda_codec *codec, hda_nid_t nid)
|
||||
#define snd_hda_power_up_pm(codec) snd_hdac_power_up_pm(&(codec)->core)
|
||||
#define snd_hda_power_down(codec) snd_hdac_power_down(&(codec)->core)
|
||||
#define snd_hda_power_down_pm(codec) snd_hdac_power_down_pm(&(codec)->core)
|
||||
#ifdef CONFIG_PM
|
||||
void snd_hda_codec_set_power_save(struct hda_codec *codec, int delay);
|
||||
void snd_hda_set_power_save(struct hda_bus *bus, int delay);
|
||||
void snd_hda_update_power_acct(struct hda_codec *codec);
|
||||
#else
|
||||
static inline void snd_hda_codec_set_power_save(struct hda_codec *codec, int delay) {}
|
||||
static inline void snd_hda_set_power_save(struct hda_bus *bus, int delay) {}
|
||||
#endif
|
||||
|
||||
static inline bool hda_codec_need_resume(struct hda_codec *codec)
|
||||
{
|
||||
|
@ -616,7 +616,6 @@ void snd_hda_shutup_pins(struct hda_codec *codec)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(snd_hda_shutup_pins);
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
/* Restore the pin controls cleared previously via snd_hda_shutup_pins() */
|
||||
static void restore_shutup_pins(struct hda_codec *codec)
|
||||
{
|
||||
@ -634,7 +633,6 @@ static void restore_shutup_pins(struct hda_codec *codec)
|
||||
}
|
||||
codec->pins_shutup = 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
static void hda_jackpoll_work(struct work_struct *work)
|
||||
{
|
||||
@ -1001,9 +999,7 @@ int snd_hda_codec_device_new(struct hda_bus *bus, struct snd_card *card,
|
||||
codec->card = card;
|
||||
codec->addr = codec_addr;
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
codec->power_jiffies = jiffies;
|
||||
#endif
|
||||
|
||||
snd_hda_sysfs_init(codec);
|
||||
|
||||
@ -1238,7 +1234,6 @@ static void purify_inactive_streams(struct hda_codec *codec)
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
/* clean up all streams; called from suspend */
|
||||
static void hda_cleanup_all_streams(struct hda_codec *codec)
|
||||
{
|
||||
@ -1250,7 +1245,6 @@ static void hda_cleanup_all_streams(struct hda_codec *codec)
|
||||
really_cleanup_stream(codec, p);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* amp access functions
|
||||
@ -2858,7 +2852,6 @@ static void hda_exec_init_verbs(struct hda_codec *codec)
|
||||
static inline void hda_exec_init_verbs(struct hda_codec *codec) {}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
/* update the power on/off account with the current jiffies */
|
||||
static void update_power_acct(struct hda_codec *codec, bool on)
|
||||
{
|
||||
@ -2966,9 +2959,6 @@ static int hda_codec_runtime_resume(struct device *dev)
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif /* CONFIG_PM */
|
||||
|
||||
#ifdef CONFIG_PM_SLEEP
|
||||
static int hda_codec_pm_prepare(struct device *dev)
|
||||
{
|
||||
struct hda_codec *codec = dev_to_hda_codec(dev);
|
||||
@ -3023,22 +3013,19 @@ static int hda_codec_pm_restore(struct device *dev)
|
||||
dev->power.power_state = PMSG_RESTORE;
|
||||
return pm_runtime_force_resume(dev);
|
||||
}
|
||||
#endif /* CONFIG_PM_SLEEP */
|
||||
|
||||
/* referred in hda_bind.c */
|
||||
const struct dev_pm_ops hda_codec_driver_pm = {
|
||||
#ifdef CONFIG_PM_SLEEP
|
||||
.prepare = hda_codec_pm_prepare,
|
||||
.complete = hda_codec_pm_complete,
|
||||
.suspend = hda_codec_pm_suspend,
|
||||
.resume = hda_codec_pm_resume,
|
||||
.freeze = hda_codec_pm_freeze,
|
||||
.thaw = hda_codec_pm_thaw,
|
||||
.poweroff = hda_codec_pm_suspend,
|
||||
.restore = hda_codec_pm_restore,
|
||||
#endif /* CONFIG_PM_SLEEP */
|
||||
SET_RUNTIME_PM_OPS(hda_codec_runtime_suspend, hda_codec_runtime_resume,
|
||||
NULL)
|
||||
.prepare = pm_sleep_ptr(hda_codec_pm_prepare),
|
||||
.complete = pm_sleep_ptr(hda_codec_pm_complete),
|
||||
.suspend = pm_sleep_ptr(hda_codec_pm_suspend),
|
||||
.resume = pm_sleep_ptr(hda_codec_pm_resume),
|
||||
.freeze = pm_sleep_ptr(hda_codec_pm_freeze),
|
||||
.thaw = pm_sleep_ptr(hda_codec_pm_thaw),
|
||||
.poweroff = pm_sleep_ptr(hda_codec_pm_suspend),
|
||||
.restore = pm_sleep_ptr(hda_codec_pm_restore),
|
||||
.runtime_suspend = pm_ptr(hda_codec_runtime_suspend),
|
||||
.runtime_resume = pm_ptr(hda_codec_runtime_resume),
|
||||
};
|
||||
|
||||
/* suspend the codec at shutdown; called from driver's shutdown callback */
|
||||
@ -3425,7 +3412,6 @@ int snd_hda_add_new_ctls(struct hda_codec *codec,
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(snd_hda_add_new_ctls);
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
/**
|
||||
* snd_hda_codec_set_power_save - Configure codec's runtime PM
|
||||
* @codec: codec device to configure
|
||||
@ -3516,7 +3502,6 @@ int snd_hda_check_amp_list_power(struct hda_codec *codec,
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(snd_hda_check_amp_list_power);
|
||||
#endif
|
||||
|
||||
/*
|
||||
* input MUX helper
|
||||
@ -4060,12 +4045,10 @@ void snd_hda_bus_reset_codecs(struct hda_bus *bus)
|
||||
/* FIXME: maybe a better way needed for forced reset */
|
||||
if (current_work() != &codec->jackpoll_work.work)
|
||||
cancel_delayed_work_sync(&codec->jackpoll_work);
|
||||
#ifdef CONFIG_PM
|
||||
if (hda_codec_is_power_on(codec)) {
|
||||
hda_call_codec_suspend(codec);
|
||||
hda_call_codec_resume(codec);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1075,11 +1075,9 @@ irqreturn_t azx_interrupt(int irq, void *dev_id)
|
||||
bool active, handled = false;
|
||||
int repeat = 0; /* count for avoiding endless loop */
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
if (azx_has_pm_runtime(chip))
|
||||
if (!pm_runtime_active(chip->card->dev))
|
||||
return IRQ_NONE;
|
||||
#endif
|
||||
|
||||
spin_lock(&bus->reg_lock);
|
||||
|
||||
|
@ -26,7 +26,6 @@ struct hda_hint {
|
||||
const char *val; /* contained in the same alloc as key */
|
||||
};
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
static ssize_t power_on_acct_show(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
char *buf)
|
||||
@ -47,7 +46,6 @@ static ssize_t power_off_acct_show(struct device *dev,
|
||||
|
||||
static DEVICE_ATTR_RO(power_on_acct);
|
||||
static DEVICE_ATTR_RO(power_off_acct);
|
||||
#endif /* CONFIG_PM */
|
||||
|
||||
#define CODEC_INFO_SHOW(type, field) \
|
||||
static ssize_t type##_show(struct device *dev, \
|
||||
@ -745,10 +743,8 @@ static struct attribute *hda_dev_attrs[] = {
|
||||
&dev_attr_modelname.attr,
|
||||
&dev_attr_init_pin_configs.attr,
|
||||
&dev_attr_driver_pin_configs.attr,
|
||||
#ifdef CONFIG_PM
|
||||
&dev_attr_power_on_acct.attr,
|
||||
&dev_attr_power_off_acct.attr,
|
||||
#endif
|
||||
#ifdef CONFIG_SND_HDA_RECONFIG
|
||||
&dev_attr_init_verbs.attr,
|
||||
&dev_attr_hints.attr,
|
||||
|
Loading…
Reference in New Issue
Block a user