linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/17] MOP500 Audio fix-ups and DT enablement
@ 2012-08-24 14:01 Lee Jones
  2012-08-24 14:01 ` [PATCH 01/17] ASoC: Ux500: Move MSP pinctrl setup into the MSP driver Lee Jones
                   ` (16 more replies)
  0 siblings, 17 replies; 36+ messages in thread
From: Lee Jones @ 2012-08-24 14:01 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel
  Cc: STEricsson_nomadik_linux, linus.walleij, arnd, broonie,
	ola.o.lilja, roger.xr.nilsson, alsa-devel

This patch-set provides the MOP500 Audio driver with a few small
fix-ups along with Device Tree enablement for MOP500 Core and the
MSPs. You'll notice that we've left the PCM out for the time being
and continue to register that using platform code. This is because
we're still in the middle of discussions pertaining to how this
pseudo-device should be handled. We also pass pinctrl responsibility
to the MSP driver instead of setting it up in platform code, which
is an unnecessary over-head. 

 Documentation/devicetree/bindings/mfd/ab8500.txt   |   15 ++
 .../devicetree/bindings/sound/ux500-mop500.txt     |   39 +++
 .../devicetree/bindings/sound/ux500-msp.txt        |   43 ++++
 arch/arm/boot/dts/dbx5x0.dtsi                      |   39 +++
 arch/arm/boot/dts/snowball.dts                     |   16 ++
 arch/arm/mach-ux500/Makefile                       |    2 +-
 arch/arm/mach-ux500/board-mop500-audio.c           |  199 +++++++++++++++
 arch/arm/mach-ux500/board-mop500-msp.c             |  267 --------------------
 arch/arm/mach-ux500/board-mop500-msp.h             |   14 -
 arch/arm/mach-ux500/board-mop500.c                 |   22 +-
 arch/arm/mach-ux500/board-mop500.h                 |    8 +
 arch/arm/mach-ux500/include/mach/msp.h             |    2 -
 include/linux/mfd/abx500/ab8500-codec.h            |    6 +-
 sound/soc/codecs/ab8500-codec.c                    |   81 ++++++
 sound/soc/ux500/mop500.c                           |   47 +++-
 sound/soc/ux500/ux500_msp_dai.c                    |    6 +
 sound/soc/ux500/ux500_msp_i2s.c                    |   89 +++++--
 sound/soc/ux500/ux500_msp_i2s.h                    |    8 +-
 18 files changed, 584 insertions(+), 319 deletions(-)


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

* [PATCH 01/17] ASoC: Ux500: Move MSP pinctrl setup into the MSP driver
  2012-08-24 14:01 [PATCH 00/17] MOP500 Audio fix-ups and DT enablement Lee Jones
@ 2012-08-24 14:01 ` Lee Jones
  2012-08-30 23:46   ` Linus Walleij
  2012-09-10 16:46   ` Lee Jones
  2012-08-24 14:01 ` [PATCH 02/17] ASoC: Ux500: Enable MOP500 driver for Device Tree Lee Jones
                   ` (15 subsequent siblings)
  16 siblings, 2 replies; 36+ messages in thread
From: Lee Jones @ 2012-08-24 14:01 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel
  Cc: STEricsson_nomadik_linux, linus.walleij, arnd, broonie,
	ola.o.lilja, roger.xr.nilsson, alsa-devel, Lee Jones

In the initial submission of the MSP driver msp1 and msp3's associated
pinctrl mechanism was passed back to platform code using a plat_init()
call-back routine, but it has no place in platform code. The MSP driver
should set this up for the appropriate ports. Instead we use a use_pinctrl
identifier which is passed from platform_data/Device Tree which indicates
which ports should use pinctrl.

CC: alsa-devel@alsa-project.org
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
 arch/arm/mach-ux500/board-mop500-msp.c |   75 +-------------------------------
 arch/arm/mach-ux500/include/mach/msp.h |    2 -
 sound/soc/ux500/ux500_msp_i2s.c        |   67 +++++++++++++++++++++-------
 sound/soc/ux500/ux500_msp_i2s.h        |    8 +++-
 4 files changed, 58 insertions(+), 94 deletions(-)

diff --git a/arch/arm/mach-ux500/board-mop500-msp.c b/arch/arm/mach-ux500/board-mop500-msp.c
index df15646..fc78d5d 100644
--- a/arch/arm/mach-ux500/board-mop500-msp.c
+++ b/arch/arm/mach-ux500/board-mop500-msp.c
@@ -23,53 +23,6 @@
 #include "devices-db8500.h"
 #include "pins-db8500.h"
 
-/* MSP1/3 Tx/Rx usage protection */
-static DEFINE_SPINLOCK(msp_rxtx_lock);
-
-/* Reference Count */
-static int msp_rxtx_ref;
-
-/* Pin modes */
-struct pinctrl *msp1_p;
-struct pinctrl_state *msp1_def;
-struct pinctrl_state *msp1_sleep;
-
-int msp13_i2s_init(void)
-{
-	int retval = 0;
-	unsigned long flags;
-
-	spin_lock_irqsave(&msp_rxtx_lock, flags);
-	if (msp_rxtx_ref == 0 && !(IS_ERR(msp1_p) || IS_ERR(msp1_def))) {
-		retval = pinctrl_select_state(msp1_p, msp1_def);
-		if (retval)
-			pr_err("could not set MSP1 defstate\n");
-	}
-	if (!retval)
-		msp_rxtx_ref++;
-	spin_unlock_irqrestore(&msp_rxtx_lock, flags);
-
-	return retval;
-}
-
-int msp13_i2s_exit(void)
-{
-	int retval = 0;
-	unsigned long flags;
-
-	spin_lock_irqsave(&msp_rxtx_lock, flags);
-	WARN_ON(!msp_rxtx_ref);
-	msp_rxtx_ref--;
-	if (msp_rxtx_ref == 0 && !(IS_ERR(msp1_p) || IS_ERR(msp1_sleep))) {
-		retval = pinctrl_select_state(msp1_p, msp1_sleep);
-		if (retval)
-			pr_err("could not set MSP1 sleepstate\n");
-	}
-	spin_unlock_irqrestore(&msp_rxtx_lock, flags);
-
-	return retval;
-}
-
 static struct stedma40_chan_cfg msp0_dma_rx = {
 	.high_priority = true,
 	.dir = STEDMA40_PERIPH_TO_MEM,
@@ -132,8 +85,6 @@ static struct msp_i2s_platform_data msp1_platform_data = {
 	.id = MSP_I2S_1,
 	.msp_i2s_dma_rx = NULL,
 	.msp_i2s_dma_tx = &msp1_dma_tx,
-	.msp_i2s_init = msp13_i2s_init,
-	.msp_i2s_exit = msp13_i2s_exit,
 };
 
 static struct stedma40_chan_cfg msp2_dma_rx = {
@@ -219,47 +170,23 @@ static struct msp_i2s_platform_data msp3_platform_data = {
 	.id		= MSP_I2S_3,
 	.msp_i2s_dma_rx	= &msp1_dma_rx,
 	.msp_i2s_dma_tx	= NULL,
-	.msp_i2s_init = msp13_i2s_init,
-	.msp_i2s_exit = msp13_i2s_exit,
 };
 
 int mop500_msp_init(struct device *parent)
 {
-	struct platform_device *msp1;
-
 	pr_info("%s: Register platform-device 'snd-soc-mop500'.\n", __func__);
 	platform_device_register(&snd_soc_mop500);
 
 	pr_info("Initialize MSP I2S-devices.\n");
 	db8500_add_msp_i2s(parent, 0, U8500_MSP0_BASE, IRQ_DB8500_MSP0,
 			   &msp0_platform_data);
-	msp1 = db8500_add_msp_i2s(parent, 1, U8500_MSP1_BASE, IRQ_DB8500_MSP1,
+	db8500_add_msp_i2s(parent, 1, U8500_MSP1_BASE, IRQ_DB8500_MSP1,
 			   &msp1_platform_data);
 	db8500_add_msp_i2s(parent, 2, U8500_MSP2_BASE, IRQ_DB8500_MSP2,
 			   &msp2_platform_data);
 	db8500_add_msp_i2s(parent, 3, U8500_MSP3_BASE, IRQ_DB8500_MSP1,
 			   &msp3_platform_data);
 
-	/* Get the pinctrl handle for MSP1 */
-	if (msp1) {
-		msp1_p = pinctrl_get(&msp1->dev);
-		if (IS_ERR(msp1_p))
-			dev_err(&msp1->dev, "could not get MSP1 pinctrl\n");
-		else {
-			msp1_def = pinctrl_lookup_state(msp1_p,
-							PINCTRL_STATE_DEFAULT);
-			if (IS_ERR(msp1_def)) {
-				dev_err(&msp1->dev,
-					"could not get MSP1 defstate\n");
-			}
-			msp1_sleep = pinctrl_lookup_state(msp1_p,
-							  PINCTRL_STATE_SLEEP);
-			if (IS_ERR(msp1_sleep))
-				dev_err(&msp1->dev,
-					"could not get MSP1 idlestate\n");
-		}
-	}
-
 	pr_info("%s: Register platform-device 'ux500-pcm'\n", __func__);
 	platform_device_register(&ux500_pcm);
 
diff --git a/arch/arm/mach-ux500/include/mach/msp.h b/arch/arm/mach-ux500/include/mach/msp.h
index 798be19..3cc7142 100644
--- a/arch/arm/mach-ux500/include/mach/msp.h
+++ b/arch/arm/mach-ux500/include/mach/msp.h
@@ -22,8 +22,6 @@ struct msp_i2s_platform_data {
 	enum msp_i2s_id id;
 	struct stedma40_chan_cfg *msp_i2s_dma_rx;
 	struct stedma40_chan_cfg *msp_i2s_dma_tx;
-	int (*msp_i2s_init) (void);
-	int (*msp_i2s_exit) (void);
 };
 
 #endif
diff --git a/sound/soc/ux500/ux500_msp_i2s.c b/sound/soc/ux500/ux500_msp_i2s.c
index 36be11e..08813c5 100644
--- a/sound/soc/ux500/ux500_msp_i2s.c
+++ b/sound/soc/ux500/ux500_msp_i2s.c
@@ -15,6 +15,7 @@
 
 #include <linux/module.h>
 #include <linux/platform_device.h>
+#include <linux/pinctrl/consumer.h>
 #include <linux/delay.h>
 #include <linux/slab.h>
 
@@ -25,6 +26,9 @@
 
 #include "ux500_msp_i2s.h"
 
+/* MSP1/3 Tx/Rx usage protection */
+static DEFINE_SPINLOCK(msp_rxtx_lock);
+
  /* Protocol desciptors */
 static const struct msp_protdesc prot_descs[] = {
 	{ /* I2S */
@@ -352,17 +356,23 @@ static int configure_multichannel(struct ux500_msp *msp,
 
 static int enable_msp(struct ux500_msp *msp, struct ux500_msp_config *config)
 {
-	int status = 0;
+	int status = 0, retval = 0;
 	u32 reg_val_DMACR, reg_val_GCR;
+	unsigned long flags;
 
 	/* Check msp state whether in RUN or CONFIGURED Mode */
-	if ((msp->msp_state == MSP_STATE_IDLE) && (msp->plat_init)) {
-		status = msp->plat_init();
-		if (status) {
-			dev_err(msp->dev, "%s: ERROR: Failed to init MSP (%d)!\n",
-				__func__, status);
-			return status;
+	if (msp->msp_state == MSP_STATE_IDLE) {
+		spin_lock_irqsave(&msp_rxtx_lock, flags);
+		if (msp->pinctrl_rxtx_ref == 0 &&
+			!(IS_ERR(msp->pinctrl_p) || IS_ERR(msp->pinctrl_def))) {
+			retval = pinctrl_select_state(msp->pinctrl_p,
+						msp->pinctrl_def);
+			if (retval)
+				pr_err("could not set MSP defstate\n");
 		}
+		if (!retval)
+			msp->pinctrl_rxtx_ref++;
+		spin_unlock_irqrestore(&msp_rxtx_lock, flags);
 	}
 
 	/* Configure msp with protocol dependent settings */
@@ -620,7 +630,8 @@ int ux500_msp_i2s_trigger(struct ux500_msp *msp, int cmd, int direction)
 
 int ux500_msp_i2s_close(struct ux500_msp *msp, unsigned int dir)
 {
-	int status = 0;
+	int status = 0, retval = 0;
+	unsigned long flags;
 
 	dev_dbg(msp->dev, "%s: Enter (dir = 0x%01x).\n", __func__, dir);
 
@@ -631,12 +642,19 @@ int ux500_msp_i2s_close(struct ux500_msp *msp, unsigned int dir)
 		writel((readl(msp->registers + MSP_GCR) &
 			       (~(FRAME_GEN_ENABLE | SRG_ENABLE))),
 			      msp->registers + MSP_GCR);
-		if (msp->plat_exit)
-			status = msp->plat_exit();
-			if (status)
-				dev_warn(msp->dev,
-					"%s: WARN: ux500_msp_i2s_exit failed (%d)!\n",
-					__func__, status);
+
+		spin_lock_irqsave(&msp_rxtx_lock, flags);
+		WARN_ON(!msp->pinctrl_rxtx_ref);
+		msp->pinctrl_rxtx_ref--;
+		if (msp->pinctrl_rxtx_ref == 0 &&
+			!(IS_ERR(msp->pinctrl_p) || IS_ERR(msp->pinctrl_sleep))) {
+			retval = pinctrl_select_state(msp->pinctrl_p,
+						msp->pinctrl_sleep);
+			if (retval)
+				pr_err("could not set MSP sleepstate\n");
+		}
+		spin_unlock_irqrestore(&msp_rxtx_lock, flags);
+
 		writel(0, msp->registers + MSP_GCR);
 		writel(0, msp->registers + MSP_TCF);
 		writel(0, msp->registers + MSP_RCF);
@@ -678,8 +696,6 @@ int ux500_msp_i2s_init_msp(struct platform_device *pdev,
 
 	msp->id = platform_data->id;
 	msp->dev = &pdev->dev;
-	msp->plat_init = platform_data->msp_i2s_init;
-	msp->plat_exit = platform_data->msp_i2s_exit;
 	msp->dma_cfg_rx = platform_data->msp_i2s_dma_rx;
 	msp->dma_cfg_tx = platform_data->msp_i2s_dma_tx;
 
@@ -717,6 +733,25 @@ int ux500_msp_i2s_init_msp(struct platform_device *pdev,
 	dev_dbg(&pdev->dev, "I2S device-name: '%s'\n", i2s_cont->name);
 	msp->i2s_cont = i2s_cont;
 
+	msp->pinctrl_p = pinctrl_get(msp->dev);
+	if (IS_ERR(msp->pinctrl_p))
+		dev_err(&pdev->dev, "could not get MSP pinctrl\n");
+	else {
+		msp->pinctrl_def = pinctrl_lookup_state(msp->pinctrl_p,
+						PINCTRL_STATE_DEFAULT);
+		if (IS_ERR(msp->pinctrl_def)) {
+			dev_err(&pdev->dev,
+				"could not get MSP defstate (%li)\n",
+				PTR_ERR(msp->pinctrl_def));
+		}
+		msp->pinctrl_sleep = pinctrl_lookup_state(msp->pinctrl_p,
+						PINCTRL_STATE_SLEEP);
+		if (IS_ERR(msp->pinctrl_sleep))
+			dev_err(&pdev->dev,
+				"could not get MSP idlestate (%li)\n",
+				PTR_ERR(msp->pinctrl_def));
+	}
+
 	return 0;
 
 err_i2s_cont:
diff --git a/sound/soc/ux500/ux500_msp_i2s.h b/sound/soc/ux500/ux500_msp_i2s.h
index 2d9136d..1311c0d 100644
--- a/sound/soc/ux500/ux500_msp_i2s.h
+++ b/sound/soc/ux500/ux500_msp_i2s.h
@@ -524,14 +524,18 @@ struct ux500_msp {
 	struct dma_chan *rx_pipeid;
 	enum msp_state msp_state;
 	int (*transfer) (struct ux500_msp *msp, struct i2s_message *message);
-	int (*plat_init) (void);
-	int (*plat_exit) (void);
 	struct timer_list notify_timer;
 	int def_elem_len;
 	unsigned int dir_busy;
 	int loopback_enable;
 	u32 backup_regs[MAX_MSP_BACKUP_REGS];
 	unsigned int f_bitclk;
+	/* Pin modes */
+	struct pinctrl *pinctrl_p;
+	struct pinctrl_state *pinctrl_def;
+	struct pinctrl_state *pinctrl_sleep;
+	/* Reference Count */
+	int pinctrl_rxtx_ref;
 };
 
 struct ux500_msp_dma_params {
-- 
1.7.9.5


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

* [PATCH 02/17] ASoC: Ux500: Enable MOP500 driver for Device Tree
  2012-08-24 14:01 [PATCH 00/17] MOP500 Audio fix-ups and DT enablement Lee Jones
  2012-08-24 14:01 ` [PATCH 01/17] ASoC: Ux500: Move MSP pinctrl setup into the MSP driver Lee Jones
@ 2012-08-24 14:01 ` Lee Jones
  2012-08-24 14:01 ` [PATCH 03/17] ASoC: Ux500: Enable ux500 MSP " Lee Jones
                   ` (14 subsequent siblings)
  16 siblings, 0 replies; 36+ messages in thread
From: Lee Jones @ 2012-08-24 14:01 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel
  Cc: STEricsson_nomadik_linux, linus.walleij, arnd, broonie,
	ola.o.lilja, roger.xr.nilsson, alsa-devel, Lee Jones

Here we ensure that the MOP500 audio driver will be probed during a
Device Tree boot. We also parse the sound node to link together the
codec, dma and the CPU-side Digital Audio Interface.

CC: alsa-devel@alsa-project.org
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
 sound/soc/ux500/mop500.c |   40 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/sound/soc/ux500/mop500.c b/sound/soc/ux500/mop500.c
index 31c4d26..6840df7 100644
--- a/sound/soc/ux500/mop500.c
+++ b/sound/soc/ux500/mop500.c
@@ -16,6 +16,7 @@
 #include <linux/module.h>
 #include <linux/io.h>
 #include <linux/spi/spi.h>
+#include <linux/of.h>
 
 #include <sound/soc.h>
 #include <sound/initval.h>
@@ -56,8 +57,35 @@ static struct snd_soc_card mop500_card = {
 	.num_links = ARRAY_SIZE(mop500_dai_links),
 };
 
+static int __devinit mop500_of_probe(struct platform_device *pdev,
+				struct device_node *np)
+{
+	struct device_node *codec_np, *msp_np[2];
+	int i;
+
+	msp_np[0] = of_parse_phandle(np, "stericsson,cpu-dai", 0);
+	msp_np[1] = of_parse_phandle(np, "stericsson,cpu-dai", 1);
+	codec_np  = of_parse_phandle(np, "stericsson,audio-codec", 0);
+
+	if (!(msp_np[0] && msp_np[1] && codec_np)) {
+		dev_err(&pdev->dev, "Phandle missing or invalid\n");
+		return -EINVAL;
+	}
+
+	for (i = 0; i < 2; i++) {
+		mop500_dai_links[i].cpu_of_node = msp_np[i];
+		mop500_dai_links[i].cpu_dai_name = NULL;
+		mop500_dai_links[i].codec_of_node = codec_np;
+		mop500_dai_links[i].codec_name = NULL;
+	}
+
+	snd_soc_of_parse_card_name(&mop500_card, "stericsson,card-name");
+
+	return 0;
+}
 static int __devinit mop500_probe(struct platform_device *pdev)
 {
+	struct device_node *np = pdev->dev.of_node;
 	int ret;
 
 	pr_debug("%s: Enter.\n", __func__);
@@ -66,6 +94,12 @@ static int __devinit mop500_probe(struct platform_device *pdev)
 
 	mop500_card.dev = &pdev->dev;
 
+	if (np) {
+		ret = mop500_of_probe(pdev, np);
+		if (ret)
+			return ret;
+	}
+
 	dev_dbg(&pdev->dev, "%s: Card %s: Set platform drvdata.\n",
 		__func__, mop500_card.name);
 	platform_set_drvdata(pdev, &mop500_card);
@@ -101,10 +135,16 @@ static int __devexit mop500_remove(struct platform_device *pdev)
 	return 0;
 }
 
+static const struct of_device_id snd_soc_mop500_match[] = {
+	{ .compatible = "stericsson,snd-soc-mop500", },
+	{},
+};
+
 static struct platform_driver snd_soc_mop500_driver = {
 	.driver = {
 		.owner = THIS_MODULE,
 		.name = "snd-soc-mop500",
+		.of_match_table = snd_soc_mop500_match,
 	},
 	.probe = mop500_probe,
 	.remove = __devexit_p(mop500_remove),
-- 
1.7.9.5


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

* [PATCH 03/17] ASoC: Ux500: Enable ux500 MSP driver for Device Tree
  2012-08-24 14:01 [PATCH 00/17] MOP500 Audio fix-ups and DT enablement Lee Jones
  2012-08-24 14:01 ` [PATCH 01/17] ASoC: Ux500: Move MSP pinctrl setup into the MSP driver Lee Jones
  2012-08-24 14:01 ` [PATCH 02/17] ASoC: Ux500: Enable MOP500 driver for Device Tree Lee Jones
@ 2012-08-24 14:01 ` Lee Jones
  2012-08-24 14:01 ` [PATCH 04/17] ASoC: codecs: Enable AB8500 CODEC " Lee Jones
                   ` (13 subsequent siblings)
  16 siblings, 0 replies; 36+ messages in thread
From: Lee Jones @ 2012-08-24 14:01 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel
  Cc: STEricsson_nomadik_linux, linus.walleij, arnd, broonie,
	ola.o.lilja, roger.xr.nilsson, alsa-devel, Lee Jones

Register both parts of the MSP driver from Device Tree so that they
are probed when Device Tree is enabled. Also, as there is platform
data involved, we ensure that there is allocated memory to place the
configuration into and that the correct information is extracted from
the DT binary.

CC: alsa-devel@alsa-project.org
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
 sound/soc/ux500/ux500_msp_dai.c |    6 ++++++
 sound/soc/ux500/ux500_msp_i2s.c |   22 +++++++++++++++++++---
 2 files changed, 25 insertions(+), 3 deletions(-)

diff --git a/sound/soc/ux500/ux500_msp_dai.c b/sound/soc/ux500/ux500_msp_dai.c
index 772cb19..0f7dd49 100644
--- a/sound/soc/ux500/ux500_msp_dai.c
+++ b/sound/soc/ux500/ux500_msp_dai.c
@@ -833,10 +833,16 @@ static int __devexit ux500_msp_drv_remove(struct platform_device *pdev)
 	return 0;
 }
 
