Update of /cvsroot/alsa/alsa-driver/acore In directory sc8-pr-cvs1:/tmp/cvs-serv12850/acore
Modified Files: memalloc.patch Log Message: - fixed the DMA allocation. pci_set_dma_mask() is called together with pci_set_consistent_dma_mask(). also clean up the double check of mask. Index: memalloc.patch =================================================================== RCS file: /cvsroot/alsa/alsa-driver/acore/memalloc.patch,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- memalloc.patch 20 Nov 2003 13:23:27 -0000 1.2 +++ memalloc.patch 19 Jan 2004 18:38:28 -0000 1.3 @@ -1,5 +1,5 @@ ---- memalloc.c 2003-11-20 12:44:06.000000000 +0100 -+++ memalloc.c 2003-11-20 12:52:50.000000000 +0100 +--- ../../alsa-kernel/core/memalloc.c 2004-01-19 12:52:21.856491159 +0100 ++++ memalloc.c 2004-01-19 13:00:09.973519397 +0100 @@ -1,3 +1,4 @@ +#include "memalloc.inc" /* @@ -13,35 +13,41 @@ #ifdef CONFIG_PCI #if defined(__i386__) || defined(__ppc__) || defined(__x86_64__) #define HACK_PCI_ALLOC_CONSISTENT -@@ -94,16 +96,25 @@ +@@ -94,19 +96,31 @@ dma_addr_t *dma_handle) { void *ret; -- u64 dma_mask; -+ u64 dma_mask = 0xffffffff, dma_mask1; +- u64 dma_mask, cdma_mask; ++ u64 dma_mask; ++#ifdef CONFIG_HAVE_PCI_CONSISTENT_DMA_MASK ++ u64 cdma_mask; ++#endif unsigned long mask; if (hwdev == NULL) return pci_alloc_consistent(hwdev, size, dma_handle); + dma_mask = hwdev->dma_mask; ++#ifdef CONFIG_HAVE_PCI_CONSISTENT_DMA_MASK + cdma_mask = hwdev->consistent_dma_mask; +- mask = (unsigned long)dma_mask && (unsigned long)cdma_mask; ++#endif ++ mask = (unsigned long)dma_mask; +#ifdef CONFIG_HAVE_PCI_CONSISTENT_DMA_MASK - dma_mask = hwdev->consistent_dma_mask; -- mask = (unsigned long)dma_mask; ++ mask &= (unsigned long)cdma_mask; +#endif -+ dma_mask1 = hwdev->dma_mask; -+ mask = (unsigned long)(dma_mask & dma_mask1); + hwdev->dma_mask = 0xffffffff; /* do without masking */ +#ifdef CONFIG_HAVE_PCI_CONSISTENT_DMA_MASK hwdev->consistent_dma_mask = 0xffffffff; /* do without masking */ +#endif -+ hwdev->dma_mask = 0xffffffff; /* do without masking */ ret = pci_alloc_consistent(hwdev, size, dma_handle); + hwdev->dma_mask = dma_mask; /* restore */ +#ifdef CONFIG_HAVE_PCI_CONSISTENT_DMA_MASK - hwdev->consistent_dma_mask = dma_mask; /* restore */ + hwdev->consistent_dma_mask = cdma_mask; /* restore */ +#endif -+ hwdev->dma_mask = dma_mask1; /* restore */ if (ret) { /* obtained address is out of range? */ if (((unsigned long)*dma_handle + size - 1) & ~mask) { -@@ -125,6 +136,7 @@ +@@ -128,6 +142,7 @@ #endif /* arch */ #endif /* CONFIG_PCI */ @@ -49,7 +55,7 @@ /* -@@ -617,7 +629,7 @@ +@@ -623,7 +638,7 @@ } @@ -58,19 +64,16 @@ /* * on ix86, we allocate a page with GFP_KERNEL to assure the * allocation. the code is almost same with kernel/i386/pci-dma.c but -@@ -642,7 +654,11 @@ +@@ -648,7 +663,7 @@ dma_addr_t addr; unsigned long mask; -+#ifdef CONFIG_HAVE_PCI_CONSISTENT_DMA_MASK - mask = pci ? (unsigned long)pci->consistent_dma_mask : 0x00ffffffUL; -+#else +- mask = pci ? (unsigned long)pci->consistent_dma_mask : 0x00ffffffUL; + mask = pci ? (unsigned long)pci->dma_mask : 0x00ffffffUL; -+#endif ptr = (void *)__get_free_page(GFP_KERNEL); if (ptr) { addr = virt_to_phys(ptr); -@@ -997,3 +1013,5 @@ +@@ -1012,3 +1027,5 @@ EXPORT_SYMBOL(snd_malloc_sbus_pages_fallback); EXPORT_SYMBOL(snd_free_sbus_pages); #endif ------------------------------------------------------- The SF.Net email is sponsored by EclipseCon 2004 Premiere Conference on Open Tools Development and Integration See the breadth of Eclipse activity. February 3-5 in Anaheim, CA. http://www.eclipsecon.org/osdn _______________________________________________ Alsa-cvslog mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/alsa-cvslog