mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-01 10:45:49 +00:00
725218f1d8
The updated SoundWire Intel driver will need to rely on Extended HDaudio links for power management, but it doesn't need to be aware of all the HDaudio structures. Add convenience helpers to avoid polluting SoundWire drivers too much with HDaudio information. Since the SoundWire/Intel solution already takes the lock at a higher level, the _unlocked PM helpers are used. Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Reviewed-by: Rander Wang <rander.wang@intel.com> Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com> Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com> Reviewed-by: Takashi Iwai <tiwai@suse.de> Link: https://lore.kernel.org/r/20230404104127.5629-10-peter.ujfalusi@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
73 lines
2.2 KiB
C
73 lines
2.2 KiB
C
/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) */
|
|
/*
|
|
* This file is provided under a dual BSD/GPLv2 license. When using or
|
|
* redistributing this file, you may do so under either license.
|
|
*
|
|
* Copyright(c) 2022-2023 Intel Corporation. All rights reserved.
|
|
*/
|
|
|
|
struct hdac_bus;
|
|
|
|
#if IS_ENABLED(CONFIG_SND_SOC_SOF_HDA_MLINK)
|
|
|
|
int hda_bus_ml_init(struct hdac_bus *bus);
|
|
void hda_bus_ml_free(struct hdac_bus *bus);
|
|
|
|
int hdac_bus_eml_power_up(struct hdac_bus *bus, bool alt, int elid, int sublink);
|
|
int hdac_bus_eml_power_up_unlocked(struct hdac_bus *bus, bool alt, int elid, int sublink);
|
|
|
|
int hdac_bus_eml_power_down(struct hdac_bus *bus, bool alt, int elid, int sublink);
|
|
int hdac_bus_eml_power_down_unlocked(struct hdac_bus *bus, bool alt, int elid, int sublink);
|
|
|
|
int hdac_bus_eml_sdw_power_up_unlocked(struct hdac_bus *bus, int sublink);
|
|
int hdac_bus_eml_sdw_power_down_unlocked(struct hdac_bus *bus, int sublink);
|
|
|
|
void hda_bus_ml_put_all(struct hdac_bus *bus);
|
|
void hda_bus_ml_reset_losidv(struct hdac_bus *bus);
|
|
int hda_bus_ml_resume(struct hdac_bus *bus);
|
|
int hda_bus_ml_suspend(struct hdac_bus *bus);
|
|
|
|
#else
|
|
|
|
static inline int
|
|
hda_bus_ml_init(struct hdac_bus *bus) { return 0; }
|
|
|
|
static inline void hda_bus_ml_free(struct hdac_bus *bus) { }
|
|
|
|
static inline int
|
|
hdac_bus_eml_power_up(struct hdac_bus *bus, bool alt, int elid, int sublink)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
static inline int
|
|
hdac_bus_eml_power_up_unlocked(struct hdac_bus *bus, bool alt, int elid, int sublink)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
static inline int
|
|
hdac_bus_eml_power_down(struct hdac_bus *bus, bool alt, int elid, int sublink)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
static inline int
|
|
hdac_bus_eml_power_down_unlocked(struct hdac_bus *bus, bool alt, int elid, int sublink)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
static inline int
|
|
hdac_bus_eml_sdw_power_up_unlocked(struct hdac_bus *bus, int sublink) { return 0; }
|
|
|
|
static inline int
|
|
hdac_bus_eml_sdw_power_down_unlocked(struct hdac_bus *bus, int sublink) { return 0; }
|
|
|
|
static inline void hda_bus_ml_put_all(struct hdac_bus *bus) { }
|
|
static inline void hda_bus_ml_reset_losidv(struct hdac_bus *bus) { }
|
|
static inline int hda_bus_ml_resume(struct hdac_bus *bus) { return 0; }
|
|
static inline int hda_bus_ml_suspend(struct hdac_bus *bus) { return 0; }
|
|
|
|
#endif /* CONFIG_SND_SOC_SOF_HDA */
|