All of lore.kernel.org
 help / color / mirror / Atom feed
From: Russell King <rmk+kernel@arm.linux.org.uk>
To: alsa-devel@alsa-project.org, dri-devel@lists.freedesktop.org,
	linux-arm-kernel@lists.infradead.org
Cc: Fabio Estevam <fabio.estevam@freescale.com>,
	David Airlie <airlied@linux.ie>, Takashi Iwai <tiwai@suse.de>,
	Mark Brown <broonie@kernel.org>,
	Philipp Zabel <p.zabel@pengutronix.de>,
	Yakir Yang <ykk@rock-chips.com>
Subject: [PATCH 10/13] sound/core: add DRM ELD helper
Date: Sat, 09 May 2015 11:26:42 +0100	[thread overview]
Message-ID: <E1Yr1xy-0006l8-Ft@rmk-PC.arm.linux.org.uk> (raw)
In-Reply-To: <20150509102501.GO2067@n2100.arm.linux.org.uk>

Add a helper for the EDID like data structure, which is typically passed
from a HDMI adapter to its associated audio driver.  This informs the
audio driver of the capabilities of the attached HDMI sink.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
---
 include/sound/pcm_drm_eld.h |  6 +++
 sound/core/Kconfig          |  3 ++
 sound/core/Makefile         |  1 +
 sound/core/pcm_drm_eld.c    | 99 +++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 109 insertions(+)
 create mode 100644 include/sound/pcm_drm_eld.h
 create mode 100644 sound/core/pcm_drm_eld.c

diff --git a/include/sound/pcm_drm_eld.h b/include/sound/pcm_drm_eld.h
new file mode 100644
index 000000000000..93357b25d2e2
--- /dev/null
+++ b/include/sound/pcm_drm_eld.h
@@ -0,0 +1,6 @@
+#ifndef __SOUND_PCM_DRM_ELD_H
+#define __SOUND_PCM_DRM_ELD_H
+
+int snd_pcm_hw_constraint_eld(struct snd_pcm_runtime *runtime, void *eld);
+
+#endif
diff --git a/sound/core/Kconfig b/sound/core/Kconfig
index 313f22e9d929..b534c8a6046b 100644
--- a/sound/core/Kconfig
+++ b/sound/core/Kconfig
@@ -6,6 +6,9 @@ config SND_PCM
 	tristate
 	select SND_TIMER
 
+config SND_PCM_ELD
+	bool
+
 config SND_DMAENGINE_PCM
 	tristate
 
diff --git a/sound/core/Makefile b/sound/core/Makefile
index 4daf2f58261c..591b49157b4d 100644
--- a/sound/core/Makefile
+++ b/sound/core/Makefile
@@ -13,6 +13,7 @@ snd-$(CONFIG_SND_JACK)	  += jack.o
 snd-pcm-y := pcm.o pcm_native.o pcm_lib.o pcm_timer.o pcm_misc.o \
 		pcm_memory.o memalloc.o
 snd-pcm-$(CONFIG_SND_DMA_SGBUF) += sgbuf.o
+snd-pcm-$(CONFIG_SND_PCM_ELD) += pcm_drm_eld.o
 
 # for trace-points
 CFLAGS_pcm_lib.o := -I$(src)
