[b42...@freescale.com: Re: [PATCH 1/3] dma: imx-sdma: Add ssi dual fifo script support]

2013-10-30 Thread Nicolin Chen
Just found that I missed Sascha's mail address in my TO list of last reply.
So resend it. And sorry for the duplicated mails.

- Forwarded message from Nicolin Chen b42...@freescale.com -

Date: Wed, 30 Oct 2013 12:48:48 +0800
From: Nicolin Chen b42...@freescale.com
Subject: Re: [PATCH 1/3] dma: imx-sdma: Add ssi dual fifo script support
User-Agent: Mutt/1.5.21 (2010-09-15)

Hi Sascha,

On Tue, Oct 29, 2013 at 02:51:43PM +0100, Sascha Hauer wrote:
 Look at drivers/dma/imx-sdma.c:
 
  /**
   * struct sdma_firmware_header - Layout of the firmware image
   *
   * @magic   SDMA
   * @version_major   increased whenever layout of struct
   * sdma_script_start_addrs
   *  changes.
 
 Can you image why this firmware has a version field? Right, it's because
 it encodes the layout of struct sdma_script_start_addrs.
 
 As the comment clearly states you have to *increase this field* when you
 add scripts.
 
 Obviously you missed that, as the firmware on lkml posted recently
 shows:
 
  : 414d4453 0001 0001 001c SDMA
  
  Still '1'
 
  0010: 0026 00b4 067a 0282 ...z...
  0020:     
  0030:     
  0040:   1a6a  j...
  0050: 02eb 18bb  0408 
  0060:  03c0   
  0070:  02ab  037b {...
  0080:   044c 046e L...n...
  0090:  1800   
  00a0:  1800 1862 1a16 b...
   ^
   new script addresses introduced
 
 
  -#define SDMA_SCRIPT_ADDRS_ARRAY_SIZE_V134
  +#define SDMA_SCRIPT_ADDRS_ARRAY_SIZE_V137
 
 And no, this is not a bug. It's your firmware header that is buggy.
 

I wasn't aware that the problem is far more complicated than I thought.
And thank you for telling me all this.

 What you need is:
 
 #define SDMA_SCRIPT_ADDRS_ARRAY_SIZE_V2  37
 
 You (you as a company, not you as a person) knew that it was me who
 created this firmware format. So it was absolutely unnecessary to create
 an incompatible firmware instead of dropping me a short note.
 
 Please add a version check to the driver as necessary and provide a proper
 firmware.
 

Just currently it's not easy for me to create a new proper firmware,
and I's been told that besides this version number, it also lacks a
decent license info. So may I just refine this patch as you suggested
to add a version check and add those new scripts first?

Thank you,
Nicolin Chen

 Sascha
 
 -- 
 Pengutronix e.K.   | |
 Industrial Linux Solutions | http://www.pengutronix.de/  |
 Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0|
 Amtsgericht Hildesheim, HRA 2686   | Fax:   +49-5121-206917- |
 

- End forwarded message -


___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev


[PATCH 1/3] dma: imx-sdma: Add ssi dual fifo script support

2013-10-29 Thread Nicolin Chen
There's a script for SSI missing in current sdma script list. Thus add it.
This script would allow SSI use its dual fifo mode to transimit/receive
data without occasional hardware underrun/overrun.

This patch also fixed a counting error for total number of scripts.

Signed-off-by: Nicolin Chen b42...@freescale.com
---
 Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt | 1 +
 drivers/dma/imx-sdma.c | 6 +-
 include/linux/platform_data/dma-imx-sdma.h | 2 ++
 include/linux/platform_data/dma-imx.h  | 1 +
 4 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt 
b/Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt
index 4fa814d..3b933c5 100644
--- a/Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt
+++ b/Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt
@@ -42,6 +42,7 @@ The full ID of peripheral types can be found below.
19  IPU Memory
20  ASRC
21  ESAI
+   22  SSI Dual FIFO
 
 The third cell specifies the transfer priority as below.
 
diff --git a/drivers/dma/imx-sdma.c b/drivers/dma/imx-sdma.c
index fc43603..695871f 100644
--- a/drivers/dma/imx-sdma.c
+++ b/drivers/dma/imx-sdma.c
@@ -724,6 +724,10 @@ static void sdma_get_pc(struct sdma_channel *sdmac,
per_2_emi = sdma-script_addrs-app_2_mcu_addr;
emi_2_per = sdma-script_addrs-mcu_2_app_addr;
break;
+   case IMX_DMATYPE_SSI_DUAL:
+   per_2_emi = sdma-script_addrs-ssish_2_mcu_addr;
+   emi_2_per = sdma-script_addrs-mcu_2_ssish_addr;
+   break;
case IMX_DMATYPE_SSI_SP:
case IMX_DMATYPE_MMC:
case IMX_DMATYPE_SDHC:
@@ -1237,7 +1241,7 @@ static void sdma_issue_pending(struct dma_chan *chan)
sdma_enable_channel(sdma, sdmac-channel);
 }
 
-#define SDMA_SCRIPT_ADDRS_ARRAY_SIZE_V134
+#define SDMA_SCRIPT_ADDRS_ARRAY_SIZE_V137
 
 static void sdma_add_scripts(struct sdma_engine *sdma,
const struct sdma_script_start_addrs *addr)
diff --git a/include/linux/platform_data/dma-imx-sdma.h 
b/include/linux/platform_data/dma-imx-sdma.h
index 3a39428..19cfa9a 100644
--- a/include/linux/platform_data/dma-imx-sdma.h
+++ b/include/linux/platform_data/dma-imx-sdma.h
@@ -43,6 +43,8 @@ struct sdma_script_start_addrs {
s32 dptc_dvfs_addr;
s32 utra_addr;
s32 ram_code_start_addr;
+   s32 mcu_2_ssish_addr;
+   s32 ssish_2_mcu_addr;
 };
 
 /**
diff --git a/include/linux/platform_data/dma-imx.h 
b/include/linux/platform_data/dma-imx.h
index beac6b8..bcbc6c3 100644
--- a/include/linux/platform_data/dma-imx.h
+++ b/include/linux/platform_data/dma-imx.h
@@ -39,6 +39,7 @@ enum sdma_peripheral_type {
IMX_DMATYPE_IPU_MEMORY, /* IPU Memory */
IMX_DMATYPE_ASRC,   /* ASRC */
IMX_DMATYPE_ESAI,   /* ESAI */
+   IMX_DMATYPE_SSI_DUAL,   /* SSI Dual FIFO */
 };
 
 enum imx_dma_prio {
-- 
1.8.4


___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev


Re: [PATCH 1/3] dma: imx-sdma: Add ssi dual fifo script support

2013-10-29 Thread Sascha Hauer
On Tue, Oct 29, 2013 at 08:33:15PM +0800, Nicolin Chen wrote:
 There's a script for SSI missing in current sdma script list. Thus add it.
 This script would allow SSI use its dual fifo mode to transimit/receive
 data without occasional hardware underrun/overrun.
 
 This patch also fixed a counting error for total number of scripts.

Look at drivers/dma/imx-sdma.c:

 /**
  * struct sdma_firmware_header - Layout of the firmware image
  *
  * @magic SDMA
  * @version_major increased whenever layout of struct
  * sdma_script_start_addrs
  *changes.

Can you image why this firmware has a version field? Right, it's because
it encodes the layout of struct sdma_script_start_addrs.

As the comment clearly states you have to *increase this field* when you
add scripts.

Obviously you missed that, as the firmware on lkml posted recently
shows:

 : 414d4453 0001 0001 001c SDMA
 
 Still '1'

 0010: 0026 00b4 067a 0282 ...z...
 0020:     
 0030:     
 0040:   1a6a  j...
 0050: 02eb 18bb  0408 
 0060:  03c0   
 0070:  02ab  037b {...
 0080:   044c 046e L...n...
 0090:  1800   
 00a0:  1800 1862 1a16 b...
  ^
  new script addresses introduced


 -#define SDMA_SCRIPT_ADDRS_ARRAY_SIZE_V1  34
 +#define SDMA_SCRIPT_ADDRS_ARRAY_SIZE_V1  37

And no, this is not a bug. It's your firmware header that is buggy.

What you need is:

#define SDMA_SCRIPT_ADDRS_ARRAY_SIZE_V2  37

You (you as a company, not you as a person) knew that it was me who
created this firmware format. So it was absolutely unnecessary to create
an incompatible firmware instead of dropping me a short note.

Please add a version check to the driver as necessary and provide a proper
firmware.

Sascha

-- 
Pengutronix e.K.   | |
Industrial Linux Solutions | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0|
Amtsgericht Hildesheim, HRA 2686   | Fax:   +49-5121-206917- |
___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev


Re: [PATCH 1/3] dma: imx-sdma: Add ssi dual fifo script support

2013-10-29 Thread Kumar Gala

On Oct 29, 2013, at 7:33 AM, Nicolin Chen wrote:

 There's a script for SSI missing in current sdma script list. Thus add it.
 This script would allow SSI use its dual fifo mode to transimit/receive
 data without occasional hardware underrun/overrun.
 
 This patch also fixed a counting error for total number of scripts.
 
 Signed-off-by: Nicolin Chen b42...@freescale.com
 ---
 Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt | 1 +
 drivers/dma/imx-sdma.c | 6 +-
 include/linux/platform_data/dma-imx-sdma.h | 2 ++
 include/linux/platform_data/dma-imx.h  | 1 +
 4 files changed, 9 insertions(+), 1 deletion(-)
 
 diff --git a/Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt 
 b/Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt
 index 4fa814d..3b933c5 100644
 --- a/Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt
 +++ b/Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt
 @@ -42,6 +42,7 @@ The full ID of peripheral types can be found below.
   19  IPU Memory
   20  ASRC
   21  ESAI
 + 22  SSI Dual FIFO
 
 The third cell specifies the transfer priority as below.

For the DT-Binding portion:

Acked-by: Kumar Gala ga...@codeaurora.org

- k

-- 
Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by 
The Linux Foundation

___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev


Re: [PATCH 1/3] dma: imx-sdma: Add ssi dual fifo script support

2013-10-29 Thread Nicolin Chen
Hi Sascha,

On Tue, Oct 29, 2013 at 02:51:43PM +0100, Sascha Hauer wrote:
 Look at drivers/dma/imx-sdma.c:
 
  /**
   * struct sdma_firmware_header - Layout of the firmware image
   *
   * @magic   SDMA
   * @version_major   increased whenever layout of struct
   * sdma_script_start_addrs
   *  changes.
 
 Can you image why this firmware has a version field? Right, it's because
 it encodes the layout of struct sdma_script_start_addrs.
 
 As the comment clearly states you have to *increase this field* when you
 add scripts.
 
 Obviously you missed that, as the firmware on lkml posted recently
 shows:
 
  : 414d4453 0001 0001 001c SDMA
  
  Still '1'
 
  0010: 0026 00b4 067a 0282 ...z...
  0020:     
  0030:     
  0040:   1a6a  j...
  0050: 02eb 18bb  0408 
  0060:  03c0   
  0070:  02ab  037b {...
  0080:   044c 046e L...n...
  0090:  1800   
  00a0:  1800 1862 1a16 b...
   ^
   new script addresses introduced
 
 
  -#define SDMA_SCRIPT_ADDRS_ARRAY_SIZE_V134
  +#define SDMA_SCRIPT_ADDRS_ARRAY_SIZE_V137
 
 And no, this is not a bug. It's your firmware header that is buggy.
 

I wasn't aware that the problem is far more complicated than I thought.
And thank you for telling me all this.

 What you need is:
 
 #define SDMA_SCRIPT_ADDRS_ARRAY_SIZE_V2  37
 
 You (you as a company, not you as a person) knew that it was me who
 created this firmware format. So it was absolutely unnecessary to create
 an incompatible firmware instead of dropping me a short note.
 
 Please add a version check to the driver as necessary and provide a proper
 firmware.
 

Just currently it's not easy for me to create a new proper firmware,
and I's been told that besides this version number, it also lacks a
decent license info. So may I just refine this patch as you suggested
to add a version check and add those new scripts first?

Thank you,
Nicolin Chen

 Sascha
 
 -- 
 Pengutronix e.K.   | |
 Industrial Linux Solutions | http://www.pengutronix.de/  |
 Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0|
 Amtsgericht Hildesheim, HRA 2686   | Fax:   +49-5121-206917- |
 


___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev