Update of /cvsroot/alsa/alsa-kernel/include
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18820/alsa-kernel/include

Modified Files:
        cs46xx.h emu10k1.h memalloc.h pcm.h trident.h ymfpci.h 
Log Message:
Big DMA cleanup originated by Russell King <[EMAIL PROTECTED]>
* Russel
  - introduced 'struct device' support for 2.6 dma_alloc_coherent()
* Jaroslav
  - removed all bus-specific allocation functions
  - extended snd_dma_alloc_pages/snd_dma_free_pages to handle all bus types
  - recoded all (or almost all) device drivers
  - sgbuf functions are bus independent now


Index: cs46xx.h
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/include/cs46xx.h,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- cs46xx.h    23 Oct 2003 14:34:52 -0000      1.17
+++ cs46xx.h    2 Mar 2004 15:32:36 -0000       1.18
@@ -1646,9 +1646,7 @@
 typedef struct _snd_cs46xx cs46xx_t;
 
 typedef struct _snd_cs46xx_pcm_t {
-       unsigned char *hw_area;
-       dma_addr_t hw_addr;     /* PCI bus address, not accessible */
-       unsigned long hw_size;
+       struct snd_dma_buffer hw_buf;
   
        unsigned int ctl;
        unsigned int shift;     /* Shift count to trasform frames in bytes */
@@ -1693,9 +1691,7 @@
        unsigned int mode;
        
        struct {
-               unsigned char *hw_area;
-               dma_addr_t hw_addr;     /* PCI bus address, not accessible */
-               unsigned long hw_size;
+               struct snd_dma_buffer hw_buf;
 
                unsigned int ctl;
                unsigned int shift;     /* Shift count to trasform frames in bytes */
@@ -1727,6 +1723,8 @@
        unsigned int midcr;
        unsigned int uartm;
 
+       struct snd_dma_device dma_dev;
+
        int amplifier;
        void (*amplifier_ctrl)(cs46xx_t *, int);
        void (*active_ctrl)(cs46xx_t *, int);

Index: emu10k1.h
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/include/emu10k1.h,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -r1.37 -r1.38
--- emu10k1.h   25 Feb 2004 07:32:11 -0000      1.37
+++ emu10k1.h   2 Mar 2004 15:32:36 -0000       1.38
@@ -901,9 +901,7 @@
        unsigned short extout_mask;     /* used external outputs (bitmask) */
        unsigned short pad1;
        unsigned int itram_size;        /* internal TRAM size in samples */
-       unsigned int etram_size;        /* external TRAM size in samples */
-       void *etram_pages;              /* allocated pages for external TRAM */
-       dma_addr_t etram_pages_dmaaddr;
+       struct snd_dma_buffer etram_pages; /* external TRAM pages and size */
        unsigned int dbg;               /* FX debugger register */
        unsigned char name[128];
        int gpr_size;                   /* size of allocated GPR controls */
@@ -947,11 +945,10 @@
        unsigned int card_type;                 /* EMU10K1_CARD_* */
        unsigned int ecard_ctrl;                /* ecard control bits */
        unsigned long dma_mask;                 /* PCI DMA mask */
+       struct snd_dma_device dma_dev;          /* DMA device description */
        int max_cache_pages;                    /* max memory size / PAGE_SIZE */
-       void *silent_page;                      /* silent page */
-       dma_addr_t silent_page_dmaaddr;
-       volatile u32 *ptb_pages;                /* page table pages */
-       dma_addr_t ptb_pages_dmaaddr;
+       struct snd_dma_buffer silent_page;      /* silent page */
+       struct snd_dma_buffer ptb_pages;        /* page table pages */
        snd_util_memhdr_t *memhdr;              /* page allocation list */
        emu10k1_memblk_t *reserved_page;        /* reserved page */
 

Index: memalloc.h
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/include/memalloc.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- memalloc.h  8 Apr 2003 15:36:30 -0000       1.2
+++ memalloc.h  2 Mar 2004 15:32:36 -0000       1.3
@@ -29,13 +29,17 @@
 #include <asm/sbus.h>
 #endif
 
+struct device;
+
 /*
  * buffer device info
  */
 struct snd_dma_device {
        int type;                       /* SNDRV_MEM_TYPE_XXX */
        union {
-               struct pci_dev *pci;    /* for PCI and PCI-SG types */
+               void *data;
+               struct device *dev;     /* generic device */
+               struct pci_dev *pci;    /* PCI device */
                unsigned int flags;     /* GFP_XXX for continous and ISA types */
 #ifdef CONFIG_SBUS
                struct sbus_dev *sbus;  /* for SBUS type */
@@ -51,22 +55,10 @@
 #define SNDRV_DMA_TYPE_CONTINUOUS      1       /* continuous no-DMA memory */
 #define SNDRV_DMA_TYPE_ISA             2       /* ISA continuous */
 #define SNDRV_DMA_TYPE_PCI             3       /* PCI continuous */
-#define SNDRV_DMA_TYPE_SBUS            4       /* SBUS continuous */
-#define SNDRV_DMA_TYPE_PCI_SG          5       /* PCI SG-buffer */
-
-#ifdef CONFIG_PCI
-/*
- * compose a snd_dma_device struct for the PCI device
- */
-static inline void snd_dma_device_pci(struct snd_dma_device *dev, struct pci_dev 
*pci, unsigned int id)
-{
-       memset(dev, 0, sizeof(*dev));
-       dev->type = SNDRV_DMA_TYPE_PCI;
-       dev->dev.pci = pci;
-       dev->id = id;
-}
-#endif
-
+#define SNDRV_DMA_TYPE_PCI_SG          4       /* PCI SG-buffer */
+#define SNDRV_DMA_TYPE_DEV             5       /* generic device continuous */
+#define SNDRV_DMA_TYPE_DEV_SG          6       /* generic device SG-buffer */
+#define SNDRV_DMA_TYPE_SBUS            7       /* SBUS continuous */
 
 /*
  * info for buffer allocation
@@ -78,67 +70,8 @@
        void *private_data;     /* private for allocator; don't touch */
 };
 
-/* allocate/release a buffer */
-int snd_dma_alloc_pages(const struct snd_dma_device *dev, size_t size, struct 
snd_dma_buffer *dmab);
-void snd_dma_free_pages(const struct snd_dma_device *dev, struct snd_dma_buffer 
*dmab);
-
-/* buffer-preservation managements */
-size_t snd_dma_get_reserved(const struct snd_dma_device *dev, struct snd_dma_buffer 
*dmab);
-int snd_dma_free_reserved(const struct snd_dma_device *dev);
-int snd_dma_set_reserved(const struct snd_dma_device *dev, struct snd_dma_buffer 
*dmab);
-
-
-/*
- * Generic memory allocators
- */
-
-/*
- * continuous pages
- */
-void *snd_malloc_pages(size_t size, unsigned int gfp_flags);
-void *snd_malloc_pages_fallback(size_t size, unsigned int gfp_flags, size_t 
*res_size);
-void snd_free_pages(void *ptr, size_t size);
-
-#ifdef CONFIG_PCI
-/*
- * PCI continuous pages
- */
-void *snd_malloc_pci_pages(struct pci_dev *pci, size_t size, dma_addr_t *dma_addr);
-void *snd_malloc_pci_pages_fallback(struct pci_dev *pci, size_t size, dma_addr_t 
*dma_addr, size_t *res_size);
-void snd_free_pci_pages(struct pci_dev *pci, size_t size, void *ptr, dma_addr_t 
dma_addr);
-/* one page allocation */
-void *snd_malloc_pci_page(struct pci_dev *pci, dma_addr_t *dma_addr);
-#define snd_free_pci_page(pci,ptr,addr) snd_free_pci_pages(pci,PAGE_SIZE,ptr,addr)
-#endif
-
-#ifdef CONFIG_SBUS
-/*
- * SBUS continuous pages
- */
-void *snd_malloc_sbus_pages(struct sbus_dev *sdev, size_t size, dma_addr_t *dma_addr);
-void *snd_malloc_sbus_pages_fallback(struct sbus_dev *sdev, size_t size, dma_addr_t 
*dma_addr, size_t *res_size);
-void snd_free_sbus_pages(struct sbus_dev *sdev, size_t size, void *ptr, dma_addr_t 
dma_addr);
-#endif
-
-#ifdef CONFIG_ISA
-/*
- * ISA continuous pages
- */
-void *snd_malloc_isa_pages(size_t size, dma_addr_t *dma_addr);
-void *snd_malloc_isa_pages_fallback(size_t size, dma_addr_t *dma_addr, size_t 
*res_size);
-void snd_free_isa_pages(size_t size, void *ptr, dma_addr_t addr);
-#ifdef CONFIG_PCI
-#define snd_malloc_isa_pages(size, dma_addr) snd_malloc_pci_pages(NULL, size, 
dma_addr)
-#define snd_malloc_isa_pages_fallback(size, dma_addr, res_size) 
snd_malloc_pci_pages_fallback(NULL, size, dma_addr, res_size)
-#define snd_free_isa_pages(size, ptr, dma_addr) snd_free_pci_pages(NULL, size, ptr, 
dma_addr)
-#else /* !CONFIG_PCI */
-#define snd_free_isa_pages(size, ptr, dma_addr) snd_free_pages(ptr, size)
-#endif /* CONFIG_PCI */
-#endif /* CONFIG_ISA */
-
-#ifdef CONFIG_PCI
 /*
- * Scatter-Gather PCI pages
+ * Scatter-Gather generic device pages
  */
 struct snd_sg_page {
        void *buf;
@@ -151,12 +84,9 @@
        int tblsize;    /* allocated table size */
        struct snd_sg_page *table;      /* address table */
        struct page **page_table;       /* page table (for vmap/vunmap) */
-       struct pci_dev *pci;
+       const struct snd_dma_device *dev;
 };
 
-void *snd_malloc_sgbuf_pages(struct pci_dev *pci, size_t size, struct snd_dma_buffer 
*dmab);
-int snd_free_sgbuf_pages(struct snd_dma_buffer *dmab);
-
 /*
  * return the pages matching with the given byte size
  */
@@ -172,6 +102,27 @@
 {
        return sgbuf->table[offset >> PAGE_SHIFT].addr + offset % PAGE_SIZE;
 }
-#endif /* CONFIG_PCI */
+
+
+/* snd_dma_device management */
+void snd_dma_device_init(const struct snd_dma_device *dev, int type, void *data);
+
+/* allocate/release a buffer */
+int snd_dma_alloc_pages(const struct snd_dma_device *dev, size_t size,
+                       struct snd_dma_buffer *dmab);
+int snd_dma_alloc_pages_fallback(const struct snd_dma_device *dev, size_t size,
+                                 struct snd_dma_buffer *dmab);
+void snd_dma_free_pages(const struct snd_dma_device *dev, struct snd_dma_buffer 
*dmab);
+
+/* buffer-preservation managements */
+size_t snd_dma_get_reserved(const struct snd_dma_device *dev, struct snd_dma_buffer 
*dmab);
+int snd_dma_free_reserved(const struct snd_dma_device *dev);
+int snd_dma_set_reserved(const struct snd_dma_device *dev, struct snd_dma_buffer 
*dmab);
+
+/* basic memory allocation functions */
+void *snd_malloc_pages(size_t size, unsigned int gfp_flags);
+void *snd_malloc_pages_fallback(size_t size, unsigned int gfp_flags, size_t 
*res_size);
+void snd_free_pages(void *ptr, size_t size);
 
 #endif /* __SOUND_MEMALLOC_H */
+

Index: pcm.h
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/include/pcm.h,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -r1.37 -r1.38
--- pcm.h       24 Feb 2004 15:37:45 -0000      1.37
+++ pcm.h       2 Mar 2004 15:32:36 -0000       1.38
@@ -904,52 +904,23 @@
  *  Memory
  */
 
+#define snd_pcm_dma_flags(x) ((void *)(unsigned long)(x))
+
 int snd_pcm_lib_preallocate_free(snd_pcm_substream_t *substream);
 int snd_pcm_lib_preallocate_free_for_all(snd_pcm_t *pcm);
 int snd_pcm_lib_preallocate_pages(snd_pcm_substream_t *substream,
-                                 size_t size, size_t max,
-                                 unsigned int flags);
+                                 int type, void *data,
+                                 size_t size, size_t max);
 int snd_pcm_lib_preallocate_pages_for_all(snd_pcm_t *pcm,
-                                         size_t size, size_t max,
-                                         unsigned int flags);
+                                         int type, void *data,
+                                         size_t size, size_t max);
 int snd_pcm_lib_malloc_pages(snd_pcm_substream_t *substream, size_t size);
 int snd_pcm_lib_free_pages(snd_pcm_substream_t *substream);
 
