All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/5] Sound support for at91sam9x5-wm8731 based boards
@ 2013-07-08 13:29 ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-08 13:29 UTC (permalink / raw)
  To: Mark Brown, Nicolas Ferre, Liam Girdwood
  Cc: Bo Shen, linux-arm-kernel, linux-kernel, alsa-devel,
	devicetree-discuss, Richard Genoud

Hi,

This patchset add sound on the at91sam9x5ek board.
It's based on Nicolas Ferre's work in the 2.6.39 atmel patch for sam9x5:
https://github.com/linux4sam/linux-at91/commit/0aa157c9e71ccccf3abc30fa37eb5c95b392978d

It needs Bo Chen's patchset on the generic dmaengine (topic/atmel branch
on Mark's sound tree) and the SSC interrupts disabled (cf
http://www.spinics.net/lists/arm-kernel/msg256901.html)


Tested on at91sam9g35ek.

patches applies on next-20130708

[I let the original signed-off from Nicolas and Uwe in place, I don't
know if I should replace them by something like "originaly-signed-off-by"
since the code has been changed.]

[Sorry if it's too late for 3.11]

Changes from V1-RFC:
 * drop patches on SSC since Bo Chen already did the work
 * reorder patches to have the machine driver first
 * drop code already handled by the ASoC framework
 * drop unneeded SND_ATMEL_SOC_PDC config selection
 * use static snd_soc_card and  snd_soc_dai_link structures.

Best regards,
Richard.

Nicolas Ferre (1):
  sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards

Richard Genoud (4):
  ARM: AT91: DTS: sam9x5: add SSC DMA parameters
  ARM: AT91: DTS: sam9x5ek: add WM8731 codec
  ARM: AT91: DTS: sam9x5ek: add sound configuration
  ARM: AT91: DTS: sam9x5ek: enable SSC

 arch/arm/boot/dts/at91sam9x5.dtsi   |    3 +
 arch/arm/boot/dts/at91sam9x5ek.dtsi |   27 +++++
 sound/soc/atmel/Kconfig             |   10 ++
 sound/soc/atmel/Makefile            |    2 +
 sound/soc/atmel/sam9x5_wm8731.c     |  206 +++++++++++++++++++++++++++++++++++
 5 files changed, 248 insertions(+)
 create mode 100644 sound/soc/atmel/sam9x5_wm8731.c

-- 
1.7.10.4


^ permalink raw reply	[flat|nested] 122+ messages in thread

* [PATCH v2 0/5] Sound support for at91sam9x5-wm8731 based boards
@ 2013-07-08 13:29 ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-08 13:29 UTC (permalink / raw)
  To: Mark Brown, Nicolas Ferre, Liam Girdwood
  Cc: alsa-devel, Richard Genoud, devicetree-discuss, linux-kernel,
	Bo Shen, linux-arm-kernel

Hi,

This patchset add sound on the at91sam9x5ek board.
It's based on Nicolas Ferre's work in the 2.6.39 atmel patch for sam9x5:
https://github.com/linux4sam/linux-at91/commit/0aa157c9e71ccccf3abc30fa37eb5c95b392978d

It needs Bo Chen's patchset on the generic dmaengine (topic/atmel branch
on Mark's sound tree) and the SSC interrupts disabled (cf
http://www.spinics.net/lists/arm-kernel/msg256901.html)


Tested on at91sam9g35ek.

patches applies on next-20130708

[I let the original signed-off from Nicolas and Uwe in place, I don't
know if I should replace them by something like "originaly-signed-off-by"
since the code has been changed.]

[Sorry if it's too late for 3.11]

Changes from V1-RFC:
 * drop patches on SSC since Bo Chen already did the work
 * reorder patches to have the machine driver first
 * drop code already handled by the ASoC framework
 * drop unneeded SND_ATMEL_SOC_PDC config selection
 * use static snd_soc_card and  snd_soc_dai_link structures.

Best regards,
Richard.

Nicolas Ferre (1):
  sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards

Richard Genoud (4):
  ARM: AT91: DTS: sam9x5: add SSC DMA parameters
  ARM: AT91: DTS: sam9x5ek: add WM8731 codec
  ARM: AT91: DTS: sam9x5ek: add sound configuration
  ARM: AT91: DTS: sam9x5ek: enable SSC

 arch/arm/boot/dts/at91sam9x5.dtsi   |    3 +
 arch/arm/boot/dts/at91sam9x5ek.dtsi |   27 +++++
 sound/soc/atmel/Kconfig             |   10 ++
 sound/soc/atmel/Makefile            |    2 +
 sound/soc/atmel/sam9x5_wm8731.c     |  206 +++++++++++++++++++++++++++++++++++
 5 files changed, 248 insertions(+)
 create mode 100644 sound/soc/atmel/sam9x5_wm8731.c

-- 
1.7.10.4

^ permalink raw reply	[flat|nested] 122+ messages in thread

* [PATCH v2 0/5] Sound support for at91sam9x5-wm8731 based boards
@ 2013-07-08 13:29 ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-08 13:29 UTC (permalink / raw)
  To: linux-arm-kernel

Hi,

This patchset add sound on the at91sam9x5ek board.
It's based on Nicolas Ferre's work in the 2.6.39 atmel patch for sam9x5:
https://github.com/linux4sam/linux-at91/commit/0aa157c9e71ccccf3abc30fa37eb5c95b392978d

It needs Bo Chen's patchset on the generic dmaengine (topic/atmel branch
on Mark's sound tree) and the SSC interrupts disabled (cf
http://www.spinics.net/lists/arm-kernel/msg256901.html)


Tested on at91sam9g35ek.

patches applies on next-20130708

[I let the original signed-off from Nicolas and Uwe in place, I don't
know if I should replace them by something like "originaly-signed-off-by"
since the code has been changed.]

[Sorry if it's too late for 3.11]

Changes from V1-RFC:
 * drop patches on SSC since Bo Chen already did the work
 * reorder patches to have the machine driver first
 * drop code already handled by the ASoC framework
 * drop unneeded SND_ATMEL_SOC_PDC config selection
 * use static snd_soc_card and  snd_soc_dai_link structures.

Best regards,
Richard.

Nicolas Ferre (1):
  sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards

Richard Genoud (4):
  ARM: AT91: DTS: sam9x5: add SSC DMA parameters
  ARM: AT91: DTS: sam9x5ek: add WM8731 codec
  ARM: AT91: DTS: sam9x5ek: add sound configuration
  ARM: AT91: DTS: sam9x5ek: enable SSC

 arch/arm/boot/dts/at91sam9x5.dtsi   |    3 +
 arch/arm/boot/dts/at91sam9x5ek.dtsi |   27 +++++
 sound/soc/atmel/Kconfig             |   10 ++
 sound/soc/atmel/Makefile            |    2 +
 sound/soc/atmel/sam9x5_wm8731.c     |  206 +++++++++++++++++++++++++++++++++++
 5 files changed, 248 insertions(+)
 create mode 100644 sound/soc/atmel/sam9x5_wm8731.c

-- 
1.7.10.4

^ permalink raw reply	[flat|nested] 122+ messages in thread

* [PATCH v2 1/5] sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards
@ 2013-07-08 13:29   ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-08 13:29 UTC (permalink / raw)
  To: Mark Brown, Nicolas Ferre, Liam Girdwood
  Cc: Bo Shen, linux-arm-kernel, linux-kernel, alsa-devel,
	devicetree-discuss, Uwe Kleine-König, Richard Genoud

From: Nicolas Ferre <nicolas.ferre@atmel.com>

Description of the Asoc machine driver for an at91sam9x5 based board
with a wm8731 audio DAC. Wm8731 is clocked by a crystal and used as a
master on the SSC/I2S interface. Its connections are a headphone jack
and an Line input jack.

[Richard: this is based on an old patch from Nicolas that I forward
ported and reworked to use only device tree]

Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
---
 sound/soc/atmel/Kconfig         |   10 ++
 sound/soc/atmel/Makefile        |    2 +
 sound/soc/atmel/sam9x5_wm8731.c |  206 +++++++++++++++++++++++++++++++++++++++
 3 files changed, 218 insertions(+)
 create mode 100644 sound/soc/atmel/sam9x5_wm8731.c

diff --git a/sound/soc/atmel/Kconfig b/sound/soc/atmel/Kconfig
index 1c0b185..9eb8c49 100644
--- a/sound/soc/atmel/Kconfig
+++ b/sound/soc/atmel/Kconfig
@@ -33,6 +33,16 @@ config SND_AT91_SOC_SAM9G20_WM8731
 	  Say Y if you want to add support for SoC audio on WM8731-based
 	  AT91sam9g20 evaluation board.
 
+config SND_AT91_SOC_SAM9X5_WM8731
+	tristate "SoC Audio support for WM8731-based at91sam9x5 board"
+	depends on ATMEL_SSC && SND_ATMEL_SOC && SOC_AT91SAM9X5
+	select SND_ATMEL_SOC_SSC
+	select SND_ATMEL_SOC_DMA
+	select SND_SOC_WM8731
+	help
+	  Say Y if you want to add support for audio SoC on an
+	  at91sam9x5 based board that is using WM8731 codec.
+
 config SND_AT91_SOC_AFEB9260
 	tristate "SoC Audio support for AFEB9260 board"
 	depends on ARCH_AT91 && ATMEL_SSC && ARCH_AT91 && MACH_AFEB9260 && SND_ATMEL_SOC
diff --git a/sound/soc/atmel/Makefile b/sound/soc/atmel/Makefile
index 41967cc..7784c09 100644
--- a/sound/soc/atmel/Makefile
+++ b/sound/soc/atmel/Makefile
@@ -11,6 +11,8 @@ obj-$(CONFIG_SND_ATMEL_SOC_SSC) += snd-soc-atmel_ssc_dai.o
 
 # AT91 Machine Support
 snd-soc-sam9g20-wm8731-objs := sam9g20_wm8731.o
+snd-soc-sam9x5-wm8731-objs := sam9x5_wm8731.o
 
 obj-$(CONFIG_SND_AT91_SOC_SAM9G20_WM8731) += snd-soc-sam9g20-wm8731.o
+obj-$(CONFIG_SND_AT91_SOC_SAM9X5_WM8731) += snd-soc-sam9x5-wm8731.o
 obj-$(CONFIG_SND_AT91_SOC_AFEB9260) += snd-soc-afeb9260.o
diff --git a/sound/soc/atmel/sam9x5_wm8731.c b/sound/soc/atmel/sam9x5_wm8731.c
new file mode 100644
index 0000000..3e5a9f6
--- /dev/null
+++ b/sound/soc/atmel/sam9x5_wm8731.c
@@ -0,0 +1,206 @@
+/*
+ * sam9x5_wm8731   --	SoC audio for AT91SAM9X5-based boards
+ *			that are using WM8731 as codec.
+ *
+ *  Copyright (C) 2011 Atmel,
+ *		  Nicolas Ferre <nicolas.ferre@atmel.com>
+ *
+ * Based on sam9g20_wm8731.c by:
+ * Sedji Gaouaou <sedji.gaouaou@atmel.com>
+ *
+ * GPL
+ */
+#include <linux/module.h>
+#include <linux/moduleparam.h>
+#include <linux/kernel.h>
+#include <linux/clk.h>
+#include <linux/timer.h>
+#include <linux/interrupt.h>
+#include <linux/platform_device.h>
+#include <linux/i2c.h>
+
+#include <linux/atmel-ssc.h>
+
+#include <sound/core.h>
+#include <sound/pcm.h>
+#include <sound/pcm_params.h>
+#include <sound/soc.h>
+
+#include <asm/mach-types.h>
+#include <mach/hardware.h>
+#include <mach/gpio.h>
+
+#include "../codecs/wm8731.h"
+#include "atmel-pcm.h"
+#include "atmel_ssc_dai.h"
+
+#define MCLK_RATE 12288000
+
+#define DRV_NAME "sam9x5-snd-wm8731"
+
+/*
+ * Logic for a wm8731 as connected on a at91sam9x5 based board.
+ */
+static int at91sam9x5ek_wm8731_init(struct snd_soc_pcm_runtime *rtd)
+{
+	struct snd_soc_codec *codec = rtd->codec;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_dapm_context *dapm = &codec->dapm;
+	struct device *dev = rtd->dev;
+	int ret;
+
+	dev_dbg(dev, "ASoC: %s called\n", __func__);
+
+	codec_dai->driver->playback.rates &= SNDRV_PCM_RATE_8000 |
+		SNDRV_PCM_RATE_32000 |
+		SNDRV_PCM_RATE_48000 |
+		SNDRV_PCM_RATE_96000;
+	codec_dai->driver->capture.rates &= SNDRV_PCM_RATE_8000 |
+		SNDRV_PCM_RATE_32000 |
+		SNDRV_PCM_RATE_48000 |
+		SNDRV_PCM_RATE_96000;
+
+	/* set the codec system clock for DAC and ADC */
+	ret = snd_soc_dai_set_sysclk(codec_dai, WM8731_SYSCLK_XTAL,
+				     MCLK_RATE, SND_SOC_CLOCK_IN);
+	if (ret < 0) {
+		dev_err(dev, "ASoC: Failed to set WM8731 SYSCLK: %d\n", ret);
+		return ret;
+	}
+
+	/* signal a DAPM event */
+	snd_soc_dapm_sync(dapm);
+	return 0;
+}
+
+/*
+ * Audio paths on at91sam9x5ek board:
+ *
+ *  |A| ------------> |      | ---R----> Headphone Jack
+ *  |T| <----\        |  WM  | ---L--/
+ *  |9| ---> CLK <--> | 8751 | <--R----- Line In Jack
+ *  |1| <------------ |      | <--L--/
+ */
+static const struct snd_soc_dapm_widget at91sam9x5ek_dapm_widgets[] = {
+	SND_SOC_DAPM_HP("Headphone Jack", NULL),
+	SND_SOC_DAPM_LINE("Line In Jack", NULL),
+};
+
+static struct snd_soc_dai_link at91sam9x5ek_dai = {
+	.name = "WM8731",
+	.stream_name = "WM8731 PCM",
+	.codec_dai_name = "wm8731-hifi",
+	.init = at91sam9x5ek_wm8731_init,
+};
+
+static struct snd_soc_card snd_soc_at91sam9x5ek = {
+	.owner = THIS_MODULE,
+	.dai_link = &at91sam9x5ek_dai,
+	.num_links = 1,
+	.dapm_widgets = at91sam9x5ek_dapm_widgets,
+	.num_dapm_widgets = ARRAY_SIZE(at91sam9x5ek_dapm_widgets),
+};
+
+static int sam9x5_wm8731_driver_probe(struct platform_device *pdev)
+{
+	struct device_node *np = pdev->dev.of_node;
+	struct device_node *codec_np, *cpu_np;
+	int ret;
+
+	if (!np) {
+		dev_err(&pdev->dev, "No device node supplied\n");
+		return -EINVAL;
+	}
+
+	ret = atmel_ssc_set_audio(0);
+	if (ret != 0) {
+		dev_err(&pdev->dev,
+			"ASoC: Failed to set SSC 0 for audio: %d\n", ret);
+		return ret;
+	}
+
+	snd_soc_at91sam9x5ek.dev = &pdev->dev;
+
+	ret = snd_soc_of_parse_card_name(&snd_soc_at91sam9x5ek, "atmel,model");
+	if (ret)
+		goto out;
+
+	ret = snd_soc_of_parse_audio_routing(&snd_soc_at91sam9x5ek,
+					     "atmel,audio-routing");
+	if (ret)
+		goto out;
+
+	codec_np = of_parse_phandle(np, "atmel,audio-codec", 0);
+	if (!codec_np) {
+		dev_err(&pdev->dev, "codec info missing\n");
+		ret = -EINVAL;
+		goto out;
+	}
+
+	at91sam9x5ek_dai.codec_of_node = codec_np;
+
+	cpu_np = of_parse_phandle(np, "atmel,ssc-controller", 0);
+	if (!cpu_np) {
+		dev_err(&pdev->dev, "ssc controller node missing\n");
+		ret = -EINVAL;
+		goto out;
+	}
+	at91sam9x5ek_dai.cpu_of_node = cpu_np;
+	at91sam9x5ek_dai.platform_of_node = cpu_np;
+
+	of_node_put(codec_np);
+	of_node_put(cpu_np);
+
+	at91sam9x5ek_dai.dai_fmt = snd_soc_of_parse_daifmt(np, "atmel,");
+
+	ret = snd_soc_register_card(&snd_soc_at91sam9x5ek);
+	if (ret) {
+		dev_err(&pdev->dev,
+			"ASoC: Platform device allocation failed\n");
+		goto out;
+	}
+
+	platform_set_drvdata(pdev, &snd_soc_at91sam9x5ek);
+
+	dev_dbg(&pdev->dev, "ASoC: %s ok\n", __func__);
+
+	return ret;
+
+out:
+	atmel_ssc_put_audio(0);
+	return ret;
+}
+
+static int sam9x5_wm8731_driver_remove(struct platform_device *pdev)
+{
+	struct snd_soc_card *card = platform_get_drvdata(pdev);
+
+	snd_soc_unregister_card(card);
+	atmel_ssc_put_audio(0);
+
+	return 0;
+}
+
+static const struct of_device_id sam9x5_wm8731_of_match[] = {
+	{ .compatible = "atmel,sam9x5-audio-wm8731", },
+	{},
+};
+MODULE_DEVICE_TABLE(of, sam9x5_wm8731_of_match);
+
+static struct platform_driver sam9x5_wm8731_driver = {
+	.driver = {
+		.name = DRV_NAME,
+		.owner = THIS_MODULE,
+		.of_match_table = of_match_ptr(sam9x5_wm8731_of_match),
+	},
+	.probe = sam9x5_wm8731_driver_probe,
+	.remove = sam9x5_wm8731_driver_remove,
+};
+module_platform_driver(sam9x5_wm8731_driver);
+
+/* Module information */
+MODULE_AUTHOR("Nicolas Ferre <nicolas.ferre@atmel.com>");
+MODULE_AUTHOR("Richard Genoud <richard.genoud@gmail.com>");
+MODULE_DESCRIPTION("ALSA SoC machine driver for AT91SAM9x5 - WM8731");
+MODULE_LICENSE("GPL");
+MODULE_ALIAS("platform:" DRV_NAME);
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 122+ messages in thread

* [PATCH v2 1/5] sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards
@ 2013-07-08 13:29   ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-08 13:29 UTC (permalink / raw)
  To: Mark Brown, Nicolas Ferre, Liam Girdwood
  Cc: alsa-devel-K7yf7f+aM1XWsZ/bQMPhNw,
	devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, Bo Shen,
	Uwe Kleine-König,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r

From: Nicolas Ferre <nicolas.ferre@atmel.com>

Description of the Asoc machine driver for an at91sam9x5 based board
with a wm8731 audio DAC. Wm8731 is clocked by a crystal and used as a
master on the SSC/I2S interface. Its connections are a headphone jack
and an Line input jack.

[Richard: this is based on an old patch from Nicolas that I forward
ported and reworked to use only device tree]

Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
---
 sound/soc/atmel/Kconfig         |   10 ++
 sound/soc/atmel/Makefile        |    2 +
 sound/soc/atmel/sam9x5_wm8731.c |  206 +++++++++++++++++++++++++++++++++++++++
 3 files changed, 218 insertions(+)
 create mode 100644 sound/soc/atmel/sam9x5_wm8731.c

diff --git a/sound/soc/atmel/Kconfig b/sound/soc/atmel/Kconfig
index 1c0b185..9eb8c49 100644
--- a/sound/soc/atmel/Kconfig
+++ b/sound/soc/atmel/Kconfig
@@ -33,6 +33,16 @@ config SND_AT91_SOC_SAM9G20_WM8731
 	  Say Y if you want to add support for SoC audio on WM8731-based
 	  AT91sam9g20 evaluation board.
 
+config SND_AT91_SOC_SAM9X5_WM8731
+	tristate "SoC Audio support for WM8731-based at91sam9x5 board"
+	depends on ATMEL_SSC && SND_ATMEL_SOC && SOC_AT91SAM9X5
+	select SND_ATMEL_SOC_SSC
+	select SND_ATMEL_SOC_DMA
+	select SND_SOC_WM8731
+	help
+	  Say Y if you want to add support for audio SoC on an
+	  at91sam9x5 based board that is using WM8731 codec.
+
 config SND_AT91_SOC_AFEB9260
 	tristate "SoC Audio support for AFEB9260 board"
 	depends on ARCH_AT91 && ATMEL_SSC && ARCH_AT91 && MACH_AFEB9260 && SND_ATMEL_SOC
diff --git a/sound/soc/atmel/Makefile b/sound/soc/atmel/Makefile
index 41967cc..7784c09 100644
--- a/sound/soc/atmel/Makefile
+++ b/sound/soc/atmel/Makefile
@@ -11,6 +11,8 @@ obj-$(CONFIG_SND_ATMEL_SOC_SSC) += snd-soc-atmel_ssc_dai.o
 
 # AT91 Machine Support
 snd-soc-sam9g20-wm8731-objs := sam9g20_wm8731.o
+snd-soc-sam9x5-wm8731-objs := sam9x5_wm8731.o
 
 obj-$(CONFIG_SND_AT91_SOC_SAM9G20_WM8731) += snd-soc-sam9g20-wm8731.o
+obj-$(CONFIG_SND_AT91_SOC_SAM9X5_WM8731) += snd-soc-sam9x5-wm8731.o
 obj-$(CONFIG_SND_AT91_SOC_AFEB9260) += snd-soc-afeb9260.o
diff --git a/sound/soc/atmel/sam9x5_wm8731.c b/sound/soc/atmel/sam9x5_wm8731.c
new file mode 100644
index 0000000..3e5a9f6
--- /dev/null
+++ b/sound/soc/atmel/sam9x5_wm8731.c
@@ -0,0 +1,206 @@
+/*
+ * sam9x5_wm8731   --	SoC audio for AT91SAM9X5-based boards
+ *			that are using WM8731 as codec.
+ *
+ *  Copyright (C) 2011 Atmel,
+ *		  Nicolas Ferre <nicolas.ferre@atmel.com>
+ *
+ * Based on sam9g20_wm8731.c by:
+ * Sedji Gaouaou <sedji.gaouaou@atmel.com>
+ *
+ * GPL
+ */
+#include <linux/module.h>
+#include <linux/moduleparam.h>
+#include <linux/kernel.h>
+#include <linux/clk.h>
+#include <linux/timer.h>
+#include <linux/interrupt.h>
+#include <linux/platform_device.h>
+#include <linux/i2c.h>
+
+#include <linux/atmel-ssc.h>
+
+#include <sound/core.h>
+#include <sound/pcm.h>
+#include <sound/pcm_params.h>
+#include <sound/soc.h>
+
+#include <asm/mach-types.h>
+#include <mach/hardware.h>
+#include <mach/gpio.h>
+
+#include "../codecs/wm8731.h"
+#include "atmel-pcm.h"
+#include "atmel_ssc_dai.h"
+
+#define MCLK_RATE 12288000
+
+#define DRV_NAME "sam9x5-snd-wm8731"
+
+/*
+ * Logic for a wm8731 as connected on a at91sam9x5 based board.
+ */
+static int at91sam9x5ek_wm8731_init(struct snd_soc_pcm_runtime *rtd)
+{
+	struct snd_soc_codec *codec = rtd->codec;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_dapm_context *dapm = &codec->dapm;
+	struct device *dev = rtd->dev;
+	int ret;
+
+	dev_dbg(dev, "ASoC: %s called\n", __func__);
+
+	codec_dai->driver->playback.rates &= SNDRV_PCM_RATE_8000 |
+		SNDRV_PCM_RATE_32000 |
+		SNDRV_PCM_RATE_48000 |
+		SNDRV_PCM_RATE_96000;
+	codec_dai->driver->capture.rates &= SNDRV_PCM_RATE_8000 |
+		SNDRV_PCM_RATE_32000 |
+		SNDRV_PCM_RATE_48000 |
+		SNDRV_PCM_RATE_96000;
+
+	/* set the codec system clock for DAC and ADC */
+	ret = snd_soc_dai_set_sysclk(codec_dai, WM8731_SYSCLK_XTAL,
+				     MCLK_RATE, SND_SOC_CLOCK_IN);
+	if (ret < 0) {
+		dev_err(dev, "ASoC: Failed to set WM8731 SYSCLK: %d\n", ret);
+		return ret;
+	}
+
+	/* signal a DAPM event */
+	snd_soc_dapm_sync(dapm);
+	return 0;
+}
+
+/*
+ * Audio paths on at91sam9x5ek board:
+ *
+ *  |A| ------------> |      | ---R----> Headphone Jack
+ *  |T| <----\        |  WM  | ---L--/
+ *  |9| ---> CLK <--> | 8751 | <--R----- Line In Jack
+ *  |1| <------------ |      | <--L--/
+ */
+static const struct snd_soc_dapm_widget at91sam9x5ek_dapm_widgets[] = {
+	SND_SOC_DAPM_HP("Headphone Jack", NULL),
+	SND_SOC_DAPM_LINE("Line In Jack", NULL),
+};
+
+static struct snd_soc_dai_link at91sam9x5ek_dai = {
+	.name = "WM8731",
+	.stream_name = "WM8731 PCM",
+	.codec_dai_name = "wm8731-hifi",
+	.init = at91sam9x5ek_wm8731_init,
+};
+
+static struct snd_soc_card snd_soc_at91sam9x5ek = {
+	.owner = THIS_MODULE,
+	.dai_link = &at91sam9x5ek_dai,
+	.num_links = 1,
+	.dapm_widgets = at91sam9x5ek_dapm_widgets,
+	.num_dapm_widgets = ARRAY_SIZE(at91sam9x5ek_dapm_widgets),
+};
+
+static int sam9x5_wm8731_driver_probe(struct platform_device *pdev)
+{
+	struct device_node *np = pdev->dev.of_node;
+	struct device_node *codec_np, *cpu_np;
+	int ret;
+
+	if (!np) {
+		dev_err(&pdev->dev, "No device node supplied\n");
+		return -EINVAL;
+	}
+
+	ret = atmel_ssc_set_audio(0);
+	if (ret != 0) {
+		dev_err(&pdev->dev,
+			"ASoC: Failed to set SSC 0 for audio: %d\n", ret);
+		return ret;
+	}
+
+	snd_soc_at91sam9x5ek.dev = &pdev->dev;
+
+	ret = snd_soc_of_parse_card_name(&snd_soc_at91sam9x5ek, "atmel,model");
+	if (ret)
+		goto out;
+
+	ret = snd_soc_of_parse_audio_routing(&snd_soc_at91sam9x5ek,
+					     "atmel,audio-routing");
+	if (ret)
+		goto out;
+
+	codec_np = of_parse_phandle(np, "atmel,audio-codec", 0);
+	if (!codec_np) {
+		dev_err(&pdev->dev, "codec info missing\n");
+		ret = -EINVAL;
+		goto out;
+	}
+
+	at91sam9x5ek_dai.codec_of_node = codec_np;
+
+	cpu_np = of_parse_phandle(np, "atmel,ssc-controller", 0);
+	if (!cpu_np) {
+		dev_err(&pdev->dev, "ssc controller node missing\n");
+		ret = -EINVAL;
+		goto out;
+	}
+	at91sam9x5ek_dai.cpu_of_node = cpu_np;
+	at91sam9x5ek_dai.platform_of_node = cpu_np;
+
+	of_node_put(codec_np);
+	of_node_put(cpu_np);
+
+	at91sam9x5ek_dai.dai_fmt = snd_soc_of_parse_daifmt(np, "atmel,");
+
+	ret = snd_soc_register_card(&snd_soc_at91sam9x5ek);
+	if (ret) {
+		dev_err(&pdev->dev,
+			"ASoC: Platform device allocation failed\n");
+		goto out;
+	}
+
+	platform_set_drvdata(pdev, &snd_soc_at91sam9x5ek);
+
+	dev_dbg(&pdev->dev, "ASoC: %s ok\n", __func__);
+
+	return ret;
+
+out:
+	atmel_ssc_put_audio(0);
+	return ret;
+}
+
+static int sam9x5_wm8731_driver_remove(struct platform_device *pdev)
+{
+	struct snd_soc_card *card = platform_get_drvdata(pdev);
+
+	snd_soc_unregister_card(card);
+	atmel_ssc_put_audio(0);
+
+	return 0;
+}
+
+static const struct of_device_id sam9x5_wm8731_of_match[] = {
+	{ .compatible = "atmel,sam9x5-audio-wm8731", },
+	{},
+};
+MODULE_DEVICE_TABLE(of, sam9x5_wm8731_of_match);
+
+static struct platform_driver sam9x5_wm8731_driver = {
+	.driver = {
+		.name = DRV_NAME,
+		.owner = THIS_MODULE,
+		.of_match_table = of_match_ptr(sam9x5_wm8731_of_match),
+	},
+	.probe = sam9x5_wm8731_driver_probe,
+	.remove = sam9x5_wm8731_driver_remove,
+};
+module_platform_driver(sam9x5_wm8731_driver);
+
+/* Module information */
+MODULE_AUTHOR("Nicolas Ferre <nicolas.ferre@atmel.com>");
+MODULE_AUTHOR("Richard Genoud <richard.genoud@gmail.com>");
+MODULE_DESCRIPTION("ALSA SoC machine driver for AT91SAM9x5 - WM8731");
+MODULE_LICENSE("GPL");
+MODULE_ALIAS("platform:" DRV_NAME);
-- 
1.7.10.4

_______________________________________________
devicetree-discuss mailing list
devicetree-discuss@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/devicetree-discuss

^ permalink raw reply related	[flat|nested] 122+ messages in thread

* [PATCH v2 1/5] sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards
@ 2013-07-08 13:29   ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-08 13:29 UTC (permalink / raw)
  To: linux-arm-kernel

From: Nicolas Ferre <nicolas.ferre@atmel.com>

Description of the Asoc machine driver for an at91sam9x5 based board
with a wm8731 audio DAC. Wm8731 is clocked by a crystal and used as a
master on the SSC/I2S interface. Its connections are a headphone jack
and an Line input jack.

[Richard: this is based on an old patch from Nicolas that I forward
ported and reworked to use only device tree]

Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Signed-off-by: Uwe Kleine-K?nig <u.kleine-koenig@pengutronix.de>
Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
---
 sound/soc/atmel/Kconfig         |   10 ++
 sound/soc/atmel/Makefile        |    2 +
 sound/soc/atmel/sam9x5_wm8731.c |  206 +++++++++++++++++++++++++++++++++++++++
 3 files changed, 218 insertions(+)
 create mode 100644 sound/soc/atmel/sam9x5_wm8731.c

diff --git a/sound/soc/atmel/Kconfig b/sound/soc/atmel/Kconfig
index 1c0b185..9eb8c49 100644
--- a/sound/soc/atmel/Kconfig
+++ b/sound/soc/atmel/Kconfig
@@ -33,6 +33,16 @@ config SND_AT91_SOC_SAM9G20_WM8731
 	  Say Y if you want to add support for SoC audio on WM8731-based
 	  AT91sam9g20 evaluation board.
 
+config SND_AT91_SOC_SAM9X5_WM8731
+	tristate "SoC Audio support for WM8731-based at91sam9x5 board"
+	depends on ATMEL_SSC && SND_ATMEL_SOC && SOC_AT91SAM9X5
+	select SND_ATMEL_SOC_SSC
+	select SND_ATMEL_SOC_DMA
+	select SND_SOC_WM8731
+	help
+	  Say Y if you want to add support for audio SoC on an
+	  at91sam9x5 based board that is using WM8731 codec.
+
 config SND_AT91_SOC_AFEB9260
 	tristate "SoC Audio support for AFEB9260 board"
 	depends on ARCH_AT91 && ATMEL_SSC && ARCH_AT91 && MACH_AFEB9260 && SND_ATMEL_SOC
diff --git a/sound/soc/atmel/Makefile b/sound/soc/atmel/Makefile
index 41967cc..7784c09 100644
--- a/sound/soc/atmel/Makefile
+++ b/sound/soc/atmel/Makefile
@@ -11,6 +11,8 @@ obj-$(CONFIG_SND_ATMEL_SOC_SSC) += snd-soc-atmel_ssc_dai.o
 
 # AT91 Machine Support
 snd-soc-sam9g20-wm8731-objs := sam9g20_wm8731.o
+snd-soc-sam9x5-wm8731-objs := sam9x5_wm8731.o
 
 obj-$(CONFIG_SND_AT91_SOC_SAM9G20_WM8731) += snd-soc-sam9g20-wm8731.o
+obj-$(CONFIG_SND_AT91_SOC_SAM9X5_WM8731) += snd-soc-sam9x5-wm8731.o
 obj-$(CONFIG_SND_AT91_SOC_AFEB9260) += snd-soc-afeb9260.o
diff --git a/sound/soc/atmel/sam9x5_wm8731.c b/sound/soc/atmel/sam9x5_wm8731.c
new file mode 100644
index 0000000..3e5a9f6
--- /dev/null
+++ b/sound/soc/atmel/sam9x5_wm8731.c
@@ -0,0 +1,206 @@
+/*
+ * sam9x5_wm8731   --	SoC audio for AT91SAM9X5-based boards
+ *			that are using WM8731 as codec.
+ *
+ *  Copyright (C) 2011 Atmel,
+ *		  Nicolas Ferre <nicolas.ferre@atmel.com>
+ *
+ * Based on sam9g20_wm8731.c by:
+ * Sedji Gaouaou <sedji.gaouaou@atmel.com>
+ *
+ * GPL
+ */
+#include <linux/module.h>
+#include <linux/moduleparam.h>
+#include <linux/kernel.h>
+#include <linux/clk.h>
+#include <linux/timer.h>
+#include <linux/interrupt.h>
+#include <linux/platform_device.h>
+#include <linux/i2c.h>
+
+#include <linux/atmel-ssc.h>
+
+#include <sound/core.h>
+#include <sound/pcm.h>
+#include <sound/pcm_params.h>
+#include <sound/soc.h>
+
+#include <asm/mach-types.h>
+#include <mach/hardware.h>
+#include <mach/gpio.h>
+
+#include "../codecs/wm8731.h"
+#include "atmel-pcm.h"
+#include "atmel_ssc_dai.h"
+
+#define MCLK_RATE 12288000
+
+#define DRV_NAME "sam9x5-snd-wm8731"
+
+/*
+ * Logic for a wm8731 as connected on a at91sam9x5 based board.
+ */
+static int at91sam9x5ek_wm8731_init(struct snd_soc_pcm_runtime *rtd)
+{
+	struct snd_soc_codec *codec = rtd->codec;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_dapm_context *dapm = &codec->dapm;
+	struct device *dev = rtd->dev;
+	int ret;
+
+	dev_dbg(dev, "ASoC: %s called\n", __func__);
+
+	codec_dai->driver->playback.rates &= SNDRV_PCM_RATE_8000 |
+		SNDRV_PCM_RATE_32000 |
+		SNDRV_PCM_RATE_48000 |
+		SNDRV_PCM_RATE_96000;
+	codec_dai->driver->capture.rates &= SNDRV_PCM_RATE_8000 |
+		SNDRV_PCM_RATE_32000 |
+		SNDRV_PCM_RATE_48000 |
+		SNDRV_PCM_RATE_96000;
+
+	/* set the codec system clock for DAC and ADC */
+	ret = snd_soc_dai_set_sysclk(codec_dai, WM8731_SYSCLK_XTAL,
+				     MCLK_RATE, SND_SOC_CLOCK_IN);
+	if (ret < 0) {
+		dev_err(dev, "ASoC: Failed to set WM8731 SYSCLK: %d\n", ret);
+		return ret;
+	}
+
+	/* signal a DAPM event */
+	snd_soc_dapm_sync(dapm);
+	return 0;
+}
+
+/*
+ * Audio paths on at91sam9x5ek board:
+ *
+ *  |A| ------------> |      | ---R----> Headphone Jack
+ *  |T| <----\        |  WM  | ---L--/
+ *  |9| ---> CLK <--> | 8751 | <--R----- Line In Jack
+ *  |1| <------------ |      | <--L--/
+ */
+static const struct snd_soc_dapm_widget at91sam9x5ek_dapm_widgets[] = {
+	SND_SOC_DAPM_HP("Headphone Jack", NULL),
+	SND_SOC_DAPM_LINE("Line In Jack", NULL),
+};
+
+static struct snd_soc_dai_link at91sam9x5ek_dai = {
+	.name = "WM8731",
+	.stream_name = "WM8731 PCM",
+	.codec_dai_name = "wm8731-hifi",
+	.init = at91sam9x5ek_wm8731_init,
+};
+
+static struct snd_soc_card snd_soc_at91sam9x5ek = {
+	.owner = THIS_MODULE,
+	.dai_link = &at91sam9x5ek_dai,
+	.num_links = 1,
+	.dapm_widgets = at91sam9x5ek_dapm_widgets,
+	.num_dapm_widgets = ARRAY_SIZE(at91sam9x5ek_dapm_widgets),
+};
+
+static int sam9x5_wm8731_driver_probe(struct platform_device *pdev)
+{
+	struct device_node *np = pdev->dev.of_node;
+	struct device_node *codec_np, *cpu_np;
+	int ret;
+
+	if (!np) {
+		dev_err(&pdev->dev, "No device node supplied\n");
+		return -EINVAL;
+	}
+
+	ret = atmel_ssc_set_audio(0);
+	if (ret != 0) {
+		dev_err(&pdev->dev,
+			"ASoC: Failed to set SSC 0 for audio: %d\n", ret);
+		return ret;
+	}
+
+	snd_soc_at91sam9x5ek.dev = &pdev->dev;
+
+	ret = snd_soc_of_parse_card_name(&snd_soc_at91sam9x5ek, "atmel,model");
+	if (ret)
+		goto out;
+
+	ret = snd_soc_of_parse_audio_routing(&snd_soc_at91sam9x5ek,
+					     "atmel,audio-routing");
+	if (ret)
+		goto out;
+
+	codec_np = of_parse_phandle(np, "atmel,audio-codec", 0);
+	if (!codec_np) {
+		dev_err(&pdev->dev, "codec info missing\n");
+		ret = -EINVAL;
+		goto out;
+	}
+
+	at91sam9x5ek_dai.codec_of_node = codec_np;
+
+	cpu_np = of_parse_phandle(np, "atmel,ssc-controller", 0);
+	if (!cpu_np) {
+		dev_err(&pdev->dev, "ssc controller node missing\n");
+		ret = -EINVAL;
+		goto out;
+	}
+	at91sam9x5ek_dai.cpu_of_node = cpu_np;
+	at91sam9x5ek_dai.platform_of_node = cpu_np;
+
+	of_node_put(codec_np);
+	of_node_put(cpu_np);
+
+	at91sam9x5ek_dai.dai_fmt = snd_soc_of_parse_daifmt(np, "atmel,");
+
+	ret = snd_soc_register_card(&snd_soc_at91sam9x5ek);
+	if (ret) {
+		dev_err(&pdev->dev,
+			"ASoC: Platform device allocation failed\n");
+		goto out;
+	}
+
+	platform_set_drvdata(pdev, &snd_soc_at91sam9x5ek);
+
+	dev_dbg(&pdev->dev, "ASoC: %s ok\n", __func__);
+
+	return ret;
+
+out:
+	atmel_ssc_put_audio(0);
+	return ret;
+}
+
+static int sam9x5_wm8731_driver_remove(struct platform_device *pdev)
+{
+	struct snd_soc_card *card = platform_get_drvdata(pdev);
+
+	snd_soc_unregister_card(card);
+	atmel_ssc_put_audio(0);
+
+	return 0;
+}
+
+static const struct of_device_id sam9x5_wm8731_of_match[] = {
+	{ .compatible = "atmel,sam9x5-audio-wm8731", },
+	{},
+};
+MODULE_DEVICE_TABLE(of, sam9x5_wm8731_of_match);
+
+static struct platform_driver sam9x5_wm8731_driver = {
+	.driver = {
+		.name = DRV_NAME,
+		.owner = THIS_MODULE,
+		.of_match_table = of_match_ptr(sam9x5_wm8731_of_match),
+	},
+	.probe = sam9x5_wm8731_driver_probe,
+	.remove = sam9x5_wm8731_driver_remove,
+};
+module_platform_driver(sam9x5_wm8731_driver);
+
+/* Module information */
+MODULE_AUTHOR("Nicolas Ferre <nicolas.ferre@atmel.com>");
+MODULE_AUTHOR("Richard Genoud <richard.genoud@gmail.com>");
+MODULE_DESCRIPTION("ALSA SoC machine driver for AT91SAM9x5 - WM8731");
+MODULE_LICENSE("GPL");
+MODULE_ALIAS("platform:" DRV_NAME);
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 122+ messages in thread

* [PATCH v2 2/5] ARM: AT91: DTS: sam9x5: add SSC DMA parameters
  2013-07-08 13:29 ` Richard Genoud
@ 2013-07-08 13:29   ` Richard Genoud
  -1 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-08 13:29 UTC (permalink / raw)
  To: Mark Brown, Nicolas Ferre, Liam Girdwood
  Cc: Bo Shen, linux-arm-kernel, linux-kernel, alsa-devel,
	devicetree-discuss, Richard Genoud

Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
---
 arch/arm/boot/dts/at91sam9x5.dtsi |    3 +++
 1 file changed, 3 insertions(+)

diff --git a/arch/arm/boot/dts/at91sam9x5.dtsi b/arch/arm/boot/dts/at91sam9x5.dtsi
index 57d45f5..cf78ac0 100644
--- a/arch/arm/boot/dts/at91sam9x5.dtsi
+++ b/arch/arm/boot/dts/at91sam9x5.dtsi
@@ -542,6 +542,9 @@
 				compatible = "atmel,at91sam9g45-ssc";
 				reg = <0xf0010000 0x4000>;
 				interrupts = <28 IRQ_TYPE_LEVEL_HIGH 5>;
+				dmas = <&dma0 1 AT91_DMA_CFG_PER_ID(13)>,
+				       <&dma0 1 AT91_DMA_CFG_PER_ID(14)>;
+				dma-names = "tx", "rx";
 				pinctrl-names = "default";
 				pinctrl-0 = <&pinctrl_ssc0_tx &pinctrl_ssc0_rx>;
 				status = "disabled";
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 122+ messages in thread

* [PATCH v2 2/5] ARM: AT91: DTS: sam9x5: add SSC DMA parameters
@ 2013-07-08 13:29   ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-08 13:29 UTC (permalink / raw)
  To: linux-arm-kernel

Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
---
 arch/arm/boot/dts/at91sam9x5.dtsi |    3 +++
 1 file changed, 3 insertions(+)

diff --git a/arch/arm/boot/dts/at91sam9x5.dtsi b/arch/arm/boot/dts/at91sam9x5.dtsi
index 57d45f5..cf78ac0 100644
--- a/arch/arm/boot/dts/at91sam9x5.dtsi
+++ b/arch/arm/boot/dts/at91sam9x5.dtsi
@@ -542,6 +542,9 @@
 				compatible = "atmel,at91sam9g45-ssc";
 				reg = <0xf0010000 0x4000>;
 				interrupts = <28 IRQ_TYPE_LEVEL_HIGH 5>;
+				dmas = <&dma0 1 AT91_DMA_CFG_PER_ID(13)>,
+				       <&dma0 1 AT91_DMA_CFG_PER_ID(14)>;
+				dma-names = "tx", "rx";
 				pinctrl-names = "default";
 				pinctrl-0 = <&pinctrl_ssc0_tx &pinctrl_ssc0_rx>;
 				status = "disabled";
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 122+ messages in thread

* [PATCH v2 3/5] ARM: AT91: DTS: sam9x5ek: add WM8731 codec
  2013-07-08 13:29 ` Richard Genoud
@ 2013-07-08 13:29   ` Richard Genoud
  -1 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-08 13:29 UTC (permalink / raw)
  To: Mark Brown, Nicolas Ferre, Liam Girdwood
  Cc: Bo Shen, linux-arm-kernel, linux-kernel, alsa-devel,
	devicetree-discuss, Richard Genoud

The WM8731 codec on sam9x5ek board is on i2c, address 1A

Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
---
 arch/arm/boot/dts/at91sam9x5ek.dtsi |    5 +++++
 1 file changed, 5 insertions(+)

diff --git a/arch/arm/boot/dts/at91sam9x5ek.dtsi b/arch/arm/boot/dts/at91sam9x5ek.dtsi
index d107241..e6fb309 100644
--- a/arch/arm/boot/dts/at91sam9x5ek.dtsi
+++ b/arch/arm/boot/dts/at91sam9x5ek.dtsi
@@ -59,6 +59,11 @@
 
 			i2c0: i2c@f8010000 {
 				status = "okay";
+
+				wm8731: wm8731@1a {
+					compatible = "wm8731";
+					reg = <0x1a>;
+				};
 			};
 
 			pinctrl@fffff400 {
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 122+ messages in thread

* [PATCH v2 3/5] ARM: AT91: DTS: sam9x5ek: add WM8731 codec
@ 2013-07-08 13:29   ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-08 13:29 UTC (permalink / raw)
  To: linux-arm-kernel

The WM8731 codec on sam9x5ek board is on i2c, address 1A

Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
---
 arch/arm/boot/dts/at91sam9x5ek.dtsi |    5 +++++
 1 file changed, 5 insertions(+)

diff --git a/arch/arm/boot/dts/at91sam9x5ek.dtsi b/arch/arm/boot/dts/at91sam9x5ek.dtsi
index d107241..e6fb309 100644
--- a/arch/arm/boot/dts/at91sam9x5ek.dtsi
+++ b/arch/arm/boot/dts/at91sam9x5ek.dtsi
@@ -59,6 +59,11 @@
 
 			i2c0: i2c at f8010000 {
 				status = "okay";
+
+				wm8731: wm8731 at 1a {
+					compatible = "wm8731";
+					reg = <0x1a>;
+				};
 			};
 
 			pinctrl at fffff400 {
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 122+ messages in thread

* [PATCH v2 4/5] ARM: AT91: DTS: sam9x5ek: add sound configuration
@ 2013-07-08 13:29   ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-08 13:29 UTC (permalink / raw)
  To: Mark Brown, Nicolas Ferre, Liam Girdwood
  Cc: Bo Shen, linux-arm-kernel, linux-kernel, alsa-devel,
	devicetree-discuss, Richard Genoud

The sam9x5ek board has 2 jacks:
headphone wired on RHPOUT/LHPOUT of the wm8731
line in wired on LLINEIN/RLINEIN of the wm8731

Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
---
 arch/arm/boot/dts/at91sam9x5ek.dtsi |   18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/arch/arm/boot/dts/at91sam9x5ek.dtsi b/arch/arm/boot/dts/at91sam9x5ek.dtsi
index e6fb309..bd0f7b8 100644
--- a/arch/arm/boot/dts/at91sam9x5ek.dtsi
+++ b/arch/arm/boot/dts/at91sam9x5ek.dtsi
@@ -109,4 +109,22 @@
 			status = "okay";
 		};
 	};
+
+	sound {
+		compatible = "atmel,sam9x5-audio-wm8731";
+
+		atmel,model = "wm8731 @ AT91SAM9X5EK";
+
+		atmel,audio-routing =
+			"Headphone Jack", "RHPOUT",
+			"Headphone Jack", "LHPOUT",
+			"LLINEIN", "Line In Jack",
+			"RLINEIN", "Line In Jack";
+
+		atmel,ssc-controller = <&ssc0>;
+		atmel,audio-codec = <&wm8731>;
+		atmel,format = "i2s";
+		atmel,bitclock-master;
+		atmel,frame-master;
+	};
 };
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 122+ messages in thread

* [PATCH v2 4/5] ARM: AT91: DTS: sam9x5ek: add sound configuration
@ 2013-07-08 13:29   ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-08 13:29 UTC (permalink / raw)
  To: Mark Brown, Nicolas Ferre, Liam Girdwood
  Cc: alsa-devel-K7yf7f+aM1XWsZ/bQMPhNw,
	devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, Bo Shen,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r

The sam9x5ek board has 2 jacks:
headphone wired on RHPOUT/LHPOUT of the wm8731
line in wired on LLINEIN/RLINEIN of the wm8731

Signed-off-by: Richard Genoud <richard.genoud-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
---
 arch/arm/boot/dts/at91sam9x5ek.dtsi |   18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/arch/arm/boot/dts/at91sam9x5ek.dtsi b/arch/arm/boot/dts/at91sam9x5ek.dtsi
index e6fb309..bd0f7b8 100644
--- a/arch/arm/boot/dts/at91sam9x5ek.dtsi
+++ b/arch/arm/boot/dts/at91sam9x5ek.dtsi
@@ -109,4 +109,22 @@
 			status = "okay";
 		};
 	};