+static const struct of_device_id ux500_msp_i2c_match[] = {
+	{ .compatible = "stericsson,ux500-msp-i2s", },
+	{},
+};
+
 static struct platform_driver msp_i2s_driver = {
 	.driver = {
 		.name = "ux500-msp-i2s",
 		.owner = THIS_MODULE,
+		.of_match_table = ux500_msp_i2c_match,
 	},
 	.probe = ux500_msp_drv_probe,
 	.remove = ux500_msp_drv_remove,
diff --git a/sound/soc/ux500/ux500_msp_i2s.c b/sound/soc/ux500/ux500_msp_i2s.c
index 08813c5..cb7bdae 100644
--- a/sound/soc/ux500/ux500_msp_i2s.c
+++ b/sound/soc/ux500/ux500_msp_i2s.c
@@ -18,6 +18,7 @@
 #include <linux/pinctrl/consumer.h>
 #include <linux/delay.h>
 #include <linux/slab.h>
+#include <linux/of.h>
 
 #include <mach/hardware.h>
 #include <mach/msp.h>
@@ -684,16 +685,31 @@ int ux500_msp_i2s_init_msp(struct platform_device *pdev,
 	int ret = 0;
 	struct resource *res = NULL;
 	struct i2s_controller *i2s_cont;
+	struct device_node *np = pdev->dev.of_node;
 	struct ux500_msp *msp;
 
-	dev_dbg(&pdev->dev, "%s: Enter (name: %s, id: %d).\n", __func__,
-		pdev->name, platform_data->id);
-
 	*msp_p = devm_kzalloc(&pdev->dev, sizeof(struct ux500_msp), GFP_KERNEL);
 	msp = *msp_p;
 	if (!msp)
 		return -ENOMEM;
 
+	if (np) {
+		if (!platform_data) {
+			platform_data = devm_kzalloc(&pdev->dev,
+				sizeof(struct msp_i2s_platform_data), GFP_KERNEL);
+			if (!platform_data)
+				ret = -ENOMEM;
+		}
+	} else
+		if (!platform_data)
+			ret = -EINVAL;
+
+	if (ret)
+		goto err_res;
+
+	dev_dbg(&pdev->dev, "%s: Enter (name: %s, id: %d).\n", __func__,
+		pdev->name, platform_data->id);
+
 	msp->id = platform_data->id;
 	msp->dev = &pdev->dev;
 	msp->dma_cfg_rx = platform_data->msp_i2s_dma_rx;
-- 
1.7.9.5


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

* [PATCH 04/17] ASoC: codecs: Enable AB8500 CODEC for Device Tree
  2012-08-24 14:01 [PATCH 00/17] MOP500 Audio fix-ups and DT enablement Lee Jones
                   ` (2 preceding siblings ...)
  2012-08-24 14:01 ` [PATCH 03/17] ASoC: Ux500: Enable ux500 MSP " Lee Jones
@ 2012-08-24 14:01 ` Lee Jones
  2012-08-24 14:01 ` [PATCH 05/17] ASoC: Ux500: Minor coding layout changes Lee Jones
                   ` (12 subsequent siblings)
  16 siblings, 0 replies; 36+ messages in thread
From: Lee Jones @ 2012-08-24 14:01 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel
  Cc: STEricsson_nomadik_linux, linus.walleij, arnd, broonie,
	ola.o.lilja, roger.xr.nilsson, alsa-devel, Lee Jones

We continue to allow the AB8500 CODEC to be registered via the AB8500
Multi Functional Device API, only this time we extract its configuration
from the Device Tree binary.

CC: alsa-devel@alsa-project.org
Acked-by: Ola Lilja <ola.o.lilja@stericsson.com>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
 include/linux/mfd/abx500/ab8500-codec.h |    6 ++-
 sound/soc/codecs/ab8500-codec.c         |   81 +++++++++++++++++++++++++++++++
 2 files changed, 85 insertions(+), 2 deletions(-)

diff --git a/include/linux/mfd/abx500/ab8500-codec.h b/include/linux/mfd/abx500/ab8500-codec.h
index dc65292..d707941 100644
--- a/include/linux/mfd/abx500/ab8500-codec.h
+++ b/include/linux/mfd/abx500/ab8500-codec.h
@@ -23,7 +23,8 @@ enum amic_type {
 /* Mic-biases */
 enum amic_micbias {
 	AMIC_MICBIAS_VAMIC1,
-	AMIC_MICBIAS_VAMIC2
+	AMIC_MICBIAS_VAMIC2,
+	AMIC_MICBIAS_UNKNOWN
 };
 
 /* Bias-voltage */
@@ -31,7 +32,8 @@ enum ear_cm_voltage {
 	EAR_CMV_0_95V,
 	EAR_CMV_1_10V,
 	EAR_CMV_1_27V,
-	EAR_CMV_1_58V
+	EAR_CMV_1_58V,
+	EAR_CMV_UNKNOWN
 };
 
 /* Analog microphone settings */
diff --git a/sound/soc/codecs/ab8500-codec.c b/sound/soc/codecs/ab8500-codec.c
index 23b4018..99dffcf 100644
--- a/sound/soc/codecs/ab8500-codec.c
+++ b/sound/soc/codecs/ab8500-codec.c
@@ -34,6 +34,7 @@
 #include <linux/mfd/abx500/ab8500-sysctrl.h>
 #include <linux/mfd/abx500/ab8500-codec.h>
 #include <linux/regulator/consumer.h>
+#include <linux/of.h>
 
 #include <sound/core.h>
 #include <sound/pcm.h>
@@ -2394,9 +2395,65 @@ struct snd_soc_dai_driver ab8500_codec_dai[] = {
 	}
 };
 
+static void ab8500_codec_of_probe(struct device *dev, struct device_node *np,
+				struct ab8500_codec_platform_data *codec)
+{
+	u32 value;
+
+	if (of_get_property(np, "stericsson,amic1-type-single-ended", NULL))
+		codec->amics.mic1_type = AMIC_TYPE_SINGLE_ENDED;
+	else
+		codec->amics.mic1_type = AMIC_TYPE_DIFFERENTIAL;
+
+	if (of_get_property(np, "stericsson,amic2-type-single-ended", NULL))
+		codec->amics.mic2_type = AMIC_TYPE_SINGLE_ENDED;
+	else
+		codec->amics.mic2_type = AMIC_TYPE_DIFFERENTIAL;
+
+	/* Has a non-standard Vamic been requested? */
+	if (of_get_property(np, "stericsson,amic1a-bias-vamic2", NULL))
+		codec->amics.mic1a_micbias = AMIC_MICBIAS_VAMIC2;
+	else
+		codec->amics.mic1a_micbias = AMIC_MICBIAS_VAMIC1;
+
+	if (of_get_property(np, "stericsson,amic1b-bias-vamic2", NULL))
+		codec->amics.mic1b_micbias = AMIC_MICBIAS_VAMIC2;
+	else
+		codec->amics.mic1b_micbias = AMIC_MICBIAS_VAMIC1;
+
+	if (of_get_property(np, "stericsson,amic2-bias-vamic1", NULL))
+		codec->amics.mic2_micbias = AMIC_MICBIAS_VAMIC1;
+	else
+		codec->amics.mic2_micbias = AMIC_MICBIAS_VAMIC2;
+
+	if (!of_property_read_u32(np, "stericsson,earpeice-cmv", &value)) {
+		switch (value) {
+		case 950 :
+			codec->ear_cmv = EAR_CMV_0_95V;
+			break;
+		case 1100 :
+			codec->ear_cmv = EAR_CMV_1_10V;
+			break;
+		case 1270 :
+			codec->ear_cmv = EAR_CMV_1_27V;
+			break;
+		case 1580 :
+			codec->ear_cmv = EAR_CMV_1_58V;
+			break;
+		default :
+			codec->ear_cmv = EAR_CMV_UNKNOWN;
+			dev_err(dev, "Unsuitable earpiece voltage found in DT\n");
+		}
+	} else {
+		dev_warn(dev, "No earpiece voltage found in DT - using default\n");
+		codec->ear_cmv = EAR_CMV_0_95V;
+	}
+}
+
 static int ab8500_codec_probe(struct snd_soc_codec *codec)
 {
 	struct device *dev = codec->dev;
+	struct device_node *np = dev->of_node;
 	struct ab8500_codec_drvdata *drvdata = dev_get_drvdata(dev);
 	struct ab8500_platform_data *pdata;
 	struct filter_control *fc;
@@ -2407,6 +2464,30 @@ static int ab8500_codec_probe(struct snd_soc_codec *codec)
 	/* Setup AB8500 according to board-settings */
 	pdata = (struct ab8500_platform_data *)dev_get_platdata(dev->parent);
 
+	if (np) {
+		if (!pdata)
+			pdata = devm_kzalloc(dev,
+					sizeof(struct ab8500_platform_data),
+					GFP_KERNEL);
+
+		if (pdata && !pdata->codec)
+			pdata->codec
+				= devm_kzalloc(dev,
+					sizeof(struct ab8500_codec_platform_data),
+					GFP_KERNEL);
+
+		if (!(pdata && pdata->codec))
+			return -ENOMEM;
+
+		ab8500_codec_of_probe(dev, np, pdata->codec);
+
+	} else {
+		if (!(pdata && pdata->codec)) {
+			dev_err(dev, "No codec platform data or DT found\n");
+			return -EINVAL;
+		}
+	}
+
 	/* Inform SoC Core that we have our own I/O arrangements. */
 	codec->control_data = (void *)true;
 
-- 
1.7.9.5


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

* [PATCH 05/17] ASoC: Ux500: Minor coding layout changes
  2012-08-24 14:01 [PATCH 00/17] MOP500 Audio fix-ups and DT enablement Lee Jones
                   ` (3 preceding siblings ...)
  2012-08-24 14:01 ` [PATCH 04/17] ASoC: codecs: Enable AB8500 CODEC " Lee Jones
@ 2012-08-24 14:01 ` Lee Jones
  2012-09-10 16:44   ` Lee Jones
  2012-08-24 14:01 ` [PATCH 06/17] Documentation: Define the MOP500 Audio Machine Driver Device Tree bindings Lee Jones
                   ` (11 subsequent siblings)
  16 siblings, 1 reply; 36+ messages in thread
From: Lee Jones @ 2012-08-24 14:01 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel
  Cc: STEricsson_nomadik_linux, linus.walleij, arnd, broonie,
	ola.o.lilja, roger.xr.nilsson, alsa-devel, Lee Jones

Includes removal of duplicate debug print affirming entry into
the probe function, an unnecessary line break of a coding line
<80 chars and a white space change (unintentional tab).

Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
 sound/soc/ux500/mop500.c |    7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/sound/soc/ux500/mop500.c b/sound/soc/ux500/mop500.c
index 6840df7..356611d 100644
--- a/sound/soc/ux500/mop500.c
+++ b/sound/soc/ux500/mop500.c
@@ -88,8 +88,6 @@ static int __devinit mop500_probe(struct platform_device *pdev)
 	struct device_node *np = pdev->dev.of_node;
 	int ret;
 
-	pr_debug("%s: Enter.\n", __func__);
-
 	dev_dbg(&pdev->dev, "%s: Enter.\n", __func__);
 
 	mop500_card.dev = &pdev->dev;
@@ -117,8 +115,7 @@ static int __devinit mop500_probe(struct platform_device *pdev)
 	ret = snd_soc_register_card(&mop500_card);
 	if (ret)
 		dev_err(&pdev->dev,
-			"Error: snd_soc_register_card failed (%d)!\n",
-			ret);
+			"Error: snd_soc_register_card failed (%d)!\n", ret);
 
 	return ret;
 }
@@ -131,7 +128,7 @@ static int __devexit mop500_remove(struct platform_device *pdev)
 
 	snd_soc_unregister_card(mop500_card);
 	mop500_ab8500_remove(mop500_card);
-	
+
 	return 0;
 }
 
-- 
1.7.9.5


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

* [PATCH 06/17] Documentation: Define the MOP500 Audio Machine Driver Device Tree bindings
  2012-08-24 14:01 [PATCH 00/17] MOP500 Audio fix-ups and DT enablement Lee Jones
                   ` (4 preceding siblings ...)
  2012-08-24 14:01 ` [PATCH 05/17] ASoC: Ux500: Minor coding layout changes Lee Jones
@ 2012-08-24 14:01 ` Lee Jones
  2012-09-10 16:44   ` Lee Jones
  2012-08-24 14:01 ` [PATCH 07/17] Documentation: Define the MSP " Lee Jones
                   ` (10 subsequent siblings)
  16 siblings, 1 reply; 36+ messages in thread
From: Lee Jones @ 2012-08-24 14:01 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel
  Cc: STEricsson_nomadik_linux, linus.walleij, arnd, broonie,
	ola.o.lilja, roger.xr.nilsson, alsa-devel, Lee Jones

Here we add the required documentation for the new Device Tree
bindings pertaining to the MOP500 Audio Machine driver.

CC: alsa-devel@alsa-project.org
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
 .../devicetree/bindings/sound/ux500-mop500.txt     |   39 ++++++++++++++++++++
 1 file changed, 39 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/sound/ux500-mop500.txt

diff --git a/Documentation/devicetree/bindings/sound/ux500-mop500.txt b/Documentation/devicetree/bindings/sound/ux500-mop500.txt
new file mode 100644
index 0000000..48e071c
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/ux500-mop500.txt
@@ -0,0 +1,39 @@
+* MOP500 Audio Machine Driver
+
+This node is responsible for linking together all ux500 Audio Driver components.
+
+Required properties:
+ - compatible              : "stericsson,snd-soc-mop500"
+
+Non-standard properties:
+ - stericsson,cpu-dai      : Phandle to the CPU-side DAI
+ - stericsson,audio-codec  : Phandle to the Audio CODEC
+ - stericsson,card-name    : Over-ride default card name
+
+Example:
+
+	sound {
+		compatible = "stericsson,snd-soc-mop500";
+
+		stericsson,cpu-dai = <&msp1 &msp3>;
+		stericsson,audio-codec = <&codec>;
+	};
+
+	msp1: msp@80124000 {
+		compatible = "stericsson,ux500-msp-i2s";
+		reg = <0x80124000 0x1000>;
+		interrupts = <0 62 0x4>;
+		v-ape-supply = <&db8500_vape_reg>;
+	};
+
+	msp3: msp@80125000 {
+		compatible = "stericsson,ux500-msp-i2s";
+		reg = <0x80125000 0x1000>;
+		interrupts = <0 62 0x4>;
+		v-ape-supply = <&db8500_vape_reg>;
+	};
+
+	codec: ab8500-codec {
+		compatible = "stericsson,ab8500-codec";
+		stericsson,earpeice-cmv = <950>; /* Units in mV. */
+	};
-- 
1.7.9.5


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

* [PATCH 07/17] Documentation: Define the MSP Driver Device Tree bindings
  2012-08-24 14:01 [PATCH 00/17] MOP500 Audio fix-ups and DT enablement Lee Jones
                   ` (5 preceding siblings ...)
  2012-08-24 14:01 ` [PATCH 06/17] Documentation: Define the MOP500 Audio Machine Driver Device Tree bindings Lee Jones
@ 2012-08-24 14:01 ` Lee Jones
  2012-09-10 16:43   ` Lee Jones
  2012-08-24 14:01 ` [PATCH 08/17] ARM: ux500: Clean-up MSP platform code Lee Jones
                   ` (9 subsequent siblings)
  16 siblings, 1 reply; 36+ messages in thread
From: Lee Jones @ 2012-08-24 14:01 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel
  Cc: STEricsson_nomadik_linux, linus.walleij, arnd, broonie,
	ola.o.lilja, roger.xr.nilsson, alsa-devel, Lee Jones

Here we add the required documentation for the new Device Tree
bindings pertaining to the MSP CPU-side DAI Driver.

CC: alsa-devel@alsa-project.org
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
 .../devicetree/bindings/sound/ux500-msp.txt        |   43 ++++++++++++++++++++
 1 file changed, 43 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/sound/ux500-msp.txt

diff --git a/Documentation/devicetree/bindings/sound/ux500-msp.txt b/Documentation/devicetree/bindings/sound/ux500-msp.txt
new file mode 100644
index 0000000..99acd9c
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/ux500-msp.txt
@@ -0,0 +1,43 @@
+* ux500 MSP (CPU-side Digital Audio Interface)
+
+Required properties:
+ - compatible       :"stericsson,ux500-msp-i2s"
+ - reg              : Physical base address and length of the device's registers.
+
+Optional properties:
+ - interrupts       : The interrupt output from the device.
+ - interrupt-parent : The parent interrupt controller.
+ - <name>-supply    : Phandle to the regulator <name> supply
+
+Example:
+
+	sound {
+		compatible = "stericsson,snd-soc-mop500";
+
+		stericsson,platform-pcm-dma = <&pcm>;
+		stericsson,cpu-dai = <&msp1 &msp3>;
+		stericsson,audio-codec = <&codec>;
+	};
+
+	pcm: ux500-pcm {
+		compatible = "stericsson,ux500-pcm";
+	};
+
+	msp1: msp@80124000 {
+		compatible = "stericsson,ux500-msp-i2s";
+		reg = <0x80124000 0x1000>;
+		interrupts = <0 62 0x4>;
+		v-ape-supply = <&db8500_vape_reg>;
+	};
+
+	msp3: msp@80125000 {
+		compatible = "stericsson,ux500-msp-i2s";
+		reg = <0x80125000 0x1000>;
+		interrupts = <0 62 0x4>;
+		v-ape-supply = <&db8500_vape_reg>;
+	};
+
+	codec: ab8500-codec {
+		compatible = "stericsson,ab8500-codec";
+		stericsson,earpeice-cmv = <950>; /* Units in mV. */
+	};
-- 
1.7.9.5


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

* [PATCH 08/17] ARM: ux500: Clean-up MSP platform code
  2012-08-24 14:01 [PATCH 00/17] MOP500 Audio fix-ups and DT enablement Lee Jones
                   ` (6 preceding siblings ...)
  2012-08-24 14:01 ` [PATCH 07/17] Documentation: Define the MSP " Lee Jones
@ 2012-08-24 14:01 ` Lee Jones
  2012-08-24 14:01 ` [PATCH 09/17] ARM: ux500: Add AB8500 CODEC node to DB8500 Device Tree Lee Jones
                   ` (8 subsequent siblings)
  16 siblings, 0 replies; 36+ messages in thread
From: Lee Jones @ 2012-08-24 14:01 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel
  Cc: STEricsson_nomadik_linux, linus.walleij, arnd, broonie,
	ola.o.lilja, roger.xr.nilsson, alsa-devel, Lee Jones

This patch contains a couple of general MSP clean-ups pertaining to
layout changes and changing functions to be void instead of int instead
of regardlessly returning '0'.

Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
 arch/arm/mach-ux500/board-mop500-msp.c |   24 +++++++++++-------------
 arch/arm/mach-ux500/board-mop500-msp.h |   14 --------------
 arch/arm/mach-ux500/board-mop500.c     |    1 -
 arch/arm/mach-ux500/board-mop500.h     |    3 +++
 4 files changed, 14 insertions(+), 28 deletions(-)
 delete mode 100644 arch/arm/mach-ux500/board-mop500-msp.h

diff --git a/arch/arm/mach-ux500/board-mop500-msp.c b/arch/arm/mach-ux500/board-mop500-msp.c
index fc78d5d..1a67577 100644
--- a/arch/arm/mach-ux500/board-mop500-msp.c
+++ b/arch/arm/mach-ux500/board-mop500-msp.c
@@ -144,20 +144,20 @@ static struct platform_device *db8500_add_msp_i2s(struct device *parent,
 
 /* Platform device for ASoC MOP500 machine */
 static struct platform_device snd_soc_mop500 = {
-		.name = "snd-soc-mop500",
-		.id = 0,
-		.dev = {
-			.platform_data = NULL,
-		},
+	.name = "snd-soc-mop500",
+	.id = 0,
+	.dev = {
+		.platform_data = NULL,
+	},
 };
 
 /* Platform device for Ux500-PCM */
 static struct platform_device ux500_pcm = {
-		.name = "ux500-pcm",
-		.id = 0,
-		.dev = {
-			.platform_data = NULL,
-		},
+	.name = "ux500-pcm",
+	.id = 0,
+	.dev = {
+		.platform_data = NULL,
+	},
 };
 
 static struct msp_i2s_platform_data msp2_platform_data = {
@@ -172,7 +172,7 @@ static struct msp_i2s_platform_data msp3_platform_data = {
 	.msp_i2s_dma_tx	= NULL,
 };
 
-int mop500_msp_init(struct device *parent)
+void mop500_msp_init(struct device *parent)
 {
 	pr_info("%s: Register platform-device 'snd-soc-mop500'.\n", __func__);
 	platform_device_register(&snd_soc_mop500);
@@ -189,6 +189,4 @@ int mop500_msp_init(struct device *parent)
 
 	pr_info("%s: Register platform-device 'ux500-pcm'\n", __func__);
 	platform_device_register(&ux500_pcm);
-
-	return 0;
 }
diff --git a/arch/arm/mach-ux500/board-mop500-msp.h b/arch/arm/mach-ux500/board-mop500-msp.h
deleted file mode 100644
index 6fcfb5e..0000000
--- a/arch/arm/mach-ux500/board-mop500-msp.h
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
- * Copyright (C) ST-Ericsson SA 2012
- *
- * Author: Ola Lilja <ola.o.lilja@stericsson.com>,
- *         for ST-Ericsson.
- *
- * License terms:
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as published
- * by the Free Software Foundation.
- */
-
-void mop500_msp_init(struct device *parent);
diff --git a/arch/arm/mach-ux500/board-mop500.c b/arch/arm/mach-ux500/board-mop500.c
index 5d9600b..11dd962 100644
--- a/arch/arm/mach-ux500/board-mop500.c
+++ b/arch/arm/mach-ux500/board-mop500.c
@@ -54,7 +54,6 @@
 #include "devices-db8500.h"
 #include "board-mop500.h"
 #include "board-mop500-regulators.h"
-#include "board-mop500-msp.h"
 
 static struct gpio_led snowball_led_array[] = {
 	{
diff --git a/arch/arm/mach-ux500/board-mop500.h b/arch/arm/mach-ux500/board-mop500.h
index d04a8e6..1d7316b 100644
--- a/arch/arm/mach-ux500/board-mop500.h
+++ b/arch/arm/mach-ux500/board-mop500.h
@@ -92,6 +92,9 @@ void __init mop500_stuib_init(void);
 void __init mop500_pinmaps_init(void);
 void __init snowball_pinmaps_init(void);
 void __init hrefv60_pinmaps_init(void);
+void mop500_msp_init(struct device *parent);
+/* Due for removal once the MSP driver has been fully DT:ed. */
+void mop500_of_msp_init(struct device *parent);
 
 int __init mop500_uib_init(void);
 void mop500_uib_i2c_add(int busnum, struct i2c_board_info *info,
-- 
1.7.9.5


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

* [PATCH 09/17] ARM: ux500: Add AB8500 CODEC node to DB8500 Device Tree
  2012-08-24 14:01 [PATCH 00/17] MOP500 Audio fix-ups and DT enablement Lee Jones
                   ` (7 preceding siblings ...)
  2012-08-24 14:01 ` [PATCH 08/17] ARM: ux500: Clean-up MSP platform code Lee Jones
@ 2012-08-24 14:01 ` Lee Jones
  2012-08-30 23:50   ` Linus Walleij
  2012-08-24 14:01 ` [PATCH 10/17] ARM: ux500: Fork MSP platform registration for step-by-step DT enablement Lee Jones
                   ` (7 subsequent siblings)
  16 siblings, 1 reply; 36+ messages in thread
From: Lee Jones @ 2012-08-24 14:01 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel
  Cc: STEricsson_nomadik_linux, linus.walleij, arnd, broonie,
	ola.o.lilja, roger.xr.nilsson, alsa-devel, Lee Jones

Ensure correct probing and pass though important configuration
options to the AB8500 CODEC driver when DT is enabled

Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
 arch/arm/boot/dts/dbx5x0.dtsi |    6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/arch/arm/boot/dts/dbx5x0.dtsi b/arch/arm/boot/dts/dbx5x0.dtsi
index 3180a9c..7f8c9db 100644
--- a/arch/arm/boot/dts/dbx5x0.dtsi
+++ b/arch/arm/boot/dts/dbx5x0.dtsi
@@ -389,6 +389,12 @@
 					compatible = "stericsson,ab8500-debug";
 				};
 
+				codec: ab8500-codec {
+					compatible = "stericsson,ab8500-codec";
+
+					stericsson,earpeice-cmv = <950>; /* Units in mV. */
+				};
+
 				ab8500-regulators {
 					compatible = "stericsson,ab8500-regulator";
 
-- 
1.7.9.5


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

* [PATCH 10/17] ARM: ux500: Fork MSP platform registration for step-by-step DT enablement
  2012-08-24 14:01 [PATCH 00/17] MOP500 Audio fix-ups and DT enablement Lee Jones
                   ` (8 preceding siblings ...)
  2012-08-24 14:01 ` [PATCH 09/17] ARM: ux500: Add AB8500 CODEC node to DB8500 Device Tree Lee Jones
@ 2012-08-24 14:01 ` Lee Jones
  2012-08-24 14:01 ` [PATCH 11/17] ARM: ux500: Pass MSP DMA platform data though AUXDATA Lee Jones
                   ` (6 subsequent siblings)
  16 siblings, 0 replies; 36+ messages in thread
From: Lee Jones @ 2012-08-24 14:01 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel
  Cc: STEricsson_nomadik_linux, linus.walleij, arnd, broonie,
	ola.o.lilja, roger.xr.nilsson, alsa-devel, Lee Jones

We've done this before and it worked well last time. Here we're
duplicating a complex registration function to ease the process
of enabling it for Device Tree. As there are quite a few steps
taken during the registration process, it makes sense to break
them up into more manageable chunks. This patch will aid us.

Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
 arch/arm/mach-ux500/board-mop500-msp.c |   20 ++++++++++++++++++++
 arch/arm/mach-ux500/board-mop500.c     |    2 +-
 2 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/arch/arm/mach-ux500/board-mop500-msp.c b/arch/arm/mach-ux500/board-mop500-msp.c
index 1a67577..24a3604 100644
--- a/arch/arm/mach-ux500/board-mop500-msp.c
+++ b/arch/arm/mach-ux500/board-mop500-msp.c
@@ -172,6 +172,26 @@ static struct msp_i2s_platform_data msp3_platform_data = {
 	.msp_i2s_dma_tx	= NULL,
 };
 
+/* Due for removal once the MSP driver has been fully DT:ed. */
+void mop500_of_msp_init(struct device *parent)
+{
+	pr_info("%s: Register platform-device 'snd-soc-u8500'.\n", __func__);
+	platform_device_register(&snd_soc_mop500);
+
+	pr_info("Initialize MSP I2S-devices.\n");
+	db8500_add_msp_i2s(parent, 0, U8500_MSP0_BASE, IRQ_DB8500_MSP0,
+			   &msp0_platform_data);
+	db8500_add_msp_i2s(parent, 1, U8500_MSP1_BASE, IRQ_DB8500_MSP1,
+			   &msp1_platform_data);
+	db8500_add_msp_i2s(parent, 2, U8500_MSP2_BASE, IRQ_DB8500_MSP2,
+			   &msp2_platform_data);
+	db8500_add_msp_i2s(parent, 3, U8500_MSP3_BASE, IRQ_DB8500_MSP1,
+			   &msp3_platform_data);
+
+	pr_info("%s: Register platform-device 'ux500-pcm'\n", __func__);
+	platform_device_register(&ux500_pcm);
+}
+
 void mop500_msp_init(struct device *parent)
 {
 	pr_info("%s: Register platform-device 'snd-soc-mop500'.\n", __func__);
diff --git a/arch/arm/mach-ux500/board-mop500.c b/arch/arm/mach-ux500/board-mop500.c
index 11dd962..8f419b1 100644
--- a/arch/arm/mach-ux500/board-mop500.c
+++ b/arch/arm/mach-ux500/board-mop500.c
@@ -807,7 +807,7 @@ static void __init u8500_init_machine(void)
 		mop500_uib_init();
 
 	} else if (of_machine_is_compatible("calaosystems,snowball-a9500")) {
-		mop500_msp_init(parent);
+		mop500_of_msp_init(parent);
 	} else if (of_machine_is_compatible("st-ericsson,hrefv60+")) {
 		/*
 		 * The HREFv60 board removed a GPIO expander and routed
-- 
1.7.9.5


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

* [PATCH 11/17] ARM: ux500: Pass MSP DMA platform data though AUXDATA
  2012-08-24 14:01 [PATCH 00/17] MOP500 Audio fix-ups and DT enablement Lee Jones
                   ` (9 preceding siblings ...)
  2012-08-24 14:01 ` [PATCH 10/17] ARM: ux500: Fork MSP platform registration for step-by-step DT enablement Lee Jones
@ 2012-08-24 14:01 ` Lee Jones
  2012-08-24 14:01 ` [PATCH 12/17] ARM: ux500: Stop registering the MOP500 Audio driver from platform code Lee Jones
                   ` (5 subsequent siblings)
  16 siblings, 0 replies; 36+ messages in thread
From: Lee Jones @ 2012-08-24 14:01 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel
  Cc: STEricsson_nomadik_linux, linus.walleij, arnd, broonie,
	ola.o.lilja, roger.xr.nilsson, alsa-devel, Lee Jones

It isn't currently possible to pass all platform specific configuration
though Device Tree. Thinks like device names used in the clock
infrastructure, call-backs and DMA information have to be passed in via
AUXDATA structures and the MSP is no exception. Here we're passing DMA
settings.

Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
 arch/arm/mach-ux500/board-mop500-msp.c |    8 ++++----
 arch/arm/mach-ux500/board-mop500.c     |    9 +++++++++
 arch/arm/mach-ux500/board-mop500.h     |    5 +++++
 3 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/arch/arm/mach-ux500/board-mop500-msp.c b/arch/arm/mach-ux500/board-mop500-msp.c
index 24a3604..ec802d0 100644
--- a/arch/arm/mach-ux500/board-mop500-msp.c
+++ b/arch/arm/mach-ux500/board-mop500-msp.c
@@ -49,7 +49,7 @@ static struct stedma40_chan_cfg msp0_dma_tx = {
 	/* data_width is set during configuration */
 };
 
-static struct msp_i2s_platform_data msp0_platform_data = {
+struct msp_i2s_platform_data msp0_platform_data = {
 	.id = MSP_I2S_0,
 	.msp_i2s_dma_rx = &msp0_dma_rx,
 	.msp_i2s_dma_tx = &msp0_dma_tx,
@@ -81,7 +81,7 @@ static struct stedma40_chan_cfg msp1_dma_tx = {
 	/* data_width is set during configuration */
 };
 
-static struct msp_i2s_platform_data msp1_platform_data = {
+struct msp_i2s_platform_data msp1_platform_data = {
 	.id = MSP_I2S_1,
 	.msp_i2s_dma_rx = NULL,
 	.msp_i2s_dma_tx = &msp1_dma_tx,
@@ -160,13 +160,13 @@ static struct platform_device ux500_pcm = {
 	},
 };
 
-static struct msp_i2s_platform_data msp2_platform_data = {
+struct msp_i2s_platform_data msp2_platform_data = {
 	.id = MSP_I2S_2,
 	.msp_i2s_dma_rx = &msp2_dma_rx,
 	.msp_i2s_dma_tx = &msp2_dma_tx,
 };
 
-static struct msp_i2s_platform_data msp3_platform_data = {
+struct msp_i2s_platform_data msp3_platform_data = {
 	.id		= MSP_I2S_3,
 	.msp_i2s_dma_rx	= &msp1_dma_rx,
 	.msp_i2s_dma_tx	= NULL,
diff --git a/arch/arm/mach-ux500/board-mop500.c b/arch/arm/mach-ux500/board-mop500.c
index 8f419b1..0c141d5 100644
--- a/arch/arm/mach-ux500/board-mop500.c
+++ b/arch/arm/mach-ux500/board-mop500.c
@@ -758,6 +758,15 @@ struct of_dev_auxdata u8500_auxdata_lookup[] __initdata = {
 	OF_DEV_AUXDATA("st,nomadik-i2c", 0x8012a000, "nmk-i2c.4", NULL),
 	/* Requires device name bindings. */
 	OF_DEV_AUXDATA("stericsson,nmk_pinctrl", 0, "pinctrl-db8500", NULL),
+	/* Requires clock name and DMA bindings. */
+	OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80123000,
+		"ux500-msp-i2s.0", &msp0_platform_data),
+	OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80124000,
+		"ux500-msp-i2s.1", &msp1_platform_data),
+	OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80117000,
+		"ux500-msp-i2s.2", &msp2_platform_data),
+	OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80125000,
+		"ux500-msp-i2s.3", &msp3_platform_data),
 	{},
 };
 
diff --git a/arch/arm/mach-ux500/board-mop500.h b/arch/arm/mach-ux500/board-mop500.h
index 1d7316b..3fbf48f 100644
--- a/arch/arm/mach-ux500/board-mop500.h
+++ b/arch/arm/mach-ux500/board-mop500.h
@@ -9,6 +9,7 @@
 
 /* For NOMADIK_NR_GPIO */
 #include <mach/irqs.h>
+#include <mach/msp.h>
 #include <linux/amba/mmci.h>
 
 /* Snowball specific GPIO assignments, this board has no GPIO expander */
@@ -81,6 +82,10 @@ struct device;
 struct i2c_board_info;
 extern struct mmci_platform_data mop500_sdi0_data;
 extern struct mmci_platform_data mop500_sdi4_data;
+extern struct msp_i2s_platform_data msp0_platform_data;
+extern struct msp_i2s_platform_data msp1_platform_data;
+extern struct msp_i2s_platform_data msp2_platform_data;
+extern struct msp_i2s_platform_data msp3_platform_data;
 extern struct arm_pmu_platdata db8500_pmu_platdata;
 
 extern void mop500_sdi_init(struct device *parent);
-- 
1.7.9.5


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

* [PATCH 12/17] ARM: ux500: Stop registering the MOP500 Audio driver from platform code
  2012-08-24 14:01 [PATCH 00/17] MOP500 Audio fix-ups and DT enablement Lee Jones
                   ` (10 preceding siblings ...)
  2012-08-24 14:01 ` [PATCH 11/17] ARM: ux500: Pass MSP DMA platform data though AUXDATA Lee Jones
@ 2012-08-24 14:01 ` Lee Jones
  2012-08-24 14:01 ` [PATCH 13/17] ARM: ux500: Remove platform registration of MSP devices Lee Jones
                   ` (4 subsequent siblings)
  16 siblings, 0 replies; 36+ messages in thread
From: Lee Jones @ 2012-08-24 14:01 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel
  Cc: STEricsson_nomadik_linux, linus.walleij, arnd, broonie,
	ola.o.lilja, roger.xr.nilsson, alsa-devel, Lee Jones

In this patch we prevent MOP500 driver registration from platform
code and rely solely on Device Tree to do the probing for us.

Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
 arch/arm/mach-ux500/board-mop500-msp.c |    3 ---
 1 file changed, 3 deletions(-)

diff --git a/arch/arm/mach-ux500/board-mop500-msp.c b/arch/arm/mach-ux500/board-mop500-msp.c
index ec802d0..41e4df2 100644
--- a/arch/arm/mach-ux500/board-mop500-msp.c
+++ b/arch/arm/mach-ux500/board-mop500-msp.c
@@ -175,9 +175,6 @@ struct msp_i2s_platform_data msp3_platform_data = {
 /* Due for removal once the MSP driver has been fully DT:ed. */
 void mop500_of_msp_init(struct device *parent)
 {
-	pr_info("%s: Register platform-device 'snd-soc-u8500'.\n", __func__);
-	platform_device_register(&snd_soc_mop500);
-
 	pr_info("Initialize MSP I2S-devices.\n");
 	db8500_add_msp_i2s(parent, 0, U8500_MSP0_BASE, IRQ_DB8500_MSP0,
 			   &msp0_platform_data);
-- 
1.7.9.5


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

* [PATCH 13/17] ARM: ux500: Remove platform registration of MSP devices
  2012-08-24 14:01 [PATCH 00/17] MOP500 Audio fix-ups and DT enablement Lee Jones
                   ` (11 preceding siblings ...)
  2012-08-24 14:01 ` [PATCH 12/17] ARM: ux500: Stop registering the MOP500 Audio driver from platform code Lee Jones
@ 2012-08-24 14:01 ` Lee Jones
  2012-08-24 14:01 ` [PATCH 14/17] ARM: ux500: Rename MSP board file to something more meaningful Lee Jones
                   ` (3 subsequent siblings)
  16 siblings, 0 replies; 36+ messages in thread
From: Lee Jones @ 2012-08-24 14:01 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel
  Cc: STEricsson_nomadik_linux, linus.walleij, arnd, broonie,
	ola.o.lilja, roger.xr.nilsson, alsa-devel, Lee Jones

This patch removes platform device registration of all 4 MSP
devices. It also takes care of all redundant infrastructure now
that each of the ux500 audio components have been Device Tree
enabled.

Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
 arch/arm/mach-ux500/board-mop500-msp.c |   10 ----------
 1 file changed, 10 deletions(-)

diff --git a/arch/arm/mach-ux500/board-mop500-msp.c b/arch/arm/mach-ux500/board-mop500-msp.c
index 41e4df2..2af017f 100644
--- a/arch/arm/mach-ux500/board-mop500-msp.c
+++ b/arch/arm/mach-ux500/board-mop500-msp.c
@@ -175,16 +175,6 @@ struct msp_i2s_platform_data msp3_platform_data = {
 /* Due for removal once the MSP driver has been fully DT:ed. */
 void mop500_of_msp_init(struct device *parent)
 {
-	pr_info("Initialize MSP I2S-devices.\n");
-	db8500_add_msp_i2s(parent, 0, U8500_MSP0_BASE, IRQ_DB8500_MSP0,
-			   &msp0_platform_data);
-	db8500_add_msp_i2s(parent, 1, U8500_MSP1_BASE, IRQ_DB8500_MSP1,
-			   &msp1_platform_data);
-	db8500_add_msp_i2s(parent, 2, U8500_MSP2_BASE, IRQ_DB8500_MSP2,
-			   &msp2_platform_data);
-	db8500_add_msp_i2s(parent, 3, U8500_MSP3_BASE, IRQ_DB8500_MSP1,
-			   &msp3_platform_data);
-
 	pr_info("%s: Register platform-device 'ux500-pcm'\n", __func__);
 	platform_device_register(&ux500_pcm);
 }
-- 
1.7.9.5


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

* [PATCH 14/17] ARM: ux500: Rename MSP board file to something more meaningful
  2012-08-24 14:01 [PATCH 00/17] MOP500 Audio fix-ups and DT enablement Lee Jones
                   ` (12 preceding siblings ...)
  2012-08-24 14:01 ` [PATCH 13/17] ARM: ux500: Remove platform registration of MSP devices Lee Jones
@ 2012-08-24 14:01 ` Lee Jones
  2012-08-24 15:05   ` [alsa-devel] " Hebbar, Gururaja
  2012-08-24 14:01 ` [PATCH 15/17] ARM: ux500: Add nodes for the MSP into Device Tree Lee Jones
                   ` (2 subsequent siblings)
  16 siblings, 1 reply; 36+ messages in thread
From: Lee Jones @ 2012-08-24 14:01 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel
  Cc: STEricsson_nomadik_linux, linus.walleij, arnd, broonie,
	ola.o.lilja, roger.xr.nilsson, alsa-devel, Lee Jones

The 'msp' board file does more than just register MSP devices. It
also registers some other components necessary to get audio working
on ux500 based platforms; such as the PCM and Machine Drivers. For
that reason we're changing the filename to be more encompassing -
'audio'.

Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
 arch/arm/mach-ux500/Makefile             |    2 +-
 arch/arm/mach-ux500/board-mop500-audio.c |  199 ++++++++++++++++++++++++++++++
 arch/arm/mach-ux500/board-mop500-msp.c   |  199 ------------------------------
 arch/arm/mach-ux500/board-mop500.c       |   12 +-
 arch/arm/mach-ux500/board-mop500.h       |    4 +-
 5 files changed, 208 insertions(+), 208 deletions(-)
 create mode 100644 arch/arm/mach-ux500/board-mop500-audio.c
 delete mode 100644 arch/arm/mach-ux500/board-mop500-msp.c

diff --git a/arch/arm/mach-ux500/Makefile b/arch/arm/mach-ux500/Makefile
index 026086f..1dc2cfa 100644
--- a/arch/arm/mach-ux500/Makefile
+++ b/arch/arm/mach-ux500/Makefile
@@ -12,6 +12,6 @@ obj-$(CONFIG_MACH_MOP500)	+= board-mop500.o board-mop500-sdi.o \
 				board-mop500-uib.o board-mop500-stuib.o \
 				board-mop500-u8500uib.o \
 				board-mop500-pins.o \
-				board-mop500-msp.o
+				board-mop500-audio.o
 obj-$(CONFIG_SMP)		+= platsmp.o headsmp.o
 obj-$(CONFIG_HOTPLUG_CPU)	+= hotplug.o
diff --git a/arch/arm/mach-ux500/board-mop500-audio.c b/arch/arm/mach-ux500/board-mop500-audio.c
new file mode 100644
index 0000000..18f6c5a
--- /dev/null
+++ b/arch/arm/mach-ux500/board-mop500-audio.c
@@ -0,0 +1,199 @@
+/*
+ * Copyright (C) ST-Ericsson SA 2010
+ *
+ * License terms: GNU General Public License (GPL), version 2
+ */
+
+#include <linux/platform_device.h>
+#include <linux/init.h>
+#include <linux/gpio.h>
+#include <linux/pinctrl/consumer.h>
+
+#include <plat/gpio-nomadik.h>
+#include <plat/pincfg.h>
+#include <plat/ste_dma40.h>
+
+#include <mach/devices.h>
+#include <mach/hardware.h>
+#include <mach/irqs.h>
+#include <mach/msp.h>
+
+#include "ste-dma40-db8500.h"
+#include "board-mop500.h"
+#include "devices-db8500.h"
+#include "pins-db8500.h"
+
+static struct stedma40_chan_cfg msp0_dma_rx = {
+	.high_priority = true,
+	.dir = STEDMA40_PERIPH_TO_MEM,
+
+	.src_dev_type = DB8500_DMA_DEV31_MSP0_RX_SLIM0_CH0_RX,
+	.dst_dev_type = STEDMA40_DEV_DST_MEMORY,
+
+	.src_info.psize = STEDMA40_PSIZE_LOG_4,
+	.dst_info.psize = STEDMA40_PSIZE_LOG_4,
+
+	/* data_width is set during configuration */
+};
+
+static struct stedma40_chan_cfg msp0_dma_tx = {
+	.high_priority = true,
+	.dir = STEDMA40_MEM_TO_PERIPH,
+
+	.src_dev_type = STEDMA40_DEV_DST_MEMORY,
+	.dst_dev_type = DB8500_DMA_DEV31_MSP0_TX_SLIM0_CH0_TX,
+
+	.src_info.psize = STEDMA40_PSIZE_LOG_4,
+	.dst_info.psize = STEDMA40_PSIZE_LOG_4,
+
+	/* data_width is set during configuration */
+};
+
+struct msp_i2s_platform_data msp0_platform_data = {
+	.id = MSP_I2S_0,
+	.msp_i2s_dma_rx = &msp0_dma_rx,
+	.msp_i2s_dma_tx = &msp0_dma_tx,
+};
+
+static struct stedma40_chan_cfg msp1_dma_rx = {
+	.high_priority = true,
+	.dir = STEDMA40_PERIPH_TO_MEM,
+
+	.src_dev_type = DB8500_DMA_DEV30_MSP3_RX,
+	.dst_dev_type = STEDMA40_DEV_DST_MEMORY,
+
+	.src_info.psize = STEDMA40_PSIZE_LOG_4,
+	.dst_info.psize = STEDMA40_PSIZE_LOG_4,
+
+	/* data_width is set during configuration */
+};
+
+static struct stedma40_chan_cfg msp1_dma_tx = {
+	.high_priority = true,
+	.dir = STEDMA40_MEM_TO_PERIPH,
+
+	.src_dev_type = STEDMA40_DEV_DST_MEMORY,
+	.dst_dev_type = DB8500_DMA_DEV30_MSP1_TX,
+
+	.src_info.psize = STEDMA40_PSIZE_LOG_4,
+	.dst_info.psize = STEDMA40_PSIZE_LOG_4,
+
+	/* data_width is set during configuration */
+};
+
+struct msp_i2s_platform_data msp1_platform_data = {
+	.id = MSP_I2S_1,
+	.msp_i2s_dma_rx = NULL,
+	.msp_i2s_dma_tx = &msp1_dma_tx,
+};
+
+static struct stedma40_chan_cfg msp2_dma_rx = {
+	.high_priority = true,
+	.dir = STEDMA40_PERIPH_TO_MEM,
+
+	.src_dev_type = DB8500_DMA_DEV14_MSP2_RX,
+	.dst_dev_type = STEDMA40_DEV_DST_MEMORY,
+
+	/* MSP2 DMA doesn't work with PSIZE == 4 on DB8500v2 */
+	.src_info.psize = STEDMA40_PSIZE_LOG_1,
+	.dst_info.psize = STEDMA40_PSIZE_LOG_1,
+
+	/* data_width is set during configuration */
+};
+
+static struct stedma40_chan_cfg msp2_dma_tx = {
+	.high_priority = true,
+	.dir = STEDMA40_MEM_TO_PERIPH,
+
+	.src_dev_type = STEDMA40_DEV_DST_MEMORY,
+	.dst_dev_type = DB8500_DMA_DEV14_MSP2_TX,
+
+	.src_info.psize = STEDMA40_PSIZE_LOG_4,
+	.dst_info.psize = STEDMA40_PSIZE_LOG_4,
+
+	.use_fixed_channel = true,
+	.phy_channel = 1,
+
+	/* data_width is set during configuration */
+};
+
+static struct platform_device *db8500_add_msp_i2s(struct device *parent,
+			int id,
+			resource_size_t base, int irq,
+			struct msp_i2s_platform_data *pdata)
+{
+	struct platform_device *pdev;
+	struct resource res[] = {
+		DEFINE_RES_MEM(base, SZ_4K),
+		DEFINE_RES_IRQ(irq),
+	};
+
+	pr_info("Register platform-device 'ux500-msp-i2s', id %d, irq %d\n",
+		id, irq);
+	pdev = platform_device_register_resndata(parent, "ux500-msp-i2s", id,
+						res, ARRAY_SIZE(res),
+						pdata, sizeof(*pdata));
+	if (!pdev) {
+		pr_err("Failed to register platform-device 'ux500-msp-i2s.%d'!\n",
+			id);
+		return NULL;
+	}
+
+	return pdev;
+}
+
+/* Platform device for ASoC MOP500 machine */
+static struct platform_device snd_soc_mop500 = {
+	.name = "snd-soc-mop500",
+	.id = 0,
+	.dev = {
+		.platform_data = NULL,
+	},
+};
+
+/* Platform device for Ux500-PCM */
+static struct platform_device ux500_pcm = {
+	.name = "ux500-pcm",
+	.id = 0,
+	.dev = {
+		.platform_data = NULL,
+	},
+};
+
+struct msp_i2s_platform_data msp2_platform_data = {
+	.id = MSP_I2S_2,
+	.msp_i2s_dma_rx = &msp2_dma_rx,
+	.msp_i2s_dma_tx = &msp2_dma_tx,
+};
+
+struct msp_i2s_platform_data msp3_platform_data = {
+	.id		= MSP_I2S_3,
+	.msp_i2s_dma_rx	= &msp1_dma_rx,
+	.msp_i2s_dma_tx	= NULL,
+};
+
+void mop500_audio_init(struct device *parent)
+{
+	pr_info("%s: Register platform-device 'snd-soc-mop500'.\n", __func__);
+	platform_device_register(&snd_soc_mop500);
+
+	pr_info("Initialize MSP I2S-devices.\n");
+	db8500_add_msp_i2s(parent, 0, U8500_MSP0_BASE, IRQ_DB8500_MSP0,
+			   &msp0_platform_data);
+	db8500_add_msp_i2s(parent, 1, U8500_MSP1_BASE, IRQ_DB8500_MSP1,
+			   &msp1_platform_data);
+	db8500_add_msp_i2s(parent, 2, U8500_MSP2_BASE, IRQ_DB8500_MSP2,
+			   &msp2_platform_data);
+	db8500_add_msp_i2s(parent, 3, U8500_MSP3_BASE, IRQ_DB8500_MSP1,
+			   &msp3_platform_data);
+
+	pr_info("%s: Register platform-device 'ux500-pcm'\n", __func__);
+	platform_device_register(&ux500_pcm);
+}
+
+/* Due for removal once the MSP driver has been fully DT:ed. */
+void mop500_of_audio_init(struct device *parent)
+{
+	pr_info("%s: Register platform-device 'ux500-pcm'\n", __func__);
+	platform_device_register(&ux500_pcm);
+}
diff --git a/arch/arm/mach-ux500/board-mop500-msp.c b/arch/arm/mach-ux500/board-mop500-msp.c
deleted file mode 100644
index 2af017f..0000000
--- a/arch/arm/mach-ux500/board-mop500-msp.c
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * Copyright (C) ST-Ericsson SA 2010
- *
- * License terms: GNU General Public License (GPL), version 2
- */
-
-#include <linux/platform_device.h>
-#include <linux/init.h>
-#include <linux/gpio.h>
-#include <linux/pinctrl/consumer.h>
-
-#include <plat/gpio-nomadik.h>
-#include <plat/pincfg.h>
-#include <plat/ste_dma40.h>
-
-#include <mach/devices.h>
-#include <mach/hardware.h>
-#include <mach/irqs.h>
-#include <mach/msp.h>
-
-#include "ste-dma40-db8500.h"
-#include "board-mop500.h"
-#include "devices-db8500.h"
-#include "pins-db8500.h"
-
-static struct stedma40_chan_cfg msp0_dma_rx = {
-	.high_priority = true,
-	.dir = STEDMA40_PERIPH_TO_MEM,
-
-	.src_dev_type = DB8500_DMA_DEV31_MSP0_RX_SLIM0_CH0_RX,
-	.dst_dev_type = STEDMA40_DEV_DST_MEMORY,
-
-	.src_info.psize = STEDMA40_PSIZE_LOG_4,
-	.dst_info.psize = STEDMA40_PSIZE_LOG_4,
-
-	/* data_width is set during configuration */
-};
-
-static struct stedma40_chan_cfg msp0_dma_tx = {
-	.high_priority = true,
-	.dir = STEDMA40_MEM_TO_PERIPH,
-
-	.src_dev_type = STEDMA40_DEV_DST_MEMORY,
-	.dst_dev_type = DB8500_DMA_DEV31_MSP0_TX_SLIM0_CH0_TX,
-
-	.src_info.psize = STEDMA40_PSIZE_LOG_4,
-	.dst_info.psize = STEDMA40_PSIZE_LOG_4,
-
-	/* data_width is set during configuration */
-};
-
-struct msp_i2s_platform_data msp0_platform_data = {
-	.id = MSP_I2S_0,
-	.msp_i2s_dma_rx = &msp0_dma_rx,
-	.msp_i2s_dma_tx = &msp0_dma_tx,
-};
-
-static struct stedma40_chan_cfg msp1_dma_rx = {
-	.high_priority = true,
-	.dir = STEDMA40_PERIPH_TO_MEM,
-
-	.src_dev_type = DB8500_DMA_DEV30_MSP3_RX,
-	.dst_dev_type = STEDMA40_DEV_DST_MEMORY,
-
-	.src_info.psize = STEDMA40_PSIZE_LOG_4,
-	.dst_info.psize = STEDMA40_PSIZE_LOG_4,
-
-	/* data_width is set during configuration */
-};
-
-static struct stedma40_chan_cfg msp1_dma_tx = {
-	.high_priority = true,
-	.dir = STEDMA40_MEM_TO_PERIPH,
-
-	.src_dev_type = STEDMA40_DEV_DST_MEMORY,
-	.dst_dev_type = DB8500_DMA_DEV30_MSP1_TX,
-
-	.src_info.psize = STEDMA40_PSIZE_LOG_4,
-	.dst_info.psize = STEDMA40_PSIZE_LOG_4,
-
-	/* data_width is set during configuration */
-};
-
-struct msp_i2s_platform_data msp1_platform_data = {
-	.id = MSP_I2S_1,
-	.msp_i2s_dma_rx = NULL,
-	.msp_i2s_dma_tx = &msp1_dma_tx,
-};
-
-static struct stedma40_chan_cfg msp2_dma_rx = {
-	.high_priority = true,
-	.dir = STEDMA40_PERIPH_TO_MEM,
-
-	.src_dev_type = DB8500_DMA_DEV14_MSP2_RX,
-	.dst_dev_type = STEDMA40_DEV_DST_MEMORY,
-
-	/* MSP2 DMA doesn't work with PSIZE == 4 on DB8500v2 */
-	.src_info.psize = STEDMA40_PSIZE_LOG_1,
-	.dst_info.psize = STEDMA40_PSIZE_LOG_1,
-
-	/* data_width is set during configuration */
-};
-
-static struct stedma40_chan_cfg msp2_dma_tx = {
-	.high_priority = true,
-	.dir = STEDMA40_MEM_TO_PERIPH,
-
-	.src_dev_type = STEDMA40_DEV_DST_MEMORY,
-	.dst_dev_type = DB8500_DMA_DEV14_MSP2_TX,
-
-	.src_info.psize = STEDMA40_PSIZE_LOG_4,
-	.dst_info.psize = STEDMA40_PSIZE_LOG_4,
-
-	.use_fixed_channel = true,
-	.phy_channel = 1,
-
-	/* data_width is set during configuration */
-};
-
-static struct platform_device *db8500_add_msp_i2s(struct device *parent,
-			int id,
-			resource_size_t base, int irq,
-			struct msp_i2s_platform_data *pdata)
-{
-	struct platform_device *pdev;
-	struct resource res[] = {
-		DEFINE_RES_MEM(base, SZ_4K),
-		DEFINE_RES_IRQ(irq),
-	};
-
-	pr_info("Register platform-device 'ux500-msp-i2s', id %d, irq %d\n",
-		id, irq);
-	pdev = platform_device_register_resndata(parent, "ux500-msp-i2s", id,
-						res, ARRAY_SIZE(res),
-						pdata, sizeof(*pdata));
-	if (!pdev) {
-		pr_err("Failed to register platform-device 'ux500-msp-i2s.%d'!\n",
-			id);
-		return NULL;
-	}
-
-	return pdev;
-}
-
-/* Platform device for ASoC MOP500 machine */
-static struct platform_device snd_soc_mop500 = {
-	.name = "snd-soc-mop500",
-	.id = 0,
-	.dev = {
-		.platform_data = NULL,
-	},
-};
-
-/* Platform device for Ux500-PCM */
-static struct platform_device ux500_pcm = {
-	.name = "ux500-pcm",
-	.id = 0,
-	.dev = {
-		.platform_data = NULL,
-	},
-};
-
-struct msp_i2s_platform_data msp2_platform_data = {
-	.id = MSP_I2S_2,
-	.msp_i2s_dma_rx = &msp2_dma_rx,
-	.msp_i2s_dma_tx = &msp2_dma_tx,
-};
-
-struct msp_i2s_platform_data msp3_platform_data = {
-	.id		= MSP_I2S_3,
-	.msp_i2s_dma_rx	= &msp1_dma_rx,
-	.msp_i2s_dma_tx	= NULL,
-};
-
-/* Due for removal once the MSP driver has been fully DT:ed. */
-void mop500_of_msp_init(struct device *parent)
-{
-	pr_info("%s: Register platform-device 'ux500-pcm'\n", __func__);
-	platform_device_register(&ux500_pcm);
-}
-
-void mop500_msp_init(struct device *parent)
-{
-	pr_info("%s: Register platform-device 'snd-soc-mop500'.\n", __func__);
-	platform_device_register(&snd_soc_mop500);
-
-	pr_info("Initialize MSP I2S-devices.\n");
-	db8500_add_msp_i2s(parent, 0, U8500_MSP0_BASE, IRQ_DB8500_MSP0,
-			   &msp0_platform_data);
-	db8500_add_msp_i2s(parent, 1, U8500_MSP1_BASE, IRQ_DB8500_MSP1,
-			   &msp1_platform_data);
-	db8500_add_msp_i2s(parent, 2, U8500_MSP2_BASE, IRQ_DB8500_MSP2,
-			   &msp2_platform_data);
-	db8500_add_msp_i2s(parent, 3, U8500_MSP3_BASE, IRQ_DB8500_MSP1,
-			   &msp3_platform_data);
-
-	pr_info("%s: Register platform-device 'ux500-pcm'\n", __func__);
-	platform_device_register(&ux500_pcm);
-}
diff --git a/arch/arm/mach-ux500/board-mop500.c b/arch/arm/mach-ux500/board-mop500.c
index 0c141d5..7152635 100644
--- a/arch/arm/mach-ux500/board-mop500.c
+++ b/arch/arm/mach-ux500/board-mop500.c
@@ -607,7 +607,7 @@ static void __init mop500_init_machine(void)
 	mop500_i2c_init(parent);
 	mop500_sdi_init(parent);
 	mop500_spi_init(parent);
-	mop500_msp_init(parent);
+	mop500_audio_init(parent);
 	mop500_uart_init(parent);
 
 	u8500_cryp1_hash1_init(parent);
@@ -641,7 +641,7 @@ static void __init snowball_init_machine(void)
 	mop500_i2c_init(parent);
 	snowball_sdi_init(parent);
 	mop500_spi_init(parent);
-	mop500_msp_init(parent);
+	mop500_audio_init(parent);
 	mop500_uart_init(parent);
 
 	/* This board has full regulator constraints */
@@ -673,7 +673,7 @@ static void __init hrefv60_init_machine(void)
 	mop500_i2c_init(parent);
 	hrefv60_sdi_init(parent);
 	mop500_spi_init(parent);
-	mop500_msp_init(parent);
+	mop500_audio_init(parent);
 	mop500_uart_init(parent);
 
 	i2c0_devs = ARRAY_SIZE(mop500_i2c0_devices);
@@ -807,7 +807,7 @@ static void __init u8500_init_machine(void)
 				ARRAY_SIZE(mop500_platform_devs));
 
 		mop500_sdi_init(parent);
-		mop500_msp_init(parent);
+		mop500_audio_init(parent);
 		i2c0_devs = ARRAY_SIZE(mop500_i2c0_devices);
 		i2c_register_board_info(0, mop500_i2c0_devices, i2c0_devs);
 		i2c_register_board_info(2, mop500_i2c2_devices,
@@ -816,7 +816,7 @@ static void __init u8500_init_machine(void)
 		mop500_uib_init();
 
 	} else if (of_machine_is_compatible("calaosystems,snowball-a9500")) {
-		mop500_of_msp_init(parent);
+		mop500_of_audio_init(parent);
 	} else if (of_machine_is_compatible("st-ericsson,hrefv60+")) {
 		/*
 		 * The HREFv60 board removed a GPIO expander and routed
@@ -828,7 +828,7 @@ static void __init u8500_init_machine(void)
 				ARRAY_SIZE(mop500_platform_devs));
 
 		hrefv60_sdi_init(parent);
-		mop500_msp_init(parent);
+		mop500_audio_init(parent);
 
 		i2c0_devs = ARRAY_SIZE(mop500_i2c0_devices);
 		i2c0_devs -= NUM_PRE_V60_I2C0_DEVICES;
diff --git a/arch/arm/mach-ux500/board-mop500.h b/arch/arm/mach-ux500/board-mop500.h
index 3fbf48f..9e9dd5a 100644
--- a/arch/arm/mach-ux500/board-mop500.h
+++ b/arch/arm/mach-ux500/board-mop500.h
@@ -97,9 +97,9 @@ void __init mop500_stuib_init(void);
 void __init mop500_pinmaps_init(void);
 void __init snowball_pinmaps_init(void);
 void __init hrefv60_pinmaps_init(void);
-void mop500_msp_init(struct device *parent);
+void mop500_audio_init(struct device *parent);
 /* Due for removal once the MSP driver has been fully DT:ed. */
-void mop500_of_msp_init(struct device *parent);
+void mop500_of_audio_init(struct device *parent);
 
 int __init mop500_uib_init(void);
 void mop500_uib_i2c_add(int busnum, struct i2c_board_info *info,
-- 
1.7.9.5


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

* [PATCH 15/17] ARM: ux500: Add nodes for the MSP into Device Tree
  2012-08-24 14:01 [PATCH 00/17] MOP500 Audio fix-ups and DT enablement Lee Jones
                   ` (13 preceding siblings ...)
  2012-08-24 14:01 ` [PATCH 14/17] ARM: ux500: Rename MSP board file to something more meaningful Lee Jones
@ 2012-08-24 14:01 ` Lee Jones
  2012-08-24 14:01 ` [PATCH 16/17] ARM: ux500: Add all encompassing sound node to the Snowball " Lee Jones
  2012-08-24 14:01 ` [PATCH 17/17] Documentation: Add the AB8500 CODEC device to the MFD AB8500 doc Lee Jones
  16 siblings, 0 replies; 36+ messages in thread
From: Lee Jones @ 2012-08-24 14:01 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel
  Cc: STEricsson_nomadik_linux, linus.walleij, arnd, broonie,
	ola.o.lilja, roger.xr.nilsson, alsa-devel, Lee Jones

This patch inserts all known MSP devices into the DBx5x0 Device Tree
disabled and enables the two important ones for the Snowball low-cost
development board.

Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
 arch/arm/boot/dts/dbx5x0.dtsi  |   33 +++++++++++++++++++++++++++++++++
 arch/arm/boot/dts/snowball.dts |    8 ++++++++
 2 files changed, 41 insertions(+)

diff --git a/arch/arm/boot/dts/dbx5x0.dtsi b/arch/arm/boot/dts/dbx5x0.dtsi
index 7f8c9db..b297957 100644
--- a/arch/arm/boot/dts/dbx5x0.dtsi
+++ b/arch/arm/boot/dts/dbx5x0.dtsi
@@ -586,6 +586,39 @@
 			status = "disabled";
 		};
 
+		msp0: msp@80123000 {
+			compatible = "stericsson,ux500-msp-i2s";
+			reg = <0x80123000 0x1000>;
+			interrupts = <0 31 0x4>;
+			v-ape-supply = <&db8500_vape_reg>;
+			status = "disabled";
+		};
+
+		msp1: msp@80124000 {
+			compatible = "stericsson,ux500-msp-i2s";
+			reg = <0x80124000 0x1000>;
+			interrupts = <0 62 0x4>;
+			v-ape-supply = <&db8500_vape_reg>;
+			status = "disabled";
+		};
+
+		// HDMI sound
+		msp2: msp@80117000 {
+			compatible = "stericsson,ux500-msp-i2s";
+			reg = <0x80117000 0x1000>;
+			interrupts = <0 98 0x4>;
+			v-ape-supply = <&db8500_vape_reg>;
+			status = "disabled";
+		};
+
+		msp3: msp@80125000 {
+			compatible = "stericsson,ux500-msp-i2s";
+			reg = <0x80125000 0x1000>;
+			interrupts = <0 62 0x4>;
+			v-ape-supply = <&db8500_vape_reg>;
+			status = "disabled";
+		};
+
 		external-bus@50000000 {
 			compatible = "simple-bus";
 			reg = <0x50000000 0x4000000>;
diff --git a/arch/arm/boot/dts/snowball.dts b/arch/arm/boot/dts/snowball.dts
index df6fc57..fce4a00 100644
--- a/arch/arm/boot/dts/snowball.dts
+++ b/arch/arm/boot/dts/snowball.dts
@@ -83,6 +83,14 @@
 	};
 
 	soc-u9500 {
+		msp1: msp@80124000 {
+			status = "okay";
+		};
+
+		msp3: msp@80125000 {
+			status = "okay";
+		};
+
 		external-bus@50000000 {
 			status = "okay";
 
-- 
1.7.9.5


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

* [PATCH 16/17] ARM: ux500: Add all encompassing sound node to the Snowball Device Tree
  2012-08-24 14:01 [PATCH 00/17] MOP500 Audio fix-ups and DT enablement Lee Jones
                   ` (14 preceding siblings ...)
  2012-08-24 14:01 ` [PATCH 15/17] ARM: ux500: Add nodes for the MSP into Device Tree Lee Jones
@ 2012-08-24 14:01 ` Lee Jones
  2012-08-24 14:01 ` [PATCH 17/17] Documentation: Add the AB8500 CODEC device to the MFD AB8500 doc Lee Jones
  16 siblings, 0 replies; 36+ messages in thread
From: Lee Jones @ 2012-08-24 14:01 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel
  Cc: STEricsson_nomadik_linux, linus.walleij, arnd, broonie,
	ola.o.lilja, roger.xr.nilsson, alsa-devel, Lee Jones

This is where we link together all of the SoC sound components for
a given platform. This all encompassing sound node is only found
in the very lowest hierarchical DTS file, since the component mix may
well change from board variant to board variant.

Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
 arch/arm/boot/dts/snowball.dts |    8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/arch/arm/boot/dts/snowball.dts b/arch/arm/boot/dts/snowball.dts
index fce4a00..2969997 100644
--- a/arch/arm/boot/dts/snowball.dts
+++ b/arch/arm/boot/dts/snowball.dts
@@ -83,6 +83,14 @@
 	};
 
 	soc-u9500 {
+
+		sound {
+			compatible = "stericsson,snd-soc-mop500";
+
+			stericsson,cpu-dai = <&msp1 &msp3>;
+			stericsson,audio-codec = <&codec>;
+		};
+
 		msp1: msp@80124000 {
 			status = "okay";
 		};
-- 
1.7.9.5


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

* [PATCH 17/17] Documentation: Add the AB8500 CODEC device to the MFD AB8500 doc
  2012-08-24 14:01 [PATCH 00/17] MOP500 Audio fix-ups and DT enablement Lee Jones
                   ` (15 preceding siblings ...)
  2012-08-24 14:01 ` [PATCH 16/17] ARM: ux500: Add all encompassing sound node to the Snowball " Lee Jones
@ 2012-08-24 14:01 ` Lee Jones
  16 siblings, 0 replies; 36+ messages in thread
From: Lee Jones @ 2012-08-24 14:01 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel
  Cc: STEricsson_nomadik_linux, linus.walleij, arnd, broonie,
	ola.o.lilja, roger.xr.nilsson, alsa-devel, Lee Jones

Here we document the AB8500 Audio CODEC in the existing MFD AB8500 document.

CC: alsa-devel@alsa-project.org
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
 Documentation/devicetree/bindings/mfd/ab8500.txt |   15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/Documentation/devicetree/bindings/mfd/ab8500.txt b/Documentation/devicetree/bindings/mfd/ab8500.txt
index 69e757a..ce83c8d 100644
--- a/Documentation/devicetree/bindings/mfd/ab8500.txt
+++ b/Documentation/devicetree/bindings/mfd/ab8500.txt
@@ -23,6 +23,7 @@ Device                     IRQ Names              Supply Names   Description
 ab8500-bm                :                      :              : Battery Manager
 ab8500-btemp             :                      :              : Battery Temperature
 ab8500-charger           :                      :              : Battery Charger
+ab8500-codec             :                      :              : Audio Codec
 ab8500-fg                :                      :              : Fuel Gauge
 ab8500-gpadc             : HW_CONV_END          : vddadc       : Analogue to Digital Converter
                            SW_CONV_END          :              :
@@ -52,6 +53,14 @@ Optional child device properties:
                            supplied in the interrupts property
 - <supply_name>-supply   : contains a phandle to the regulator supply node in Device Tree
 
+Non-standard child device properties:
+ - Audio CODEC:
+   - stericsson,amic[1|2]-type-single-ended : Single-ended Analoge Mic (default: differential)
+   - stericsson,amic1a-bias-vamic2          : Analoge Mic wishes to use a non-standard Vamic
+   - stericsson,amic1b-bias-vamic2          : Analoge Mic wishes to use a non-standard Vamic
+   - stericsson,amic2-bias-vamic1           : Analoge Mic wishes to use a non-standard Vamic
+   - stericsson,earpeice-cmv                : Earpeice voltage (only: 950 | 1100 | 1270 | 1580)
+
 ab8500@5 {
          compatible = "stericsson,ab8500";
          reg = <5>; /* mailbox 5 is i2c */
@@ -110,6 +119,12 @@ ab8500@5 {
                 compatible = "stericsson,ab8500-pwm";
         };
 
+	codec: ab8500-codec {
+		compatible = "stericsson,ab8500-codec";
+
+		stericsson,earpeice-cmv = <950>; /* Units in mV. */
+	};
+
         ab8500-regulators {
                 compatible = "stericsson,ab8500-regulator";
 
-- 
1.7.9.5


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

* RE: [alsa-devel] [PATCH 14/17] ARM: ux500: Rename MSP board file to something more meaningful
  2012-08-24 14:01 ` [PATCH 14/17] ARM: ux500: Rename MSP board file to something more meaningful Lee Jones
@ 2012-08-24 15:05   ` Hebbar, Gururaja
  2012-08-24 15:08     ` Lee Jones
  2012-08-24 15:14     ` Lee Jones
  0 siblings, 2 replies; 36+ messages in thread
From: Hebbar, Gururaja @ 2012-08-24 15:05 UTC (permalink / raw)
  To: Lee Jones, linux-arm-kernel, linux-kernel
  Cc: ola.o.lilja, alsa-devel, linus.walleij, arnd, roger.xr.nilsson,
	broonie, STEricsson_nomadik_linux

On Fri, Aug 24, 2012 at 19:31:50, Lee Jones wrote:
> The 'msp' board file does more than just register MSP devices. It
> also registers some other components necessary to get audio working
> on ux500 based platforms; such as the PCM and Machine Drivers. For
> that reason we're changing the filename to be more encompassing -
> 'audio'.
> 
> Acked-by: Linus Walleij <linus.walleij@linaro.org>
> Signed-off-by: Lee Jones <lee.jones@linaro.org>
> ---
>  arch/arm/mach-ux500/Makefile             |    2 +-
>  arch/arm/mach-ux500/board-mop500-audio.c |  199 ++++++++++++++++++++++++++++++
>  arch/arm/mach-ux500/board-mop500-msp.c   |  199 ------------------------------

Please use _M option when generating patches (git-format-patch -M ...).
This will reduce the final patch size

>  arch/arm/mach-ux500/board-mop500.c       |   12 +-
>  arch/arm/mach-ux500/board-mop500.h       |    4 +-
>  5 files changed, 208 insertions(+), 208 deletions(-)
>  create mode 100644 arch/arm/mach-ux500/board-mop500-audio.c
>  delete mode 100644 arch/arm/mach-ux500/board-mop500-msp.c
> 
> diff --git a/arch/arm/mach-ux500/Makefile b/arch/arm/mach-ux500/Makefile
> index 026086f..1dc2cfa 100644
> --- a/arch/arm/mach-ux500/Makefile
> +++ b/arch/arm/mach-ux500/Makefile
> @@ -12,6 +12,6 @@ obj-$(CONFIG_MACH_MOP500)	+= board-mop500.o board-mop500-sdi.o \
>  				board-mop500-uib.o board-mop500-stuib.o \
>  				board-mop500-u8500uib.o \
>  				board-mop500-pins.o \
> -				board-mop500-msp.o
> +				board-mop500-audio.o
>  obj-$(CONFIG_SMP)		+= platsmp.o headsmp.o
>  obj-$(CONFIG_HOTPLUG_CPU)	+= hotplug.o
> diff --git a/arch/arm/mach-ux500/board-mop500-audio.c b/arch/arm/mach-ux500/board-mop500-audio.c
> new file mode 100644
> index 0000000..18f6c5a
> --- /dev/null
> +++ b/arch/arm/mach-ux500/board-mop500-audio.c
> @@ -0,0 +1,199 @@
> +/*
> + * Copyright (C) ST-Ericsson SA 2010
> + *
> + * License terms: GNU General Public License (GPL), version 2
> + */
> +
> +#include <linux/platform_device.h>
> +#include <linux/init.h>
> +#include <linux/gpio.h>
> +#include <linux/pinctrl/consumer.h>
> +
> +#include <plat/gpio-nomadik.h>
> +#include <plat/pincfg.h>
> +#include <plat/ste_dma40.h>
> +
> +#include <mach/devices.h>
> +#include <mach/hardware.h>
> +#include <mach/irqs.h>
> +#include <mach/msp.h>
> +
> +#include "ste-dma40-db8500.h"
> +#include "board-mop500.h"
> +#include "devices-db8500.h"
> +#include "pins-db8500.h"
> +
> +static struct stedma40_chan_cfg msp0_dma_rx = {
> +	.high_priority = true,
> +	.dir = STEDMA40_PERIPH_TO_MEM,
> +
> +	.src_dev_type = DB8500_DMA_DEV31_MSP0_RX_SLIM0_CH0_RX,
> +	.dst_dev_type = STEDMA40_DEV_DST_MEMORY,
> +
> +	.src_info.psize = STEDMA40_PSIZE_LOG_4,
> +	.dst_info.psize = STEDMA40_PSIZE_LOG_4,
> +
> +	/* data_width is set during configuration */
> +};
> +
> +static struct stedma40_chan_cfg msp0_dma_tx = {
> +	.high_priority = true,
> +	.dir = STEDMA40_MEM_TO_PERIPH,
> +
> +	.src_dev_type = STEDMA40_DEV_DST_MEMORY,
> +	.dst_dev_type = DB8500_DMA_DEV31_MSP0_TX_SLIM0_CH0_TX,
> +
> +	.src_info.psize = STEDMA40_PSIZE_LOG_4,
> +	.dst_info.psize = STEDMA40_PSIZE_LOG_4,
> +
> +	/* data_width is set during configuration */
> +};
> +
> +struct msp_i2s_platform_data msp0_platform_data = {
> +	.id = MSP_I2S_0,
> +	.msp_i2s_dma_rx = &msp0_dma_rx,
> +	.msp_i2s_dma_tx = &msp0_dma_tx,
> +};
> +
> +static struct stedma40_chan_cfg msp1_dma_rx = {
> +	.high_priority = true,
> +	.dir = STEDMA40_PERIPH_TO_MEM,
> +
> +	.src_dev_type = DB8500_DMA_DEV30_MSP3_RX,
> +	.dst_dev_type = STEDMA40_DEV_DST_MEMORY,
> +
> +	.src_info.psize = STEDMA40_PSIZE_LOG_4,
> +	.dst_info.psize = STEDMA40_PSIZE_LOG_4,
> +
> +	/* data_width is set during configuration */
> +};
> +
> +static struct stedma40_chan_cfg msp1_dma_tx = {
> +	.high_priority = true,
> +	.dir = STEDMA40_MEM_TO_PERIPH,
> +
> +	.src_dev_type = STEDMA40_DEV_DST_MEMORY,
> +	.dst_dev_type = DB8500_DMA_DEV30_MSP1_TX,
> +
> +	.src_info.psize = STEDMA40_PSIZE_LOG_4,
> +	.dst_info.psize = STEDMA40_PSIZE_LOG_4,
> +
> +	/* data_width is set during configuration */
> +};
> +
> +struct msp_i2s_platform_data msp1_platform_data = {
> +	.id = MSP_I2S_1,
> +	.msp_i2s_dma_rx = NULL,
> +	.msp_i2s_dma_tx = &msp1_dma_tx,
> +};
> +
> +static struct stedma40_chan_cfg msp2_dma_rx = {
> +	.high_priority = true,
> +	.dir = STEDMA40_PERIPH_TO_MEM,
> +
> +	.src_dev_type = DB8500_DMA_DEV14_MSP2_RX,
> +	.dst_dev_type = STEDMA40_DEV_DST_MEMORY,
> +
> +	/* MSP2 DMA doesn't work with PSIZE == 4 on DB8500v2 */
> +	.src_info.psize = STEDMA40_PSIZE_LOG_1,
> +	.dst_info.psize = STEDMA40_PSIZE_LOG_1,
> +
> +	/* data_width is set during configuration */
> +};
> +
> +static struct stedma40_chan_cfg msp2_dma_tx = {
> +	.high_priority = true,
> +	.dir = STEDMA40_MEM_TO_PERIPH,
> +
> +	.src_dev_type = STEDMA40_DEV_DST_MEMORY,
> +	.dst_dev_type = DB8500_DMA_DEV14_MSP2_TX,
> +
> +	.src_info.psize = STEDMA40_PSIZE_LOG_4,
> +	.dst_info.psize = STEDMA40_PSIZE_LOG_4,
> +
> +	.use_fixed_channel = true,
> +	.phy_channel = 1,
> +
> +	/* data_width is set during configuration */
> +};
> +
> +static struct platform_device *db8500_add_msp_i2s(struct device *parent,
> +			int id,
> +			resource_size_t base, int irq,
> +			struct msp_i2s_platform_data *pdata)
> +{
> +	struct platform_device *pdev;
> +	struct resource res[] = {
> +		DEFINE_RES_MEM(base, SZ_4K),
> +		DEFINE_RES_IRQ(irq),
> +	};
> +
> +	pr_info("Register platform-device 'ux500-msp-i2s', id %d, irq %d\n",
> +		id, irq);
> +	pdev = platform_device_register_resndata(parent, "ux500-msp-i2s", id,
> +						res, ARRAY_SIZE(res),
> +						pdata, sizeof(*pdata));
> +	if (!pdev) {
> +		pr_err("Failed to register platform-device 'ux500-msp-i2s.%d'!\n",
> +			id);
> +		return NULL;
> +	}
> +
> +	return pdev;
> +}
> +
> +/* Platform device for ASoC MOP500 machine */
> +static struct platform_device snd_soc_mop500 = {
> +	.name = "snd-soc-mop500",
> +	.id = 0,
> +	.dev = {
> +		.platform_data = NULL,
> +	},
> +};
> +
> +/* Platform device for Ux500-PCM */
> +static struct platform_device ux500_pcm = {
> +	.name = "ux500-pcm",
> +	.id = 0,
> +	.dev = {
> +		.platform_data = NULL,
> +	},
> +};
> +
> +struct msp_i2s_platform_data msp2_platform_data = {
> +	.id = MSP_I2S_2,
> +	.msp_i2s_dma_rx = &msp2_dma_rx,
> +	.msp_i2s_dma_tx = &msp2_dma_tx,
> +};
> +
> +struct msp_i2s_platform_data msp3_platform_data = {
> +	.id		= MSP_I2S_3,
> +	.msp_i2s_dma_rx	= &msp1_dma_rx,
> +	.msp_i2s_dma_tx	= NULL,
> +};
> +
> +void mop500_audio_init(struct device *parent)
> +{
> +	pr_info("%s: Register platform-device 'snd-soc-mop500'.\n", __func__);
> +	platform_device_register(&snd_soc_mop500);
> +
> +	pr_info("Initialize MSP I2S-devices.\n");
> +	db8500_add_msp_i2s(parent, 0, U8500_MSP0_BASE, IRQ_DB8500_MSP0,
> +			   &msp0_platform_data);
> +	db8500_add_msp_i2s(parent, 1, U8500_MSP1_BASE, IRQ_DB8500_MSP1,
> +			   &msp1_platform_data);
> +	db8500_add_msp_i2s(parent, 2, U8500_MSP2_BASE, IRQ_DB8500_MSP2,
> +			   &msp2_platform_data);
> +	db8500_add_msp_i2s(parent, 3, U8500_MSP3_BASE, IRQ_DB8500_MSP1,
> +			   &msp3_platform_data);
> +
> +	pr_info("%s: Register platform-device 'ux500-pcm'\n", __func__);
> +	platform_device_register(&ux500_pcm);
> +}
> +
> +/* Due for removal once the MSP driver has been fully DT:ed. */
> +void mop500_of_audio_init(struct device *parent)
> +{
> +	pr_info("%s: Register platform-device 'ux500-pcm'\n", __func__);
> +	platform_device_register(&ux500_pcm);
> +}
> diff --git a/arch/arm/mach-ux500/board-mop500-msp.c b/arch/arm/mach-ux500/board-mop500-msp.c
> deleted file mode 100644
> index 2af017f..0000000
> --- a/arch/arm/mach-ux500/board-mop500-msp.c
> +++ /dev/null
> @@ -1,199 +0,0 @@
> -/*
> - * Copyright (C) ST-Ericsson SA 2010
> - *
> - * License terms: GNU General Public License (GPL), version 2
> - */
> -
> -#include <linux/platform_device.h>
> -#include <linux/init.h>
> -#include <linux/gpio.h>
> -#include <linux/pinctrl/consumer.h>
> -
> -#include <plat/gpio-nomadik.h>
> -#include <plat/pincfg.h>
> -#include <plat/ste_dma40.h>
> -
> -#include <mach/devices.h>
> -#include <mach/hardware.h>
> -#include <mach/irqs.h>
> -#include <mach/msp.h>
> -
> -#include "ste-dma40-db8500.h"
> -#include "board-mop500.h"
> -#include "devices-db8500.h"
> -#include "pins-db8500.h"
> -
> -static struct stedma40_chan_cfg msp0_dma_rx = {
> -	.high_priority = true,
> -	.dir = STEDMA40_PERIPH_TO_MEM,
> -
> -	.src_dev_type = DB8500_DMA_DEV31_MSP0_RX_SLIM0_CH0_RX,
> -	.dst_dev_type = STEDMA40_DEV_DST_MEMORY,
> -
> -	.src_info.psize = STEDMA40_PSIZE_LOG_4,
> -	.dst_info.psize = STEDMA40_PSIZE_LOG_4,
> -
> -	/* data_width is set during configuration */
> -};
> -
> -static struct stedma40_chan_cfg msp0_dma_tx = {
> -	.high_priority = true,
> -	.dir = STEDMA40_MEM_TO_PERIPH,
> -
> -	.src_dev_type = STEDMA40_DEV_DST_MEMORY,
> -	.dst_dev_type = DB8500_DMA_DEV31_MSP0_TX_SLIM0_CH0_TX,
> -
> -	.src_info.psize = STEDMA40_PSIZE_LOG_4,
> -	.dst_info.psize = STEDMA40_PSIZE_LOG_4,
> -
> -	/* data_width is set during configuration */
> -};
> -
> -struct msp_i2s_platform_data msp0_platform_data = {
> -	.id = MSP_I2S_0,
> -	.msp_i2s_dma_rx = &msp0_dma_rx,
> -	.msp_i2s_dma_tx = &msp0_dma_tx,
> -};
> -
> -static struct stedma40_chan_cfg msp1_dma_rx = {
> -	.high_priority = true,
> -	.dir = STEDMA40_PERIPH_TO_MEM,
> -
> -	.src_dev_type = DB8500_DMA_DEV30_MSP3_RX,
> -	.dst_dev_type = STEDMA40_DEV_DST_MEMORY,
> -
> -	.src_info.psize = STEDMA40_PSIZE_LOG_4,
> -	.dst_info.psize = STEDMA40_PSIZE_LOG_4,
> -
> -	/* data_width is set during configuration */
> -};
> -
> -static struct stedma40_chan_cfg msp1_dma_tx = {
> -	.high_priority = true,
> -	.dir = STEDMA40_MEM_TO_PERIPH,
> -
> -	.src_dev_type = STEDMA40_DEV_DST_MEMORY,
> -	.dst_dev_type = DB8500_DMA_DEV30_MSP1_TX,
> -
> -	.src_info.psize = STEDMA40_PSIZE_LOG_4,
> -	.dst_info.psize = STEDMA40_PSIZE_LOG_4,
> -
> -	/* data_width is set during configuration */
> -};
> -
> -struct msp_i2s_platform_data msp1_platform_data = {
> -	.id = MSP_I2S_1,
> -	.msp_i2s_dma_rx = NULL,
> -	.msp_i2s_dma_tx = &msp1_dma_tx,
> -};
> -
> -static struct stedma40_chan_cfg msp2_dma_rx = {
> -	.high_priority = true,
> -	.dir = STEDMA40_PERIPH_TO_MEM,
> -
> -	.src_dev_type = DB8500_DMA_DEV14_MSP2_RX,
> -	.dst_dev_type = STEDMA40_DEV_DST_MEMORY,
> -
> -	/* MSP2 DMA doesn't work with PSIZE == 4 on DB8500v2 */
> -	.src_info.psize = STEDMA40_PSIZE_LOG_1,
> -	.dst_info.psize = STEDMA40_PSIZE_LOG_1,
> -
> -	/* data_width is set during configuration */
> -};
> -
> -static struct stedma40_chan_cfg msp2_dma_tx = {
> -	.high_priority = true,
> -	.dir = STEDMA40_MEM_TO_PERIPH,
> -
> -	.src_dev_type = STEDMA40_DEV_DST_MEMORY,
> -	.dst_dev_type = DB8500_DMA_DEV14_MSP2_TX,
> -
> -	.src_info.psize = STEDMA40_PSIZE_LOG_4,
> -	.dst_info.psize = STEDMA40_PSIZE_LOG_4,
> -
> -	.use_fixed_channel = true,
> -	.phy_channel = 1,
> -
> -	/* data_width is set during configuration */
> -};
> -
> -static struct platform_device *db8500_add_msp_i2s(struct device *parent,
> -			int id,
> -			resource_size_t base, int irq,
> -			struct msp_i2s_platform_data *pdata)
> -{
> -	struct platform_device *pdev;
> -	struct resource res[] = {
> -		DEFINE_RES_MEM(base, SZ_4K),
> -		DEFINE_RES_IRQ(irq),
> -	};
> -
> -	pr_info("Register platform-device 'ux500-msp-i2s', id %d, irq %d\n",
> -		id, irq);
> -	pdev = platform_device_register_resndata(parent, "ux500-msp-i2s", id,
> -						res, ARRAY_SIZE(res),
> -						pdata, sizeof(*pdata));
> -	if (!pdev) {
> -		pr_err("Failed to register platform-device 'ux500-msp-i2s.%d'!\n",
> -			id);
> -		return NULL;
> -	}
> -
> -	return pdev;
> -}
> -
> -/* Platform device for ASoC MOP500 machine */
> -static struct platform_device snd_soc_mop500 = {
> -	.name = "snd-soc-mop500",
> -	.id = 0,
> -	.dev = {
> -		.platform_data = NULL,
> -	},
> -};
> -
> -/* Platform device for Ux500-PCM */
> -static struct platform_device ux500_pcm = {
> -	.name = "ux500-pcm",
> -	.id = 0,
> -	.dev = {
> -		.platform_data = NULL,
> -	},
> -};
> -
> -struct msp_i2s_platform_data msp2_platform_data = {
> -	.id = MSP_I2S_2,
> -	.msp_i2s_dma_rx = &msp2_dma_rx,
> -	.msp_i2s_dma_tx = &msp2_dma_tx,
> -};
> -
> -struct msp_i2s_platform_data msp3_platform_data = {
> -	.id		= MSP_I2S_3,
> -	.msp_i2s_dma_rx	= &msp1_dma_rx,
> -	.msp_i2s_dma_tx	= NULL,
> -};
> -
> -/* Due for removal once the MSP driver has been fully DT:ed. */
> -void mop500_of_msp_init(struct device *parent)
> -{
> -	pr_info("%s: Register platform-device 'ux500-pcm'\n", __func__);
> -	platform_device_register(&ux500_pcm);
> -}
> -
> -void mop500_msp_init(struct device *parent)
> -{
> -	pr_info("%s: Register platform-device 'snd-soc-mop500'.\n", __func__);
> -	platform_device_register(&snd_soc_mop500);
> -
> -	pr_info("Initialize MSP I2S-devices.\n");
> -	db8500_add_msp_i2s(parent, 0, U8500_MSP0_BASE, IRQ_DB8500_MSP0,
> -			   &msp0_platform_data);
> -	db8500_add_msp_i2s(parent, 1, U8500_MSP1_BASE, IRQ_DB8500_MSP1,
> -			   &msp1_platform_data);
> -	db8500_add_msp_i2s(parent, 2, U8500_MSP2_BASE, IRQ_DB8500_MSP2,
> -			   &msp2_platform_data);
> -	db8500_add_msp_i2s(parent, 3, U8500_MSP3_BASE, IRQ_DB8500_MSP1,
> -			   &msp3_platform_data);
> -
> -	pr_info("%s: Register platform-device 'ux500-pcm'\n", __func__);
> -	platform_device_register(&ux500_pcm);
> -}
> diff --git a/arch/arm/mach-ux500/board-mop500.c b/arch/arm/mach-ux500/board-mop500.c
> index 0c141d5..7152635 100644
> --- a/arch/arm/mach-ux500/board-mop500.c
> +++ b/arch/arm/mach-ux500/board-mop500.c
> @@ -607,7 +607,7 @@ static void __init mop500_init_machine(void)
>  	mop500_i2c_init(parent);
>  	mop500_sdi_init(parent);
>  	mop500_spi_init(parent);
> -	mop500_msp_init(parent);
> +	mop500_audio_init(parent);
>  	mop500_uart_init(parent);
>  
>  	u8500_cryp1_hash1_init(parent);
> @@ -641,7 +641,7 @@ static void __init snowball_init_machine(void)
>  	mop500_i2c_init(parent);
>  	snowball_sdi_init(parent);
>  	mop500_spi_init(parent);
> -	mop500_msp_init(parent);
> +	mop500_audio_init(parent);
>  	mop500_uart_init(parent);
>  
>  	/* This board has full regulator constraints */
> @@ -673,7 +673,7 @@ static void __init hrefv60_init_machine(void)
>  	mop500_i2c_init(parent);
>  	hrefv60_sdi_init(parent);
>  	mop500_spi_init(parent);
> -	mop500_msp_init(parent);
> +	mop500_audio_init(parent);
>  	mop500_uart_init(parent);
>  
>  	i2c0_devs = ARRAY_SIZE(mop500_i2c0_devices);
> @@ -807,7 +807,7 @@ static void __init u8500_init_machine(void)
>  				ARRAY_SIZE(mop500_platform_devs));
>  
>  		mop500_sdi_init(parent);
> -		mop500_msp_init(parent);
> +		mop500_audio_init(parent);
>  		i2c0_devs = ARRAY_SIZE(mop500_i2c0_devices);
>  		i2c_register_board_info(0, mop500_i2c0_devices, i2c0_devs);
>  		i2c_register_board_info(2, mop500_i2c2_devices,
> @@ -816,7 +816,7 @@ static void __init u8500_init_machine(void)
>  		mop500_uib_init();
>  
>  	} else if (of_machine_is_compatible("calaosystems,snowball-a9500")) {
> -		mop500_of_msp_init(parent);
> +		mop500_of_audio_init(parent);
>  	} else if (of_machine_is_compatible("st-ericsson,hrefv60+")) {
>  		/*
>  		 * The HREFv60 board removed a GPIO expander and routed
> @@ -828,7 +828,7 @@ static void __init u8500_init_machine(void)
>  				ARRAY_SIZE(mop500_platform_devs));
>  
>  		hrefv60_sdi_init(parent);
> -		mop500_msp_init(parent);
> +		mop500_audio_init(parent);
>  
>  		i2c0_devs = ARRAY_SIZE(mop500_i2c0_devices);
>  		i2c0_devs -= NUM_PRE_V60_I2C0_DEVICES;
> diff --git a/arch/arm/mach-ux500/board-mop500.h b/arch/arm/mach-ux500/board-mop500.h
> index 3fbf48f..9e9dd5a 100644
> --- a/arch/arm/mach-ux500/board-mop500.h
> +++ b/arch/arm/mach-ux500/board-mop500.h
> @@ -97,9 +97,9 @@ void __init mop500_stuib_init(void);
>  void __init mop500_pinmaps_init(void);
>  void __init snowball_pinmaps_init(void);
>  void __init hrefv60_pinmaps_init(void);
> -void mop500_msp_init(struct device *parent);
> +void mop500_audio_init(struct device *parent);
>  /* Due for removal once the MSP driver has been fully DT:ed. */
> -void mop500_of_msp_init(struct device *parent);
> +void mop500_of_audio_init(struct device *parent);
>  
>  int __init mop500_uib_init(void);
>  void mop500_uib_i2c_add(int busnum, struct i2c_board_info *info,
> -- 
> 1.7.9.5
> 
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel@alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
> 


Regards, 
Gururaja

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

* Re: [alsa-devel] [PATCH 14/17] ARM: ux500: Rename MSP board file to something more meaningful
  2012-08-24 15:05   ` [alsa-devel] " Hebbar, Gururaja
@ 2012-08-24 15:08     ` Lee Jones
  2012-08-24 15:14     ` Lee Jones
  1 sibling, 0 replies; 36+ messages in thread
From: Lee Jones @ 2012-08-24 15:08 UTC (permalink / raw)
  To: Hebbar, Gururaja
  Cc: linux-arm-kernel, linux-kernel, ola.o.lilja, alsa-devel,
	linus.walleij, arnd, roger.xr.nilsson, broonie,
	STEricsson_nomadik_linux

> >  arch/arm/mach-ux500/Makefile             |    2 +-
> >  arch/arm/mach-ux500/board-mop500-audio.c |  199 ++++++++++++++++++++++++++++++
> >  arch/arm/mach-ux500/board-mop500-msp.c   |  199 ------------------------------
> 
> Please use _M option when generating patches (git-format-patch -M ...).
> This will reduce the final patch size

Ah, I see. That's what Linus was going on about!

I can do that.

-- 
Lee Jones
Linaro ST-Ericsson Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

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

* Re: [alsa-devel] [PATCH 14/17] ARM: ux500: Rename MSP board file to something more meaningful
  2012-08-24 15:05   ` [alsa-devel] " Hebbar, Gururaja
  2012-08-24 15:08     ` Lee Jones
@ 2012-08-24 15:14     ` Lee Jones
  2012-08-24 15:16       ` Hebbar, Gururaja
  1 sibling, 1 reply; 36+ messages in thread
From: Lee Jones @ 2012-08-24 15:14 UTC (permalink / raw)
  To: Hebbar, Gururaja
  Cc: linux-arm-kernel, linux-kernel, ola.o.lilja, alsa-devel,
	linus.walleij, arnd, roger.xr.nilsson, broonie,
	STEricsson_nomadik_linux

Like this?

From: Lee Jones <lee.jones@linaro.org>
Date: Fri, 24 Aug 2012 13:16:06 +0100
Subject: [PATCH 1/1] ARM: ux500: Rename MSP board file to something more meaningful

The 'msp' board file does more than just register MSP devices. It
also registers some other components necessary to get audio working
on ux500 based platforms; such as the PCM and Machine Drivers. For
that reason we're changing the filename to be more encompassing -
'audio'.

Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
 arch/arm/mach-ux500/Makefile                       |    2 +-
 .../{board-mop500-msp.c => board-mop500-audio.c}   |   16 ++++++++--------
 arch/arm/mach-ux500/board-mop500.c                 |   12 ++++++------
 arch/arm/mach-ux500/board-mop500.h                 |    4 ++--
 4 files changed, 17 insertions(+), 17 deletions(-)
 rename arch/arm/mach-ux500/{board-mop500-msp.c => board-mop500-audio.c} (98%)

diff --git a/arch/arm/mach-ux500/Makefile b/arch/arm/mach-ux500/Makefile
index 026086f..1dc2cfa 100644
--- a/arch/arm/mach-ux500/Makefile
+++ b/arch/arm/mach-ux500/Makefile
@@ -12,6 +12,6 @@ obj-$(CONFIG_MACH_MOP500)	+= board-mop500.o board-mop500-sdi.o \
 				board-mop500-uib.o board-mop500-stuib.o \
 				board-mop500-u8500uib.o \
 				board-mop500-pins.o \
-				board-mop500-msp.o
+				board-mop500-audio.o
 obj-$(CONFIG_SMP)		+= platsmp.o headsmp.o
 obj-$(CONFIG_HOTPLUG_CPU)	+= hotplug.o
diff --git a/arch/arm/mach-ux500/board-mop500-msp.c b/arch/arm/mach-ux500/board-mop500-audio.c
similarity index 98%
rename from arch/arm/mach-ux500/board-mop500-msp.c
rename to arch/arm/mach-ux500/board-mop500-audio.c
index 2af017f..18f6c5a 100644
--- a/arch/arm/mach-ux500/board-mop500-msp.c
+++ b/arch/arm/mach-ux500/board-mop500-audio.c
@@ -172,14 +172,7 @@ struct msp_i2s_platform_data msp3_platform_data = {
 	.msp_i2s_dma_tx	= NULL,
 };
 
-/* Due for removal once the MSP driver has been fully DT:ed. */
-void mop500_of_msp_init(struct device *parent)
-{
-	pr_info("%s: Register platform-device 'ux500-pcm'\n", __func__);
-	platform_device_register(&ux500_pcm);
-}
-
-void mop500_msp_init(struct device *parent)
+void mop500_audio_init(struct device *parent)
 {
 	pr_info("%s: Register platform-device 'snd-soc-mop500'.\n", __func__);
 	platform_device_register(&snd_soc_mop500);
@@ -197,3 +190,10 @@ void mop500_msp_init(struct device *parent)
 	pr_info("%s: Register platform-device 'ux500-pcm'\n", __func__);
 	platform_device_register(&ux500_pcm);
 }
+
+/* Due for removal once the MSP driver has been fully DT:ed. */
+void mop500_of_audio_init(struct device *parent)
+{
+	pr_info("%s: Register platform-device 'ux500-pcm'\n", __func__);
+	platform_device_register(&ux500_pcm);
+}
diff --git a/arch/arm/mach-ux500/board-mop500.c b/arch/arm/mach-ux500/board-mop500.c
index 0c141d5..7152635 100644
--- a/arch/arm/mach-ux500/board-mop500.c
+++ b/arch/arm/mach-ux500/board-mop500.c
@@ -607,7 +607,7 @@ static void __init mop500_init_machine(void)
 	mop500_i2c_init(parent);
 	mop500_sdi_init(parent);
 	mop500_spi_init(parent);
-	mop500_msp_init(parent);
+	mop500_audio_init(parent);
 	mop500_uart_init(parent);
 
 	u8500_cryp1_hash1_init(parent);
@@ -641,7 +641,7 @@ static void __init snowball_init_machine(void)
 	mop500_i2c_init(parent);
 	snowball_sdi_init(parent);
 	mop500_spi_init(parent);
-	mop500_msp_init(parent);
+	mop500_audio_init(parent);
 	mop500_uart_init(parent);
 
 	/* This board has full regulator constraints */
@@ -673,7 +673,7 @@ static void __init hrefv60_init_machine(void)
 	mop500_i2c_init(parent);
 	hrefv60_sdi_init(parent);
 	mop500_spi_init(parent);
-	mop500_msp_init(parent);
+	mop500_audio_init(parent);
 	mop500_uart_init(parent);
 
 	i2c0_devs = ARRAY_SIZE(mop500_i2c0_devices);
@@ -807,7 +807,7 @@ static void __init u8500_init_machine(void)
 				ARRAY_SIZE(mop500_platform_devs));
 
 		mop500_sdi_init(parent);
-		mop500_msp_init(parent);
+		mop500_audio_init(parent);
 		i2c0_devs = ARRAY_SIZE(mop500_i2c0_devices);
 		i2c_register_board_info(0, mop500_i2c0_devices, i2c0_devs);
 		i2c_register_board_info(2, mop500_i2c2_devices,
@@ -816,7 +816,7 @@ static void __init u8500_init_machine(void)
 		mop500_uib_init();
 
 	} else if (of_machine_is_compatible("calaosystems,snowball-a9500")) {
-		mop500_of_msp_init(parent);
+		mop500_of_audio_init(parent);
 	} else if (of_machine_is_compatible("st-ericsson,hrefv60+")) {
 		/*
 		 * The HREFv60 board removed a GPIO expander and routed
@@ -828,7 +828,7 @@ static void __init u8500_init_machine(void)
 				ARRAY_SIZE(mop500_platform_devs));
 
 		hrefv60_sdi_init(parent);
-		mop500_msp_init(parent);
+		mop500_audio_init(parent);
 
 		i2c0_devs = ARRAY_SIZE(mop500_i2c0_devices);
 		i2c0_devs -= NUM_PRE_V60_I2C0_DEVICES;
diff --git a/arch/arm/mach-ux500/board-mop500.h b/arch/arm/mach-ux500/board-mop500.h
index 3fbf48f..9e9dd5a 100644
--- a/arch/arm/mach-ux500/board-mop500.h
+++ b/arch/arm/mach-ux500/board-mop500.h
@@ -97,9 +97,9 @@ void __init mop500_stuib_init(void);
 void __init mop500_pinmaps_init(void);
 void __init snowball_pinmaps_init(void);
 void __init hrefv60_pinmaps_init(void);
-void mop500_msp_init(struct device *parent);
+void mop500_audio_init(struct device *parent);
 /* Due for removal once the MSP driver has been fully DT:ed. */
-void mop500_of_msp_init(struct device *parent);
+void mop500_of_audio_init(struct device *parent);
 
 int __init mop500_uib_init(void);
 void mop500_uib_i2c_add(int busnum, struct i2c_board_info *info,
-- 
1.7.9.5

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

* RE: [alsa-devel] [PATCH 14/17] ARM: ux500: Rename MSP board file to something more meaningful
  2012-08-24 15:14     ` Lee Jones
@ 2012-08-24 15:16       ` Hebbar, Gururaja
  0 siblings, 0 replies; 36+ messages in thread
From: Hebbar, Gururaja @ 2012-08-24 15:16 UTC (permalink / raw)
  To: Lee Jones
  Cc: linux-arm-kernel, linux-kernel, ola.o.lilja, alsa-devel,
	linus.walleij, arnd, roger.xr.nilsson, broonie,
	STEricsson_nomadik_linux

On Fri, Aug 24, 2012 at 20:44:47, Lee Jones wrote:
> Like this?

Exactly. Thanks

> 
> From: Lee Jones <lee.jones@linaro.org>
> Date: Fri, 24 Aug 2012 13:16:06 +0100
> Subject: [PATCH 1/1] ARM: ux500: Rename MSP board file to something more meaningful
> 
> The 'msp' board file does more than just register MSP devices. It
> also registers some other components necessary to get audio working
> on ux500 based platforms; such as the PCM and Machine Drivers. For
> that reason we're changing the filename to be more encompassing -
> 'audio'.
> 
> Acked-by: Linus Walleij <linus.walleij@linaro.org>
> Signed-off-by: Lee Jones <lee.jones@linaro.org>
> ---
>  arch/arm/mach-ux500/Makefile                       |    2 +-
>  .../{board-mop500-msp.c => board-mop500-audio.c}   |   16 ++++++++--------
>  arch/arm/mach-ux500/board-mop500.c                 |   12 ++++++------
>  arch/arm/mach-ux500/board-mop500.h                 |    4 ++--
>  4 files changed, 17 insertions(+), 17 deletions(-)
>  rename arch/arm/mach-ux500/{board-mop500-msp.c => board-mop500-audio.c} (98%)
> 
> diff --git a/arch/arm/mach-ux500/Makefile b/arch/arm/mach-ux500/Makefile
> index 026086f..1dc2cfa 100644
> --- a/arch/arm/mach-ux500/Makefile
> +++ b/arch/arm/mach-ux500/Makefile
> @@ -12,6 +12,6 @@ obj-$(CONFIG_MACH_MOP500)	+= board-mop500.o board-mop500-sdi.o \
>  				board-mop500-uib.o board-mop500-stuib.o \
>  				board-mop500-u8500uib.o \
>  				board-mop500-pins.o \
> -				board-mop500-msp.o
> +				board-mop500-audio.o
>  obj-$(CONFIG_SMP)		+= platsmp.o headsmp.o
>  obj-$(CONFIG_HOTPLUG_CPU)	+= hotplug.o
> diff --git a/arch/arm/mach-ux500/board-mop500-msp.c b/arch/arm/mach-ux500/board-mop500-audio.c
> similarity index 98%
> rename from arch/arm/mach-ux500/board-mop500-msp.c
> rename to arch/arm/mach-ux500/board-mop500-audio.c
> index 2af017f..18f6c5a 100644
> --- a/arch/arm/mach-ux500/board-mop500-msp.c
> +++ b/arch/arm/mach-ux500/board-mop500-audio.c
> @@ -172,14 +172,7 @@ struct msp_i2s_platform_data msp3_platform_data = {
>  	.msp_i2s_dma_tx	= NULL,
>  };
>  
> -/* Due for removal once the MSP driver has been fully DT:ed. */
> -void mop500_of_msp_init(struct device *parent)
> -{
> -	pr_info("%s: Register platform-device 'ux500-pcm'\n", __func__);
> -	platform_device_register(&ux500_pcm);
> -}
> -
> -void mop500_msp_init(struct device *parent)
> +void mop500_audio_init(struct device *parent)
>  {
>  	pr_info("%s: Register platform-device 'snd-soc-mop500'.\n", __func__);
>  	platform_device_register(&snd_soc_mop500);
> @@ -197,3 +190,10 @@ void mop500_msp_init(struct device *parent)
>  	pr_info("%s: Register platform-device 'ux500-pcm'\n", __func__);
>  	platform_device_register(&ux500_pcm);
>  }
> +
> +/* Due for removal once the MSP driver has been fully DT:ed. */
> +void mop500_of_audio_init(struct device *parent)
> +{
> +	pr_info("%s: Register platform-device 'ux500-pcm'\n", __func__);
> +	platform_device_register(&ux500_pcm);
> +}
> diff --git a/arch/arm/mach-ux500/board-mop500.c b/arch/arm/mach-ux500/board-mop500.c
> index 0c141d5..7152635 100644
> --- a/arch/arm/mach-ux500/board-mop500.c
> +++ b/arch/arm/mach-ux500/board-mop500.c
> @@ -607,7 +607,7 @@ static void __init mop500_init_machine(void)
>  	mop500_i2c_init(parent);
>  	mop500_sdi_init(parent);
>  	mop500_spi_init(parent);
> -	mop500_msp_init(parent);
> +	mop500_audio_init(parent);
>  	mop500_uart_init(parent);
>  
>  	u8500_cryp1_hash1_init(parent);
> @@ -641,7 +641,7 @@ static void __init snowball_init_machine(void)
>  	mop500_i2c_init(parent);
>  	snowball_sdi_init(parent);
>  	mop500_spi_init(parent);
> -	mop500_msp_init(parent);
> +	mop500_audio_init(parent);
>  	mop500_uart_init(parent);
>  
>  	/* This board has full regulator constraints */
> @@ -673,7 +673,7 @@ static void __init hrefv60_init_machine(void)
>  	mop500_i2c_init(parent);
>  	hrefv60_sdi_init(parent);
>  	mop500_spi_init(parent);
> -	mop500_msp_init(parent);
> +	mop500_audio_init(parent);
>  	mop500_uart_init(parent);
>  
>  	i2c0_devs = ARRAY_SIZE(mop500_i2c0_devices);
> @@ -807,7 +807,7 @@ static void __init u8500_init_machine(void)
>  				ARRAY_SIZE(mop500_platform_devs));
>  
>  		mop500_sdi_init(parent);
> -		mop500_msp_init(parent);
> +		mop500_audio_init(parent);
>  		i2c0_devs = ARRAY_SIZE(mop500_i2c0_devices);
>  		i2c_register_board_info(0, mop500_i2c0_devices, i2c0_devs);
>  		i2c_register_board_info(2, mop500_i2c2_devices,
> @@ -816,7 +816,7 @@ static void __init u8500_init_machine(void)
>  		mop500_uib_init();
>  
>  	} else if (of_machine_is_compatible("calaosystems,snowball-a9500")) {
> -		mop500_of_msp_init(parent);
> +		mop500_of_audio_init(parent);
>  	} else if (of_machine_is_compatible("st-ericsson,hrefv60+")) {
>  		/*
>  		 * The HREFv60 board removed a GPIO expander and routed
> @@ -828,7 +828,7 @@ static void __init u8500_init_machine(void)
>  				ARRAY_SIZE(mop500_platform_devs));
>  
>  		hrefv60_sdi_init(parent);
> -		mop500_msp_init(parent);
> +		mop500_audio_init(parent);
>  
>  		i2c0_devs = ARRAY_SIZE(mop500_i2c0_devices);
>  		i2c0_devs -= NUM_PRE_V60_I2C0_DEVICES;
> diff --git a/arch/arm/mach-ux500/board-mop500.h b/arch/arm/mach-ux500/board-mop500.h
> index 3fbf48f..9e9dd5a 100644
> --- a/arch/arm/mach-ux500/board-mop500.h
> +++ b/arch/arm/mach-ux500/board-mop500.h
> @@ -97,9 +97,9 @@ void __init mop500_stuib_init(void);
>  void __init mop500_pinmaps_init(void);
>  void __init snowball_pinmaps_init(void);
>  void __init hrefv60_pinmaps_init(void);
> -void mop500_msp_init(struct device *parent);
> +void mop500_audio_init(struct device *parent);
>  /* Due for removal once the MSP driver has been fully DT:ed. */
> -void mop500_of_msp_init(struct device *parent);
> +void mop500_of_audio_init(struct device *parent);
>  
>  int __init mop500_uib_init(void);
>  void mop500_uib_i2c_add(int busnum, struct i2c_board_info *info,
> -- 
> 1.7.9.5
> 


Regards, 
Gururaja

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

* Re: [PATCH 01/17] ASoC: Ux500: Move MSP pinctrl setup into the MSP driver
  2012-08-24 14:01 ` [PATCH 01/17] ASoC: Ux500: Move MSP pinctrl setup into the MSP driver Lee Jones
@ 2012-08-30 23:46   ` Linus Walleij
  2012-09-10 16:46   ` Lee Jones
  1 sibling, 0 replies; 36+ messages in thread
From: Linus Walleij @ 2012-08-30 23:46 UTC (permalink / raw)
  To: Lee Jones
  Cc: linux-arm-kernel, linux-kernel, ola.o.lilja, alsa-devel,
	linus.walleij, arnd, roger.xr.nilsson, broonie,
	STEricsson_nomadik_linux

On Fri, Aug 24, 2012 at 7:01 AM, Lee Jones <lee.jones@linaro.org> wrote:

> In the initial submission of the MSP driver msp1 and msp3's associated
> pinctrl mechanism was passed back to platform code using a plat_init()
> call-back routine, but it has no place in platform code. The MSP driver
> should set this up for the appropriate ports. Instead we use a use_pinctrl
> identifier which is passed from platform_data/Device Tree which indicates
> which ports should use pinctrl.
>
> CC: alsa-devel@alsa-project.org
> Signed-off-by: Lee Jones <lee.jones@linaro.org>

Looks good to me, so Acked-by: Linus Walleij <linus.walleij@linaro.org>
for the ux500 mach part.

However I'd request Ola/Roger to ACK it too on the ALSA side.

Yours,
Linus Walleij

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

* Re: [PATCH 09/17] ARM: ux500: Add AB8500 CODEC node to DB8500 Device Tree
  2012-08-24 14:01 ` [PATCH 09/17] ARM: ux500: Add AB8500 CODEC node to DB8500 Device Tree Lee Jones
@ 2012-08-30 23:50   ` Linus Walleij
  0 siblings, 0 replies; 36+ messages in thread
From: Linus Walleij @ 2012-08-30 23:50 UTC (permalink / raw)
  To: Lee Jones
  Cc: linux-arm-kernel, linux-kernel, STEricsson_nomadik_linux,
	linus.walleij, arnd, broonie, ola.o.lilja, roger.xr.nilsson,
	alsa-devel

On Fri, Aug 24, 2012 at 7:01 AM, Lee Jones <lee.jones@linaro.org> wrote:

> Ensure correct probing and pass though important configuration
> options to the AB8500 CODEC driver when DT is enabled
>
> Signed-off-by: Lee Jones <lee.jones@linaro.org>

Acked-by: Linus Walleij <linus.walleij@linaro.org>

Yours,
Linus Walleij

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

* Re: [PATCH 07/17] Documentation: Define the MSP Driver Device Tree bindings
  2012-08-24 14:01 ` [PATCH 07/17] Documentation: Define the MSP " Lee Jones
@ 2012-09-10 16:43   ` Lee Jones
  2012-09-11  9:08     ` Ola Lilja
  0 siblings, 1 reply; 36+ messages in thread
From: Lee Jones @ 2012-09-10 16:43 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel
  Cc: STEricsson_nomadik_linux, linus.walleij, arnd, broonie,
	ola.o.lilja, roger.xr.nilsson, alsa-devel

Ola poke.

On Fri, Aug 24, 2012 at 03:01:43PM +0100, Lee Jones wrote:
> Here we add the required documentation for the new Device Tree
> bindings pertaining to the MSP CPU-side DAI Driver.
> 
> CC: alsa-devel@alsa-project.org
> Signed-off-by: Lee Jones <lee.jones@linaro.org>
> ---
>  .../devicetree/bindings/sound/ux500-msp.txt        |   43 ++++++++++++++++++++
>  1 file changed, 43 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/sound/ux500-msp.txt
> 
> diff --git a/Documentation/devicetree/bindings/sound/ux500-msp.txt b/Documentation/devicetree/bindings/sound/ux500-msp.txt
> new file mode 100644
> index 0000000..99acd9c
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/sound/ux500-msp.txt
> @@ -0,0 +1,43 @@
> +* ux500 MSP (CPU-side Digital Audio Interface)
> +
> +Required properties:
> + - compatible       :"stericsson,ux500-msp-i2s"
> + - reg              : Physical base address and length of the device's registers.
> +
> +Optional properties:
> + - interrupts       : The interrupt output from the device.
> + - interrupt-parent : The parent interrupt controller.
> + - <name>-supply    : Phandle to the regulator <name> supply
> +
> +Example:
> +
> +	sound {
> +		compatible = "stericsson,snd-soc-mop500";
> +
> +		stericsson,platform-pcm-dma = <&pcm>;
> +		stericsson,cpu-dai = <&msp1 &msp3>;
> +		stericsson,audio-codec = <&codec>;
> +	};
> +
> +	pcm: ux500-pcm {
> +		compatible = "stericsson,ux500-pcm";
> +	};
> +
> +	msp1: msp@80124000 {
> +		compatible = "stericsson,ux500-msp-i2s";
> +		reg = <0x80124000 0x1000>;
> +		interrupts = <0 62 0x4>;
> +		v-ape-supply = <&db8500_vape_reg>;
> +	};
> +
> +	msp3: msp@80125000 {
> +		compatible = "stericsson,ux500-msp-i2s";
> +		reg = <0x80125000 0x1000>;
> +		interrupts = <0 62 0x4>;
> +		v-ape-supply = <&db8500_vape_reg>;
> +	};
> +
> +	codec: ab8500-codec {
> +		compatible = "stericsson,ab8500-codec";
> +		stericsson,earpeice-cmv = <950>; /* Units in mV. */
> +	};
> -- 
> 1.7.9.5
> 

-- 
Lee Jones
Linaro ST-Ericsson Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

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

* Re: [PATCH 06/17] Documentation: Define the MOP500 Audio Machine Driver Device Tree bindings
  2012-08-24 14:01 ` [PATCH 06/17] Documentation: Define the MOP500 Audio Machine Driver Device Tree bindings Lee Jones
@ 2012-09-10 16:44   ` Lee Jones
  2012-09-11  9:06     ` Ola Lilja
  0 siblings, 1 reply; 36+ messages in thread
From: Lee Jones @ 2012-09-10 16:44 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel
  Cc: STEricsson_nomadik_linux, linus.walleij, arnd, broonie,
	ola.o.lilja, roger.xr.nilsson, alsa-devel

Ola poke.

On Fri, Aug 24, 2012 at 03:01:42PM +0100, Lee Jones wrote:
> Here we add the required documentation for the new Device Tree
> bindings pertaining to the MOP500 Audio Machine driver.
> 
> CC: alsa-devel@alsa-project.org
> Signed-off-by: Lee Jones <lee.jones@linaro.org>
> ---
>  .../devicetree/bindings/sound/ux500-mop500.txt     |   39 ++++++++++++++++++++
>  1 file changed, 39 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/sound/ux500-mop500.txt
> 
> diff --git a/Documentation/devicetree/bindings/sound/ux500-mop500.txt b/Documentation/devicetree/bindings/sound/ux500-mop500.txt
> new file mode 100644
> index 0000000..48e071c
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/sound/ux500-mop500.txt
> @@ -0,0 +1,39 @@
> +* MOP500 Audio Machine Driver
> +
> +This node is responsible for linking together all ux500 Audio Driver components.
> +
> +Required properties:
> + - compatible              : "stericsson,snd-soc-mop500"
> +
> +Non-standard properties:
> + - stericsson,cpu-dai      : Phandle to the CPU-side DAI
> + - stericsson,audio-codec  : Phandle to the Audio CODEC
> + - stericsson,card-name    : Over-ride default card name
> +
> +Example:
> +
> +	sound {
> +		compatible = "stericsson,snd-soc-mop500";
> +
> +		stericsson,cpu-dai = <&msp1 &msp3>;
> +		stericsson,audio-codec = <&codec>;
> +	};
> +
> +	msp1: msp@80124000 {
> +		compatible = "stericsson,ux500-msp-i2s";
> +		reg = <0x80124000 0x1000>;
> +		interrupts = <0 62 0x4>;
> +		v-ape-supply = <&db8500_vape_reg>;
> +	};
> +
> +	msp3: msp@80125000 {
> +		compatible = "stericsson,ux500-msp-i2s";
> +		reg = <0x80125000 0x1000>;
> +		interrupts = <0 62 0x4>;
> +		v-ape-supply = <&db8500_vape_reg>;
> +	};
> +
> +	codec: ab8500-codec {
> +		compatible = "stericsson,ab8500-codec";
> +		stericsson,earpeice-cmv = <950>; /* Units in mV. */
> +	};
> -- 
> 1.7.9.5
> 

-- 
Lee Jones
Linaro ST-Ericsson Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

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

* Re: [PATCH 05/17] ASoC: Ux500: Minor coding layout changes
  2012-08-24 14:01 ` [PATCH 05/17] ASoC: Ux500: Minor coding layout changes Lee Jones
@ 2012-09-10 16:44   ` Lee Jones
  2012-09-11  0:27     ` Mark Brown
  2012-09-11  9:03     ` Ola Lilja
  0 siblings, 2 replies; 36+ messages in thread
From: Lee Jones @ 2012-09-10 16:44 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel
  Cc: STEricsson_nomadik_linux, linus.walleij, arnd, broonie,
	ola.o.lilja, roger.xr.nilsson, alsa-devel

Ola poke.

On Fri, Aug 24, 2012 at 03:01:41PM +0100, Lee Jones wrote:
> Includes removal of duplicate debug print affirming entry into
> the probe function, an unnecessary line break of a coding line
> <80 chars and a white space change (unintentional tab).
> 
> Signed-off-by: Lee Jones <lee.jones@linaro.org>
> ---
>  sound/soc/ux500/mop500.c |    7 ++-----
>  1 file changed, 2 insertions(+), 5 deletions(-)
> 
> diff --git a/sound/soc/ux500/mop500.c b/sound/soc/ux500/mop500.c
> index 6840df7..356611d 100644
> --- a/sound/soc/ux500/mop500.c
> +++ b/sound/soc/ux500/mop500.c
> @@ -88,8 +88,6 @@ static int __devinit mop500_probe(struct platform_device *pdev)
>  	struct device_node *np = pdev->dev.of_node;
>  	int ret;
>  
> -	pr_debug("%s: Enter.\n", __func__);
> -
>  	dev_dbg(&pdev->dev, "%s: Enter.\n", __func__);
>  
>  	mop500_card.dev = &pdev->dev;
> @@ -117,8 +115,7 @@ static int __devinit mop500_probe(struct platform_device *pdev)
>  	ret = snd_soc_register_card(&mop500_card);
>  	if (ret)
>  		dev_err(&pdev->dev,
> -			"Error: snd_soc_register_card failed (%d)!\n",
> -			ret);
> +			"Error: snd_soc_register_card failed (%d)!\n", ret);
>  
>  	return ret;
>  }
> @@ -131,7 +128,7 @@ static int __devexit mop500_remove(struct platform_device *pdev)
>  
>  	snd_soc_unregister_card(mop500_card);
>  	mop500_ab8500_remove(mop500_card);
> -	
> +
>  	return 0;
>  }
>  
> -- 
> 1.7.9.5
> 

-- 
Lee Jones
Linaro ST-Ericsson Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

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

* Re: [PATCH 01/17] ASoC: Ux500: Move MSP pinctrl setup into the MSP driver
  2012-08-24 14:01 ` [PATCH 01/17] ASoC: Ux500: Move MSP pinctrl setup into the MSP driver Lee Jones
  2012-08-30 23:46   ` Linus Walleij
@ 2012-09-10 16:46   ` Lee Jones
  2012-09-11  9:28     ` Ola Lilja
  1 sibling, 1 reply; 36+ messages in thread
From: Lee Jones @ 2012-09-10 16:46 UTC (permalink / raw)
  To: linux-arm-kernel, linux-kernel
  Cc: STEricsson_nomadik_linux, linus.walleij, arnd, broonie,
	ola.o.lilja, roger.xr.nilsson, alsa-devel

Ola poke.

On Fri, Aug 24, 2012 at 03:01:37PM +0100, Lee Jones wrote:
> In the initial submission of the MSP driver msp1 and msp3's associated
> pinctrl mechanism was passed back to platform code using a plat_init()
> call-back routine, but it has no place in platform code. The MSP driver
> should set this up for the appropriate ports. Instead we use a use_pinctrl
> identifier which is passed from platform_data/Device Tree which indicates
> which ports should use pinctrl.
> 
> CC: alsa-devel@alsa-project.org
> Signed-off-by: Lee Jones <lee.jones@linaro.org>
> ---
>  arch/arm/mach-ux500/board-mop500-msp.c |   75 +-------------------------------
>  arch/arm/mach-ux500/include/mach/msp.h |    2 -
>  sound/soc/ux500/ux500_msp_i2s.c        |   67 +++++++++++++++++++++-------
>  sound/soc/ux500/ux500_msp_i2s.h        |    8 +++-
>  4 files changed, 58 insertions(+), 94 deletions(-)
> 
> diff --git a/arch/arm/mach-ux500/board-mop500-msp.c b/arch/arm/mach-ux500/board-mop500-msp.c
> index df15646..fc78d5d 100644
> --- a/arch/arm/mach-ux500/board-mop500-msp.c
> +++ b/arch/arm/mach-ux500/board-mop500-msp.c
> @@ -23,53 +23,6 @@
>  #include "devices-db8500.h"
>  #include "pins-db8500.h"
>  
> -/* MSP1/3 Tx/Rx usage protection */
> -static DEFINE_SPINLOCK(msp_rxtx_lock);
> -
> -/* Reference Count */
> -static int msp_rxtx_ref;
> -
> -/* Pin modes */
> -struct pinctrl *msp1_p;
> -struct pinctrl_state *msp1_def;
> -struct pinctrl_state *msp1_sleep;
> -
> -int msp13_i2s_init(void)
> -{
> -	int retval = 0;
> -	unsigned long flags;
> -
> -	spin_lock_irqsave(&msp_rxtx_lock, flags);
> -	if (msp_rxtx_ref == 0 && !(IS_ERR(msp1_p) || IS_ERR(msp1_def))) {
> -		retval = pinctrl_select_state(msp1_p, msp1_def);
> -		if (retval)
> -			pr_err("could not set MSP1 defstate\n");
> -	}
> -	if (!retval)
> -		msp_rxtx_ref++;
> -	spin_unlock_irqrestore(&msp_rxtx_lock, flags);
> -
> -	return retval;
> -}
> -
> -int msp13_i2s_exit(void)
> -{
> -	int retval = 0;
> -	unsigned long flags;
> -
> -	spin_lock_irqsave(&msp_rxtx_lock, flags);
> -	WARN_ON(!msp_rxtx_ref);
> -	msp_rxtx_ref--;
> -	if (msp_rxtx_ref == 0 && !(IS_ERR(msp1_p) || IS_ERR(msp1_sleep))) {
> -		retval = pinctrl_select_state(msp1_p, msp1_sleep);
> -		if (retval)
> -			pr_err("could not set MSP1 sleepstate\n");
> -	}
> -	spin_unlock_irqrestore(&msp_rxtx_lock, flags);
> -
> -	return retval;
> -}
> -
>  static struct stedma40_chan_cfg msp0_dma_rx = {
>  	.high_priority = true,
>  	.dir = STEDMA40_PERIPH_TO_MEM,
> @@ -132,8 +85,6 @@ static struct msp_i2s_platform_data msp1_platform_data = {
>  	.id = MSP_I2S_1,
>  	.msp_i2s_dma_rx = NULL,
>  	.msp_i2s_dma_tx = &msp1_dma_tx,
> -	.msp_i2s_init = msp13_i2s_init,
> -	.msp_i2s_exit = msp13_i2s_exit,
>  };
>  
>  static struct stedma40_chan_cfg msp2_dma_rx = {
> @@ -219,47 +170,23 @@ static struct msp_i2s_platform_data msp3_platform_data = {
>  	.id		= MSP_I2S_3,
>  	.msp_i2s_dma_rx	= &msp1_dma_rx,
>  	.msp_i2s_dma_tx	= NULL,
> -	.msp_i2s_init = msp13_i2s_init,
> -	.msp_i2s_exit = msp13_i2s_exit,
>  };
>  
>  int mop500_msp_init(struct device *parent)
>  {
> -	struct platform_device *msp1;
> -
>  	pr_info("%s: Register platform-device 'snd-soc-mop500'.\n", __func__);
>  	platform_device_register(&snd_soc_mop500);
>  
>  	pr_info("Initialize MSP I2S-devices.\n");
>  	db8500_add_msp_i2s(parent, 0, U8500_MSP0_BASE, IRQ_DB8500_MSP0,
>  			   &msp0_platform_data);
> -	msp1 = db8500_add_msp_i2s(parent, 1, U8500_MSP1_BASE, IRQ_DB8500_MSP1,
> +	db8500_add_msp_i2s(parent, 1, U8500_MSP1_BASE, IRQ_DB8500_MSP1,
>  			   &msp1_platform_data);
>  	db8500_add_msp_i2s(parent, 2, U8500_MSP2_BASE, IRQ_DB8500_MSP2,
>  			   &msp2_platform_data);
>  	db8500_add_msp_i2s(parent, 3, U8500_MSP3_BASE, IRQ_DB8500_MSP1,
>  			   &msp3_platform_data);
>  
> -	/* Get the pinctrl handle for MSP1 */
> -	if (msp1) {
> -		msp1_p = pinctrl_get(&msp1->dev);
> -		if (IS_ERR(msp1_p))
> -			dev_err(&msp1->dev, "could not get MSP1 pinctrl\n");
> -		else {
> -			msp1_def = pinctrl_lookup_state(msp1_p,
> -							PINCTRL_STATE_DEFAULT);
> -			if (IS_ERR(msp1_def)) {
> -				dev_err(&msp1->dev,
> -					"could not get MSP1 defstate\n");
> -			}
> -			msp1_sleep = pinctrl_lookup_state(msp1_p,
> -							  PINCTRL_STATE_SLEEP);
> -			if (IS_ERR(msp1_sleep))
> -				dev_err(&msp1->dev,
> -					"could not get MSP1 idlestate\n");
> -		}
> -	}
> -
>  	pr_info("%s: Register platform-device 'ux500-pcm'\n", __func__);
>  	platform_device_register(&ux500_pcm);
>  
> diff --git a/arch/arm/mach-ux500/include/mach/msp.h b/arch/arm/mach-ux500/include/mach/msp.h
> index 798be19..3cc7142 100644
> --- a/arch/arm/mach-ux500/include/mach/msp.h
> +++ b/arch/arm/mach-ux500/include/mach/msp.h
> @@ -22,8 +22,6 @@ struct msp_i2s_platform_data {
>  	enum msp_i2s_id id;
>  	struct stedma40_chan_cfg *msp_i2s_dma_rx;
>  	struct stedma40_chan_cfg *msp_i2s_dma_tx;
> -	int (*msp_i2s_init) (void);
> -	int (*msp_i2s_exit) (void);
>  };
>  
>  #endif
> diff --git a/sound/soc/ux500/ux500_msp_i2s.c b/sound/soc/ux500/ux500_msp_i2s.c
> index 36be11e..08813c5 100644
> --- a/sound/soc/ux500/ux500_msp_i2s.c
> +++ b/sound/soc/ux500/ux500_msp_i2s.c
> @@ -15,6 +15,7 @@
>  
>  #include <linux/module.h>
>  #include <linux/platform_device.h>
> +#include <linux/pinctrl/consumer.h>
>  #include <linux/delay.h>
>  #include <linux/slab.h>
>  
> @@ -25,6 +26,9 @@
>  
>  #include "ux500_msp_i2s.h"
>  
> +/* MSP1/3 Tx/Rx usage protection */
> +static DEFINE_SPINLOCK(msp_rxtx_lock);
> +
>   /* Protocol desciptors */
>  static const struct msp_protdesc prot_descs[] = {
>  	{ /* I2S */
> @@ -352,17 +356,23 @@ static int configure_multichannel(struct ux500_msp *msp,
>  
>  static int enable_msp(struct ux500_msp *msp, struct ux500_msp_config *config)
>  {
> -	int status = 0;
> +	int status = 0, retval = 0;
>  	u32 reg_val_DMACR, reg_val_GCR;
> +	unsigned long flags;
>  
>  	/* Check msp state whether in RUN or CONFIGURED Mode */
> -	if ((msp->msp_state == MSP_STATE_IDLE) && (msp->plat_init)) {
> -		status = msp->plat_init();
> -		if (status) {
> -			dev_err(msp->dev, "%s: ERROR: Failed to init MSP (%d)!\n",
> -				__func__, status);
> -			return status;
> +	if (msp->msp_state == MSP_STATE_IDLE) {
> +		spin_lock_irqsave(&msp_rxtx_lock, flags);
> +		if (msp->pinctrl_rxtx_ref == 0 &&
> +			!(IS_ERR(msp->pinctrl_p) || IS_ERR(msp->pinctrl_def))) {
> +			retval = pinctrl_select_state(msp->pinctrl_p,
> +						msp->pinctrl_def);
> +			if (retval)
> +				pr_err("could not set MSP defstate\n");
>  		}
> +		if (!retval)
> +			msp->pinctrl_rxtx_ref++;
> +		spin_unlock_irqrestore(&msp_rxtx_lock, flags);
>  	}
>  
>  	/* Configure msp with protocol dependent settings */
> @@ -620,7 +630,8 @@ int ux500_msp_i2s_trigger(struct ux500_msp *msp, int cmd, int direction)
>  
>  int ux500_msp_i2s_close(struct ux500_msp *msp, unsigned int dir)
>  {
> -	int status = 0;
> +	int status = 0, retval = 0;
> +	unsigned long flags;
>  
>  	dev_dbg(msp->dev, "%s: Enter (dir = 0x%01x).\n", __func__, dir);
>  
> @@ -631,12 +642,19 @@ int ux500_msp_i2s_close(struct ux500_msp *msp, unsigned int dir)
>  		writel((readl(msp->registers + MSP_GCR) &
>  			       (~(FRAME_GEN_ENABLE | SRG_ENABLE))),
>  			      msp->registers + MSP_GCR);
> -		if (msp->plat_exit)
> -			status = msp->plat_exit();
> -			if (status)
> -				dev_warn(msp->dev,
> -					"%s: WARN: ux500_msp_i2s_exit failed (%d)!\n",
> -					__func__, status);
> +
> +		spin_lock_irqsave(&msp_rxtx_lock, flags);
> +		WARN_ON(!msp->pinctrl_rxtx_ref);
> +		msp->pinctrl_rxtx_ref--;
> +		if (msp->pinctrl_rxtx_ref == 0 &&
> +			!(IS_ERR(msp->pinctrl_p) || IS_ERR(msp->pinctrl_sleep))) {
> +			retval = pinctrl_select_state(msp->pinctrl_p,
> +						msp->pinctrl_sleep);
> +			if (retval)
> +				pr_err("could not set MSP sleepstate\n");
> +		}
> +		spin_unlock_irqrestore(&msp_rxtx_lock, flags);
> +
>  		writel(0, msp->registers + MSP_GCR);
>  		writel(0, msp->registers + MSP_TCF);
>  		writel(0, msp->registers + MSP_RCF);
> @@ -678,8 +696,6 @@ int ux500_msp_i2s_init_msp(struct platform_device *pdev,
>  
>  	msp->id = platform_data->id;
>  	msp->dev = &pdev->dev;
> -	msp->plat_init = platform_data->msp_i2s_init;
> -	msp->plat_exit = platform_data->msp_i2s_exit;
>  	msp->dma_cfg_rx = platform_data->msp_i2s_dma_rx;
>  	msp->dma_cfg_tx = platform_data->msp_i2s_dma_tx;
>  
> @@ -717,6 +733,25 @@ int ux500_msp_i2s_init_msp(struct platform_device *pdev,
>  	dev_dbg(&pdev->dev, "I2S device-name: '%s'\n", i2s_cont->name);
>  	msp->i2s_cont = i2s_cont;
>  
> +	msp->pinctrl_p = pinctrl_get(msp->dev);
> +	if (IS_ERR(msp->pinctrl_p))
> +		dev_err(&pdev->dev, "could not get MSP pinctrl\n");
> +	else {
> +		msp->pinctrl_def = pinctrl_lookup_state(msp->pinctrl_p,
> +						PINCTRL_STATE_DEFAULT);
> +		if (IS_ERR(msp->pinctrl_def)) {
> +			dev_err(&pdev->dev,
> +				"could not get MSP defstate (%li)\n",
> +				PTR_ERR(msp->pinctrl_def));
> +		}
> +		msp->pinctrl_sleep = pinctrl_lookup_state(msp->pinctrl_p,
> +						PINCTRL_STATE_SLEEP);
> +		if (IS_ERR(msp->pinctrl_sleep))
> +			dev_err(&pdev->dev,
> +				"could not get MSP idlestate (%li)\n",
> +				PTR_ERR(msp->pinctrl_def));
> +	}
> +
>  	return 0;
>  
>  err_i2s_cont:
> diff --git a/sound/soc/ux500/ux500_msp_i2s.h b/sound/soc/ux500/ux500_msp_i2s.h
> index 2d9136d..1311c0d 100644
> --- a/sound/soc/ux500/ux500_msp_i2s.h
> +++ b/sound/soc/ux500/ux500_msp_i2s.h
> @@ -524,14 +524,18 @@ struct ux500_msp {
>  	struct dma_chan *rx_pipeid;
>  	enum msp_state msp_state;
>  	int (*transfer) (struct ux500_msp *msp, struct i2s_message *message);
> -	int (*plat_init) (void);
> -	int (*plat_exit) (void);
>  	struct timer_list notify_timer;
>  	int def_elem_len;
>  	unsigned int dir_busy;
>  	int loopback_enable;
>  	u32 backup_regs[MAX_MSP_BACKUP_REGS];
>  	unsigned int f_bitclk;
> +	/* Pin modes */
> +	struct pinctrl *pinctrl_p;
> +	struct pinctrl_state *pinctrl_def;
> +	struct pinctrl_state *pinctrl_sleep;
> +	/* Reference Count */
> +	int pinctrl_rxtx_ref;
>  };
>  
>  struct ux500_msp_dma_params {
> -- 
> 1.7.9.5
> 

-- 
Lee Jones
Linaro ST-Ericsson Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

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

* Re: [PATCH 05/17] ASoC: Ux500: Minor coding layout changes
  2012-09-10 16:44   ` Lee Jones
@ 2012-09-11  0:27     ` Mark Brown
  2012-09-11  9:03     ` Ola Lilja
  1 sibling, 0 replies; 36+ messages in thread
From: Mark Brown @ 2012-09-11  0:27 UTC (permalink / raw)
  To: Lee Jones
  Cc: linux-arm-kernel, linux-kernel, STEricsson_nomadik_linux,
	linus.walleij, arnd, ola.o.lilja, roger.xr.nilsson, alsa-devel

On Mon, Sep 10, 2012 at 05:44:49PM +0100, Lee Jones wrote:
> Ola poke.

Please don't send contentless top-posted pings - if you think things
have been forgotten you should generally resend them, there's a good
chance that if things have been lost people don't have the original any
more.  Replying means the patch is quoted so is painful to apply if
anyone wants to test (or otherwise apply the patch) and top posting is
generally frowned upon.

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

* Re: [PATCH 05/17] ASoC: Ux500: Minor coding layout changes
  2012-09-10 16:44   ` Lee Jones
  2012-09-11  0:27     ` Mark Brown
@ 2012-09-11  9:03     ` Ola Lilja
  1 sibling, 0 replies; 36+ messages in thread
From: Ola Lilja @ 2012-09-11  9:03 UTC (permalink / raw)
  To: Lee Jones
  Cc: linux-arm-kernel, linux-kernel, STEricsson_nomadik_linux,
	Linus WALLEIJ, arnd, broonie, Roger NILSSON1, alsa-devel

On 09/10/2012 06:44 PM, Lee Jones wrote:

> Ola poke.
> 
> On Fri, Aug 24, 2012 at 03:01:41PM +0100, Lee Jones wrote:
>> Includes removal of duplicate debug print affirming entry into
>> the probe function, an unnecessary line break of a coding line
>> <80 chars and a white space change (unintentional tab).
>> 
>> Signed-off-by: Lee Jones <lee.jones@linaro.org>
>> ---
>>  sound/soc/ux500/mop500.c |    7 ++-----
>>  1 file changed, 2 insertions(+), 5 deletions(-)
>> 
>> diff --git a/sound/soc/ux500/mop500.c b/sound/soc/ux500/mop500.c
>> index 6840df7..356611d 100644
>> --- a/sound/soc/ux500/mop500.c
>> +++ b/sound/soc/ux500/mop500.c
>> @@ -88,8 +88,6 @@ static int __devinit mop500_probe(struct platform_device *pdev)
>>  	struct device_node *np = pdev->dev.of_node;
>>  	int ret;
>>  
>> -	pr_debug("%s: Enter.\n", __func__);
>> -
>>  	dev_dbg(&pdev->dev, "%s: Enter.\n", __func__);
>>  
>>  	mop500_card.dev = &pdev->dev;
>> @@ -117,8 +115,7 @@ static int __devinit mop500_probe(struct platform_device *pdev)
>>  	ret = snd_soc_register_card(&mop500_card);
>>  	if (ret)
>>  		dev_err(&pdev->dev,
>> -			"Error: snd_soc_register_card failed (%d)!\n",
>> -			ret);
>> +			"Error: snd_soc_register_card failed (%d)!\n", ret);
>>  
>>  	return ret;
>>  }
>> @@ -131,7 +128,7 @@ static int __devexit mop500_remove(struct platform_device *pdev)
>>  
>>  	snd_soc_unregister_card(mop500_card);
>>  	mop500_ab8500_remove(mop500_card);
>> -	
>> +
>>  	return 0;
>>  }
>>  
>> -- 
>> 1.7.9.5
>> 
> 


Nothing to say about this one. Looks OK.


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

* Re: [PATCH 06/17] Documentation: Define the MOP500 Audio Machine Driver Device Tree bindings
  2012-09-10 16:44   ` Lee Jones
@ 2012-09-11  9:06     ` Ola Lilja
  2012-09-11  9:08       ` Mark Brown
  2012-09-14 10:02       ` Lee Jones
  0 siblings, 2 replies; 36+ messages in thread
From: Ola Lilja @ 2012-09-11  9:06 UTC (permalink / raw)
  To: Lee Jones
  Cc: linux-arm-kernel, linux-kernel, STEricsson_nomadik_linux,
	Linus WALLEIJ, arnd, broonie, Roger NILSSON1, alsa-devel

On 09/10/2012 06:44 PM, Lee Jones wrote:

> Ola poke.
> 
> On Fri, Aug 24, 2012 at 03:01:42PM +0100, Lee Jones wrote:
>> Here we add the required documentation for the new Device Tree
>> bindings pertaining to the MOP500 Audio Machine driver.
>> 
>> CC: alsa-devel@alsa-project.org
>> Signed-off-by: Lee Jones <lee.jones@linaro.org>
>> ---
>>  .../devicetree/bindings/sound/ux500-mop500.txt     |   39 ++++++++++++++++++++
>>  1 file changed, 39 insertions(+)
>>  create mode 100644 Documentation/devicetree/bindings/sound/ux500-mop500.txt
>> 
>> diff --git a/Documentation/devicetree/bindings/sound/ux500-mop500.txt b/Documentation/devicetree/bindings/sound/ux500-mop500.txt
>> new file mode 100644
>> index 0000000..48e071c
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/sound/ux500-mop500.txt
>> @@ -0,0 +1,39 @@
>> +* MOP500 Audio Machine Driver
>> +
>> +This node is responsible for linking together all ux500 Audio Driver components.
>> +
>> +Required properties:
>> + - compatible              : "stericsson,snd-soc-mop500"
>> +
>> +Non-standard properties:
>> + - stericsson,cpu-dai      : Phandle to the CPU-side DAI
>> + - stericsson,audio-codec  : Phandle to the Audio CODEC
>> + - stericsson,card-name    : Over-ride default card name
>> +
>> +Example:
>> +
>> +	sound {
>> +		compatible = "stericsson,snd-soc-mop500";
>> +
>> +		stericsson,cpu-dai = <&msp1 &msp3>;
>> +		stericsson,audio-codec = <&codec>;
>> +	};
>> +
>> +	msp1: msp@80124000 {
>> +		compatible = "stericsson,ux500-msp-i2s";
>> +		reg = <0x80124000 0x1000>;
>> +		interrupts = <0 62 0x4>;
>> +		v-ape-supply = <&db8500_vape_reg>;


I'm no DT-expert, but why are you adding MSP-stuff in the machine-driver? They
are also added in the next patch.

>> +	};
>> +
>> +	msp3: msp@80125000 {
>> +		compatible = "stericsson,ux500-msp-i2s";
>> +		reg = <0x80125000 0x1000>;
>> +		interrupts = <0 62 0x4>;
>> +		v-ape-supply = <&db8500_vape_reg>;
>> +	};
>> +
>> +	codec: ab8500-codec {
>> +		compatible = "stericsson,ab8500-codec";
>> +		stericsson,earpeice-cmv = <950>; /* Units in mV. */


Only four voltages are allowed here. Maybe enumerate them in the comment?

>> +	};
>> -- 
>> 1.7.9.5
>> 
> 



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

* Re: [PATCH 07/17] Documentation: Define the MSP Driver Device Tree bindings
  2012-09-10 16:43   ` Lee Jones
@ 2012-09-11  9:08     ` Ola Lilja
  2012-09-14  9:57       ` Lee Jones
  0 siblings, 1 reply; 36+ messages in thread
From: Ola Lilja @ 2012-09-11  9:08 UTC (permalink / raw)
  To: Lee Jones
  Cc: linux-arm-kernel, linux-kernel, STEricsson_nomadik_linux,
	Linus WALLEIJ, arnd, broonie, Roger NILSSON1, alsa-devel

On 09/10/2012 06:43 PM, Lee Jones wrote:

> Ola poke.
> 
> On Fri, Aug 24, 2012 at 03:01:43PM +0100, Lee Jones wrote:
>> Here we add the required documentation for the new Device Tree
>> bindings pertaining to the MSP CPU-side DAI Driver.
>> 
>> CC: alsa-devel@alsa-project.org
>> Signed-off-by: Lee Jones <lee.jones@linaro.org>
>> ---
>>  .../devicetree/bindings/sound/ux500-msp.txt        |   43 ++++++++++++++++++++
>>  1 file changed, 43 insertions(+)
>>  create mode 100644 Documentation/devicetree/bindings/sound/ux500-msp.txt
>> 
>> diff --git a/Documentation/devicetree/bindings/sound/ux500-msp.txt b/Documentation/devicetree/bindings/sound/ux500-msp.txt
>> new file mode 100644
>> index 0000000..99acd9c
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/sound/ux500-msp.txt
>> @@ -0,0 +1,43 @@
>> +* ux500 MSP (CPU-side Digital Audio Interface)
>> +
>> +Required properties:
>> + - compatible       :"stericsson,ux500-msp-i2s"
>> + - reg              : Physical base address and length of the device's registers.
>> +
>> +Optional properties:
>> + - interrupts       : The interrupt output from the device.
>> + - interrupt-parent : The parent interrupt controller.
>> + - <name>-supply    : Phandle to the regulator <name> supply
>> +
>> +Example:
>> +
>> +	sound {
>> +		compatible = "stericsson,snd-soc-mop500";
>> +
>> +		stericsson,platform-pcm-dma = <&pcm>;
>> +		stericsson,cpu-dai = <&msp1 &msp3>;
>> +		stericsson,audio-codec = <&codec>;
>> +	};
>> +
>> +	pcm: ux500-pcm {
>> +		compatible = "stericsson,ux500-pcm";
>> +	};
>> +
>> +	msp1: msp@80124000 {
>> +		compatible = "stericsson,ux500-msp-i2s";
>> +		reg = <0x80124000 0x1000>;
>> +		interrupts = <0 62 0x4>;
>> +		v-ape-supply = <&db8500_vape_reg>;
>> +	};
>> +
>> +	msp3: msp@80125000 {
>> +		compatible = "stericsson,ux500-msp-i2s";
>> +		reg = <0x80125000 0x1000>;
>> +		interrupts = <0 62 0x4>;
>> +		v-ape-supply = <&db8500_vape_reg>;
>> +	};
>> +
>> +	codec: ab8500-codec {
>> +		compatible = "stericsson,ab8500-codec";
>> +		stericsson,earpeice-cmv = <950>; /* Units in mV. */


This parameter has nothing to do with the ASoC platform-driver. Some way or the
other the earpiece-cmv should belong to the codec-driver. Also, this parameter
was set in the previous patch as well?!

>> +	};
>> -- 
>> 1.7.9.5
>> 
> 



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

* Re: [PATCH 06/17] Documentation: Define the MOP500 Audio Machine Driver Device Tree bindings
  2012-09-11  9:06     ` Ola Lilja
@ 2012-09-11  9:08       ` Mark Brown
  2012-09-14 10:02       ` Lee Jones
  1 sibling, 0 replies; 36+ messages in thread
From: Mark Brown @ 2012-09-11  9:08 UTC (permalink / raw)
  To: Ola Lilja
  Cc: Lee Jones, linux-arm-kernel, linux-kernel,
	STEricsson_nomadik_linux, Linus WALLEIJ, arnd, Roger NILSSON1,
	alsa-devel

On Tue, Sep 11, 2012 at 11:06:00AM +0200, Ola Lilja wrote:
> On 09/10/2012 06:44 PM, Lee Jones wrote:

> >> +	msp1: msp@80124000 {
> >> +		compatible = "stericsson,ux500-msp-i2s";
> >> +		reg = <0x80124000 0x1000>;
> >> +		interrupts = <0 62 0x4>;
> >> +		v-ape-supply = <&db8500_vape_reg>;

> I'm no DT-expert, but why are you adding MSP-stuff in the machine-driver? They
> are also added in the next patch.

This is context for the example - the example is just informative and
tends to include other things so they can be referenced by the main bit
of the example, it's the documentation at the top that's the bindings
themselves.

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

* Re: [PATCH 01/17] ASoC: Ux500: Move MSP pinctrl setup into the MSP driver
  2012-09-10 16:46   ` Lee Jones
@ 2012-09-11  9:28     ` Ola Lilja
  0 siblings, 0 replies; 36+ messages in thread
From: Ola Lilja @ 2012-09-11  9:28 UTC (permalink / raw)
  To: Lee Jones
  Cc: linux-arm-kernel, linux-kernel, STEricsson_nomadik_linux,
	Linus WALLEIJ, arnd, broonie, Roger NILSSON1, alsa-devel

On 09/10/2012 06:46 PM, Lee Jones wrote:

> Ola poke.
> 
> On Fri, Aug 24, 2012 at 03:01:37PM +0100, Lee Jones wrote:
>> In the initial submission of the MSP driver msp1 and msp3's associated
>> pinctrl mechanism was passed back to platform code using a plat_init()
>> call-back routine, but it has no place in platform code. The MSP driver
>> should set this up for the appropriate ports. Instead we use a use_pinctrl
>> identifier which is passed from platform_data/Device Tree which indicates
>> which ports should use pinctrl.
>> 
>> CC: alsa-devel@alsa-project.org
>> Signed-off-by: Lee Jones <lee.jones@linaro.org>
>> ---
>>  arch/arm/mach-ux500/board-mop500-msp.c |   75 +-------------------------------
>>  arch/arm/mach-ux500/include/mach/msp.h |    2 -
>>  sound/soc/ux500/ux500_msp_i2s.c        |   67 +++++++++++++++++++++-------
>>  sound/soc/ux500/ux500_msp_i2s.h        |    8 +++-
>>  4 files changed, 58 insertions(+), 94 deletions(-)
>> 
>> diff --git a/arch/arm/mach-ux500/board-mop500-msp.c b/arch/arm/mach-ux500/board-mop500-msp.c
>> index df15646..fc78d5d 100644
>> --- a/arch/arm/mach-ux500/board-mop500-msp.c
>> +++ b/arch/arm/mach-ux500/board-mop500-msp.c
>> @@ -23,53 +23,6 @@
>>  #include "devices-db8500.h"
>>  #include "pins-db8500.h"
>>  
>> -/* MSP1/3 Tx/Rx usage protection */
>> -static DEFINE_SPINLOCK(msp_rxtx_lock);
>> -
>> -/* Reference Count */
>> -static int msp_rxtx_ref;
>> -
>> -/* Pin modes */
>> -struct pinctrl *msp1_p;
>> -struct pinctrl_state *msp1_def;
>> -struct pinctrl_state *msp1_sleep;
>> -
>> -int msp13_i2s_init(void)
>> -{
>> -	int retval = 0;
>> -	unsigned long flags;
>> -
>> -	spin_lock_irqsave(&msp_rxtx_lock, flags);
>> -	if (msp_rxtx_ref == 0 && !(IS_ERR(msp1_p) || IS_ERR(msp1_def))) {
>> -		retval = pinctrl_select_state(msp1_p, msp1_def);
>> -		if (retval)
>> -			pr_err("could not set MSP1 defstate\n");
>> -	}
>> -	if (!retval)
>> -		msp_rxtx_ref++;
>> -	spin_unlock_irqrestore(&msp_rxtx_lock, flags);
>> -
>> -	return retval;
>> -}
>> -
>> -int msp13_i2s_exit(void)
>> -{
>> -	int retval = 0;
>> -	unsigned long flags;
>> -
>> -	spin_lock_irqsave(&msp_rxtx_lock, flags);
>> -	WARN_ON(!msp_rxtx_ref);
>> -	msp_rxtx_ref--;
>> -	if (msp_rxtx_ref == 0 && !(IS_ERR(msp1_p) || IS_ERR(msp1_sleep))) {
>> -		retval = pinctrl_select_state(msp1_p, msp1_sleep);
>> -		if (retval)
>> -			pr_err("could not set MSP1 sleepstate\n");
>> -	}
>> -	spin_unlock_irqrestore(&msp_rxtx_lock, flags);
>> -
>> -	return retval;
>> -}
>> -
>>  static struct stedma40_chan_cfg msp0_dma_rx = {
>>  	.high_priority = true,
>>  	.dir = STEDMA40_PERIPH_TO_MEM,
>> @@ -132,8 +85,6 @@ static struct msp_i2s_platform_data msp1_platform_data = {
>>  	.id = MSP_I2S_1,
>>  	.msp_i2s_dma_rx = NULL,
>>  	.msp_i2s_dma_tx = &msp1_dma_tx,
>> -	.msp_i2s_init = msp13_i2s_init,
>> -	.msp_i2s_exit = msp13_i2s_exit,
>>  };
>>  
>>  static struct stedma40_chan_cfg msp2_dma_rx = {
>> @@ -219,47 +170,23 @@ static struct msp_i2s_platform_data msp3_platform_data = {
>>  	.id		= MSP_I2S_3,
>>  	.msp_i2s_dma_rx	= &msp1_dma_rx,
>>  	.msp_i2s_dma_tx	= NULL,
>> -	.msp_i2s_init = msp13_i2s_init,
>> -	.msp_i2s_exit = msp13_i2s_exit,
>>  };
>>  
>>  int mop500_msp_init(struct device *parent)
>>  {
>> -	struct platform_device *msp1;
>> -
>>  	pr_info("%s: Register platform-device 'snd-soc-mop500'.\n", __func__);
>>  	platform_device_register(&snd_soc_mop500);
>>  
>>  	pr_info("Initialize MSP I2S-devices.\n");
>>  	db8500_add_msp_i2s(parent, 0, U8500_MSP0_BASE, IRQ_DB8500_MSP0,
>>  			   &msp0_platform_data);
>> -	msp1 = db8500_add_msp_i2s(parent, 1, U8500_MSP1_BASE, IRQ_DB8500_MSP1,
>> +	db8500_add_msp_i2s(parent, 1, U8500_MSP1_BASE, IRQ_DB8500_MSP1,
>>  			   &msp1_platform_data);
>>  	db8500_add_msp_i2s(parent, 2, U8500_MSP2_BASE, IRQ_DB8500_MSP2,
>>  			   &msp2_platform_data);
>>  	db8500_add_msp_i2s(parent, 3, U8500_MSP3_BASE, IRQ_DB8500_MSP1,
>>  			   &msp3_platform_data);
>>  
>> -	/* Get the pinctrl handle for MSP1 */
>> -	if (msp1) {
>> -		msp1_p = pinctrl_get(&msp1->dev);
>> -		if (IS_ERR(msp1_p))
>> -			dev_err(&msp1->dev, "could not get MSP1 pinctrl\n");
>> -		else {
>> -			msp1_def = pinctrl_lookup_state(msp1_p,
>> -							PINCTRL_STATE_DEFAULT);
>> -			if (IS_ERR(msp1_def)) {
>> -				dev_err(&msp1->dev,
>> -					"could not get MSP1 defstate\n");
>> -			}
>> -			msp1_sleep = pinctrl_lookup_state(msp1_p,
>> -							  PINCTRL_STATE_SLEEP);
>> -			if (IS_ERR(msp1_sleep))
>> -				dev_err(&msp1->dev,
>> -					"could not get MSP1 idlestate\n");
>> -		}
>> -	}
>> -
>>  	pr_info("%s: Register platform-device 'ux500-pcm'\n", __func__);
>>  	platform_device_register(&ux500_pcm);
>>  
>> diff --git a/arch/arm/mach-ux500/include/mach/msp.h b/arch/arm/mach-ux500/include/mach/msp.h
>> index 798be19..3cc7142 100644
>> --- a/arch/arm/mach-ux500/include/mach/msp.h
>> +++ b/arch/arm/mach-ux500/include/mach/msp.h
>> @@ -22,8 +22,6 @@ struct msp_i2s_platform_data {
>>  	enum msp_i2s_id id;
>>  	struct stedma40_chan_cfg *msp_i2s_dma_rx;
>>  	struct stedma40_chan_cfg *msp_i2s_dma_tx;
>> -	int (*msp_i2s_init) (void);
>> -	int (*msp_i2s_exit) (void);
>>  };
>>  
>>  #endif
>> diff --git a/sound/soc/ux500/ux500_msp_i2s.c b/sound/soc/ux500/ux500_msp_i2s.c
>> index 36be11e..08813c5 100644
>> --- a/sound/soc/ux500/ux500_msp_i2s.c
>> +++ b/sound/soc/ux500/ux500_msp_i2s.c
>> @@ -15,6 +15,7 @@
>>  
>>  #include <linux/module.h>
>>  #include <linux/platform_device.h>
>> +#include <linux/pinctrl/consumer.h>
>>  #include <linux/delay.h>
>>  #include <linux/slab.h>
>>  
>> @@ -25,6 +26,9 @@
>>  
>>  #include "ux500_msp_i2s.h"
>>  
>> +/* MSP1/3 Tx/Rx usage protection */
>> +static DEFINE_SPINLOCK(msp_rxtx_lock);
>> +
>>   /* Protocol desciptors */
>>  static const struct msp_protdesc prot_descs[] = {
>>  	{ /* I2S */
>> @@ -352,17 +356,23 @@ static int configure_multichannel(struct ux500_msp *msp,
>>  
>>  static int enable_msp(struct ux500_msp *msp, struct ux500_msp_config *config)
>>  {
>> -	int status = 0;
>> +	int status = 0, retval = 0;
>>  	u32 reg_val_DMACR, reg_val_GCR;
>> +	unsigned long flags;
>>  
>>  	/* Check msp state whether in RUN or CONFIGURED Mode */
>> -	if ((msp->msp_state == MSP_STATE_IDLE) && (msp->plat_init)) {
>> -		status = msp->plat_init();
>> -		if (status) {
>> -			dev_err(msp->dev, "%s: ERROR: Failed to init MSP (%d)!\n",
>> -				__func__, status);
>> -			return status;
>> +	if (msp->msp_state == MSP_STATE_IDLE) {
>> +		spin_lock_irqsave(&msp_rxtx_lock, flags);
>> +		if (msp->pinctrl_rxtx_ref == 0 &&
>> +			!(IS_ERR(msp->pinctrl_p) || IS_ERR(msp->pinctrl_def))) {
>> +			retval = pinctrl_select_state(msp->pinctrl_p,
>> +						msp->pinctrl_def);
>> +			if (retval)
>> +				pr_err("could not set MSP defstate\n");
>>  		}
>> +		if (!retval)
>> +			msp->pinctrl_rxtx_ref++;
>> +		spin_unlock_irqrestore(&msp_rxtx_lock, flags);
>>  	}
>>  
>>  	/* Configure msp with protocol dependent settings */
>> @@ -620,7 +630,8 @@ int ux500_msp_i2s_trigger(struct ux500_msp *msp, int cmd, int direction)
>>  
>>  int ux500_msp_i2s_close(struct ux500_msp *msp, unsigned int dir)
>>  {
>> -	int status = 0;
>> +	int status = 0, retval = 0;
>> +	unsigned long flags;
>>  
>>  	dev_dbg(msp->dev, "%s: Enter (dir = 0x%01x).\n", __func__, dir);
>>  
>> @@ -631,12 +642,19 @@ int ux500_msp_i2s_close(struct ux500_msp *msp, unsigned int dir)
>>  		writel((readl(msp->registers + MSP_GCR) &
>>  			       (~(FRAME_GEN_ENABLE | SRG_ENABLE))),
>>  			      msp->registers + MSP_GCR);
>> -		if (msp->plat_exit)
>> -			status = msp->plat_exit();
>> -			if (status)
>> -				dev_warn(msp->dev,
>> -					"%s: WARN: ux500_msp_i2s_exit failed (%d)!\n",
>> -					__func__, status);
>> +
>> +		spin_lock_irqsave(&msp_rxtx_lock, flags);
>> +		WARN_ON(!msp->pinctrl_rxtx_ref);
>> +		msp->pinctrl_rxtx_ref--;
>> +		if (msp->pinctrl_rxtx_ref == 0 &&
>> +			!(IS_ERR(msp->pinctrl_p) || IS_ERR(msp->pinctrl_sleep))) {
>> +			retval = pinctrl_select_state(msp->pinctrl_p,
>> +						msp->pinctrl_sleep);
>> +			if (retval)
>> +				pr_err("could not set MSP sleepstate\n");
>> +		}
>> +		spin_unlock_irqrestore(&msp_rxtx_lock, flags);
>> +
>>  		writel(0, msp->registers + MSP_GCR);
>>  		writel(0, msp->registers + MSP_TCF);
>>  		writel(0, msp->registers + MSP_RCF);
>> @@ -678,8 +696,6 @@ int ux500_msp_i2s_init_msp(struct platform_device *pdev,
>>  
>>  	msp->id = platform_data->id;
>>  	msp->dev = &pdev->dev;
>> -	msp->plat_init = platform_data->msp_i2s_init;
>> -	msp->plat_exit = platform_data->msp_i2s_exit;
>>  	msp->dma_cfg_rx = platform_data->msp_i2s_dma_rx;
>>  	msp->dma_cfg_tx = platform_data->msp_i2s_dma_tx;
>>  
>> @@ -717,6 +733,25 @@ int ux500_msp_i2s_init_msp(struct platform_device *pdev,
>>  	dev_dbg(&pdev->dev, "I2S device-name: '%s'\n", i2s_cont->name);
>>  	msp->i2s_cont = i2s_cont;
>>  
>> +	msp->pinctrl_p = pinctrl_get(msp->dev);
>> +	if (IS_ERR(msp->pinctrl_p))
>> +		dev_err(&pdev->dev, "could not get MSP pinctrl\n");
>> +	else {
>> +		msp->pinctrl_def = pinctrl_lookup_state(msp->pinctrl_p,
>> +						PINCTRL_STATE_DEFAULT);
>> +		if (IS_ERR(msp->pinctrl_def)) {
>> +			dev_err(&pdev->dev,
>> +				"could not get MSP defstate (%li)\n",
>> +				PTR_ERR(msp->pinctrl_def));
>> +		}
>> +		msp->pinctrl_sleep = pinctrl_lookup_state(msp->pinctrl_p,
>> +						PINCTRL_STATE_SLEEP);
>> +		if (IS_ERR(msp->pinctrl_sleep))
>> +			dev_err(&pdev->dev,
>> +				"could not get MSP idlestate (%li)\n",
>> +				PTR_ERR(msp->pinctrl_def));
>> +	}
>> +
>>  	return 0;
>>  
>>  err_i2s_cont:
>> diff --git a/sound/soc/ux500/ux500_msp_i2s.h b/sound/soc/ux500/ux500_msp_i2s.h
>> index 2d9136d..1311c0d 100644
>> --- a/sound/soc/ux500/ux500_msp_i2s.h
>> +++ b/sound/soc/ux500/ux500_msp_i2s.h
>> @@ -524,14 +524,18 @@ struct ux500_msp {
>>  	struct dma_chan *rx_pipeid;
>>  	enum msp_state msp_state;
>>  	int (*transfer) (struct ux500_msp *msp, struct i2s_message *message);
>> -	int (*plat_init) (void);
>> -	int (*plat_exit) (void);
>>  	struct timer_list notify_timer;
>>  	int def_elem_len;
>>  	unsigned int dir_busy;
>>  	int loopback_enable;
>>  	u32 backup_regs[MAX_MSP_BACKUP_REGS];
>>  	unsigned int f_bitclk;
>> +	/* Pin modes */
>> +	struct pinctrl *pinctrl_p;
>> +	struct pinctrl_state *pinctrl_def;
>> +	struct pinctrl_state *pinctrl_sleep;
>> +	/* Reference Count */
>> +	int pinctrl_rxtx_ref;
>>  };
>>  
>>  struct ux500_msp_dma_params {
>> -- 
>> 1.7.9.5
>> 
> 


Looks OK from my perspective!

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

* Re: [PATCH 07/17] Documentation: Define the MSP Driver Device Tree bindings
  2012-09-11  9:08     ` Ola Lilja
@ 2012-09-14  9:57       ` Lee Jones
  0 siblings, 0 replies; 36+ messages in thread
From: Lee Jones @ 2012-09-14  9:57 UTC (permalink / raw)
  To: Ola Lilja
  Cc: linux-arm-kernel, linux-kernel, STEricsson_nomadik_linux,
	Linus WALLEIJ, arnd, broonie, Roger NILSSON1, alsa-devel

On Tue, Sep 11, 2012 at 11:08:22AM +0200, Ola Lilja wrote:
> On 09/10/2012 06:43 PM, Lee Jones wrote:
> 
> > Ola poke.
> > 
> > On Fri, Aug 24, 2012 at 03:01:43PM +0100, Lee Jones wrote:
> >> Here we add the required documentation for the new Device Tree
> >> bindings pertaining to the MSP CPU-side DAI Driver.
> >> 
> >> CC: alsa-devel@alsa-project.org
> >> Signed-off-by: Lee Jones <lee.jones@linaro.org>
> >> ---
> >>  .../devicetree/bindings/sound/ux500-msp.txt        |   43 ++++++++++++++++++++
> >>  1 file changed, 43 insertions(+)
> >>  create mode 100644 Documentation/devicetree/bindings/sound/ux500-msp.txt
> >> 
> >> diff --git a/Documentation/devicetree/bindings/sound/ux500-msp.txt b/Documentation/devicetree/bindings/sound/ux500-msp.txt
> >> new file mode 100644
> >> index 0000000..99acd9c
> >> --- /dev/null
> >> +++ b/Documentation/devicetree/bindings/sound/ux500-msp.txt
> >> @@ -0,0 +1,43 @@
> >> +* ux500 MSP (CPU-side Digital Audio Interface)
> >> +
> >> +Required properties:
> >> + - compatible       :"stericsson,ux500-msp-i2s"
> >> + - reg              : Physical base address and length of the device's registers.
> >> +
> >> +Optional properties:
> >> + - interrupts       : The interrupt output from the device.
> >> + - interrupt-parent : The parent interrupt controller.
> >> + - <name>-supply    : Phandle to the regulator <name> supply
> >> +
> >> +Example:
> >> +
> >> +	sound {
> >> +		compatible = "stericsson,snd-soc-mop500";
> >> +
> >> +		stericsson,platform-pcm-dma = <&pcm>;
> >> +		stericsson,cpu-dai = <&msp1 &msp3>;
> >> +		stericsson,audio-codec = <&codec>;
> >> +	};
> >> +
> >> +	pcm: ux500-pcm {
> >> +		compatible = "stericsson,ux500-pcm";
> >> +	};
> >> +
> >> +	msp1: msp@80124000 {
> >> +		compatible = "stericsson,ux500-msp-i2s";
> >> +		reg = <0x80124000 0x1000>;
> >> +		interrupts = <0 62 0x4>;
> >> +		v-ape-supply = <&db8500_vape_reg>;
> >> +	};
> >> +
> >> +	msp3: msp@80125000 {
> >> +		compatible = "stericsson,ux500-msp-i2s";
> >> +		reg = <0x80125000 0x1000>;
> >> +		interrupts = <0 62 0x4>;
> >> +		v-ape-supply = <&db8500_vape_reg>;
> >> +	};
> >> +
> >> +	codec: ab8500-codec {
> >> +		compatible = "stericsson,ab8500-codec";
> >> +		stericsson,earpeice-cmv = <950>; /* Units in mV. */
> 
> 
> This parameter has nothing to do with the ASoC platform-driver. Some way or the
> other the earpiece-cmv should belong to the codec-driver. Also, this parameter
> was set in the previous patch as well?!

You know that this is just a documentation patch right?

It just shows how the pieces fit together. No settings will actually
be read from here, it's just a .txt file used for reference.

Kind regards,
Lee

-- 
Lee Jones
Linaro ST-Ericsson Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

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

* Re: [PATCH 06/17] Documentation: Define the MOP500 Audio Machine Driver Device Tree bindings
  2012-09-11  9:06     ` Ola Lilja
  2012-09-11  9:08       ` Mark Brown
@ 2012-09-14 10:02       ` Lee Jones
  1 sibling, 0 replies; 36+ messages in thread
From: Lee Jones @ 2012-09-14 10:02 UTC (permalink / raw)
  To: Ola Lilja
  Cc: linux-arm-kernel, linux-kernel, STEricsson_nomadik_linux,
	Linus WALLEIJ, arnd, broonie, Roger NILSSON1, alsa-devel

On Tue, Sep 11, 2012 at 11:06:00AM +0200, Ola Lilja wrote:
> On 09/10/2012 06:44 PM, Lee Jones wrote:
> 
> > Ola poke.
> > 
> > On Fri, Aug 24, 2012 at 03:01:42PM +0100, Lee Jones wrote:
> >> Here we add the required documentation for the new Device Tree
> >> bindings pertaining to the MOP500 Audio Machine driver.
> >> 
> >> CC: alsa-devel@alsa-project.org
> >> Signed-off-by: Lee Jones <lee.jones@linaro.org>
> >> ---
> >>  .../devicetree/bindings/sound/ux500-mop500.txt     |   39 ++++++++++++++++++++
> >>  1 file changed, 39 insertions(+)
> >>  create mode 100644 Documentation/devicetree/bindings/sound/ux500-mop500.txt
> >> 
> >> diff --git a/Documentation/devicetree/bindings/sound/ux500-mop500.txt b/Documentation/devicetree/bindings/sound/ux500-mop500.txt
> >> new file mode 100644
> >> index 0000000..48e071c
> >> --- /dev/null
> >> +++ b/Documentation/devicetree/bindings/sound/ux500-mop500.txt
> >> @@ -0,0 +1,39 @@
> >> +* MOP500 Audio Machine Driver
> >> +
> >> +This node is responsible for linking together all ux500 Audio Driver components.
> >> +
> >> +Required properties:
> >> + - compatible              : "stericsson,snd-soc-mop500"
> >> +
> >> +Non-standard properties:
> >> + - stericsson,cpu-dai      : Phandle to the CPU-side DAI
> >> + - stericsson,audio-codec  : Phandle to the Audio CODEC
> >> + - stericsson,card-name    : Over-ride default card name
> >> +
> >> +Example:
> >> +
> >> +	sound {
> >> +		compatible = "stericsson,snd-soc-mop500";
> >> +
> >> +		stericsson,cpu-dai = <&msp1 &msp3>;
> >> +		stericsson,audio-codec = <&codec>;
> >> +	};
> >> +
> >> +	msp1: msp@80124000 {
> >> +		compatible = "stericsson,ux500-msp-i2s";
> >> +		reg = <0x80124000 0x1000>;
> >> +		interrupts = <0 62 0x4>;
> >> +		v-ape-supply = <&db8500_vape_reg>;
> 
> 
> I'm no DT-expert, but why are you adding MSP-stuff in the machine-driver? They
> are also added in the next patch.

This is a documentation file. Duplication is not important, as it's only there
for reference.

> >> +	};
> >> +
> >> +	msp3: msp@80125000 {
> >> +		compatible = "stericsson,ux500-msp-i2s";
> >> +		reg = <0x80125000 0x1000>;
> >> +		interrupts = <0 62 0x4>;
> >> +		v-ape-supply = <&db8500_vape_reg>;
> >> +	};
> >> +
> >> +	codec: ab8500-codec {
> >> +		compatible = "stericsson,ab8500-codec";
> >> +		stericsson,earpeice-cmv = <950>; /* Units in mV. */
> 
> 
> Only four voltages are allowed here. Maybe enumerate them in the comment?

This isn't the ab8500-codec documentation. For valid earpiece values please
see the documentation in patch "Documentation: Add the AB8500 CODEC device
to the MFD AB8500 doc"

Apart from these comments does the patch looks okay?

-- 
Lee Jones
Linaro ST-Ericsson Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

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

end of thread, other threads:[~2012-09-14 10:03 UTC | newest]

Thread overview: 36+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-08-24 14:01 [PATCH 00/17] MOP500 Audio fix-ups and DT enablement Lee Jones
2012-08-24 14:01 ` [PATCH 01/17] ASoC: Ux500: Move MSP pinctrl setup into the MSP driver Lee Jones
2012-08-30 23:46   ` Linus Walleij
2012-09-10 16:46   ` Lee Jones
2012-09-11  9:28     ` Ola Lilja
2012-08-24 14:01 ` [PATCH 02/17] ASoC: Ux500: Enable MOP500 driver for Device Tree Lee Jones
2012-08-24 14:01 ` [PATCH 03/17] ASoC: Ux500: Enable ux500 MSP " Lee Jones
2012-08-24 14:01 ` [PATCH 04/17] ASoC: codecs: Enable AB8500 CODEC " Lee Jones
2012-08-24 14:01 ` [PATCH 05/17] ASoC: Ux500: Minor coding layout changes Lee Jones
2012-09-10 16:44   ` Lee Jones
2012-09-11  0:27     ` Mark Brown
2012-09-11  9:03     ` Ola Lilja
2012-08-24 14:01 ` [PATCH 06/17] Documentation: Define the MOP500 Audio Machine Driver Device Tree bindings Lee Jones
2012-09-10 16:44   ` Lee Jones
2012-09-11  9:06     ` Ola Lilja
2012-09-11  9:08       ` Mark Brown
2012-09-14 10:02       ` Lee Jones
2012-08-24 14:01 ` [PATCH 07/17] Documentation: Define the MSP " Lee Jones
2012-09-10 16:43   ` Lee Jones
2012-09-11  9:08     ` Ola Lilja
2012-09-14  9:57       ` Lee Jones
2012-08-24 14:01 ` [PATCH 08/17] ARM: ux500: Clean-up MSP platform code Lee Jones
2012-08-24 14:01 ` [PATCH 09/17] ARM: ux500: Add AB8500 CODEC node to DB8500 Device Tree Lee Jones
2012-08-30 23:50   ` Linus Walleij
2012-08-24 14:01 ` [PATCH 10/17] ARM: ux500: Fork MSP platform registration for step-by-step DT enablement Lee Jones
2012-08-24 14:01 ` [PATCH 11/17] ARM: ux500: Pass MSP DMA platform data though AUXDATA Lee Jones
2012-08-24 14:01 ` [PATCH 12/17] ARM: ux500: Stop registering the MOP500 Audio driver from platform code Lee Jones
2012-08-24 14:01 ` [PATCH 13/17] ARM: ux500: Remove platform registration of MSP devices Lee Jones
2012-08-24 14:01 ` [PATCH 14/17] ARM: ux500: Rename MSP board file to something more meaningful Lee Jones
2012-08-24 15:05   ` [alsa-devel] " Hebbar, Gururaja
2012-08-24 15:08     ` Lee Jones
2012-08-24 15:14     ` Lee Jones
2012-08-24 15:16       ` Hebbar, Gururaja
2012-08-24 14:01 ` [PATCH 15/17] ARM: ux500: Add nodes for the MSP into Device Tree Lee Jones
2012-08-24 14:01 ` [PATCH 16/17] ARM: ux500: Add all encompassing sound node to the Snowball " Lee Jones
2012-08-24 14:01 ` [PATCH 17/17] Documentation: Add the AB8500 CODEC device to the MFD AB8500 doc Lee Jones

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).