OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [drivers/] [sound/] [ad1889.h] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1275 phoenix
#ifndef _AD1889_H_
2
#define _AD1889_H_
3
 
4
#define AD_DSWSMC       0x00    /* DMA input wave/syn mixer control */
5
#define AD_DSRAMC       0x02    /* DMA output resamp/ADC mixer control */
6
#define AD_DSWADA       0x04    /* DMA input wave attenuation */
7
#define AD_DSSYDA       0x06    /* DMA input syn attentuation */
8
#define AD_DSWAS        0x08    /* wave input sample rate */
9
#define AD_DSRES        0x0a    /* resampler output sample rate */
10
#define AD_DSCCS        0x0c    /* chip control/status */
11
 
12
#define AD_DMARESBA     0x40    /* RES base addr */
13
#define AD_DMARESCA     0x44    /* RES current addr */
14
#define AD_DMARESBC     0x48    /* RES base cnt */
15
#define AD_DMARESCC     0x4c    /* RES current count */
16
#define AD_DMAADCBA     0x50    /* ADC */
17
#define AD_DMAADCCA     0x54
18
#define AD_DMAADCBC     0x58
19
#define AD_DMAADCCC     0x5c
20
#define AD_DMASYNBA     0x60    /* SYN */
21
#define AD_DMASYNCA     0x64
22
#define AD_DMASYNBC     0x68
23
#define AD_DMASYNCC     0x6c
24
#define AD_DMAWAVBA     0x70    /* WAV */
25
#define AD_DMAWAVCA     0x74
26
#define AD_DMAWAVBC     0x78
27
#define AD_DMAWAVCC     0x7c
28
#define AD_DMARESICC    0x80    /* RES interrupt current count */
29
#define AD_DMARESIBC    0x84    /* RES interrupt base count */
30
#define AD_DMAADCICC    0x88    /* ADC interrupt current count */
31
#define AD_DMAADCIBC    0x8c    /* ADC interrupt base count */
32
#define AD_DMASYNICC    0x90    /* SYN interrupt current count */
33
#define AD_DMASYNIBC    0x94    /* SYN interrupt base count */
34
#define AD_DMAWAVICC    0x98    /* WAV interrupt current count */
35
#define AD_DMAWAVIBC    0x9c    /* WAV interrupt base count */
36
#define AD_DMARESCTRL   0xa0    /* RES PCI control/status */
37
#define AD_DMAADCCTRL   0xa8    /* RES PCI control/status */
38
#define AD_DMASYNCTRL   0xb0    /* RES PCI control/status */
39
#define AD_DMAWAVCTRL   0xb8    /* RES PCI control/status */
40
#define AD_DMADISR      0xc0    /* PCI DMA intr status */
41
#define AD_DMACHSS      0xc4    /* PCI DMA channel stop status */
42
 
43
#define AD_GPIOIPC      0xc8    /* IO port ctrl */
44
#define AD_GPIOOP       0xca    /* IO output status */
45
#define AD_GPIOIP       0xcc    /* IO input status */
46
 
47
/* AC97 registers, 0x100 - 0x17f; see ac97.h */
48
#define AD_ACIC         0x180   /* AC Link interface ctrl */
49
 
50
/* OPL3; BAR1 */
51
#define AD_OPLM0AS      0x00    /* Music0 address/status */
52
#define AD_OPLM0DATA    0x01    /* Music0 data */
53
#define AD_OPLM1A       0x02    /* Music1 address */
54
#define AD_OPLM1DATA    0x03    /* Music1 data */
55
/* 0x04-0x0f reserved */
56
 
57
/* MIDI; BAR2 */
58
#define AD_MIDA         0x00    /* MIDI data */
59
#define AD_MISC         0x01    /* MIDI status/cmd */
60
/* 0x02-0xff reserved */
61
 
62
#define AD_DSIOMEMSIZE  512
63
#define AD_OPLMEMSIZE   16
64
#define AD_MIDIMEMSIZE  16
65
 
66
#define AD_WAV_STATE    0
67
#define AD_ADC_STATE    1
68
#define AD_MAX_STATES   2
69
 
70
#define DMA_SIZE        (128*1024)
71
 
72
#define DMA_FLAG_MAPPED 1
73
 
74
struct ad1889_dev;
75
 
76
typedef struct ad1889_state {
77
        struct ad1889_dev *card;
78
 
79
        mode_t open_mode;
80
        struct dmabuf {
81
                unsigned int rate;
82
                unsigned char fmt, enable;
83
 
84
                /* buf management */
85
                size_t rawbuf_size;
86
                void *rawbuf;
87
                dma_addr_t dma_handle;  /* mapped address */
88
                unsigned long dma_len;  /* number of bytes mapped */
89
 
90
                /* indexes into rawbuf for setting up DMA engine */
91
                volatile unsigned long rd_ptr, wr_ptr;
92
 
93
                wait_queue_head_t wait; /* to wait for buf servicing */
94
 
95
                /* OSS bits */
96
                unsigned int mapped:1;
97
                unsigned int ready:1;
98
                unsigned int ossfragshift;
99
                int ossmaxfrags;
100
                unsigned int subdivision;
101
        } dmabuf;
102
 
103
        struct semaphore sem;
104
} ad1889_state_t;
105
 
106
typedef struct ad1889_dev {
107
        unsigned long regbase;
108
        struct pci_dev *pci;
109
 
110
        spinlock_t lock;
111
 
112
        int dev_audio;
113
 
114
        /* states; one per channel; right now only WAV and ADC */
115
        struct ad1889_state state[AD_MAX_STATES];
116
 
117
        /* AC97 codec */
118
        struct ac97_codec *ac97_codec;
119
        u16 ac97_features;
120
 
121
        /* debugging stuff */
122
        struct stats {
123
                unsigned int wav_intrs, adc_intrs;
124
                unsigned int blocks, underrun, error;
125
        } stats;
126
} ad1889_dev_t;
127
 
128
typedef struct ad1889_reg {
129
        const char *name;
130
        int offset;
131
        int width;
132
} ad1889_reg_t;
133
 
134
#endif

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.