-#ifdef CONFIG_ISA
-int snd_pcm_lib_preallocate_isa_pages(snd_pcm_substream_t *substream,
-                                     size_t size, size_t max);
-int snd_pcm_lib_preallocate_isa_pages_for_all(snd_pcm_t *pcm,
-                                             size_t size, size_t max);
-#endif
-#ifdef CONFIG_PCI
-int snd_pcm_lib_preallocate_pci_pages(struct pci_dev *pci,
-                                     snd_pcm_substream_t *substream,
-                                     size_t size, size_t max);
-int snd_pcm_lib_preallocate_pci_pages_for_all(struct pci_dev *pci,
-                                             snd_pcm_t *pcm,
-                                             size_t size,
-                                             size_t max);
-int snd_pcm_lib_preallocate_sg_pages(struct pci_dev *pci,
-                                    snd_pcm_substream_t *substream,
-                                    size_t size, size_t max);
-int snd_pcm_lib_preallocate_sg_pages_for_all(struct pci_dev *pci,
-                                            snd_pcm_t *pcm,
-                                            size_t size, size_t max);
 #define snd_pcm_substream_sgbuf(substream) ((substream)->runtime->dma_private)
 #define snd_pcm_sgbuf_pages(size) snd_sgbuf_aligned_pages(size)
 #define snd_pcm_sgbuf_get_addr(sgbuf,ofs) snd_sgbuf_get_addr(sgbuf,ofs)
 struct page *snd_pcm_sgbuf_ops_page(snd_pcm_substream_t *substream, unsigned long 
offset);
-#endif
-
-#ifdef CONFIG_SBUS
-int snd_pcm_lib_preallocate_sbus_pages(struct sbus_dev *sdev,
-                                      snd_pcm_substream_t *substream,
-                                      size_t size, size_t max);
-int snd_pcm_lib_preallocate_sbus_pages_for_all(struct sbus_dev *sdev,
-                                              snd_pcm_t *pcm,
-                                              size_t size,
-                                              size_t max);
-#endif
 
 static inline void snd_pcm_limit_isa_dma_size(int dma, size_t *max)
 {

Index: trident.h
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/include/trident.h,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- trident.h   23 Oct 2003 14:34:52 -0000      1.15
+++ trident.h   2 Mar 2004 15:32:36 -0000       1.16
@@ -308,11 +308,9 @@
        unsigned int * entries;         /* 16k-aligned TLB table */
        dma_addr_t entries_dmaaddr;     /* 16k-aligned PCI address to TLB table */
        unsigned long * shadow_entries; /* shadow entries with virtual addresses */
-       void * buffer;                  /* pointer for table calloc */
-       dma_addr_t buffer_dmaaddr;      /* not accessible PCI BUS physical address */
+       struct snd_dma_buffer buffer;
        snd_util_memhdr_t * memhdr;     /* page allocation list */
-       void * silent_page;             /* silent page */
-       dma_addr_t silent_page_dmaaddr; /* not accessible PCI BUS physical address */
+       struct snd_dma_buffer silent_page;
 } snd_trident_tlb_t;
 
 struct _snd_trident_voice {
@@ -435,6 +433,8 @@
        spinlock_t event_lock;
        spinlock_t voice_alloc;
 
+       struct snd_dma_device dma_dev;
+
        struct pci_dev *pci;
        snd_card_t *card;
        snd_pcm_t *pcm;         /* ADC/DAC PCM */

Index: ymfpci.h
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/include/ymfpci.h,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- ymfpci.h    23 Oct 2003 14:34:52 -0000      1.13
+++ ymfpci.h    2 Mar 2004 15:32:36 -0000       1.14
@@ -316,9 +316,8 @@
        struct gameport gameport;
 #endif
 
-       void *work_ptr;
-       dma_addr_t work_ptr_addr;
-       unsigned long work_ptr_size;
+       struct snd_dma_device dma_dev;
+       struct snd_dma_buffer work_ptr;
 
        unsigned int bank_size_playback;
        unsigned int bank_size_capture;
@@ -333,8 +332,7 @@
        dma_addr_t bank_base_capture_addr;
        dma_addr_t bank_base_effect_addr;
        dma_addr_t work_base_addr;
-       void *ac3_tmp_base;
-       dma_addr_t ac3_tmp_base_addr;
+       struct snd_dma_buffer ac3_tmp_base;
 
        u32 *ctrl_playback;
        snd_ymfpci_playback_bank_t *bank_playback[YDSXG_PLAYBACK_VOICES][2];



-------------------------------------------------------
SF.Net is sponsored by: Speed Start Your Linux Apps Now.
Build and deploy apps & Web services for Linux with
a free DVD software kit from IBM. Click Now!
http://ads.osdn.com/?ad_id=1356&alloc_id=3438&op=click
_______________________________________________
Alsa-cvslog mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-cvslog

Reply via email to