diff --git a/sound/core/pcm_drm_eld.c b/sound/core/pcm_drm_eld.c
new file mode 100644
index 000000000000..e70379fb63d0
--- /dev/null
+++ b/sound/core/pcm_drm_eld.c
@@ -0,0 +1,99 @@
+/*
+ *  PCM DRM helpers
+ *
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License version 2 as
+ *   published by the Free Software Foundation.
+ */
+#include <linux/export.h>
+#include <drm/drm_edid.h>
+#include <sound/pcm.h>
+#include <sound/pcm_drm_eld.h>
+
+static const unsigned int eld_rates[] = {
+	32000,
+	44100,
+	48000,
+	88200,
+	96000,
+	176400,
+	192000,
+};
+
+static unsigned int sad_max_channels(const u8 *sad)
+{
+	return 1 + (sad[0] & 7);
+}
+
+static int eld_limit_rates(struct snd_pcm_hw_params *params,
+			   struct snd_pcm_hw_rule *rule)
+{
+	struct snd_interval *r = hw_param_interval(params, rule->var);
+	struct snd_interval *c;
+	unsigned int rate_mask = 7, i;
+	const u8 *sad, *eld = rule->private;
+
+	sad = drm_eld_sad(eld);
+	if (sad) {
+		c = hw_param_interval(params, SNDRV_PCM_HW_PARAM_CHANNELS);
+
+		for (i = drm_eld_sad_count(eld); i > 0; i--, sad += 3) {
+			unsigned max_channels = sad_max_channels(sad);
+
+			/*
+			 * Exclude SADs which do not include the
+			 * requested number of channels.
+			 */
+			if (c->min <= max_channels)
+				rate_mask |= sad[1];
+		}
+	}
+
+	return snd_interval_list(r, ARRAY_SIZE(eld_rates), eld_rates,
+				 rate_mask);
+}
+
+static int eld_limit_channels(struct snd_pcm_hw_params *params,
+			      struct snd_pcm_hw_rule *rule)
+{
+	struct snd_interval *c = hw_param_interval(params, rule->var);
+	struct snd_interval *r;
+	struct snd_interval t = { .min = 1, .max = 2, .integer = 1, };
+	unsigned int i;
+	const u8 *sad, *eld = rule->private;
+
+	sad = drm_eld_sad(eld);
+	if (sad) {
+		unsigned int rate_mask = 0;
+
+		/* Convert the rate interval to a mask */
+		r = hw_param_interval(params, SNDRV_PCM_HW_PARAM_RATE);
+		for (i = 0; i < ARRAY_SIZE(eld_rates); i++)
+			if (r->min <= eld_rates[i] && r->max >= eld_rates[i])
+				rate_mask |= BIT(i);
+
+		for (i = drm_eld_sad_count(eld); i > 0; i--, sad += 3)
+			if (rate_mask & sad[1])
+				t.max = max(t.max, sad_max_channels(sad));
+	}
+
+	return snd_interval_refine(c, &t);
+}
+
+int snd_pcm_hw_constraint_eld(struct snd_pcm_runtime *runtime, void *eld)
+{
+	int ret;
+
+	ret = snd_pcm_hw_rule_add(runtime, 0, SNDRV_PCM_HW_PARAM_RATE,
+				  eld_limit_rates, eld,
+				  SNDRV_PCM_HW_PARAM_CHANNELS, -1);
+	if (ret < 0)
+		return ret;
+
+	ret = snd_pcm_hw_rule_add(runtime, 0, SNDRV_PCM_HW_PARAM_CHANNELS,
+				  eld_limit_channels, eld,
+				  SNDRV_PCM_HW_PARAM_RATE, -1);
+
+	return ret;
+}
+EXPORT_SYMBOL_GPL(snd_pcm_hw_constraint_eld);
-- 
1.8.3.1

WARNING: multiple messages have this Message-ID (diff)
From: rmk+kernel@arm.linux.org.uk (Russell King)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 10/13] sound/core: add DRM ELD helper
Date: Sat, 09 May 2015 11:26:42 +0100	[thread overview]
Message-ID: <E1Yr1xy-0006l8-Ft@rmk-PC.arm.linux.org.uk> (raw)
In-Reply-To: <20150509102501.GO2067@n2100.arm.linux.org.uk>

Add a helper for the EDID like data structure, which is typically passed
from a HDMI adapter to its associated audio driver.  This informs the
audio driver of the capabilities of the attached HDMI sink.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
---
 include/sound/pcm_drm_eld.h |  6 +++
 sound/core/Kconfig          |  3 ++
 sound/core/Makefile         |  1 +
 sound/core/pcm_drm_eld.c    | 99 +++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 109 insertions(+)
 create mode 100644 include/sound/pcm_drm_eld.h
 create mode 100644 sound/core/pcm_drm_eld.c

