diff options
-rw-r--r-- | drivers/net/irda/w83977af_ir.c | 33 |
1 files changed, 4 insertions, 29 deletions
diff --git a/drivers/net/irda/w83977af_ir.c b/drivers/net/irda/w83977af_ir.c index e641bb240362..11dbdf36d9c1 100644 --- a/drivers/net/irda/w83977af_ir.c +++ b/drivers/net/irda/w83977af_ir.c | |||
@@ -62,10 +62,6 @@ | |||
62 | #include "w83977af.h" | 62 | #include "w83977af.h" |
63 | #include "w83977af_ir.h" | 63 | #include "w83977af_ir.h" |
64 | 64 | ||
65 | #ifdef CONFIG_ARCH_NETWINDER /* Adjust to NetWinder differences */ | ||
66 | #undef CONFIG_NETWINDER_TX_DMA_PROBLEMS /* Not needed */ | ||
67 | #define CONFIG_NETWINDER_RX_DMA_PROBLEMS /* Must have this one! */ | ||
68 | #endif | ||
69 | #define CONFIG_USE_W977_PNP /* Currently needed */ | 65 | #define CONFIG_USE_W977_PNP /* Currently needed */ |
70 | #define PIO_MAX_SPEED 115200 | 66 | #define PIO_MAX_SPEED 115200 |
71 | 67 | ||
@@ -332,7 +328,7 @@ static int w83977af_probe(int iobase, int irq, int dma) | |||
332 | w977_write_reg(0x74, dma+1, efbase[i]); | 328 | w977_write_reg(0x74, dma+1, efbase[i]); |
333 | #else | 329 | #else |
334 | w977_write_reg(0x74, dma, efbase[i]); | 330 | w977_write_reg(0x74, dma, efbase[i]); |
335 | #endif /*CONFIG_ARCH_NETWINDER */ | 331 | #endif /* CONFIG_ARCH_NETWINDER */ |
336 | w977_write_reg(0x75, 0x04, efbase[i]); /* Disable Tx DMA */ | 332 | w977_write_reg(0x75, 0x04, efbase[i]); /* Disable Tx DMA */ |
337 | 333 | ||
338 | /* Set append hardware CRC, enable IR bank selection */ | 334 | /* Set append hardware CRC, enable IR bank selection */ |
@@ -563,10 +559,6 @@ static netdev_tx_t w83977af_hard_xmit(struct sk_buff *skb, | |||
563 | static void w83977af_dma_write(struct w83977af_ir *self, int iobase) | 559 | static void w83977af_dma_write(struct w83977af_ir *self, int iobase) |
564 | { | 560 | { |
565 | __u8 set; | 561 | __u8 set; |
566 | #ifdef CONFIG_NETWINDER_TX_DMA_PROBLEMS | ||
567 | unsigned long flags; | ||
568 | __u8 hcr; | ||
569 | #endif | ||
570 | IRDA_DEBUG(4, "%s(), len=%d\n", __func__ , self->tx_buff.len); | 562 | IRDA_DEBUG(4, "%s(), len=%d\n", __func__ , self->tx_buff.len); |
571 | 563 | ||
572 | /* Save current set */ | 564 | /* Save current set */ |
@@ -579,30 +571,13 @@ static void w83977af_dma_write(struct w83977af_ir *self, int iobase) | |||
579 | /* Choose transmit DMA channel */ | 571 | /* Choose transmit DMA channel */ |
580 | switch_bank(iobase, SET2); | 572 | switch_bank(iobase, SET2); |
581 | outb(ADCR1_D_CHSW|/*ADCR1_DMA_F|*/ADCR1_ADV_SL, iobase+ADCR1); | 573 | outb(ADCR1_D_CHSW|/*ADCR1_DMA_F|*/ADCR1_ADV_SL, iobase+ADCR1); |
582 | #ifdef CONFIG_NETWINDER_TX_DMA_PROBLEMS | ||
583 | spin_lock_irqsave(&self->lock, flags); | ||
584 | |||
585 | disable_dma(self->io.dma); | ||
586 | clear_dma_ff(self->io.dma); | ||
587 | set_dma_mode(self->io.dma, DMA_MODE_READ); | ||
588 | set_dma_addr(self->io.dma, self->tx_buff_dma); | ||
589 | set_dma_count(self->io.dma, self->tx_buff.len); | ||
590 | #else | ||
591 | irda_setup_dma(self->io.dma, self->tx_buff_dma, self->tx_buff.len, | 574 | irda_setup_dma(self->io.dma, self->tx_buff_dma, self->tx_buff.len, |
592 | DMA_MODE_WRITE); | 575 | DMA_MODE_WRITE); |
593 | #endif | ||
594 | self->io.direction = IO_XMIT; | 576 | self->io.direction = IO_XMIT; |
595 | 577 | ||
596 | /* Enable DMA */ | 578 | /* Enable DMA */ |
597 | switch_bank(iobase, SET0); | 579 | switch_bank(iobase, SET0); |
598 | #ifdef CONFIG_NETWINDER_TX_DMA_PROBLEMS | ||
599 | hcr = inb(iobase+HCR); | ||
600 | outb(hcr | HCR_EN_DMA, iobase+HCR); | ||
601 | enable_dma(self->io.dma); | ||
602 | spin_unlock_irqrestore(&self->lock, flags); | ||
603 | #else | ||
604 | outb(inb(iobase+HCR) | HCR_EN_DMA | HCR_TX_WT, iobase+HCR); | 580 | outb(inb(iobase+HCR) | HCR_EN_DMA | HCR_TX_WT, iobase+HCR); |
605 | #endif | ||
606 | 581 | ||
607 | /* Restore set register */ | 582 | /* Restore set register */ |
608 | outb(set, iobase+SSR); | 583 | outb(set, iobase+SSR); |
@@ -711,7 +686,7 @@ static int w83977af_dma_receive(struct w83977af_ir *self) | |||
711 | { | 686 | { |
712 | int iobase; | 687 | int iobase; |
713 | __u8 set; | 688 | __u8 set; |
714 | #ifdef CONFIG_NETWINDER_RX_DMA_PROBLEMS | 689 | #ifdef CONFIG_ARCH_NETWINDER |
715 | unsigned long flags; | 690 | unsigned long flags; |
716 | __u8 hcr; | 691 | __u8 hcr; |
717 | #endif | 692 | #endif |
@@ -736,7 +711,7 @@ static int w83977af_dma_receive(struct w83977af_ir *self) | |||
736 | self->io.direction = IO_RECV; | 711 | self->io.direction = IO_RECV; |
737 | self->rx_buff.data = self->rx_buff.head; | 712 | self->rx_buff.data = self->rx_buff.head; |
738 | 713 | ||
739 | #ifdef CONFIG_NETWINDER_RX_DMA_PROBLEMS | 714 | #ifdef CONFIG_ARCH_NETWINDER |
740 | spin_lock_irqsave(&self->lock, flags); | 715 | spin_lock_irqsave(&self->lock, flags); |
741 | 716 | ||
742 | disable_dma(self->io.dma); | 717 | disable_dma(self->io.dma); |
@@ -759,7 +734,7 @@ static int w83977af_dma_receive(struct w83977af_ir *self) | |||
759 | 734 | ||
760 | /* Enable DMA */ | 735 | /* Enable DMA */ |
761 | switch_bank(iobase, SET0); | 736 | switch_bank(iobase, SET0); |
762 | #ifdef CONFIG_NETWINDER_RX_DMA_PROBLEMS | 737 | #ifdef CONFIG_ARCH_NETWINDER |
763 | hcr = inb(iobase+HCR); | 738 | hcr = inb(iobase+HCR); |
764 | outb(hcr | HCR_EN_DMA, iobase+HCR); | 739 | outb(hcr | HCR_EN_DMA, iobase+HCR); |
765 | enable_dma(self->io.dma); | 740 | enable_dma(self->io.dma); |