summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorQuinn Jensen <quinn.jensen@freescale.com>2007-05-24 18:12:30 -0600
committerQuinn Jensen <quinn.jensen@freescale.com>2007-05-24 18:12:30 -0600
commit36287b02d82df5d2e306372389415b0f3cdcd93c (patch)
tree95f3555f425dffb7c4104024b252366c3bff6cf5 /drivers
parenta2ccb237fb784628585834ef0468838b25edb126 (diff)
CR ENGR00028660: Retain SDMA workaround removed by ENGR00028231
Description: Reversing the earlier patch beause the new SDMA scripts do not solve the issue completely, and the existing workaround is still required. http://www.bitshrine.org/gpp/linux-2.6.19.2-mx-remove_wfi_workaround.patch
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/irda/mxc_ir.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/net/irda/mxc_ir.c b/drivers/net/irda/mxc_ir.c
index 3c932d717d08..763c0f0bf064 100644
--- a/drivers/net/irda/mxc_ir.c
+++ b/drivers/net/irda/mxc_ir.c
@@ -908,12 +908,15 @@ static int mxc_irda_hard_xmit(struct sk_buff *skb, struct net_device *dev)
} else {
unsigned int mtt = irda_get_mtt(skb);
unsigned char *p = skb->data;
+ unsigned int skb_len = skb->len;
#ifdef FIRI_SDMA_TX
mxc_dma_requestbuf_t dma_request;
#else
unsigned int i, sr;
#endif
+ skb_len = skb_len + ((4 - (skb_len % 4)) % 4);
+
if (si->txskb) {
BUG();
}
@@ -940,11 +943,11 @@ static int mxc_irda_hard_xmit(struct sk_buff *skb, struct net_device *dev)
* Number of bytes in SK buffer to transfer and Transfer complete
* callback function.
*/
- si->dma_tx_buff_len = skb->len;
+ si->dma_tx_buff_len = skb_len;
si->dma_tx_buff_phy =
- dma_map_single(si->dev, p, skb->len, DMA_TO_DEVICE);
+ dma_map_single(si->dev, p, skb_len, DMA_TO_DEVICE);
- dma_request.num_of_bytes = skb->len;
+ dma_request.num_of_bytes = skb_len;
dma_request.dst_addr = si->firi_res->start + FIRITXFIFO;
dma_request.src_addr = si->dma_tx_buff_phy;