+
+	sound {
+		compatible = "atmel,sam9x5-audio-wm8731";
+
+		atmel,model = "wm8731 @ AT91SAM9X5EK";
+
+		atmel,audio-routing =
+			"Headphone Jack", "RHPOUT",
+			"Headphone Jack", "LHPOUT",
+			"LLINEIN", "Line In Jack",
+			"RLINEIN", "Line In Jack";
+
+		atmel,ssc-controller = <&ssc0>;
+		atmel,audio-codec = <&wm8731>;
+		atmel,format = "i2s";
+		atmel,bitclock-master;
+		atmel,frame-master;
+	};
 };
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 122+ messages in thread

* [PATCH v2 4/5] ARM: AT91: DTS: sam9x5ek: add sound configuration
@ 2013-07-08 13:29   ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-08 13:29 UTC (permalink / raw)
  To: linux-arm-kernel

The sam9x5ek board has 2 jacks:
headphone wired on RHPOUT/LHPOUT of the wm8731
line in wired on LLINEIN/RLINEIN of the wm8731

Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
---
 arch/arm/boot/dts/at91sam9x5ek.dtsi |   18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/arch/arm/boot/dts/at91sam9x5ek.dtsi b/arch/arm/boot/dts/at91sam9x5ek.dtsi
index e6fb309..bd0f7b8 100644
--- a/arch/arm/boot/dts/at91sam9x5ek.dtsi
+++ b/arch/arm/boot/dts/at91sam9x5ek.dtsi
@@ -109,4 +109,22 @@
 			status = "okay";
 		};
 	};
+
+	sound {
+		compatible = "atmel,sam9x5-audio-wm8731";
+
+		atmel,model = "wm8731 @ AT91SAM9X5EK";
+
+		atmel,audio-routing =
+			"Headphone Jack", "RHPOUT",
+			"Headphone Jack", "LHPOUT",
+			"LLINEIN", "Line In Jack",
+			"RLINEIN", "Line In Jack";
+
+		atmel,ssc-controller = <&ssc0>;
+		atmel,audio-codec = <&wm8731>;
+		atmel,format = "i2s";
+		atmel,bitclock-master;
+		atmel,frame-master;
+	};
 };
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 122+ messages in thread

* [PATCH v2 5/5] ARM: AT91: DTS: sam9x5ek: enable SSC
  2013-07-08 13:29 ` Richard Genoud
@ 2013-07-08 13:29   ` Richard Genoud
  -1 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-08 13:29 UTC (permalink / raw)
  To: Mark Brown, Nicolas Ferre, Liam Girdwood
  Cc: Bo Shen, linux-arm-kernel, linux-kernel, alsa-devel,
	devicetree-discuss, Richard Genoud

Enable the SSC needed for the WM8731 codec

Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
---
 arch/arm/boot/dts/at91sam9x5ek.dtsi |    4 ++++
 1 file changed, 4 insertions(+)

diff --git a/arch/arm/boot/dts/at91sam9x5ek.dtsi b/arch/arm/boot/dts/at91sam9x5ek.dtsi
index bd0f7b8..6684d4b 100644
--- a/arch/arm/boot/dts/at91sam9x5ek.dtsi
+++ b/arch/arm/boot/dts/at91sam9x5ek.dtsi
@@ -95,6 +95,10 @@
 			watchdog@fffffe40 {
 				status = "okay";
 			};
