diff options
Diffstat (limited to 'kernel/drv/oss_via823x/via8233.h')
-rw-r--r-- | kernel/drv/oss_via823x/via8233.h | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/kernel/drv/oss_via823x/via8233.h b/kernel/drv/oss_via823x/via8233.h new file mode 100644 index 0000000..7d2ad37 --- /dev/null +++ b/kernel/drv/oss_via823x/via8233.h @@ -0,0 +1,97 @@ +/* + * Purpose: Definitions for the via8233 driver + */ +/* + * + * This file is part of Open Sound System. + * + * Copyright (C) 4Front Technologies 1996-2008. + * + * This this source file is released under GPL v2 license (no other versions). + * See the COPYING file included in the main directory of this source + * distribution for the license terms and conditions. + * + */ +#define VIA_VENDOR_ID 0x1106 +#define VIA_8233_ID 0x3059 +#define VIA_8233A_ID 0x7059 + +#define PLAY_SGD_NUM 1 +#define REC_SGD_NUM 0 +#define MAX_ENGINES 2 +#define MAX_PORTC 2 + +#define SGD_SIZE 256 +#define SGD_ALLOC 4096 +#define SGD_EOL 0x80000000 +#define SGD_FLAG 0x40000000 + +#define CODEC_TIMEOUT_COUNT 500 +#define AC97CODEC 0x80 /*Access AC97 Codec */ +#define IN_CMD 0x01000000 /*busy in sending */ +#define STA_VALID 0x02000000 /*1:status data is valid */ +#define CODEC_RD 0x00800000 /*Read CODEC status */ +#define CODEC_INDEX 0x007F0000 /*Index of command register to access */ +#define CODEC_DATA 0x0000FFFF /*AC97 status register data */ + +typedef struct +{ + unsigned int phaddr; + unsigned int flags; +} +SGD_entry; + +struct via8233_portc; + +typedef struct +{ + int sgd_num, base; + oss_dma_handle_t sgd_dma_handle; + int mode; + SGD_entry *sgd; + oss_native_word sgd_phys; + int sgd_ptr; + int prev_sgd; + int cfrag; + unsigned int prevpos; + short frags[SGD_SIZE]; + struct via8233_portc *portc; +} +engine_desc; + +typedef struct via8233_portc +{ + int audiodev; + int open_mode; + int mode_mask; + int speed, bits, channels; + engine_desc *play_engine, *rec_engine; + int trigger_bits; + int audio_enabled; +} +via8233_portc; + + +typedef struct via8233_devc +{ + oss_device_t *osdev; + int chip_type; +#define CHIP_8233 0 +#define CHIP_8233A 1 + char *chip_name; + int multi_channel_active; + oss_native_word base; + int irq; + int open_mode; + oss_mutex_t mutex; /* For normal locking */ + oss_mutex_t low_mutex; /* For low level routines */ +/* + * Mixer + */ + ac97_devc ac97devc; + int mixer_dev; + + via8233_portc portc[MAX_PORTC]; + engine_desc engines[MAX_ENGINES]; +} +via8233_devc; |