[PATCH 1/2] driver: irda support 3430

2008-07-03 Thread Girish. S. G.
Irda driver changes to support on 3430

Signed-off-by: Girish S G [EMAIL PROTECTED]
---
 drivers/net/irda/omap-ir.c |   14 +++---
 1 files changed, 11 insertions(+), 3 deletions(-)

Index: linux-omap-2.6_today/drivers/net/irda/omap-ir.c
===
--- linux-omap-2.6_today.orig/drivers/net/irda/omap-ir.c2008-07-03
10:33:57.0 +0530
+++ linux-omap-2.6_today/drivers/net/irda/omap-ir.c 2008-07-03
10:35:30.0 +0530
@@ -217,7 +217,7 @@
struct net_device *dev = data;
struct omap_irda *omap_ir = netdev_priv(dev);

-   /*Stop DMA controller */
+   /* Stop DMA controller */
omap_stop_dma(omap_ir-tx_dma_channel);
 }

@@ -378,8 +378,12 @@

skb_reserve(skb, 1);

-   w = omap_get_dma_dst_pos(omap_ir-rx_dma_channel) -
-   omap_ir-rx_buf_dma_phys;
+   w = OMAP_DMA4_CDAC(omap_ir-rx_dma_channel);
+
+   if (cpu_is_omap16xx())
+   w -= OMAP1_DMA_CDSA_L(omap_ir-rx_dma_channel);
+   if (cpu_is_omap24xx() || cpu_is_omap34xx())
+   w -= OMAP_DMA4_CDSA(omap_ir-rx_dma_channel);

if (!IS_FIR(omap_ir))
/* Copy DMA buffer to skb */
@@ -604,6 +608,8 @@
 err_irlap:
omap_ir-open = 0;
omap_irda_shutdown(omap_ir);
+   if (omap_ir-pdata-select_irda)
+   omap_ir-pdata-select_irda(omap_ir-dev, ~IR_SEL);
 err_startup:
dma_free_coherent(NULL, IRDA_SIR_MAX_FRAME,
omap_ir-tx_buf_dma_virt, omap_ir-tx_buf_dma_phys);
@@ -636,6 +642,8 @@
omap_ir-tx_buf_dma_phys);

omap_irda_shutdown(omap_ir);
+   if (omap_ir-pdata-select_irda)
+   omap_ir-pdata-select_irda(omap_ir-dev, ~IR_SEL);

/* Stop IrLAP */
if (omap_ir-irlap) {

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


Re: [PATCH 1/2] driver: irda support 3430

2008-07-03 Thread Tony Lindgren
Hi,

* Girish. S. G. [EMAIL PROTECTED] [080703 11:10]:
 Irda driver changes to support on 3430
 
 Signed-off-by: Girish S G [EMAIL PROTECTED]
 ---
  drivers/net/irda/omap-ir.c |   14 +++---
  1 files changed, 11 insertions(+), 3 deletions(-)
 
 Index: linux-omap-2.6_today/drivers/net/irda/omap-ir.c
 ===
 --- linux-omap-2.6_today.orig/drivers/net/irda/omap-ir.c  2008-07-03
 10:33:57.0 +0530
 +++ linux-omap-2.6_today/drivers/net/irda/omap-ir.c   2008-07-03
 10:35:30.0 +0530
 @@ -217,7 +217,7 @@
   struct net_device *dev = data;
   struct omap_irda *omap_ir = netdev_priv(dev);
 
 - /*Stop DMA controller */
 + /* Stop DMA controller */
   omap_stop_dma(omap_ir-tx_dma_channel);
  }
 
 @@ -378,8 +378,12 @@
 
   skb_reserve(skb, 1);
 
 - w = omap_get_dma_dst_pos(omap_ir-rx_dma_channel) -
 - omap_ir-rx_buf_dma_phys;
 + w = OMAP_DMA4_CDAC(omap_ir-rx_dma_channel);
 +
 + if (cpu_is_omap16xx())
 + w -= OMAP1_DMA_CDSA_L(omap_ir-rx_dma_channel);
 + if (cpu_is_omap24xx() || cpu_is_omap34xx())
 + w -= OMAP_DMA4_CDSA(omap_ir-rx_dma_channel);
 
   if (!IS_FIR(omap_ir))
   /* Copy DMA buffer to skb */

Let's not tinker with the DMA registers again directly just as I
thought I got all that clean-up a bit! :)

Can you rather use the exported functions? If something is missing,
let's add it. But in the above case omap_set_dma_dest_params() and
omap_set_dma_src_params() should work I believe.

Regards,

Tony


 @@ -604,6 +608,8 @@
  err_irlap:
   omap_ir-open = 0;
   omap_irda_shutdown(omap_ir);
 + if (omap_ir-pdata-select_irda)
 + omap_ir-pdata-select_irda(omap_ir-dev, ~IR_SEL);
  err_startup:
   dma_free_coherent(NULL, IRDA_SIR_MAX_FRAME,
   omap_ir-tx_buf_dma_virt, omap_ir-tx_buf_dma_phys);
 @@ -636,6 +642,8 @@
   omap_ir-tx_buf_dma_phys);
 
   omap_irda_shutdown(omap_ir);
 + if (omap_ir-pdata-select_irda)
 + omap_ir-pdata-select_irda(omap_ir-dev, ~IR_SEL);
 
   /* Stop IrLAP */
   if (omap_ir-irlap) {
 
 --
 To unsubscribe from this list: send the line unsubscribe linux-omap in
 the body of a message to [EMAIL PROTECTED]
 More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html