* [PATCH 01/13] dma: ste_dma40: Expand DT binding to accept 'high-priority channel' flag
2013-11-06 10:16 [PATCH 00/13] ASoC: dma: ARM: ux500: Obtain DMA data from Device Tree Lee Jones
@ 2013-11-06 10:16 ` Lee Jones
2013-11-06 11:40 ` Linus Walleij
2013-11-13 14:16 ` Vinod Koul
2013-11-06 10:16 ` [PATCH 02/13] dma: ste_dma40: Parse flags property for new 'high priority channel' request Lee Jones
` (11 subsequent siblings)
12 siblings, 2 replies; 37+ messages in thread
From: Lee Jones @ 2013-11-06 10:16 UTC (permalink / raw)
To: linux-arm-kernel
This is used for MSP (audio) devices which is about to be fully DT:ed.
Cc: devicetree at vger.kernel.org
Cc: Vinod Koul <vinod.koul@intel.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
Documentation/devicetree/bindings/dma/ste-dma40.txt | 3 +++
1 file changed, 3 insertions(+)
diff --git a/Documentation/devicetree/bindings/dma/ste-dma40.txt b/Documentation/devicetree/bindings/dma/ste-dma40.txt
index a8c21c2..1f5729f 100644
--- a/Documentation/devicetree/bindings/dma/ste-dma40.txt
+++ b/Documentation/devicetree/bindings/dma/ste-dma40.txt
@@ -50,6 +50,9 @@ Each dmas request consists of 4 cells:
0x00000008: Use fixed channel:
Use automatic channel selection when unset
Use DMA request line number when set
+ 0x00000010: Set channel as high priority:
+ Normal priority when unset
+ High priority when set
Example:
--
1.8.1.2
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [PATCH 01/13] dma: ste_dma40: Expand DT binding to accept 'high-priority channel' flag
2013-11-06 10:16 ` [PATCH 01/13] dma: ste_dma40: Expand DT binding to accept 'high-priority channel' flag Lee Jones
@ 2013-11-06 11:40 ` Linus Walleij
2013-11-06 12:11 ` Lee Jones
2013-11-13 14:16 ` Vinod Koul
1 sibling, 1 reply; 37+ messages in thread
From: Linus Walleij @ 2013-11-06 11:40 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, Nov 6, 2013 at 11:16 AM, Lee Jones <lee.jones@linaro.org> wrote:
> --- a/Documentation/devicetree/bindings/dma/ste-dma40.txt
> +++ b/Documentation/devicetree/bindings/dma/ste-dma40.txt
> @@ -50,6 +50,9 @@ Each dmas request consists of 4 cells:
> 0x00000008: Use fixed channel:
> Use automatic channel selection when unset
> Use DMA request line number when set
> + 0x00000010: Set channel as high priority:
> + Normal priority when unset
> + High priority when set
We should probably switch these magic numbers to #defines
but it's another subject so
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Yours,
Linus Walleij
^ permalink raw reply [flat|nested] 37+ messages in thread
* [PATCH 01/13] dma: ste_dma40: Expand DT binding to accept 'high-priority channel' flag
2013-11-06 11:40 ` Linus Walleij
@ 2013-11-06 12:11 ` Lee Jones
0 siblings, 0 replies; 37+ messages in thread
From: Lee Jones @ 2013-11-06 12:11 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, 06 Nov 2013, Linus Walleij wrote:
> On Wed, Nov 6, 2013 at 11:16 AM, Lee Jones <lee.jones@linaro.org> wrote:
>
> > --- a/Documentation/devicetree/bindings/dma/ste-dma40.txt
> > +++ b/Documentation/devicetree/bindings/dma/ste-dma40.txt
> > @@ -50,6 +50,9 @@ Each dmas request consists of 4 cells:
> > 0x00000008: Use fixed channel:
> > Use automatic channel selection when unset
> > Use DMA request line number when set
> > + 0x00000010: Set channel as high priority:
> > + Normal priority when unset
> > + High priority when set
>
> We should probably switch these magic numbers to #defines
> but it's another subject so
> Acked-by: Linus Walleij <linus.walleij@linaro.org>
Happy to do that in a subsequent set.
--
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org ? Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
^ permalink raw reply [flat|nested] 37+ messages in thread
* [PATCH 01/13] dma: ste_dma40: Expand DT binding to accept 'high-priority channel' flag
2013-11-06 10:16 ` [PATCH 01/13] dma: ste_dma40: Expand DT binding to accept 'high-priority channel' flag Lee Jones
2013-11-06 11:40 ` Linus Walleij
@ 2013-11-13 14:16 ` Vinod Koul
1 sibling, 0 replies; 37+ messages in thread
From: Vinod Koul @ 2013-11-13 14:16 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, Nov 06, 2013 at 10:16:13AM +0000, Lee Jones wrote:
> This is used for MSP (audio) devices which is about to be fully DT:ed.
>
> Cc: devicetree at vger.kernel.org
> Cc: Vinod Koul <vinod.koul@intel.com>
> Signed-off-by: Lee Jones <lee.jones@linaro.org>
Acked-by: Vinod Koul <vinod.koul@intel.com>
--
~Vinod
> ---
> Documentation/devicetree/bindings/dma/ste-dma40.txt | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/dma/ste-dma40.txt b/Documentation/devicetree/bindings/dma/ste-dma40.txt
> index a8c21c2..1f5729f 100644
> --- a/Documentation/devicetree/bindings/dma/ste-dma40.txt
> +++ b/Documentation/devicetree/bindings/dma/ste-dma40.txt
> @@ -50,6 +50,9 @@ Each dmas request consists of 4 cells:
> 0x00000008: Use fixed channel:
> Use automatic channel selection when unset
> Use DMA request line number when set
> + 0x00000010: Set channel as high priority:
> + Normal priority when unset
> + High priority when set
>
> Example:
>
> --
> 1.8.1.2
>
--
^ permalink raw reply [flat|nested] 37+ messages in thread
* [PATCH 02/13] dma: ste_dma40: Parse flags property for new 'high priority channel' request
2013-11-06 10:16 [PATCH 00/13] ASoC: dma: ARM: ux500: Obtain DMA data from Device Tree Lee Jones
2013-11-06 10:16 ` [PATCH 01/13] dma: ste_dma40: Expand DT binding to accept 'high-priority channel' flag Lee Jones
@ 2013-11-06 10:16 ` Lee Jones
2013-11-06 11:40 ` Linus Walleij
2013-11-13 14:16 ` Vinod Koul
2013-11-06 10:16 ` [PATCH 03/13] ARM: ux500: Don't use enums for MSP IDs - for easy DT conversion Lee Jones
` (10 subsequent siblings)
12 siblings, 2 replies; 37+ messages in thread
From: Lee Jones @ 2013-11-06 10:16 UTC (permalink / raw)
To: linux-arm-kernel
This is used for MSP (audio) devices which is about to be fully DT:ed.
Cc: Vinod Koul <vinod.koul@intel.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
drivers/dma/ste_dma40.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/dma/ste_dma40.c b/drivers/dma/ste_dma40.c
index b8c031b..00a2de9 100644
--- a/drivers/dma/ste_dma40.c
+++ b/drivers/dma/ste_dma40.c
@@ -2409,6 +2409,7 @@ static void d40_set_prio_realtime(struct d40_chan *d40c)
#define D40_DT_FLAGS_DIR(flags) ((flags >> 1) & 0x1)
#define D40_DT_FLAGS_BIG_ENDIAN(flags) ((flags >> 2) & 0x1)
#define D40_DT_FLAGS_FIXED_CHAN(flags) ((flags >> 3) & 0x1)
+#define D40_DT_FLAGS_HIGH_PRIO(flags) ((flags >> 4) & 0x1)
static struct dma_chan *d40_xlate(struct of_phandle_args *dma_spec,
struct of_dma *ofdma)
@@ -2446,6 +2447,9 @@ static struct dma_chan *d40_xlate(struct of_phandle_args *dma_spec,
cfg.use_fixed_channel = true;
}
+ if (D40_DT_FLAGS_HIGH_PRIO(flags))
+ cfg.high_priority = true;
+
return dma_request_channel(cap, stedma40_filter, &cfg);
}
--
1.8.1.2
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [PATCH 02/13] dma: ste_dma40: Parse flags property for new 'high priority channel' request
2013-11-06 10:16 ` [PATCH 02/13] dma: ste_dma40: Parse flags property for new 'high priority channel' request Lee Jones
@ 2013-11-06 11:40 ` Linus Walleij
2013-11-13 14:16 ` Vinod Koul
1 sibling, 0 replies; 37+ messages in thread
From: Linus Walleij @ 2013-11-06 11:40 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, Nov 6, 2013 at 11:16 AM, Lee Jones <lee.jones@linaro.org> wrote:
> This is used for MSP (audio) devices which is about to be fully DT:ed.
>
> Cc: Vinod Koul <vinod.koul@intel.com>
> 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] 37+ messages in thread
* [PATCH 02/13] dma: ste_dma40: Parse flags property for new 'high priority channel' request
2013-11-06 10:16 ` [PATCH 02/13] dma: ste_dma40: Parse flags property for new 'high priority channel' request Lee Jones
2013-11-06 11:40 ` Linus Walleij
@ 2013-11-13 14:16 ` Vinod Koul
1 sibling, 0 replies; 37+ messages in thread
From: Vinod Koul @ 2013-11-13 14:16 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, Nov 06, 2013 at 10:16:14AM +0000, Lee Jones wrote:
> This is used for MSP (audio) devices which is about to be fully DT:ed.
>
> Cc: Vinod Koul <vinod.koul@intel.com>
> Signed-off-by: Lee Jones <lee.jones@linaro.org>
Acked-by: Vinod Koul <vinod.koul@intel.com>
--
~Vinod
> ---
> drivers/dma/ste_dma40.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/drivers/dma/ste_dma40.c b/drivers/dma/ste_dma40.c
> index b8c031b..00a2de9 100644
> --- a/drivers/dma/ste_dma40.c
> +++ b/drivers/dma/ste_dma40.c
> @@ -2409,6 +2409,7 @@ static void d40_set_prio_realtime(struct d40_chan *d40c)
> #define D40_DT_FLAGS_DIR(flags) ((flags >> 1) & 0x1)
> #define D40_DT_FLAGS_BIG_ENDIAN(flags) ((flags >> 2) & 0x1)
> #define D40_DT_FLAGS_FIXED_CHAN(flags) ((flags >> 3) & 0x1)
> +#define D40_DT_FLAGS_HIGH_PRIO(flags) ((flags >> 4) & 0x1)
>
> static struct dma_chan *d40_xlate(struct of_phandle_args *dma_spec,
> struct of_dma *ofdma)
> @@ -2446,6 +2447,9 @@ static struct dma_chan *d40_xlate(struct of_phandle_args *dma_spec,
> cfg.use_fixed_channel = true;
> }
>
> + if (D40_DT_FLAGS_HIGH_PRIO(flags))
> + cfg.high_priority = true;
> +
> return dma_request_channel(cap, stedma40_filter, &cfg);
> }
>
> --
> 1.8.1.2
>
--
^ permalink raw reply [flat|nested] 37+ messages in thread
* [PATCH 03/13] ARM: ux500: Don't use enums for MSP IDs - for easy DT conversion
2013-11-06 10:16 [PATCH 00/13] ASoC: dma: ARM: ux500: Obtain DMA data from Device Tree Lee Jones
2013-11-06 10:16 ` [PATCH 01/13] dma: ste_dma40: Expand DT binding to accept 'high-priority channel' flag Lee Jones
2013-11-06 10:16 ` [PATCH 02/13] dma: ste_dma40: Parse flags property for new 'high priority channel' request Lee Jones
@ 2013-11-06 10:16 ` Lee Jones
2013-11-06 11:41 ` Linus Walleij
2013-11-06 10:16 ` [PATCH 04/13] ARM: ux500: Add DMA config bindings for MSP devices Lee Jones
` (9 subsequent siblings)
12 siblings, 1 reply; 37+ messages in thread
From: Lee Jones @ 2013-11-06 10:16 UTC (permalink / raw)
To: linux-arm-kernel
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
arch/arm/mach-ux500/board-mop500-audio.c | 8 ++++----
include/linux/platform_data/asoc-ux500-msp.h | 9 +--------
sound/soc/ux500/ux500_msp_i2s.h | 2 +-
3 files changed, 6 insertions(+), 13 deletions(-)
diff --git a/arch/arm/mach-ux500/board-mop500-audio.c b/arch/arm/mach-ux500/board-mop500-audio.c
index d528059..c5eeee3 100644
--- a/arch/arm/mach-ux500/board-mop500-audio.c
+++ b/arch/arm/mach-ux500/board-mop500-audio.c
@@ -29,7 +29,7 @@ static struct stedma40_chan_cfg msp0_dma_tx = {
};
struct msp_i2s_platform_data msp0_platform_data = {
- .id = MSP_I2S_0,
+ .id = 0,
.msp_i2s_dma_rx = &msp0_dma_rx,
.msp_i2s_dma_tx = &msp0_dma_tx,
};
@@ -47,7 +47,7 @@ static struct stedma40_chan_cfg msp1_dma_tx = {
};
struct msp_i2s_platform_data msp1_platform_data = {
- .id = MSP_I2S_1,
+ .id = 1,
.msp_i2s_dma_rx = NULL,
.msp_i2s_dma_tx = &msp1_dma_tx,
};
@@ -67,13 +67,13 @@ static struct stedma40_chan_cfg msp2_dma_tx = {
};
struct msp_i2s_platform_data msp2_platform_data = {
- .id = MSP_I2S_2,
+ .id = 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,
+ .id = 3,
.msp_i2s_dma_rx = &msp1_dma_rx,
.msp_i2s_dma_tx = NULL,
};
diff --git a/include/linux/platform_data/asoc-ux500-msp.h b/include/linux/platform_data/asoc-ux500-msp.h
index 9991aea..2f34bb9 100644
--- a/include/linux/platform_data/asoc-ux500-msp.h
+++ b/include/linux/platform_data/asoc-ux500-msp.h
@@ -10,16 +10,9 @@
#include <linux/platform_data/dma-ste-dma40.h>
-enum msp_i2s_id {
- MSP_I2S_0 = 0,
- MSP_I2S_1,
- MSP_I2S_2,
- MSP_I2S_3,
-};
-
/* Platform data structure for a MSP I2S-device */
struct msp_i2s_platform_data {
- enum msp_i2s_id id;
+ int id;
struct stedma40_chan_cfg *msp_i2s_dma_rx;
struct stedma40_chan_cfg *msp_i2s_dma_tx;
};
diff --git a/sound/soc/ux500/ux500_msp_i2s.h b/sound/soc/ux500/ux500_msp_i2s.h
index 258d0bc..875de0f 100644
--- a/sound/soc/ux500/ux500_msp_i2s.h
+++ b/sound/soc/ux500/ux500_msp_i2s.h
@@ -475,7 +475,7 @@ struct ux500_msp_dma_params {
};
struct ux500_msp {
- enum msp_i2s_id id;
+ int id;
void __iomem *registers;
struct device *dev;
struct ux500_msp_dma_params playback_dma_data;
--
1.8.1.2
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [PATCH 04/13] ARM: ux500: Add DMA config bindings for MSP devices
2013-11-06 10:16 [PATCH 00/13] ASoC: dma: ARM: ux500: Obtain DMA data from Device Tree Lee Jones
` (2 preceding siblings ...)
2013-11-06 10:16 ` [PATCH 03/13] ARM: ux500: Don't use enums for MSP IDs - for easy DT conversion Lee Jones
@ 2013-11-06 10:16 ` Lee Jones
2013-11-06 11:44 ` Linus Walleij
2013-11-12 19:43 ` Linus Walleij
2013-11-06 10:16 ` [PATCH 05/13] ARM: ux500: Add ID properties to 'simply' differentiate between MSPs Lee Jones
` (8 subsequent siblings)
12 siblings, 2 replies; 37+ messages in thread
From: Lee Jones @ 2013-11-06 10:16 UTC (permalink / raw)
To: linux-arm-kernel
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
arch/arm/boot/dts/ste-dbx5x0.dtsi | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/arch/arm/boot/dts/ste-dbx5x0.dtsi b/arch/arm/boot/dts/ste-dbx5x0.dtsi
index 7da99fe..50ff5ab 100644
--- a/arch/arm/boot/dts/ste-dbx5x0.dtsi
+++ b/arch/arm/boot/dts/ste-dbx5x0.dtsi
@@ -913,6 +913,10 @@
interrupts = <0 31 IRQ_TYPE_LEVEL_HIGH>;
v-ape-supply = <&db8500_vape_reg>;
+ dmas = <&dma 31 0 0x12>, /* Logical - DevToMem - HighPrio */
+ <&dma 31 0 0x10>; /* Logical - MemToDev - HighPrio */
+ dma-names = "rx", "tx";
+
clocks = <&prcc_kclk 1 3>, <&prcc_pclk 1 3>;
clock-names = "msp", "apb_pclk";
@@ -925,6 +929,9 @@
interrupts = <0 62 IRQ_TYPE_LEVEL_HIGH>;
v-ape-supply = <&db8500_vape_reg>;
+ dmas = <&dma 30 0 0x10>; /* Logical - MemToDev - HighPrio */
+ dma-names = "tx";
+
clocks = <&prcc_kclk 1 4>, <&prcc_pclk 1 4>;
clock-names = "msp", "apb_pclk";
@@ -938,6 +945,11 @@
interrupts = <0 98 IRQ_TYPE_LEVEL_HIGH>;
v-ape-supply = <&db8500_vape_reg>;
+ dmas = <&dma 14 0 0x12>, /* Logical - DevToMem - HighPrio */
+ <&dma 14 1 0x19>; /* Physical Chan 1 - MemToDev
+ HighPrio - Fixed */
+ dma-names = "rx", "tx";
+
clocks = <&prcc_kclk 2 3>, <&prcc_pclk 2 5>;
clock-names = "msp", "apb_pclk";
@@ -950,6 +962,9 @@
interrupts = <0 62 IRQ_TYPE_LEVEL_HIGH>;
v-ape-supply = <&db8500_vape_reg>;
+ dmas = <&dma 30 0 0x12>; /* Logical - DevToMem - HighPrio */
+ dma-names = "rx";
+
clocks = <&prcc_kclk 1 10>, <&prcc_pclk 1 11>;
clock-names = "msp", "apb_pclk";
--
1.8.1.2
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [PATCH 04/13] ARM: ux500: Add DMA config bindings for MSP devices
2013-11-06 10:16 ` [PATCH 04/13] ARM: ux500: Add DMA config bindings for MSP devices Lee Jones
@ 2013-11-06 11:44 ` Linus Walleij
2013-11-06 12:10 ` Lee Jones
2013-11-12 19:43 ` Linus Walleij
1 sibling, 1 reply; 37+ messages in thread
From: Linus Walleij @ 2013-11-06 11:44 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, Nov 6, 2013 at 11:16 AM, Lee Jones <lee.jones@linaro.org> wrote:
> Signed-off-by: Lee Jones <lee.jones@linaro.org>
Usually I would like to apply this separately to my ux500-dt branch.
While we should keep patches together for bisectability, the dts
files is something of an exception in my book since they will
be moved out of the kernel one day. Anyway, do as you please:
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Yours,
Linus Walleij
^ permalink raw reply [flat|nested] 37+ messages in thread
* [PATCH 04/13] ARM: ux500: Add DMA config bindings for MSP devices
2013-11-06 11:44 ` Linus Walleij
@ 2013-11-06 12:10 ` Lee Jones
0 siblings, 0 replies; 37+ messages in thread
From: Lee Jones @ 2013-11-06 12:10 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, 06 Nov 2013, Linus Walleij wrote:
> On Wed, Nov 6, 2013 at 11:16 AM, Lee Jones <lee.jones@linaro.org> wrote:
>
> > Signed-off-by: Lee Jones <lee.jones@linaro.org>
>
> Usually I would like to apply this separately to my ux500-dt branch.
>
> While we should keep patches together for bisectability, the dts
> files is something of an exception in my book since they will
> be moved out of the kernel one day. Anyway, do as you please:
> Acked-by: Linus Walleij <linus.walleij@linaro.org>
Actually, you can take it if you like, as it makes no difference to
this patch-set. Just make sure it's applied before I rip out the MSP
platform data stuff (which I am yet to do).
--
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org ? Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
^ permalink raw reply [flat|nested] 37+ messages in thread
* [PATCH 04/13] ARM: ux500: Add DMA config bindings for MSP devices
2013-11-06 10:16 ` [PATCH 04/13] ARM: ux500: Add DMA config bindings for MSP devices Lee Jones
2013-11-06 11:44 ` Linus Walleij
@ 2013-11-12 19:43 ` Linus Walleij
1 sibling, 0 replies; 37+ messages in thread
From: Linus Walleij @ 2013-11-12 19:43 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, Nov 6, 2013 at 11:16 AM, Lee Jones <lee.jones@linaro.org> wrote:
> Signed-off-by: Lee Jones <lee.jones@linaro.org>
Patch applied to my ux500-devicetree branch, thanks!
Yours,
Linus Walleij
^ permalink raw reply [flat|nested] 37+ messages in thread
* [PATCH 05/13] ARM: ux500: Add ID properties to 'simply' differentiate between MSPs
2013-11-06 10:16 [PATCH 00/13] ASoC: dma: ARM: ux500: Obtain DMA data from Device Tree Lee Jones
` (3 preceding siblings ...)
2013-11-06 10:16 ` [PATCH 04/13] ARM: ux500: Add DMA config bindings for MSP devices Lee Jones
@ 2013-11-06 10:16 ` Lee Jones
2013-11-06 11:45 ` Linus Walleij
2013-11-06 10:16 ` [PATCH 06/13] ASoC: ux500_pcm: Extend ux500 MSP binding for enumeration Lee Jones
` (7 subsequent siblings)
12 siblings, 1 reply; 37+ messages in thread
From: Lee Jones @ 2013-11-06 10:16 UTC (permalink / raw)
To: linux-arm-kernel
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
arch/arm/boot/dts/ste-dbx5x0.dtsi | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/arch/arm/boot/dts/ste-dbx5x0.dtsi b/arch/arm/boot/dts/ste-dbx5x0.dtsi
index 50ff5ab..63861ee 100644
--- a/arch/arm/boot/dts/ste-dbx5x0.dtsi
+++ b/arch/arm/boot/dts/ste-dbx5x0.dtsi
@@ -920,6 +920,8 @@
clocks = <&prcc_kclk 1 3>, <&prcc_pclk 1 3>;
clock-names = "msp", "apb_pclk";
+ id = <0>;
+
status = "disabled";
};
@@ -935,6 +937,8 @@
clocks = <&prcc_kclk 1 4>, <&prcc_pclk 1 4>;
clock-names = "msp", "apb_pclk";
+ id = <1>;
+
status = "disabled";
};
@@ -953,6 +957,8 @@
clocks = <&prcc_kclk 2 3>, <&prcc_pclk 2 5>;
clock-names = "msp", "apb_pclk";
+ id = <2>;
+
status = "disabled";
};
@@ -968,6 +974,8 @@
clocks = <&prcc_kclk 1 10>, <&prcc_pclk 1 11>;
clock-names = "msp", "apb_pclk";
+ id = <3>;
+
status = "disabled";
};
--
1.8.1.2
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [PATCH 06/13] ASoC: ux500_pcm: Extend ux500 MSP binding for enumeration
2013-11-06 10:16 [PATCH 00/13] ASoC: dma: ARM: ux500: Obtain DMA data from Device Tree Lee Jones
` (4 preceding siblings ...)
2013-11-06 10:16 ` [PATCH 05/13] ARM: ux500: Add ID properties to 'simply' differentiate between MSPs Lee Jones
@ 2013-11-06 10:16 ` Lee Jones
2013-11-06 10:46 ` Mark Brown
2013-11-06 10:16 ` [PATCH 07/13] ASoC: ux500_pcm: Extract MSP IDs from Device Tree Lee Jones
` (6 subsequent siblings)
12 siblings, 1 reply; 37+ messages in thread
From: Lee Jones @ 2013-11-06 10:16 UTC (permalink / raw)
To: linux-arm-kernel
Cc: devicetree at vger.kernel.org
Cc: Mark Brown <broonie@kernel.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
Documentation/devicetree/bindings/sound/ux500-msp.txt | 3 +++
1 file changed, 3 insertions(+)
diff --git a/Documentation/devicetree/bindings/sound/ux500-msp.txt b/Documentation/devicetree/bindings/sound/ux500-msp.txt
index 99acd9c..33bd000 100644
--- a/Documentation/devicetree/bindings/sound/ux500-msp.txt
+++ b/Documentation/devicetree/bindings/sound/ux500-msp.txt
@@ -3,6 +3,7 @@
Required properties:
- compatible :"stericsson,ux500-msp-i2s"
- reg : Physical base address and length of the device's registers.
+ - id : MSP ID - used during component registration
Optional properties:
- interrupts : The interrupt output from the device.
@@ -28,6 +29,7 @@ Example:
reg = <0x80124000 0x1000>;
interrupts = <0 62 0x4>;
v-ape-supply = <&db8500_vape_reg>;
+ id = <1>;
};
msp3: msp at 80125000 {
@@ -35,6 +37,7 @@ Example:
reg = <0x80125000 0x1000>;
interrupts = <0 62 0x4>;
v-ape-supply = <&db8500_vape_reg>;
+ id = <3>;
};
codec: ab8500-codec {
--
1.8.1.2
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [PATCH 06/13] ASoC: ux500_pcm: Extend ux500 MSP binding for enumeration
2013-11-06 10:16 ` [PATCH 06/13] ASoC: ux500_pcm: Extend ux500 MSP binding for enumeration Lee Jones
@ 2013-11-06 10:46 ` Mark Brown
2013-11-06 11:22 ` Lee Jones
2013-11-06 11:55 ` Linus Walleij
0 siblings, 2 replies; 37+ messages in thread
From: Mark Brown @ 2013-11-06 10:46 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, Nov 06, 2013 at 10:16:18AM +0000, Lee Jones wrote:
> +++ b/Documentation/devicetree/bindings/sound/ux500-msp.txt
> @@ -3,6 +3,7 @@
> Required properties:
> - compatible :"stericsson,ux500-msp-i2s"
> - reg : Physical base address and length of the device's registers.
> + - id : MSP ID - used during component registration
I have no idea what this means or how one would pick the number? It
looks like something purely internal to the driver...
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20131106/6df52946/attachment-0001.sig>
^ permalink raw reply [flat|nested] 37+ messages in thread
* [PATCH 06/13] ASoC: ux500_pcm: Extend ux500 MSP binding for enumeration
2013-11-06 10:46 ` Mark Brown
@ 2013-11-06 11:22 ` Lee Jones
2013-11-06 11:55 ` Linus Walleij
1 sibling, 0 replies; 37+ messages in thread
From: Lee Jones @ 2013-11-06 11:22 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, 06 Nov 2013, Mark Brown wrote:
> On Wed, Nov 06, 2013 at 10:16:18AM +0000, Lee Jones wrote:
>
> > +++ b/Documentation/devicetree/bindings/sound/ux500-msp.txt
> > @@ -3,6 +3,7 @@
> > Required properties:
> > - compatible :"stericsson,ux500-msp-i2s"
> > - reg : Physical base address and length of the device's registers.
> > + - id : MSP ID - used during component registration
>
> I have no idea what this means or how one would pick the number? It
> looks like something purely internal to the driver...
Hmm... yes I guess you're right. I think a match table would be more
appropriate.
--
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org ? Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
^ permalink raw reply [flat|nested] 37+ messages in thread
* [PATCH 06/13] ASoC: ux500_pcm: Extend ux500 MSP binding for enumeration
2013-11-06 10:46 ` Mark Brown
2013-11-06 11:22 ` Lee Jones
@ 2013-11-06 11:55 ` Linus Walleij
2013-11-06 12:04 ` Mark Brown
2013-11-06 12:07 ` Lee Jones
1 sibling, 2 replies; 37+ messages in thread
From: Linus Walleij @ 2013-11-06 11:55 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, Nov 6, 2013 at 11:46 AM, Mark Brown <broonie@kernel.org> wrote:
> On Wed, Nov 06, 2013 at 10:16:18AM +0000, Lee Jones wrote:
>> + - id : MSP ID - used during component registration
>
> I have no idea what this means or how one would pick the number? It
> looks like something purely internal to the driver...
Actually it's quite common when we have several HW blocks of the
same thing to add something like an id. For example for different
GPIO banks.
But in this case I guess it may make more sense to flag one MSP
for RX and one for TX or something?
There are also two more such MSPs for streaming audio to the
Bluetooth audio portions.
Yours,
Linus Walleij
^ permalink raw reply [flat|nested] 37+ messages in thread
* [PATCH 06/13] ASoC: ux500_pcm: Extend ux500 MSP binding for enumeration
2013-11-06 11:55 ` Linus Walleij
@ 2013-11-06 12:04 ` Mark Brown
2013-11-06 12:07 ` Lee Jones
1 sibling, 0 replies; 37+ messages in thread
From: Mark Brown @ 2013-11-06 12:04 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, Nov 06, 2013 at 12:55:51PM +0100, Linus Walleij wrote:
> On Wed, Nov 6, 2013 at 11:46 AM, Mark Brown <broonie@kernel.org> wrote:
> > On Wed, Nov 06, 2013 at 10:16:18AM +0000, Lee Jones wrote:
> >> + - id : MSP ID - used during component registration
> > I have no idea what this means or how one would pick the number? It
> > looks like something purely internal to the driver...
> Actually it's quite common when we have several HW blocks of the
> same thing to add something like an id. For example for different
> GPIO banks.
That's common but having the number be in the device tree as a property
or referenced by anything like this isn't common - usually it's just in
the node name if it appears in the DT at all.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20131106/758056c4/attachment.sig>
^ permalink raw reply [flat|nested] 37+ messages in thread
* [PATCH 06/13] ASoC: ux500_pcm: Extend ux500 MSP binding for enumeration
2013-11-06 11:55 ` Linus Walleij
2013-11-06 12:04 ` Mark Brown
@ 2013-11-06 12:07 ` Lee Jones
1 sibling, 0 replies; 37+ messages in thread
From: Lee Jones @ 2013-11-06 12:07 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, 06 Nov 2013, Linus Walleij wrote:
> On Wed, Nov 6, 2013 at 11:46 AM, Mark Brown <broonie@kernel.org> wrote:
> > On Wed, Nov 06, 2013 at 10:16:18AM +0000, Lee Jones wrote:
>
> >> + - id : MSP ID - used during component registration
> >
> > I have no idea what this means or how one would pick the number? It
> > looks like something purely internal to the driver...
>
> Actually it's quite common when we have several HW blocks of the
> same thing to add something like an id. For example for different
> GPIO banks.
>
> But in this case I guess it may make more sense to flag one MSP
> for RX and one for TX or something?
>
> There are also two more such MSPs for streaming audio to the
> Bluetooth audio portions.
Right, we have 4 of them:
MSP0: Tx and Rx
MSP1: Tx
MSP2: Tx and Rx
MSP3: Rx
--
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org ? Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
^ permalink raw reply [flat|nested] 37+ messages in thread
* [PATCH 07/13] ASoC: ux500_pcm: Extract MSP IDs from Device Tree
2013-11-06 10:16 [PATCH 00/13] ASoC: dma: ARM: ux500: Obtain DMA data from Device Tree Lee Jones
` (5 preceding siblings ...)
2013-11-06 10:16 ` [PATCH 06/13] ASoC: ux500_pcm: Extend ux500 MSP binding for enumeration Lee Jones
@ 2013-11-06 10:16 ` Lee Jones
2013-11-06 11:46 ` Linus Walleij
2013-11-06 10:16 ` [PATCH 08/13] ASoC: generic-dmaengine-pcm: Clear slave_config memory Lee Jones
` (5 subsequent siblings)
12 siblings, 1 reply; 37+ messages in thread
From: Lee Jones @ 2013-11-06 10:16 UTC (permalink / raw)
To: linux-arm-kernel
This is required for indexing pre-defined channel configuration structures.
Cc: alsa-devel at alsa-project.org
Cc: Mark Brown <broonie@kernel.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
sound/soc/ux500/ux500_msp_i2s.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/sound/soc/ux500/ux500_msp_i2s.c b/sound/soc/ux500/ux500_msp_i2s.c
index 1ca8b08..0a99372 100644
--- a/sound/soc/ux500/ux500_msp_i2s.c
+++ b/sound/soc/ux500/ux500_msp_i2s.c
@@ -665,6 +665,13 @@ int ux500_msp_i2s_init_msp(struct platform_device *pdev,
sizeof(struct msp_i2s_platform_data), GFP_KERNEL);
if (!platform_data)
return -ENOMEM;
+
+ if (!of_property_read_u32(np, "id",
+ &platform_data->id)) {
+ dev_err(&pdev->dev,
+ "No 'id' property found in DT\n");
+ return -EINVAL;
+ }
}
} else
if (!platform_data)
--
1.8.1.2
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [PATCH 08/13] ASoC: generic-dmaengine-pcm: Clear slave_config memory
2013-11-06 10:16 [PATCH 00/13] ASoC: dma: ARM: ux500: Obtain DMA data from Device Tree Lee Jones
` (6 preceding siblings ...)
2013-11-06 10:16 ` [PATCH 07/13] ASoC: ux500_pcm: Extract MSP IDs from Device Tree Lee Jones
@ 2013-11-06 10:16 ` Lee Jones
2013-11-06 11:55 ` [alsa-devel] " Lars-Peter Clausen
2013-11-07 11:36 ` Mark Brown
2013-11-06 10:16 ` [PATCH 09/13] ASoC: Ux500: Match platform by device node when booting Device Tree Lee Jones
` (4 subsequent siblings)
12 siblings, 2 replies; 37+ messages in thread
From: Lee Jones @ 2013-11-06 10:16 UTC (permalink / raw)
To: linux-arm-kernel
We currently assume that the DMA Slave Config will be fully populated
by the platform, however some DMA Engines make decisions based on zero
(default) flags such as DMA_SLAVE_BUSWIDTH_UNDEFINED and as this is a
static declaration we need to memset it to clear the data area.
Cc: alsa-devel at alsa-project.org
Cc: Mark Brown <broonie@kernel.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
sound/soc/soc-generic-dmaengine-pcm.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/sound/soc/soc-generic-dmaengine-pcm.c b/sound/soc/soc-generic-dmaengine-pcm.c
index ee07903..6ad4c7a 100644
--- a/sound/soc/soc-generic-dmaengine-pcm.c
+++ b/sound/soc/soc-generic-dmaengine-pcm.c
@@ -90,6 +90,8 @@ static int dmaengine_pcm_hw_params(struct snd_pcm_substream *substream,
struct dma_slave_config slave_config;
int ret;
+ memset(&slave_config, 0, sizeof(slave_config));
+
if (!pcm->config)
prepare_slave_config = snd_dmaengine_pcm_prepare_slave_config;
else
--
1.8.1.2
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [alsa-devel] [PATCH 08/13] ASoC: generic-dmaengine-pcm: Clear slave_config memory
2013-11-06 10:16 ` [PATCH 08/13] ASoC: generic-dmaengine-pcm: Clear slave_config memory Lee Jones
@ 2013-11-06 11:55 ` Lars-Peter Clausen
2013-11-07 11:36 ` Mark Brown
1 sibling, 0 replies; 37+ messages in thread
From: Lars-Peter Clausen @ 2013-11-06 11:55 UTC (permalink / raw)
To: linux-arm-kernel
On 11/06/2013 11:16 AM, Lee Jones wrote:
> We currently assume that the DMA Slave Config will be fully populated
> by the platform, however some DMA Engines make decisions based on zero
> (default) flags such as DMA_SLAVE_BUSWIDTH_UNDEFINED and as this is a
> static declaration we need to memset it to clear the data area.
>
> Cc: alsa-devel at alsa-project.org
> Cc: Mark Brown <broonie@kernel.org>
> Signed-off-by: Lee Jones <lee.jones@linaro.org>
Acked-by: Lars-Peter Clausen <lars@metafoo.de>
Thanks.
> ---
> sound/soc/soc-generic-dmaengine-pcm.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/sound/soc/soc-generic-dmaengine-pcm.c b/sound/soc/soc-generic-dmaengine-pcm.c
> index ee07903..6ad4c7a 100644
> --- a/sound/soc/soc-generic-dmaengine-pcm.c
> +++ b/sound/soc/soc-generic-dmaengine-pcm.c
> @@ -90,6 +90,8 @@ static int dmaengine_pcm_hw_params(struct snd_pcm_substream *substream,
> struct dma_slave_config slave_config;
> int ret;
>
> + memset(&slave_config, 0, sizeof(slave_config));
> +
> if (!pcm->config)
> prepare_slave_config = snd_dmaengine_pcm_prepare_slave_config;
> else
>
^ permalink raw reply [flat|nested] 37+ messages in thread
* [PATCH 08/13] ASoC: generic-dmaengine-pcm: Clear slave_config memory
2013-11-06 10:16 ` [PATCH 08/13] ASoC: generic-dmaengine-pcm: Clear slave_config memory Lee Jones
2013-11-06 11:55 ` [alsa-devel] " Lars-Peter Clausen
@ 2013-11-07 11:36 ` Mark Brown
1 sibling, 0 replies; 37+ messages in thread
From: Mark Brown @ 2013-11-07 11:36 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, Nov 06, 2013 at 10:16:20AM +0000, Lee Jones wrote:
> We currently assume that the DMA Slave Config will be fully populated
> by the platform, however some DMA Engines make decisions based on zero
> (default) flags such as DMA_SLAVE_BUSWIDTH_UNDEFINED and as this is a
> static declaration we need to memset it to clear the data area.
Applied, thanks - given how near we are to the merge window the whole
series isn't going to go in for v3.13 but this ought to do so.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20131107/a530bfec/attachment.sig>
^ permalink raw reply [flat|nested] 37+ messages in thread
* [PATCH 09/13] ASoC: Ux500: Match platform by device node when booting Device Tree
2013-11-06 10:16 [PATCH 00/13] ASoC: dma: ARM: ux500: Obtain DMA data from Device Tree Lee Jones
` (7 preceding siblings ...)
2013-11-06 10:16 ` [PATCH 08/13] ASoC: generic-dmaengine-pcm: Clear slave_config memory Lee Jones
@ 2013-11-06 10:16 ` Lee Jones
2013-11-06 11:47 ` Linus Walleij
2013-11-06 10:16 ` [PATCH 10/13] ASoC: ux500_pcm: Extend Device Tree support to deal with DMA data Lee Jones
` (3 subsequent siblings)
12 siblings, 1 reply; 37+ messages in thread
From: Lee Jones @ 2013-11-06 10:16 UTC (permalink / raw)
To: linux-arm-kernel
We're getting closer to fully enabling the Ux500 ASoC driver for Device
Tree. When we switch over from using AUXDATA we'll need to match platform
by only Device Tree nodes. In this patch we NULL out the platform_name,
and supply nodes for each platform device.
Cc: alsa-devel at alsa-project.org
Cc: Mark Brown <broonie@kernel.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
sound/soc/ux500/mop500.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/sound/soc/ux500/mop500.c b/sound/soc/ux500/mop500.c
index 178d1ba..4dc7b81 100644
--- a/sound/soc/ux500/mop500.c
+++ b/sound/soc/ux500/mop500.c
@@ -90,7 +90,9 @@ static int mop500_of_probe(struct platform_device *pdev,
for (i = 0; i < 2; i++) {
mop500_dai_links[i].cpu_of_node = msp_np[i];
+ mop500_dai_links[i].platform_of_node = msp_np[i];
mop500_dai_links[i].cpu_dai_name = NULL;
+ mop500_dai_links[i].platform_name = NULL;
mop500_dai_links[i].codec_of_node = codec_np;
mop500_dai_links[i].codec_name = NULL;
}
--
1.8.1.2
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [PATCH 10/13] ASoC: ux500_pcm: Extend Device Tree support to deal with DMA data
2013-11-06 10:16 [PATCH 00/13] ASoC: dma: ARM: ux500: Obtain DMA data from Device Tree Lee Jones
` (8 preceding siblings ...)
2013-11-06 10:16 ` [PATCH 09/13] ASoC: Ux500: Match platform by device node when booting Device Tree Lee Jones
@ 2013-11-06 10:16 ` Lee Jones
2013-11-06 11:49 ` Linus Walleij
2013-11-06 10:16 ` [PATCH 11/13] ASoC: ux500: Store DMA data in the DAI differently in the pdata and DT case Lee Jones
` (2 subsequent siblings)
12 siblings, 1 reply; 37+ messages in thread
From: Lee Jones @ 2013-11-06 10:16 UTC (permalink / raw)
To: linux-arm-kernel
Soon we will strip out pdata support from the Ux500 set of ASoC drivers.
When this happens it will have to supply a DMA slave_config to the
dmaengine. At the moment a great deal of this comes from pdata via
AUXDATA. We need to become independent of this soon. This patch starts
the process by allocating memory for the associated data structures and
fetches the MSP id used for const struct indexing.
Cc: alsa-devel at alsa-project.org
Cc: Mark Brown <broonie@kernel.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
sound/soc/ux500/ux500_msp_i2s.c | 68 ++++++++++++++++++++++++++++-------------
1 file changed, 47 insertions(+), 21 deletions(-)
diff --git a/sound/soc/ux500/ux500_msp_i2s.c b/sound/soc/ux500/ux500_msp_i2s.c
index 0a99372..2e916d1 100644
--- a/sound/soc/ux500/ux500_msp_i2s.c
+++ b/sound/soc/ux500/ux500_msp_i2s.c
@@ -646,6 +646,41 @@ int ux500_msp_i2s_close(struct ux500_msp *msp, unsigned int dir)
}
+int ux500_msp_i2s_of_init_msp(struct platform_device *pdev,
+ struct ux500_msp *msp,
+ struct msp_i2s_platform_data **platform_data)
+{
+ struct device_node *np = pdev->dev.of_node;
+ struct msp_i2s_platform_data *pdata;
+
+ *platform_data = devm_kzalloc(&pdev->dev,
+ sizeof(struct msp_i2s_platform_data),
+ GFP_KERNEL);
+ pdata = *platform_data;
+ if (!pdata)
+ return -ENOMEM;
+
+ msp->playback_dma_data.dma_cfg = devm_kzalloc(&pdev->dev,
+ sizeof(struct stedma40_chan_cfg),
+ GFP_KERNEL);
+ if (!msp->playback_dma_data.dma_cfg)
+ return -ENOMEM;
+
+ msp->capture_dma_data.dma_cfg = devm_kzalloc(&pdev->dev,
+ sizeof(struct stedma40_chan_cfg),
+ GFP_KERNEL);
+ if (!msp->capture_dma_data.dma_cfg)
+ return -ENOMEM;
+
+ if (of_property_read_u32(np, "id", &pdata->id)) {
+ dev_err(&pdev->dev,
+ "No 'id' property found in DT\n");
+ return -EINVAL;
+ }
+
+ return 0;
+}
+
int ux500_msp_i2s_init_msp(struct platform_device *pdev,
struct ux500_msp **msp_p,
struct msp_i2s_platform_data *platform_data)
@@ -653,37 +688,28 @@ int ux500_msp_i2s_init_msp(struct platform_device *pdev,
struct resource *res = NULL;
struct device_node *np = pdev->dev.of_node;
struct ux500_msp *msp;
+ int ret;
*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)
- return -ENOMEM;
-
- if (!of_property_read_u32(np, "id",
- &platform_data->id)) {
- dev_err(&pdev->dev,
- "No 'id' property found in DT\n");
- return -EINVAL;
- }
- }
- } else
- if (!platform_data)
+ if (!platform_data) {
+ if (np) {
+ ret = ux500_msp_i2s_of_init_msp(pdev, msp,
+ &platform_data);
+ if (ret)
+ return ret;
+ } else
return -EINVAL;
-
- dev_dbg(&pdev->dev, "%s: Enter (name: %s, id: %d).\n", __func__,
- pdev->name, platform_data->id);
+ } else {
+ msp->playback_dma_data.dma_cfg = platform_data->msp_i2s_dma_tx;
+ msp->capture_dma_data.dma_cfg = platform_data->msp_i2s_dma_rx;
+ }
msp->id = platform_data->id;
msp->dev = &pdev->dev;
- msp->playback_dma_data.dma_cfg = platform_data->msp_i2s_dma_tx;
- msp->capture_dma_data.dma_cfg = platform_data->msp_i2s_dma_rx;
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if (res == NULL) {
--
1.8.1.2
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [PATCH 10/13] ASoC: ux500_pcm: Extend Device Tree support to deal with DMA data
2013-11-06 10:16 ` [PATCH 10/13] ASoC: ux500_pcm: Extend Device Tree support to deal with DMA data Lee Jones
@ 2013-11-06 11:49 ` Linus Walleij
0 siblings, 0 replies; 37+ messages in thread
From: Linus Walleij @ 2013-11-06 11:49 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, Nov 6, 2013 at 11:16 AM, Lee Jones <lee.jones@linaro.org> wrote:
> Soon we will strip out pdata support from the Ux500 set of ASoC drivers.
> When this happens it will have to supply a DMA slave_config to the
> dmaengine. At the moment a great deal of this comes from pdata via
> AUXDATA. We need to become independent of this soon. This patch starts
> the process by allocating memory for the associated data structures and
> fetches the MSP id used for const struct indexing.
>
> Cc: alsa-devel at alsa-project.org
> Cc: Mark Brown <broonie@kernel.org>
> 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] 37+ messages in thread
* [PATCH 11/13] ASoC: ux500: Store DMA data in the DAI differently in the pdata and DT case
2013-11-06 10:16 [PATCH 00/13] ASoC: dma: ARM: ux500: Obtain DMA data from Device Tree Lee Jones
` (9 preceding siblings ...)
2013-11-06 10:16 ` [PATCH 10/13] ASoC: ux500_pcm: Extend Device Tree support to deal with DMA data Lee Jones
@ 2013-11-06 10:16 ` Lee Jones
2013-11-06 11:50 ` Linus Walleij
2013-11-06 10:16 ` [PATCH 12/13] ASoC: ux500_pcm: Differentiate between pdata and DT initialisation Lee Jones
2013-11-06 10:16 ` [PATCH 13/13] ASoC: ux500_pcm: Take out pointless dev_dbg() call Lee Jones
12 siblings, 1 reply; 37+ messages in thread
From: Lee Jones @ 2013-11-06 10:16 UTC (permalink / raw)
To: linux-arm-kernel
In this patch we do two things. Firstly, instead of open coding the
store of DMA data in to the DAI for later use, we use the API provided.
Secondly we create and store similar DMA data for the DT case, only
this time we use 'struct snd_dmaengine_dai_dma_data' which is provided
by the core for this very reason.
Cc: alsa-devel at alsa-project.org
Cc: Mark Brown <broonie@kernel.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
sound/soc/ux500/ux500_msp_dai.c | 41 +++++++++++++++++++++++++++++++++++++++--
1 file changed, 39 insertions(+), 2 deletions(-)
diff --git a/sound/soc/ux500/ux500_msp_dai.c b/sound/soc/ux500/ux500_msp_dai.c
index c6fb5cc..35187d8 100644
--- a/sound/soc/ux500/ux500_msp_dai.c
+++ b/sound/soc/ux500/ux500_msp_dai.c
@@ -17,12 +17,14 @@
#include <linux/bitops.h>
#include <linux/platform_device.h>
#include <linux/clk.h>
+#include <linux/of.h>
#include <linux/regulator/consumer.h>
#include <linux/mfd/dbx500-prcmu.h>
#include <linux/platform_data/asoc-ux500-msp.h>
#include <sound/soc.h>
#include <sound/soc-dai.h>
+#include <sound/dmaengine_pcm.h>
#include "ux500_msp_i2s.h"
#include "ux500_msp_dai.h"
@@ -654,16 +656,51 @@ static int ux500_msp_dai_trigger(struct snd_pcm_substream *substream,
return ret;
}
+static int ux500_msp_dai_of_probe(struct snd_soc_dai *dai)
+{
+ struct snd_dmaengine_dai_dma_data *playback_dma_data;
+ struct snd_dmaengine_dai_dma_data *capture_dma_data;
+
+ playback_dma_data = devm_kzalloc(dai->dev,
+ sizeof(*playback_dma_data),
+ GFP_KERNEL);
+ if (!playback_dma_data)
+ return -ENOMEM;
+
+ capture_dma_data = devm_kzalloc(dai->dev,
+ sizeof(*capture_dma_data),
+ GFP_KERNEL);
+ if (!capture_dma_data)
+ return -ENOMEM;
+
+ playback_dma_data->addr = drvdata->msp->playback_dma_data.tx_rx_addr;
+ capture_dma_data->addr = drvdata->msp->capture_dma_data.tx_rx_addr;
+
+ playback_dma_data->maxburst = 4;
+ capture_dma_data->maxburst = 4;
+
+ snd_soc_dai_init_dma_data(dai, playback_dma_data, capture_dma_data);
+
+ return 0;
+}
+
static int ux500_msp_dai_probe(struct snd_soc_dai *dai)
{
struct ux500_msp_i2s_drvdata *drvdata = dev_get_drvdata(dai->dev);
+ struct device_node *np = dai->dev->of_node;
+ int ret;
- dai->playback_dma_data = &drvdata->msp->playback_dma_data;
- dai->capture_dma_data = &drvdata->msp->capture_dma_data;
+ if (np) {
+ ret = ux500_msp_dai_of_probe(dai);
+ return ret;
+ }
drvdata->msp->playback_dma_data.data_size = drvdata->slot_width;
drvdata->msp->capture_dma_data.data_size = drvdata->slot_width;
+ snd_soc_dai_init_dma_data(dai,
+ &drvdata->msp->playback_dma_data,
+ &drvdata->msp->capture_dma_data);
return 0;
}
--
1.8.1.2
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [PATCH 12/13] ASoC: ux500_pcm: Differentiate between pdata and DT initialisation
2013-11-06 10:16 [PATCH 00/13] ASoC: dma: ARM: ux500: Obtain DMA data from Device Tree Lee Jones
` (10 preceding siblings ...)
2013-11-06 10:16 ` [PATCH 11/13] ASoC: ux500: Store DMA data in the DAI differently in the pdata and DT case Lee Jones
@ 2013-11-06 10:16 ` Lee Jones
2013-11-06 11:51 ` Linus Walleij
2013-11-06 10:16 ` [PATCH 13/13] ASoC: ux500_pcm: Take out pointless dev_dbg() call Lee Jones
12 siblings, 1 reply; 37+ messages in thread
From: Lee Jones @ 2013-11-06 10:16 UTC (permalink / raw)
To: linux-arm-kernel
If booting with full DT support (i.e. DMA too, the last piece of the
puzzle), then we don't need to use the compatible request channel call
back and, due to the work we laid down earlier in this patch-set, we
can use core function calls to populate the DMA slave_config. We also
require slightly different flags to inform the core that we 'are'
booting with DT.
Cc: alsa-devel at alsa-project.org
Cc: Mark Brown <broonie@kernel.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
sound/soc/ux500/ux500_pcm.c | 28 +++++++++++++++++++++++-----
1 file changed, 23 insertions(+), 5 deletions(-)
diff --git a/sound/soc/ux500/ux500_pcm.c b/sound/soc/ux500/ux500_pcm.c
index ce554de..acfec98 100644
--- a/sound/soc/ux500/ux500_pcm.c
+++ b/sound/soc/ux500/ux500_pcm.c
@@ -139,15 +139,33 @@ static const struct snd_dmaengine_pcm_config ux500_dmaengine_pcm_config = {
.prepare_slave_config = ux500_pcm_prepare_slave_config,
};
+static const struct snd_dmaengine_pcm_config ux500_dmaengine_of_pcm_config = {
+ .pcm_hardware = &ux500_pcm_hw,
+ .prealloc_buffer_size = 128 * 1024,
+ .prepare_slave_config = snd_dmaengine_pcm_prepare_slave_config,
+};
+
int ux500_pcm_register_platform(struct platform_device *pdev)
{
+ const struct snd_dmaengine_pcm_config *pcm_config;
+ struct device_node *np = pdev->dev.of_node;
+ unsigned int pcm_flags;
int ret;
- ret = snd_dmaengine_pcm_register(&pdev->dev,
- &ux500_dmaengine_pcm_config,
- SND_DMAENGINE_PCM_FLAG_NO_RESIDUE |
- SND_DMAENGINE_PCM_FLAG_COMPAT |
- SND_DMAENGINE_PCM_FLAG_NO_DT);
+ if (np) {
+ pcm_config = &ux500_dmaengine_of_pcm_config;
+
+ pcm_flags = SND_DMAENGINE_PCM_FLAG_NO_RESIDUE |
+ SND_DMAENGINE_PCM_FLAG_COMPAT;
+ } else {
+ pcm_config = &ux500_dmaengine_pcm_config;
+
+ pcm_flags = SND_DMAENGINE_PCM_FLAG_NO_RESIDUE |
+ SND_DMAENGINE_PCM_FLAG_NO_DT |
+ SND_DMAENGINE_PCM_FLAG_COMPAT;
+ }
+
+ ret = snd_dmaengine_pcm_register(&pdev->dev, pcm_config, pcm_flags);
if (ret < 0) {
dev_err(&pdev->dev,
"%s: ERROR: Failed to register platform '%s' (%d)!\n",
--
1.8.1.2
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [PATCH 12/13] ASoC: ux500_pcm: Differentiate between pdata and DT initialisation
2013-11-06 10:16 ` [PATCH 12/13] ASoC: ux500_pcm: Differentiate between pdata and DT initialisation Lee Jones
@ 2013-11-06 11:51 ` Linus Walleij
0 siblings, 0 replies; 37+ messages in thread
From: Linus Walleij @ 2013-11-06 11:51 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, Nov 6, 2013 at 11:16 AM, Lee Jones <lee.jones@linaro.org> wrote:
> If booting with full DT support (i.e. DMA too, the last piece of the
> puzzle), then we don't need to use the compatible request channel call
> back and, due to the work we laid down earlier in this patch-set, we
> can use core function calls to populate the DMA slave_config. We also
> require slightly different flags to inform the core that we 'are'
> booting with DT.
>
> Cc: alsa-devel at alsa-project.org
> Cc: Mark Brown <broonie@kernel.org>
> 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] 37+ messages in thread
* [PATCH 13/13] ASoC: ux500_pcm: Take out pointless dev_dbg() call
2013-11-06 10:16 [PATCH 00/13] ASoC: dma: ARM: ux500: Obtain DMA data from Device Tree Lee Jones
` (11 preceding siblings ...)
2013-11-06 10:16 ` [PATCH 12/13] ASoC: ux500_pcm: Differentiate between pdata and DT initialisation Lee Jones
@ 2013-11-06 10:16 ` Lee Jones
2013-11-06 11:52 ` Linus Walleij
12 siblings, 1 reply; 37+ messages in thread
From: Lee Jones @ 2013-11-06 10:16 UTC (permalink / raw)
To: linux-arm-kernel
Cc: alsa-devel at alsa-project.org
Cc: Mark Brown <broonie@kernel.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
sound/soc/ux500/ux500_pcm.c | 4 ----
1 file changed, 4 deletions(-)
diff --git a/sound/soc/ux500/ux500_pcm.c b/sound/soc/ux500/ux500_pcm.c
index acfec98..fd7f12e 100644
--- a/sound/soc/ux500/ux500_pcm.c
+++ b/sound/soc/ux500/ux500_pcm.c
@@ -65,14 +65,10 @@ static struct dma_chan *ux500_pcm_request_chan(struct snd_soc_pcm_runtime *rtd,
struct snd_pcm_substream *substream)
{
struct snd_soc_dai *dai = rtd->cpu_dai;
- struct device *dev = dai->dev;
u16 per_data_width, mem_data_width;
struct stedma40_chan_cfg *dma_cfg;
struct ux500_msp_dma_params *dma_params;
- dev_dbg(dev, "%s: MSP %d (%s): Enter.\n", __func__, dai->id,
- snd_pcm_stream_str(substream));
-
dma_params = snd_soc_dai_get_dma_data(dai, substream);
dma_cfg = dma_params->dma_cfg;
--
1.8.1.2
^ permalink raw reply related [flat|nested] 37+ messages in thread