Re: [PATCH v3 7/7] crypto: omap_sham: Remove usage of private DMA API

2012-11-16 Thread Mark A. Greer
On Wed, Nov 14, 2012 at 09:47:55AM -0700, Mark A. Greer wrote:
 On Tue, Nov 13, 2012 at 11:47:57PM -0800, Kasatkin, Dmitry wrote:
  On Fri, Nov 9, 2012 at 9:17 AM, Mark A. Greer mgr...@animalcreek.com 
  wrote:
   On Fri, Nov 09, 2012 at 06:28:16PM +0200, Kasatkin, Dmitry wrote:
   On Wed, Nov 7, 2012 at 4:57 AM, Mark A. Greer mgr...@animalcreek.com 
   wrote:
From: Mark A. Greer mgr...@animalcreek.com
   
Remove usage of the private OMAP DMA API.
The dmaengine API will be used instead.
   
CC: Russell King rmk+ker...@arm.linux.org.uk
CC: Dmitry Kasatkin dmitry.kasat...@intel.com
Signed-off-by: Mark A. Greer mgr...@animalcreek.com
---
 drivers/crypto/omap-sham.c | 117 
-
 1 file changed, 117 deletions(-)
   
diff --git a/drivers/crypto/omap-sham.c b/drivers/crypto/omap-sham.c
index b57277c..ebb5255 100644
--- a/drivers/crypto/omap-sham.c
+++ b/drivers/crypto/omap-sham.c
  
@@ -807,18 +762,6 @@ static int omap_sham_handle_queue(struct 
omap_sham_dev *dd,
if (err)
goto err1;
   
-#ifdef OMAP_SHAM_DMA_PRIVATE
-   omap_set_dma_dest_params(dd-dma_lch, 0,
-   OMAP_DMA_AMODE_CONSTANT,
-   dd-phys_base + SHA_REG_DIN(0), 0, 16);
-
-   omap_set_dma_dest_burst_mode(dd-dma_lch,
-   OMAP_DMA_DATA_BURST_16);
-
-   omap_set_dma_src_burst_mode(dd-dma_lch,
-   OMAP_DMA_DATA_BURST_4);
  
   Burst mode significantly improves performance.
   How do you configure burst mode with new API?
  
   This is (or should be) taken care of by the dmaengine infrastructure.
   I've noted that there's an issue and there is a discussion about it
   here:
  
   http://www.spinics.net/lists/linux-omap/msg79855.html
  
   We probably need to extend the dmaengine API to allow API-users to
   request specific tweaks/optimizations/whatever but that's MHO.
  
  
  Hello,
  
  I am in favor of new APIs.
  The only my concern is that it performs worse..
  
  Is it possible to keep burst mode setting there?
 
 I'm going to respin the patch the I posted in the email thread above
 to only set bursting for non-cyclic DMAs.

Just sent.  Should be in your inbox shortly.

Mark
--
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v3 7/7] crypto: omap_sham: Remove usage of private DMA API

2012-11-14 Thread Mark A. Greer
On Tue, Nov 13, 2012 at 11:47:57PM -0800, Kasatkin, Dmitry wrote:
 On Fri, Nov 9, 2012 at 9:17 AM, Mark A. Greer mgr...@animalcreek.com wrote:
  On Fri, Nov 09, 2012 at 06:28:16PM +0200, Kasatkin, Dmitry wrote:
  On Wed, Nov 7, 2012 at 4:57 AM, Mark A. Greer mgr...@animalcreek.com 
  wrote:
   From: Mark A. Greer mgr...@animalcreek.com
  
   Remove usage of the private OMAP DMA API.
   The dmaengine API will be used instead.
  
   CC: Russell King rmk+ker...@arm.linux.org.uk
   CC: Dmitry Kasatkin dmitry.kasat...@intel.com
   Signed-off-by: Mark A. Greer mgr...@animalcreek.com
   ---
drivers/crypto/omap-sham.c | 117 
   -
1 file changed, 117 deletions(-)
  
   diff --git a/drivers/crypto/omap-sham.c b/drivers/crypto/omap-sham.c
   index b57277c..ebb5255 100644
   --- a/drivers/crypto/omap-sham.c
   +++ b/drivers/crypto/omap-sham.c
 
   @@ -807,18 +762,6 @@ static int omap_sham_handle_queue(struct 
   omap_sham_dev *dd,
   if (err)
   goto err1;
  
   -#ifdef OMAP_SHAM_DMA_PRIVATE
   -   omap_set_dma_dest_params(dd-dma_lch, 0,
   -   OMAP_DMA_AMODE_CONSTANT,
   -   dd-phys_base + SHA_REG_DIN(0), 0, 16);
   -
   -   omap_set_dma_dest_burst_mode(dd-dma_lch,
   -   OMAP_DMA_DATA_BURST_16);
   -
   -   omap_set_dma_src_burst_mode(dd-dma_lch,
   -   OMAP_DMA_DATA_BURST_4);
 
  Burst mode significantly improves performance.
  How do you configure burst mode with new API?
 
  This is (or should be) taken care of by the dmaengine infrastructure.
  I've noted that there's an issue and there is a discussion about it
  here:
 
  http://www.spinics.net/lists/linux-omap/msg79855.html
 
  We probably need to extend the dmaengine API to allow API-users to
  request specific tweaks/optimizations/whatever but that's MHO.
 
 
 Hello,
 
 I am in favor of new APIs.
 The only my concern is that it performs worse..
 
 Is it possible to keep burst mode setting there?

I'm going to respin the patch the I posted in the email thread above
to only set bursting for non-cyclic DMAs.

Mark
--
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v3 7/7] crypto: omap_sham: Remove usage of private DMA API

2012-11-13 Thread Kasatkin, Dmitry
On Fri, Nov 9, 2012 at 9:17 AM, Mark A. Greer mgr...@animalcreek.com wrote:
 On Fri, Nov 09, 2012 at 06:28:16PM +0200, Kasatkin, Dmitry wrote:
 On Wed, Nov 7, 2012 at 4:57 AM, Mark A. Greer mgr...@animalcreek.com wrote:
  From: Mark A. Greer mgr...@animalcreek.com
 
  Remove usage of the private OMAP DMA API.
  The dmaengine API will be used instead.
 
  CC: Russell King rmk+ker...@arm.linux.org.uk
  CC: Dmitry Kasatkin dmitry.kasat...@intel.com
  Signed-off-by: Mark A. Greer mgr...@animalcreek.com
  ---
   drivers/crypto/omap-sham.c | 117 
  -
   1 file changed, 117 deletions(-)
 
  diff --git a/drivers/crypto/omap-sham.c b/drivers/crypto/omap-sham.c
  index b57277c..ebb5255 100644
  --- a/drivers/crypto/omap-sham.c
  +++ b/drivers/crypto/omap-sham.c

  @@ -807,18 +762,6 @@ static int omap_sham_handle_queue(struct 
  omap_sham_dev *dd,
  if (err)
  goto err1;
 
  -#ifdef OMAP_SHAM_DMA_PRIVATE
  -   omap_set_dma_dest_params(dd-dma_lch, 0,
  -   OMAP_DMA_AMODE_CONSTANT,
  -   dd-phys_base + SHA_REG_DIN(0), 0, 16);
  -
  -   omap_set_dma_dest_burst_mode(dd-dma_lch,
  -   OMAP_DMA_DATA_BURST_16);
  -
  -   omap_set_dma_src_burst_mode(dd-dma_lch,
  -   OMAP_DMA_DATA_BURST_4);

 Burst mode significantly improves performance.
 How do you configure burst mode with new API?

 This is (or should be) taken care of by the dmaengine infrastructure.
 I've noted that there's an issue and there is a discussion about it
 here:

 http://www.spinics.net/lists/linux-omap/msg79855.html

 We probably need to extend the dmaengine API to allow API-users to
 request specific tweaks/optimizations/whatever but that's MHO.


Hello,

I am in favor of new APIs.
The only my concern is that it performs worse..

Is it possible to keep burst mode setting there?

- Dmitry

 Mark
 --
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v3 7/7] crypto: omap_sham: Remove usage of private DMA API