diff --git a/include/sound/pcm_drm_eld.h b/include/sound/pcm_drm_eld.h
new file mode 100644
index 000000000000..93357b25d2e2
--- /dev/null
+++ b/include/sound/pcm_drm_eld.h
@@ -0,0 +1,6 @@
+#ifndef __SOUND_PCM_DRM_ELD_H
+#define __SOUND_PCM_DRM_ELD_H
+
+int snd_pcm_hw_constraint_eld(struct snd_pcm_runtime *runtime, void *eld);
+
+#endif
diff --git a/sound/core/Kconfig b/sound/core/Kconfig
index 313f22e9d929..b534c8a6046b 100644
--- a/sound/core/Kconfig
+++ b/sound/core/Kconfig
@@ -6,6 +6,9 @@ config SND_PCM
 	tristate
 	select SND_TIMER
 
+config SND_PCM_ELD
+	bool
+
 config SND_DMAENGINE_PCM
 	tristate
 
diff --git a/sound/core/Makefile b/sound/core/Makefile
index 4daf2f58261c..591b49157b4d 100644
--- a/sound/core/Makefile
+++ b/sound/core/Makefile
@@ -13,6 +13,7 @@ snd-$(CONFIG_SND_JACK)	  += jack.o
 snd-pcm-y := pcm.o pcm_native.o pcm_lib.o pcm_timer.o pcm_misc.o \
 		pcm_memory.o memalloc.o
 snd-pcm-$(CONFIG_SND_DMA_SGBUF) += sgbuf.o
+snd-pcm-$(CONFIG_SND_PCM_ELD) += pcm_drm_eld.o
 
 # for trace-points
 CFLAGS_pcm_lib.o := -I$(src)
diff --git a/sound/core/pcm_drm_eld.c b/sound/core/pcm_drm_eld.c
new file mode 100644
index 000000000000..e70379fb63d0
--- /dev/null
+++ b/sound/core/pcm_drm_eld.c
@@ -0,0 +1,99 @@
+/*
+ *  PCM DRM helpers
+ *
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License version 2 as
+ *   published by the Free Software Foundation.
+ */
+#include <linux/export.h>
+#include <drm/drm_edid.h>
+#include <sound/pcm.h>
+#include <sound/pcm_drm_eld.h>
+
+static const unsigned int eld_rates[] = {
+	32000,
+	44100,
+	48000,
+	88200,
+	96000,
+	176400,
+	192000,
+};
+
+static unsigned int sad_max_channels(const u8 *sad)
+{
+	return 1 + (sad[0] & 7);
+}
+
+static int eld_limit_rates(struct snd_pcm_hw_params *params,
+			   struct snd_pcm_hw_rule *rule)
+{
+	struct snd_interval *r = hw_param_interval(params, rule->var);
+	struct snd_interval *c;
+	unsigned int rate_mask = 7, i;
+	const u8 *sad, *eld = rule->private;
+
+	sad = drm_eld_sad(eld);
+	if (sad) {
+		c = hw_param_interval(params, SNDRV_PCM_HW_PARAM_CHANNELS);
+
+		for (i = drm_eld_sad_count(eld); i > 0; i--, sad += 3) {
+			unsigned max_channels = sad_max_channels(sad);
+
+			/*
+			 * Exclude SADs which do not include the
+			 * requested number of channels.
+			 */
+			if (c->min <= max_channels)
+				rate_mask |= sad[1];
+		}
+	}
+
+	return snd_interval_list(r, ARRAY_SIZE(eld_rates), eld_rates,
+				 rate_mask);
+}
+
+static int eld_limit_channels(struct snd_pcm_hw_params *params,
+			      struct snd_pcm_hw_rule *rule)
+{
+	struct snd_interval *c = hw_param_interval(params, rule->var);
+	struct snd_interval *r;
+	struct snd_interval t = { .min = 1, .max = 2, .integer = 1, };
+	unsigned int i;
+	const u8 *sad, *eld = rule->private;
+
+	sad = drm_eld_sad(eld);
+	if (sad) {
+		unsigned int rate_mask = 0;
+
+		/* Convert the rate interval to a mask */
+		r = hw_param_interval(params, SNDRV_PCM_HW_PARAM_RATE);
+		for (i = 0; i < ARRAY_SIZE(eld_rates); i++)
+			if (r->min <= eld_rates[i] && r->max >= eld_rates[i])
+				rate_mask |= BIT(i);
+
+		for (i = drm_eld_sad_count(eld); i > 0; i--, sad += 3)
+			if (rate_mask & sad[1])
+				t.max = max(t.max, sad_max_channels(sad));
+	}
+
+	return snd_interval_refine(c, &t);
+}
+
+int snd_pcm_hw_constraint_eld(struct snd_pcm_runtime *runtime, void *eld)
+{
+	int ret;
+
+	ret = snd_pcm_hw_rule_add(runtime, 0, SNDRV_PCM_HW_PARAM_RATE,
+				  eld_limit_rates, eld,
+				  SNDRV_PCM_HW_PARAM_CHANNELS, -1);
+	if (ret < 0)
+		return ret;
+
+	ret = snd_pcm_hw_rule_add(runtime, 0, SNDRV_PCM_HW_PARAM_CHANNELS,
+				  eld_limit_channels, eld,
+				  SNDRV_PCM_HW_PARAM_RATE, -1);
+
+	return ret;
+}
+EXPORT_SYMBOL_GPL(snd_pcm_hw_constraint_eld);
-- 
1.8.3.1

  parent reply	other threads:[~2015-05-09 10:31 UTC|newest]

Thread overview: 148+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-02  9:20 [RFC v2 0/13] dw_hdmi cleanups, audio preparation, helpers and ahb audio support Russell King - ARM Linux
2015-04-02  9:20 ` Russell King - ARM Linux
2015-04-02  9:21 ` [PATCH RFC v2 01/13] drm: imx/dw_hdmi: move phy comments Russell King
2015-04-02  9:21   ` Russell King
2015-04-02  9:21 ` [PATCH RFC v2 02/13] drm: bridge/dw_hdmi: clean up phy configuration Russell King
2015-04-02  9:21   ` Russell King
2015-04-02  9:21 ` [PATCH RFC v2 03/13] drm: bridge/dw_hdmi: clean up hdmi_set_clk_regenerator() Russell King
2015-04-02  9:21   ` Russell King
2015-04-02  9:21 ` [PATCH RFC v2 04/13] drm: bridge/dw_hdmi: use drm_hdmi_avi_infoframe_from_display_mode() Russell King
2015-04-02  9:21   ` Russell King
2015-04-02  9:21 ` [PATCH RFC v2 05/13] drm: bridge/dw_hdmi: simplify hdmi_config_AVI() a little Russell King
2015-04-02  9:21   ` Russell King
2015-04-02  9:21 ` [PATCH RFC v2 06/13] drm: bridge/dw_hdmi: remove mhsyncpolarity/mvsyncpolarity/minterlaced Russell King
2015-04-02  9:21   ` Russell King
2015-04-02  9:21 ` [PATCH RFC v2 07/13] drm: bridge/dw_hdmi: introduce interface to setting sample rate Russell King
2015-04-02  9:21   ` Russell King
2015-04-02  9:21 ` [PATCH RFC v2 08/13] drm: bridge/dw_hdmi: introduce interfaces to enable and disable audio Russell King
2015-04-02  9:21   ` Russell King
2015-04-02  9:22 ` [PATCH RFC v2 09/13] drm/edid: add function to help find SADs Russell King
2015-04-02  9:22   ` Russell King
2015-04-02  9:22 ` [PATCH RFC v2 10/13] sound/core: add DRM ELD helper Russell King
2015-04-02  9:22   ` Russell King
2015-04-05 15:57   ` Takashi Iwai
2015-04-05 15:57     ` Takashi Iwai
2015-04-05 16:20     ` Russell King - ARM Linux
2015-04-05 16:20       ` Russell King - ARM Linux
2015-04-05 16:46       ` Takashi Iwai
2015-04-05 16:46         ` Takashi Iwai
2015-04-05 17:26         ` Russell King - ARM Linux
2015-04-05 17:26           ` Russell King - ARM Linux
2015-05-06 17:02           ` Anssi Hannula
2015-05-06 17:02             ` Anssi Hannula
2015-05-07 10:41             ` Russell King - ARM Linux
2015-05-07 10:41               ` Russell King - ARM Linux
2015-05-07 11:11               ` Lars-Peter Clausen
2015-05-07 11:11                 ` [alsa-devel] " Lars-Peter Clausen
2015-05-08 10:56           ` Jyri Sarha
2015-05-08 10:56             ` Jyri Sarha
2015-05-08 11:42             ` Russell King - ARM Linux
2015-05-08 11:42               ` Russell King - ARM Linux
2015-05-05 22:35     ` Mark Brown
2015-05-05 22:35       ` Mark Brown
2015-05-06  8:58       ` Liam Girdwood
2015-05-06  8:58         ` [alsa-devel] " Liam Girdwood
2015-05-08 13:16   ` Jyri Sarha
2015-05-08 13:16     ` Jyri Sarha
2015-05-08 13:27     ` Russell King - ARM Linux
2015-05-08 13:27       ` Russell King - ARM Linux
2015-05-08 13:37       ` Jyri Sarha
2015-05-08 13:37         ` [alsa-devel] " Jyri Sarha
2015-04-02  9:22 ` [PATCH RFC v2 11/13] sound/core: add IEC958 channel status helper Russell King
2015-04-02  9:22   ` Russell King
2015-04-02  9:22 ` [PATCH RFC v2 12/13] drm: bridge/dw_hdmi-ahb-audio: add audio driver Russell King
2015-04-02  9:22   ` Russell King
2015-04-02  9:22 ` [PATCH RFC v2 13/13] drm: bridge/dw_hdmi-ahb-audio: parse ELD from HDMI driver Russell King
2015-04-02  9:22   ` Russell King
2015-05-09 10:25 ` [PATCH v3 0/13] dw_hdmi cleanups, audio preparation, helpers and ahb audio support Russell King - ARM Linux
2015-05-09 10:25   ` Russell King - ARM Linux
2015-05-09 10:25   ` [PATCH 01/13] drm: imx/dw_hdmi: move phy comments Russell King
2015-05-09 10:25     ` Russell King
2015-05-09 10:26   ` [PATCH 02/13] drm: bridge/dw_hdmi: clean up phy configuration Russell King
2015-05-09 10:26     ` Russell King
2015-05-22 15:19     ` Yakir
2015-05-22 15:19       ` Yakir
2015-05-09 10:26   ` [PATCH 03/13] drm: bridge/dw_hdmi: clean up hdmi_set_clk_regenerator() Russell King
2015-05-09 10:26     ` Russell King
2015-05-22 15:22     ` Yakir
2015-05-22 15:22       ` Yakir
2015-05-09 10:26   ` [PATCH 04/13] drm: bridge/dw_hdmi: use drm_hdmi_avi_infoframe_from_display_mode() Russell King
2015-05-09 10:26     ` Russell King
2015-05-09 10:26   ` [PATCH 05/13] drm: bridge/dw_hdmi: simplify hdmi_config_AVI() a little Russell King
2015-05-09 10:26     ` Russell King
2015-05-09 10:26   ` [PATCH 06/13] drm: bridge/dw_hdmi: remove mhsyncpolarity/mvsyncpolarity/minterlaced Russell King
2015-05-09 10:26     ` Russell King
2015-05-09 10:26   ` [PATCH 07/13] drm: bridge/dw_hdmi: introduce interface to setting sample rate Russell King
2015-05-09 10:26     ` Russell King
2015-05-22 15:26     ` Yakir
2015-05-22 15:26       ` Yakir
2015-05-09 10:26   ` [PATCH 08/13] drm: bridge/dw_hdmi: introduce interfaces to enable and disable audio Russell King
2015-05-09 10:26     ` Russell King
2015-05-22 15:28     ` Yakir
2015-05-22 15:28       ` Yakir
2015-05-09 10:26   ` [PATCH 09/13] drm/edid: add function to help find SADs Russell King
2015-05-09 10:26     ` Russell King
2015-05-09 10:26   ` Russell King [this message]
2015-05-09 10:26     ` [PATCH 10/13] sound/core: add DRM ELD helper Russell King
2015-05-22 12:20     ` [alsa-devel] " Mark Brown
2015-05-22 12:20       ` Mark Brown
2015-05-22 13:15       ` Russell King - ARM Linux
2015-05-22 13:15         ` Russell King - ARM Linux
2015-05-22 13:30         ` Takashi Iwai
2015-05-22 13:30           ` Takashi Iwai
2015-05-22 13:53           ` Russell King - ARM Linux
2015-05-22 13:53             ` Russell King - ARM Linux
2015-05-22 13:54             ` Takashi Iwai
2015-05-22 13:54               ` Takashi Iwai
2015-05-22 14:00               ` Russell King - ARM Linux
2015-05-22 14:00                 ` Russell King - ARM Linux
2015-05-22 14:02                 ` Takashi Iwai
2015-05-22 14:02                   ` Takashi Iwai
2015-05-22 14:05                   ` Takashi Iwai
2015-05-22 14:05                     ` Takashi Iwai
2015-05-22 16:12                     ` Russell King - ARM Linux
2015-05-22 16:12                       ` Russell King - ARM Linux
2015-05-09 10:26   ` [PATCH 11/13] sound/core: add IEC958 channel status helper Russell King
2015-05-09 10:26     ` Russell King
2015-05-22 12:40     ` Mark Brown
2015-05-22 12:40       ` Mark Brown
2015-05-09 10:26   ` [PATCH 12/13] drm: bridge/dw_hdmi-ahb-audio: add audio driver Russell King
2015-05-09 10:26     ` Russell King
2015-05-09 16:49     ` [alsa-devel] " Anssi Hannula
2015-05-09 16:49       ` Anssi Hannula
2015-05-09 16:55       ` Russell King - ARM Linux
2015-05-09 16:55         ` Russell King - ARM Linux
2015-05-09 17:07         ` Anssi Hannula
2015-05-09 17:07           ` Anssi Hannula
2015-05-09 17:40           ` Russell King - ARM Linux
2015-05-09 17:40             ` Russell King - ARM Linux
2015-05-09 17:53             ` Russell King - ARM Linux
2015-05-09 17:53               ` Russell King - ARM Linux
2015-05-09 17:55             ` Anssi Hannula
2015-05-09 17:55               ` Anssi Hannula
2015-05-09 18:11               ` Russell King - ARM Linux
2015-05-09 18:11                 ` Russell King - ARM Linux
2015-05-10 18:59                 ` Anssi Hannula
2015-05-10 18:59                   ` Anssi Hannula
2015-05-10 19:33                   ` Russell King - ARM Linux
2015-05-10 19:33                     ` Russell King - ARM Linux
2015-05-10 20:47                     ` Anssi Hannula
2015-05-10 20:47                       ` Anssi Hannula
2015-05-11 15:58                     ` Mark Brown
2015-05-11 15:58                       ` [alsa-devel] " Mark Brown
2015-05-09 10:26   ` [PATCH 13/13] drm: bridge/dw_hdmi-ahb-audio: parse ELD from HDMI driver Russell King
2015-05-09 10:26     ` Russell King
2015-05-27 10:43     ` Daniel Vetter
2015-05-27 10:43       ` Daniel Vetter
2015-05-27 11:43       ` Mark Brown
2015-05-27 11:43         ` Mark Brown
2015-05-27 17:31       ` Russell King - ARM Linux
2015-05-27 17:31         ` Russell King - ARM Linux
2015-05-27 21:29         ` Daniel Vetter
2015-05-27 21:29           ` Daniel Vetter
2015-05-27 21:44           ` Russell King - ARM Linux
2015-05-27 21:44             ` Russell King - ARM Linux
2015-05-28  6:43             ` Daniel Vetter
2015-05-28  6:43               ` Daniel Vetter
2015-05-28  4:56         ` [alsa-devel] " Takashi Iwai
2015-05-28  4:56           ` Takashi Iwai

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=E1Yr1xy-0006l8-Ft@rmk-PC.arm.linux.org.uk \
    --to=rmk+kernel@arm.linux.org.uk \
    --cc=airlied@linux.ie \
    --cc=alsa-devel@alsa-project.org \
    --cc=broonie@kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=fabio.estevam@freescale.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=p.zabel@pengutronix.de \
    --cc=tiwai@suse.de \
    --cc=ykk@rock-chips.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.