etc/services - sync with NetBSD-8
[minix.git] / minix / drivers / audio / als4000 / als4000.h
blob5e74b628359b678181d2a1db77df192f6d84df24
1 #ifndef _SDR_H
2 #define _SDR_H
3 /* ======= General Parameter ======= */
4 /* Global configure */
5 #define MIXER_SB16
7 #include <minix/audio_fw.h>
8 #include <sys/types.h>
9 #include <sys/ioc_sound.h>
10 #include <minix/sound.h>
11 #include <machine/pci.h>
12 #include <sys/mman.h>
13 #include "io.h"
15 /* Subdevice type */
16 #define DAC 0
17 #define ADC 1
18 #define MIX 2
20 /* PCI number and driver name */
21 #define VENDOR_ID 0x4005
22 #define DEVICE_ID 0x4000
23 #define DRIVER_NAME "ALS4000"
25 /* Volume option */
26 #define GET_VOL 0
27 #define SET_VOL 1
29 /* Interrupt control */
30 #define INTR_ENABLE 1
31 #define INTR_DISABLE 0
33 /* Interrupt status */
34 #define INTR_STS_DAC 0x80
35 #define INTR_STS_ADC 0x40
37 /* ======= Self-defined Parameter ======= */
38 #define REG_MIXER_ADDR 0x04
39 #define REG_MIXER_DATA 0x05
40 #define REG_GCR_DATA 0x08
41 #define REG_GCR_INDEX 0x0c
42 #define REG_INTR_STS 0x0e
43 #define REG_INTR_CTRL 0x8c
44 #define REG_DMA_EM_CTRL 0x99
46 #define REG_DAC_DMA_ADDR 0x91
47 #define REG_DAC_DMA_LEN 0x92
48 #define REG_DAC_CUR_ADDR 0xa0
49 #define REG_ADC_DMA_ADDR 0xa2
50 #define REG_ADC_DMA_LEN 0xa3
51 #define REG_ADC_CUR_ADDR 0xa4
53 #define REG_SB_CONFIG 0x00
54 #define REG_SB_RESET 0x06
55 #define REG_SB_READ 0x0a
56 #define REG_SB_CMD 0x0c
57 #define REG_SB_DATA 0x0e
58 #define REG_SB_BASE 0x10
59 #define REG_SB_FIFO_LEN_LO 0x1c
60 #define REG_SB_FIFO_LEN_HI 0x1d
61 #define REG_SB_FIFO_CTRL 0x1e
62 #define REG_SB_DMA_SETUP 0x81
63 #define REG_SB_IRQ_STATUS 0x82
64 #define REG_SB_CTRL 0xc0
66 #define CMD_MIXER_WRITE_ENABLE 0x80
67 #define CMD_SOUND_ON 0xd1
68 #define CMD_INTR_ENABLE 0x28000
69 #define CMD_SAMPLE_RATE_OUT 0x41
70 #define CMD_SIGN_MONO 0x10
71 #define CMD_SIGN_STEREO 0x30
72 #define CMD_UNSIGN_MONO 0x00
73 #define CMD_UNSIGN_STEREO 0x20
74 #define CMD_BIT16_AI 0xb6
75 #define CMD_BIT16_DMA_OFF 0xd5
76 #define CMD_BIT16_DMA_ON 0xd6
77 #define CMD_BIT8_AI 0xc6
78 #define CMD_BIT8_DMA_OFF 0xd0
79 #define CMD_BIT8_DMA_ON 0xd4
81 #define CMD_REC_WIDTH8 0x04
82 #define CMD_REC_STEREO 0x20
83 #define CMD_REC_SIGN 0x10
85 static u32_t g_sample_rate[] = {
86 5512, 11025, 22050, 44100, 8000, 16000, 32000, 48000
89 /* Driver Data Structure */
90 typedef struct aud_sub_dev_conf_t {
91 u32_t stereo;
92 u16_t sample_rate;
93 u32_t nr_of_bits;
94 u32_t sign;
95 u32_t busy;
96 u32_t fragment_size;
97 u8_t format;
98 } aud_sub_dev_conf_t;
100 typedef struct DEV_STRUCT {
101 char *name;
102 u16_t vid;
103 u16_t did;
104 u32_t devind;
105 u32_t base[6];
106 char irq;
107 char revision;
108 u32_t intr_status;
109 } DEV_STRUCT;
111 void dev_mixer_write(u32_t *base, u32_t reg, u32_t val);
112 u32_t dev_mixer_read(u32_t *base, u32_t reg);
114 #endif