+
+			ssc0: ssc@f0010000 {
+				status = "okay";
+			};
 		};
 
 		usb0: ohci@00600000 {
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 122+ messages in thread

* [PATCH v2 5/5] ARM: AT91: DTS: sam9x5ek: enable SSC
@ 2013-07-08 13:29   ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-08 13:29 UTC (permalink / raw)
  To: linux-arm-kernel

Enable the SSC needed for the WM8731 codec

Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
---
 arch/arm/boot/dts/at91sam9x5ek.dtsi |    4 ++++
 1 file changed, 4 insertions(+)

diff --git a/arch/arm/boot/dts/at91sam9x5ek.dtsi b/arch/arm/boot/dts/at91sam9x5ek.dtsi
index bd0f7b8..6684d4b 100644
--- a/arch/arm/boot/dts/at91sam9x5ek.dtsi
+++ b/arch/arm/boot/dts/at91sam9x5ek.dtsi
@@ -95,6 +95,10 @@
 			watchdog at fffffe40 {
 				status = "okay";
 			};
+
+			ssc0: ssc at f0010000 {
+				status = "okay";
+			};
 		};
 
 		usb0: ohci at 00600000 {
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 122+ messages in thread

* Re: [PATCH v2 0/5] Sound support for at91sam9x5-wm8731 based boards
  2013-07-08 13:29 ` Richard Genoud
  (?)
@ 2013-07-08 13:53   ` Nicolas Ferre
  -1 siblings, 0 replies; 122+ messages in thread
From: Nicolas Ferre @ 2013-07-08 13:53 UTC (permalink / raw)
  To: Richard Genoud, Mark Brown, Uwe Kleine-König
  Cc: Liam Girdwood, Bo Shen, linux-arm-kernel, linux-kernel,
	alsa-devel, devicetree-discuss

On 08/07/2013 15:29, Richard Genoud :
> Hi,
>
> This patchset add sound on the at91sam9x5ek board.
> It's based on Nicolas Ferre's work in the 2.6.39 atmel patch for sam9x5:
> https://github.com/linux4sam/linux-at91/commit/0aa157c9e71ccccf3abc30fa37eb5c95b392978d
>
> It needs Bo Chen's patchset on the generic dmaengine (topic/atmel branch
> on Mark's sound tree) and the SSC interrupts disabled (cf
> http://www.spinics.net/lists/arm-kernel/msg256901.html)
>
>
> Tested on at91sam9g35ek.
>
> patches applies on next-20130708
>
> [I let the original signed-off from Nicolas and Uwe in place, I don't
> know if I should replace them by something like "originaly-signed-off-by"
> since the code has been changed.]

I am happy to give my "signed-off" to this patch. I guess that Uwe's one 
was more an integration signed-off when he imported the code to his git 
tree.

> [Sorry if it's too late for 3.11]

Do not be sorry. Good work is always appreciated at any time!

> Changes from V1-RFC:
>   * drop patches on SSC since Bo Chen already did the work
>   * reorder patches to have the machine driver first
>   * drop code already handled by the ASoC framework
>   * drop unneeded SND_ATMEL_SOC_PDC config selection
>   * use static snd_soc_card and  snd_soc_dai_link structures.
>
> Best regards,
> Richard.
>
> Nicolas Ferre (1):
>    sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards
>
> Richard Genoud (4):
>    ARM: AT91: DTS: sam9x5: add SSC DMA parameters
>    ARM: AT91: DTS: sam9x5ek: add WM8731 codec
>    ARM: AT91: DTS: sam9x5ek: add sound configuration
>    ARM: AT91: DTS: sam9x5ek: enable SSC

Maybe we will have to split the series and let these DT patches go with 
arm-soc.

>   arch/arm/boot/dts/at91sam9x5.dtsi   |    3 +
>   arch/arm/boot/dts/at91sam9x5ek.dtsi |   27 +++++
>   sound/soc/atmel/Kconfig             |   10 ++
>   sound/soc/atmel/Makefile            |    2 +
>   sound/soc/atmel/sam9x5_wm8731.c     |  206 +++++++++++++++++++++++++++++++++++
>   5 files changed, 248 insertions(+)
>   create mode 100644 sound/soc/atmel/sam9x5_wm8731.c
>

Thanks, bye,
-- 
Nicolas Ferre

^ permalink raw reply	[flat|nested] 122+ messages in thread

* Re: [PATCH v2 0/5] Sound support for at91sam9x5-wm8731 based boards
@ 2013-07-08 13:53   ` Nicolas Ferre
  0 siblings, 0 replies; 122+ messages in thread
From: Nicolas Ferre @ 2013-07-08 13:53 UTC (permalink / raw)
  To: Richard Genoud, Mark Brown, Uwe Kleine-König
  Cc: Liam Girdwood, Bo Shen, linux-arm-kernel, linux-kernel,
	alsa-devel, devicetree-discuss

On 08/07/2013 15:29, Richard Genoud :
> Hi,
>
> This patchset add sound on the at91sam9x5ek board.
> It's based on Nicolas Ferre's work in the 2.6.39 atmel patch for sam9x5:
> https://github.com/linux4sam/linux-at91/commit/0aa157c9e71ccccf3abc30fa37eb5c95b392978d
>
> It needs Bo Chen's patchset on the generic dmaengine (topic/atmel branch
> on Mark's sound tree) and the SSC interrupts disabled (cf
> http://www.spinics.net/lists/arm-kernel/msg256901.html)
>
>
> Tested on at91sam9g35ek.
>
> patches applies on next-20130708
>
> [I let the original signed-off from Nicolas and Uwe in place, I don't
> know if I should replace them by something like "originaly-signed-off-by"
> since the code has been changed.]

I am happy to give my "signed-off" to this patch. I guess that Uwe's one 
was more an integration signed-off when he imported the code to his git 
tree.

> [Sorry if it's too late for 3.11]

Do not be sorry. Good work is always appreciated at any time!

> Changes from V1-RFC:
>   * drop patches on SSC since Bo Chen already did the work
>   * reorder patches to have the machine driver first
>   * drop code already handled by the ASoC framework
>   * drop unneeded SND_ATMEL_SOC_PDC config selection
>   * use static snd_soc_card and  snd_soc_dai_link structures.
>
> Best regards,
> Richard.
>
> Nicolas Ferre (1):
>    sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards
>
> Richard Genoud (4):
>    ARM: AT91: DTS: sam9x5: add SSC DMA parameters
>    ARM: AT91: DTS: sam9x5ek: add WM8731 codec
>    ARM: AT91: DTS: sam9x5ek: add sound configuration
>    ARM: AT91: DTS: sam9x5ek: enable SSC

Maybe we will have to split the series and let these DT patches go with 
arm-soc.

>   arch/arm/boot/dts/at91sam9x5.dtsi   |    3 +
>   arch/arm/boot/dts/at91sam9x5ek.dtsi |   27 +++++
>   sound/soc/atmel/Kconfig             |   10 ++
>   sound/soc/atmel/Makefile            |    2 +
>   sound/soc/atmel/sam9x5_wm8731.c     |  206 +++++++++++++++++++++++++++++++++++
>   5 files changed, 248 insertions(+)
>   create mode 100644 sound/soc/atmel/sam9x5_wm8731.c
>

Thanks, bye,
-- 
Nicolas Ferre

^ permalink raw reply	[flat|nested] 122+ messages in thread

* [PATCH v2 0/5] Sound support for at91sam9x5-wm8731 based boards
@ 2013-07-08 13:53   ` Nicolas Ferre
  0 siblings, 0 replies; 122+ messages in thread
From: Nicolas Ferre @ 2013-07-08 13:53 UTC (permalink / raw)
  To: linux-arm-kernel

On 08/07/2013 15:29, Richard Genoud :
> Hi,
>
> This patchset add sound on the at91sam9x5ek board.
> It's based on Nicolas Ferre's work in the 2.6.39 atmel patch for sam9x5:
> https://github.com/linux4sam/linux-at91/commit/0aa157c9e71ccccf3abc30fa37eb5c95b392978d
>
> It needs Bo Chen's patchset on the generic dmaengine (topic/atmel branch
> on Mark's sound tree) and the SSC interrupts disabled (cf
> http://www.spinics.net/lists/arm-kernel/msg256901.html)
>
>
> Tested on at91sam9g35ek.
>
> patches applies on next-20130708
>
> [I let the original signed-off from Nicolas and Uwe in place, I don't
> know if I should replace them by something like "originaly-signed-off-by"
> since the code has been changed.]

I am happy to give my "signed-off" to this patch. I guess that Uwe's one 
was more an integration signed-off when he imported the code to his git 
tree.

> [Sorry if it's too late for 3.11]

Do not be sorry. Good work is always appreciated at any time!

> Changes from V1-RFC:
>   * drop patches on SSC since Bo Chen already did the work
>   * reorder patches to have the machine driver first
>   * drop code already handled by the ASoC framework
>   * drop unneeded SND_ATMEL_SOC_PDC config selection
>   * use static snd_soc_card and  snd_soc_dai_link structures.
>
> Best regards,
> Richard.
>
> Nicolas Ferre (1):
>    sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards
>
> Richard Genoud (4):
>    ARM: AT91: DTS: sam9x5: add SSC DMA parameters
>    ARM: AT91: DTS: sam9x5ek: add WM8731 codec
>    ARM: AT91: DTS: sam9x5ek: add sound configuration
>    ARM: AT91: DTS: sam9x5ek: enable SSC

Maybe we will have to split the series and let these DT patches go with 
arm-soc.

>   arch/arm/boot/dts/at91sam9x5.dtsi   |    3 +
>   arch/arm/boot/dts/at91sam9x5ek.dtsi |   27 +++++
>   sound/soc/atmel/Kconfig             |   10 ++
>   sound/soc/atmel/Makefile            |    2 +
>   sound/soc/atmel/sam9x5_wm8731.c     |  206 +++++++++++++++++++++++++++++++++++
>   5 files changed, 248 insertions(+)
>   create mode 100644 sound/soc/atmel/sam9x5_wm8731.c
>

Thanks, bye,
-- 
Nicolas Ferre

^ permalink raw reply	[flat|nested] 122+ messages in thread

* Re: [alsa-devel] [PATCH v2 3/5] ARM: AT91: DTS: sam9x5ek: add WM8731 codec
@ 2013-07-08 14:36     ` Mark Brown
  0 siblings, 0 replies; 122+ messages in thread
From: Mark Brown @ 2013-07-08 14:36 UTC (permalink / raw)
  To: Richard Genoud
  Cc: Nicolas Ferre, Liam Girdwood, alsa-devel, devicetree-discuss,
	linux-kernel, Bo Shen, linux-arm-kernel

[-- Attachment #1: Type: text/plain, Size: 265 bytes --]

On Mon, Jul 08, 2013 at 03:29:51PM +0200, Richard Genoud wrote:
> The WM8731 codec on sam9x5ek board is on i2c, address 1A
> 
> Signed-off-by: Richard Genoud <richard.genoud@gmail.com>

Acked-by: Mark Brown <broonie@linaro.org>

This should go via arm-soc.

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 122+ messages in thread

* Re: [alsa-devel] [PATCH v2 3/5] ARM: AT91: DTS: sam9x5ek: add WM8731 codec
@ 2013-07-08 14:36     ` Mark Brown
  0 siblings, 0 replies; 122+ messages in thread
From: Mark Brown @ 2013-07-08 14:36 UTC (permalink / raw)
  To: Richard Genoud
  Cc: alsa-devel-K7yf7f+aM1XWsZ/bQMPhNw,
	devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ, Liam Girdwood,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, Bo Shen,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r


[-- Attachment #1.1: Type: text/plain, Size: 324 bytes --]

On Mon, Jul 08, 2013 at 03:29:51PM +0200, Richard Genoud wrote:
> The WM8731 codec on sam9x5ek board is on i2c, address 1A
> 
> Signed-off-by: Richard Genoud <richard.genoud-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>

Acked-by: Mark Brown <broonie-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>

This should go via arm-soc.

[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

[-- Attachment #2: Type: text/plain, Size: 192 bytes --]

_______________________________________________
devicetree-discuss mailing list
devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org
https://lists.ozlabs.org/listinfo/devicetree-discuss

^ permalink raw reply	[flat|nested] 122+ messages in thread

* [alsa-devel] [PATCH v2 3/5] ARM: AT91: DTS: sam9x5ek: add WM8731 codec
@ 2013-07-08 14:36     ` Mark Brown
  0 siblings, 0 replies; 122+ messages in thread
From: Mark Brown @ 2013-07-08 14:36 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, Jul 08, 2013 at 03:29:51PM +0200, Richard Genoud wrote:
> The WM8731 codec on sam9x5ek board is on i2c, address 1A
> 
> Signed-off-by: Richard Genoud <richard.genoud@gmail.com>

Acked-by: Mark Brown <broonie@linaro.org>

This should go via arm-soc.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20130708/77e2db73/attachment.sig>

^ permalink raw reply	[flat|nested] 122+ messages in thread

* Re: [alsa-devel] [PATCH v2 1/5] sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards
  2013-07-08 13:29   ` Richard Genoud
@ 2013-07-08 14:39     ` Lars-Peter Clausen
  -1 siblings, 0 replies; 122+ messages in thread
From: Lars-Peter Clausen @ 2013-07-08 14:39 UTC (permalink / raw)
  To: Richard Genoud
  Cc: Mark Brown, Nicolas Ferre, Liam Girdwood, alsa-devel,
	devicetree-discuss, linux-kernel, Bo Shen, Uwe Kleine-König,
	linux-arm-kernel

On 07/08/2013 03:29 PM, Richard Genoud wrote:
[...]
> +/*
> + * Logic for a wm8731 as connected on a at91sam9x5 based board.
> + */
> +static int at91sam9x5ek_wm8731_init(struct snd_soc_pcm_runtime *rtd)
> +{
[...]
> +	codec_dai->driver->playback.rates &= SNDRV_PCM_RATE_8000 |
> +		SNDRV_PCM_RATE_32000 |
> +		SNDRV_PCM_RATE_48000 |
> +		SNDRV_PCM_RATE_96000;
> +	codec_dai->driver->capture.rates &= SNDRV_PCM_RATE_8000 |
> +		SNDRV_PCM_RATE_32000 |
> +		SNDRV_PCM_RATE_48000 |
> +		SNDRV_PCM_RATE_96000;

That's not right. The driver structure is shared between all instances of
the codec, a single instance should not modify it. If you need to constrain
the list of supported rates use snd_pcm_hw_constraint_list().

> +
> +	/* set the codec system clock for DAC and ADC */
> +	ret = snd_soc_dai_set_sysclk(codec_dai, WM8731_SYSCLK_XTAL,
> +				     MCLK_RATE, SND_SOC_CLOCK_IN);
> +	if (ret < 0) {
> +		dev_err(dev, "ASoC: Failed to set WM8731 SYSCLK: %d\n", ret);
> +		return ret;
> +	}
> +
> +	/* signal a DAPM event */
> +	snd_soc_dapm_sync(dapm);

This should not be necessary.

> +	return 0;
> +}


^ permalink raw reply	[flat|nested] 122+ messages in thread

* [alsa-devel] [PATCH v2 1/5] sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards
@ 2013-07-08 14:39     ` Lars-Peter Clausen
  0 siblings, 0 replies; 122+ messages in thread
From: Lars-Peter Clausen @ 2013-07-08 14:39 UTC (permalink / raw)
  To: linux-arm-kernel

On 07/08/2013 03:29 PM, Richard Genoud wrote:
[...]
> +/*
> + * Logic for a wm8731 as connected on a at91sam9x5 based board.
> + */
> +static int at91sam9x5ek_wm8731_init(struct snd_soc_pcm_runtime *rtd)
> +{
[...]
> +	codec_dai->driver->playback.rates &= SNDRV_PCM_RATE_8000 |
> +		SNDRV_PCM_RATE_32000 |
> +		SNDRV_PCM_RATE_48000 |
> +		SNDRV_PCM_RATE_96000;
> +	codec_dai->driver->capture.rates &= SNDRV_PCM_RATE_8000 |
> +		SNDRV_PCM_RATE_32000 |
> +		SNDRV_PCM_RATE_48000 |
> +		SNDRV_PCM_RATE_96000;

That's not right. The driver structure is shared between all instances of
the codec, a single instance should not modify it. If you need to constrain
the list of supported rates use snd_pcm_hw_constraint_list().

> +
> +	/* set the codec system clock for DAC and ADC */
> +	ret = snd_soc_dai_set_sysclk(codec_dai, WM8731_SYSCLK_XTAL,
> +				     MCLK_RATE, SND_SOC_CLOCK_IN);
> +	if (ret < 0) {
> +		dev_err(dev, "ASoC: Failed to set WM8731 SYSCLK: %d\n", ret);
> +		return ret;
> +	}
> +
> +	/* signal a DAPM event */
> +	snd_soc_dapm_sync(dapm);

This should not be necessary.

> +	return 0;
> +}

^ permalink raw reply	[flat|nested] 122+ messages in thread

* Re: [PATCH v2 1/5] sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards
  2013-07-08 13:29   ` Richard Genoud
  (?)
@ 2013-07-08 15:07     ` Mark Brown
  -1 siblings, 0 replies; 122+ messages in thread
From: Mark Brown @ 2013-07-08 15:07 UTC (permalink / raw)
  To: Richard Genoud
  Cc: Nicolas Ferre, Liam Girdwood, Bo Shen, linux-arm-kernel,
	linux-kernel, alsa-devel, devicetree-discuss,
	Uwe Kleine-König

[-- Attachment #1: Type: text/plain, Size: 747 bytes --]

On Mon, Jul 08, 2013 at 03:29:49PM +0200, Richard Genoud wrote:

> + *		  Nicolas Ferre <nicolas.ferre@atmel.com>
> + *
> + * Based on sam9g20_wm8731.c by:
> + * Sedji Gaouaou <sedji.gaouaou@atmel.com>

The obvious question here is of course if we can use the same driver for
both of them.

> +	codec_dai->driver->playback.rates &= SNDRV_PCM_RATE_8000 |
> +		SNDRV_PCM_RATE_32000 |
> +		SNDRV_PCM_RATE_48000 |
> +		SNDRV_PCM_RATE_96000;
> +	codec_dai->driver->capture.rates &= SNDRV_PCM_RATE_8000 |
> +		SNDRV_PCM_RATE_32000 |
> +		SNDRV_PCM_RATE_48000 |
> +		SNDRV_PCM_RATE_96000;

You definitely shouldn't be fiddling with a driver's constant static
data.  You want to be using snd_pcm_hw_constraint() APIs to set
additional constraints intead.

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 122+ messages in thread

* Re: [PATCH v2 1/5] sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards
@ 2013-07-08 15:07     ` Mark Brown
  0 siblings, 0 replies; 122+ messages in thread
From: Mark Brown @ 2013-07-08 15:07 UTC (permalink / raw)
  To: Richard Genoud
  Cc: alsa-devel, devicetree-discuss, Nicolas Ferre, Liam Girdwood,
	linux-kernel, Bo Shen, Uwe Kleine-König, linux-arm-kernel


[-- Attachment #1.1: Type: text/plain, Size: 747 bytes --]

On Mon, Jul 08, 2013 at 03:29:49PM +0200, Richard Genoud wrote:

> + *		  Nicolas Ferre <nicolas.ferre@atmel.com>
> + *
> + * Based on sam9g20_wm8731.c by:
> + * Sedji Gaouaou <sedji.gaouaou@atmel.com>

The obvious question here is of course if we can use the same driver for
both of them.

> +	codec_dai->driver->playback.rates &= SNDRV_PCM_RATE_8000 |
> +		SNDRV_PCM_RATE_32000 |
> +		SNDRV_PCM_RATE_48000 |
> +		SNDRV_PCM_RATE_96000;
> +	codec_dai->driver->capture.rates &= SNDRV_PCM_RATE_8000 |
> +		SNDRV_PCM_RATE_32000 |
> +		SNDRV_PCM_RATE_48000 |
> +		SNDRV_PCM_RATE_96000;

You definitely shouldn't be fiddling with a driver's constant static
data.  You want to be using snd_pcm_hw_constraint() APIs to set
additional constraints intead.

[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

[-- Attachment #2: Type: text/plain, Size: 176 bytes --]

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 122+ messages in thread

* [PATCH v2 1/5] sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards
@ 2013-07-08 15:07     ` Mark Brown
  0 siblings, 0 replies; 122+ messages in thread
From: Mark Brown @ 2013-07-08 15:07 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, Jul 08, 2013 at 03:29:49PM +0200, Richard Genoud wrote:

> + *		  Nicolas Ferre <nicolas.ferre@atmel.com>
> + *
> + * Based on sam9g20_wm8731.c by:
> + * Sedji Gaouaou <sedji.gaouaou@atmel.com>

The obvious question here is of course if we can use the same driver for
both of them.

> +	codec_dai->driver->playback.rates &= SNDRV_PCM_RATE_8000 |
> +		SNDRV_PCM_RATE_32000 |
> +		SNDRV_PCM_RATE_48000 |
> +		SNDRV_PCM_RATE_96000;
> +	codec_dai->driver->capture.rates &= SNDRV_PCM_RATE_8000 |
> +		SNDRV_PCM_RATE_32000 |
> +		SNDRV_PCM_RATE_48000 |
> +		SNDRV_PCM_RATE_96000;

You definitely shouldn't be fiddling with a driver's constant static
data.  You want to be using snd_pcm_hw_constraint() APIs to set
additional constraints intead.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20130708/77d68cbb/attachment.sig>

^ permalink raw reply	[flat|nested] 122+ messages in thread

* Re: [PATCH v2 2/5] ARM: AT91: DTS: sam9x5: add SSC DMA parameters
  2013-07-08 13:29   ` Richard Genoud
  (?)
@ 2013-07-08 15:07     ` Mark Brown
  -1 siblings, 0 replies; 122+ messages in thread
From: Mark Brown @ 2013-07-08 15:07 UTC (permalink / raw)
  To: Richard Genoud
  Cc: Nicolas Ferre, Liam Girdwood, Bo Shen, linux-arm-kernel,
	linux-kernel, alsa-devel, devicetree-discuss

[-- Attachment #1: Type: text/plain, Size: 275 bytes --]

On Mon, Jul 08, 2013 at 03:29:50PM +0200, Richard Genoud wrote:
> Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
> ---
>  arch/arm/boot/dts/at91sam9x5.dtsi |    3 +++

There was no binding document in your first patch - there should be one
for any new DT bindings.

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 122+ messages in thread

* Re: [PATCH v2 2/5] ARM: AT91: DTS: sam9x5: add SSC DMA parameters
@ 2013-07-08 15:07     ` Mark Brown
  0 siblings, 0 replies; 122+ messages in thread
From: Mark Brown @ 2013-07-08 15:07 UTC (permalink / raw)
  To: Richard Genoud
  Cc: alsa-devel, devicetree-discuss, Nicolas Ferre, Liam Girdwood,
	linux-kernel, Bo Shen, linux-arm-kernel


[-- Attachment #1.1: Type: text/plain, Size: 275 bytes --]

On Mon, Jul 08, 2013 at 03:29:50PM +0200, Richard Genoud wrote:
> Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
> ---
>  arch/arm/boot/dts/at91sam9x5.dtsi |    3 +++

There was no binding document in your first patch - there should be one
for any new DT bindings.

[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

[-- Attachment #2: Type: text/plain, Size: 176 bytes --]

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 122+ messages in thread

* [PATCH v2 2/5] ARM: AT91: DTS: sam9x5: add SSC DMA parameters
@ 2013-07-08 15:07     ` Mark Brown
  0 siblings, 0 replies; 122+ messages in thread
From: Mark Brown @ 2013-07-08 15:07 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, Jul 08, 2013 at 03:29:50PM +0200, Richard Genoud wrote:
> Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
> ---
>  arch/arm/boot/dts/at91sam9x5.dtsi |    3 +++

There was no binding document in your first patch - there should be one
for any new DT bindings.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20130708/c0d916e9/attachment.sig>

^ permalink raw reply	[flat|nested] 122+ messages in thread

* Re: [alsa-devel] [PATCH v2 1/5] sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards
  2013-07-08 14:39     ` Lars-Peter Clausen
@ 2013-07-09  7:37       ` Richard Genoud
  -1 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09  7:37 UTC (permalink / raw)
  To: Lars-Peter Clausen
  Cc: Mark Brown, Nicolas Ferre, Liam Girdwood, alsa-devel,
	devicetree-discuss, linux-kernel, Bo Shen, Uwe Kleine-König,
	linux-arm-kernel

2013/7/8 Lars-Peter Clausen <lars@metafoo.de>:
> On 07/08/2013 03:29 PM, Richard Genoud wrote:
> [...]
>> +/*
>> + * Logic for a wm8731 as connected on a at91sam9x5 based board.
>> + */
>> +static int at91sam9x5ek_wm8731_init(struct snd_soc_pcm_runtime *rtd)
>> +{
> [...]
>> +     codec_dai->driver->playback.rates &= SNDRV_PCM_RATE_8000 |
>> +             SNDRV_PCM_RATE_32000 |
>> +             SNDRV_PCM_RATE_48000 |
>> +             SNDRV_PCM_RATE_96000;
>> +     codec_dai->driver->capture.rates &= SNDRV_PCM_RATE_8000 |
>> +             SNDRV_PCM_RATE_32000 |
>> +             SNDRV_PCM_RATE_48000 |
>> +             SNDRV_PCM_RATE_96000;
>
> That's not right. The driver structure is shared between all instances of
> the codec, a single instance should not modify it. If you need to constrain
> the list of supported rates use snd_pcm_hw_constraint_list().
Ok, I'll do that.

>
>> +
>> +     /* set the codec system clock for DAC and ADC */
>> +     ret = snd_soc_dai_set_sysclk(codec_dai, WM8731_SYSCLK_XTAL,
>> +                                  MCLK_RATE, SND_SOC_CLOCK_IN);
>> +     if (ret < 0) {
>> +             dev_err(dev, "ASoC: Failed to set WM8731 SYSCLK: %d\n", ret);
>> +             return ret;
>> +     }
>> +
>> +     /* signal a DAPM event */
>> +     snd_soc_dapm_sync(dapm);
>
> This should not be necessary.
ok
>
>> +     return 0;
>> +}
>

Thanks !

-- 
for me, ck means con kolivas and not calvin klein... does it mean I'm a geek ?

^ permalink raw reply	[flat|nested] 122+ messages in thread

* [alsa-devel] [PATCH v2 1/5] sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards
@ 2013-07-09  7:37       ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09  7:37 UTC (permalink / raw)
  To: linux-arm-kernel

2013/7/8 Lars-Peter Clausen <lars@metafoo.de>:
> On 07/08/2013 03:29 PM, Richard Genoud wrote:
> [...]
>> +/*
>> + * Logic for a wm8731 as connected on a at91sam9x5 based board.
>> + */
>> +static int at91sam9x5ek_wm8731_init(struct snd_soc_pcm_runtime *rtd)
>> +{
> [...]
>> +     codec_dai->driver->playback.rates &= SNDRV_PCM_RATE_8000 |
>> +             SNDRV_PCM_RATE_32000 |
>> +             SNDRV_PCM_RATE_48000 |
>> +             SNDRV_PCM_RATE_96000;
>> +     codec_dai->driver->capture.rates &= SNDRV_PCM_RATE_8000 |
>> +             SNDRV_PCM_RATE_32000 |
>> +             SNDRV_PCM_RATE_48000 |
>> +             SNDRV_PCM_RATE_96000;
>
> That's not right. The driver structure is shared between all instances of
> the codec, a single instance should not modify it. If you need to constrain
> the list of supported rates use snd_pcm_hw_constraint_list().
Ok, I'll do that.

>
>> +
>> +     /* set the codec system clock for DAC and ADC */
>> +     ret = snd_soc_dai_set_sysclk(codec_dai, WM8731_SYSCLK_XTAL,
>> +                                  MCLK_RATE, SND_SOC_CLOCK_IN);
>> +     if (ret < 0) {
>> +             dev_err(dev, "ASoC: Failed to set WM8731 SYSCLK: %d\n", ret);
>> +             return ret;
>> +     }
>> +
>> +     /* signal a DAPM event */
>> +     snd_soc_dapm_sync(dapm);
>
> This should not be necessary.
ok
>
>> +     return 0;
>> +}
>

Thanks !

-- 
for me, ck means con kolivas and not calvin klein... does it mean I'm a geek ?

^ permalink raw reply	[flat|nested] 122+ messages in thread

* Re: [PATCH v2 1/5] sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards
  2013-07-08 15:07     ` Mark Brown
@ 2013-07-09  8:19       ` Richard Genoud
  -1 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09  8:19 UTC (permalink / raw)
  To: Mark Brown
  Cc: Nicolas Ferre, Liam Girdwood, Bo Shen, linux-arm-kernel,
	linux-kernel, alsa-devel, devicetree-discuss,
	Uwe Kleine-König

2013/7/8 Mark Brown <broonie@kernel.org>:
> On Mon, Jul 08, 2013 at 03:29:49PM +0200, Richard Genoud wrote:
>
>> + *             Nicolas Ferre <nicolas.ferre@atmel.com>
>> + *
>> + * Based on sam9g20_wm8731.c by:
>> + * Sedji Gaouaou <sedji.gaouaou@atmel.com>
>
> The obvious question here is of course if we can use the same driver for
> both of them.
I haven't got a g20 to test that, but that's the goal.
For now, g20 is still non-DT, so I think it's best to have a DT-only
driver like this one for the 9x5 family (9g15, 9g25, 9x25, 9g35,
9x25).
When the g20 will move to DT completely, we can drop sam9g20_wm8731.c
and adjust sam9x5_wm8731.c (mainly master clock and widgets it seems)
By the way, maybe g45 could use that also (and SAMA5 ?)

>
>> +     codec_dai->driver->playback.rates &= SNDRV_PCM_RATE_8000 |
>> +             SNDRV_PCM_RATE_32000 |
>> +             SNDRV_PCM_RATE_48000 |
>> +             SNDRV_PCM_RATE_96000;
>> +     codec_dai->driver->capture.rates &= SNDRV_PCM_RATE_8000 |
>> +             SNDRV_PCM_RATE_32000 |
>> +             SNDRV_PCM_RATE_48000 |
>> +             SNDRV_PCM_RATE_96000;
>
> You definitely shouldn't be fiddling with a driver's constant static
> data.  You want to be using snd_pcm_hw_constraint() APIs to set
> additional constraints intead.
Ok, I'll change that.


Thanks !

-- 
for me, ck means con kolivas and not calvin klein... does it mean I'm a geek ?

^ permalink raw reply	[flat|nested] 122+ messages in thread

* [PATCH v2 1/5] sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards
@ 2013-07-09  8:19       ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09  8:19 UTC (permalink / raw)
  To: linux-arm-kernel

2013/7/8 Mark Brown <broonie@kernel.org>:
> On Mon, Jul 08, 2013 at 03:29:49PM +0200, Richard Genoud wrote:
>
>> + *             Nicolas Ferre <nicolas.ferre@atmel.com>
>> + *
>> + * Based on sam9g20_wm8731.c by:
>> + * Sedji Gaouaou <sedji.gaouaou@atmel.com>
>
> The obvious question here is of course if we can use the same driver for
> both of them.
I haven't got a g20 to test that, but that's the goal.
For now, g20 is still non-DT, so I think it's best to have a DT-only
driver like this one for the 9x5 family (9g15, 9g25, 9x25, 9g35,
9x25).
When the g20 will move to DT completely, we can drop sam9g20_wm8731.c
and adjust sam9x5_wm8731.c (mainly master clock and widgets it seems)
By the way, maybe g45 could use that also (and SAMA5 ?)

>
>> +     codec_dai->driver->playback.rates &= SNDRV_PCM_RATE_8000 |
>> +             SNDRV_PCM_RATE_32000 |
>> +             SNDRV_PCM_RATE_48000 |
>> +             SNDRV_PCM_RATE_96000;
>> +     codec_dai->driver->capture.rates &= SNDRV_PCM_RATE_8000 |
>> +             SNDRV_PCM_RATE_32000 |
>> +             SNDRV_PCM_RATE_48000 |
>> +             SNDRV_PCM_RATE_96000;
>
> You definitely shouldn't be fiddling with a driver's constant static
> data.  You want to be using snd_pcm_hw_constraint() APIs to set
> additional constraints intead.
Ok, I'll change that.


Thanks !

-- 
for me, ck means con kolivas and not calvin klein... does it mean I'm a geek ?

^ permalink raw reply	[flat|nested] 122+ messages in thread

* Re: [PATCH v2 2/5] ARM: AT91: DTS: sam9x5: add SSC DMA parameters
  2013-07-08 15:07     ` Mark Brown
  (?)
@ 2013-07-09  8:27       ` Richard Genoud
  -1 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09  8:27 UTC (permalink / raw)
  To: Mark Brown
  Cc: Nicolas Ferre, Liam Girdwood, Bo Shen, linux-arm-kernel,
	linux-kernel, alsa-devel, devicetree-discuss

2013/7/8 Mark Brown <broonie@kernel.org>:
> On Mon, Jul 08, 2013 at 03:29:50PM +0200, Richard Genoud wrote:
>> Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
>> ---
>>  arch/arm/boot/dts/at91sam9x5.dtsi |    3 +++
>
> There was no binding document in your first patch - there should be one
> for any new DT bindings.
The dma binding is documented here
Documentation/devicetree/bindings/dma/atmel-dma.txt
But you're right, I shoud update
Documentation/devicetree/bindings/misc/atmel-ssc.txt.

Thanks



-- 
for me, ck means con kolivas and not calvin klein... does it mean I'm a geek ?

^ permalink raw reply	[flat|nested] 122+ messages in thread

* Re: [PATCH v2 2/5] ARM: AT91: DTS: sam9x5: add SSC DMA parameters
@ 2013-07-09  8:27       ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09  8:27 UTC (permalink / raw)
  To: Mark Brown
  Cc: alsa-devel, devicetree-discuss, Nicolas Ferre, Liam Girdwood,
	linux-kernel, Bo Shen, linux-arm-kernel

2013/7/8 Mark Brown <broonie@kernel.org>:
> On Mon, Jul 08, 2013 at 03:29:50PM +0200, Richard Genoud wrote:
>> Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
>> ---
>>  arch/arm/boot/dts/at91sam9x5.dtsi |    3 +++
>
> There was no binding document in your first patch - there should be one
> for any new DT bindings.
The dma binding is documented here
Documentation/devicetree/bindings/dma/atmel-dma.txt
But you're right, I shoud update
Documentation/devicetree/bindings/misc/atmel-ssc.txt.

Thanks



-- 
for me, ck means con kolivas and not calvin klein... does it mean I'm a geek ?

^ permalink raw reply	[flat|nested] 122+ messages in thread

* [PATCH v2 2/5] ARM: AT91: DTS: sam9x5: add SSC DMA parameters
@ 2013-07-09  8:27       ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09  8:27 UTC (permalink / raw)
  To: linux-arm-kernel

2013/7/8 Mark Brown <broonie@kernel.org>:
> On Mon, Jul 08, 2013 at 03:29:50PM +0200, Richard Genoud wrote:
>> Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
>> ---
>>  arch/arm/boot/dts/at91sam9x5.dtsi |    3 +++
>
> There was no binding document in your first patch - there should be one
> for any new DT bindings.
The dma binding is documented here
Documentation/devicetree/bindings/dma/atmel-dma.txt
But you're right, I shoud update
Documentation/devicetree/bindings/misc/atmel-ssc.txt.

Thanks



-- 
for me, ck means con kolivas and not calvin klein... does it mean I'm a geek ?

^ permalink raw reply	[flat|nested] 122+ messages in thread

* Re: [PATCH v2 1/5] sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards
  2013-07-09  8:19       ` Richard Genoud
@ 2013-07-09  8:37         ` Bo Shen
  -1 siblings, 0 replies; 122+ messages in thread
From: Bo Shen @ 2013-07-09  8:37 UTC (permalink / raw)
  To: Richard Genoud
  Cc: Mark Brown, Nicolas Ferre, Liam Girdwood, linux-arm-kernel,
	linux-kernel, alsa-devel, devicetree-discuss,
	Uwe Kleine-König

Hi Richard,

On 7/9/2013 16:19, Richard Genoud wrote:
> 2013/7/8 Mark Brown <broonie@kernel.org>:
>> On Mon, Jul 08, 2013 at 03:29:49PM +0200, Richard Genoud wrote:
>>
>>> + *             Nicolas Ferre <nicolas.ferre@atmel.com>
>>> + *
>>> + * Based on sam9g20_wm8731.c by:
>>> + * Sedji Gaouaou <sedji.gaouaou@atmel.com>
>>
>> The obvious question here is of course if we can use the same driver for
>> both of them.
> I haven't got a g20 to test that, but that's the goal.
> For now, g20 is still non-DT, so I think it's best to have a DT-only
> driver like this one for the 9x5 family (9g15, 9g25, 9x25, 9g35,
> 9x25).
> When the g20 will move to DT completely, we can drop sam9g20_wm8731.c
> and adjust sam9x5_wm8731.c (mainly master clock and widgets it seems)

The at91sam9g20ek board can work in DT mode, and the sound has support 
in DT mode already.

Sure, the mainly thing we need deal with is the master clock and 
widgets. If put them together will make code ugly or need many many 
#ifdef, I suggest to keep them separately.

> By the way, maybe g45 could use that also (and SAMA5 ?)

For g45ek board, it use AC97 interface, not the case.

>>
>>> +     codec_dai->driver->playback.rates &= SNDRV_PCM_RATE_8000 |
>>> +             SNDRV_PCM_RATE_32000 |
>>> +             SNDRV_PCM_RATE_48000 |
>>> +             SNDRV_PCM_RATE_96000;
>>> +     codec_dai->driver->capture.rates &= SNDRV_PCM_RATE_8000 |
>>> +             SNDRV_PCM_RATE_32000 |
>>> +             SNDRV_PCM_RATE_48000 |
>>> +             SNDRV_PCM_RATE_96000;
>>
>> You definitely shouldn't be fiddling with a driver's constant static
>> data.  You want to be using snd_pcm_hw_constraint() APIs to set
>> additional constraints intead.
> Ok, I'll change that.
>
>
> Thanks !
>

Best Regards,
Bo Shen

^ permalink raw reply	[flat|nested] 122+ messages in thread

* [PATCH v2 1/5] sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards
@ 2013-07-09  8:37         ` Bo Shen
  0 siblings, 0 replies; 122+ messages in thread
From: Bo Shen @ 2013-07-09  8:37 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Richard,

On 7/9/2013 16:19, Richard Genoud wrote:
> 2013/7/8 Mark Brown <broonie@kernel.org>:
>> On Mon, Jul 08, 2013 at 03:29:49PM +0200, Richard Genoud wrote:
>>
>>> + *             Nicolas Ferre <nicolas.ferre@atmel.com>
>>> + *
>>> + * Based on sam9g20_wm8731.c by:
>>> + * Sedji Gaouaou <sedji.gaouaou@atmel.com>
>>
>> The obvious question here is of course if we can use the same driver for
>> both of them.
> I haven't got a g20 to test that, but that's the goal.
> For now, g20 is still non-DT, so I think it's best to have a DT-only
> driver like this one for the 9x5 family (9g15, 9g25, 9x25, 9g35,
> 9x25).
> When the g20 will move to DT completely, we can drop sam9g20_wm8731.c
> and adjust sam9x5_wm8731.c (mainly master clock and widgets it seems)

The at91sam9g20ek board can work in DT mode, and the sound has support 
in DT mode already.

Sure, the mainly thing we need deal with is the master clock and 
widgets. If put them together will make code ugly or need many many 
#ifdef, I suggest to keep them separately.

> By the way, maybe g45 could use that also (and SAMA5 ?)

For g45ek board, it use AC97 interface, not the case.

>>
>>> +     codec_dai->driver->playback.rates &= SNDRV_PCM_RATE_8000 |
>>> +             SNDRV_PCM_RATE_32000 |
>>> +             SNDRV_PCM_RATE_48000 |
>>> +             SNDRV_PCM_RATE_96000;
>>> +     codec_dai->driver->capture.rates &= SNDRV_PCM_RATE_8000 |
>>> +             SNDRV_PCM_RATE_32000 |
>>> +             SNDRV_PCM_RATE_48000 |
>>> +             SNDRV_PCM_RATE_96000;
>>
>> You definitely shouldn't be fiddling with a driver's constant static
>> data.  You want to be using snd_pcm_hw_constraint() APIs to set
>> additional constraints intead.
> Ok, I'll change that.
>
>
> Thanks !
>

Best Regards,
Bo Shen

^ permalink raw reply	[flat|nested] 122+ messages in thread

* Re: [PATCH v2 1/5] sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards
  2013-07-09  8:19       ` Richard Genoud
  (?)
@ 2013-07-09  9:29         ` Mark Brown
  -1 siblings, 0 replies; 122+ messages in thread
From: Mark Brown @ 2013-07-09  9:29 UTC (permalink / raw)
  To: Richard Genoud
  Cc: Nicolas Ferre, Liam Girdwood, Bo Shen, linux-arm-kernel,
	linux-kernel, alsa-devel, devicetree-discuss,
	Uwe Kleine-König

[-- Attachment #1: Type: text/plain, Size: 702 bytes --]

On Tue, Jul 09, 2013 at 10:19:45AM +0200, Richard Genoud wrote:
> 2013/7/8 Mark Brown <broonie@kernel.org>:

> > The obvious question here is of course if we can use the same driver for
> > both of them.

> I haven't got a g20 to test that, but that's the goal.

I think I do somewhere.

> For now, g20 is still non-DT, so I think it's best to have a DT-only
> driver like this one for the 9x5 family (9g15, 9g25, 9x25, 9g35,
> 9x25).
> When the g20 will move to DT completely, we can drop sam9g20_wm8731.c
> and adjust sam9x5_wm8731.c (mainly master clock and widgets it seems)
> By the way, maybe g45 could use that also (and SAMA5 ?)

If this is the goal then this driver needs a more generic name.

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 122+ messages in thread

* Re: [PATCH v2 1/5] sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards
@ 2013-07-09  9:29         ` Mark Brown
  0 siblings, 0 replies; 122+ messages in thread
From: Mark Brown @ 2013-07-09  9:29 UTC (permalink / raw)
  To: Richard Genoud
  Cc: alsa-devel, devicetree-discuss, Nicolas Ferre, Liam Girdwood,
	linux-kernel, Bo Shen, Uwe Kleine-König, linux-arm-kernel


[-- Attachment #1.1: Type: text/plain, Size: 702 bytes --]

On Tue, Jul 09, 2013 at 10:19:45AM +0200, Richard Genoud wrote:
> 2013/7/8 Mark Brown <broonie@kernel.org>:

> > The obvious question here is of course if we can use the same driver for
> > both of them.

> I haven't got a g20 to test that, but that's the goal.

I think I do somewhere.

> For now, g20 is still non-DT, so I think it's best to have a DT-only
> driver like this one for the 9x5 family (9g15, 9g25, 9x25, 9g35,
> 9x25).
> When the g20 will move to DT completely, we can drop sam9g20_wm8731.c
> and adjust sam9x5_wm8731.c (mainly master clock and widgets it seems)
> By the way, maybe g45 could use that also (and SAMA5 ?)

If this is the goal then this driver needs a more generic name.

[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

[-- Attachment #2: Type: text/plain, Size: 176 bytes --]

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 122+ messages in thread

* [PATCH v2 1/5] sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards
@ 2013-07-09  9:29         ` Mark Brown
  0 siblings, 0 replies; 122+ messages in thread
From: Mark Brown @ 2013-07-09  9:29 UTC (permalink / raw)
  To: linux-arm-kernel

On Tue, Jul 09, 2013 at 10:19:45AM +0200, Richard Genoud wrote:
> 2013/7/8 Mark Brown <broonie@kernel.org>:

> > The obvious question here is of course if we can use the same driver for
> > both of them.

> I haven't got a g20 to test that, but that's the goal.

I think I do somewhere.

> For now, g20 is still non-DT, so I think it's best to have a DT-only
> driver like this one for the 9x5 family (9g15, 9g25, 9x25, 9g35,
> 9x25).
> When the g20 will move to DT completely, we can drop sam9g20_wm8731.c
> and adjust sam9x5_wm8731.c (mainly master clock and widgets it seems)
> By the way, maybe g45 could use that also (and SAMA5 ?)

If this is the goal then this driver needs a more generic name.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20130709/c646adba/attachment.sig>

^ permalink raw reply	[flat|nested] 122+ messages in thread

* Re: [PATCH v2 2/5] ARM: AT91: DTS: sam9x5: add SSC DMA parameters
  2013-07-09  8:27       ` Richard Genoud
  (?)
@ 2013-07-09  9:32         ` Mark Brown
  -1 siblings, 0 replies; 122+ messages in thread
From: Mark Brown @ 2013-07-09  9:32 UTC (permalink / raw)
  To: Richard Genoud
  Cc: Nicolas Ferre, Liam Girdwood, Bo Shen, linux-arm-kernel,
	linux-kernel, alsa-devel, devicetree-discuss

[-- Attachment #1: Type: text/plain, Size: 426 bytes --]

On Tue, Jul 09, 2013 at 10:27:53AM +0200, Richard Genoud wrote:

> The dma binding is documented here
> Documentation/devicetree/bindings/dma/atmel-dma.txt
> But you're right, I shoud update
> Documentation/devicetree/bindings/misc/atmel-ssc.txt.

No, you need to write a binding for this machine driver - the DMA and
SSC need to be documented as well but so too does the audio driver that
pulls them together with the CODEC.

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 122+ messages in thread

* Re: [PATCH v2 2/5] ARM: AT91: DTS: sam9x5: add SSC DMA parameters
@ 2013-07-09  9:32         ` Mark Brown
  0 siblings, 0 replies; 122+ messages in thread
From: Mark Brown @ 2013-07-09  9:32 UTC (permalink / raw)
  To: Richard Genoud
  Cc: alsa-devel, devicetree-discuss, Nicolas Ferre, Liam Girdwood,
	linux-kernel, Bo Shen, linux-arm-kernel


[-- Attachment #1.1: Type: text/plain, Size: 426 bytes --]

On Tue, Jul 09, 2013 at 10:27:53AM +0200, Richard Genoud wrote:

> The dma binding is documented here
> Documentation/devicetree/bindings/dma/atmel-dma.txt
> But you're right, I shoud update
> Documentation/devicetree/bindings/misc/atmel-ssc.txt.

No, you need to write a binding for this machine driver - the DMA and
SSC need to be documented as well but so too does the audio driver that
pulls them together with the CODEC.

[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

[-- Attachment #2: Type: text/plain, Size: 0 bytes --]



^ permalink raw reply	[flat|nested] 122+ messages in thread

* [PATCH v2 2/5] ARM: AT91: DTS: sam9x5: add SSC DMA parameters
@ 2013-07-09  9:32         ` Mark Brown
  0 siblings, 0 replies; 122+ messages in thread
From: Mark Brown @ 2013-07-09  9:32 UTC (permalink / raw)
  To: linux-arm-kernel

On Tue, Jul 09, 2013 at 10:27:53AM +0200, Richard Genoud wrote:

> The dma binding is documented here
> Documentation/devicetree/bindings/dma/atmel-dma.txt
> But you're right, I shoud update
> Documentation/devicetree/bindings/misc/atmel-ssc.txt.

No, you need to write a binding for this machine driver - the DMA and
SSC need to be documented as well but so too does the audio driver that
pulls them together with the CODEC.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20130709/b95f65f1/attachment.sig>

^ permalink raw reply	[flat|nested] 122+ messages in thread

* Re: [PATCH v2 2/5] ARM: AT91: DTS: sam9x5: add SSC DMA parameters
  2013-07-09  9:32         ` Mark Brown
@ 2013-07-09  9:46           ` Richard Genoud
  -1 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09  9:46 UTC (permalink / raw)
  To: Mark Brown
  Cc: Nicolas Ferre, Liam Girdwood, Bo Shen, linux-arm-kernel,
	linux-kernel, alsa-devel, devicetree-discuss

2013/7/9 Mark Brown <broonie@kernel.org>:
> On Tue, Jul 09, 2013 at 10:27:53AM +0200, Richard Genoud wrote:
>
>> The dma binding is documented here
>> Documentation/devicetree/bindings/dma/atmel-dma.txt
>> But you're right, I shoud update
>> Documentation/devicetree/bindings/misc/atmel-ssc.txt.
>
> No, you need to write a binding for this machine driver - the DMA and
> SSC need to be documented as well but so too does the audio driver that
> pulls them together with the CODEC.
Ok, I understand !

Richard.

^ permalink raw reply	[flat|nested] 122+ messages in thread

* [PATCH v2 2/5] ARM: AT91: DTS: sam9x5: add SSC DMA parameters
@ 2013-07-09  9:46           ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09  9:46 UTC (permalink / raw)
  To: linux-arm-kernel

2013/7/9 Mark Brown <broonie@kernel.org>:
> On Tue, Jul 09, 2013 at 10:27:53AM +0200, Richard Genoud wrote:
>
>> The dma binding is documented here
>> Documentation/devicetree/bindings/dma/atmel-dma.txt
>> But you're right, I shoud update
>> Documentation/devicetree/bindings/misc/atmel-ssc.txt.
>
> No, you need to write a binding for this machine driver - the DMA and
> SSC need to be documented as well but so too does the audio driver that
> pulls them together with the CODEC.
Ok, I understand !

Richard.

^ permalink raw reply	[flat|nested] 122+ messages in thread

* Re: [PATCH v2 1/5] sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards
  2013-07-09  9:29         ` Mark Brown
  (?)
@ 2013-07-09 10:27           ` Richard Genoud
  -1 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09 10:27 UTC (permalink / raw)
  To: Mark Brown
  Cc: Nicolas Ferre, Liam Girdwood, Bo Shen, linux-arm-kernel,
	linux-kernel, alsa-devel, devicetree-discuss,
	Uwe Kleine-König

2013/7/9 Mark Brown <broonie@kernel.org>:
> On Tue, Jul 09, 2013 at 10:19:45AM +0200, Richard Genoud wrote:
>> 2013/7/8 Mark Brown <broonie@kernel.org>:
>
>> > The obvious question here is of course if we can use the same driver for
>> > both of them.
>
>> I haven't got a g20 to test that, but that's the goal.
>
> I think I do somewhere.
>
>> For now, g20 is still non-DT, so I think it's best to have a DT-only
>> driver like this one for the 9x5 family (9g15, 9g25, 9x25, 9g35,
>> 9x25).
>> When the g20 will move to DT completely, we can drop sam9g20_wm8731.c
>> and adjust sam9x5_wm8731.c (mainly master clock and widgets it seems)
>> By the way, maybe g45 could use that also (and SAMA5 ?)
>
> If this is the goal then this driver needs a more generic name.
Hum. I guess we could call it atmel-ssc-sound.c, since the ultimate
goal would be to make it codec agnostic, but there's quite some work
to achieve that (handle the widgets, mclk and rates by DT).
But I really don't know if it's better to keep this name as long as
g20 is not supported, and change it after or have a name that is not
reflecting what the machine driver is doing right now.
Maybe Bo or Nicolas can give their feeling on that (since I'm not
Atmel, I don't know every SoC or what their Big Plan is for sound
machine drivers)

Richard.

-- 
for me, ck means con kolivas and not calvin klein... does it mean I'm a geek ?

^ permalink raw reply	[flat|nested] 122+ messages in thread

* Re: [PATCH v2 1/5] sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards
@ 2013-07-09 10:27           ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09 10:27 UTC (permalink / raw)
  To: Mark Brown
  Cc: alsa-devel, devicetree-discuss, Nicolas Ferre, Liam Girdwood,
	linux-kernel, Bo Shen, Uwe Kleine-König, linux-arm-kernel

2013/7/9 Mark Brown <broonie@kernel.org>:
> On Tue, Jul 09, 2013 at 10:19:45AM +0200, Richard Genoud wrote:
>> 2013/7/8 Mark Brown <broonie@kernel.org>:
>
>> > The obvious question here is of course if we can use the same driver for
>> > both of them.
>
>> I haven't got a g20 to test that, but that's the goal.
>
> I think I do somewhere.
>
>> For now, g20 is still non-DT, so I think it's best to have a DT-only
>> driver like this one for the 9x5 family (9g15, 9g25, 9x25, 9g35,
>> 9x25).
>> When the g20 will move to DT completely, we can drop sam9g20_wm8731.c
>> and adjust sam9x5_wm8731.c (mainly master clock and widgets it seems)
>> By the way, maybe g45 could use that also (and SAMA5 ?)
>
> If this is the goal then this driver needs a more generic name.
Hum. I guess we could call it atmel-ssc-sound.c, since the ultimate
goal would be to make it codec agnostic, but there's quite some work
to achieve that (handle the widgets, mclk and rates by DT).
But I really don't know if it's better to keep this name as long as
g20 is not supported, and change it after or have a name that is not
reflecting what the machine driver is doing right now.
Maybe Bo or Nicolas can give their feeling on that (since I'm not
Atmel, I don't know every SoC or what their Big Plan is for sound
machine drivers)

Richard.

-- 
for me, ck means con kolivas and not calvin klein... does it mean I'm a geek ?

^ permalink raw reply	[flat|nested] 122+ messages in thread

* [PATCH v2 1/5] sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards
@ 2013-07-09 10:27           ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09 10:27 UTC (permalink / raw)
  To: linux-arm-kernel

2013/7/9 Mark Brown <broonie@kernel.org>:
> On Tue, Jul 09, 2013 at 10:19:45AM +0200, Richard Genoud wrote:
>> 2013/7/8 Mark Brown <broonie@kernel.org>:
>
>> > The obvious question here is of course if we can use the same driver for
>> > both of them.
>
>> I haven't got a g20 to test that, but that's the goal.
>
> I think I do somewhere.
>
>> For now, g20 is still non-DT, so I think it's best to have a DT-only
>> driver like this one for the 9x5 family (9g15, 9g25, 9x25, 9g35,
>> 9x25).
>> When the g20 will move to DT completely, we can drop sam9g20_wm8731.c
>> and adjust sam9x5_wm8731.c (mainly master clock and widgets it seems)
>> By the way, maybe g45 could use that also (and SAMA5 ?)
>
> If this is the goal then this driver needs a more generic name.
Hum. I guess we could call it atmel-ssc-sound.c, since the ultimate
goal would be to make it codec agnostic, but there's quite some work
to achieve that (handle the widgets, mclk and rates by DT).
But I really don't know if it's better to keep this name as long as
g20 is not supported, and change it after or have a name that is not
reflecting what the machine driver is doing right now.
Maybe Bo or Nicolas can give their feeling on that (since I'm not
Atmel, I don't know every SoC or what their Big Plan is for sound
machine drivers)

Richard.

-- 
for me, ck means con kolivas and not calvin klein... does it mean I'm a geek ?

^ permalink raw reply	[flat|nested] 122+ messages in thread

* [PATCH v3 0/7] Sound support for at91sam9x5-wm8731 based boards
  2013-07-08 13:29 ` Richard Genoud
@ 2013-07-09 12:28   ` Richard Genoud
  -1 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09 12:28 UTC (permalink / raw)
  To: Mark Brown, Nicolas Ferre, Liam Girdwood
  Cc: Bo Shen, Lars-Peter Clausen, linux-arm-kernel, linux-kernel,
	alsa-devel, devicetree-discuss, Richard Genoud

Hi,

This patchset add sound on the at91sam9x5ek board.
It's based on Nicolas Ferre's work in the 2.6.39 atmel patch for sam9x5:
https://github.com/linux4sam/linux-at91/commit/0aa157c9e71ccccf3abc30fa37eb5c95b392978d

It needs Bo Chen's patchset on the generic dmaengine (topic/atmel branch
on Mark's sound tree) and the SSC interrupts disabled (cf
http://www.spinics.net/lists/arm-kernel/msg256901.html)

Outstanding issue:
If this machine driver will support more SoCs maybe we should name it differently.


It has been tested on at91sam9g35ek, and should work on g15, g25, x25 and x35 also.

patches applies on next-20130708

[I let the original signed-off from Nicolas and Uwe in place, I don't
know if I should replace them by something like "originaly-signed-off-by"
since the code has been changed.]

Changes from v2:
 * Change atmel,sam9x5-audio-wm8731 to atmel,sam9x5-wm8731-audio for
consistency with sam9g20 machine driver.
 * Use the snd_pcm_hw_constraint() API as suggested by Mark and Lars-Peter.
 * Remove the unnecessary snd_soc_dapm_sync() call as Lars-Peter suggested.
 * Add documentation for machine driver DT binding.
 * Update atmel-ssc DT binding documentation.
 * Add GPL license instead of just the "GPL" word (hope that's ok !)

Changes from v1-RFC:
 * drop patches on SSC since Bo Chen already did the work
 * reorder patches to have the machine driver first
 * drop code already handled by the ASoC framework
 * drop unneeded SND_ATMEL_SOC_PDC config selection
 * use static snd_soc_card and  snd_soc_dai_link structures.

Best regards,
Richard.

Nicolas Ferre (1):
  sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards

Richard Genoud (6):
  Documentation: DT: add sam9x5ek-wm8731 machine driver
  Documentation: DT: update atmel SSC with DMA binding
  ARM: AT91: DTS: sam9x5: add SSC DMA parameters
  ARM: AT91: DTS: sam9x5ek: add WM8731 codec
  ARM: AT91: DTS: sam9x5ek: add sound configuration
  ARM: AT91: DTS: sam9x5ek: enable SSC

 .../devicetree/bindings/misc/atmel-ssc.txt         |   24 +-
 .../bindings/sound/atmel-sam9x5-wm8731-audio.txt   |   30 +++
 arch/arm/boot/dts/at91sam9x5.dtsi                  |    3 +
 arch/arm/boot/dts/at91sam9x5ek.dtsi                |   27 +++
 sound/soc/atmel/Kconfig                            |   10 +
 sound/soc/atmel/Makefile                           |    2 +
 sound/soc/atmel/sam9x5_wm8731.c                    |  238 ++++++++++++++++++++
 7 files changed, 332 insertions(+), 2 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/sound/atmel-sam9x5-wm8731-audio.txt
 create mode 100644 sound/soc/atmel/sam9x5_wm8731.c

-- 
1.7.10.4



^ permalink raw reply	[flat|nested] 122+ messages in thread

* [PATCH v3 0/7] Sound support for at91sam9x5-wm8731 based boards
@ 2013-07-09 12:28   ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09 12:28 UTC (permalink / raw)
  To: linux-arm-kernel

Hi,

This patchset add sound on the at91sam9x5ek board.
It's based on Nicolas Ferre's work in the 2.6.39 atmel patch for sam9x5:
https://github.com/linux4sam/linux-at91/commit/0aa157c9e71ccccf3abc30fa37eb5c95b392978d

It needs Bo Chen's patchset on the generic dmaengine (topic/atmel branch
on Mark's sound tree) and the SSC interrupts disabled (cf
http://www.spinics.net/lists/arm-kernel/msg256901.html)

Outstanding issue:
If this machine driver will support more SoCs maybe we should name it differently.


It has been tested on at91sam9g35ek, and should work on g15, g25, x25 and x35 also.

patches applies on next-20130708

[I let the original signed-off from Nicolas and Uwe in place, I don't
know if I should replace them by something like "originaly-signed-off-by"
since the code has been changed.]

Changes from v2:
 * Change atmel,sam9x5-audio-wm8731 to atmel,sam9x5-wm8731-audio for
consistency with sam9g20 machine driver.
 * Use the snd_pcm_hw_constraint() API as suggested by Mark and Lars-Peter.
 * Remove the unnecessary snd_soc_dapm_sync() call as Lars-Peter suggested.
 * Add documentation for machine driver DT binding.
 * Update atmel-ssc DT binding documentation.
 * Add GPL license instead of just the "GPL" word (hope that's ok !)

Changes from v1-RFC:
 * drop patches on SSC since Bo Chen already did the work
 * reorder patches to have the machine driver first
 * drop code already handled by the ASoC framework
 * drop unneeded SND_ATMEL_SOC_PDC config selection
 * use static snd_soc_card and  snd_soc_dai_link structures.

Best regards,
Richard.

Nicolas Ferre (1):
  sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards

Richard Genoud (6):
  Documentation: DT: add sam9x5ek-wm8731 machine driver
  Documentation: DT: update atmel SSC with DMA binding
  ARM: AT91: DTS: sam9x5: add SSC DMA parameters
  ARM: AT91: DTS: sam9x5ek: add WM8731 codec
  ARM: AT91: DTS: sam9x5ek: add sound configuration
  ARM: AT91: DTS: sam9x5ek: enable SSC

 .../devicetree/bindings/misc/atmel-ssc.txt         |   24 +-
 .../bindings/sound/atmel-sam9x5-wm8731-audio.txt   |   30 +++
 arch/arm/boot/dts/at91sam9x5.dtsi                  |    3 +
 arch/arm/boot/dts/at91sam9x5ek.dtsi                |   27 +++
 sound/soc/atmel/Kconfig                            |   10 +
 sound/soc/atmel/Makefile                           |    2 +
 sound/soc/atmel/sam9x5_wm8731.c                    |  238 ++++++++++++++++++++
 7 files changed, 332 insertions(+), 2 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/sound/atmel-sam9x5-wm8731-audio.txt
 create mode 100644 sound/soc/atmel/sam9x5_wm8731.c

-- 
1.7.10.4

^ permalink raw reply	[flat|nested] 122+ messages in thread

* [PATCH v3 1/7] sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards
@ 2013-07-09 12:28     ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09 12:28 UTC (permalink / raw)
  To: Mark Brown, Nicolas Ferre, Liam Girdwood
  Cc: Bo Shen, Lars-Peter Clausen, linux-arm-kernel, linux-kernel,
	alsa-devel, devicetree-discuss, Uwe Kleine-König,
	Richard Genoud

From: Nicolas Ferre <nicolas.ferre@atmel.com>

Description of the Asoc machine driver for an at91sam9x5 based board
with a wm8731 audio DAC. Wm8731 is clocked by a crystal and used as a
master on the SSC/I2S interface. Its connections are a headphone jack
and an Line input jack.

[Richard: this is based on an old patch from Nicolas that I forward
ported and reworked to use only device tree]

Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
---
 sound/soc/atmel/Kconfig         |   10 ++
 sound/soc/atmel/Makefile        |    2 +
 sound/soc/atmel/sam9x5_wm8731.c |  238 +++++++++++++++++++++++++++++++++++++++
 3 files changed, 250 insertions(+)
 create mode 100644 sound/soc/atmel/sam9x5_wm8731.c

diff --git a/sound/soc/atmel/Kconfig b/sound/soc/atmel/Kconfig
index 1c0b185..9eb8c49 100644
--- a/sound/soc/atmel/Kconfig
+++ b/sound/soc/atmel/Kconfig
@@ -33,6 +33,16 @@ config SND_AT91_SOC_SAM9G20_WM8731
 	  Say Y if you want to add support for SoC audio on WM8731-based
 	  AT91sam9g20 evaluation board.
 
+config SND_AT91_SOC_SAM9X5_WM8731
+	tristate "SoC Audio support for WM8731-based at91sam9x5 board"
+	depends on ATMEL_SSC && SND_ATMEL_SOC && SOC_AT91SAM9X5
+	select SND_ATMEL_SOC_SSC
+	select SND_ATMEL_SOC_DMA
+	select SND_SOC_WM8731
+	help
+	  Say Y if you want to add support for audio SoC on an
+	  at91sam9x5 based board that is using WM8731 codec.
+
 config SND_AT91_SOC_AFEB9260
 	tristate "SoC Audio support for AFEB9260 board"
 	depends on ARCH_AT91 && ATMEL_SSC && ARCH_AT91 && MACH_AFEB9260 && SND_ATMEL_SOC
diff --git a/sound/soc/atmel/Makefile b/sound/soc/atmel/Makefile
index 41967cc..7784c09 100644
--- a/sound/soc/atmel/Makefile
+++ b/sound/soc/atmel/Makefile
@@ -11,6 +11,8 @@ obj-$(CONFIG_SND_ATMEL_SOC_SSC) += snd-soc-atmel_ssc_dai.o
 
 # AT91 Machine Support
 snd-soc-sam9g20-wm8731-objs := sam9g20_wm8731.o
+snd-soc-sam9x5-wm8731-objs := sam9x5_wm8731.o
 
 obj-$(CONFIG_SND_AT91_SOC_SAM9G20_WM8731) += snd-soc-sam9g20-wm8731.o
+obj-$(CONFIG_SND_AT91_SOC_SAM9X5_WM8731) += snd-soc-sam9x5-wm8731.o
 obj-$(CONFIG_SND_AT91_SOC_AFEB9260) += snd-soc-afeb9260.o
diff --git a/sound/soc/atmel/sam9x5_wm8731.c b/sound/soc/atmel/sam9x5_wm8731.c
new file mode 100644
index 0000000..c56e36b
--- /dev/null
+++ b/sound/soc/atmel/sam9x5_wm8731.c
@@ -0,0 +1,238 @@
+/*
+ * sam9x5_wm8731   --	SoC audio for AT91SAM9X5-based boards
+ *			that are using WM8731 as codec.
+ *
+ *  Copyright (C) 2011 Atmel,
+ *		  Nicolas Ferre <nicolas.ferre@atmel.com>
+ *
+ *  Copyright (C) 2013 Paratronic,
+ *		  Richard Genoud <richard.genoud@gmail.com>
+ *
+ * Based on sam9g20_wm8731.c by:
+ * Sedji Gaouaou <sedji.gaouaou@atmel.com>
+ *
+ *  This program is free software; you can redistribute  it and/or modify it
+ *  under  the terms of  the GNU General  Public License as published by the
+ *  Free Software Foundation;  either version 2 of the  License, or (at your
+ *  option) any later version.
+ *
+ */
+
+#include <linux/module.h>
+#include <linux/moduleparam.h>
+#include <linux/kernel.h>
+#include <linux/clk.h>
+#include <linux/timer.h>
+#include <linux/interrupt.h>
+#include <linux/platform_device.h>
+#include <linux/i2c.h>
+
+#include <linux/atmel-ssc.h>
+
+#include <sound/core.h>
+#include <sound/pcm.h>
+#include <sound/pcm_params.h>
+#include <sound/soc.h>
+
+#include <asm/mach-types.h>
+#include <mach/hardware.h>
+#include <mach/gpio.h>
+
+#include "../codecs/wm8731.h"
+#include "atmel-pcm.h"
+#include "atmel_ssc_dai.h"
+
+#define MCLK_RATE 12288000
+
+#define DRV_NAME "sam9x5-snd-wm8731"
+
+/*
+ * Authorized rates are:
+ * Rate = MCLK_RATE / (n * 2)
+ * Where n is in [1..4095]
+ * (cf register SSC_CMR)
+ */
+static unsigned int rates[] = {
+	8000,
+	16000,
+	32000,
+	48000,
+	64000,
+	96000,
+};
+
+static struct snd_pcm_hw_constraint_list hw_rates = {
+	.count = ARRAY_SIZE(rates),
+	.list = rates,
+};
+
+/*
+ * Logic for a wm8731 as connected on a at91sam9x5 based board.
+ */
+static int at91sam9x5ek_wm8731_init(struct snd_soc_pcm_runtime *rtd)
+{
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct device *dev = rtd->dev;
+	int ret;
+
+	dev_dbg(dev, "ASoC: %s called\n", __func__);
+
+	/* set the codec system clock for DAC and ADC */
+	ret = snd_soc_dai_set_sysclk(codec_dai, WM8731_SYSCLK_XTAL,
+				     MCLK_RATE, SND_SOC_CLOCK_IN);
+	if (ret < 0) {
+		dev_err(dev, "ASoC: Failed to set WM8731 SYSCLK: %d\n", ret);
+		return ret;
+	}
+
+	return 0;
+}
+
+static int sam9x5ek_wm8731_startup(struct snd_pcm_substream *substream)
+{
+	struct snd_pcm_runtime *runtime = substream->runtime;
+
+	runtime->hw.rate_min = hw_rates.list[0];
+	runtime->hw.rate_max = hw_rates.list[hw_rates.count - 1];
+	runtime->hw.rates = SNDRV_PCM_RATE_KNOT;
+
+	return snd_pcm_hw_constraint_list(runtime, 0, SNDRV_PCM_HW_PARAM_RATE,
+					  &hw_rates);
+}
+
+/*
+ * Audio paths on at91sam9x5ek board:
+ *
+ *  |A| ------------> |      | ---R----> Headphone Jack
+ *  |T| <----\        |  WM  | ---L--/
+ *  |9| ---> CLK <--> | 8731 | <--R----- Line In Jack
+ *  |1| <------------ |      | <--L--/
+ */
+static const struct snd_soc_dapm_widget at91sam9x5ek_dapm_widgets[] = {
+	SND_SOC_DAPM_HP("Headphone Jack", NULL),
+	SND_SOC_DAPM_LINE("Line In Jack", NULL),
+};
+
+static struct snd_soc_ops sam9x5ek_wm8731_ops = {
+	.startup = sam9x5ek_wm8731_startup,
+};
+
+static struct snd_soc_dai_link at91sam9x5ek_dai = {
+	.name = "WM8731",
+	.stream_name = "WM8731 PCM",
+	.codec_dai_name = "wm8731-hifi",
+	.init = at91sam9x5ek_wm8731_init,
+	.ops = &sam9x5ek_wm8731_ops,
+};
+
+static struct snd_soc_card snd_soc_at91sam9x5ek = {
+	.owner = THIS_MODULE,
+	.dai_link = &at91sam9x5ek_dai,
+	.num_links = 1,
+	.dapm_widgets = at91sam9x5ek_dapm_widgets,
+	.num_dapm_widgets = ARRAY_SIZE(at91sam9x5ek_dapm_widgets),
+};
+
+static int sam9x5_wm8731_driver_probe(struct platform_device *pdev)
+{
+	struct device_node *np = pdev->dev.of_node;
+	struct device_node *codec_np, *cpu_np;
+	int ret;
+
+	if (!np) {
+		dev_err(&pdev->dev, "No device node supplied\n");
+		return -EINVAL;
+	}
+
+	ret = atmel_ssc_set_audio(0);
+	if (ret != 0) {
+		dev_err(&pdev->dev,
+			"ASoC: Failed to set SSC 0 for audio: %d\n", ret);
+		return ret;
+	}
+
+	snd_soc_at91sam9x5ek.dev = &pdev->dev;
+
+	ret = snd_soc_of_parse_card_name(&snd_soc_at91sam9x5ek, "atmel,model");
+	if (ret)
+		goto out;
+
+	ret = snd_soc_of_parse_audio_routing(&snd_soc_at91sam9x5ek,
+					     "atmel,audio-routing");
+	if (ret)
+		goto out;
+
+	codec_np = of_parse_phandle(np, "atmel,audio-codec", 0);
+	if (!codec_np) {
+		dev_err(&pdev->dev, "codec info missing\n");
+		ret = -EINVAL;
+		goto out;
+	}
+
+	at91sam9x5ek_dai.codec_of_node = codec_np;
+
+	cpu_np = of_parse_phandle(np, "atmel,ssc-controller", 0);
+	if (!cpu_np) {
+		dev_err(&pdev->dev, "ssc controller node missing\n");
+		ret = -EINVAL;
+		goto out;
+	}
+	at91sam9x5ek_dai.cpu_of_node = cpu_np;
+	at91sam9x5ek_dai.platform_of_node = cpu_np;
+
+	of_node_put(codec_np);
+	of_node_put(cpu_np);
+
+	at91sam9x5ek_dai.dai_fmt = snd_soc_of_parse_daifmt(np, "atmel,");
+
+	ret = snd_soc_register_card(&snd_soc_at91sam9x5ek);
+	if (ret) {
+		dev_err(&pdev->dev,
+			"ASoC: Platform device allocation failed\n");
+		goto out;
+	}
+
+	platform_set_drvdata(pdev, &snd_soc_at91sam9x5ek);
+
+	dev_dbg(&pdev->dev, "ASoC: %s ok\n", __func__);
+
+	return ret;
+
+out:
+	atmel_ssc_put_audio(0);
+	return ret;
+}
+
+static int sam9x5_wm8731_driver_remove(struct platform_device *pdev)
+{
+	struct snd_soc_card *card = platform_get_drvdata(pdev);
+
+	snd_soc_unregister_card(card);
+	atmel_ssc_put_audio(0);
+
+	return 0;
+}
+
+static const struct of_device_id sam9x5_wm8731_of_match[] = {
+	{ .compatible = "atmel,sam9x5-wm8731-audio", },
+	{},
+};
+MODULE_DEVICE_TABLE(of, sam9x5_wm8731_of_match);
+
+static struct platform_driver sam9x5_wm8731_driver = {
+	.driver = {
+		.name = DRV_NAME,
+		.owner = THIS_MODULE,
+		.of_match_table = of_match_ptr(sam9x5_wm8731_of_match),
+	},
+	.probe = sam9x5_wm8731_driver_probe,
+	.remove = sam9x5_wm8731_driver_remove,
+};
+module_platform_driver(sam9x5_wm8731_driver);
+
+/* Module information */
+MODULE_AUTHOR("Nicolas Ferre <nicolas.ferre@atmel.com>");
+MODULE_AUTHOR("Richard Genoud <richard.genoud@gmail.com>");
+MODULE_DESCRIPTION("ALSA SoC machine driver for AT91SAM9x5 - WM8731");
+MODULE_LICENSE("GPL");
+MODULE_ALIAS("platform:" DRV_NAME);
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 122+ messages in thread

* [PATCH v3 1/7] sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards
@ 2013-07-09 12:28     ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09 12:28 UTC (permalink / raw)
  To: Mark Brown, Nicolas Ferre, Liam Girdwood
  Cc: alsa-devel-K7yf7f+aM1XWsZ/bQMPhNw, Lars-Peter Clausen,
	devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, Bo Shen,
	Uwe Kleine-König,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r

From: Nicolas Ferre <nicolas.ferre@atmel.com>

Description of the Asoc machine driver for an at91sam9x5 based board
with a wm8731 audio DAC. Wm8731 is clocked by a crystal and used as a
master on the SSC/I2S interface. Its connections are a headphone jack
and an Line input jack.

[Richard: this is based on an old patch from Nicolas that I forward
ported and reworked to use only device tree]

Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
---
 sound/soc/atmel/Kconfig         |   10 ++
 sound/soc/atmel/Makefile        |    2 +
 sound/soc/atmel/sam9x5_wm8731.c |  238 +++++++++++++++++++++++++++++++++++++++
 3 files changed, 250 insertions(+)
 create mode 100644 sound/soc/atmel/sam9x5_wm8731.c

diff --git a/sound/soc/atmel/Kconfig b/sound/soc/atmel/Kconfig
index 1c0b185..9eb8c49 100644
--- a/sound/soc/atmel/Kconfig
+++ b/sound/soc/atmel/Kconfig
@@ -33,6 +33,16 @@ config SND_AT91_SOC_SAM9G20_WM8731
 	  Say Y if you want to add support for SoC audio on WM8731-based
 	  AT91sam9g20 evaluation board.
 
+config SND_AT91_SOC_SAM9X5_WM8731
+	tristate "SoC Audio support for WM8731-based at91sam9x5 board"
+	depends on ATMEL_SSC && SND_ATMEL_SOC && SOC_AT91SAM9X5
+	select SND_ATMEL_SOC_SSC
+	select SND_ATMEL_SOC_DMA
+	select SND_SOC_WM8731
+	help
+	  Say Y if you want to add support for audio SoC on an
+	  at91sam9x5 based board that is using WM8731 codec.
+
 config SND_AT91_SOC_AFEB9260
 	tristate "SoC Audio support for AFEB9260 board"
 	depends on ARCH_AT91 && ATMEL_SSC && ARCH_AT91 && MACH_AFEB9260 && SND_ATMEL_SOC
diff --git a/sound/soc/atmel/Makefile b/sound/soc/atmel/Makefile
index 41967cc..7784c09 100644
--- a/sound/soc/atmel/Makefile
+++ b/sound/soc/atmel/Makefile
@@ -11,6 +11,8 @@ obj-$(CONFIG_SND_ATMEL_SOC_SSC) += snd-soc-atmel_ssc_dai.o
 
 # AT91 Machine Support
 snd-soc-sam9g20-wm8731-objs := sam9g20_wm8731.o
+snd-soc-sam9x5-wm8731-objs := sam9x5_wm8731.o
 
 obj-$(CONFIG_SND_AT91_SOC_SAM9G20_WM8731) += snd-soc-sam9g20-wm8731.o
+obj-$(CONFIG_SND_AT91_SOC_SAM9X5_WM8731) += snd-soc-sam9x5-wm8731.o
 obj-$(CONFIG_SND_AT91_SOC_AFEB9260) += snd-soc-afeb9260.o
diff --git a/sound/soc/atmel/sam9x5_wm8731.c b/sound/soc/atmel/sam9x5_wm8731.c
new file mode 100644
index 0000000..c56e36b
--- /dev/null
+++ b/sound/soc/atmel/sam9x5_wm8731.c
@@ -0,0 +1,238 @@
+/*
+ * sam9x5_wm8731   --	SoC audio for AT91SAM9X5-based boards
+ *			that are using WM8731 as codec.
+ *
+ *  Copyright (C) 2011 Atmel,
+ *		  Nicolas Ferre <nicolas.ferre@atmel.com>
+ *
+ *  Copyright (C) 2013 Paratronic,
+ *		  Richard Genoud <richard.genoud@gmail.com>
+ *
+ * Based on sam9g20_wm8731.c by:
+ * Sedji Gaouaou <sedji.gaouaou@atmel.com>
+ *
+ *  This program is free software; you can redistribute  it and/or modify it
+ *  under  the terms of  the GNU General  Public License as published by the
+ *  Free Software Foundation;  either version 2 of the  License, or (at your
+ *  option) any later version.
+ *
+ */
+
+#include <linux/module.h>
+#include <linux/moduleparam.h>
+#include <linux/kernel.h>
+#include <linux/clk.h>
+#include <linux/timer.h>
+#include <linux/interrupt.h>
+#include <linux/platform_device.h>
+#include <linux/i2c.h>
+
+#include <linux/atmel-ssc.h>
+
+#include <sound/core.h>
+#include <sound/pcm.h>
+#include <sound/pcm_params.h>
+#include <sound/soc.h>
+
+#include <asm/mach-types.h>
+#include <mach/hardware.h>
+#include <mach/gpio.h>
+
+#include "../codecs/wm8731.h"
+#include "atmel-pcm.h"
+#include "atmel_ssc_dai.h"
+
+#define MCLK_RATE 12288000
+
+#define DRV_NAME "sam9x5-snd-wm8731"
+
+/*
+ * Authorized rates are:
+ * Rate = MCLK_RATE / (n * 2)
+ * Where n is in [1..4095]
+ * (cf register SSC_CMR)
+ */
+static unsigned int rates[] = {
+	8000,
+	16000,
+	32000,
+	48000,
+	64000,
+	96000,
+};
+
+static struct snd_pcm_hw_constraint_list hw_rates = {
+	.count = ARRAY_SIZE(rates),
+	.list = rates,
+};
+
+/*
+ * Logic for a wm8731 as connected on a at91sam9x5 based board.
+ */
+static int at91sam9x5ek_wm8731_init(struct snd_soc_pcm_runtime *rtd)
+{
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct device *dev = rtd->dev;
+	int ret;
+
+	dev_dbg(dev, "ASoC: %s called\n", __func__);
+
+	/* set the codec system clock for DAC and ADC */
+	ret = snd_soc_dai_set_sysclk(codec_dai, WM8731_SYSCLK_XTAL,
+				     MCLK_RATE, SND_SOC_CLOCK_IN);
+	if (ret < 0) {
+		dev_err(dev, "ASoC: Failed to set WM8731 SYSCLK: %d\n", ret);
+		return ret;
+	}
+
+	return 0;
+}
+
+static int sam9x5ek_wm8731_startup(struct snd_pcm_substream *substream)
+{
+	struct snd_pcm_runtime *runtime = substream->runtime;
+
+	runtime->hw.rate_min = hw_rates.list[0];
+	runtime->hw.rate_max = hw_rates.list[hw_rates.count - 1];
+	runtime->hw.rates = SNDRV_PCM_RATE_KNOT;
+
+	return snd_pcm_hw_constraint_list(runtime, 0, SNDRV_PCM_HW_PARAM_RATE,
+					  &hw_rates);
+}
+
+/*
+ * Audio paths on at91sam9x5ek board:
+ *
+ *  |A| ------------> |      | ---R----> Headphone Jack
+ *  |T| <----\        |  WM  | ---L--/
+ *  |9| ---> CLK <--> | 8731 | <--R----- Line In Jack
+ *  |1| <------------ |      | <--L--/
+ */
+static const struct snd_soc_dapm_widget at91sam9x5ek_dapm_widgets[] = {
+	SND_SOC_DAPM_HP("Headphone Jack", NULL),
+	SND_SOC_DAPM_LINE("Line In Jack", NULL),
+};
+
+static struct snd_soc_ops sam9x5ek_wm8731_ops = {
+	.startup = sam9x5ek_wm8731_startup,
+};
+
+static struct snd_soc_dai_link at91sam9x5ek_dai = {
+	.name = "WM8731",
+	.stream_name = "WM8731 PCM",
+	.codec_dai_name = "wm8731-hifi",
+	.init = at91sam9x5ek_wm8731_init,
+	.ops = &sam9x5ek_wm8731_ops,
+};
+
+static struct snd_soc_card snd_soc_at91sam9x5ek = {
+	.owner = THIS_MODULE,
+	.dai_link = &at91sam9x5ek_dai,
+	.num_links = 1,
+	.dapm_widgets = at91sam9x5ek_dapm_widgets,
+	.num_dapm_widgets = ARRAY_SIZE(at91sam9x5ek_dapm_widgets),
+};
+
+static int sam9x5_wm8731_driver_probe(struct platform_device *pdev)
+{
+	struct device_node *np = pdev->dev.of_node;
+	struct device_node *codec_np, *cpu_np;
+	int ret;
+
+	if (!np) {
+		dev_err(&pdev->dev, "No device node supplied\n");
+		return -EINVAL;
+	}
+
+	ret = atmel_ssc_set_audio(0);
+	if (ret != 0) {
+		dev_err(&pdev->dev,
+			"ASoC: Failed to set SSC 0 for audio: %d\n", ret);
+		return ret;
+	}
+
+	snd_soc_at91sam9x5ek.dev = &pdev->dev;
+
+	ret = snd_soc_of_parse_card_name(&snd_soc_at91sam9x5ek, "atmel,model");
+	if (ret)
+		goto out;
+
+	ret = snd_soc_of_parse_audio_routing(&snd_soc_at91sam9x5ek,
+					     "atmel,audio-routing");
+	if (ret)
+		goto out;
+
+	codec_np = of_parse_phandle(np, "atmel,audio-codec", 0);
+	if (!codec_np) {
+		dev_err(&pdev->dev, "codec info missing\n");
+		ret = -EINVAL;
+		goto out;
+	}
+
+	at91sam9x5ek_dai.codec_of_node = codec_np;
+
+	cpu_np = of_parse_phandle(np, "atmel,ssc-controller", 0);
+	if (!cpu_np) {
+		dev_err(&pdev->dev, "ssc controller node missing\n");
+		ret = -EINVAL;
+		goto out;
+	}
+	at91sam9x5ek_dai.cpu_of_node = cpu_np;
+	at91sam9x5ek_dai.platform_of_node = cpu_np;
+
+	of_node_put(codec_np);
+	of_node_put(cpu_np);
+
+	at91sam9x5ek_dai.dai_fmt = snd_soc_of_parse_daifmt(np, "atmel,");
+
+	ret = snd_soc_register_card(&snd_soc_at91sam9x5ek);
+	if (ret) {
+		dev_err(&pdev->dev,
+			"ASoC: Platform device allocation failed\n");
+		goto out;
+	}
+
+	platform_set_drvdata(pdev, &snd_soc_at91sam9x5ek);
+
+	dev_dbg(&pdev->dev, "ASoC: %s ok\n", __func__);
+
+	return ret;
+
+out:
+	atmel_ssc_put_audio(0);
+	return ret;
+}
+
+static int sam9x5_wm8731_driver_remove(struct platform_device *pdev)
+{
+	struct snd_soc_card *card = platform_get_drvdata(pdev);
+
+	snd_soc_unregister_card(card);
+	atmel_ssc_put_audio(0);
+
+	return 0;
+}
+
+static const struct of_device_id sam9x5_wm8731_of_match[] = {
+	{ .compatible = "atmel,sam9x5-wm8731-audio", },
+	{},
+};
+MODULE_DEVICE_TABLE(of, sam9x5_wm8731_of_match);
+
+static struct platform_driver sam9x5_wm8731_driver = {
+	.driver = {
+		.name = DRV_NAME,
+		.owner = THIS_MODULE,
+		.of_match_table = of_match_ptr(sam9x5_wm8731_of_match),
+	},
+	.probe = sam9x5_wm8731_driver_probe,
+	.remove = sam9x5_wm8731_driver_remove,
+};
+module_platform_driver(sam9x5_wm8731_driver);
+
+/* Module information */
+MODULE_AUTHOR("Nicolas Ferre <nicolas.ferre@atmel.com>");
+MODULE_AUTHOR("Richard Genoud <richard.genoud@gmail.com>");
+MODULE_DESCRIPTION("ALSA SoC machine driver for AT91SAM9x5 - WM8731");
+MODULE_LICENSE("GPL");
+MODULE_ALIAS("platform:" DRV_NAME);
-- 
1.7.10.4

_______________________________________________
devicetree-discuss mailing list
devicetree-discuss@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/devicetree-discuss

^ permalink raw reply related	[flat|nested] 122+ messages in thread

* [PATCH v3 1/7] sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards
@ 2013-07-09 12:28     ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09 12:28 UTC (permalink / raw)
  To: linux-arm-kernel

From: Nicolas Ferre <nicolas.ferre@atmel.com>

Description of the Asoc machine driver for an at91sam9x5 based board
with a wm8731 audio DAC. Wm8731 is clocked by a crystal and used as a
master on the SSC/I2S interface. Its connections are a headphone jack
and an Line input jack.

[Richard: this is based on an old patch from Nicolas that I forward
ported and reworked to use only device tree]

Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Signed-off-by: Uwe Kleine-K?nig <u.kleine-koenig@pengutronix.de>
Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
---
 sound/soc/atmel/Kconfig         |   10 ++
 sound/soc/atmel/Makefile        |    2 +
 sound/soc/atmel/sam9x5_wm8731.c |  238 +++++++++++++++++++++++++++++++++++++++
 3 files changed, 250 insertions(+)
 create mode 100644 sound/soc/atmel/sam9x5_wm8731.c

diff --git a/sound/soc/atmel/Kconfig b/sound/soc/atmel/Kconfig
index 1c0b185..9eb8c49 100644
--- a/sound/soc/atmel/Kconfig
+++ b/sound/soc/atmel/Kconfig
@@ -33,6 +33,16 @@ config SND_AT91_SOC_SAM9G20_WM8731
 	  Say Y if you want to add support for SoC audio on WM8731-based
 	  AT91sam9g20 evaluation board.
 
+config SND_AT91_SOC_SAM9X5_WM8731
+	tristate "SoC Audio support for WM8731-based at91sam9x5 board"
+	depends on ATMEL_SSC && SND_ATMEL_SOC && SOC_AT91SAM9X5
+	select SND_ATMEL_SOC_SSC
+	select SND_ATMEL_SOC_DMA
+	select SND_SOC_WM8731
+	help
+	  Say Y if you want to add support for audio SoC on an
+	  at91sam9x5 based board that is using WM8731 codec.
+
 config SND_AT91_SOC_AFEB9260
 	tristate "SoC Audio support for AFEB9260 board"
 	depends on ARCH_AT91 && ATMEL_SSC && ARCH_AT91 && MACH_AFEB9260 && SND_ATMEL_SOC
diff --git a/sound/soc/atmel/Makefile b/sound/soc/atmel/Makefile
index 41967cc..7784c09 100644
--- a/sound/soc/atmel/Makefile
+++ b/sound/soc/atmel/Makefile
@@ -11,6 +11,8 @@ obj-$(CONFIG_SND_ATMEL_SOC_SSC) += snd-soc-atmel_ssc_dai.o
 
 # AT91 Machine Support
 snd-soc-sam9g20-wm8731-objs := sam9g20_wm8731.o
+snd-soc-sam9x5-wm8731-objs := sam9x5_wm8731.o
 
 obj-$(CONFIG_SND_AT91_SOC_SAM9G20_WM8731) += snd-soc-sam9g20-wm8731.o
+obj-$(CONFIG_SND_AT91_SOC_SAM9X5_WM8731) += snd-soc-sam9x5-wm8731.o
 obj-$(CONFIG_SND_AT91_SOC_AFEB9260) += snd-soc-afeb9260.o
diff --git a/sound/soc/atmel/sam9x5_wm8731.c b/sound/soc/atmel/sam9x5_wm8731.c
new file mode 100644
index 0000000..c56e36b
--- /dev/null
+++ b/sound/soc/atmel/sam9x5_wm8731.c
@@ -0,0 +1,238 @@
+/*
+ * sam9x5_wm8731   --	SoC audio for AT91SAM9X5-based boards
+ *			that are using WM8731 as codec.
+ *
+ *  Copyright (C) 2011 Atmel,
+ *		  Nicolas Ferre <nicolas.ferre@atmel.com>
+ *
+ *  Copyright (C) 2013 Paratronic,
+ *		  Richard Genoud <richard.genoud@gmail.com>
+ *
+ * Based on sam9g20_wm8731.c by:
+ * Sedji Gaouaou <sedji.gaouaou@atmel.com>
+ *
+ *  This program is free software; you can redistribute  it and/or modify it
+ *  under  the terms of  the GNU General  Public License as published by the
+ *  Free Software Foundation;  either version 2 of the  License, or (at your
+ *  option) any later version.
+ *
+ */
+
+#include <linux/module.h>
+#include <linux/moduleparam.h>
+#include <linux/kernel.h>
+#include <linux/clk.h>
+#include <linux/timer.h>
+#include <linux/interrupt.h>
+#include <linux/platform_device.h>
+#include <linux/i2c.h>
+
+#include <linux/atmel-ssc.h>
+
+#include <sound/core.h>
+#include <sound/pcm.h>
+#include <sound/pcm_params.h>
+#include <sound/soc.h>
+
+#include <asm/mach-types.h>
+#include <mach/hardware.h>
+#include <mach/gpio.h>
+
+#include "../codecs/wm8731.h"
+#include "atmel-pcm.h"
+#include "atmel_ssc_dai.h"
+
+#define MCLK_RATE 12288000
+
+#define DRV_NAME "sam9x5-snd-wm8731"
+
+/*
+ * Authorized rates are:
+ * Rate = MCLK_RATE / (n * 2)
+ * Where n is in [1..4095]
+ * (cf register SSC_CMR)
+ */
+static unsigned int rates[] = {
+	8000,
+	16000,
+	32000,
+	48000,
+	64000,
+	96000,
+};
+
+static struct snd_pcm_hw_constraint_list hw_rates = {
+	.count = ARRAY_SIZE(rates),
+	.list = rates,
+};
+
+/*
+ * Logic for a wm8731 as connected on a at91sam9x5 based board.
+ */
+static int at91sam9x5ek_wm8731_init(struct snd_soc_pcm_runtime *rtd)
+{
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct device *dev = rtd->dev;
+	int ret;
+
+	dev_dbg(dev, "ASoC: %s called\n", __func__);
+
+	/* set the codec system clock for DAC and ADC */
+	ret = snd_soc_dai_set_sysclk(codec_dai, WM8731_SYSCLK_XTAL,
+				     MCLK_RATE, SND_SOC_CLOCK_IN);
+	if (ret < 0) {
+		dev_err(dev, "ASoC: Failed to set WM8731 SYSCLK: %d\n", ret);
+		return ret;
+	}
+
+	return 0;
+}
+
+static int sam9x5ek_wm8731_startup(struct snd_pcm_substream *substream)
+{
+	struct snd_pcm_runtime *runtime = substream->runtime;
+
+	runtime->hw.rate_min = hw_rates.list[0];
+	runtime->hw.rate_max = hw_rates.list[hw_rates.count - 1];
+	runtime->hw.rates = SNDRV_PCM_RATE_KNOT;
+
+	return snd_pcm_hw_constraint_list(runtime, 0, SNDRV_PCM_HW_PARAM_RATE,
+					  &hw_rates);
+}
+
+/*
+ * Audio paths on at91sam9x5ek board:
+ *
+ *  |A| ------------> |      | ---R----> Headphone Jack
+ *  |T| <----\        |  WM  | ---L--/
+ *  |9| ---> CLK <--> | 8731 | <--R----- Line In Jack
+ *  |1| <------------ |      | <--L--/
+ */
+static const struct snd_soc_dapm_widget at91sam9x5ek_dapm_widgets[] = {
+	SND_SOC_DAPM_HP("Headphone Jack", NULL),
+	SND_SOC_DAPM_LINE("Line In Jack", NULL),
+};
+
+static struct snd_soc_ops sam9x5ek_wm8731_ops = {
+	.startup = sam9x5ek_wm8731_startup,
+};
+
+static struct snd_soc_dai_link at91sam9x5ek_dai = {
+	.name = "WM8731",
+	.stream_name = "WM8731 PCM",
+	.codec_dai_name = "wm8731-hifi",
+	.init = at91sam9x5ek_wm8731_init,
+	.ops = &sam9x5ek_wm8731_ops,
+};
+
+static struct snd_soc_card snd_soc_at91sam9x5ek = {
+	.owner = THIS_MODULE,
+	.dai_link = &at91sam9x5ek_dai,
+	.num_links = 1,
+	.dapm_widgets = at91sam9x5ek_dapm_widgets,
+	.num_dapm_widgets = ARRAY_SIZE(at91sam9x5ek_dapm_widgets),
+};
+
+static int sam9x5_wm8731_driver_probe(struct platform_device *pdev)
+{
+	struct device_node *np = pdev->dev.of_node;
+	struct device_node *codec_np, *cpu_np;
+	int ret;
+
+	if (!np) {
+		dev_err(&pdev->dev, "No device node supplied\n");
+		return -EINVAL;
+	}
+
+	ret = atmel_ssc_set_audio(0);
+	if (ret != 0) {
+		dev_err(&pdev->dev,
+			"ASoC: Failed to set SSC 0 for audio: %d\n", ret);
+		return ret;
+	}
+
+	snd_soc_at91sam9x5ek.dev = &pdev->dev;
+
+	ret = snd_soc_of_parse_card_name(&snd_soc_at91sam9x5ek, "atmel,model");
+	if (ret)
+		goto out;
+
+	ret = snd_soc_of_parse_audio_routing(&snd_soc_at91sam9x5ek,
+					     "atmel,audio-routing");
+	if (ret)
+		goto out;
+
+	codec_np = of_parse_phandle(np, "atmel,audio-codec", 0);
+	if (!codec_np) {
+		dev_err(&pdev->dev, "codec info missing\n");
+		ret = -EINVAL;
+		goto out;
+	}
+
+	at91sam9x5ek_dai.codec_of_node = codec_np;
+
+	cpu_np = of_parse_phandle(np, "atmel,ssc-controller", 0);
+	if (!cpu_np) {
+		dev_err(&pdev->dev, "ssc controller node missing\n");
+		ret = -EINVAL;
+		goto out;
+	}
+	at91sam9x5ek_dai.cpu_of_node = cpu_np;
+	at91sam9x5ek_dai.platform_of_node = cpu_np;
+
+	of_node_put(codec_np);
+	of_node_put(cpu_np);
+
+	at91sam9x5ek_dai.dai_fmt = snd_soc_of_parse_daifmt(np, "atmel,");
+
+	ret = snd_soc_register_card(&snd_soc_at91sam9x5ek);
+	if (ret) {
+		dev_err(&pdev->dev,
+			"ASoC: Platform device allocation failed\n");
+		goto out;
+	}
+
+	platform_set_drvdata(pdev, &snd_soc_at91sam9x5ek);
+
+	dev_dbg(&pdev->dev, "ASoC: %s ok\n", __func__);
+
+	return ret;
+
+out:
+	atmel_ssc_put_audio(0);
+	return ret;
+}
+
+static int sam9x5_wm8731_driver_remove(struct platform_device *pdev)
+{
+	struct snd_soc_card *card = platform_get_drvdata(pdev);
+
+	snd_soc_unregister_card(card);
+	atmel_ssc_put_audio(0);
+
+	return 0;
+}
+
+static const struct of_device_id sam9x5_wm8731_of_match[] = {
+	{ .compatible = "atmel,sam9x5-wm8731-audio", },
+	{},
+};
+MODULE_DEVICE_TABLE(of, sam9x5_wm8731_of_match);
+
+static struct platform_driver sam9x5_wm8731_driver = {
+	.driver = {
+		.name = DRV_NAME,
+		.owner = THIS_MODULE,
+		.of_match_table = of_match_ptr(sam9x5_wm8731_of_match),
+	},
+	.probe = sam9x5_wm8731_driver_probe,
+	.remove = sam9x5_wm8731_driver_remove,
+};
+module_platform_driver(sam9x5_wm8731_driver);
+
+/* Module information */
+MODULE_AUTHOR("Nicolas Ferre <nicolas.ferre@atmel.com>");
+MODULE_AUTHOR("Richard Genoud <richard.genoud@gmail.com>");
+MODULE_DESCRIPTION("ALSA SoC machine driver for AT91SAM9x5 - WM8731");
+MODULE_LICENSE("GPL");
+MODULE_ALIAS("platform:" DRV_NAME);
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 122+ messages in thread

* [PATCH v3 2/7] Documentation: DT: add sam9x5ek-wm8731 machine driver
  2013-07-09 12:28   ` Richard Genoud
@ 2013-07-09 12:28     ` Richard Genoud
  -1 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09 12:28 UTC (permalink / raw)
  To: Mark Brown, Nicolas Ferre, Liam Girdwood
  Cc: Bo Shen, Lars-Peter Clausen, linux-arm-kernel, linux-kernel,
	alsa-devel, devicetree-discuss, Richard Genoud

This add the sound DT binding for sam9x5ek-wm8731 machine driver

Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
---
 .../bindings/sound/atmel-sam9x5-wm8731-audio.txt   |   30 ++++++++++++++++++++
 1 file changed, 30 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/sound/atmel-sam9x5-wm8731-audio.txt

diff --git a/Documentation/devicetree/bindings/sound/atmel-sam9x5-wm8731-audio.txt b/Documentation/devicetree/bindings/sound/atmel-sam9x5-wm8731-audio.txt
new file mode 100644
index 0000000..fd03dfd
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/atmel-sam9x5-wm8731-audio.txt
@@ -0,0 +1,30 @@
+* Atmel at91sam9x5ek wm8731 audio complex
+
+Required properties:
+  - compatible: "atmel,at91sam9x5ek-wm8731-audio"
+  - atmel,model: The user-visible name of this sound complex.
+  - atmel,audio-routing: A list of the connections between audio components.
+  - atmel,ssc-controller: The phandle of the SSC controller
+  - atmel,audio-codec: The phandle of the WM8731 audio codec
+  - atmel,format: DAI format. Must be "i2s"
+  - atmel,bitclock-master:  DAI clock master
+  - atmel,frame-master: DAI frame master
+
+Example:
+sound {
+	compatible = "atmel,sam9x5-wm8731-audio";
+
+	atmel,model = "wm8731 @ AT91SAM9X5EK";
+
+	atmel,audio-routing =
+		"Headphone Jack", "RHPOUT",
+		"Headphone Jack", "LHPOUT",
+		"LLINEIN", "Line In Jack",
+		"RLINEIN", "Line In Jack";
+
+	atmel,ssc-controller = <&ssc0>;
+	atmel,audio-codec = <&wm8731>;
+	atmel,format = "i2s";
+	atmel,bitclock-master;
+	atmel,frame-master;
+};
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 122+ messages in thread

* [PATCH v3 2/7] Documentation: DT: add sam9x5ek-wm8731 machine driver
@ 2013-07-09 12:28     ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09 12:28 UTC (permalink / raw)
  To: linux-arm-kernel

This add the sound DT binding for sam9x5ek-wm8731 machine driver

Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
---
 .../bindings/sound/atmel-sam9x5-wm8731-audio.txt   |   30 ++++++++++++++++++++
 1 file changed, 30 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/sound/atmel-sam9x5-wm8731-audio.txt

diff --git a/Documentation/devicetree/bindings/sound/atmel-sam9x5-wm8731-audio.txt b/Documentation/devicetree/bindings/sound/atmel-sam9x5-wm8731-audio.txt
new file mode 100644
index 0000000..fd03dfd
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/atmel-sam9x5-wm8731-audio.txt
@@ -0,0 +1,30 @@
+* Atmel at91sam9x5ek wm8731 audio complex
+
+Required properties:
+  - compatible: "atmel,at91sam9x5ek-wm8731-audio"
+  - atmel,model: The user-visible name of this sound complex.
+  - atmel,audio-routing: A list of the connections between audio components.
+  - atmel,ssc-controller: The phandle of the SSC controller
+  - atmel,audio-codec: The phandle of the WM8731 audio codec
+  - atmel,format: DAI format. Must be "i2s"
+  - atmel,bitclock-master:  DAI clock master
+  - atmel,frame-master: DAI frame master
+
+Example:
+sound {
+	compatible = "atmel,sam9x5-wm8731-audio";
+
+	atmel,model = "wm8731 @ AT91SAM9X5EK";
+
+	atmel,audio-routing =
+		"Headphone Jack", "RHPOUT",
+		"Headphone Jack", "LHPOUT",
+		"LLINEIN", "Line In Jack",
+		"RLINEIN", "Line In Jack";
+
+	atmel,ssc-controller = <&ssc0>;
+	atmel,audio-codec = <&wm8731>;
+	atmel,format = "i2s";
+	atmel,bitclock-master;
+	atmel,frame-master;
+};
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 122+ messages in thread

* [PATCH v3 3/7] Documentation: DT: update atmel SSC with DMA binding
  2013-07-09 12:28   ` Richard Genoud
@ 2013-07-09 12:28     ` Richard Genoud
  -1 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09 12:28 UTC (permalink / raw)
  To: Mark Brown, Nicolas Ferre, Liam Girdwood
  Cc: Bo Shen, Lars-Peter Clausen, linux-arm-kernel, linux-kernel,
	alsa-devel, devicetree-discuss, Richard Genoud

As atmel-ssc can be used with DMA, the documentation should be updated.
Also, a configuration DMA example is given.

Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
---
 .../devicetree/bindings/misc/atmel-ssc.txt         |   24 ++++++++++++++++++--
 1 file changed, 22 insertions(+), 2 deletions(-)

diff --git a/Documentation/devicetree/bindings/misc/atmel-ssc.txt b/Documentation/devicetree/bindings/misc/atmel-ssc.txt
index 38e51ad..96958ca 100644
--- a/Documentation/devicetree/bindings/misc/atmel-ssc.txt
+++ b/Documentation/devicetree/bindings/misc/atmel-ssc.txt
@@ -6,10 +6,30 @@ Required properties:
 	- atmel,at91sam9g45-ssc: support dma transfer
 - reg: Should contain SSC registers location and length
 - interrupts: Should contain SSC interrupt
+For dma transfer:
+- dmas: DMA specifier, consisting of a phandle to DMA controller node,
+  the memory interface and SSC DMA channel ID (for tx and rx).
+  See Documentation/devicetree/bindings/dma/atmel-dma.txt for details.
+- dma-names: Must be "tx", "rx".
 
-Example:
+
+Examples:
 ssc0: ssc@fffbc000 {
 	compatible = "atmel,at91rm9200-ssc";
 	reg = <0xfffbc000 0x4000>;
-	interrupts = <14 4 5>;
+	interrupts = <14 IRQ_TYPE_LEVEL_HIGH 5>;
 };
+
+
+ssc0: ssc@f0010000 {
+      compatible = "atmel,at91sam9g45-ssc";
+      reg = <0xf0010000 0x4000>;
+      interrupts = <28 IRQ_TYPE_LEVEL_HIGH 5>;
+      dmas = <&dma0 1 AT91_DMA_CFG_PER_ID(13)>,
+	     <&dma0 1 AT91_DMA_CFG_PER_ID(14)>;
+      dma-names = "tx", "rx";
+      pinctrl-names = "default";
+      pinctrl-0 = <&pinctrl_ssc0_tx &pinctrl_ssc0_rx>;
+      status = "disabled";
+};
+
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 122+ messages in thread

* [PATCH v3 3/7] Documentation: DT: update atmel SSC with DMA binding
@ 2013-07-09 12:28     ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09 12:28 UTC (permalink / raw)
  To: linux-arm-kernel

As atmel-ssc can be used with DMA, the documentation should be updated.
Also, a configuration DMA example is given.

Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
---
 .../devicetree/bindings/misc/atmel-ssc.txt         |   24 ++++++++++++++++++--
 1 file changed, 22 insertions(+), 2 deletions(-)

diff --git a/Documentation/devicetree/bindings/misc/atmel-ssc.txt b/Documentation/devicetree/bindings/misc/atmel-ssc.txt
index 38e51ad..96958ca 100644
--- a/Documentation/devicetree/bindings/misc/atmel-ssc.txt
+++ b/Documentation/devicetree/bindings/misc/atmel-ssc.txt
@@ -6,10 +6,30 @@ Required properties:
 	- atmel,at91sam9g45-ssc: support dma transfer
 - reg: Should contain SSC registers location and length
 - interrupts: Should contain SSC interrupt
+For dma transfer:
+- dmas: DMA specifier, consisting of a phandle to DMA controller node,
+  the memory interface and SSC DMA channel ID (for tx and rx).
+  See Documentation/devicetree/bindings/dma/atmel-dma.txt for details.
+- dma-names: Must be "tx", "rx".
 
-Example:
+
+Examples:
 ssc0: ssc at fffbc000 {
 	compatible = "atmel,at91rm9200-ssc";
 	reg = <0xfffbc000 0x4000>;
-	interrupts = <14 4 5>;
+	interrupts = <14 IRQ_TYPE_LEVEL_HIGH 5>;
 };
+
+
+ssc0: ssc at f0010000 {
+      compatible = "atmel,at91sam9g45-ssc";
+      reg = <0xf0010000 0x4000>;
+      interrupts = <28 IRQ_TYPE_LEVEL_HIGH 5>;
+      dmas = <&dma0 1 AT91_DMA_CFG_PER_ID(13)>,
+	     <&dma0 1 AT91_DMA_CFG_PER_ID(14)>;
+      dma-names = "tx", "rx";
+      pinctrl-names = "default";
+      pinctrl-0 = <&pinctrl_ssc0_tx &pinctrl_ssc0_rx>;
+      status = "disabled";
+};
+
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 122+ messages in thread

* [PATCH v3 4/7] ARM: AT91: DTS: sam9x5: add SSC DMA parameters
  2013-07-09 12:28   ` Richard Genoud
@ 2013-07-09 12:28     ` Richard Genoud
  -1 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09 12:28 UTC (permalink / raw)
  To: Mark Brown, Nicolas Ferre, Liam Girdwood
  Cc: Bo Shen, Lars-Peter Clausen, linux-arm-kernel, linux-kernel,
	alsa-devel, devicetree-discuss, Richard Genoud

Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
---
 arch/arm/boot/dts/at91sam9x5.dtsi |    3 +++
 1 file changed, 3 insertions(+)

diff --git a/arch/arm/boot/dts/at91sam9x5.dtsi b/arch/arm/boot/dts/at91sam9x5.dtsi
index 57d45f5..cf78ac0 100644
--- a/arch/arm/boot/dts/at91sam9x5.dtsi
+++ b/arch/arm/boot/dts/at91sam9x5.dtsi
@@ -542,6 +542,9 @@
 				compatible = "atmel,at91sam9g45-ssc";
 				reg = <0xf0010000 0x4000>;
 				interrupts = <28 IRQ_TYPE_LEVEL_HIGH 5>;
+				dmas = <&dma0 1 AT91_DMA_CFG_PER_ID(13)>,
+				       <&dma0 1 AT91_DMA_CFG_PER_ID(14)>;
+				dma-names = "tx", "rx";
 				pinctrl-names = "default";
 				pinctrl-0 = <&pinctrl_ssc0_tx &pinctrl_ssc0_rx>;
 				status = "disabled";
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 122+ messages in thread

* [PATCH v3 4/7] ARM: AT91: DTS: sam9x5: add SSC DMA parameters
@ 2013-07-09 12:28     ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09 12:28 UTC (permalink / raw)
  To: linux-arm-kernel

Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
---
 arch/arm/boot/dts/at91sam9x5.dtsi |    3 +++
 1 file changed, 3 insertions(+)

diff --git a/arch/arm/boot/dts/at91sam9x5.dtsi b/arch/arm/boot/dts/at91sam9x5.dtsi
index 57d45f5..cf78ac0 100644
--- a/arch/arm/boot/dts/at91sam9x5.dtsi
+++ b/arch/arm/boot/dts/at91sam9x5.dtsi
@@ -542,6 +542,9 @@
 				compatible = "atmel,at91sam9g45-ssc";
 				reg = <0xf0010000 0x4000>;
 				interrupts = <28 IRQ_TYPE_LEVEL_HIGH 5>;
+				dmas = <&dma0 1 AT91_DMA_CFG_PER_ID(13)>,
+				       <&dma0 1 AT91_DMA_CFG_PER_ID(14)>;
+				dma-names = "tx", "rx";
 				pinctrl-names = "default";
 				pinctrl-0 = <&pinctrl_ssc0_tx &pinctrl_ssc0_rx>;
 				status = "disabled";
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 122+ messages in thread

* [PATCH v3 5/7] ARM: AT91: DTS: sam9x5ek: add WM8731 codec
  2013-07-09 12:28   ` Richard Genoud
@ 2013-07-09 12:28     ` Richard Genoud
  -1 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09 12:28 UTC (permalink / raw)
  To: Mark Brown, Nicolas Ferre, Liam Girdwood
  Cc: Bo Shen, Lars-Peter Clausen, linux-arm-kernel, linux-kernel,
	alsa-devel, devicetree-discuss, Richard Genoud

The WM8731 codec on sam9x5ek board is on i2c, address 1A

Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
Acked-by: Mark Brown <broonie@linaro.org>
---
 arch/arm/boot/dts/at91sam9x5ek.dtsi |    5 +++++
 1 file changed, 5 insertions(+)

diff --git a/arch/arm/boot/dts/at91sam9x5ek.dtsi b/arch/arm/boot/dts/at91sam9x5ek.dtsi
index d107241..e6fb309 100644
--- a/arch/arm/boot/dts/at91sam9x5ek.dtsi
+++ b/arch/arm/boot/dts/at91sam9x5ek.dtsi
@@ -59,6 +59,11 @@
 
 			i2c0: i2c@f8010000 {
 				status = "okay";
+
+				wm8731: wm8731@1a {
+					compatible = "wm8731";
+					reg = <0x1a>;
+				};
 			};
 
 			pinctrl@fffff400 {
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 122+ messages in thread

* [PATCH v3 5/7] ARM: AT91: DTS: sam9x5ek: add WM8731 codec
@ 2013-07-09 12:28     ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09 12:28 UTC (permalink / raw)
  To: linux-arm-kernel

The WM8731 codec on sam9x5ek board is on i2c, address 1A

Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
Acked-by: Mark Brown <broonie@linaro.org>
---
 arch/arm/boot/dts/at91sam9x5ek.dtsi |    5 +++++
 1 file changed, 5 insertions(+)

diff --git a/arch/arm/boot/dts/at91sam9x5ek.dtsi b/arch/arm/boot/dts/at91sam9x5ek.dtsi
index d107241..e6fb309 100644
--- a/arch/arm/boot/dts/at91sam9x5ek.dtsi
+++ b/arch/arm/boot/dts/at91sam9x5ek.dtsi
@@ -59,6 +59,11 @@
 
 			i2c0: i2c at f8010000 {
 				status = "okay";
+
+				wm8731: wm8731 at 1a {
+					compatible = "wm8731";
+					reg = <0x1a>;
+				};
 			};
 
 			pinctrl at fffff400 {
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 122+ messages in thread

* [PATCH v3 6/7] ARM: AT91: DTS: sam9x5ek: add sound configuration
  2013-07-09 12:28   ` Richard Genoud
@ 2013-07-09 12:28     ` Richard Genoud
  -1 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09 12:28 UTC (permalink / raw)
  To: Mark Brown, Nicolas Ferre, Liam Girdwood
  Cc: Bo Shen, Lars-Peter Clausen, linux-arm-kernel, linux-kernel,
	alsa-devel, devicetree-discuss, Richard Genoud

The sam9x5ek board has 2 jacks:
headphone wired on RHPOUT/LHPOUT of the wm8731
line in wired on LLINEIN/RLINEIN of the wm8731

Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
---
 arch/arm/boot/dts/at91sam9x5ek.dtsi |   18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/arch/arm/boot/dts/at91sam9x5ek.dtsi b/arch/arm/boot/dts/at91sam9x5ek.dtsi
index e6fb309..2bf51cc 100644
--- a/arch/arm/boot/dts/at91sam9x5ek.dtsi
+++ b/arch/arm/boot/dts/at91sam9x5ek.dtsi
@@ -109,4 +109,22 @@
 			status = "okay";
 		};
 	};
+
+	sound {
+		compatible = "atmel,sam9x5-wm8731-audio";
+
+		atmel,model = "wm8731 @ AT91SAM9X5EK";
+
+		atmel,audio-routing =
+			"Headphone Jack", "RHPOUT",
+			"Headphone Jack", "LHPOUT",
+			"LLINEIN", "Line In Jack",
+			"RLINEIN", "Line In Jack";
+
+		atmel,ssc-controller = <&ssc0>;
+		atmel,audio-codec = <&wm8731>;
+		atmel,format = "i2s";
+		atmel,bitclock-master;
+		atmel,frame-master;
+	};
 };
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 122+ messages in thread

* [PATCH v3 6/7] ARM: AT91: DTS: sam9x5ek: add sound configuration
@ 2013-07-09 12:28     ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09 12:28 UTC (permalink / raw)
  To: linux-arm-kernel

The sam9x5ek board has 2 jacks:
headphone wired on RHPOUT/LHPOUT of the wm8731
line in wired on LLINEIN/RLINEIN of the wm8731

Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
---
 arch/arm/boot/dts/at91sam9x5ek.dtsi |   18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/arch/arm/boot/dts/at91sam9x5ek.dtsi b/arch/arm/boot/dts/at91sam9x5ek.dtsi
index e6fb309..2bf51cc 100644
--- a/arch/arm/boot/dts/at91sam9x5ek.dtsi
+++ b/arch/arm/boot/dts/at91sam9x5ek.dtsi
@@ -109,4 +109,22 @@
 			status = "okay";
 		};
 	};
+
+	sound {
+		compatible = "atmel,sam9x5-wm8731-audio";
+
+		atmel,model = "wm8731 @ AT91SAM9X5EK";
+
+		atmel,audio-routing =
+			"Headphone Jack", "RHPOUT",
+			"Headphone Jack", "LHPOUT",
+			"LLINEIN", "Line In Jack",
+			"RLINEIN", "Line In Jack";
+
+		atmel,ssc-controller = <&ssc0>;
+		atmel,audio-codec = <&wm8731>;
+		atmel,format = "i2s";
+		atmel,bitclock-master;
+		atmel,frame-master;
+	};
 };
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 122+ messages in thread

* [PATCH v3 7/7] ARM: AT91: DTS: sam9x5ek: enable SSC
  2013-07-09 12:28   ` Richard Genoud
@ 2013-07-09 12:28     ` Richard Genoud
  -1 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09 12:28 UTC (permalink / raw)
  To: Mark Brown, Nicolas Ferre, Liam Girdwood
  Cc: Bo Shen, Lars-Peter Clausen, linux-arm-kernel, linux-kernel,
	alsa-devel, devicetree-discuss, Richard Genoud

Enable the SSC needed for the WM8731 codec

Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
---
 arch/arm/boot/dts/at91sam9x5ek.dtsi |    4 ++++
 1 file changed, 4 insertions(+)

diff --git a/arch/arm/boot/dts/at91sam9x5ek.dtsi b/arch/arm/boot/dts/at91sam9x5ek.dtsi
index 2bf51cc..0534c58 100644
--- a/arch/arm/boot/dts/at91sam9x5ek.dtsi
+++ b/arch/arm/boot/dts/at91sam9x5ek.dtsi
@@ -95,6 +95,10 @@
 			watchdog@fffffe40 {
 				status = "okay";
 			};
+
+			ssc0: ssc@f0010000 {
+				status = "okay";
+			};
 		};
 
 		usb0: ohci@00600000 {
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 122+ messages in thread

* [PATCH v3 7/7] ARM: AT91: DTS: sam9x5ek: enable SSC
@ 2013-07-09 12:28     ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09 12:28 UTC (permalink / raw)
  To: linux-arm-kernel

Enable the SSC needed for the WM8731 codec

Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
---
 arch/arm/boot/dts/at91sam9x5ek.dtsi |    4 ++++
 1 file changed, 4 insertions(+)

diff --git a/arch/arm/boot/dts/at91sam9x5ek.dtsi b/arch/arm/boot/dts/at91sam9x5ek.dtsi
index 2bf51cc..0534c58 100644
--- a/arch/arm/boot/dts/at91sam9x5ek.dtsi
+++ b/arch/arm/boot/dts/at91sam9x5ek.dtsi
@@ -95,6 +95,10 @@
 			watchdog at fffffe40 {
 				status = "okay";
 			};
+
+			ssc0: ssc at f0010000 {
+				status = "okay";
+			};
 		};
 
 		usb0: ohci at 00600000 {
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 122+ messages in thread

* Re: [PATCH v3 3/7] Documentation: DT: update atmel SSC with DMA binding
  2013-07-09 12:28     ` Richard Genoud
@ 2013-07-09 13:19       ` Richard Genoud
  -1 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09 13:19 UTC (permalink / raw)
  To: Mark Brown, Nicolas Ferre, Liam Girdwood
  Cc: Bo Shen, Lars-Peter Clausen, linux-arm-kernel, linux-kernel,
	alsa-devel, devicetree-discuss, Richard Genoud

2013/7/9 Richard Genoud <richard.genoud@gmail.com>:
> As atmel-ssc can be used with DMA, the documentation should be updated.
> Also, a configuration DMA example is given.
>
> Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
> ---
>  .../devicetree/bindings/misc/atmel-ssc.txt         |   24 ++++++++++++++++++--
>  1 file changed, 22 insertions(+), 2 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/misc/atmel-ssc.txt b/Documentation/devicetree/bindings/misc/atmel-ssc.txt
> index 38e51ad..96958ca 100644
> --- a/Documentation/devicetree/bindings/misc/atmel-ssc.txt
> +++ b/Documentation/devicetree/bindings/misc/atmel-ssc.txt
> @@ -6,10 +6,30 @@ Required properties:
>         - atmel,at91sam9g45-ssc: support dma transfer
>  - reg: Should contain SSC registers location and length
>  - interrupts: Should contain SSC interrupt
> +For dma transfer:
> +- dmas: DMA specifier, consisting of a phandle to DMA controller node,
> +  the memory interface and SSC DMA channel ID (for tx and rx).
> +  See Documentation/devicetree/bindings/dma/atmel-dma.txt for details.
> +- dma-names: Must be "tx", "rx".
>
> -Example:
> +
> +Examples:
>  ssc0: ssc@fffbc000 {
>         compatible = "atmel,at91rm9200-ssc";
>         reg = <0xfffbc000 0x4000>;
> -       interrupts = <14 4 5>;
> +       interrupts = <14 IRQ_TYPE_LEVEL_HIGH 5>;
maybe I should not use macro in the documentation (not sure if I should or not).
>  };
> +
> +
> +ssc0: ssc@f0010000 {
> +      compatible = "atmel,at91sam9g45-ssc";
> +      reg = <0xf0010000 0x4000>;
> +      interrupts = <28 IRQ_TYPE_LEVEL_HIGH 5>;
> +      dmas = <&dma0 1 AT91_DMA_CFG_PER_ID(13)>,
> +            <&dma0 1 AT91_DMA_CFG_PER_ID(14)>;
same here
> +      dma-names = "tx", "rx";
> +      pinctrl-names = "default";
> +      pinctrl-0 = <&pinctrl_ssc0_tx &pinctrl_ssc0_rx>;
> +      status = "disabled";
> +};
> +
> --
> 1.7.10.4
>



-- 
for me, ck means con kolivas and not calvin klein... does it mean I'm a geek ?

^ permalink raw reply	[flat|nested] 122+ messages in thread

* [PATCH v3 3/7] Documentation: DT: update atmel SSC with DMA binding
@ 2013-07-09 13:19       ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09 13:19 UTC (permalink / raw)
  To: linux-arm-kernel

2013/7/9 Richard Genoud <richard.genoud@gmail.com>:
> As atmel-ssc can be used with DMA, the documentation should be updated.
> Also, a configuration DMA example is given.
>
> Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
> ---
>  .../devicetree/bindings/misc/atmel-ssc.txt         |   24 ++++++++++++++++++--
>  1 file changed, 22 insertions(+), 2 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/misc/atmel-ssc.txt b/Documentation/devicetree/bindings/misc/atmel-ssc.txt
> index 38e51ad..96958ca 100644
> --- a/Documentation/devicetree/bindings/misc/atmel-ssc.txt
> +++ b/Documentation/devicetree/bindings/misc/atmel-ssc.txt
> @@ -6,10 +6,30 @@ Required properties:
>         - atmel,at91sam9g45-ssc: support dma transfer
>  - reg: Should contain SSC registers location and length
>  - interrupts: Should contain SSC interrupt
> +For dma transfer:
> +- dmas: DMA specifier, consisting of a phandle to DMA controller node,
> +  the memory interface and SSC DMA channel ID (for tx and rx).
> +  See Documentation/devicetree/bindings/dma/atmel-dma.txt for details.
> +- dma-names: Must be "tx", "rx".
>
> -Example:
> +
> +Examples:
>  ssc0: ssc at fffbc000 {
>         compatible = "atmel,at91rm9200-ssc";
>         reg = <0xfffbc000 0x4000>;
> -       interrupts = <14 4 5>;
> +       interrupts = <14 IRQ_TYPE_LEVEL_HIGH 5>;
maybe I should not use macro in the documentation (not sure if I should or not).
>  };
> +
> +
> +ssc0: ssc at f0010000 {
> +      compatible = "atmel,at91sam9g45-ssc";
> +      reg = <0xf0010000 0x4000>;
> +      interrupts = <28 IRQ_TYPE_LEVEL_HIGH 5>;
> +      dmas = <&dma0 1 AT91_DMA_CFG_PER_ID(13)>,
> +            <&dma0 1 AT91_DMA_CFG_PER_ID(14)>;
same here
> +      dma-names = "tx", "rx";
> +      pinctrl-names = "default";
> +      pinctrl-0 = <&pinctrl_ssc0_tx &pinctrl_ssc0_rx>;
> +      status = "disabled";
> +};
> +
> --
> 1.7.10.4
>



-- 
for me, ck means con kolivas and not calvin klein... does it mean I'm a geek ?

^ permalink raw reply	[flat|nested] 122+ messages in thread

* Re: [PATCH v3 3/7] Documentation: DT: update atmel SSC with DMA binding
  2013-07-09 13:19       ` Richard Genoud
  (?)
@ 2013-07-09 13:20         ` Nicolas Ferre
  -1 siblings, 0 replies; 122+ messages in thread
From: Nicolas Ferre @ 2013-07-09 13:20 UTC (permalink / raw)
  To: Richard Genoud
  Cc: Mark Brown, Liam Girdwood, Bo Shen, Lars-Peter Clausen,
	linux-arm-kernel, linux-kernel, alsa-devel, devicetree-discuss

On 09/07/2013 15:19, Richard Genoud :
> 2013/7/9 Richard Genoud <richard.genoud@gmail.com>:
>> As atmel-ssc can be used with DMA, the documentation should be updated.
>> Also, a configuration DMA example is given.
>>
>> Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
>> ---
>>   .../devicetree/bindings/misc/atmel-ssc.txt         |   24 ++++++++++++++++++--
>>   1 file changed, 22 insertions(+), 2 deletions(-)
>>
>> diff --git a/Documentation/devicetree/bindings/misc/atmel-ssc.txt b/Documentation/devicetree/bindings/misc/atmel-ssc.txt
>> index 38e51ad..96958ca 100644
>> --- a/Documentation/devicetree/bindings/misc/atmel-ssc.txt
>> +++ b/Documentation/devicetree/bindings/misc/atmel-ssc.txt
>> @@ -6,10 +6,30 @@ Required properties:
>>          - atmel,at91sam9g45-ssc: support dma transfer
>>   - reg: Should contain SSC registers location and length
>>   - interrupts: Should contain SSC interrupt
>> +For dma transfer:
>> +- dmas: DMA specifier, consisting of a phandle to DMA controller node,
>> +  the memory interface and SSC DMA channel ID (for tx and rx).
>> +  See Documentation/devicetree/bindings/dma/atmel-dma.txt for details.
>> +- dma-names: Must be "tx", "rx".
>>
>> -Example:
>> +
>> +Examples:
>>   ssc0: ssc@fffbc000 {
>>          compatible = "atmel,at91rm9200-ssc";
>>          reg = <0xfffbc000 0x4000>;
>> -       interrupts = <14 4 5>;
>> +       interrupts = <14 IRQ_TYPE_LEVEL_HIGH 5>;
> maybe I should not use macro in the documentation (not sure if I should or not).

absolutely.

>>   };
>> +
>> +
>> +ssc0: ssc@f0010000 {
>> +      compatible = "atmel,at91sam9g45-ssc";
>> +      reg = <0xf0010000 0x4000>;
>> +      interrupts = <28 IRQ_TYPE_LEVEL_HIGH 5>;
>> +      dmas = <&dma0 1 AT91_DMA_CFG_PER_ID(13)>,
>> +            <&dma0 1 AT91_DMA_CFG_PER_ID(14)>;
> same here
>> +      dma-names = "tx", "rx";
>> +      pinctrl-names = "default";
>> +      pinctrl-0 = <&pinctrl_ssc0_tx &pinctrl_ssc0_rx>;
>> +      status = "disabled";
>> +};
>> +
>> --
>> 1.7.10.4
>>
>
>
>


-- 
Nicolas Ferre

^ permalink raw reply	[flat|nested] 122+ messages in thread

* Re: [PATCH v3 3/7] Documentation: DT: update atmel SSC with DMA binding
@ 2013-07-09 13:20         ` Nicolas Ferre
  0 siblings, 0 replies; 122+ messages in thread
From: Nicolas Ferre @ 2013-07-09 13:20 UTC (permalink / raw)
  To: Richard Genoud
  Cc: Mark Brown, Liam Girdwood, Bo Shen, Lars-Peter Clausen,
	linux-arm-kernel, linux-kernel, alsa-devel, devicetree-discuss

On 09/07/2013 15:19, Richard Genoud :
> 2013/7/9 Richard Genoud <richard.genoud@gmail.com>:
>> As atmel-ssc can be used with DMA, the documentation should be updated.
>> Also, a configuration DMA example is given.
>>
>> Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
>> ---
>>   .../devicetree/bindings/misc/atmel-ssc.txt         |   24 ++++++++++++++++++--
>>   1 file changed, 22 insertions(+), 2 deletions(-)
>>
>> diff --git a/Documentation/devicetree/bindings/misc/atmel-ssc.txt b/Documentation/devicetree/bindings/misc/atmel-ssc.txt
>> index 38e51ad..96958ca 100644
>> --- a/Documentation/devicetree/bindings/misc/atmel-ssc.txt
>> +++ b/Documentation/devicetree/bindings/misc/atmel-ssc.txt
>> @@ -6,10 +6,30 @@ Required properties:
>>          - atmel,at91sam9g45-ssc: support dma transfer
>>   - reg: Should contain SSC registers location and length
>>   - interrupts: Should contain SSC interrupt
>> +For dma transfer:
>> +- dmas: DMA specifier, consisting of a phandle to DMA controller node,
>> +  the memory interface and SSC DMA channel ID (for tx and rx).
>> +  See Documentation/devicetree/bindings/dma/atmel-dma.txt for details.
>> +- dma-names: Must be "tx", "rx".
>>
>> -Example:
>> +
>> +Examples:
>>   ssc0: ssc@fffbc000 {
>>          compatible = "atmel,at91rm9200-ssc";
>>          reg = <0xfffbc000 0x4000>;
>> -       interrupts = <14 4 5>;
>> +       interrupts = <14 IRQ_TYPE_LEVEL_HIGH 5>;
> maybe I should not use macro in the documentation (not sure if I should or not).

absolutely.

>>   };
>> +
>> +
>> +ssc0: ssc@f0010000 {
>> +      compatible = "atmel,at91sam9g45-ssc";
>> +      reg = <0xf0010000 0x4000>;
>> +      interrupts = <28 IRQ_TYPE_LEVEL_HIGH 5>;
>> +      dmas = <&dma0 1 AT91_DMA_CFG_PER_ID(13)>,
>> +            <&dma0 1 AT91_DMA_CFG_PER_ID(14)>;
> same here
>> +      dma-names = "tx", "rx";
>> +      pinctrl-names = "default";
>> +      pinctrl-0 = <&pinctrl_ssc0_tx &pinctrl_ssc0_rx>;
>> +      status = "disabled";
>> +};
>> +
>> --
>> 1.7.10.4
>>
>
>
>


-- 
Nicolas Ferre

^ permalink raw reply	[flat|nested] 122+ messages in thread

* [PATCH v3 3/7] Documentation: DT: update atmel SSC with DMA binding
@ 2013-07-09 13:20         ` Nicolas Ferre
  0 siblings, 0 replies; 122+ messages in thread
From: Nicolas Ferre @ 2013-07-09 13:20 UTC (permalink / raw)
  To: linux-arm-kernel

On 09/07/2013 15:19, Richard Genoud :
> 2013/7/9 Richard Genoud <richard.genoud@gmail.com>:
>> As atmel-ssc can be used with DMA, the documentation should be updated.
>> Also, a configuration DMA example is given.
>>
>> Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
>> ---
>>   .../devicetree/bindings/misc/atmel-ssc.txt         |   24 ++++++++++++++++++--
>>   1 file changed, 22 insertions(+), 2 deletions(-)
>>
>> diff --git a/Documentation/devicetree/bindings/misc/atmel-ssc.txt b/Documentation/devicetree/bindings/misc/atmel-ssc.txt
>> index 38e51ad..96958ca 100644
>> --- a/Documentation/devicetree/bindings/misc/atmel-ssc.txt
>> +++ b/Documentation/devicetree/bindings/misc/atmel-ssc.txt
>> @@ -6,10 +6,30 @@ Required properties:
>>          - atmel,at91sam9g45-ssc: support dma transfer
>>   - reg: Should contain SSC registers location and length
>>   - interrupts: Should contain SSC interrupt
>> +For dma transfer:
>> +- dmas: DMA specifier, consisting of a phandle to DMA controller node,
>> +  the memory interface and SSC DMA channel ID (for tx and rx).
>> +  See Documentation/devicetree/bindings/dma/atmel-dma.txt for details.
>> +- dma-names: Must be "tx", "rx".
>>
>> -Example:
>> +
>> +Examples:
>>   ssc0: ssc at fffbc000 {
>>          compatible = "atmel,at91rm9200-ssc";
>>          reg = <0xfffbc000 0x4000>;
>> -       interrupts = <14 4 5>;
>> +       interrupts = <14 IRQ_TYPE_LEVEL_HIGH 5>;
> maybe I should not use macro in the documentation (not sure if I should or not).

absolutely.

>>   };
>> +
>> +
>> +ssc0: ssc at f0010000 {
>> +      compatible = "atmel,at91sam9g45-ssc";
>> +      reg = <0xf0010000 0x4000>;
>> +      interrupts = <28 IRQ_TYPE_LEVEL_HIGH 5>;
>> +      dmas = <&dma0 1 AT91_DMA_CFG_PER_ID(13)>,
>> +            <&dma0 1 AT91_DMA_CFG_PER_ID(14)>;
> same here
>> +      dma-names = "tx", "rx";
>> +      pinctrl-names = "default";
>> +      pinctrl-0 = <&pinctrl_ssc0_tx &pinctrl_ssc0_rx>;
>> +      status = "disabled";
>> +};
>> +
>> --
>> 1.7.10.4
>>
>
>
>


-- 
Nicolas Ferre

^ permalink raw reply	[flat|nested] 122+ messages in thread

* Re: [PATCH v3 3/7] Documentation: DT: update atmel SSC with DMA binding
  2013-07-09 13:20         ` Nicolas Ferre
@ 2013-07-09 13:31           ` Richard Genoud
  -1 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09 13:31 UTC (permalink / raw)
  To: Nicolas Ferre
  Cc: Mark Brown, Liam Girdwood, Bo Shen, Lars-Peter Clausen,
	linux-arm-kernel, linux-kernel, alsa-devel, devicetree-discuss

2013/7/9 Nicolas Ferre <nicolas.ferre@atmel.com>:
> On 09/07/2013 15:19, Richard Genoud :
>
>> 2013/7/9 Richard Genoud <richard.genoud@gmail.com>:
>>>
>>> As atmel-ssc can be used with DMA, the documentation should be updated.
>>> Also, a configuration DMA example is given.
>>>
>>> Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
>>> ---
>>>   .../devicetree/bindings/misc/atmel-ssc.txt         |   24
>>> ++++++++++++++++++--
>>>   1 file changed, 22 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/Documentation/devicetree/bindings/misc/atmel-ssc.txt
>>> b/Documentation/devicetree/bindings/misc/atmel-ssc.txt
>>> index 38e51ad..96958ca 100644
>>> --- a/Documentation/devicetree/bindings/misc/atmel-ssc.txt
>>> +++ b/Documentation/devicetree/bindings/misc/atmel-ssc.txt
>>> @@ -6,10 +6,30 @@ Required properties:
>>>          - atmel,at91sam9g45-ssc: support dma transfer
>>>   - reg: Should contain SSC registers location and length
>>>   - interrupts: Should contain SSC interrupt
>>> +For dma transfer:
>>> +- dmas: DMA specifier, consisting of a phandle to DMA controller node,
>>> +  the memory interface and SSC DMA channel ID (for tx and rx).
>>> +  See Documentation/devicetree/bindings/dma/atmel-dma.txt for details.
>>> +- dma-names: Must be "tx", "rx".
>>>
>>> -Example:
>>> +
>>> +Examples:
>>>   ssc0: ssc@fffbc000 {
>>>          compatible = "atmel,at91rm9200-ssc";
>>>          reg = <0xfffbc000 0x4000>;
>>> -       interrupts = <14 4 5>;
>>> +       interrupts = <14 IRQ_TYPE_LEVEL_HIGH 5>;
>>
>> maybe I should not use macro in the documentation (not sure if I should or
>> not).
>
>
> absolutely.
ok, thanks, changing that in next version.

^ permalink raw reply	[flat|nested] 122+ messages in thread

* [PATCH v3 3/7] Documentation: DT: update atmel SSC with DMA binding
@ 2013-07-09 13:31           ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09 13:31 UTC (permalink / raw)
  To: linux-arm-kernel

2013/7/9 Nicolas Ferre <nicolas.ferre@atmel.com>:
> On 09/07/2013 15:19, Richard Genoud :
>
>> 2013/7/9 Richard Genoud <richard.genoud@gmail.com>:
>>>
>>> As atmel-ssc can be used with DMA, the documentation should be updated.
>>> Also, a configuration DMA example is given.
>>>
>>> Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
>>> ---
>>>   .../devicetree/bindings/misc/atmel-ssc.txt         |   24
>>> ++++++++++++++++++--
>>>   1 file changed, 22 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/Documentation/devicetree/bindings/misc/atmel-ssc.txt
>>> b/Documentation/devicetree/bindings/misc/atmel-ssc.txt
>>> index 38e51ad..96958ca 100644
>>> --- a/Documentation/devicetree/bindings/misc/atmel-ssc.txt
>>> +++ b/Documentation/devicetree/bindings/misc/atmel-ssc.txt
>>> @@ -6,10 +6,30 @@ Required properties:
>>>          - atmel,at91sam9g45-ssc: support dma transfer
>>>   - reg: Should contain SSC registers location and length
>>>   - interrupts: Should contain SSC interrupt
>>> +For dma transfer:
>>> +- dmas: DMA specifier, consisting of a phandle to DMA controller node,
>>> +  the memory interface and SSC DMA channel ID (for tx and rx).
>>> +  See Documentation/devicetree/bindings/dma/atmel-dma.txt for details.
>>> +- dma-names: Must be "tx", "rx".
>>>
>>> -Example:
>>> +
>>> +Examples:
>>>   ssc0: ssc at fffbc000 {
>>>          compatible = "atmel,at91rm9200-ssc";
>>>          reg = <0xfffbc000 0x4000>;
>>> -       interrupts = <14 4 5>;
>>> +       interrupts = <14 IRQ_TYPE_LEVEL_HIGH 5>;
>>
>> maybe I should not use macro in the documentation (not sure if I should or
>> not).
>
>
> absolutely.
ok, thanks, changing that in next version.

^ permalink raw reply	[flat|nested] 122+ messages in thread

* [PATCH v4 0/7] Sound support for at91sam9x5-wm8731 based boards
  2013-07-09 12:28   ` Richard Genoud
@ 2013-07-09 14:25     ` Richard Genoud
  -1 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09 14:25 UTC (permalink / raw)
  To: Mark Brown, Nicolas Ferre, Liam Girdwood, Uwe Kleine-König
  Cc: Bo Shen, Lars-Peter Clausen, linux-arm-kernel, linux-kernel,
	alsa-devel, devicetree-discuss, Richard Genoud

[I've just seen that I forgot to cc Uwe to the cover letter, sorry for that.]

Hi,

This patchset add sound on the at91sam9x5ek board.
It's based on Nicolas Ferre's work in the 2.6.39 atmel patch for sam9x5:
https://github.com/linux4sam/linux-at91/commit/0aa157c9e71ccccf3abc30fa37eb5c95b392978d

It needs Bo Chen's patchset on the generic dmaengine (topic/atmel branch
on Mark's sound tree) and the SSC interrupts disabled (cf
http://www.spinics.net/lists/arm-kernel/msg256901.html)

Outstanding issue:
If this machine driver will support more SoCs maybe we should name it differently.


It has been tested on at91sam9g35ek, and should work on g15, g25, x25 and x35 also.

patches applies on next-20130708

[I let the original signed-off from Nicolas and Uwe in place, I don't
know if I should replace them by something like "originaly-signed-off-by"
since the code has been changed.]

Changes from v3:
 * Remove the use of macros in device tree documentation.

Changes from v2:
 * Change atmel,sam9x5-audio-wm8731 to atmel,sam9x5-wm8731-audio for
consistency with sam9g20 machine driver.
 * Use the snd_pcm_hw_constraint() API as suggested by Mark and Lars-Peter.
 * Remove the unnecessary snd_soc_dapm_sync() call as Lars-Peter suggested.
 * Add documentation for machine driver DT binding.
 * Update atmel-ssc DT binding documentation.
 * Add GPL license instead of just the "GPL" word (hope that's ok !)

Changes from v1-RFC:
 * drop patches on SSC since Bo Chen already did the work
 * reorder patches to have the machine driver first
 * drop code already handled by the ASoC framework
 * drop unneeded SND_ATMEL_SOC_PDC config selection
 * use static snd_soc_card and  snd_soc_dai_link structures.

Best regards,
Richard.

Nicolas Ferre (1):
  sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards

Richard Genoud (6):
  Documentation: DT: add sam9x5ek-wm8731 machine driver
  Documentation: DT: update atmel SSC with DMA binding
  ARM: AT91: DTS: sam9x5: add SSC DMA parameters
  ARM: AT91: DTS: sam9x5ek: add WM8731 codec
  ARM: AT91: DTS: sam9x5ek: add sound configuration
  ARM: AT91: DTS: sam9x5ek: enable SSC

 .../devicetree/bindings/misc/atmel-ssc.txt         |   20 +-
 .../bindings/sound/atmel-sam9x5-wm8731-audio.txt   |   30 +++
 arch/arm/boot/dts/at91sam9x5.dtsi                  |    3 +
 arch/arm/boot/dts/at91sam9x5ek.dtsi                |   27 +++
 sound/soc/atmel/Kconfig                            |   10 +
 sound/soc/atmel/Makefile                           |    2 +
 sound/soc/atmel/sam9x5_wm8731.c                    |  238 ++++++++++++++++++++
 7 files changed, 329 insertions(+), 1 deletion(-)
 create mode 100644 Documentation/devicetree/bindings/sound/atmel-sam9x5-wm8731-audio.txt
 create mode 100644 sound/soc/atmel/sam9x5_wm8731.c

-- 
1.7.10.4



^ permalink raw reply	[flat|nested] 122+ messages in thread

* [PATCH v4 0/7] Sound support for at91sam9x5-wm8731 based boards
@ 2013-07-09 14:25     ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09 14:25 UTC (permalink / raw)
  To: linux-arm-kernel

[I've just seen that I forgot to cc Uwe to the cover letter, sorry for that.]

Hi,

This patchset add sound on the at91sam9x5ek board.
It's based on Nicolas Ferre's work in the 2.6.39 atmel patch for sam9x5:
https://github.com/linux4sam/linux-at91/commit/0aa157c9e71ccccf3abc30fa37eb5c95b392978d

It needs Bo Chen's patchset on the generic dmaengine (topic/atmel branch
on Mark's sound tree) and the SSC interrupts disabled (cf
http://www.spinics.net/lists/arm-kernel/msg256901.html)

Outstanding issue:
If this machine driver will support more SoCs maybe we should name it differently.


It has been tested on at91sam9g35ek, and should work on g15, g25, x25 and x35 also.

patches applies on next-20130708

[I let the original signed-off from Nicolas and Uwe in place, I don't
know if I should replace them by something like "originaly-signed-off-by"
since the code has been changed.]

Changes from v3:
 * Remove the use of macros in device tree documentation.

Changes from v2:
 * Change atmel,sam9x5-audio-wm8731 to atmel,sam9x5-wm8731-audio for
consistency with sam9g20 machine driver.
 * Use the snd_pcm_hw_constraint() API as suggested by Mark and Lars-Peter.
 * Remove the unnecessary snd_soc_dapm_sync() call as Lars-Peter suggested.
 * Add documentation for machine driver DT binding.
 * Update atmel-ssc DT binding documentation.
 * Add GPL license instead of just the "GPL" word (hope that's ok !)

Changes from v1-RFC:
 * drop patches on SSC since Bo Chen already did the work
 * reorder patches to have the machine driver first
 * drop code already handled by the ASoC framework
 * drop unneeded SND_ATMEL_SOC_PDC config selection
 * use static snd_soc_card and  snd_soc_dai_link structures.

Best regards,
Richard.

Nicolas Ferre (1):
  sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards

Richard Genoud (6):
  Documentation: DT: add sam9x5ek-wm8731 machine driver
  Documentation: DT: update atmel SSC with DMA binding
  ARM: AT91: DTS: sam9x5: add SSC DMA parameters
  ARM: AT91: DTS: sam9x5ek: add WM8731 codec
  ARM: AT91: DTS: sam9x5ek: add sound configuration
  ARM: AT91: DTS: sam9x5ek: enable SSC

 .../devicetree/bindings/misc/atmel-ssc.txt         |   20 +-
 .../bindings/sound/atmel-sam9x5-wm8731-audio.txt   |   30 +++
 arch/arm/boot/dts/at91sam9x5.dtsi                  |    3 +
 arch/arm/boot/dts/at91sam9x5ek.dtsi                |   27 +++
 sound/soc/atmel/Kconfig                            |   10 +
 sound/soc/atmel/Makefile                           |    2 +
 sound/soc/atmel/sam9x5_wm8731.c                    |  238 ++++++++++++++++++++
 7 files changed, 329 insertions(+), 1 deletion(-)
 create mode 100644 Documentation/devicetree/bindings/sound/atmel-sam9x5-wm8731-audio.txt
 create mode 100644 sound/soc/atmel/sam9x5_wm8731.c

-- 
1.7.10.4

^ permalink raw reply	[flat|nested] 122+ messages in thread

* [PATCH v4 1/7] sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards
  2013-07-09 14:25     ` Richard Genoud
@ 2013-07-09 14:25       ` Richard Genoud
  -1 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09 14:25 UTC (permalink / raw)
  To: Mark Brown, Nicolas Ferre, Liam Girdwood, Uwe Kleine-König
  Cc: Bo Shen, Lars-Peter Clausen, linux-arm-kernel, linux-kernel,
	alsa-devel, devicetree-discuss, Richard Genoud

From: Nicolas Ferre <nicolas.ferre@atmel.com>

Description of the Asoc machine driver for an at91sam9x5 based board
with a wm8731 audio DAC. Wm8731 is clocked by a crystal and used as a
master on the SSC/I2S interface. Its connections are a headphone jack
and an Line input jack.

[Richard: this is based on an old patch from Nicolas that I forward
ported and reworked to use only device tree]

Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
---
 sound/soc/atmel/Kconfig         |   10 ++
 sound/soc/atmel/Makefile        |    2 +
 sound/soc/atmel/sam9x5_wm8731.c |  238 +++++++++++++++++++++++++++++++++++++++
 3 files changed, 250 insertions(+)
 create mode 100644 sound/soc/atmel/sam9x5_wm8731.c

diff --git a/sound/soc/atmel/Kconfig b/sound/soc/atmel/Kconfig
index 1c0b185..9eb8c49 100644
--- a/sound/soc/atmel/Kconfig
+++ b/sound/soc/atmel/Kconfig
@@ -33,6 +33,16 @@ config SND_AT91_SOC_SAM9G20_WM8731
 	  Say Y if you want to add support for SoC audio on WM8731-based
 	  AT91sam9g20 evaluation board.
 
+config SND_AT91_SOC_SAM9X5_WM8731
+	tristate "SoC Audio support for WM8731-based at91sam9x5 board"
+	depends on ATMEL_SSC && SND_ATMEL_SOC && SOC_AT91SAM9X5
+	select SND_ATMEL_SOC_SSC
+	select SND_ATMEL_SOC_DMA
+	select SND_SOC_WM8731
+	help
+	  Say Y if you want to add support for audio SoC on an
+	  at91sam9x5 based board that is using WM8731 codec.
+
 config SND_AT91_SOC_AFEB9260
 	tristate "SoC Audio support for AFEB9260 board"
 	depends on ARCH_AT91 && ATMEL_SSC && ARCH_AT91 && MACH_AFEB9260 && SND_ATMEL_SOC
diff --git a/sound/soc/atmel/Makefile b/sound/soc/atmel/Makefile
index 41967cc..7784c09 100644
--- a/sound/soc/atmel/Makefile
+++ b/sound/soc/atmel/Makefile
@@ -11,6 +11,8 @@ obj-$(CONFIG_SND_ATMEL_SOC_SSC) += snd-soc-atmel_ssc_dai.o
 
 # AT91 Machine Support
 snd-soc-sam9g20-wm8731-objs := sam9g20_wm8731.o
+snd-soc-sam9x5-wm8731-objs := sam9x5_wm8731.o
 
 obj-$(CONFIG_SND_AT91_SOC_SAM9G20_WM8731) += snd-soc-sam9g20-wm8731.o
+obj-$(CONFIG_SND_AT91_SOC_SAM9X5_WM8731) += snd-soc-sam9x5-wm8731.o
 obj-$(CONFIG_SND_AT91_SOC_AFEB9260) += snd-soc-afeb9260.o
diff --git a/sound/soc/atmel/sam9x5_wm8731.c b/sound/soc/atmel/sam9x5_wm8731.c
new file mode 100644
index 0000000..c56e36b
--- /dev/null
+++ b/sound/soc/atmel/sam9x5_wm8731.c
@@ -0,0 +1,238 @@
+/*
+ * sam9x5_wm8731   --	SoC audio for AT91SAM9X5-based boards
+ *			that are using WM8731 as codec.
+ *
+ *  Copyright (C) 2011 Atmel,
+ *		  Nicolas Ferre <nicolas.ferre@atmel.com>
+ *
+ *  Copyright (C) 2013 Paratronic,
+ *		  Richard Genoud <richard.genoud@gmail.com>
+ *
+ * Based on sam9g20_wm8731.c by:
+ * Sedji Gaouaou <sedji.gaouaou@atmel.com>
+ *
+ *  This program is free software; you can redistribute  it and/or modify it
+ *  under  the terms of  the GNU General  Public License as published by the
+ *  Free Software Foundation;  either version 2 of the  License, or (at your
+ *  option) any later version.
+ *
+ */
+
+#include <linux/module.h>
+#include <linux/moduleparam.h>
+#include <linux/kernel.h>
+#include <linux/clk.h>
+#include <linux/timer.h>
+#include <linux/interrupt.h>
+#include <linux/platform_device.h>
+#include <linux/i2c.h>
+
+#include <linux/atmel-ssc.h>
+
+#include <sound/core.h>
+#include <sound/pcm.h>
+#include <sound/pcm_params.h>
+#include <sound/soc.h>
+
+#include <asm/mach-types.h>
+#include <mach/hardware.h>
+#include <mach/gpio.h>
+
+#include "../codecs/wm8731.h"
+#include "atmel-pcm.h"
+#include "atmel_ssc_dai.h"
+
+#define MCLK_RATE 12288000
+
+#define DRV_NAME "sam9x5-snd-wm8731"
+
+/*
+ * Authorized rates are:
+ * Rate = MCLK_RATE / (n * 2)
+ * Where n is in [1..4095]
+ * (cf register SSC_CMR)
+ */
+static unsigned int rates[] = {
+	8000,
+	16000,
+	32000,
+	48000,
+	64000,
+	96000,
+};
+
+static struct snd_pcm_hw_constraint_list hw_rates = {
+	.count = ARRAY_SIZE(rates),
+	.list = rates,
+};
+
+/*
+ * Logic for a wm8731 as connected on a at91sam9x5 based board.
+ */
+static int at91sam9x5ek_wm8731_init(struct snd_soc_pcm_runtime *rtd)
+{
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct device *dev = rtd->dev;
+	int ret;
+
+	dev_dbg(dev, "ASoC: %s called\n", __func__);
+
+	/* set the codec system clock for DAC and ADC */
+	ret = snd_soc_dai_set_sysclk(codec_dai, WM8731_SYSCLK_XTAL,
+				     MCLK_RATE, SND_SOC_CLOCK_IN);
+	if (ret < 0) {
+		dev_err(dev, "ASoC: Failed to set WM8731 SYSCLK: %d\n", ret);
+		return ret;
+	}
+
+	return 0;
+}
+
+static int sam9x5ek_wm8731_startup(struct snd_pcm_substream *substream)
+{
+	struct snd_pcm_runtime *runtime = substream->runtime;
+
+	runtime->hw.rate_min = hw_rates.list[0];
+	runtime->hw.rate_max = hw_rates.list[hw_rates.count - 1];
+	runtime->hw.rates = SNDRV_PCM_RATE_KNOT;
+
+	return snd_pcm_hw_constraint_list(runtime, 0, SNDRV_PCM_HW_PARAM_RATE,
+					  &hw_rates);
+}
+
+/*
+ * Audio paths on at91sam9x5ek board:
+ *
+ *  |A| ------------> |      | ---R----> Headphone Jack
+ *  |T| <----\        |  WM  | ---L--/
+ *  |9| ---> CLK <--> | 8731 | <--R----- Line In Jack
+ *  |1| <------------ |      | <--L--/
+ */
+static const struct snd_soc_dapm_widget at91sam9x5ek_dapm_widgets[] = {
+	SND_SOC_DAPM_HP("Headphone Jack", NULL),
+	SND_SOC_DAPM_LINE("Line In Jack", NULL),
+};
+
+static struct snd_soc_ops sam9x5ek_wm8731_ops = {
+	.startup = sam9x5ek_wm8731_startup,
+};
+
+static struct snd_soc_dai_link at91sam9x5ek_dai = {
+	.name = "WM8731",
+	.stream_name = "WM8731 PCM",
+	.codec_dai_name = "wm8731-hifi",
+	.init = at91sam9x5ek_wm8731_init,
+	.ops = &sam9x5ek_wm8731_ops,
+};
+
+static struct snd_soc_card snd_soc_at91sam9x5ek = {
+	.owner = THIS_MODULE,
+	.dai_link = &at91sam9x5ek_dai,
+	.num_links = 1,
+	.dapm_widgets = at91sam9x5ek_dapm_widgets,
+	.num_dapm_widgets = ARRAY_SIZE(at91sam9x5ek_dapm_widgets),
+};
+
+static int sam9x5_wm8731_driver_probe(struct platform_device *pdev)
+{
+	struct device_node *np = pdev->dev.of_node;
+	struct device_node *codec_np, *cpu_np;
+	int ret;
+
+	if (!np) {
+		dev_err(&pdev->dev, "No device node supplied\n");
+		return -EINVAL;
+	}
+
+	ret = atmel_ssc_set_audio(0);
+	if (ret != 0) {
+		dev_err(&pdev->dev,
+			"ASoC: Failed to set SSC 0 for audio: %d\n", ret);
+		return ret;
+	}
+
+	snd_soc_at91sam9x5ek.dev = &pdev->dev;
+
+	ret = snd_soc_of_parse_card_name(&snd_soc_at91sam9x5ek, "atmel,model");
+	if (ret)
+		goto out;
+
+	ret = snd_soc_of_parse_audio_routing(&snd_soc_at91sam9x5ek,
+					     "atmel,audio-routing");
+	if (ret)
+		goto out;
+
+	codec_np = of_parse_phandle(np, "atmel,audio-codec", 0);
+	if (!codec_np) {
+		dev_err(&pdev->dev, "codec info missing\n");
+		ret = -EINVAL;
+		goto out;
+	}
+
+	at91sam9x5ek_dai.codec_of_node = codec_np;
+
+	cpu_np = of_parse_phandle(np, "atmel,ssc-controller", 0);
+	if (!cpu_np) {
+		dev_err(&pdev->dev, "ssc controller node missing\n");
+		ret = -EINVAL;
+		goto out;
+	}
+	at91sam9x5ek_dai.cpu_of_node = cpu_np;
+	at91sam9x5ek_dai.platform_of_node = cpu_np;
+
+	of_node_put(codec_np);
+	of_node_put(cpu_np);
+
+	at91sam9x5ek_dai.dai_fmt = snd_soc_of_parse_daifmt(np, "atmel,");
+
+	ret = snd_soc_register_card(&snd_soc_at91sam9x5ek);
+	if (ret) {
+		dev_err(&pdev->dev,
+			"ASoC: Platform device allocation failed\n");
+		goto out;
+	}
+
+	platform_set_drvdata(pdev, &snd_soc_at91sam9x5ek);
+
+	dev_dbg(&pdev->dev, "ASoC: %s ok\n", __func__);
+
+	return ret;
+
+out:
+	atmel_ssc_put_audio(0);
+	return ret;
+}
+
+static int sam9x5_wm8731_driver_remove(struct platform_device *pdev)
+{
+	struct snd_soc_card *card = platform_get_drvdata(pdev);
+
+	snd_soc_unregister_card(card);
+	atmel_ssc_put_audio(0);
+
+	return 0;
+}
+
+static const struct of_device_id sam9x5_wm8731_of_match[] = {
+	{ .compatible = "atmel,sam9x5-wm8731-audio", },
+	{},
+};
+MODULE_DEVICE_TABLE(of, sam9x5_wm8731_of_match);
+
+static struct platform_driver sam9x5_wm8731_driver = {
+	.driver = {
+		.name = DRV_NAME,
+		.owner = THIS_MODULE,
+		.of_match_table = of_match_ptr(sam9x5_wm8731_of_match),
+	},
+	.probe = sam9x5_wm8731_driver_probe,
+	.remove = sam9x5_wm8731_driver_remove,
+};
+module_platform_driver(sam9x5_wm8731_driver);
+
+/* Module information */
+MODULE_AUTHOR("Nicolas Ferre <nicolas.ferre@atmel.com>");
+MODULE_AUTHOR("Richard Genoud <richard.genoud@gmail.com>");
+MODULE_DESCRIPTION("ALSA SoC machine driver for AT91SAM9x5 - WM8731");
+MODULE_LICENSE("GPL");
+MODULE_ALIAS("platform:" DRV_NAME);
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 122+ messages in thread

* [PATCH v4 1/7] sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards
@ 2013-07-09 14:25       ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09 14:25 UTC (permalink / raw)
  To: linux-arm-kernel

From: Nicolas Ferre <nicolas.ferre@atmel.com>

Description of the Asoc machine driver for an at91sam9x5 based board
with a wm8731 audio DAC. Wm8731 is clocked by a crystal and used as a
master on the SSC/I2S interface. Its connections are a headphone jack
and an Line input jack.

[Richard: this is based on an old patch from Nicolas that I forward
ported and reworked to use only device tree]

Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Signed-off-by: Uwe Kleine-K?nig <u.kleine-koenig@pengutronix.de>
Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
---
 sound/soc/atmel/Kconfig         |   10 ++
 sound/soc/atmel/Makefile        |    2 +
 sound/soc/atmel/sam9x5_wm8731.c |  238 +++++++++++++++++++++++++++++++++++++++
 3 files changed, 250 insertions(+)
 create mode 100644 sound/soc/atmel/sam9x5_wm8731.c

diff --git a/sound/soc/atmel/Kconfig b/sound/soc/atmel/Kconfig
index 1c0b185..9eb8c49 100644
--- a/sound/soc/atmel/Kconfig
+++ b/sound/soc/atmel/Kconfig
@@ -33,6 +33,16 @@ config SND_AT91_SOC_SAM9G20_WM8731
 	  Say Y if you want to add support for SoC audio on WM8731-based
 	  AT91sam9g20 evaluation board.
 
+config SND_AT91_SOC_SAM9X5_WM8731
+	tristate "SoC Audio support for WM8731-based at91sam9x5 board"
+	depends on ATMEL_SSC && SND_ATMEL_SOC && SOC_AT91SAM9X5
+	select SND_ATMEL_SOC_SSC
+	select SND_ATMEL_SOC_DMA
+	select SND_SOC_WM8731
+	help
+	  Say Y if you want to add support for audio SoC on an
+	  at91sam9x5 based board that is using WM8731 codec.
+
 config SND_AT91_SOC_AFEB9260
 	tristate "SoC Audio support for AFEB9260 board"
 	depends on ARCH_AT91 && ATMEL_SSC && ARCH_AT91 && MACH_AFEB9260 && SND_ATMEL_SOC
diff --git a/sound/soc/atmel/Makefile b/sound/soc/atmel/Makefile
index 41967cc..7784c09 100644
--- a/sound/soc/atmel/Makefile
+++ b/sound/soc/atmel/Makefile
@@ -11,6 +11,8 @@ obj-$(CONFIG_SND_ATMEL_SOC_SSC) += snd-soc-atmel_ssc_dai.o
 
 # AT91 Machine Support
 snd-soc-sam9g20-wm8731-objs := sam9g20_wm8731.o
+snd-soc-sam9x5-wm8731-objs := sam9x5_wm8731.o
 
 obj-$(CONFIG_SND_AT91_SOC_SAM9G20_WM8731) += snd-soc-sam9g20-wm8731.o
+obj-$(CONFIG_SND_AT91_SOC_SAM9X5_WM8731) += snd-soc-sam9x5-wm8731.o
 obj-$(CONFIG_SND_AT91_SOC_AFEB9260) += snd-soc-afeb9260.o
diff --git a/sound/soc/atmel/sam9x5_wm8731.c b/sound/soc/atmel/sam9x5_wm8731.c
new file mode 100644
index 0000000..c56e36b
--- /dev/null
+++ b/sound/soc/atmel/sam9x5_wm8731.c
@@ -0,0 +1,238 @@
+/*
+ * sam9x5_wm8731   --	SoC audio for AT91SAM9X5-based boards
+ *			that are using WM8731 as codec.
+ *
+ *  Copyright (C) 2011 Atmel,
+ *		  Nicolas Ferre <nicolas.ferre@atmel.com>
+ *
+ *  Copyright (C) 2013 Paratronic,
+ *		  Richard Genoud <richard.genoud@gmail.com>
+ *
+ * Based on sam9g20_wm8731.c by:
+ * Sedji Gaouaou <sedji.gaouaou@atmel.com>
+ *
+ *  This program is free software; you can redistribute  it and/or modify it
+ *  under  the terms of  the GNU General  Public License as published by the
+ *  Free Software Foundation;  either version 2 of the  License, or (at your
+ *  option) any later version.
+ *
+ */
+
+#include <linux/module.h>
+#include <linux/moduleparam.h>
+#include <linux/kernel.h>
+#include <linux/clk.h>
+#include <linux/timer.h>
+#include <linux/interrupt.h>
+#include <linux/platform_device.h>
+#include <linux/i2c.h>
+
+#include <linux/atmel-ssc.h>
+
+#include <sound/core.h>
+#include <sound/pcm.h>
+#include <sound/pcm_params.h>
+#include <sound/soc.h>
+
+#include <asm/mach-types.h>
+#include <mach/hardware.h>
+#include <mach/gpio.h>
+
+#include "../codecs/wm8731.h"
+#include "atmel-pcm.h"
+#include "atmel_ssc_dai.h"
+
+#define MCLK_RATE 12288000
+
+#define DRV_NAME "sam9x5-snd-wm8731"
+
+/*
+ * Authorized rates are:
+ * Rate = MCLK_RATE / (n * 2)
+ * Where n is in [1..4095]
+ * (cf register SSC_CMR)
+ */
+static unsigned int rates[] = {
+	8000,
+	16000,
+	32000,
+	48000,
+	64000,
+	96000,
+};
+
+static struct snd_pcm_hw_constraint_list hw_rates = {
+	.count = ARRAY_SIZE(rates),
+	.list = rates,
+};
+
+/*
+ * Logic for a wm8731 as connected on a at91sam9x5 based board.
+ */
+static int at91sam9x5ek_wm8731_init(struct snd_soc_pcm_runtime *rtd)
+{
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct device *dev = rtd->dev;
+	int ret;
+
+	dev_dbg(dev, "ASoC: %s called\n", __func__);
+
+	/* set the codec system clock for DAC and ADC */
+	ret = snd_soc_dai_set_sysclk(codec_dai, WM8731_SYSCLK_XTAL,
+				     MCLK_RATE, SND_SOC_CLOCK_IN);
+	if (ret < 0) {
+		dev_err(dev, "ASoC: Failed to set WM8731 SYSCLK: %d\n", ret);
+		return ret;
+	}
+
+	return 0;
+}
+
+static int sam9x5ek_wm8731_startup(struct snd_pcm_substream *substream)
+{
+	struct snd_pcm_runtime *runtime = substream->runtime;
+
+	runtime->hw.rate_min = hw_rates.list[0];
+	runtime->hw.rate_max = hw_rates.list[hw_rates.count - 1];
+	runtime->hw.rates = SNDRV_PCM_RATE_KNOT;
+
+	return snd_pcm_hw_constraint_list(runtime, 0, SNDRV_PCM_HW_PARAM_RATE,
+					  &hw_rates);
+}
+
+/*
+ * Audio paths on at91sam9x5ek board:
+ *
+ *  |A| ------------> |      | ---R----> Headphone Jack
+ *  |T| <----\        |  WM  | ---L--/
+ *  |9| ---> CLK <--> | 8731 | <--R----- Line In Jack
+ *  |1| <------------ |      | <--L--/
+ */
+static const struct snd_soc_dapm_widget at91sam9x5ek_dapm_widgets[] = {
+	SND_SOC_DAPM_HP("Headphone Jack", NULL),
+	SND_SOC_DAPM_LINE("Line In Jack", NULL),
+};
+
+static struct snd_soc_ops sam9x5ek_wm8731_ops = {
+	.startup = sam9x5ek_wm8731_startup,
+};
+
+static struct snd_soc_dai_link at91sam9x5ek_dai = {
+	.name = "WM8731",
+	.stream_name = "WM8731 PCM",
+	.codec_dai_name = "wm8731-hifi",
+	.init = at91sam9x5ek_wm8731_init,
+	.ops = &sam9x5ek_wm8731_ops,
+};
+
+static struct snd_soc_card snd_soc_at91sam9x5ek = {
+	.owner = THIS_MODULE,
+	.dai_link = &at91sam9x5ek_dai,
+	.num_links = 1,
+	.dapm_widgets = at91sam9x5ek_dapm_widgets,
+	.num_dapm_widgets = ARRAY_SIZE(at91sam9x5ek_dapm_widgets),
+};
+
+static int sam9x5_wm8731_driver_probe(struct platform_device *pdev)
+{
+	struct device_node *np = pdev->dev.of_node;
+	struct device_node *codec_np, *cpu_np;
+	int ret;
+
+	if (!np) {
+		dev_err(&pdev->dev, "No device node supplied\n");
+		return -EINVAL;
+	}
+
+	ret = atmel_ssc_set_audio(0);
+	if (ret != 0) {
+		dev_err(&pdev->dev,
+			"ASoC: Failed to set SSC 0 for audio: %d\n", ret);
+		return ret;
+	}
+
+	snd_soc_at91sam9x5ek.dev = &pdev->dev;
+
+	ret = snd_soc_of_parse_card_name(&snd_soc_at91sam9x5ek, "atmel,model");
+	if (ret)
+		goto out;
+
+	ret = snd_soc_of_parse_audio_routing(&snd_soc_at91sam9x5ek,
+					     "atmel,audio-routing");
+	if (ret)
+		goto out;
+
+	codec_np = of_parse_phandle(np, "atmel,audio-codec", 0);
+	if (!codec_np) {
+		dev_err(&pdev->dev, "codec info missing\n");
+		ret = -EINVAL;
+		goto out;
+	}
+
+	at91sam9x5ek_dai.codec_of_node = codec_np;
+
+	cpu_np = of_parse_phandle(np, "atmel,ssc-controller", 0);
+	if (!cpu_np) {
+		dev_err(&pdev->dev, "ssc controller node missing\n");
+		ret = -EINVAL;
+		goto out;
+	}
+	at91sam9x5ek_dai.cpu_of_node = cpu_np;
+	at91sam9x5ek_dai.platform_of_node = cpu_np;
+
+	of_node_put(codec_np);
+	of_node_put(cpu_np);
+
+	at91sam9x5ek_dai.dai_fmt = snd_soc_of_parse_daifmt(np, "atmel,");
+
+	ret = snd_soc_register_card(&snd_soc_at91sam9x5ek);
+	if (ret) {
+		dev_err(&pdev->dev,
+			"ASoC: Platform device allocation failed\n");
+		goto out;
+	}
+
+	platform_set_drvdata(pdev, &snd_soc_at91sam9x5ek);
+
+	dev_dbg(&pdev->dev, "ASoC: %s ok\n", __func__);
+
+	return ret;
+
+out:
+	atmel_ssc_put_audio(0);
+	return ret;
+}
+
+static int sam9x5_wm8731_driver_remove(struct platform_device *pdev)
+{
+	struct snd_soc_card *card = platform_get_drvdata(pdev);
+
+	snd_soc_unregister_card(card);
+	atmel_ssc_put_audio(0);
+
+	return 0;
+}
+
+static const struct of_device_id sam9x5_wm8731_of_match[] = {
+	{ .compatible = "atmel,sam9x5-wm8731-audio", },
+	{},
+};
+MODULE_DEVICE_TABLE(of, sam9x5_wm8731_of_match);
+
+static struct platform_driver sam9x5_wm8731_driver = {
+	.driver = {
+		.name = DRV_NAME,
+		.owner = THIS_MODULE,
+		.of_match_table = of_match_ptr(sam9x5_wm8731_of_match),
+	},
+	.probe = sam9x5_wm8731_driver_probe,
+	.remove = sam9x5_wm8731_driver_remove,
+};
+module_platform_driver(sam9x5_wm8731_driver);
+
+/* Module information */
+MODULE_AUTHOR("Nicolas Ferre <nicolas.ferre@atmel.com>");
+MODULE_AUTHOR("Richard Genoud <richard.genoud@gmail.com>");
+MODULE_DESCRIPTION("ALSA SoC machine driver for AT91SAM9x5 - WM8731");
+MODULE_LICENSE("GPL");
+MODULE_ALIAS("platform:" DRV_NAME);
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 122+ messages in thread

* [PATCH v4 2/7] Documentation: DT: add sam9x5ek-wm8731 machine driver
  2013-07-09 14:25     ` Richard Genoud
@ 2013-07-09 14:25       ` Richard Genoud
  -1 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09 14:25 UTC (permalink / raw)
  To: Mark Brown, Nicolas Ferre, Liam Girdwood, Uwe Kleine-König
  Cc: Bo Shen, Lars-Peter Clausen, linux-arm-kernel, linux-kernel,
	alsa-devel, devicetree-discuss, Richard Genoud

This add the sound DT binding for sam9x5ek-wm8731 machine driver

Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
---
 .../bindings/sound/atmel-sam9x5-wm8731-audio.txt   |   30 ++++++++++++++++++++
 1 file changed, 30 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/sound/atmel-sam9x5-wm8731-audio.txt

diff --git a/Documentation/devicetree/bindings/sound/atmel-sam9x5-wm8731-audio.txt b/Documentation/devicetree/bindings/sound/atmel-sam9x5-wm8731-audio.txt
new file mode 100644
index 0000000..fd03dfd
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/atmel-sam9x5-wm8731-audio.txt
@@ -0,0 +1,30 @@
+* Atmel at91sam9x5ek wm8731 audio complex
+
+Required properties:
+  - compatible: "atmel,at91sam9x5ek-wm8731-audio"
+  - atmel,model: The user-visible name of this sound complex.
+  - atmel,audio-routing: A list of the connections between audio components.
+  - atmel,ssc-controller: The phandle of the SSC controller
+  - atmel,audio-codec: The phandle of the WM8731 audio codec
+  - atmel,format: DAI format. Must be "i2s"
+  - atmel,bitclock-master:  DAI clock master
+  - atmel,frame-master: DAI frame master
+
+Example:
+sound {
+	compatible = "atmel,sam9x5-wm8731-audio";
+
+	atmel,model = "wm8731 @ AT91SAM9X5EK";
+
+	atmel,audio-routing =
+		"Headphone Jack", "RHPOUT",
+		"Headphone Jack", "LHPOUT",
+		"LLINEIN", "Line In Jack",
+		"RLINEIN", "Line In Jack";
+
+	atmel,ssc-controller = <&ssc0>;
+	atmel,audio-codec = <&wm8731>;
+	atmel,format = "i2s";
+	atmel,bitclock-master;
+	atmel,frame-master;
+};
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 122+ messages in thread

* [PATCH v4 2/7] Documentation: DT: add sam9x5ek-wm8731 machine driver
@ 2013-07-09 14:25       ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09 14:25 UTC (permalink / raw)
  To: linux-arm-kernel

This add the sound DT binding for sam9x5ek-wm8731 machine driver

Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
---
 .../bindings/sound/atmel-sam9x5-wm8731-audio.txt   |   30 ++++++++++++++++++++
 1 file changed, 30 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/sound/atmel-sam9x5-wm8731-audio.txt

diff --git a/Documentation/devicetree/bindings/sound/atmel-sam9x5-wm8731-audio.txt b/Documentation/devicetree/bindings/sound/atmel-sam9x5-wm8731-audio.txt
new file mode 100644
index 0000000..fd03dfd
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/atmel-sam9x5-wm8731-audio.txt
@@ -0,0 +1,30 @@
+* Atmel at91sam9x5ek wm8731 audio complex
+
+Required properties:
+  - compatible: "atmel,at91sam9x5ek-wm8731-audio"
+  - atmel,model: The user-visible name of this sound complex.
+  - atmel,audio-routing: A list of the connections between audio components.
+  - atmel,ssc-controller: The phandle of the SSC controller
+  - atmel,audio-codec: The phandle of the WM8731 audio codec
+  - atmel,format: DAI format. Must be "i2s"
+  - atmel,bitclock-master:  DAI clock master
+  - atmel,frame-master: DAI frame master
+
+Example:
+sound {
+	compatible = "atmel,sam9x5-wm8731-audio";
+
+	atmel,model = "wm8731 @ AT91SAM9X5EK";
+
+	atmel,audio-routing =
+		"Headphone Jack", "RHPOUT",
+		"Headphone Jack", "LHPOUT",
+		"LLINEIN", "Line In Jack",
+		"RLINEIN", "Line In Jack";
+
+	atmel,ssc-controller = <&ssc0>;
+	atmel,audio-codec = <&wm8731>;
+	atmel,format = "i2s";
+	atmel,bitclock-master;
+	atmel,frame-master;
+};
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 122+ messages in thread

* [PATCH v4 3/7] Documentation: DT: update atmel SSC with DMA binding
@ 2013-07-09 14:25       ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09 14:25 UTC (permalink / raw)
  To: Mark Brown, Nicolas Ferre, Liam Girdwood, Uwe Kleine-König
  Cc: Bo Shen, Lars-Peter Clausen, linux-arm-kernel, linux-kernel,
	alsa-devel, devicetree-discuss, Richard Genoud

As atmel-ssc can be used with DMA, the documentation should be updated.
Also, a configuration DMA example is given.

Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
---
 .../devicetree/bindings/misc/atmel-ssc.txt         |   20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/Documentation/devicetree/bindings/misc/atmel-ssc.txt b/Documentation/devicetree/bindings/misc/atmel-ssc.txt
index 38e51ad..7c320da 100644
--- a/Documentation/devicetree/bindings/misc/atmel-ssc.txt
+++ b/Documentation/devicetree/bindings/misc/atmel-ssc.txt
@@ -6,10 +6,28 @@ Required properties:
 	- atmel,at91sam9g45-ssc: support dma transfer
 - reg: Should contain SSC registers location and length
 - interrupts: Should contain SSC interrupt
+For dma transfer:
+- dmas: DMA specifier, consisting of a phandle to DMA controller node,
+  the memory interface and SSC DMA channel ID (for tx and rx).
+  See Documentation/devicetree/bindings/dma/atmel-dma.txt for details.
+- dma-names: Must be "tx", "rx".
 
-Example:
+Examples:
 ssc0: ssc@fffbc000 {
 	compatible = "atmel,at91rm9200-ssc";
 	reg = <0xfffbc000 0x4000>;
 	interrupts = <14 4 5>;
 };
+
+
+ssc0: ssc@f0010000 {
+      compatible = "atmel,at91sam9g45-ssc";
+      reg = <0xf0010000 0x4000>;
+      interrupts = <28 4 5>;
+      dmas = <&dma0 1 13>,
+	     <&dma0 1 14>;
+      dma-names = "tx", "rx";
+      pinctrl-names = "default";
+      pinctrl-0 = <&pinctrl_ssc0_tx &pinctrl_ssc0_rx>;
+      status = "disabled";
+};
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 122+ messages in thread

* [PATCH v4 3/7] Documentation: DT: update atmel SSC with DMA binding
@ 2013-07-09 14:25       ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09 14:25 UTC (permalink / raw)
  To: Mark Brown, Nicolas Ferre, Liam Girdwood, Uwe Kleine-König
  Cc: alsa-devel-K7yf7f+aM1XWsZ/bQMPhNw, Lars-Peter Clausen,
	devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, Bo Shen,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r

As atmel-ssc can be used with DMA, the documentation should be updated.
Also, a configuration DMA example is given.

Signed-off-by: Richard Genoud <richard.genoud-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
---
 .../devicetree/bindings/misc/atmel-ssc.txt         |   20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/Documentation/devicetree/bindings/misc/atmel-ssc.txt b/Documentation/devicetree/bindings/misc/atmel-ssc.txt
index 38e51ad..7c320da 100644
--- a/Documentation/devicetree/bindings/misc/atmel-ssc.txt
+++ b/Documentation/devicetree/bindings/misc/atmel-ssc.txt
@@ -6,10 +6,28 @@ Required properties:
 	- atmel,at91sam9g45-ssc: support dma transfer
 - reg: Should contain SSC registers location and length
 - interrupts: Should contain SSC interrupt
+For dma transfer:
+- dmas: DMA specifier, consisting of a phandle to DMA controller node,
+  the memory interface and SSC DMA channel ID (for tx and rx).
+  See Documentation/devicetree/bindings/dma/atmel-dma.txt for details.
+- dma-names: Must be "tx", "rx".
 
-Example:
+Examples:
 ssc0: ssc@fffbc000 {
 	compatible = "atmel,at91rm9200-ssc";
 	reg = <0xfffbc000 0x4000>;
 	interrupts = <14 4 5>;
 };
+
+
+ssc0: ssc@f0010000 {
+      compatible = "atmel,at91sam9g45-ssc";
+      reg = <0xf0010000 0x4000>;
+      interrupts = <28 4 5>;
+      dmas = <&dma0 1 13>,
+	     <&dma0 1 14>;
+      dma-names = "tx", "rx";
+      pinctrl-names = "default";
+      pinctrl-0 = <&pinctrl_ssc0_tx &pinctrl_ssc0_rx>;
+      status = "disabled";
+};
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 122+ messages in thread

* [PATCH v4 3/7] Documentation: DT: update atmel SSC with DMA binding
@ 2013-07-09 14:25       ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09 14:25 UTC (permalink / raw)
  To: linux-arm-kernel

As atmel-ssc can be used with DMA, the documentation should be updated.
Also, a configuration DMA example is given.

Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
---
 .../devicetree/bindings/misc/atmel-ssc.txt         |   20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/Documentation/devicetree/bindings/misc/atmel-ssc.txt b/Documentation/devicetree/bindings/misc/atmel-ssc.txt
index 38e51ad..7c320da 100644
--- a/Documentation/devicetree/bindings/misc/atmel-ssc.txt
+++ b/Documentation/devicetree/bindings/misc/atmel-ssc.txt
@@ -6,10 +6,28 @@ Required properties:
 	- atmel,at91sam9g45-ssc: support dma transfer
 - reg: Should contain SSC registers location and length
 - interrupts: Should contain SSC interrupt
+For dma transfer:
+- dmas: DMA specifier, consisting of a phandle to DMA controller node,
+  the memory interface and SSC DMA channel ID (for tx and rx).
+  See Documentation/devicetree/bindings/dma/atmel-dma.txt for details.
+- dma-names: Must be "tx", "rx".
 
-Example:
+Examples:
 ssc0: ssc at fffbc000 {
 	compatible = "atmel,at91rm9200-ssc";
 	reg = <0xfffbc000 0x4000>;
 	interrupts = <14 4 5>;
 };
+
+
+ssc0: ssc at f0010000 {
+      compatible = "atmel,at91sam9g45-ssc";
+      reg = <0xf0010000 0x4000>;
+      interrupts = <28 4 5>;
+      dmas = <&dma0 1 13>,
+	     <&dma0 1 14>;
+      dma-names = "tx", "rx";
+      pinctrl-names = "default";
+      pinctrl-0 = <&pinctrl_ssc0_tx &pinctrl_ssc0_rx>;
+      status = "disabled";
+};
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 122+ messages in thread

* [PATCH v4 4/7] ARM: AT91: DTS: sam9x5: add SSC DMA parameters
@ 2013-07-09 14:25       ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09 14:25 UTC (permalink / raw)
  To: Mark Brown, Nicolas Ferre, Liam Girdwood, Uwe Kleine-König
  Cc: Bo Shen, Lars-Peter Clausen, linux-arm-kernel, linux-kernel,
	alsa-devel, devicetree-discuss, Richard Genoud

Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
---
 arch/arm/boot/dts/at91sam9x5.dtsi |    3 +++
 1 file changed, 3 insertions(+)

diff --git a/arch/arm/boot/dts/at91sam9x5.dtsi b/arch/arm/boot/dts/at91sam9x5.dtsi
index 57d45f5..cf78ac0 100644
--- a/arch/arm/boot/dts/at91sam9x5.dtsi
+++ b/arch/arm/boot/dts/at91sam9x5.dtsi
@@ -542,6 +542,9 @@
 				compatible = "atmel,at91sam9g45-ssc";
 				reg = <0xf0010000 0x4000>;
 				interrupts = <28 IRQ_TYPE_LEVEL_HIGH 5>;
+				dmas = <&dma0 1 AT91_DMA_CFG_PER_ID(13)>,
+				       <&dma0 1 AT91_DMA_CFG_PER_ID(14)>;
+				dma-names = "tx", "rx";
 				pinctrl-names = "default";
 				pinctrl-0 = <&pinctrl_ssc0_tx &pinctrl_ssc0_rx>;
 				status = "disabled";
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 122+ messages in thread

* [PATCH v4 4/7] ARM: AT91: DTS: sam9x5: add SSC DMA parameters
@ 2013-07-09 14:25       ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09 14:25 UTC (permalink / raw)
  To: Mark Brown, Nicolas Ferre, Liam Girdwood, Uwe Kleine-König
  Cc: alsa-devel-K7yf7f+aM1XWsZ/bQMPhNw, Lars-Peter Clausen,
	devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, Bo Shen,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r

Signed-off-by: Richard Genoud <richard.genoud-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
---
 arch/arm/boot/dts/at91sam9x5.dtsi |    3 +++
 1 file changed, 3 insertions(+)

diff --git a/arch/arm/boot/dts/at91sam9x5.dtsi b/arch/arm/boot/dts/at91sam9x5.dtsi
index 57d45f5..cf78ac0 100644
--- a/arch/arm/boot/dts/at91sam9x5.dtsi
+++ b/arch/arm/boot/dts/at91sam9x5.dtsi
@@ -542,6 +542,9 @@
 				compatible = "atmel,at91sam9g45-ssc";
 				reg = <0xf0010000 0x4000>;
 				interrupts = <28 IRQ_TYPE_LEVEL_HIGH 5>;
+				dmas = <&dma0 1 AT91_DMA_CFG_PER_ID(13)>,
+				       <&dma0 1 AT91_DMA_CFG_PER_ID(14)>;
+				dma-names = "tx", "rx";
 				pinctrl-names = "default";
 				pinctrl-0 = <&pinctrl_ssc0_tx &pinctrl_ssc0_rx>;
 				status = "disabled";
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 122+ messages in thread

* [PATCH v4 4/7] ARM: AT91: DTS: sam9x5: add SSC DMA parameters
@ 2013-07-09 14:25       ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09 14:25 UTC (permalink / raw)
  To: linux-arm-kernel

Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
---
 arch/arm/boot/dts/at91sam9x5.dtsi |    3 +++
 1 file changed, 3 insertions(+)

diff --git a/arch/arm/boot/dts/at91sam9x5.dtsi b/arch/arm/boot/dts/at91sam9x5.dtsi
index 57d45f5..cf78ac0 100644
--- a/arch/arm/boot/dts/at91sam9x5.dtsi
+++ b/arch/arm/boot/dts/at91sam9x5.dtsi
@@ -542,6 +542,9 @@
 				compatible = "atmel,at91sam9g45-ssc";
 				reg = <0xf0010000 0x4000>;
 				interrupts = <28 IRQ_TYPE_LEVEL_HIGH 5>;
+				dmas = <&dma0 1 AT91_DMA_CFG_PER_ID(13)>,
+				       <&dma0 1 AT91_DMA_CFG_PER_ID(14)>;
+				dma-names = "tx", "rx";
 				pinctrl-names = "default";
 				pinctrl-0 = <&pinctrl_ssc0_tx &pinctrl_ssc0_rx>;
 				status = "disabled";
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 122+ messages in thread

* [PATCH v4 5/7] ARM: AT91: DTS: sam9x5ek: add WM8731 codec
  2013-07-09 14:25     ` Richard Genoud
@ 2013-07-09 14:25       ` Richard Genoud
  -1 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09 14:25 UTC (permalink / raw)
  To: Mark Brown, Nicolas Ferre, Liam Girdwood, Uwe Kleine-König
  Cc: Bo Shen, Lars-Peter Clausen, linux-arm-kernel, linux-kernel,
	alsa-devel, devicetree-discuss, Richard Genoud

The WM8731 codec on sam9x5ek board is on i2c, address 1A

Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
Acked-by: Mark Brown <broonie@linaro.org>
---
 arch/arm/boot/dts/at91sam9x5ek.dtsi |    5 +++++
 1 file changed, 5 insertions(+)

diff --git a/arch/arm/boot/dts/at91sam9x5ek.dtsi b/arch/arm/boot/dts/at91sam9x5ek.dtsi
index d107241..e6fb309 100644
--- a/arch/arm/boot/dts/at91sam9x5ek.dtsi
+++ b/arch/arm/boot/dts/at91sam9x5ek.dtsi
@@ -59,6 +59,11 @@
 
 			i2c0: i2c@f8010000 {
 				status = "okay";
+
+				wm8731: wm8731@1a {
+					compatible = "wm8731";
+					reg = <0x1a>;
+				};
 			};
 
 			pinctrl@fffff400 {
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 122+ messages in thread

* [PATCH v4 5/7] ARM: AT91: DTS: sam9x5ek: add WM8731 codec
@ 2013-07-09 14:25       ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09 14:25 UTC (permalink / raw)
  To: linux-arm-kernel

The WM8731 codec on sam9x5ek board is on i2c, address 1A

Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
Acked-by: Mark Brown <broonie@linaro.org>
---
 arch/arm/boot/dts/at91sam9x5ek.dtsi |    5 +++++
 1 file changed, 5 insertions(+)

diff --git a/arch/arm/boot/dts/at91sam9x5ek.dtsi b/arch/arm/boot/dts/at91sam9x5ek.dtsi
index d107241..e6fb309 100644
--- a/arch/arm/boot/dts/at91sam9x5ek.dtsi
+++ b/arch/arm/boot/dts/at91sam9x5ek.dtsi
@@ -59,6 +59,11 @@
 
 			i2c0: i2c at f8010000 {
 				status = "okay";
+
+				wm8731: wm8731 at 1a {
+					compatible = "wm8731";
+					reg = <0x1a>;
+				};
 			};
 
 			pinctrl at fffff400 {
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 122+ messages in thread

* [PATCH v4 6/7] ARM: AT91: DTS: sam9x5ek: add sound configuration
  2013-07-09 14:25     ` Richard Genoud
@ 2013-07-09 14:25       ` Richard Genoud
  -1 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09 14:25 UTC (permalink / raw)
  To: Mark Brown, Nicolas Ferre, Liam Girdwood, Uwe Kleine-König
  Cc: Bo Shen, Lars-Peter Clausen, linux-arm-kernel, linux-kernel,
	alsa-devel, devicetree-discuss, Richard Genoud

The sam9x5ek board has 2 jacks:
headphone wired on RHPOUT/LHPOUT of the wm8731
line in wired on LLINEIN/RLINEIN of the wm8731

Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
---
 arch/arm/boot/dts/at91sam9x5ek.dtsi |   18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/arch/arm/boot/dts/at91sam9x5ek.dtsi b/arch/arm/boot/dts/at91sam9x5ek.dtsi
index e6fb309..2bf51cc 100644
--- a/arch/arm/boot/dts/at91sam9x5ek.dtsi
+++ b/arch/arm/boot/dts/at91sam9x5ek.dtsi
@@ -109,4 +109,22 @@
 			status = "okay";
 		};
 	};
+
+	sound {
+		compatible = "atmel,sam9x5-wm8731-audio";
+
+		atmel,model = "wm8731 @ AT91SAM9X5EK";
+
+		atmel,audio-routing =
+			"Headphone Jack", "RHPOUT",
+			"Headphone Jack", "LHPOUT",
+			"LLINEIN", "Line In Jack",
+			"RLINEIN", "Line In Jack";
+
+		atmel,ssc-controller = <&ssc0>;
+		atmel,audio-codec = <&wm8731>;
+		atmel,format = "i2s";
+		atmel,bitclock-master;
+		atmel,frame-master;
+	};
 };
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 122+ messages in thread

* [PATCH v4 6/7] ARM: AT91: DTS: sam9x5ek: add sound configuration
@ 2013-07-09 14:25       ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09 14:25 UTC (permalink / raw)
  To: linux-arm-kernel

The sam9x5ek board has 2 jacks:
headphone wired on RHPOUT/LHPOUT of the wm8731
line in wired on LLINEIN/RLINEIN of the wm8731

Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
---
 arch/arm/boot/dts/at91sam9x5ek.dtsi |   18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/arch/arm/boot/dts/at91sam9x5ek.dtsi b/arch/arm/boot/dts/at91sam9x5ek.dtsi
index e6fb309..2bf51cc 100644
--- a/arch/arm/boot/dts/at91sam9x5ek.dtsi
+++ b/arch/arm/boot/dts/at91sam9x5ek.dtsi
@@ -109,4 +109,22 @@
 			status = "okay";
 		};
 	};
+
+	sound {
+		compatible = "atmel,sam9x5-wm8731-audio";
+
+		atmel,model = "wm8731 @ AT91SAM9X5EK";
+
+		atmel,audio-routing =
+			"Headphone Jack", "RHPOUT",
+			"Headphone Jack", "LHPOUT",
+			"LLINEIN", "Line In Jack",
+			"RLINEIN", "Line In Jack";
+
+		atmel,ssc-controller = <&ssc0>;
+		atmel,audio-codec = <&wm8731>;
+		atmel,format = "i2s";
+		atmel,bitclock-master;
+		atmel,frame-master;
+	};
 };
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 122+ messages in thread

* [PATCH v4 7/7] ARM: AT91: DTS: sam9x5ek: enable SSC
  2013-07-09 14:25     ` Richard Genoud
@ 2013-07-09 14:25       ` Richard Genoud
  -1 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09 14:25 UTC (permalink / raw)
  To: Mark Brown, Nicolas Ferre, Liam Girdwood, Uwe Kleine-König
  Cc: Bo Shen, Lars-Peter Clausen, linux-arm-kernel, linux-kernel,
	alsa-devel, devicetree-discuss, Richard Genoud

Enable the SSC needed for the WM8731 codec

Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
---
 arch/arm/boot/dts/at91sam9x5ek.dtsi |    4 ++++
 1 file changed, 4 insertions(+)

diff --git a/arch/arm/boot/dts/at91sam9x5ek.dtsi b/arch/arm/boot/dts/at91sam9x5ek.dtsi
index 2bf51cc..0534c58 100644
--- a/arch/arm/boot/dts/at91sam9x5ek.dtsi
+++ b/arch/arm/boot/dts/at91sam9x5ek.dtsi
@@ -95,6 +95,10 @@
 			watchdog@fffffe40 {
 				status = "okay";
 			};
+
+			ssc0: ssc@f0010000 {
+				status = "okay";
+			};
 		};
 
 		usb0: ohci@00600000 {
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 122+ messages in thread

* [PATCH v4 7/7] ARM: AT91: DTS: sam9x5ek: enable SSC
@ 2013-07-09 14:25       ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09 14:25 UTC (permalink / raw)
  To: linux-arm-kernel

Enable the SSC needed for the WM8731 codec

Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
---
 arch/arm/boot/dts/at91sam9x5ek.dtsi |    4 ++++
 1 file changed, 4 insertions(+)

diff --git a/arch/arm/boot/dts/at91sam9x5ek.dtsi b/arch/arm/boot/dts/at91sam9x5ek.dtsi
index 2bf51cc..0534c58 100644
--- a/arch/arm/boot/dts/at91sam9x5ek.dtsi
+++ b/arch/arm/boot/dts/at91sam9x5ek.dtsi
@@ -95,6 +95,10 @@
 			watchdog at fffffe40 {
 				status = "okay";
 			};
+
+			ssc0: ssc at f0010000 {
+				status = "okay";
+			};
 		};
 
 		usb0: ohci at 00600000 {
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 122+ messages in thread

* Re: [PATCH v4 0/7] Sound support for at91sam9x5-wm8731 based boards
  2013-07-09 14:25     ` Richard Genoud
@ 2013-07-09 14:42       ` Mark Brown
  -1 siblings, 0 replies; 122+ messages in thread
From: Mark Brown @ 2013-07-09 14:42 UTC (permalink / raw)
  To: Richard Genoud
  Cc: Nicolas Ferre, Liam Girdwood, Uwe Kleine-König, Bo Shen,
	Lars-Peter Clausen, linux-arm-kernel, linux-kernel, alsa-devel,
	devicetree-discuss

[-- Attachment #1: Type: text/plain, Size: 467 bytes --]

On Tue, Jul 09, 2013 at 04:25:26PM +0200, Richard Genoud wrote:
> [I've just seen that I forgot to cc Uwe to the cover letter, sorry for that.]

This is the second or third copy of this patch set I've been sent
*today*.  Worse, everything seems to be being sent in reply to the same
thread increasing the nesting substantially.  Please slow down, it's
flooding my mailbox and discouraging me from looking since it seems
likely that there will just be another resend.

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 122+ messages in thread

* [PATCH v4 0/7] Sound support for at91sam9x5-wm8731 based boards
@ 2013-07-09 14:42       ` Mark Brown
  0 siblings, 0 replies; 122+ messages in thread
From: Mark Brown @ 2013-07-09 14:42 UTC (permalink / raw)
  To: linux-arm-kernel

On Tue, Jul 09, 2013 at 04:25:26PM +0200, Richard Genoud wrote:
> [I've just seen that I forgot to cc Uwe to the cover letter, sorry for that.]

This is the second or third copy of this patch set I've been sent
*today*.  Worse, everything seems to be being sent in reply to the same
thread increasing the nesting substantially.  Please slow down, it's
flooding my mailbox and discouraging me from looking since it seems
likely that there will just be another resend.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20130709/072ec8b4/attachment.sig>

^ permalink raw reply	[flat|nested] 122+ messages in thread

* Re: [PATCH v4 0/7] Sound support for at91sam9x5-wm8731 based boards
  2013-07-09 14:42       ` Mark Brown
  (?)
@ 2013-07-09 14:52         ` Richard Genoud
  -1 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09 14:52 UTC (permalink / raw)
  To: Mark Brown
  Cc: Nicolas Ferre, Liam Girdwood, Uwe Kleine-König, Bo Shen,
	Lars-Peter Clausen, linux-arm-kernel, linux-kernel, alsa-devel,
	devicetree-discuss

2013/7/9 Mark Brown <broonie@kernel.org>:
> On Tue, Jul 09, 2013 at 04:25:26PM +0200, Richard Genoud wrote:
>> [I've just seen that I forgot to cc Uwe to the cover letter, sorry for that.]
>
> This is the second or third copy of this patch set I've been sent
> *today*.  Worse, everything seems to be being sent in reply to the same
> thread increasing the nesting substantially.  Please slow down, it's
> flooding my mailbox and discouraging me from looking since it seems
> likely that there will just be another resend.
Sorry Mark, I didn't want to be pushy...
I still need to learn what should and what shouldn't be done on a linux-ML

Best regards,
Richard.

^ permalink raw reply	[flat|nested] 122+ messages in thread

* Re: [PATCH v4 0/7] Sound support for at91sam9x5-wm8731 based boards
@ 2013-07-09 14:52         ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09 14:52 UTC (permalink / raw)
  To: Mark Brown
  Cc: alsa-devel, Lars-Peter Clausen, devicetree-discuss,
	Nicolas Ferre, Liam Girdwood, linux-kernel, Bo Shen,
	Uwe Kleine-König, linux-arm-kernel

2013/7/9 Mark Brown <broonie@kernel.org>:
> On Tue, Jul 09, 2013 at 04:25:26PM +0200, Richard Genoud wrote:
>> [I've just seen that I forgot to cc Uwe to the cover letter, sorry for that.]
>
> This is the second or third copy of this patch set I've been sent
> *today*.  Worse, everything seems to be being sent in reply to the same
> thread increasing the nesting substantially.  Please slow down, it's
> flooding my mailbox and discouraging me from looking since it seems
> likely that there will just be another resend.
Sorry Mark, I didn't want to be pushy...
I still need to learn what should and what shouldn't be done on a linux-ML

Best regards,
Richard.

^ permalink raw reply	[flat|nested] 122+ messages in thread

* [PATCH v4 0/7] Sound support for at91sam9x5-wm8731 based boards
@ 2013-07-09 14:52         ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-09 14:52 UTC (permalink / raw)
  To: linux-arm-kernel

2013/7/9 Mark Brown <broonie@kernel.org>:
> On Tue, Jul 09, 2013 at 04:25:26PM +0200, Richard Genoud wrote:
>> [I've just seen that I forgot to cc Uwe to the cover letter, sorry for that.]
>
> This is the second or third copy of this patch set I've been sent
> *today*.  Worse, everything seems to be being sent in reply to the same
> thread increasing the nesting substantially.  Please slow down, it's
> flooding my mailbox and discouraging me from looking since it seems
> likely that there will just be another resend.
Sorry Mark, I didn't want to be pushy...
I still need to learn what should and what shouldn't be done on a linux-ML

Best regards,
Richard.

^ permalink raw reply	[flat|nested] 122+ messages in thread

* Re: [PATCH v4 1/7] sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards
  2013-07-09 14:25       ` Richard Genoud
  (?)
@ 2013-07-09 14:59         ` Mark Brown
  -1 siblings, 0 replies; 122+ messages in thread
From: Mark Brown @ 2013-07-09 14:59 UTC (permalink / raw)
  To: Richard Genoud
  Cc: Nicolas Ferre, Liam Girdwood, Uwe Kleine-König, Bo Shen,
	Lars-Peter Clausen, linux-arm-kernel, linux-kernel, alsa-devel,
	devicetree-discuss

[-- Attachment #1: Type: text/plain, Size: 1232 bytes --]

On Tue, Jul 09, 2013 at 04:25:27PM +0200, Richard Genoud wrote:

> +/*
> + * Authorized rates are:
> + * Rate = MCLK_RATE / (n * 2)
> + * Where n is in [1..4095]
> + * (cf register SSC_CMR)
> + */
> +static unsigned int rates[] = {
> +	8000,
> +	16000,
> +	32000,
> +	48000,
> +	64000,
> +	96000,
> +};

Shouldn't the SSC driver be enforcing this constraint if it comes from
the SSC hardware?  If the clock is reprogrammable the usual convention
for drivers is to not constrain if the clock is set to zero so a machine
driver could remove the constraint.

> +	ret = atmel_ssc_set_audio(0);
> +	if (ret != 0) {
> +		dev_err(&pdev->dev,
> +			"ASoC: Failed to set SSC 0 for audio: %d\n", ret);
> +		return ret;
> +	}

Shouldn't this be a parameter in the DT too?

> +	cpu_np = of_parse_phandle(np, "atmel,ssc-controller", 0);
> +	if (!cpu_np) {
> +		dev_err(&pdev->dev, "ssc controller node missing\n");
> +		ret = -EINVAL;
> +		goto out;
> +	}
> +	at91sam9x5ek_dai.cpu_of_node = cpu_np;
> +	at91sam9x5ek_dai.platform_of_node = cpu_np;

After all we're looking things up in the DT...

> +	at91sam9x5ek_dai.dai_fmt = snd_soc_of_parse_daifmt(np, "atmel,");

Is this really something that machines would want to reconfigure?  If so
why?

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 122+ messages in thread

* Re: [PATCH v4 1/7] sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards
@ 2013-07-09 14:59         ` Mark Brown
  0 siblings, 0 replies; 122+ messages in thread
From: Mark Brown @ 2013-07-09 14:59 UTC (permalink / raw)
  To: Richard Genoud
  Cc: alsa-devel, Lars-Peter Clausen, devicetree-discuss,
	Nicolas Ferre, Liam Girdwood, linux-kernel, Bo Shen,
	Uwe Kleine-König, linux-arm-kernel


[-- Attachment #1.1: Type: text/plain, Size: 1232 bytes --]

On Tue, Jul 09, 2013 at 04:25:27PM +0200, Richard Genoud wrote:

> +/*
> + * Authorized rates are:
> + * Rate = MCLK_RATE / (n * 2)
> + * Where n is in [1..4095]
> + * (cf register SSC_CMR)
> + */
> +static unsigned int rates[] = {
> +	8000,
> +	16000,
> +	32000,
> +	48000,
> +	64000,
> +	96000,
> +};

Shouldn't the SSC driver be enforcing this constraint if it comes from
the SSC hardware?  If the clock is reprogrammable the usual convention
for drivers is to not constrain if the clock is set to zero so a machine
driver could remove the constraint.

> +	ret = atmel_ssc_set_audio(0);
> +	if (ret != 0) {
> +		dev_err(&pdev->dev,
> +			"ASoC: Failed to set SSC 0 for audio: %d\n", ret);
> +		return ret;
> +	}

Shouldn't this be a parameter in the DT too?

> +	cpu_np = of_parse_phandle(np, "atmel,ssc-controller", 0);
> +	if (!cpu_np) {
> +		dev_err(&pdev->dev, "ssc controller node missing\n");
> +		ret = -EINVAL;
> +		goto out;
> +	}
> +	at91sam9x5ek_dai.cpu_of_node = cpu_np;
> +	at91sam9x5ek_dai.platform_of_node = cpu_np;

After all we're looking things up in the DT...

> +	at91sam9x5ek_dai.dai_fmt = snd_soc_of_parse_daifmt(np, "atmel,");

Is this really something that machines would want to reconfigure?  If so
why?

[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

[-- Attachment #2: Type: text/plain, Size: 176 bytes --]

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 122+ messages in thread

* [PATCH v4 1/7] sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards
@ 2013-07-09 14:59         ` Mark Brown
  0 siblings, 0 replies; 122+ messages in thread
From: Mark Brown @ 2013-07-09 14:59 UTC (permalink / raw)
  To: linux-arm-kernel

On Tue, Jul 09, 2013 at 04:25:27PM +0200, Richard Genoud wrote:

> +/*
> + * Authorized rates are:
> + * Rate = MCLK_RATE / (n * 2)
> + * Where n is in [1..4095]
> + * (cf register SSC_CMR)
> + */
> +static unsigned int rates[] = {
> +	8000,
> +	16000,
> +	32000,
> +	48000,
> +	64000,
> +	96000,
> +};

Shouldn't the SSC driver be enforcing this constraint if it comes from
the SSC hardware?  If the clock is reprogrammable the usual convention
for drivers is to not constrain if the clock is set to zero so a machine
driver could remove the constraint.

> +	ret = atmel_ssc_set_audio(0);
> +	if (ret != 0) {
> +		dev_err(&pdev->dev,
> +			"ASoC: Failed to set SSC 0 for audio: %d\n", ret);
> +		return ret;
> +	}

Shouldn't this be a parameter in the DT too?

> +	cpu_np = of_parse_phandle(np, "atmel,ssc-controller", 0);
> +	if (!cpu_np) {
> +		dev_err(&pdev->dev, "ssc controller node missing\n");
> +		ret = -EINVAL;
> +		goto out;
> +	}
> +	at91sam9x5ek_dai.cpu_of_node = cpu_np;
> +	at91sam9x5ek_dai.platform_of_node = cpu_np;

After all we're looking things up in the DT...

> +	at91sam9x5ek_dai.dai_fmt = snd_soc_of_parse_daifmt(np, "atmel,");

Is this really something that machines would want to reconfigure?  If so
why?
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20130709/8c5f9fd6/attachment.sig>

^ permalink raw reply	[flat|nested] 122+ messages in thread

* Re: [PATCH v4 2/7] Documentation: DT: add sam9x5ek-wm8731 machine driver
  2013-07-09 14:25       ` Richard Genoud
  (?)
@ 2013-07-09 15:01         ` Mark Brown
  -1 siblings, 0 replies; 122+ messages in thread
From: Mark Brown @ 2013-07-09 15:01 UTC (permalink / raw)
  To: Richard Genoud
  Cc: Nicolas Ferre, Liam Girdwood, Uwe Kleine-König, Bo Shen,
	Lars-Peter Clausen, linux-arm-kernel, linux-kernel, alsa-devel,
	devicetree-discuss

[-- Attachment #1: Type: text/plain, Size: 888 bytes --]

On Tue, Jul 09, 2013 at 04:25:28PM +0200, Richard Genoud wrote:
> This add the sound DT binding for sam9x5ek-wm8731 machine driver
> 
> Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
> ---
>  .../bindings/sound/atmel-sam9x5-wm8731-audio.txt   |   30 ++++++++++++++++++++

Put new binding documents in the same patch that reads them, this makes
review easier.

> +  - atmel,audio-routing: A list of the connections between audio components.

This needs to be more specific and list the available board specific
nodes for routing.  For the CODEC you can just refer to the CODEC
binding documentation.

> +  - atmel,format: DAI format. Must be "i2s"

So why not just omit this then?

> +  - atmel,bitclock-master:  DAI clock master
> +  - atmel,frame-master: DAI frame master

The driver isn't handling these and there's no information on how to set
them.

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 122+ messages in thread

* Re: [PATCH v4 2/7] Documentation: DT: add sam9x5ek-wm8731 machine driver
@ 2013-07-09 15:01         ` Mark Brown
  0 siblings, 0 replies; 122+ messages in thread
From: Mark Brown @ 2013-07-09 15:01 UTC (permalink / raw)
  To: Richard Genoud
  Cc: alsa-devel, Lars-Peter Clausen, devicetree-discuss,
	Nicolas Ferre, Liam Girdwood, linux-kernel, Bo Shen,
	Uwe Kleine-König, linux-arm-kernel


[-- Attachment #1.1: Type: text/plain, Size: 888 bytes --]

On Tue, Jul 09, 2013 at 04:25:28PM +0200, Richard Genoud wrote:
> This add the sound DT binding for sam9x5ek-wm8731 machine driver
> 
> Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
> ---
>  .../bindings/sound/atmel-sam9x5-wm8731-audio.txt   |   30 ++++++++++++++++++++

Put new binding documents in the same patch that reads them, this makes
review easier.

> +  - atmel,audio-routing: A list of the connections between audio components.

This needs to be more specific and list the available board specific
nodes for routing.  For the CODEC you can just refer to the CODEC
binding documentation.

> +  - atmel,format: DAI format. Must be "i2s"

So why not just omit this then?

> +  - atmel,bitclock-master:  DAI clock master
> +  - atmel,frame-master: DAI frame master

The driver isn't handling these and there's no information on how to set
them.

[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

[-- Attachment #2: Type: text/plain, Size: 0 bytes --]



^ permalink raw reply	[flat|nested] 122+ messages in thread

* [PATCH v4 2/7] Documentation: DT: add sam9x5ek-wm8731 machine driver
@ 2013-07-09 15:01         ` Mark Brown
  0 siblings, 0 replies; 122+ messages in thread
From: Mark Brown @ 2013-07-09 15:01 UTC (permalink / raw)
  To: linux-arm-kernel

On Tue, Jul 09, 2013 at 04:25:28PM +0200, Richard Genoud wrote:
> This add the sound DT binding for sam9x5ek-wm8731 machine driver
> 
> Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
> ---
>  .../bindings/sound/atmel-sam9x5-wm8731-audio.txt   |   30 ++++++++++++++++++++

Put new binding documents in the same patch that reads them, this makes
review easier.

> +  - atmel,audio-routing: A list of the connections between audio components.

This needs to be more specific and list the available board specific
nodes for routing.  For the CODEC you can just refer to the CODEC
binding documentation.

> +  - atmel,format: DAI format. Must be "i2s"

So why not just omit this then?

> +  - atmel,bitclock-master:  DAI clock master
> +  - atmel,frame-master: DAI frame master

The driver isn't handling these and there's no information on how to set
them.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20130709/dcbf9701/attachment.sig>

^ permalink raw reply	[flat|nested] 122+ messages in thread

* Re: [PATCH v4 3/7] Documentation: DT: update atmel SSC with DMA binding
  2013-07-09 14:25       ` Richard Genoud
  (?)
@ 2013-07-09 15:05         ` Mark Brown
  -1 siblings, 0 replies; 122+ messages in thread
From: Mark Brown @ 2013-07-09 15:05 UTC (permalink / raw)
  To: Richard Genoud
  Cc: Nicolas Ferre, Liam Girdwood, Uwe Kleine-König, Bo Shen,
	Lars-Peter Clausen, linux-arm-kernel, linux-kernel, alsa-devel,
	devicetree-discuss

[-- Attachment #1: Type: text/plain, Size: 755 bytes --]

On Tue, Jul 09, 2013 at 04:25:29PM +0200, Richard Genoud wrote:

>  - reg: Should contain SSC registers location and length
>  - interrupts: Should contain SSC interrupt
> +For dma transfer:
> +- dmas: DMA specifier, consisting of a phandle to DMA controller node,
> +  the memory interface and SSC DMA channel ID (for tx and rx).
> +  See Documentation/devicetree/bindings/dma/atmel-dma.txt for details.
> +- dma-names: Must be "tx", "rx".

This is added as a required property so...

> -Example:
> +Examples:
>  ssc0: ssc@fffbc000 {
>  	compatible = "atmel,at91rm9200-ssc";
>  	reg = <0xfffbc000 0x4000>;
>  	interrupts = <14 4 5>;
>  };

...this first example is now invalid and should probably just be being
extended with the new required properties.

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 122+ messages in thread

* Re: [PATCH v4 3/7] Documentation: DT: update atmel SSC with DMA binding
@ 2013-07-09 15:05         ` Mark Brown
  0 siblings, 0 replies; 122+ messages in thread
From: Mark Brown @ 2013-07-09 15:05 UTC (permalink / raw)
  To: Richard Genoud
  Cc: alsa-devel, Lars-Peter Clausen, devicetree-discuss,
	Nicolas Ferre, Liam Girdwood, linux-kernel, Bo Shen,
	Uwe Kleine-König, linux-arm-kernel


[-- Attachment #1.1: Type: text/plain, Size: 755 bytes --]

On Tue, Jul 09, 2013 at 04:25:29PM +0200, Richard Genoud wrote:

>  - reg: Should contain SSC registers location and length
>  - interrupts: Should contain SSC interrupt
> +For dma transfer:
> +- dmas: DMA specifier, consisting of a phandle to DMA controller node,
> +  the memory interface and SSC DMA channel ID (for tx and rx).
> +  See Documentation/devicetree/bindings/dma/atmel-dma.txt for details.
> +- dma-names: Must be "tx", "rx".

This is added as a required property so...

> -Example:
> +Examples:
>  ssc0: ssc@fffbc000 {
>  	compatible = "atmel,at91rm9200-ssc";
>  	reg = <0xfffbc000 0x4000>;
>  	interrupts = <14 4 5>;
>  };

...this first example is now invalid and should probably just be being
extended with the new required properties.

[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

[-- Attachment #2: Type: text/plain, Size: 0 bytes --]



^ permalink raw reply	[flat|nested] 122+ messages in thread

* [PATCH v4 3/7] Documentation: DT: update atmel SSC with DMA binding
@ 2013-07-09 15:05         ` Mark Brown
  0 siblings, 0 replies; 122+ messages in thread
From: Mark Brown @ 2013-07-09 15:05 UTC (permalink / raw)
  To: linux-arm-kernel

On Tue, Jul 09, 2013 at 04:25:29PM +0200, Richard Genoud wrote:

>  - reg: Should contain SSC registers location and length
>  - interrupts: Should contain SSC interrupt
> +For dma transfer:
> +- dmas: DMA specifier, consisting of a phandle to DMA controller node,
> +  the memory interface and SSC DMA channel ID (for tx and rx).
> +  See Documentation/devicetree/bindings/dma/atmel-dma.txt for details.
> +- dma-names: Must be "tx", "rx".

This is added as a required property so...

> -Example:
> +Examples:
>  ssc0: ssc at fffbc000 {
>  	compatible = "atmel,at91rm9200-ssc";
>  	reg = <0xfffbc000 0x4000>;
>  	interrupts = <14 4 5>;
>  };

...this first example is now invalid and should probably just be being
extended with the new required properties.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20130709/614c2105/attachment.sig>

^ permalink raw reply	[flat|nested] 122+ messages in thread

* Re: [PATCH v4 1/7] sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards
  2013-07-09 14:25       ` Richard Genoud
@ 2013-07-10  6:11         ` Bo Shen
  -1 siblings, 0 replies; 122+ messages in thread
From: Bo Shen @ 2013-07-10  6:11 UTC (permalink / raw)
  To: Richard Genoud
  Cc: Mark Brown, Nicolas Ferre, Liam Girdwood, Uwe Kleine-König,
	Lars-Peter Clausen, linux-arm-kernel, linux-kernel, alsa-devel,
	devicetree-discuss

Hi Richard,

On 7/9/2013 22:25, Richard Genoud wrote:
[snip]

> +#include <linux/module.h>
> +#include <linux/moduleparam.h>
> +#include <linux/kernel.h>
> +#include <linux/clk.h>
> +#include <linux/timer.h>
> +#include <linux/interrupt.h>
> +#include <linux/platform_device.h>
> +#include <linux/i2c.h>
> +
> +#include <linux/atmel-ssc.h>
> +
> +#include <sound/core.h>
> +#include <sound/pcm.h>
> +#include <sound/pcm_params.h>
> +#include <sound/soc.h>
> +
> +#include <asm/mach-types.h>
> +#include <mach/hardware.h>
> +#include <mach/gpio.h>
> +
> +#include "../codecs/wm8731.h"
> +#include "atmel-pcm.h"
> +#include "atmel_ssc_dai.h"

I think some of the header file include is not needed. I keep them as 
simple as following:
---8>---
#include <linux/clk.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/of_device.h>
#include <linux/pinctrl/consumer.h>

#include <sound/soc.h>

#include "../codecs/wm8731.h"
#include "atmel_ssc_dai.h"
---<8---

> +#define MCLK_RATE 12288000
> +
> +#define DRV_NAME "sam9x5-snd-wm8731"
> +
> +/*
> + * Authorized rates are:
> + * Rate = MCLK_RATE / (n * 2)
> + * Where n is in [1..4095]
> + * (cf register SSC_CMR)
> + */
> +static unsigned int rates[] = {
> +	8000,
> +	16000,
> +	32000,
> +	48000,
> +	64000,
> +	96000,
> +};

This is decided by the codec, while not ssc when ssc in slave mode.

> +static struct snd_pcm_hw_constraint_list hw_rates = {
> +	.count = ARRAY_SIZE(rates),
> +	.list = rates,
> +};
> +

[snip]

> +
> +	at91sam9x5ek_dai.dai_fmt = snd_soc_of_parse_daifmt(np, "atmel,");

We can put this into at91sam9x5ek_dai directly, not need to parse it 
then. example as following:
---8>---
.dai_fmt = SND_SOC_DAIFMT_I2S
                 | SND_SOC_DAIFMT_NB_NF
                 | SND_SOC_DAIFMT_CBM_CFM,
---<8---

Best Regards,
Bo Shen


^ permalink raw reply	[flat|nested] 122+ messages in thread

* [PATCH v4 1/7] sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards
@ 2013-07-10  6:11         ` Bo Shen
  0 siblings, 0 replies; 122+ messages in thread
From: Bo Shen @ 2013-07-10  6:11 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Richard,

On 7/9/2013 22:25, Richard Genoud wrote:
[snip]

> +#include <linux/module.h>
> +#include <linux/moduleparam.h>
> +#include <linux/kernel.h>
> +#include <linux/clk.h>
> +#include <linux/timer.h>
> +#include <linux/interrupt.h>
> +#include <linux/platform_device.h>
> +#include <linux/i2c.h>
> +
> +#include <linux/atmel-ssc.h>
> +
> +#include <sound/core.h>
> +#include <sound/pcm.h>
> +#include <sound/pcm_params.h>
> +#include <sound/soc.h>
> +
> +#include <asm/mach-types.h>
> +#include <mach/hardware.h>
> +#include <mach/gpio.h>
> +
> +#include "../codecs/wm8731.h"
> +#include "atmel-pcm.h"
> +#include "atmel_ssc_dai.h"

I think some of the header file include is not needed. I keep them as 
simple as following:
---8>---
#include <linux/clk.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/of_device.h>
#include <linux/pinctrl/consumer.h>

#include <sound/soc.h>

#include "../codecs/wm8731.h"
#include "atmel_ssc_dai.h"
---<8---

> +#define MCLK_RATE 12288000
> +
> +#define DRV_NAME "sam9x5-snd-wm8731"
> +
> +/*
> + * Authorized rates are:
> + * Rate = MCLK_RATE / (n * 2)
> + * Where n is in [1..4095]
> + * (cf register SSC_CMR)
> + */
> +static unsigned int rates[] = {
> +	8000,
> +	16000,
> +	32000,
> +	48000,
> +	64000,
> +	96000,
> +};

This is decided by the codec, while not ssc when ssc in slave mode.

> +static struct snd_pcm_hw_constraint_list hw_rates = {
> +	.count = ARRAY_SIZE(rates),
> +	.list = rates,
> +};
> +

[snip]

> +
> +	at91sam9x5ek_dai.dai_fmt = snd_soc_of_parse_daifmt(np, "atmel,");

We can put this into at91sam9x5ek_dai directly, not need to parse it 
then. example as following:
---8>---
.dai_fmt = SND_SOC_DAIFMT_I2S
                 | SND_SOC_DAIFMT_NB_NF
                 | SND_SOC_DAIFMT_CBM_CFM,
---<8---

Best Regards,
Bo Shen

^ permalink raw reply	[flat|nested] 122+ messages in thread

* Re: [PATCH v4 1/7] sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards
  2013-07-09 14:59         ` Mark Brown
@ 2013-07-10  9:25           ` Richard Genoud
  -1 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-10  9:25 UTC (permalink / raw)
  To: Mark Brown
  Cc: Nicolas Ferre, Liam Girdwood, Uwe Kleine-König, Bo Shen,
	Lars-Peter Clausen, linux-arm-kernel, linux-kernel, alsa-devel,
	devicetree-discuss

2013/7/9 Mark Brown <broonie@kernel.org>:
> On Tue, Jul 09, 2013 at 04:25:27PM +0200, Richard Genoud wrote:
>
>> +/*
>> + * Authorized rates are:
>> + * Rate = MCLK_RATE / (n * 2)
>> + * Where n is in [1..4095]
>> + * (cf register SSC_CMR)
>> + */
>> +static unsigned int rates[] = {
>> +     8000,
>> +     16000,
>> +     32000,
>> +     48000,
>> +     64000,
>> +     96000,
>> +};
>
> Shouldn't the SSC driver be enforcing this constraint if it comes from
> the SSC hardware?  If the clock is reprogrammable the usual convention
> for drivers is to not constrain if the clock is set to zero so a machine
> driver could remove the constraint.
Actually, my comment is buggy here (or at least, unrelated to the
authorized rates).
The "MCLK_RATE" is the master clock of the wm8731 codec (a 12.288MHz crystal).
According to the datasheet of wm8731, when a 12.288 crystal is used,
the authorized rates are 8, 32, 48 and 96kHz (I have to remove 16 and
64kHz).

So, is this the right place for the rates ?

>> +     ret = atmel_ssc_set_audio(0);
>> +     if (ret != 0) {
>> +             dev_err(&pdev->dev,
>> +                     "ASoC: Failed to set SSC 0 for audio: %d\n", ret);
>> +             return ret;
>> +     }
>
> Shouldn't this be a parameter in the DT too?
Yes, I'll add that to the DT.

>> +     cpu_np = of_parse_phandle(np, "atmel,ssc-controller", 0);
>> +     if (!cpu_np) {
>> +             dev_err(&pdev->dev, "ssc controller node missing\n");
>> +             ret = -EINVAL;
>> +             goto out;
>> +     }
>> +     at91sam9x5ek_dai.cpu_of_node = cpu_np;
>> +     at91sam9x5ek_dai.platform_of_node = cpu_np;
>
> After all we're looking things up in the DT...
>
>> +     at91sam9x5ek_dai.dai_fmt = snd_soc_of_parse_daifmt(np, "atmel,");
>
> Is this really something that machines would want to reconfigure?  If so
> why?
That's right. There's no point reconfiguring that because I2S is the
only possible interface.


Thanks for your comments !


Richard.

^ permalink raw reply	[flat|nested] 122+ messages in thread

* [PATCH v4 1/7] sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards
@ 2013-07-10  9:25           ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-10  9:25 UTC (permalink / raw)
  To: linux-arm-kernel

2013/7/9 Mark Brown <broonie@kernel.org>:
> On Tue, Jul 09, 2013 at 04:25:27PM +0200, Richard Genoud wrote:
>
>> +/*
>> + * Authorized rates are:
>> + * Rate = MCLK_RATE / (n * 2)
>> + * Where n is in [1..4095]
>> + * (cf register SSC_CMR)
>> + */
>> +static unsigned int rates[] = {
>> +     8000,
>> +     16000,
>> +     32000,
>> +     48000,
>> +     64000,
>> +     96000,
>> +};
>
> Shouldn't the SSC driver be enforcing this constraint if it comes from
> the SSC hardware?  If the clock is reprogrammable the usual convention
> for drivers is to not constrain if the clock is set to zero so a machine
> driver could remove the constraint.
Actually, my comment is buggy here (or at least, unrelated to the
authorized rates).
The "MCLK_RATE" is the master clock of the wm8731 codec (a 12.288MHz crystal).
According to the datasheet of wm8731, when a 12.288 crystal is used,
the authorized rates are 8, 32, 48 and 96kHz (I have to remove 16 and
64kHz).

So, is this the right place for the rates ?

>> +     ret = atmel_ssc_set_audio(0);
>> +     if (ret != 0) {
>> +             dev_err(&pdev->dev,
>> +                     "ASoC: Failed to set SSC 0 for audio: %d\n", ret);
>> +             return ret;
>> +     }
>
> Shouldn't this be a parameter in the DT too?
Yes, I'll add that to the DT.

>> +     cpu_np = of_parse_phandle(np, "atmel,ssc-controller", 0);
>> +     if (!cpu_np) {
>> +             dev_err(&pdev->dev, "ssc controller node missing\n");
>> +             ret = -EINVAL;
>> +             goto out;
>> +     }
>> +     at91sam9x5ek_dai.cpu_of_node = cpu_np;
>> +     at91sam9x5ek_dai.platform_of_node = cpu_np;
>
> After all we're looking things up in the DT...
>
>> +     at91sam9x5ek_dai.dai_fmt = snd_soc_of_parse_daifmt(np, "atmel,");
>
> Is this really something that machines would want to reconfigure?  If so
> why?
That's right. There's no point reconfiguring that because I2S is the
only possible interface.


Thanks for your comments !


Richard.

^ permalink raw reply	[flat|nested] 122+ messages in thread

* Re: [PATCH v4 1/7] sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards
  2013-07-10  6:11         ` Bo Shen
  (?)
@ 2013-07-10  9:30           ` Richard Genoud
  -1 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-10  9:30 UTC (permalink / raw)
  To: Bo Shen
  Cc: Mark Brown, Nicolas Ferre, Liam Girdwood, Uwe Kleine-König,
	Lars-Peter Clausen, linux-arm-kernel, linux-kernel, alsa-devel,
	devicetree-discuss

2013/7/10 Bo Shen <voice.shen@atmel.com>:
> Hi Richard,
Hi !

> On 7/9/2013 22:25, Richard Genoud wrote:
> [snip]
>
>
>> +#include <linux/module.h>
>> +#include <linux/moduleparam.h>
>> +#include <linux/kernel.h>
>> +#include <linux/clk.h>
>> +#include <linux/timer.h>
>> +#include <linux/interrupt.h>
>> +#include <linux/platform_device.h>
>> +#include <linux/i2c.h>
>> +
>> +#include <linux/atmel-ssc.h>
>> +
>> +#include <sound/core.h>
>> +#include <sound/pcm.h>
>> +#include <sound/pcm_params.h>
>> +#include <sound/soc.h>
>> +
>> +#include <asm/mach-types.h>
>> +#include <mach/hardware.h>
>> +#include <mach/gpio.h>
>> +
>> +#include "../codecs/wm8731.h"
>> +#include "atmel-pcm.h"
>> +#include "atmel_ssc_dai.h"
>
>
> I think some of the header file include is not needed. I keep them as simple
> as following:
> ---8>---
> #include <linux/clk.h>
> #include <linux/module.h>
> #include <linux/of.h>
> #include <linux/of_device.h>
> #include <linux/pinctrl/consumer.h>
>
> #include <sound/soc.h>
>
> #include "../codecs/wm8731.h"
> #include "atmel_ssc_dai.h"
> ---<8---
ooopps ! I forgot to do some cleaning in those after the file rework. Thanks !

>
>> +#define MCLK_RATE 12288000
>> +
>> +#define DRV_NAME "sam9x5-snd-wm8731"
>> +
>> +/*
>> + * Authorized rates are:
>> + * Rate = MCLK_RATE / (n * 2)
>> + * Where n is in [1..4095]
>> + * (cf register SSC_CMR)
>> + */
>> +static unsigned int rates[] = {
>> +       8000,
>> +       16000,
>> +       32000,
>> +       48000,
>> +       64000,
>> +       96000,
>> +};
>
>
> This is decided by the codec, while not ssc when ssc in slave mode.
yes.

>> +static struct snd_pcm_hw_constraint_list hw_rates = {
>> +       .count = ARRAY_SIZE(rates),
>> +       .list = rates,
>> +};
>> +
>
>
> [snip]
>
>
>> +
>> +       at91sam9x5ek_dai.dai_fmt = snd_soc_of_parse_daifmt(np, "atmel,");
>
>
> We can put this into at91sam9x5ek_dai directly, not need to parse it then.
> example as following:
> ---8>---
> .dai_fmt = SND_SOC_DAIFMT_I2S
>                 | SND_SOC_DAIFMT_NB_NF
>                 | SND_SOC_DAIFMT_CBM_CFM,
> ---<8---
yes, I removed that for the older machine driver, without thinking that much.
It's better hardcorded like that.


Thanks for your comments !

^ permalink raw reply	[flat|nested] 122+ messages in thread

* Re: [PATCH v4 1/7] sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards
@ 2013-07-10  9:30           ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-10  9:30 UTC (permalink / raw)
  To: Bo Shen
  Cc: alsa-devel, Lars-Peter Clausen, devicetree-discuss,
	Nicolas Ferre, Liam Girdwood, linux-kernel, Mark Brown,
	Uwe Kleine-König, linux-arm-kernel

2013/7/10 Bo Shen <voice.shen@atmel.com>:
> Hi Richard,
Hi !

> On 7/9/2013 22:25, Richard Genoud wrote:
> [snip]
>
>
>> +#include <linux/module.h>
>> +#include <linux/moduleparam.h>
>> +#include <linux/kernel.h>
>> +#include <linux/clk.h>
>> +#include <linux/timer.h>
>> +#include <linux/interrupt.h>
>> +#include <linux/platform_device.h>
>> +#include <linux/i2c.h>
>> +
>> +#include <linux/atmel-ssc.h>
>> +
>> +#include <sound/core.h>
>> +#include <sound/pcm.h>
>> +#include <sound/pcm_params.h>
>> +#include <sound/soc.h>
>> +
>> +#include <asm/mach-types.h>
>> +#include <mach/hardware.h>
>> +#include <mach/gpio.h>
>> +
>> +#include "../codecs/wm8731.h"
>> +#include "atmel-pcm.h"
>> +#include "atmel_ssc_dai.h"
>
>
> I think some of the header file include is not needed. I keep them as simple
> as following:
> ---8>---
> #include <linux/clk.h>
> #include <linux/module.h>
> #include <linux/of.h>
> #include <linux/of_device.h>
> #include <linux/pinctrl/consumer.h>
>
> #include <sound/soc.h>
>
> #include "../codecs/wm8731.h"
> #include "atmel_ssc_dai.h"
> ---<8---
ooopps ! I forgot to do some cleaning in those after the file rework. Thanks !

>
>> +#define MCLK_RATE 12288000
>> +
>> +#define DRV_NAME "sam9x5-snd-wm8731"
>> +
>> +/*
>> + * Authorized rates are:
>> + * Rate = MCLK_RATE / (n * 2)
>> + * Where n is in [1..4095]
>> + * (cf register SSC_CMR)
>> + */
>> +static unsigned int rates[] = {
>> +       8000,
>> +       16000,
>> +       32000,
>> +       48000,
>> +       64000,
>> +       96000,
>> +};
>
>
> This is decided by the codec, while not ssc when ssc in slave mode.
yes.

>> +static struct snd_pcm_hw_constraint_list hw_rates = {
>> +       .count = ARRAY_SIZE(rates),
>> +       .list = rates,
>> +};
>> +
>
>
> [snip]
>
>
>> +
>> +       at91sam9x5ek_dai.dai_fmt = snd_soc_of_parse_daifmt(np, "atmel,");
>
>
> We can put this into at91sam9x5ek_dai directly, not need to parse it then.
> example as following:
> ---8>---
> .dai_fmt = SND_SOC_DAIFMT_I2S
>                 | SND_SOC_DAIFMT_NB_NF
>                 | SND_SOC_DAIFMT_CBM_CFM,
> ---<8---
yes, I removed that for the older machine driver, without thinking that much.
It's better hardcorded like that.


Thanks for your comments !

^ permalink raw reply	[flat|nested] 122+ messages in thread

* [PATCH v4 1/7] sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards
@ 2013-07-10  9:30           ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-10  9:30 UTC (permalink / raw)
  To: linux-arm-kernel

2013/7/10 Bo Shen <voice.shen@atmel.com>:
> Hi Richard,
Hi !

> On 7/9/2013 22:25, Richard Genoud wrote:
> [snip]
>
>
>> +#include <linux/module.h>
>> +#include <linux/moduleparam.h>
>> +#include <linux/kernel.h>
>> +#include <linux/clk.h>
>> +#include <linux/timer.h>
>> +#include <linux/interrupt.h>
>> +#include <linux/platform_device.h>
>> +#include <linux/i2c.h>
>> +
>> +#include <linux/atmel-ssc.h>
>> +
>> +#include <sound/core.h>
>> +#include <sound/pcm.h>
>> +#include <sound/pcm_params.h>
>> +#include <sound/soc.h>
>> +
>> +#include <asm/mach-types.h>
>> +#include <mach/hardware.h>
>> +#include <mach/gpio.h>
>> +
>> +#include "../codecs/wm8731.h"
>> +#include "atmel-pcm.h"
>> +#include "atmel_ssc_dai.h"
>
>
> I think some of the header file include is not needed. I keep them as simple
> as following:
> ---8>---
> #include <linux/clk.h>
> #include <linux/module.h>
> #include <linux/of.h>
> #include <linux/of_device.h>
> #include <linux/pinctrl/consumer.h>
>
> #include <sound/soc.h>
>
> #include "../codecs/wm8731.h"
> #include "atmel_ssc_dai.h"
> ---<8---
ooopps ! I forgot to do some cleaning in those after the file rework. Thanks !

>
>> +#define MCLK_RATE 12288000
>> +
>> +#define DRV_NAME "sam9x5-snd-wm8731"
>> +
>> +/*
>> + * Authorized rates are:
>> + * Rate = MCLK_RATE / (n * 2)
>> + * Where n is in [1..4095]
>> + * (cf register SSC_CMR)
>> + */
>> +static unsigned int rates[] = {
>> +       8000,
>> +       16000,
>> +       32000,
>> +       48000,
>> +       64000,
>> +       96000,
>> +};
>
>
> This is decided by the codec, while not ssc when ssc in slave mode.
yes.

>> +static struct snd_pcm_hw_constraint_list hw_rates = {
>> +       .count = ARRAY_SIZE(rates),
>> +       .list = rates,
>> +};
>> +
>
>
> [snip]
>
>
>> +
>> +       at91sam9x5ek_dai.dai_fmt = snd_soc_of_parse_daifmt(np, "atmel,");
>
>
> We can put this into at91sam9x5ek_dai directly, not need to parse it then.
> example as following:
> ---8>---
> .dai_fmt = SND_SOC_DAIFMT_I2S
>                 | SND_SOC_DAIFMT_NB_NF
>                 | SND_SOC_DAIFMT_CBM_CFM,
> ---<8---
yes, I removed that for the older machine driver, without thinking that much.
It's better hardcorded like that.


Thanks for your comments !

^ permalink raw reply	[flat|nested] 122+ messages in thread

* Re: [PATCH v4 2/7] Documentation: DT: add sam9x5ek-wm8731 machine driver
  2013-07-09 15:01         ` Mark Brown
  (?)
@ 2013-07-10  9:32           ` Richard Genoud
  -1 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-10  9:32 UTC (permalink / raw)
  To: Mark Brown
  Cc: Nicolas Ferre, Liam Girdwood, Uwe Kleine-König, Bo Shen,
	Lars-Peter Clausen, linux-arm-kernel, linux-kernel, alsa-devel,
	devicetree-discuss

2013/7/9 Mark Brown <broonie@kernel.org>:
> On Tue, Jul 09, 2013 at 04:25:28PM +0200, Richard Genoud wrote:
>> This add the sound DT binding for sam9x5ek-wm8731 machine driver
>>
>> Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
>> ---
>>  .../bindings/sound/atmel-sam9x5-wm8731-audio.txt   |   30 ++++++++++++++++++++
>
> Put new binding documents in the same patch that reads them, this makes
> review easier.
ok, I'll squash it with patch 1

>> +  - atmel,audio-routing: A list of the connections between audio components.
>
> This needs to be more specific and list the available board specific
> nodes for routing.  For the CODEC you can just refer to the CODEC
> binding documentation.
Ok, I'll do that.

>> +  - atmel,format: DAI format. Must be "i2s"
>
> So why not just omit this then?
Will be removed.

>
>> +  - atmel,bitclock-master:  DAI clock master
>> +  - atmel,frame-master: DAI frame master
>
> The driver isn't handling these and there's no information on how to set
> them.
They will also go away.


Thanks !

^ permalink raw reply	[flat|nested] 122+ messages in thread

* Re: [PATCH v4 2/7] Documentation: DT: add sam9x5ek-wm8731 machine driver
@ 2013-07-10  9:32           ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-10  9:32 UTC (permalink / raw)
  To: Mark Brown
  Cc: alsa-devel, Lars-Peter Clausen, devicetree-discuss,
	Nicolas Ferre, Liam Girdwood, linux-kernel, Bo Shen,
	Uwe Kleine-König, linux-arm-kernel

2013/7/9 Mark Brown <broonie@kernel.org>:
> On Tue, Jul 09, 2013 at 04:25:28PM +0200, Richard Genoud wrote:
>> This add the sound DT binding for sam9x5ek-wm8731 machine driver
>>
>> Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
>> ---
>>  .../bindings/sound/atmel-sam9x5-wm8731-audio.txt   |   30 ++++++++++++++++++++
>
> Put new binding documents in the same patch that reads them, this makes
> review easier.
ok, I'll squash it with patch 1

>> +  - atmel,audio-routing: A list of the connections between audio components.
>
> This needs to be more specific and list the available board specific
> nodes for routing.  For the CODEC you can just refer to the CODEC
> binding documentation.
Ok, I'll do that.

>> +  - atmel,format: DAI format. Must be "i2s"
>
> So why not just omit this then?
Will be removed.

>
>> +  - atmel,bitclock-master:  DAI clock master
>> +  - atmel,frame-master: DAI frame master
>
> The driver isn't handling these and there's no information on how to set
> them.
They will also go away.


Thanks !

^ permalink raw reply	[flat|nested] 122+ messages in thread

* [PATCH v4 2/7] Documentation: DT: add sam9x5ek-wm8731 machine driver
@ 2013-07-10  9:32           ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-10  9:32 UTC (permalink / raw)
  To: linux-arm-kernel

2013/7/9 Mark Brown <broonie@kernel.org>:
> On Tue, Jul 09, 2013 at 04:25:28PM +0200, Richard Genoud wrote:
>> This add the sound DT binding for sam9x5ek-wm8731 machine driver
>>
>> Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
>> ---
>>  .../bindings/sound/atmel-sam9x5-wm8731-audio.txt   |   30 ++++++++++++++++++++
>
> Put new binding documents in the same patch that reads them, this makes
> review easier.
ok, I'll squash it with patch 1

>> +  - atmel,audio-routing: A list of the connections between audio components.
>
> This needs to be more specific and list the available board specific
> nodes for routing.  For the CODEC you can just refer to the CODEC
> binding documentation.
Ok, I'll do that.

>> +  - atmel,format: DAI format. Must be "i2s"
>
> So why not just omit this then?
Will be removed.

>
>> +  - atmel,bitclock-master:  DAI clock master
>> +  - atmel,frame-master: DAI frame master
>
> The driver isn't handling these and there's no information on how to set
> them.
They will also go away.


Thanks !

^ permalink raw reply	[flat|nested] 122+ messages in thread

* Re: [PATCH v4 3/7] Documentation: DT: update atmel SSC with DMA binding
  2013-07-09 15:05         ` Mark Brown
@ 2013-07-10  9:48           ` Richard Genoud
  -1 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-10  9:48 UTC (permalink / raw)
  To: Mark Brown
  Cc: Nicolas Ferre, Liam Girdwood, Uwe Kleine-König, Bo Shen,
	Lars-Peter Clausen, linux-arm-kernel, linux-kernel, alsa-devel,
	devicetree-discuss

2013/7/9 Mark Brown <broonie@kernel.org>:
> On Tue, Jul 09, 2013 at 04:25:29PM +0200, Richard Genoud wrote:
>
>>  - reg: Should contain SSC registers location and length
>>  - interrupts: Should contain SSC interrupt
>> +For dma transfer:
>> +- dmas: DMA specifier, consisting of a phandle to DMA controller node,
>> +  the memory interface and SSC DMA channel ID (for tx and rx).
>> +  See Documentation/devicetree/bindings/dma/atmel-dma.txt for details.
>> +- dma-names: Must be "tx", "rx".
>
> This is added as a required property so...
>
>> -Example:
>> +Examples:
>>  ssc0: ssc@fffbc000 {
>>       compatible = "atmel,at91rm9200-ssc";
>>       reg = <0xfffbc000 0x4000>;
>>       interrupts = <14 4 5>;
>>  };
>
> ...this first example is now invalid and should probably just be being
> extended with the new required properties.

Well, I have to rewrite that to make it clearer.
The thing is:
with "atmel,at91rm9200-ssc" the SSC doesn't work with DMA.
with "atmel,at91sam9g45-ssc", the SSC work ONLY with DMA.

So the dmas/dma-names properties are only required for g45-ssc, and
useless for rm9200-ssc

Maybe the best will be to write a paragraph for g45-ssc and another
for rm9200-ssc, even if there's some identical lines between them.


Thanks !

Richard.

^ permalink raw reply	[flat|nested] 122+ messages in thread

* [PATCH v4 3/7] Documentation: DT: update atmel SSC with DMA binding
@ 2013-07-10  9:48           ` Richard Genoud
  0 siblings, 0 replies; 122+ messages in thread
From: Richard Genoud @ 2013-07-10  9:48 UTC (permalink / raw)
  To: linux-arm-kernel

2013/7/9 Mark Brown <broonie@kernel.org>:
> On Tue, Jul 09, 2013 at 04:25:29PM +0200, Richard Genoud wrote:
>
>>  - reg: Should contain SSC registers location and length
>>  - interrupts: Should contain SSC interrupt
>> +For dma transfer:
>> +- dmas: DMA specifier, consisting of a phandle to DMA controller node,
>> +  the memory interface and SSC DMA channel ID (for tx and rx).
>> +  See Documentation/devicetree/bindings/dma/atmel-dma.txt for details.
>> +- dma-names: Must be "tx", "rx".
>
> This is added as a required property so...
>
>> -Example:
>> +Examples:
>>  ssc0: ssc at fffbc000 {
>>       compatible = "atmel,at91rm9200-ssc";
>>       reg = <0xfffbc000 0x4000>;
>>       interrupts = <14 4 5>;
>>  };
>
> ...this first example is now invalid and should probably just be being
> extended with the new required properties.

Well, I have to rewrite that to make it clearer.
The thing is:
with "atmel,at91rm9200-ssc" the SSC doesn't work with DMA.
with "atmel,at91sam9g45-ssc", the SSC work ONLY with DMA.

So the dmas/dma-names properties are only required for g45-ssc, and
useless for rm9200-ssc

Maybe the best will be to write a paragraph for g45-ssc and another
for rm9200-ssc, even if there's some identical lines between them.


Thanks !

Richard.

^ permalink raw reply	[flat|nested] 122+ messages in thread

* Re: [PATCH v4 1/7] sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards
  2013-07-10  9:25           ` Richard Genoud
  (?)
@ 2013-07-10 10:00             ` Mark Brown
  -1 siblings, 0 replies; 122+ messages in thread
From: Mark Brown @ 2013-07-10 10:00 UTC (permalink / raw)
  To: Richard Genoud
  Cc: Nicolas Ferre, Liam Girdwood, Uwe Kleine-König, Bo Shen,
	Lars-Peter Clausen, linux-arm-kernel, linux-kernel, alsa-devel,
	devicetree-discuss

[-- Attachment #1: Type: text/plain, Size: 838 bytes --]

On Wed, Jul 10, 2013 at 11:25:37AM +0200, Richard Genoud wrote:
> 2013/7/9 Mark Brown <broonie@kernel.org>:

> > Shouldn't the SSC driver be enforcing this constraint if it comes from
> > the SSC hardware?  If the clock is reprogrammable the usual convention
> > for drivers is to not constrain if the clock is set to zero so a machine
> > driver could remove the constraint.

> Actually, my comment is buggy here (or at least, unrelated to the
> authorized rates).
> The "MCLK_RATE" is the master clock of the wm8731 codec (a 12.288MHz crystal).
> According to the datasheet of wm8731, when a 12.288 crystal is used,
> the authorized rates are 8, 32, 48 and 96kHz (I have to remove 16 and
> 64kHz).

> So, is this the right place for the rates ?

No, the CODEC driver should be enforcing the restrictions if that's
where they come from.

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 122+ messages in thread

* Re: [PATCH v4 1/7] sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards
@ 2013-07-10 10:00             ` Mark Brown
  0 siblings, 0 replies; 122+ messages in thread
From: Mark Brown @ 2013-07-10 10:00 UTC (permalink / raw)
  To: Richard Genoud
  Cc: alsa-devel, Lars-Peter Clausen, devicetree-discuss,
	Nicolas Ferre, Liam Girdwood, linux-kernel, Bo Shen,
	Uwe Kleine-König, linux-arm-kernel


[-- Attachment #1.1: Type: text/plain, Size: 838 bytes --]

On Wed, Jul 10, 2013 at 11:25:37AM +0200, Richard Genoud wrote:
> 2013/7/9 Mark Brown <broonie@kernel.org>:

> > Shouldn't the SSC driver be enforcing this constraint if it comes from
> > the SSC hardware?  If the clock is reprogrammable the usual convention
> > for drivers is to not constrain if the clock is set to zero so a machine
> > driver could remove the constraint.

> Actually, my comment is buggy here (or at least, unrelated to the
> authorized rates).
> The "MCLK_RATE" is the master clock of the wm8731 codec (a 12.288MHz crystal).
> According to the datasheet of wm8731, when a 12.288 crystal is used,
> the authorized rates are 8, 32, 48 and 96kHz (I have to remove 16 and
> 64kHz).

> So, is this the right place for the rates ?

No, the CODEC driver should be enforcing the restrictions if that's
where they come from.

[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

[-- Attachment #2: Type: text/plain, Size: 176 bytes --]

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 122+ messages in thread

* [PATCH v4 1/7] sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards
@ 2013-07-10 10:00             ` Mark Brown
  0 siblings, 0 replies; 122+ messages in thread
From: Mark Brown @ 2013-07-10 10:00 UTC (permalink / raw)
  To: linux-arm-kernel

On Wed, Jul 10, 2013 at 11:25:37AM +0200, Richard Genoud wrote:
> 2013/7/9 Mark Brown <broonie@kernel.org>:

> > Shouldn't the SSC driver be enforcing this constraint if it comes from
> > the SSC hardware?  If the clock is reprogrammable the usual convention
> > for drivers is to not constrain if the clock is set to zero so a machine
> > driver could remove the constraint.

> Actually, my comment is buggy here (or at least, unrelated to the
> authorized rates).
> The "MCLK_RATE" is the master clock of the wm8731 codec (a 12.288MHz crystal).
> According to the datasheet of wm8731, when a 12.288 crystal is used,
> the authorized rates are 8, 32, 48 and 96kHz (I have to remove 16 and
> 64kHz).

> So, is this the right place for the rates ?

No, the CODEC driver should be enforcing the restrictions if that's
where they come from.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20130710/45362626/attachment.sig>

^ permalink raw reply	[flat|nested] 122+ messages in thread

* Re: [PATCH v4 3/7] Documentation: DT: update atmel SSC with DMA binding
  2013-07-10  9:48           ` Richard Genoud
@ 2013-07-10 10:01             ` Mark Brown
  -1 siblings, 0 replies; 122+ messages in thread
From: Mark Brown @ 2013-07-10 10:01 UTC (permalink / raw)
  To: Richard Genoud
  Cc: Nicolas Ferre, Liam Girdwood, Uwe Kleine-König, Bo Shen,
	Lars-Peter Clausen, linux-arm-kernel, linux-kernel, alsa-devel,
	devicetree-discuss

[-- Attachment #1: Type: text/plain, Size: 727 bytes --]

On Wed, Jul 10, 2013 at 11:48:27AM +0200, Richard Genoud wrote:
> 2013/7/9 Mark Brown <broonie@kernel.org>:

> > ...this first example is now invalid and should probably just be being
> > extended with the new required properties.

> Well, I have to rewrite that to make it clearer.
> The thing is:
> with "atmel,at91rm9200-ssc" the SSC doesn't work with DMA.
> with "atmel,at91sam9g45-ssc", the SSC work ONLY with DMA.

> So the dmas/dma-names properties are only required for g45-ssc, and
> useless for rm9200-ssc

> Maybe the best will be to write a paragraph for g45-ssc and another
> for rm9200-ssc, even if there's some identical lines between them.

OK, or just write a section "Required for devices with compatible X".

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 122+ messages in thread

* [PATCH v4 3/7] Documentation: DT: update atmel SSC with DMA binding
@ 2013-07-10 10:01             ` Mark Brown
  0 siblings, 0 replies; 122+ messages in thread
From: Mark Brown @ 2013-07-10 10:01 UTC (permalink / raw)
  To: linux-arm-kernel

On Wed, Jul 10, 2013 at 11:48:27AM +0200, Richard Genoud wrote:
> 2013/7/9 Mark Brown <broonie@kernel.org>:

> > ...this first example is now invalid and should probably just be being
> > extended with the new required properties.

> Well, I have to rewrite that to make it clearer.
> The thing is:
> with "atmel,at91rm9200-ssc" the SSC doesn't work with DMA.
> with "atmel,at91sam9g45-ssc", the SSC work ONLY with DMA.

> So the dmas/dma-names properties are only required for g45-ssc, and
> useless for rm9200-ssc

> Maybe the best will be to write a paragraph for g45-ssc and another
> for rm9200-ssc, even if there's some identical lines between them.

OK, or just write a section "Required for devices with compatible X".
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20130710/2065b88d/attachment.sig>

^ permalink raw reply	[flat|nested] 122+ messages in thread

end of thread, other threads:[~2013-07-10 10:01 UTC | newest]

Thread overview: 122+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-07-08 13:29 [PATCH v2 0/5] Sound support for at91sam9x5-wm8731 based boards Richard Genoud
2013-07-08 13:29 ` Richard Genoud
2013-07-08 13:29 ` Richard Genoud
2013-07-08 13:29 ` [PATCH v2 1/5] sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards Richard Genoud
2013-07-08 13:29   ` Richard Genoud
2013-07-08 13:29   ` Richard Genoud
2013-07-08 14:39   ` [alsa-devel] " Lars-Peter Clausen
2013-07-08 14:39     ` Lars-Peter Clausen
2013-07-09  7:37     ` Richard Genoud
2013-07-09  7:37       ` Richard Genoud
2013-07-08 15:07   ` Mark Brown
2013-07-08 15:07     ` Mark Brown
2013-07-08 15:07     ` Mark Brown
2013-07-09  8:19     ` Richard Genoud
2013-07-09  8:19       ` Richard Genoud
2013-07-09  8:37       ` Bo Shen
2013-07-09  8:37         ` Bo Shen
2013-07-09  9:29       ` Mark Brown
2013-07-09  9:29         ` Mark Brown
2013-07-09  9:29         ` Mark Brown
2013-07-09 10:27         ` Richard Genoud
2013-07-09 10:27           ` Richard Genoud
2013-07-09 10:27           ` Richard Genoud
2013-07-08 13:29 ` [PATCH v2 2/5] ARM: AT91: DTS: sam9x5: add SSC DMA parameters Richard Genoud
2013-07-08 13:29   ` Richard Genoud
2013-07-08 15:07   ` Mark Brown
2013-07-08 15:07     ` Mark Brown
2013-07-08 15:07     ` Mark Brown
2013-07-09  8:27     ` Richard Genoud
2013-07-09  8:27       ` Richard Genoud
2013-07-09  8:27       ` Richard Genoud
2013-07-09  9:32       ` Mark Brown
2013-07-09  9:32         ` Mark Brown
2013-07-09  9:32         ` Mark Brown
2013-07-09  9:46         ` Richard Genoud
2013-07-09  9:46           ` Richard Genoud
2013-07-08 13:29 ` [PATCH v2 3/5] ARM: AT91: DTS: sam9x5ek: add WM8731 codec Richard Genoud
2013-07-08 13:29   ` Richard Genoud
2013-07-08 14:36   ` [alsa-devel] " Mark Brown
2013-07-08 14:36     ` Mark Brown
2013-07-08 14:36     ` Mark Brown
2013-07-08 13:29 ` [PATCH v2 4/5] ARM: AT91: DTS: sam9x5ek: add sound configuration Richard Genoud
2013-07-08 13:29   ` Richard Genoud
2013-07-08 13:29   ` Richard Genoud
2013-07-08 13:29 ` [PATCH v2 5/5] ARM: AT91: DTS: sam9x5ek: enable SSC Richard Genoud
2013-07-08 13:29   ` Richard Genoud
2013-07-08 13:53 ` [PATCH v2 0/5] Sound support for at91sam9x5-wm8731 based boards Nicolas Ferre
2013-07-08 13:53   ` Nicolas Ferre
2013-07-08 13:53   ` Nicolas Ferre
2013-07-09 12:28 ` [PATCH v3 0/7] " Richard Genoud
2013-07-09 12:28   ` Richard Genoud
2013-07-09 12:28   ` [PATCH v3 1/7] sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards Richard Genoud
2013-07-09 12:28     ` Richard Genoud
2013-07-09 12:28     ` Richard Genoud
2013-07-09 12:28   ` [PATCH v3 2/7] Documentation: DT: add sam9x5ek-wm8731 machine driver Richard Genoud
2013-07-09 12:28     ` Richard Genoud
2013-07-09 12:28   ` [PATCH v3 3/7] Documentation: DT: update atmel SSC with DMA binding Richard Genoud
2013-07-09 12:28     ` Richard Genoud
2013-07-09 13:19     ` Richard Genoud
2013-07-09 13:19       ` Richard Genoud
2013-07-09 13:20       ` Nicolas Ferre
2013-07-09 13:20         ` Nicolas Ferre
2013-07-09 13:20         ` Nicolas Ferre
2013-07-09 13:31         ` Richard Genoud
2013-07-09 13:31           ` Richard Genoud
2013-07-09 12:28   ` [PATCH v3 4/7] ARM: AT91: DTS: sam9x5: add SSC DMA parameters Richard Genoud
2013-07-09 12:28     ` Richard Genoud
2013-07-09 12:28   ` [PATCH v3 5/7] ARM: AT91: DTS: sam9x5ek: add WM8731 codec Richard Genoud
2013-07-09 12:28     ` Richard Genoud
2013-07-09 12:28   ` [PATCH v3 6/7] ARM: AT91: DTS: sam9x5ek: add sound configuration Richard Genoud
2013-07-09 12:28     ` Richard Genoud
2013-07-09 12:28   ` [PATCH v3 7/7] ARM: AT91: DTS: sam9x5ek: enable SSC Richard Genoud
2013-07-09 12:28     ` Richard Genoud
2013-07-09 14:25   ` [PATCH v4 0/7] Sound support for at91sam9x5-wm8731 based boards Richard Genoud
2013-07-09 14:25     ` Richard Genoud
2013-07-09 14:25     ` [PATCH v4 1/7] sound: sam9x5_wm8731: machine driver for at91sam9x5 wm8731 boards Richard Genoud
2013-07-09 14:25       ` Richard Genoud
2013-07-09 14:59       ` Mark Brown
2013-07-09 14:59         ` Mark Brown
2013-07-09 14:59         ` Mark Brown
2013-07-10  9:25         ` Richard Genoud
2013-07-10  9:25           ` Richard Genoud
2013-07-10 10:00           ` Mark Brown
2013-07-10 10:00             ` Mark Brown
2013-07-10 10:00             ` Mark Brown
2013-07-10  6:11       ` Bo Shen
2013-07-10  6:11         ` Bo Shen
2013-07-10  9:30         ` Richard Genoud
2013-07-10  9:30           ` Richard Genoud
2013-07-10  9:30           ` Richard Genoud
2013-07-09 14:25     ` [PATCH v4 2/7] Documentation: DT: add sam9x5ek-wm8731 machine driver Richard Genoud
2013-07-09 14:25       ` Richard Genoud
2013-07-09 15:01       ` Mark Brown
2013-07-09 15:01         ` Mark Brown
2013-07-09 15:01         ` Mark Brown
2013-07-10  9:32         ` Richard Genoud
2013-07-10  9:32           ` Richard Genoud
2013-07-10  9:32           ` Richard Genoud
2013-07-09 14:25     ` [PATCH v4 3/7] Documentation: DT: update atmel SSC with DMA binding Richard Genoud
2013-07-09 14:25       ` Richard Genoud
2013-07-09 14:25       ` Richard Genoud
2013-07-09 15:05       ` Mark Brown
2013-07-09 15:05         ` Mark Brown
2013-07-09 15:05         ` Mark Brown
2013-07-10  9:48         ` Richard Genoud
2013-07-10  9:48           ` Richard Genoud
2013-07-10 10:01           ` Mark Brown
2013-07-10 10:01             ` Mark Brown
2013-07-09 14:25     ` [PATCH v4 4/7] ARM: AT91: DTS: sam9x5: add SSC DMA parameters Richard Genoud
2013-07-09 14:25       ` Richard Genoud
2013-07-09 14:25       ` Richard Genoud
2013-07-09 14:25     ` [PATCH v4 5/7] ARM: AT91: DTS: sam9x5ek: add WM8731 codec Richard Genoud
2013-07-09 14:25       ` Richard Genoud
2013-07-09 14:25     ` [PATCH v4 6/7] ARM: AT91: DTS: sam9x5ek: add sound configuration Richard Genoud
2013-07-09 14:25       ` Richard Genoud
2013-07-09 14:25     ` [PATCH v4 7/7] ARM: AT91: DTS: sam9x5ek: enable SSC Richard Genoud
2013-07-09 14:25       ` Richard Genoud
2013-07-09 14:42     ` [PATCH v4 0/7] Sound support for at91sam9x5-wm8731 based boards Mark Brown
2013-07-09 14:42       ` Mark Brown
2013-07-09 14:52       ` Richard Genoud
2013-07-09 14:52         ` Richard Genoud
2013-07-09 14:52         ` Richard Genoud

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.