Open Sound System |
Do you have problems with sound/audio application development? Don't panic! Click here for help! |
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 PCI_SUBDEVICE_ID_CREATIVE_SB0760 0x0024 #define PCI_SUBDEVICE_ID_CREATIVE_SB08801 0x0041 #define PCI_SUBDEVICE_ID_CREATIVE_SB08802 0x0042 #define PCI_SUBDEVICE_ID_CREATIVE_SB08803 0x0043 #define MAX_OUTPUTDEVS 1 #define MAX_INPUTDEVS 1 #define SUPPORTED_FORMAT (AFMT_S16_LE) #define MIXER_VOLSTEPS 144 /* Centibel steps */ //#define MAX_PLAY_CHANNELS 6 /* Does not work */ #define MAX_PLAY_CHANNELS 2 #if 0 typedef unsigned char CTBYTE, *PCTBYTE; typedef unsigned short unsigned short, *Punsigned short; typedef signed short CTSHORT, *PCTSHORT; typedef unsigned int unsigned int, *unsigned int *; typedef signed long CTLONG, *PCTLONG; typedef void CTVOID, *PCTVOID; typedef unsigned int CTBOOL, *PCTBOOL; typedef unsigned int CTUINT, *PCTUINT; #endif #ifndef TRUE #define TRUE 1 #endif #ifndef FALSE #define FALSE 0 #endif typedef unsigned int CTSTATUS; typedef oss_native_word IOADDR; enum GlobalErrorCode { CTSTATUS_SUCCESS = 0x0000, CTSTATUS_ERROR, CTSTATUS_INVALIDPARAM, CTSTATUS_NOTSUPPORTED, CTSTATUS_NOMEMORY, CTSTATUS_INVALIDIO, CTSTATUS_INVALIDIRQ, CTSTATUS_INVALIDDMA, CTSTATUS_INVALIDID, CTSTATUS_INVALIDVALUE, CTSTATUS_BADFORMAT_BITS, CTSTATUS_BADFORMAT_RATE, CTSTATUS_BADFORMAT_CHANNELS, CTSTATUS_INUSE, CTSTATUS_STILLPLAYING, CTSTATUS_ALLOCATED, CTSTATUS_INVALID_FORMAT, CTSTATUS_OUT_OF_RESOURCE, CTSTATUS_CHIP_INUSE, CTSTATUS_NOCHIPRESOURCE, CTSTATUS_PORTS_INUSE, CTSTATUS_EXIT, CTSTATUS_FAILURE }; #define ADC_SRC_MICIN 0x0 #define ADC_SRC_LINEIN 0x1 #define ADC_SRC_VIDEO 0x2 #define ADC_SRC_AUX 0x3 #define ADC_SRC_NONE 0x4 typedef struct { char *name; int dev; int open_mode; int fmt; int dev_flags; int direction; int state_bits; int pgtable_index; // Pointer to the first page table entry int running; int channels; unsigned int rate; // Audio Ring resources unsigned int SrcChan; unsigned int dwDAChan[MAX_PLAY_CHANNELS]; // Play volumes int vol_left, vol_right; } sbxfi_portc_t; typedef struct { oss_device_t *osdev; oss_mutex_t mutex; oss_mutex_t low_mutex; char *name; int hw_family; // 20K1 models #define HW_ORIG 0x0001 #define HW_073x 0x0002 #define HW_055x 0x0004 #define HW_UAA 0x0008 // 20K2 models #define HW_0760 0x0010 #define HW_08801 0x0020 #define HW_08802 0x0040 #define HW_08803 0x0080 unsigned int interrupt_count; // Hardware IDs unsigned short wVendorID; unsigned short wDeviceID; unsigned short wSubsystemVendorID; unsigned short wSubsystemID; unsigned short wChipRevision; // Hardware Resources unsigned int dwMemBase; unsigned short wIOPortBase; // Buffers oss_native_word dwPTBPhysAddx; unsigned int *pdwPageTable; unsigned int dwPageTableSize; oss_dma_handle_t pgtable_dma_handle; int next_pg; /* Next free index in the page table */ sbxfi_portc_t play_portc[MAX_OUTPUTDEVS]; int nr_outdevs; sbxfi_portc_t rec_portc[MAX_INPUTDEVS]; int nr_indevs; // Mixer int mixer_dev; // Audio int first_dev; int next_src; // Next free SRC channel sbxfi_portc_t *src_to_portc[256]; } sbxfi_devc_t;