* [PATCH v2 0/4] ALSA: hda: Expose codec organization functions
@ 2022-02-14 10:14 Cezary Rojewski
2022-02-14 10:14 ` [PATCH v2 1/4] ALSA: hda: Add snd_hdac_ext_bus_link_at() helper Cezary Rojewski
` (4 more replies)
0 siblings, 5 replies; 7+ messages in thread
From: Cezary Rojewski @ 2022-02-14 10:14 UTC (permalink / raw)
To: alsa-devel
Cc: Cezary Rojewski, rad, upstream, harshapriya.n, tiwai,
pierre-louis.bossart, hdegoede, broonie, amadeuszx.slawinski,
cujomalainey, lma
Changes expose several function that are currently unavailable for
HDA-DSP drivers for use. Those functions are:
snd_hda_codec_cleanup_for_unbind()
snd_hda_codec_set_power_save()
snd_hda_codec_register()
snd_hda_codec_unregister()
snd_hda_codec_device_init()
This allows upcoming AVS driver [1] to re-use even mode of HDA related
code that is currently available in sound/pci/hda and sound/hda and
prevent any code duplication within avs-driver that would otherwise had
to happen.
Last patch in the series provides snd_hdac_ext_bus_link_at() - a helper
function which allows for retrieval of HDA segment (link) based on codec
address directly. This is simpler than parsing codec-name first to
extract the address what is the case for snd_hdac_ext_bus_get_link().
The latter function is updated to re-use newly added one so core logic
is not duplicated after the addition.
Changes v1 -> v2:
- snd_hda_codec_new() now calls snd_hda_codec_device_new() with
'snddev_managed' param set to 'true', reported by Kai
[1]: https://lore.kernel.org/all/20211208111301.1817725-1-cezary.rojewski@intel.com/
Cezary Rojewski (4):
ALSA: hda: Add snd_hdac_ext_bus_link_at() helper
ALSA: hda: Update and expose snd_hda_codec_device_init()
ALSA: hda: Update and expose codec register procedures
ALSA: hda: Expose codec cleanup and power-save functions
include/sound/hda_codec.h | 11 +++-
include/sound/hdaudio_ext.h | 1 +
sound/hda/ext/hdac_ext_controller.c | 31 +++++++---
sound/pci/hda/hda_codec.c | 94 ++++++++++++++++++++---------
sound/pci/hda/hda_local.h | 2 -
sound/soc/codecs/hdac_hda.c | 2 +-
6 files changed, 100 insertions(+), 41 deletions(-)
--
2.25.1
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v2 1/4] ALSA: hda: Add snd_hdac_ext_bus_link_at() helper
2022-02-14 10:14 [PATCH v2 0/4] ALSA: hda: Expose codec organization functions Cezary Rojewski
@ 2022-02-14 10:14 ` Cezary Rojewski
2022-02-14 10:14 ` [PATCH v2 2/4] ALSA: hda: Update and expose snd_hda_codec_device_init() Cezary Rojewski
` (3 subsequent siblings)
4 siblings, 0 replies; 7+ messages in thread
From: Cezary Rojewski @ 2022-02-14 10:14 UTC (permalink / raw)
To: alsa-devel
Cc: Cezary Rojewski, rad, upstream, harshapriya.n, tiwai,
pierre-louis.bossart, hdegoede, broonie, amadeuszx.slawinski,
cujomalainey, lma
This patch exposes a new helper to directly retrieve the link from the
codec address, and makes use of this helper when retrieving the link
from the codec name.
Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
---
include/sound/hdaudio_ext.h | 1 +
sound/hda/ext/hdac_ext_controller.c | 31 +++++++++++++++++++----------
2 files changed, 22 insertions(+), 10 deletions(-)
diff --git a/include/sound/hdaudio_ext.h b/include/sound/hdaudio_ext.h
index 77123c3e4095..b0c8e4936168 100644
--- a/include/sound/hdaudio_ext.h
+++ b/include/sound/hdaudio_ext.h
@@ -28,6 +28,7 @@ void snd_hdac_ext_stream_spbcap_enable(struct hdac_bus *chip,
bool enable, int index);
int snd_hdac_ext_bus_get_ml_capabilities(struct hdac_bus *bus);
+struct hdac_ext_link *snd_hdac_ext_bus_link_at(struct hdac_bus *bus, int addr);
struct hdac_ext_link *snd_hdac_ext_bus_get_link(struct hdac_bus *bus,
const char *codec_name);
diff --git a/sound/hda/ext/hdac_ext_controller.c b/sound/hda/ext/hdac_ext_controller.c
index b2df7b4f9227..b072392725c7 100644
--- a/sound/hda/ext/hdac_ext_controller.c
+++ b/sound/hda/ext/hdac_ext_controller.c
@@ -132,6 +132,26 @@ void snd_hdac_link_free_all(struct hdac_bus *bus)
}
EXPORT_SYMBOL_GPL(snd_hdac_link_free_all);
+/**
+ * snd_hdac_ext_bus_link_at - get link at specified address
+ * @bus: link's parent bus device
+ * @addr: codec device address
+ *
+ * Returns link object or NULL if matching link is not found.
+ */
+struct hdac_ext_link *snd_hdac_ext_bus_link_at(struct hdac_bus *bus, int addr)
+{
+ struct hdac_ext_link *hlink;
+ int i;
+
+ list_for_each_entry(hlink, &bus->hlink_list, list)
+ for (i = 0; i < HDA_MAX_CODECS; i++)
+ if (hlink->lsdiid & (0x1 << addr))
+ return hlink;
+ return NULL;
+}
+EXPORT_SYMBOL_GPL(snd_hdac_ext_bus_link_at);
+
/**
* snd_hdac_ext_bus_get_link - get link based on codec name
* @bus: the pointer to HDAC bus object
@@ -140,8 +160,6 @@ EXPORT_SYMBOL_GPL(snd_hdac_link_free_all);
struct hdac_ext_link *snd_hdac_ext_bus_get_link(struct hdac_bus *bus,
const char *codec_name)
{
- int i;
- struct hdac_ext_link *hlink = NULL;
int bus_idx, addr;
if (sscanf(codec_name, "ehdaudio%dD%d", &bus_idx, &addr) != 2)
@@ -151,14 +169,7 @@ struct hdac_ext_link *snd_hdac_ext_bus_get_link(struct hdac_bus *bus,
if (addr < 0 || addr > 31)
return NULL;
- list_for_each_entry(hlink, &bus->hlink_list, list) {
- for (i = 0; i < HDA_MAX_CODECS; i++) {
- if (hlink->lsdiid & (0x1 << addr))
- return hlink;
- }
- }
-
- return NULL;
+ return snd_hdac_ext_bus_link_at(bus, addr);
}
EXPORT_SYMBOL_GPL(snd_hdac_ext_bus_get_link);
--
2.25.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v2 2/4] ALSA: hda: Update and expose snd_hda_codec_device_init()
2022-02-14 10:14 [PATCH v2 0/4] ALSA: hda: Expose codec organization functions Cezary Rojewski
2022-02-14 10:14 ` [PATCH v2 1/4] ALSA: hda: Add snd_hdac_ext_bus_link_at() helper Cezary Rojewski
@ 2022-02-14 10:14 ` Cezary Rojewski
2022-02-14 10:14 ` [PATCH v2 3/4] ALSA: hda: Update and expose codec register procedures Cezary Rojewski
` (2 subsequent siblings)
4 siblings, 0 replies; 7+ messages in thread
From: Cezary Rojewski @ 2022-02-14 10:14 UTC (permalink / raw)
To: alsa-devel
Cc: Cezary Rojewski, rad, upstream, harshapriya.n, tiwai,
pierre-louis.bossart, hdegoede, broonie, amadeuszx.slawinski,
cujomalainey, lma
With few changes, snd_hda_codec_device_init() can be re-used by ASoC
drivers. While at it, provide kernel doc for the exposed function.
Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
---
include/sound/hda_codec.h | 3 +++
sound/pci/hda/hda_codec.c | 45 +++++++++++++++++++++++++--------------
2 files changed, 32 insertions(+), 16 deletions(-)
diff --git a/include/sound/hda_codec.h b/include/sound/hda_codec.h
index 82d9daa17851..5e3cbcca42f0 100644
--- a/include/sound/hda_codec.h
+++ b/include/sound/hda_codec.h
@@ -306,6 +306,9 @@ struct hda_codec {
/*
* constructors
*/
+__printf(3, 4) struct hda_codec *
+snd_hda_codec_device_init(struct hda_bus *bus, unsigned int codec_addr,
+ const char *fmt, ...);
int snd_hda_codec_new(struct hda_bus *bus, struct snd_card *card,
unsigned int codec_addr, struct hda_codec **codecp);
int snd_hda_codec_device_new(struct hda_bus *bus, struct snd_card *card,
diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c
index 7016b48227bf..3787060ad77f 100644
--- a/sound/pci/hda/hda_codec.c
+++ b/sound/pci/hda/hda_codec.c
@@ -877,36 +877,48 @@ static void snd_hda_codec_dev_release(struct device *dev)
#define DEV_NAME_LEN 31
-static int snd_hda_codec_device_init(struct hda_bus *bus, struct snd_card *card,
- unsigned int codec_addr, struct hda_codec **codecp)
+/**
+ * snd_hda_codec_device_init - allocate HDA codec device
+ * @bus: codec's parent bus
+ * @codec_addr: the codec address on the parent bus
+ * @fmt: format string for the device's name
+ *
+ * Returns newly allocated codec device or ERR_PTR() on failure.
+ */
+struct hda_codec *
+snd_hda_codec_device_init(struct hda_bus *bus, unsigned int codec_addr,
+ const char *fmt, ...)
{
+ va_list vargs;
char name[DEV_NAME_LEN];
struct hda_codec *codec;
int err;
- dev_dbg(card->dev, "%s: entry\n", __func__);
-
if (snd_BUG_ON(!bus))
- return -EINVAL;
+ return ERR_PTR(-EINVAL);
if (snd_BUG_ON(codec_addr > HDA_MAX_CODEC_ADDRESS))
- return -EINVAL;
+ return ERR_PTR(-EINVAL);
codec = kzalloc(sizeof(*codec), GFP_KERNEL);
if (!codec)
- return -ENOMEM;
+ return ERR_PTR(-ENOMEM);
+
+ va_start(vargs, fmt);
+ vsprintf(name, fmt, vargs);
+ va_end(vargs);
- sprintf(name, "hdaudioC%dD%d", card->number, codec_addr);
err = snd_hdac_device_init(&codec->core, &bus->core, name, codec_addr);
if (err < 0) {
kfree(codec);
- return err;
+ return ERR_PTR(err);
}
+ codec->bus = bus;
codec->core.type = HDA_DEV_LEGACY;
- *codecp = codec;
- return err;
+ return codec;
}
+EXPORT_SYMBOL_GPL(snd_hda_codec_device_init);
/**
* snd_hda_codec_new - create a HDA codec
@@ -920,11 +932,13 @@ static int snd_hda_codec_device_init(struct hda_bus *bus, struct snd_card *card,
int snd_hda_codec_new(struct hda_bus *bus, struct snd_card *card,
unsigned int codec_addr, struct hda_codec **codecp)
{
- int ret;
+ struct hda_codec *codec;
- ret = snd_hda_codec_device_init(bus, card, codec_addr, codecp);
- if (ret < 0)
- return ret;
+ codec = snd_hda_codec_device_init(bus, codec_addr, "hdaudioC%dD%d",
+ card->number, codec_addr);
+ if (IS_ERR(codec))
+ return PTR_ERR(codec);
+ *codecp = codec;
return snd_hda_codec_device_new(bus, card, codec_addr, *codecp);
}
@@ -951,7 +965,6 @@ int snd_hda_codec_device_new(struct hda_bus *bus, struct snd_card *card,
codec->core.dev.release = snd_hda_codec_dev_release;
codec->core.exec_verb = codec_exec_verb;
- codec->bus = bus;
codec->card = card;
codec->addr = codec_addr;
mutex_init(&codec->spdif_mutex);
--
2.25.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v2 3/4] ALSA: hda: Update and expose codec register procedures
2022-02-14 10:14 [PATCH v2 0/4] ALSA: hda: Expose codec organization functions Cezary Rojewski
2022-02-14 10:14 ` [PATCH v2 1/4] ALSA: hda: Add snd_hdac_ext_bus_link_at() helper Cezary Rojewski
2022-02-14 10:14 ` [PATCH v2 2/4] ALSA: hda: Update and expose snd_hda_codec_device_init() Cezary Rojewski
@ 2022-02-14 10:14 ` Cezary Rojewski
2022-02-14 10:14 ` [PATCH v2 4/4] ALSA: hda: Expose codec cleanup and power-save functions Cezary Rojewski
2022-02-21 9:51 ` [PATCH v2 0/4] ALSA: hda: Expose codec organization functions Cezary Rojewski
4 siblings, 0 replies; 7+ messages in thread
From: Cezary Rojewski @ 2022-02-14 10:14 UTC (permalink / raw)
To: alsa-devel
Cc: Cezary Rojewski, rad, upstream, harshapriya.n, tiwai,
pierre-louis.bossart, hdegoede, broonie, amadeuszx.slawinski,
cujomalainey, lma
With few changes, snd_hda_codec_register() and its
unregister-counterpart can be re-used by ASoC drivers. While at it,
provide kernel doc for the exposed functions.
Due to ALSA-device vs ASoC-component organization differences, new
'snddev_managed' argument is specified allowing for better control over
codec registration process.
Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
---
Changes v1 -> v2:
- snd_hda_codec_new() now calls snd_hda_codec_device_new() with
'snddev_managed' param set to 'true', reported by Kai
include/sound/hda_codec.h | 5 ++++-
sound/pci/hda/hda_codec.c | 35 ++++++++++++++++++++++++++---------
sound/pci/hda/hda_local.h | 1 -
sound/soc/codecs/hdac_hda.c | 2 +-
4 files changed, 31 insertions(+), 12 deletions(-)
diff --git a/include/sound/hda_codec.h b/include/sound/hda_codec.h
index 5e3cbcca42f0..f74abc13414f 100644
--- a/include/sound/hda_codec.h
+++ b/include/sound/hda_codec.h
@@ -312,9 +312,12 @@ snd_hda_codec_device_init(struct hda_bus *bus, unsigned int codec_addr,
int snd_hda_codec_new(struct hda_bus *bus, struct snd_card *card,
unsigned int codec_addr, struct hda_codec **codecp);
int snd_hda_codec_device_new(struct hda_bus *bus, struct snd_card *card,
- unsigned int codec_addr, struct hda_codec *codec);
+ unsigned int codec_addr, struct hda_codec *codec,
+ bool snddev_managed);
int snd_hda_codec_configure(struct hda_codec *codec);
int snd_hda_codec_update_widgets(struct hda_codec *codec);
+void snd_hda_codec_register(struct hda_codec *codec);
+void snd_hda_codec_unregister(struct hda_codec *codec);
/*
* low level functions
diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c
index 3787060ad77f..4afdc3b68bd6 100644
--- a/sound/pci/hda/hda_codec.c
+++ b/sound/pci/hda/hda_codec.c
@@ -813,7 +813,12 @@ void snd_hda_codec_display_power(struct hda_codec *codec, bool enable)
snd_hdac_display_power(&codec->bus->core, codec->addr, enable);
}
-/* also called from hda_bind.c */
+/**
+ * snd_hda_codec_register - Finalize codec initialization
+ * @codec: codec device to register
+ *
+ * Also called from hda_bind.c
+ */
void snd_hda_codec_register(struct hda_codec *codec)
{
if (codec->registered)
@@ -826,6 +831,7 @@ void snd_hda_codec_register(struct hda_codec *codec)
codec->registered = 1;
}
}
+EXPORT_SYMBOL_GPL(snd_hda_codec_register);
static int snd_hda_codec_dev_register(struct snd_device *device)
{
@@ -833,10 +839,12 @@ static int snd_hda_codec_dev_register(struct snd_device *device)
return 0;
}
-static int snd_hda_codec_dev_free(struct snd_device *device)
+/**
+ * snd_hda_codec_unregister - Unregister specified codec device
+ * @codec: codec device to unregister
+ */
+void snd_hda_codec_unregister(struct hda_codec *codec)
{
- struct hda_codec *codec = device->device_data;
-
codec->in_freeing = 1;
/*
* snd_hda_codec_device_new() is used by legacy HDA and ASoC driver.
@@ -853,7 +861,12 @@ static int snd_hda_codec_dev_free(struct snd_device *device)
*/
if (codec->core.type == HDA_DEV_LEGACY)
put_device(hda_codec_dev(codec));
+}
+EXPORT_SYMBOL_GPL(snd_hda_codec_unregister);
+static int snd_hda_codec_dev_free(struct snd_device *device)
+{
+ snd_hda_codec_unregister(device->device_data);
return 0;
}
@@ -940,12 +953,13 @@ int snd_hda_codec_new(struct hda_bus *bus, struct snd_card *card,
return PTR_ERR(codec);
*codecp = codec;
- return snd_hda_codec_device_new(bus, card, codec_addr, *codecp);
+ return snd_hda_codec_device_new(bus, card, codec_addr, *codecp, true);
}
EXPORT_SYMBOL_GPL(snd_hda_codec_new);
int snd_hda_codec_device_new(struct hda_bus *bus, struct snd_card *card,
- unsigned int codec_addr, struct hda_codec *codec)
+ unsigned int codec_addr, struct hda_codec *codec,
+ bool snddev_managed)
{
char component[31];
hda_nid_t fg;
@@ -1020,9 +1034,12 @@ int snd_hda_codec_device_new(struct hda_bus *bus, struct snd_card *card,
codec->core.subsystem_id, codec->core.revision_id);
snd_component_add(card, component);
- err = snd_device_new(card, SNDRV_DEV_CODEC, codec, &dev_ops);
- if (err < 0)
- goto error;
+ if (snddev_managed) {
+ /* ASoC features component management instead */
+ err = snd_device_new(card, SNDRV_DEV_CODEC, codec, &dev_ops);
+ if (err < 0)
+ goto error;
+ }
/* PM runtime needs to be enabled later after binding codec */
pm_runtime_forbid(&codec->core.dev);
diff --git a/sound/pci/hda/hda_local.h b/sound/pci/hda/hda_local.h
index 8621f576446b..4c52dfb615bc 100644
--- a/sound/pci/hda/hda_local.h
+++ b/sound/pci/hda/hda_local.h
@@ -135,7 +135,6 @@ int __snd_hda_add_vmaster(struct hda_codec *codec, char *name,
#define snd_hda_add_vmaster(codec, name, tlv, followers, suffix, access) \
__snd_hda_add_vmaster(codec, name, tlv, followers, suffix, true, access, NULL)
int snd_hda_codec_reset(struct hda_codec *codec);
-void snd_hda_codec_register(struct hda_codec *codec);
void snd_hda_codec_cleanup_for_unbind(struct hda_codec *codec);
void snd_hda_codec_disconnect_pcms(struct hda_codec *codec);
diff --git a/sound/soc/codecs/hdac_hda.c b/sound/soc/codecs/hdac_hda.c
index de5955db0a5f..667f3df239c7 100644
--- a/sound/soc/codecs/hdac_hda.c
+++ b/sound/soc/codecs/hdac_hda.c
@@ -413,7 +413,7 @@ static int hdac_hda_codec_probe(struct snd_soc_component *component)
HDA_CODEC_IDX_CONTROLLER, true);
ret = snd_hda_codec_device_new(hcodec->bus, component->card->snd_card,
- hdev->addr, hcodec);
+ hdev->addr, hcodec, true);
if (ret < 0) {
dev_err(&hdev->dev, "failed to create hda codec %d\n", ret);
goto error_no_pm;
--
2.25.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v2 4/4] ALSA: hda: Expose codec cleanup and power-save functions
2022-02-14 10:14 [PATCH v2 0/4] ALSA: hda: Expose codec organization functions Cezary Rojewski
` (2 preceding siblings ...)
2022-02-14 10:14 ` [PATCH v2 3/4] ALSA: hda: Update and expose codec register procedures Cezary Rojewski
@ 2022-02-14 10:14 ` Cezary Rojewski
2022-02-21 9:51 ` [PATCH v2 0/4] ALSA: hda: Expose codec organization functions Cezary Rojewski
4 siblings, 0 replies; 7+ messages in thread
From: Cezary Rojewski @ 2022-02-14 10:14 UTC (permalink / raw)
To: alsa-devel
Cc: Cezary Rojewski, rad, upstream, harshapriya.n, tiwai,
pierre-louis.bossart, hdegoede, broonie, amadeuszx.slawinski,
cujomalainey, lma
With few changes, snd_hda_codec_set_power_save() and
snd_hda_codec_cleanup_for_unbind() can be re-used by ASoC drivers.
While at it, provide kernel doc for the exposed functions.
Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
---
include/sound/hda_codec.h | 3 +++
sound/pci/hda/hda_codec.c | 14 ++++++++++++--
sound/pci/hda/hda_local.h | 1 -
3 files changed, 15 insertions(+), 3 deletions(-)
diff --git a/include/sound/hda_codec.h b/include/sound/hda_codec.h
index f74abc13414f..77426ff58338 100644
--- a/include/sound/hda_codec.h
+++ b/include/sound/hda_codec.h
@@ -318,6 +318,7 @@ int snd_hda_codec_configure(struct hda_codec *codec);
int snd_hda_codec_update_widgets(struct hda_codec *codec);
void snd_hda_codec_register(struct hda_codec *codec);
void snd_hda_codec_unregister(struct hda_codec *codec);
+void snd_hda_codec_cleanup_for_unbind(struct hda_codec *codec);
/*
* low level functions
@@ -496,9 +497,11 @@ int hda_call_check_power_status(struct hda_codec *codec, hda_nid_t nid)
#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
diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c
index 4afdc3b68bd6..748022da0c18 100644
--- a/sound/pci/hda/hda_codec.c
+++ b/sound/pci/hda/hda_codec.c
@@ -766,6 +766,10 @@ static void codec_release_pcms(struct hda_codec *codec)
}
}
+/**
+ * snd_hda_codec_cleanup_for_unbind - Prepare codec for removal
+ * @codec: codec device to cleanup
+ */
void snd_hda_codec_cleanup_for_unbind(struct hda_codec *codec)
{
if (codec->registered) {
@@ -3397,7 +3401,12 @@ int snd_hda_add_new_ctls(struct hda_codec *codec,
EXPORT_SYMBOL_GPL(snd_hda_add_new_ctls);
#ifdef CONFIG_PM
-static void codec_set_power_save(struct hda_codec *codec, int delay)
+/**
+ * snd_hda_codec_set_power_save - Configure codec's runtime PM
+ * @codec: codec device to configure
+ * @delay: autosuspend delay
+ */
+void snd_hda_codec_set_power_save(struct hda_codec *codec, int delay)
{
struct device *dev = hda_codec_dev(codec);
@@ -3415,6 +3424,7 @@ static void codec_set_power_save(struct hda_codec *codec, int delay)
pm_runtime_forbid(dev);
}
}
+EXPORT_SYMBOL_GPL(snd_hda_codec_set_power_save);
/**
* snd_hda_set_power_save - reprogram autosuspend for the given delay
@@ -3428,7 +3438,7 @@ void snd_hda_set_power_save(struct hda_bus *bus, int delay)
struct hda_codec *c;
list_for_each_codec(c, bus)
- codec_set_power_save(c, delay);
+ snd_hda_codec_set_power_save(c, delay);
}
EXPORT_SYMBOL_GPL(snd_hda_set_power_save);
diff --git a/sound/pci/hda/hda_local.h b/sound/pci/hda/hda_local.h
index 4c52dfb615bc..aca592651870 100644
--- a/sound/pci/hda/hda_local.h
+++ b/sound/pci/hda/hda_local.h
@@ -135,7 +135,6 @@ int __snd_hda_add_vmaster(struct hda_codec *codec, char *name,
#define snd_hda_add_vmaster(codec, name, tlv, followers, suffix, access) \
__snd_hda_add_vmaster(codec, name, tlv, followers, suffix, true, access, NULL)
int snd_hda_codec_reset(struct hda_codec *codec);
-void snd_hda_codec_cleanup_for_unbind(struct hda_codec *codec);
void snd_hda_codec_disconnect_pcms(struct hda_codec *codec);
#define snd_hda_regmap_sync(codec) snd_hdac_regmap_sync(&(codec)->core)
--
2.25.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v2 0/4] ALSA: hda: Expose codec organization functions
2022-02-14 10:14 [PATCH v2 0/4] ALSA: hda: Expose codec organization functions Cezary Rojewski
` (3 preceding siblings ...)
2022-02-14 10:14 ` [PATCH v2 4/4] ALSA: hda: Expose codec cleanup and power-save functions Cezary Rojewski
@ 2022-02-21 9:51 ` Cezary Rojewski
2022-02-21 10:07 ` Takashi Iwai
4 siblings, 1 reply; 7+ messages in thread
From: Cezary Rojewski @ 2022-02-21 9:51 UTC (permalink / raw)
To: alsa-devel, Takashi Iwai
Cc: upstream, harshapriya.n, rad, pierre-louis.bossart, hdegoede,
broonie, amadeuszx.slawinski, cujomalainey, lma
On 2022-02-14 11:14 AM, Cezary Rojewski wrote:
> Changes expose several function that are currently unavailable for
> HDA-DSP drivers for use. Those functions are:
>
> snd_hda_codec_cleanup_for_unbind()
> snd_hda_codec_set_power_save()
> snd_hda_codec_register()
> snd_hda_codec_unregister()
> snd_hda_codec_device_init()
>
> This allows upcoming AVS driver [1] to re-use even mode of HDA related
> code that is currently available in sound/pci/hda and sound/hda and
> prevent any code duplication within avs-driver that would otherwise had
> to happen.
>
> Last patch in the series provides snd_hdac_ext_bus_link_at() - a helper
> function which allows for retrieval of HDA segment (link) based on codec
> address directly. This is simpler than parsing codec-name first to
> extract the address what is the case for snd_hdac_ext_bus_get_link().
> The latter function is updated to re-use newly added one so core logic
> is not duplicated after the addition.
>
>
> Changes v1 -> v2:
> - snd_hda_codec_new() now calls snd_hda_codec_device_new() with
> 'snddev_managed' param set to 'true', reported by Kai
Hello Takashi,
Is there anything else I could help with or explain to help get this
series merged?
Regards,
Czarek
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 0/4] ALSA: hda: Expose codec organization functions
2022-02-21 9:51 ` [PATCH v2 0/4] ALSA: hda: Expose codec organization functions Cezary Rojewski
@ 2022-02-21 10:07 ` Takashi Iwai
0 siblings, 0 replies; 7+ messages in thread
From: Takashi Iwai @ 2022-02-21 10:07 UTC (permalink / raw)
To: Cezary Rojewski
Cc: alsa-devel, upstream, harshapriya.n, rad, pierre-louis.bossart,
Takashi Iwai, hdegoede, broonie, amadeuszx.slawinski,
cujomalainey, lma
On Mon, 21 Feb 2022 10:51:25 +0100,
Cezary Rojewski wrote:
>
> On 2022-02-14 11:14 AM, Cezary Rojewski wrote:
> > Changes expose several function that are currently unavailable for
> > HDA-DSP drivers for use. Those functions are:
> >
> > snd_hda_codec_cleanup_for_unbind()
> > snd_hda_codec_set_power_save()
> > snd_hda_codec_register()
> > snd_hda_codec_unregister()
> > snd_hda_codec_device_init()
> >
> > This allows upcoming AVS driver [1] to re-use even mode of HDA related
> > code that is currently available in sound/pci/hda and sound/hda and
> > prevent any code duplication within avs-driver that would otherwise had
> > to happen.
> >
> > Last patch in the series provides snd_hdac_ext_bus_link_at() - a helper
> > function which allows for retrieval of HDA segment (link) based on codec
> > address directly. This is simpler than parsing codec-name first to
> > extract the address what is the case for snd_hdac_ext_bus_get_link().
> > The latter function is updated to re-use newly added one so core logic
> > is not duplicated after the addition.
> >
> >
> > Changes v1 -> v2:
> > - snd_hda_codec_new() now calls snd_hda_codec_device_new() with
> > 'snddev_managed' param set to 'true', reported by Kai
>
> Hello Takashi,
>
> Is there anything else I could help with or explain to help get this
> series merged?
I merged all patches now to for-next branch.
thanks,
Takashi
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2022-02-21 10:08 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-02-14 10:14 [PATCH v2 0/4] ALSA: hda: Expose codec organization functions Cezary Rojewski
2022-02-14 10:14 ` [PATCH v2 1/4] ALSA: hda: Add snd_hdac_ext_bus_link_at() helper Cezary Rojewski
2022-02-14 10:14 ` [PATCH v2 2/4] ALSA: hda: Update and expose snd_hda_codec_device_init() Cezary Rojewski
2022-02-14 10:14 ` [PATCH v2 3/4] ALSA: hda: Update and expose codec register procedures Cezary Rojewski
2022-02-14 10:14 ` [PATCH v2 4/4] ALSA: hda: Expose codec cleanup and power-save functions Cezary Rojewski
2022-02-21 9:51 ` [PATCH v2 0/4] ALSA: hda: Expose codec organization functions Cezary Rojewski
2022-02-21 10:07 ` Takashi Iwai
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox