From: William Lee Irwin III * Removed uses of isa_virt_to_bus This resolves Debian BTS #218878. http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=218878 From: Paavo Hartikainen To: Debian Bug Tracking System Subject: IrDA modules fail to load Message-Id: When trying to "modprobe irda irtty", it fails with following message: FATAL: Error inserting irda (/lib/modules/2.6.0-test9/kernel/net/irda/irda.ko): Unknown symbol in module, or unknown parameter (see dmesg) And in "dmesg" I see these: irda: Unknown symbol isa_virt_to_bus irda: Unknown symbol isa_virt_to_bus Signed-off-by: Andrew Morton --- 25-akpm/drivers/net/irda/ali-ircc.c | 30 +++++++++++++++++++----------- 25-akpm/drivers/net/irda/ali-ircc.h | 3 +++ 25-akpm/drivers/net/irda/nsc-ircc.c | 30 +++++++++++++++++++----------- 25-akpm/drivers/net/irda/nsc-ircc.h | 3 +++ 25-akpm/drivers/net/irda/smsc-ircc2.c | 31 ++++++++++++++++++++----------- 25-akpm/drivers/net/irda/via-ircc.c | 28 ++++++++++++++++++---------- 25-akpm/drivers/net/irda/via-ircc.h | 3 +++ 25-akpm/drivers/net/irda/w83977af_ir.c | 31 +++++++++++++++++++------------ 25-akpm/drivers/net/irda/w83977af_ir.h | 3 +++ 25-akpm/include/net/irda/irda_device.h | 4 +++- 25-akpm/net/irda/irda_device.c | 4 ++-- 11 files changed, 112 insertions(+), 58 deletions(-) diff -puN drivers/net/irda/ali-ircc.c~remove-irda-usage-of-isa_virt_to_bus drivers/net/irda/ali-ircc.c --- 25/drivers/net/irda/ali-ircc.c~remove-irda-usage-of-isa_virt_to_bus 2004-06-13 21:15:41.295273096 -0700 +++ 25-akpm/drivers/net/irda/ali-ircc.c 2004-06-13 21:15:41.315270056 -0700 @@ -33,6 +33,7 @@ #include #include #include +#include #include #include @@ -304,16 +305,18 @@ static int ali_ircc_open(int i, chipio_t self->tx_buff.truesize = 14384; /* Allocate memory if needed */ - self->rx_buff.head = (__u8 *) kmalloc(self->rx_buff.truesize, - GFP_KERNEL |GFP_DMA); + self->rx_buff.head = + dma_alloc_coherent(NULL, self->rx_buff.truesize, + &self->rx_buff_dma, GFP_KERNEL); if (self->rx_buff.head == NULL) { err = -ENOMEM; goto err_out2; } memset(self->rx_buff.head, 0, self->rx_buff.truesize); - self->tx_buff.head = (__u8 *) kmalloc(self->tx_buff.truesize, - GFP_KERNEL|GFP_DMA); + self->tx_buff.head = + dma_alloc_coherent(NULL, self->tx_buff.truesize, + &self->tx_buff_dma, GFP_KERNEL); if (self->tx_buff.head == NULL) { err = -ENOMEM; goto err_out3; @@ -362,9 +365,11 @@ static int ali_ircc_open(int i, chipio_t return 0; err_out4: - kfree(self->tx_buff.head); + dma_free_coherent(NULL, self->tx_buff.truesize, + self->tx_buff.head, self->tx_buff_dma); err_out3: - kfree(self->rx_buff.head); + dma_free_coherent(NULL, self->rx_buff.truesize, + self->rx_buff.head, self->rx_buff_dma); err_out2: release_region(self->io.fir_base, self->io.fir_ext); err_out1: @@ -398,10 +403,12 @@ static int __exit ali_ircc_close(struct release_region(self->io.fir_base, self->io.fir_ext); if (self->tx_buff.head) - kfree(self->tx_buff.head); + dma_free_coherent(NULL, self->tx_buff.truesize, + self->tx_buff.head, self->tx_buff_dma); if (self->rx_buff.head) - kfree(self->rx_buff.head); + dma_free_coherent(NULL, self->rx_buff.truesize, + self->rx_buff.head, self->rx_buff_dma); dev_self[self->index] = NULL; free_netdev(self->netdev); @@ -1572,7 +1579,8 @@ static void ali_ircc_dma_xmit(struct ali self->io.direction = IO_XMIT; irda_setup_dma(self->io.dma, - self->tx_fifo.queue[self->tx_fifo.ptr].start, + ((u8 *)self->tx_fifo.queue[self->tx_fifo.ptr].start - + self->tx_buff.head) + self->tx_buff_dma, self->tx_fifo.queue[self->tx_fifo.ptr].len, DMA_TX_MODE); @@ -1724,8 +1732,8 @@ static int ali_ircc_dma_receive(struct a self->st_fifo.len = self->st_fifo.pending_bytes = 0; self->st_fifo.tail = self->st_fifo.head = 0; - irda_setup_dma(self->io.dma, self->rx_buff.data, - self->rx_buff.truesize, DMA_RX_MODE); + irda_setup_dma(self->io.dma, self->rx_buff_dma, self->rx_buff.truesize, + DMA_RX_MODE); /* Set Receive Mode,Brick Wall */ //switch_bank(iobase, BANK0); diff -puN drivers/net/irda/ali-ircc.h~remove-irda-usage-of-isa_virt_to_bus drivers/net/irda/ali-ircc.h --- 25/drivers/net/irda/ali-ircc.h~remove-irda-usage-of-isa_virt_to_bus 2004-06-13 21:15:41.297272792 -0700 +++ 25-akpm/drivers/net/irda/ali-ircc.h 2004-06-13 21:15:41.316269904 -0700 @@ -26,6 +26,7 @@ #include #include +#include #include /* SIR Register */ @@ -198,6 +199,8 @@ struct ali_ircc_cb { chipio_t io; /* IrDA controller information */ iobuff_t tx_buff; /* Transmit buffer */ iobuff_t rx_buff; /* Receive buffer */ + dma_addr_t tx_buff_dma; + dma_addr_t rx_buff_dma; __u8 ier; /* Interrupt enable register */ diff -puN drivers/net/irda/nsc-ircc.c~remove-irda-usage-of-isa_virt_to_bus drivers/net/irda/nsc-ircc.c --- 25/drivers/net/irda/nsc-ircc.c~remove-irda-usage-of-isa_virt_to_bus 2004-06-13 21:15:41.299272488 -0700 +++ 25-akpm/drivers/net/irda/nsc-ircc.c 2004-06-13 21:15:41.318269600 -0700 @@ -52,6 +52,7 @@ #include #include #include +#include #include #include @@ -307,8 +308,9 @@ static int __init nsc_ircc_open(int i, c self->tx_buff.truesize = 14384; /* Allocate memory if needed */ - self->rx_buff.head = (__u8 *) kmalloc(self->rx_buff.truesize, - GFP_KERNEL|GFP_DMA); + self->rx_buff.head = + dma_alloc_coherent(NULL, self->rx_buff.truesize, + &self->rx_buff_dma, GFP_KERNEL); if (self->rx_buff.head == NULL) { err = -ENOMEM; goto out2; @@ -316,8 +318,9 @@ static int __init nsc_ircc_open(int i, c } memset(self->rx_buff.head, 0, self->rx_buff.truesize); - self->tx_buff.head = (__u8 *) kmalloc(self->tx_buff.truesize, - GFP_KERNEL|GFP_DMA); + self->tx_buff.head = + dma_alloc_coherent(NULL, self->tx_buff.truesize, + &self->tx_buff_dma, GFP_KERNEL); if (self->tx_buff.head == NULL) { err = -ENOMEM; goto out3; @@ -368,9 +371,11 @@ static int __init nsc_ircc_open(int i, c return 0; out4: - kfree(self->tx_buff.head); + dma_free_coherent(NULL, self->tx_buff.truesize, + self->tx_buff.head, self->tx_buff_dma); out3: - kfree(self->rx_buff.head); + dma_free_coherent(NULL, self->rx_buff.truesize, + self->rx_buff.head, self->rx_buff_dma); out2: release_region(self->io.fir_base, self->io.fir_ext); out1: @@ -404,10 +409,12 @@ static int __exit nsc_ircc_close(struct release_region(self->io.fir_base, self->io.fir_ext); if (self->tx_buff.head) - kfree(self->tx_buff.head); + dma_free_coherent(NULL, self->tx_buff.truesize, + self->tx_buff.head, self->tx_buff_dma); if (self->rx_buff.head) - kfree(self->rx_buff.head); + dma_free_coherent(NULL, self->rx_buff.truesize, + self->rx_buff.head, self->rx_buff_dma); dev_self[self->index] = NULL; free_netdev(self->netdev); @@ -1409,7 +1416,8 @@ static void nsc_ircc_dma_xmit(struct nsc outb(ECR1_DMASWP|ECR1_DMANF|ECR1_EXT_SL, iobase+ECR1); irda_setup_dma(self->io.dma, - self->tx_fifo.queue[self->tx_fifo.ptr].start, + ((u8 *)self->tx_fifo.queue[self->tx_fifo.ptr].start - + self->tx_buff.head) + self->tx_buff_dma, self->tx_fifo.queue[self->tx_fifo.ptr].len, DMA_TX_MODE); @@ -1566,8 +1574,8 @@ static int nsc_ircc_dma_receive(struct n self->st_fifo.len = self->st_fifo.pending_bytes = 0; self->st_fifo.tail = self->st_fifo.head = 0; - irda_setup_dma(self->io.dma, self->rx_buff.data, - self->rx_buff.truesize, DMA_RX_MODE); + irda_setup_dma(self->io.dma, self->rx_buff_dma, self->rx_buff.truesize, + DMA_RX_MODE); /* Enable DMA */ switch_bank(iobase, BANK0); diff -puN drivers/net/irda/nsc-ircc.h~remove-irda-usage-of-isa_virt_to_bus drivers/net/irda/nsc-ircc.h --- 25/drivers/net/irda/nsc-ircc.h~remove-irda-usage-of-isa_virt_to_bus 2004-06-13 21:15:41.300272336 -0700 +++ 25-akpm/drivers/net/irda/nsc-ircc.h 2004-06-13 21:15:41.318269600 -0700 @@ -32,6 +32,7 @@ #include #include +#include #include /* DMA modes needed */ @@ -255,6 +256,8 @@ struct nsc_ircc_cb { chipio_t io; /* IrDA controller information */ iobuff_t tx_buff; /* Transmit buffer */ iobuff_t rx_buff; /* Receive buffer */ + dma_addr_t tx_buff_dma; + dma_addr_t rx_buff_dma; __u8 ier; /* Interrupt enable register */ diff -puN drivers/net/irda/smsc-ircc2.c~remove-irda-usage-of-isa_virt_to_bus drivers/net/irda/smsc-ircc2.c --- 25/drivers/net/irda/smsc-ircc2.c~remove-irda-usage-of-isa_virt_to_bus 2004-06-13 21:15:41.302272032 -0700 +++ 25-akpm/drivers/net/irda/smsc-ircc2.c 2004-06-13 21:15:41.320269296 -0700 @@ -52,6 +52,7 @@ #include #include #include +#include #include #include @@ -112,6 +113,8 @@ struct smsc_ircc_cb { chipio_t io; /* IrDA controller information */ iobuff_t tx_buff; /* Transmit buffer */ iobuff_t rx_buff; /* Receive buffer */ + dma_addr_t tx_buff_dma; + dma_addr_t rx_buff_dma; struct qos_info qos; /* QoS capabilities for this device */ @@ -413,16 +416,18 @@ static int __init smsc_ircc_open(unsigne self->rx_buff.truesize = SMSC_IRCC2_RX_BUFF_TRUESIZE; self->tx_buff.truesize = SMSC_IRCC2_TX_BUFF_TRUESIZE; - self->rx_buff.head = (u8 *) kmalloc(self->rx_buff.truesize, - GFP_KERNEL|GFP_DMA); + self->rx_buff.head = + dma_alloc_coherent(NULL, self->rx_buff.truesize, + &self->rx_buff_dma, GFP_KERNEL); if (self->rx_buff.head == NULL) { ERROR("%s, Can't allocate memory for receive buffer!\n", driver_name); goto err_out2; } - self->tx_buff.head = (u8 *) kmalloc(self->tx_buff.truesize, - GFP_KERNEL|GFP_DMA); + self->tx_buff.head = + dma_alloc_coherent(NULL, self->tx_buff.truesize, + &self->tx_buff_dma, GFP_KERNEL); if (self->tx_buff.head == NULL) { ERROR("%s, Can't allocate memory for transmit buffer!\n", driver_name); @@ -464,9 +469,11 @@ static int __init smsc_ircc_open(unsigne return 0; err_out4: - kfree(self->tx_buff.head); + dma_free_coherent(NULL, self->tx_buff.truesize, + self->tx_buff.head, self->tx_buff_dma); err_out3: - kfree(self->rx_buff.head); + dma_free_coherent(NULL, self->rx_buff.truesize, + self->rx_buff.head, self->rx_buff_dma); err_out2: free_netdev(self->netdev); dev_self[--dev_count] = NULL; @@ -1159,7 +1166,7 @@ static void smsc_ircc_dma_xmit(struct sm IRCC_CFGB_DMA_BURST, iobase+IRCC_SCE_CFGB); /* Setup DMA controller (must be done after enabling chip DMA) */ - irda_setup_dma(self->io.dma, self->tx_buff.data, self->tx_buff.len, + irda_setup_dma(self->io.dma, self->tx_buff_dma, self->tx_buff.len, DMA_TX_MODE); /* Enable interrupt */ @@ -1249,8 +1256,8 @@ static int smsc_ircc_dma_receive(struct outb(2050 & 0xff, iobase+IRCC_RX_SIZE_LO); /* Setup DMA controller */ - irda_setup_dma(self->io.dma, self->rx_buff.data, - self->rx_buff.truesize, DMA_RX_MODE); + irda_setup_dma(self->io.dma, self->rx_buff_dma, self->rx_buff.truesize, + DMA_RX_MODE); /* Enable burst mode chip Rx DMA */ register_bank(iobase, 1); @@ -1717,10 +1724,12 @@ static int __exit smsc_ircc_close(struct release_region(self->io.sir_base, self->io.sir_ext); if (self->tx_buff.head) - kfree(self->tx_buff.head); + dma_free_coherent(NULL, self->tx_buff.truesize, + self->tx_buff.head, self->tx_buff_dma); if (self->rx_buff.head) - kfree(self->rx_buff.head); + dma_free_coherent(NULL, self->rx_buff.truesize, + self->rx_buff.head, self->rx_buff_dma); free_netdev(self->netdev); diff -puN drivers/net/irda/via-ircc.c~remove-irda-usage-of-isa_virt_to_bus drivers/net/irda/via-ircc.c --- 25/drivers/net/irda/via-ircc.c~remove-irda-usage-of-isa_virt_to_bus 2004-06-13 21:15:41.303271880 -0700 +++ 25-akpm/drivers/net/irda/via-ircc.c 2004-06-13 21:15:41.322268992 -0700 @@ -39,6 +39,7 @@ F02 Oct/28/02: Add SB device ID for 3147 #include #include #include +#include #include #include @@ -383,7 +384,8 @@ static __devinit int via_ircc_open(int i /* Allocate memory if needed */ self->rx_buff.head = - (__u8 *) kmalloc(self->rx_buff.truesize, GFP_KERNEL | GFP_DMA); + dma_alloc_coherent(NULL, self->rx_buff.truesize, + &self->rx_buff_dma, GFP_KERNEL); if (self->rx_buff.head == NULL) { err = -ENOMEM; goto err_out2; @@ -391,7 +393,8 @@ static __devinit int via_ircc_open(int i memset(self->rx_buff.head, 0, self->rx_buff.truesize); self->tx_buff.head = - (__u8 *) kmalloc(self->tx_buff.truesize, GFP_KERNEL | GFP_DMA); + dma_alloc_coherent(NULL, self->tx_buff.truesize, + &self->tx_buff_dma, GFP_KERNEL); if (self->tx_buff.head == NULL) { err = -ENOMEM; goto err_out3; @@ -432,9 +435,11 @@ static __devinit int via_ircc_open(int i return 0; err_out4: - kfree(self->tx_buff.head); + dma_free_coherent(NULL, self->tx_buff.truesize, + self->tx_buff.head, self->tx_buff_dma); err_out3: - kfree(self->rx_buff.head); + dma_free_coherent(NULL, self->rx_buff.truesize, + self->rx_buff.head, self->rx_buff_dma); err_out2: release_region(self->io.fir_base, self->io.fir_ext); err_out1: @@ -468,9 +473,11 @@ static int __exit via_ircc_close(struct __FUNCTION__, self->io.fir_base); release_region(self->io.fir_base, self->io.fir_ext); if (self->tx_buff.head) - kfree(self->tx_buff.head); + dma_free_coherent(NULL, self->tx_buff.truesize, + self->tx_buff.head, self->tx_buff_dma); if (self->rx_buff.head) - kfree(self->rx_buff.head); + dma_free_coherent(NULL, self->rx_buff.truesize, + self->rx_buff.head, self->rx_buff_dma); dev_self[self->index] = NULL; free_netdev(self->netdev); @@ -816,7 +823,7 @@ static int via_ircc_hard_xmit_sir(struct EnTXDMA(iobase, ON); EnRXDMA(iobase, OFF); - irda_setup_dma(self->io.dma, self->tx_buff.data, self->tx_buff.len, + irda_setup_dma(self->io.dma, self->tx_buff_dma, self->tx_buff.len, DMA_TX_MODE); SetSendByte(iobase, self->tx_buff.len); @@ -897,7 +904,8 @@ static int via_ircc_dma_xmit(struct via_ EnTXDMA(iobase, ON); EnRXDMA(iobase, OFF); irda_setup_dma(self->io.dma, - self->tx_fifo.queue[self->tx_fifo.ptr].start, + ((u8 *)self->tx_fifo.queue[self->tx_fifo.ptr].start - + self->tx_buff.head) + self->tx_buff_dma, self->tx_fifo.queue[self->tx_fifo.ptr].len, DMA_TX_MODE); #ifdef DBGMSG DBG(printk @@ -1022,8 +1030,8 @@ static int via_ircc_dma_receive(struct v EnAllInt(iobase, ON); EnTXDMA(iobase, OFF); EnRXDMA(iobase, ON); - irda_setup_dma(self->io.dma2, self->rx_buff.data, - self->rx_buff.truesize, DMA_RX_MODE); + irda_setup_dma(self->io.dma2, self->rx_buff_dma, + self->rx_buff.truesize, DMA_RX_MODE); TXStart(iobase, OFF); RXStart(iobase, ON); diff -puN drivers/net/irda/via-ircc.h~remove-irda-usage-of-isa_virt_to_bus drivers/net/irda/via-ircc.h --- 25/drivers/net/irda/via-ircc.h~remove-irda-usage-of-isa_virt_to_bus 2004-06-13 21:15:41.305271576 -0700 +++ 25-akpm/drivers/net/irda/via-ircc.h 2004-06-13 21:15:41.323268840 -0700 @@ -33,6 +33,7 @@ this program; if not, write to the Free #include #include #include +#include #include #define MAX_TX_WINDOW 7 @@ -102,6 +103,8 @@ struct via_ircc_cb { chipio_t io; /* IrDA controller information */ iobuff_t tx_buff; /* Transmit buffer */ iobuff_t rx_buff; /* Receive buffer */ + dma_addr_t tx_buff_dma; + dma_addr_t rx_buff_dma; __u8 ier; /* Interrupt enable register */ diff -puN drivers/net/irda/w83977af_ir.c~remove-irda-usage-of-isa_virt_to_bus drivers/net/irda/w83977af_ir.c --- 25/drivers/net/irda/w83977af_ir.c~remove-irda-usage-of-isa_virt_to_bus 2004-06-13 21:15:41.306271424 -0700 +++ 25-akpm/drivers/net/irda/w83977af_ir.c 2004-06-13 21:15:41.324268688 -0700 @@ -50,6 +50,7 @@ #include #include #include +#include #include #include @@ -207,8 +208,9 @@ int w83977af_open(int i, unsigned int io self->tx_buff.truesize = 4000; /* Allocate memory if needed */ - self->rx_buff.head = (__u8 *) kmalloc(self->rx_buff.truesize, - GFP_KERNEL|GFP_DMA); + self->rx_buff.head = + dma_alloc_coherent(NULL, self->rx_buff.truesize, + &self->rx_buff_dma, GFP_KERNEL); if (self->rx_buff.head == NULL) { err = -ENOMEM; goto err_out1; @@ -216,8 +218,9 @@ int w83977af_open(int i, unsigned int io memset(self->rx_buff.head, 0, self->rx_buff.truesize); - self->tx_buff.head = (__u8 *) kmalloc(self->tx_buff.truesize, - GFP_KERNEL|GFP_DMA); + self->tx_buff.head = + dma_alloc_coherent(NULL, self->tx_buff.truesize, + &self->tx_buff_dma, GFP_KERNEL); if (self->tx_buff.head == NULL) { err = -ENOMEM; goto err_out2; @@ -252,9 +255,11 @@ int w83977af_open(int i, unsigned int io return 0; err_out3: - kfree(self->tx_buff.head); + dma_free_coherent(NULL, self->tx_buff.truesize, + self->tx_buff.head, self->tx_buff_dma); err_out2: - kfree(self->rx_buff.head); + dma_free_coherent(NULL, self->rx_buff.truesize, + self->rx_buff.head, self->rx_buff_dma); err_out1: free_netdev(dev); err_out: @@ -297,10 +302,12 @@ static int w83977af_close(struct w83977a release_region(self->io.fir_base, self->io.fir_ext); if (self->tx_buff.head) - kfree(self->tx_buff.head); + dma_free_coherent(NULL, self->tx_buff.truesize, + self->tx_buff.head, self->tx_buff_dma); if (self->rx_buff.head) - kfree(self->rx_buff.head); + dma_free_coherent(NULL, self->rx_buff.truesize, + self->rx_buff.head, self->rx_buff_dma); free_netdev(self->netdev); @@ -606,10 +613,10 @@ static void w83977af_dma_write(struct w8 disable_dma(self->io.dma); clear_dma_ff(self->io.dma); set_dma_mode(self->io.dma, DMA_MODE_READ); - set_dma_addr(self->io.dma, isa_virt_to_bus(self->tx_buff.data)); + set_dma_addr(self->io.dma, self->tx_buff_dma); set_dma_count(self->io.dma, self->tx_buff.len); #else - irda_setup_dma(self->io.dma, self->tx_buff.data, self->tx_buff.len, + irda_setup_dma(self->io.dma, self->tx_buff_dma, self->tx_buff.len, DMA_MODE_WRITE); #endif self->io.direction = IO_XMIT; @@ -763,10 +770,10 @@ int w83977af_dma_receive(struct w83977af disable_dma(self->io.dma); clear_dma_ff(self->io.dma); set_dma_mode(self->io.dma, DMA_MODE_READ); - set_dma_addr(self->io.dma, isa_virt_to_bus(self->rx_buff.data)); + set_dma_addr(self->io.dma, self->rx_buff_dma); set_dma_count(self->io.dma, self->rx_buff.truesize); #else - irda_setup_dma(self->io.dma, self->rx_buff.data, self->rx_buff.truesize, + irda_setup_dma(self->io.dma, self->rx_buff_dma, self->rx_buff.truesize, DMA_MODE_READ); #endif /* diff -puN drivers/net/irda/w83977af_ir.h~remove-irda-usage-of-isa_virt_to_bus drivers/net/irda/w83977af_ir.h --- 25/drivers/net/irda/w83977af_ir.h~remove-irda-usage-of-isa_virt_to_bus 2004-06-13 21:15:41.308271120 -0700 +++ 25-akpm/drivers/net/irda/w83977af_ir.h 2004-06-13 21:15:41.325268536 -0700 @@ -26,6 +26,7 @@ #define W83977AF_IR_H #include +#include /* Flags for configuration register CRF0 */ #define ENBNKSEL 0x01 @@ -179,6 +180,8 @@ struct w83977af_ir { chipio_t io; /* IrDA controller information */ iobuff_t tx_buff; /* Transmit buffer */ iobuff_t rx_buff; /* Receive buffer */ + dma_addr_t tx_buff_dma; + dma_addr_t rx_buff_dma; /* Note : currently locking is *very* incomplete, but this * will get you started. Check in nsc-ircc.c for a proper diff -puN include/net/irda/irda_device.h~remove-irda-usage-of-isa_virt_to_bus include/net/irda/irda_device.h --- 25/include/net/irda/irda_device.h~remove-irda-usage-of-isa_virt_to_bus 2004-06-13 21:15:41.309270968 -0700 +++ 25-akpm/include/net/irda/irda_device.h 2004-06-13 21:15:41.325268536 -0700 @@ -39,11 +39,13 @@ #ifndef IRDA_DEVICE_H #define IRDA_DEVICE_H +#include #include #include #include #include /* struct sk_buff */ #include +#include #include #include @@ -236,7 +238,7 @@ dongle_t *irda_device_dongle_init(struct int irda_device_dongle_cleanup(dongle_t *dongle); #ifdef CONFIG_ISA -void irda_setup_dma(int channel, char *buffer, int count, int mode); +void irda_setup_dma(int channel, dma_addr_t buffer, int count, int mode); #endif void irda_task_delete(struct irda_task *task); diff -puN net/irda/irda_device.c~remove-irda-usage-of-isa_virt_to_bus net/irda/irda_device.c --- 25/net/irda/irda_device.c~remove-irda-usage-of-isa_virt_to_bus 2004-06-13 21:15:41.310270816 -0700 +++ 25-akpm/net/irda/irda_device.c 2004-06-13 21:15:41.326268384 -0700 @@ -536,7 +536,7 @@ int irda_device_set_mode(struct net_devi * Setup the DMA channel. Commonly used by ISA FIR drivers * */ -void irda_setup_dma(int channel, char *buffer, int count, int mode) +void irda_setup_dma(int channel, dma_addr_t buffer, int count, int mode) { unsigned long flags; @@ -545,7 +545,7 @@ void irda_setup_dma(int channel, char *b disable_dma(channel); clear_dma_ff(channel); set_dma_mode(channel, mode); - set_dma_addr(channel, isa_virt_to_bus(buffer)); + set_dma_addr(channel, buffer); set_dma_count(channel, count); enable_dma(channel); _