summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShaun Ruffell <sruffell@digium.com>2010-03-01 08:14:17 +0000
committerShaun Ruffell <sruffell@digium.com>2010-03-01 08:14:17 +0000
commit2030ccd92765b542c80d7d55a9fb79c897e1372c (patch)
treecf242017a19ad953a052820c17036931e407f42f
parent214210cc1a8396ec59a283e7d2da3c1aa3186a01 (diff)
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
-rw-r--r--drivers/dahdi/voicebus/voicebus.c20
-rw-r--r--drivers/dahdi/voicebus/voicebus.h2
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)