Update of /cvsroot/alsa/alsa-driver/acore In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16257
Modified Files: memalloc.patch Log Message: - moved the hack for the old 2.6 kernels to the patch. - fixed the compilation with 2.4 kernels. Index: memalloc.patch =================================================================== RCS file: /cvsroot/alsa/alsa-driver/acore/memalloc.patch,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- memalloc.patch 6 Mar 2004 16:55:12 -0000 1.6 +++ memalloc.patch 16 Apr 2004 09:24:44 -0000 1.7 @@ -1,66 +1,108 @@ ---- memalloc.c 2004-03-06 17:00:36.556407787 +0100 -+++ memalloc.c 2004-03-06 17:00:32.107418149 +0100 +--- memalloc.c 2004-04-16 10:55:50.373199180 +0200 ++++ memalloc.c 2004-04-16 10:57:22.365350732 +0200 @@ -1,3 +1,4 @@ +#include "memalloc.inc" /* * Copyright (c) by Jaroslav Kysela <[EMAIL PROTECTED]> * Takashi Iwai <[EMAIL PROTECTED]> -@@ -89,6 +90,7 @@ +@@ -91,7 +92,43 @@ * Hacks */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) - static void *snd_dma_alloc_coherent1(struct device *dev, size_t size, - dma_addr_t *dma_handle, int flags) - { -@@ -112,7 +114,15 @@ - #undef dma_free_coherent - #define dma_free_coherent snd_dma_free_coherent1 - ++#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 5) ++static void *snd_dma_alloc_coherent1(struct device *dev, size_t size, ++ dma_addr_t *dma_handle, int flags) ++{ ++ if (dev) ++ return dma_alloc_coherent(dev, size, dma_handle, flags); ++ else /* FIXME: dma_alloc_coherent does't always accept dev=NULL */ ++ return pci_alloc_consistent(NULL, size, dma_handle); ++} ++ ++static void snd_dma_free_coherent1(struct device *dev, size_t size, void *dma_addr, ++ dma_addr_t dma_handle) ++{ ++ if (dev) ++ return dma_free_coherent(dev, size, dma_addr, dma_handle); ++ else ++ return pci_free_consistent(NULL, size, dma_addr, dma_handle); ++} ++ ++#undef dma_alloc_coherent ++#define dma_alloc_coherent snd_dma_alloc_coherent1 ++#undef dma_free_coherent ++#define dma_free_coherent snd_dma_free_coherent1 ++#endif /* < 2.6.5 */ ++ +#else + +/* for 2.2/2.4 kernels */ +#define dma_alloc_coherent(dev,size,addr,flags) pci_alloc_consistent((struct pci_dev *)(dev),size,addr) +#define dma_free_coherent(dev,size,ptr,addr) pci_free_consistent((struct pci_dev *)(dev),size,ptr,addr) - ++ +#endif /* >= 2.6.0 */ + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 0) #if defined(__i386__) || defined(__ppc__) || defined(__x86_64__) - ++ /* -@@ -136,13 +146,29 @@ - { - void *ret; - u64 dma_mask; -+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0) -+ struct pci_dev *pci = (struct pci_dev *)dev; -+#endif + * A hack to allocate large buffers via dma_alloc_coherent() + * +@@ -108,21 +145,45 @@ + * so dma_mask doesn't have to be messed with. + */ -- if (dev == NULL || !dev->dma_mask) -+ if (dev == NULL -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) -+ || !dev->dma_mask -+#endif -+ ) - return dma_alloc_coherent(dev, size, dma_handle, flags); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) - dma_mask = *dev->dma_mask; - *dev->dma_mask = 0xffffffff; /* do without masking */ ++#define VALID_DMA_MASK(dev) (dev)->dma_mask ++#define GET_DMA_MASK(dev) *(dev)->dma_mask ++#define SET_DMA_MASK(dev,val) (*(dev)->dma_mask = (val)) ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 5) ++#define GET_COHERENT_DMA_MASK(dev) (dev)->coherent_dma_mask ++#define SET_COHERENT_DMA_MASK(dev,val) ((dev)->coherent_dma_mask = (val)) +#else -+ dma_mask = pci->dma_mask; -+ pci->dma_mask = 0xffffffff; /* do without masking */ ++#define GET_COHERENT_DMA_MASK(dev) 0 /* dummy */ ++#define SET_COHERENT_DMA_MASK(dev,val) +#endif - ret = dma_alloc_coherent(dev, size, dma_handle, flags); -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) - *dev->dma_mask = dma_mask; /* restore */ ++#else /* 2.4.x */ ++#define VALID_DMA_MASK(dev) 0 ++#define GET_DMA_MASK(dev) ((struct pci_dev *)(dev))->dma_mask ++#define SET_DMA_MASK(dev,val) (((struct pci_dev *)(dev))->dma_mask = (val)) ++#ifdef CONFIG_HAVE_PCI_CONSISTENT_DMA_MASK ++#define GET_COHERENT_DMA_MASK(dev) ((struct pci_dev *)(dev))->consistent_dma_mask ++#define SET_COHERENT_DMA_MASK(dev,val) (((struct pci_dev *)(dev))->consistent_dma_mask = (val)) +#else -+ pci->dma_mask = dma_mask; /* restore */ ++#define GET_COHERENT_DMA_MASK(dev) 0 /* dummy */ ++#define SET_COHERENT_DMA_MASK(dev,val) ++#endif +#endif ++ + static void *snd_dma_hack_alloc_coherent(struct device *dev, size_t size, + dma_addr_t *dma_handle, int flags) + { + void *ret; + u64 dma_mask, coherent_dma_mask; + +- if (dev == NULL || !dev->dma_mask) ++ if (dev == NULL || VALID_DMA_MASK(dev)) + return dma_alloc_coherent(dev, size, dma_handle, flags); +- dma_mask = *dev->dma_mask; +- coherent_dma_mask = dev->coherent_dma_mask; +- *dev->dma_mask = 0xffffffff; /* do without masking */ +- dev->coherent_dma_mask = 0xffffffff; /* do without masking */ ++ dma_mask = GET_DMA_MASK(dev); ++ coherent_dma_mask = GET_COHERENT_DMA_MASK(dev); ++ SET_DMA_MASK(dev, 0xffffffff); /* do without masking */ ++ SET_COHERENT_DMA_MASK(dev, 0xffffffff); /* do without masking */ + ret = dma_alloc_coherent(dev, size, dma_handle, flags); +- *dev->dma_mask = dma_mask; /* restore */ +- dev->coherent_dma_mask = coherent_dma_mask; /* restore */ ++ SET_DMA_MASK(dev, dma_mask); /* restore */ ++ SET_COHERENT_DMA_MASK(dev, coherent_dma_mask) /* restore */; if (ret) { /* obtained address is out of range? */ if (((unsigned long)*dma_handle + size - 1) & ~dma_mask) { -@@ -163,6 +189,8 @@ +@@ -147,6 +208,8 @@ #define dma_alloc_coherent snd_dma_hack_alloc_coherent #endif /* arch */ @@ -69,7 +111,7 @@ /* * -@@ -797,9 +825,24 @@ +@@ -781,9 +844,24 @@ case SNDRV_DMA_TYPE_DEV: case SNDRV_DMA_TYPE_DEV_SG: if (mem->dev.dev) { @@ -94,7 +136,7 @@ } else len += sprintf(page + len, "ISA"); break; -@@ -875,3 +918,5 @@ +@@ -840,3 +918,5 @@ EXPORT_SYMBOL(snd_malloc_pages); EXPORT_SYMBOL(snd_malloc_pages_fallback); EXPORT_SYMBOL(snd_free_pages); ------------------------------------------------------- This SF.Net email is sponsored by: IBM Linux Tutorials Free Linux tutorial presented by Daniel Robbins, President and CEO of GenToo technologies. Learn everything from fundamentals to system administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click _______________________________________________ Alsa-cvslog mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/alsa-cvslog