2012-11-09 Thread Kasatkin, Dmitry
On Wed, Nov 7, 2012 at 4:57 AM, Mark A. Greer mgr...@animalcreek.com wrote:
 From: Mark A. Greer mgr...@animalcreek.com

 Remove usage of the private OMAP DMA API.
 The dmaengine API will be used instead.

 CC: Russell King rmk+ker...@arm.linux.org.uk
 CC: Dmitry Kasatkin dmitry.kasat...@intel.com
 Signed-off-by: Mark A. Greer mgr...@animalcreek.com
 ---
  drivers/crypto/omap-sham.c | 117 
 -
  1 file changed, 117 deletions(-)

 diff --git a/drivers/crypto/omap-sham.c b/drivers/crypto/omap-sham.c
 index b57277c..ebb5255 100644
 --- a/drivers/crypto/omap-sham.c
 +++ b/drivers/crypto/omap-sham.c
 @@ -13,8 +13,6 @@
   * Some ideas are from old omap-sha1-md5.c driver.
   */

 -#define OMAP_SHAM_DMA_PRIVATE
 -
  #define pr_fmt(fmt) %s:  fmt, __func__

  #include linux/err.h
 @@ -29,10 +27,8 @@
  #include linux/platform_device.h
  #include linux/scatterlist.h
  #include linux/dma-mapping.h
 -#ifndef OMAP_SHAM_DMA_PRIVATE
  #include linux/dmaengine.h
  #include linux/omap-dma.h
 -#endif
  #include linux/pm_runtime.h
  #include linux/delay.h
  #include linux/crypto.h
 @@ -43,12 +39,6 @@
  #include crypto/hash.h
  #include crypto/internal/hash.h

 -#ifdef OMAP_SHAM_DMA_PRIVATE
 -#include plat/cpu.h
 -#include plat/dma.h
 -#include mach/irqs.h
 -#endif
 -
  #define SHA_REG_DIGEST(x)  (0x00 + ((x) * 0x04))
  #define SHA_REG_DIN(x) (0x1C + ((x) * 0x04))

 @@ -120,9 +110,7 @@ struct omap_sham_reqctx {

 /* walk state */
 struct scatterlist  *sg;
 -#ifndef OMAP_SHAM_DMA_PRIVATE
 struct scatterlist  sgl;
 -#endif
 unsigned intoffset; /* offset in current sg */
 unsigned inttotal;  /* total request */

 @@ -156,12 +144,7 @@ struct omap_sham_dev {
 int irq;
 spinlock_t  lock;
 int err;
 -#ifdef OMAP_SHAM_DMA_PRIVATE
 -   int dma;
 -   int dma_lch;
 -#else
 struct dma_chan *dma_lch;
 -#endif
 struct tasklet_struct   done_task;

 unsigned long   flags;
 @@ -331,7 +314,6 @@ static int omap_sham_xmit_cpu(struct omap_sham_dev *dd, 
 const u8 *buf,
 return -EINPROGRESS;
  }

 -#ifndef OMAP_SHAM_DMA_PRIVATE
  static void omap_sham_dma_callback(void *param)
  {
 struct omap_sham_dev *dd = param;
 @@ -339,34 +321,18 @@ static void omap_sham_dma_callback(void *param)
 set_bit(FLAGS_DMA_READY, dd-flags);
 tasklet_schedule(dd-done_task);
  }
 -#endif

  static int omap_sham_xmit_dma(struct omap_sham_dev *dd, dma_addr_t dma_addr,
   size_t length, int final, int is_sg)
  {
 struct omap_sham_reqctx *ctx = ahash_request_ctx(dd-req);
 -#ifdef OMAP_SHAM_DMA_PRIVATE
 -   int len32;
 -#else
 struct dma_async_tx_descriptor *tx;
 struct dma_slave_config cfg;
 int ret;
 -#endif

 dev_dbg(dd-dev, xmit_dma: digcnt: %d, length: %d, final: %d\n,
 ctx-digcnt, length, final);

 -#ifdef OMAP_SHAM_DMA_PRIVATE
 -   len32 = DIV_ROUND_UP(length, sizeof(u32));
 -
 -   omap_set_dma_transfer_params(dd-dma_lch, OMAP_DMA_DATA_TYPE_S32, 
 len32,
 -   1, OMAP_DMA_SYNC_PACKET, dd-dma,
 -   OMAP_DMA_DST_SYNC_PREFETCH);
 -
 -   omap_set_dma_src_params(dd-dma_lch, 0, OMAP_DMA_AMODE_POST_INC,
 -   dma_addr, 0, 0);
 -
 -#else
 memset(cfg, 0, sizeof(cfg));

 cfg.dst_addr = dd-phys_base + SHA_REG_DIN(0);
 @@ -406,7 +372,6 @@ static int omap_sham_xmit_dma(struct omap_sham_dev *dd, 
 dma_addr_t dma_addr,

 tx-callback = omap_sham_dma_callback;
 tx-callback_param = dd;
 -#endif

 omap_sham_write_ctrl(dd, length, final, 1);

 @@ -417,12 +382,8 @@ static int omap_sham_xmit_dma(struct omap_sham_dev *dd, 
 dma_addr_t dma_addr,

 set_bit(FLAGS_DMA_ACTIVE, dd-flags);

 -#ifdef OMAP_SHAM_DMA_PRIVATE
 -   omap_start_dma(dd-dma_lch);
 -#else
 dmaengine_submit(tx);
 dma_async_issue_pending(dd-dma_lch);
 -#endif

 return -EINPROGRESS;
  }
 @@ -528,7 +489,6 @@ static int omap_sham_update_dma_start(struct 
 omap_sham_dev *dd)
 if (ctx-bufcnt || ctx-offset)
 return omap_sham_update_dma_slow(dd);

 -#ifndef OMAP_SHAM_DMA_PRIVATE
 /*
  * Don't use the sg interface when the transfer size is less
  * than the number of elements in a DMA frame.  Otherwise,
 @@ -537,7 +497,6 @@ static int omap_sham_update_dma_start(struct 
 omap_sham_dev *dd)
  */
 if (ctx-total  (DST_MAXBURST * sizeof(u32)))
 return omap_sham_update_dma_slow(dd);
 -#endif

 dev_dbg(dd-dev, fast: digcnt: %d, bufcnt: %u, total: %u\n,
 ctx-digcnt, ctx-bufcnt, ctx-total);
 @@ -599,11 +558,7 @@ static int 

Re: [PATCH v3 7/7] crypto: omap_sham: Remove usage of private DMA API

2012-11-09 Thread Mark A. Greer
On Fri, Nov 09, 2012 at 06:28:16PM +0200, Kasatkin, Dmitry wrote:
 On Wed, Nov 7, 2012 at 4:57 AM, Mark A. Greer mgr...@animalcreek.com wrote:
  From: Mark A. Greer mgr...@animalcreek.com
 
  Remove usage of the private OMAP DMA API.
  The dmaengine API will be used instead.
 
  CC: Russell King rmk+ker...@arm.linux.org.uk
  CC: Dmitry Kasatkin dmitry.kasat...@intel.com
  Signed-off-by: Mark A. Greer mgr...@animalcreek.com
  ---
   drivers/crypto/omap-sham.c | 117 
  -
   1 file changed, 117 deletions(-)
 
  diff --git a/drivers/crypto/omap-sham.c b/drivers/crypto/omap-sham.c
  index b57277c..ebb5255 100644
  --- a/drivers/crypto/omap-sham.c
  +++ b/drivers/crypto/omap-sham.c

  @@ -807,18 +762,6 @@ static int omap_sham_handle_queue(struct omap_sham_dev 
  *dd,
  if (err)
  goto err1;
 
  -#ifdef OMAP_SHAM_DMA_PRIVATE
  -   omap_set_dma_dest_params(dd-dma_lch, 0,
  -   OMAP_DMA_AMODE_CONSTANT,
  -   dd-phys_base + SHA_REG_DIN(0), 0, 16);
  -
  -   omap_set_dma_dest_burst_mode(dd-dma_lch,
  -   OMAP_DMA_DATA_BURST_16);
  -
  -   omap_set_dma_src_burst_mode(dd-dma_lch,
  -   OMAP_DMA_DATA_BURST_4);
 
 Burst mode significantly improves performance.
 How do you configure burst mode with new API?

This is (or should be) taken care of by the dmaengine infrastructure.
I've noted that there's an issue and there is a discussion about it
here:

http://www.spinics.net/lists/linux-omap/msg79855.html

We probably need to extend the dmaengine API to allow API-users to
request specific tweaks/optimizations/whatever but that's MHO.

Mark
--
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH v3 7/7] crypto: omap_sham: Remove usage of private DMA API

2012-11-06 Thread Mark A. Greer
From: Mark A. Greer mgr...@animalcreek.com

Remove usage of the private OMAP DMA API.
The dmaengine API will be used instead.

CC: Russell King rmk+ker...@arm.linux.org.uk
CC: Dmitry Kasatkin dmitry.kasat...@intel.com
Signed-off-by: Mark A. Greer mgr...@animalcreek.com
---
 drivers/crypto/omap-sham.c | 117 -
 1 file changed, 117 deletions(-)

diff --git a/drivers/crypto/omap-sham.c b/drivers/crypto/omap-sham.c
index b57277c..ebb5255 100644
--- a/drivers/crypto/omap-sham.c
+++ b/drivers/crypto/omap-sham.c
@@ -13,8 +13,6 @@
  * Some ideas are from old omap-sha1-md5.c driver.
  */
 
-#define OMAP_SHAM_DMA_PRIVATE
-
 #define pr_fmt(fmt) %s:  fmt, __func__
 
 #include linux/err.h
@@ -29,10 +27,8 @@
 #include linux/platform_device.h
 #include linux/scatterlist.h
 #include linux/dma-mapping.h
-#ifndef OMAP_SHAM_DMA_PRIVATE
 #include linux/dmaengine.h
 #include linux/omap-dma.h
-#endif
 #include linux/pm_runtime.h
 #include linux/delay.h
 #include linux/crypto.h
@@ -43,12 +39,6 @@
 #include crypto/hash.h
 #include crypto/internal/hash.h
 
-#ifdef OMAP_SHAM_DMA_PRIVATE
-#include plat/cpu.h
-#include plat/dma.h
-#include mach/irqs.h
-#endif
-
 #define SHA_REG_DIGEST(x)  (0x00 + ((x) * 0x04))
 #define SHA_REG_DIN(x) (0x1C + ((x) * 0x04))
 
@@ -120,9 +110,7 @@ struct omap_sham_reqctx {
 
/* walk state */
struct scatterlist  *sg;
-#ifndef OMAP_SHAM_DMA_PRIVATE
struct scatterlist  sgl;
-#endif
unsigned intoffset; /* offset in current sg */
unsigned inttotal;  /* total request */
 
@@ -156,12 +144,7 @@ struct omap_sham_dev {
int irq;
spinlock_t  lock;
int err;
-#ifdef OMAP_SHAM_DMA_PRIVATE
-   int dma;
-   int dma_lch;
-#else
struct dma_chan *dma_lch;
-#endif
struct tasklet_struct   done_task;
 
unsigned long   flags;
@@ -331,7 +314,6 @@ static int omap_sham_xmit_cpu(struct omap_sham_dev *dd, 
const u8 *buf,
return -EINPROGRESS;
 }
 
-#ifndef OMAP_SHAM_DMA_PRIVATE
 static void omap_sham_dma_callback(void *param)
 {
struct omap_sham_dev *dd = param;
@@ -339,34 +321,18 @@ static void omap_sham_dma_callback(void *param)
set_bit(FLAGS_DMA_READY, dd-flags);
tasklet_schedule(dd-done_task);
 }
-#endif
 
 static int omap_sham_xmit_dma(struct omap_sham_dev *dd, dma_addr_t dma_addr,
  size_t length, int final, int is_sg)
 {
struct omap_sham_reqctx *ctx = ahash_request_ctx(dd-req);
-#ifdef OMAP_SHAM_DMA_PRIVATE
-   int len32;
-#else
struct dma_async_tx_descriptor *tx;
struct dma_slave_config cfg;
int ret;
-#endif
 
dev_dbg(dd-dev, xmit_dma: digcnt: %d, length: %d, final: %d\n,
ctx-digcnt, length, final);
 
-#ifdef OMAP_SHAM_DMA_PRIVATE
-   len32 = DIV_ROUND_UP(length, sizeof(u32));
-
-   omap_set_dma_transfer_params(dd-dma_lch, OMAP_DMA_DATA_TYPE_S32, len32,
-   1, OMAP_DMA_SYNC_PACKET, dd-dma,
-   OMAP_DMA_DST_SYNC_PREFETCH);
-
-   omap_set_dma_src_params(dd-dma_lch, 0, OMAP_DMA_AMODE_POST_INC,
-   dma_addr, 0, 0);
-
-#else
memset(cfg, 0, sizeof(cfg));
 
cfg.dst_addr = dd-phys_base + SHA_REG_DIN(0);
@@ -406,7 +372,6 @@ static int omap_sham_xmit_dma(struct omap_sham_dev *dd, 
dma_addr_t dma_addr,
 
tx-callback = omap_sham_dma_callback;
tx-callback_param = dd;
-#endif
 
omap_sham_write_ctrl(dd, length, final, 1);
 
@@ -417,12 +382,8 @@ static int omap_sham_xmit_dma(struct omap_sham_dev *dd, 
dma_addr_t dma_addr,
 
set_bit(FLAGS_DMA_ACTIVE, dd-flags);
 
-#ifdef OMAP_SHAM_DMA_PRIVATE
-   omap_start_dma(dd-dma_lch);
-#else
dmaengine_submit(tx);
dma_async_issue_pending(dd-dma_lch);
-#endif
 
return -EINPROGRESS;
 }
@@ -528,7 +489,6 @@ static int omap_sham_update_dma_start(struct omap_sham_dev 
*dd)
if (ctx-bufcnt || ctx-offset)
return omap_sham_update_dma_slow(dd);
 
-#ifndef OMAP_SHAM_DMA_PRIVATE
/*
 * Don't use the sg interface when the transfer size is less
 * than the number of elements in a DMA frame.  Otherwise,
@@ -537,7 +497,6 @@ static int omap_sham_update_dma_start(struct omap_sham_dev 
*dd)
 */
if (ctx-total  (DST_MAXBURST * sizeof(u32)))
return omap_sham_update_dma_slow(dd);
-#endif
 
dev_dbg(dd-dev, fast: digcnt: %d, bufcnt: %u, total: %u\n,
ctx-digcnt, ctx-bufcnt, ctx-total);
@@ -599,11 +558,7 @@ static int omap_sham_update_dma_stop(struct omap_sham_dev 
*dd)
 {
struct omap_sham_reqctx *ctx = ahash_request_ctx(dd-req);
 
-#ifdef OMAP_SHAM_DMA_PRIVATE
-   omap_stop_dma(dd-dma_lch);
-#else