[svn-commits] sruffell: branch linux/2.2 r8672 - in /linux/branches/2.2: ./ drivers/dahdi/v...

SVN commits to the Digium repositories svn-commits at lists.digium.com
Fri May 21 09:58:08 CDT 2010


Author: sruffell
Date: Fri May 21 09:58:06 2010
New Revision: 8672

URL: http://svnview.digium.com/svn/dahdi?view=rev&rev=8672
Log:
Merged revisions 8176,8560 via svnmerge from 
https://origsvn.digium.com/svn/dahdi/linux/trunk

NOTE:  These changes were already added to the 2.2.1.2 tag in r8666.  I
should have merged these two changes into the 2.2 branch first, and then
cherry-picked them for the 2.2.1.2 release.

........
  r8176 | sruffell | 2010-03-01 02:14:17 -0600 (Mon, 01 Mar 2010) | 4 lines
  
  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.
........
  r8560 | sruffell | 2010-04-22 16:36:16 -0500 (Thu, 22 Apr 2010) | 11 lines
  
  wcte12xp, wctdm24xxp: Ensure writes to I/O registers are flushed.
  
  In revision 8176 I changed register access from I/O space to memory mapped
  registers.  Unfortunately, when I made that change, I didn't account for
  posted writes.  This change makes sure all the registers are read back to
  ensure that they are posted through any intermediate bridges.
  
  The most readily observable symptom were cards that were taking 2000
  interrupts/second. The card reported that it handled an interrupt but the
  write to silence the card wasn't flushed through until the second time the
  interrupt handler run. DAHDI-602.
........

Modified:
    linux/branches/2.2/   (props changed)
    linux/branches/2.2/drivers/dahdi/voicebus/voicebus.c

Propchange: linux/branches/2.2/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.

Modified: linux/branches/2.2/drivers/dahdi/voicebus/voicebus.c
URL: http://svnview.digium.com/svn/dahdi/linux/branches/2.2/drivers/dahdi/voicebus/voicebus.c?view=diff&rev=8672&r1=8671&r2=8672
==============================================================================
--- linux/branches/2.2/drivers/dahdi/voicebus/voicebus.c (original)
+++ linux/branches/2.2/drivers/dahdi/voicebus/voicebus.c Fri May 21 09:58:06 2010
@@ -169,8 +169,8 @@
 #else
 	struct kmem_cache *buffer_cache;
 #endif
-	/*! Base address of the VoiceBus interface registers in I/O space. */
-	u32 iobase;
+	/*! Base address of the VoiceBus interface registers in memory space. */
+	void __iomem 		*iobase;
 	/*! The IRQ line for this VoiceBus interface. */
 	unsigned int irq;
 #if VOICEBUS_DEFERRED == WORKQUEUE
@@ -482,7 +482,7 @@
 static inline u32
 __vb_getctl(struct voicebus *vb, u32 addr)
 {
-	return le32_to_cpu(inl(vb->iobase + addr));
+	return readl(vb->iobase + addr);
 }
 
 /*!
@@ -599,7 +599,8 @@
 __vb_setctl(struct voicebus *vb, u32 addr, u32 val)
 {
 	wmb();
-	outl(cpu_to_le32(val), vb->iobase + addr);
+	writel(val, vb->iobase + addr);
+	readl(vb->iobase + addr);
 }
 
 /*!
@@ -1233,7 +1234,9 @@
 				  vb->idle_vbb, vb->idle_vbb_dma_addr);
 	}
 	kmem_cache_destroy(vb->buffer_cache);
-	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);
 	kfree(vb);
 }
@@ -1790,8 +1793,9 @@
 		retval = -EIO;
 		goto cleanup;
 	}
-	vb->iobase = pci_resource_start(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;
@@ -1805,7 +1809,8 @@
 	   Configure the hardware interface.
 	   ---------------------------------------------------------------- */
 	if (pci_set_dma_mask(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;
 	}
@@ -1865,7 +1870,7 @@
 		kmem_cache_destroy(vb->buffer_cache);
 
 	if (vb->iobase)
-		release_region(vb->iobase, 0xff);
+		pci_iounmap(vb->pdev, vb->iobase);
 
 	if (vb->pdev)
 		pci_disable_device(vb->pdev);




More information about the svn-commits mailing list