From 2030ccd92765b542c80d7d55a9fb79c897e1372c Mon Sep 17 00:00:00 2001 From: Shaun Ruffell Date: Mon, 1 Mar 2010 08:14:17 +0000 Subject: wcte12xp, wctdm24xxp: Use memory mapped IO instead of port IO. Some systems do not like the port I/O and this change allows it to work. DAHDI-515. git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@8176 a0bf4364-ded3-4de4-8d8a-66a801d63aff --- drivers/dahdi/voicebus/voicebus.c | 20 +++++++++++++------- drivers/dahdi/voicebus/voicebus.h | 2 +- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/drivers/dahdi/voicebus/voicebus.c b/drivers/dahdi/voicebus/voicebus.c index fe23856..8896b03 100644 --- a/drivers/dahdi/voicebus/voicebus.c +++ b/drivers/dahdi/voicebus/voicebus.c @@ -312,7 +312,7 @@ static inline u32 __vb_getctl(struct voicebus *vb, u32 addr) { u32 ret; - ret = inl(vb->iobase + addr); + ret = readl(vb->iobase + addr); rmb(); return ret; } @@ -449,7 +449,7 @@ static inline void __vb_setctl(struct voicebus *vb, u32 addr, u32 val) { wmb(); - outl(val, vb->iobase + addr); + writel(val, vb->iobase + addr); } /*! @@ -1059,7 +1059,11 @@ voicebus_release(struct voicebus *vb) dma_free_coherent(&vb->pdev->dev, VOICEBUS_SFRAME_SIZE, vb->idle_vbb, vb->idle_vbb_dma_addr); } - release_region(vb->iobase, 0xff); + + release_mem_region(pci_resource_start(vb->pdev, 1), + pci_resource_len(vb->pdev, 1)); + + pci_iounmap(vb->pdev, vb->iobase); pci_disable_device(vb->pdev); } EXPORT_SYMBOL(voicebus_release); @@ -1507,8 +1511,9 @@ __voicebus_init(struct voicebus *vb, const char *board_name, int normal_mode) retval = -EIO; goto cleanup; } - vb->iobase = pci_resource_start(vb->pdev, 0); - if (NULL == request_region(vb->iobase, 0xff, board_name)) { + vb->iobase = pci_iomap(vb->pdev, 1, 0); + if (!request_mem_region(pci_resource_start(vb->pdev, 1), + pci_resource_len(vb->pdev, 1), board_name)) { dev_err(&vb->pdev->dev, "IO Registers are in use by another " "module.\n"); retval = -EIO; @@ -1522,7 +1527,8 @@ __voicebus_init(struct voicebus *vb, const char *board_name, int normal_mode) Configure the hardware interface. ---------------------------------------------------------------- */ if (pci_set_dma_mask(vb->pdev, DMA_BIT_MASK(32))) { - release_region(vb->iobase, 0xff); + release_mem_region(pci_resource_start(vb->pdev, 1), + pci_resource_len(vb->pdev, 1)); dev_warn(&vb->pdev->dev, "No suitable DMA available.\n"); goto cleanup; } @@ -1572,7 +1578,7 @@ cleanup: vb->idle_vbb, vb->idle_vbb_dma_addr); if (vb->iobase) - release_region(vb->iobase, 0xff); + pci_iounmap(vb->pdev, vb->iobase); if (vb->pdev) pci_disable_device(vb->pdev); diff --git a/drivers/dahdi/voicebus/voicebus.h b/drivers/dahdi/voicebus/voicebus.h index 4551cda..ed7b590 100644 --- a/drivers/dahdi/voicebus/voicebus.h +++ b/drivers/dahdi/voicebus/voicebus.h @@ -105,7 +105,7 @@ struct voicebus { u8 *idle_vbb; dma_addr_t idle_vbb_dma_addr; const int *debug; - u32 iobase; + void __iomem *iobase; struct tasklet_struct tasklet; #if defined(CONFIG_VOICEBUS_TIMER) -- cgit v1.2.3