diff options
Diffstat (limited to 'attic/drv/oss_allegro/kernel.h')
-rw-r--r-- | attic/drv/oss_allegro/kernel.h | 1042 |
1 files changed, 1042 insertions, 0 deletions
diff --git a/attic/drv/oss_allegro/kernel.h b/attic/drv/oss_allegro/kernel.h new file mode 100644 index 0000000..6a6db12 --- /dev/null +++ b/attic/drv/oss_allegro/kernel.h @@ -0,0 +1,1042 @@ +/****************************************************************************** + * * + * (C) 1997-1999 ESS Technology, Inc. * + * * + * This source code, its compiled object code, and its associated data sets * + * are copyright (C) 1997-1999 ESS Technology, Inc. This source code and its * + * associated data sets are trade secrets of ESS Technology, Inc. * + * * + ******************************************************************************/ + +/*--------------------------------------------------------------------------- + * Copyright (C) 1997-1999, ESS Technology, Inc. + *--------------------------------------------------------------------------- + * FILENAME: kernel.h V2.10 08/19/99 + *--------------------------------------------------------------------------- + * DESCRIPTION: Header file for Maestro 3/Allegro host kernel + *--------------------------------------------------------------------------- + * AUTHOR: Henry Tang / Hong Kim /Alger Yeung/Don Kim + *--------------------------------------------------------------------------- + * HISTORY: + * 09/03/97 HT Created. + * 05/21/99 AY SwitchClient flags + * 07/29/99 AY Adding 4-speaker support + * 08/18/99 AY Adding SPDIF IN support + * 08/18/99 AY Adding SPDIF IN support + * 08/18/99 AY Remove PIO and SoundBlaster support + * 08/18/99 AY Reduce Cpythru to 2 instances instead of 4 + * 09/22/99 HK M3I feature + *--------------------------------------------------------------------------- + */ + + +#ifndef __KERNEL_H +#define __KERNEL_H + +/* */ +/* client IDs */ +/* */ +/* FM client is a special case */ +/* */ + +#define CLIENT_CPYTHRU 0 +#define CLIENT_MODEM 1 +#define CLIENT_POS3D 2 +#define CLIENT_SPKVIRT 3 +#define CLIENT_SPKVIRT_CRL 4 +#define CLIENT_SRC 5 +#define CLIENT_MINISRC 6 +#define CLIENT_SPDIF 7 +#define NUMBER_OF_CLIENTS (CLIENT_SPDIF + 1) + +#define CLIENT_FM NUMBER_OF_CLIENTS + +#define MASK_CLIENT_CPYTHRU (1 << CLIENT_CPYTHRU ) +#define MASK_CLIENT_MODEM (1 << CLIENT_MODEM ) +#define MASK_CLIENT_POS3D (1 << CLIENT_POS3D ) +#define MASK_CLIENT_SPKVIRT (1 << CLIENT_SPKVIRT ) +#define MASK_CLIENT_SPKVIRT_CRL (1 << CLIENT_SPKVIRT_CRL) +#define MASK_CLIENT_SRC (1 << CLIENT_SRC ) +#define MASK_CLIENT_MINISRC (1 << CLIENT_MINISRC ) +#define MASK_CLIENT_SPDIF (1 << CLIENT_SPDIF ) + +/* WARNING! DANGER! WARNING! DANGER! WARNING! DANGER! WARNING! DANGER! */ +/* */ +/* If you modify any memory map and/or definitions below be sure to reflect */ +/* the changes in the DSP version found in KERNEL.INC. */ +/* */ +/* WARNING! DANGER! WARNING! DANGER! WARNING! DANGER! WARNING! DANGER! */ + + +/* */ +/* DSP memory map */ +/* */ + +#define REV_A_CODE_MEMORY_BEGIN 0x0000 +#define REV_A_CODE_MEMORY_END 0x0FFF +#define REV_A_CODE_MEMORY_UNIT_LENGTH 0x0040 +#define REV_A_CODE_MEMORY_LENGTH (REV_A_CODE_MEMORY_END - REV_A_CODE_MEMORY_BEGIN + 1) + +#define REV_B_CODE_MEMORY_BEGIN 0x0000 +#define REV_B_CODE_MEMORY_END 0x0BFF +#define REV_B_CODE_MEMORY_UNIT_LENGTH 0x0040 +#define REV_B_CODE_MEMORY_LENGTH (REV_B_CODE_MEMORY_END - REV_B_CODE_MEMORY_BEGIN + 1) + +#if (REV_A_CODE_MEMORY_LENGTH % REV_A_CODE_MEMORY_UNIT_LENGTH) +#error Assumption about code memory unit length failed. +#endif +#if (REV_B_CODE_MEMORY_LENGTH % REV_B_CODE_MEMORY_UNIT_LENGTH) +#error Assumption about code memory unit length failed. +#endif + +#define REV_A_DATA_MEMORY_BEGIN 0x1000 +#define REV_A_DATA_MEMORY_END 0x2FFF +#define REV_A_DATA_MEMORY_UNIT_LENGTH 0x0080 +#define REV_A_DATA_MEMORY_LENGTH (REV_A_DATA_MEMORY_END - REV_A_DATA_MEMORY_BEGIN + 1) + +#define REV_B_DATA_MEMORY_BEGIN 0x1000 +/*#define REV_B_DATA_MEMORY_END 0x23FF */ +#define REV_B_DATA_MEMORY_END 0x2BFF +#define REV_B_DATA_MEMORY_UNIT_LENGTH 0x0080 +#define REV_B_DATA_MEMORY_LENGTH (REV_B_DATA_MEMORY_END - REV_B_DATA_MEMORY_BEGIN + 1) + +#if (REV_A_DATA_MEMORY_LENGTH % REV_A_DATA_MEMORY_UNIT_LENGTH) +#error Assumption about data memory unit length failed. +#endif +#if (REV_B_DATA_MEMORY_LENGTH % REV_B_DATA_MEMORY_UNIT_LENGTH) +#error Assumption about data memory unit length failed. +#endif + +#define CODE_MEMORY_MAP_LENGTH (64 + 1) +#define DATA_MEMORY_MAP_LENGTH (64 + 1) + +#if (CODE_MEMORY_MAP_LENGTH < ((REV_A_CODE_MEMORY_LENGTH / REV_A_CODE_MEMORY_UNIT_LENGTH) + 1)) +#error Code memory map length too short. +#endif +#if (DATA_MEMORY_MAP_LENGTH < ((REV_A_DATA_MEMORY_LENGTH / REV_A_DATA_MEMORY_UNIT_LENGTH) + 1)) +#error Data memory map length too short. +#endif +#if (CODE_MEMORY_MAP_LENGTH < ((REV_B_CODE_MEMORY_LENGTH / REV_B_CODE_MEMORY_UNIT_LENGTH) + 1)) +#error Code memory map length too short. +#endif +#if (DATA_MEMORY_MAP_LENGTH < ((REV_B_DATA_MEMORY_LENGTH / REV_B_DATA_MEMORY_UNIT_LENGTH) + 1)) +#error Data memory map length too short. +#endif + + +/* */ +/* Kernel code memory definition */ +/* */ + +#define KCODE_VECTORS_BEGIN 0x0000 +#define KCODE_VECTORS_END 0x002F +#define KCODE_VECTORS_UNIT_LENGTH 0x0002 +#define KCODE_VECTORS_LENGTH (KCODE_VECTORS_END - KCODE_VECTORS_BEGIN + 1) + + +/* */ +/* Kernel data memory definition */ +/* */ + +#define KDATA_BASE_ADDR 0x1000 +#define KDATA_BASE_ADDR2 0x1080 + +#define KDATA_TASK0 (KDATA_BASE_ADDR + 0x0000) +#define KDATA_TASK1 (KDATA_BASE_ADDR + 0x0001) +#define KDATA_TASK2 (KDATA_BASE_ADDR + 0x0002) +#define KDATA_TASK3 (KDATA_BASE_ADDR + 0x0003) +#define KDATA_TASK4 (KDATA_BASE_ADDR + 0x0004) +#define KDATA_TASK5 (KDATA_BASE_ADDR + 0x0005) +#define KDATA_TASK6 (KDATA_BASE_ADDR + 0x0006) +#define KDATA_TASK7 (KDATA_BASE_ADDR + 0x0007) +#define KDATA_TASK_ENDMARK (KDATA_BASE_ADDR + 0x0008) + +#define KDATA_CURRENT_TASK (KDATA_BASE_ADDR + 0x0009) +#define KDATA_TASK_SWITCH (KDATA_BASE_ADDR + 0x000A) + +#define KDATA_INSTANCE0_POS3D (KDATA_BASE_ADDR + 0x000B) +#define KDATA_INSTANCE1_POS3D (KDATA_BASE_ADDR + 0x000C) +#define KDATA_INSTANCE2_POS3D (KDATA_BASE_ADDR + 0x000D) +#define KDATA_INSTANCE3_POS3D (KDATA_BASE_ADDR + 0x000E) +#define KDATA_INSTANCE4_POS3D (KDATA_BASE_ADDR + 0x000F) +#define KDATA_INSTANCE5_POS3D (KDATA_BASE_ADDR + 0x0010) +#define KDATA_INSTANCE6_POS3D (KDATA_BASE_ADDR + 0x0011) +#define KDATA_INSTANCE7_POS3D (KDATA_BASE_ADDR + 0x0012) +#define KDATA_INSTANCE8_POS3D (KDATA_BASE_ADDR + 0x0013) +#define KDATA_INSTANCE_POS3D_ENDMARK (KDATA_BASE_ADDR + 0x0014) + +#define KDATA_INSTANCE0_SPKVIRT (KDATA_BASE_ADDR + 0x0015) +#define KDATA_INSTANCE_SPKVIRT_ENDMARK (KDATA_BASE_ADDR + 0x0016) + +#define KDATA_INSTANCE0_SPDIF (KDATA_BASE_ADDR + 0x0017) +#define KDATA_INSTANCE_SPDIF_ENDMARK (KDATA_BASE_ADDR + 0x0018) + +#define KDATA_INSTANCE0_MODEM (KDATA_BASE_ADDR + 0x0019) +#define KDATA_INSTANCE_MODEM_ENDMARK (KDATA_BASE_ADDR + 0x001A) + +#define KDATA_INSTANCE0_SRC (KDATA_BASE_ADDR + 0x001B) +#define KDATA_INSTANCE1_SRC (KDATA_BASE_ADDR + 0x001C) +#define KDATA_INSTANCE_SRC_ENDMARK (KDATA_BASE_ADDR + 0x001D) + +#define KDATA_INSTANCE0_MINISRC (KDATA_BASE_ADDR + 0x001E) +#define KDATA_INSTANCE1_MINISRC (KDATA_BASE_ADDR + 0x001F) +#define KDATA_INSTANCE2_MINISRC (KDATA_BASE_ADDR + 0x0020) +#define KDATA_INSTANCE3_MINISRC (KDATA_BASE_ADDR + 0x0021) +#define KDATA_INSTANCE_MINISRC_ENDMARK (KDATA_BASE_ADDR + 0x0022) + +#define KDATA_INSTANCE0_CPYTHRU (KDATA_BASE_ADDR + 0x0023) +#define KDATA_INSTANCE1_CPYTHRU (KDATA_BASE_ADDR + 0x0024) +#define KDATA_INSTANCE_CPYTHRU_ENDMARK (KDATA_BASE_ADDR + 0x0025) + +#define KDATA_CURRENT_DMA (KDATA_BASE_ADDR + 0x0026) +#define KDATA_DMA_SWITCH (KDATA_BASE_ADDR + 0x0027) +#define KDATA_DMA_ACTIVE (KDATA_BASE_ADDR + 0x0028) + +#define KDATA_DMA_XFER0 (KDATA_BASE_ADDR + 0x0029) +#define KDATA_DMA_XFER1 (KDATA_BASE_ADDR + 0x002A) +#define KDATA_DMA_XFER2 (KDATA_BASE_ADDR + 0x002B) +#define KDATA_DMA_XFER3 (KDATA_BASE_ADDR + 0x002C) +#define KDATA_DMA_XFER4 (KDATA_BASE_ADDR + 0x002D) +#define KDATA_DMA_XFER5 (KDATA_BASE_ADDR + 0x002E) +#define KDATA_DMA_XFER6 (KDATA_BASE_ADDR + 0x002F) +#define KDATA_DMA_XFER7 (KDATA_BASE_ADDR + 0x0030) +#define KDATA_DMA_XFER8 (KDATA_BASE_ADDR + 0x0031) +#define KDATA_DMA_XFER_ENDMARK (KDATA_BASE_ADDR + 0x0032) + +#define KDATA_I2S_SAMPLE_COUNT (KDATA_BASE_ADDR + 0x0033) +#define KDATA_I2S_INT_METER (KDATA_BASE_ADDR + 0x0034) +#define KDATA_I2S_ACTIVE (KDATA_BASE_ADDR + 0x0035) + +#define KDATA_TIMER_COUNT_RELOAD (KDATA_BASE_ADDR + 0x0036) +#define KDATA_TIMER_COUNT_CURRENT (KDATA_BASE_ADDR + 0x0037) + +#define KDATA_HALT_SYNCH_CLIENT (KDATA_BASE_ADDR + 0x0038) +#define KDATA_HALT_SYNCH_DMA (KDATA_BASE_ADDR + 0x0039) +#define KDATA_HALT_ACKNOWLEDGE (KDATA_BASE_ADDR + 0x003A) + +#define KDATA_ADC1_XFER0 (KDATA_BASE_ADDR + 0x003B) +#define KDATA_ADC1_XFER_ENDMARK (KDATA_BASE_ADDR + 0x003C) +#define KDATA_ADC1_LEFT_VOLUME (KDATA_BASE_ADDR + 0x003D) +#define KDATA_ADC1_RIGHT_VOLUME (KDATA_BASE_ADDR + 0x003E) +#define KDATA_ADC1_LEFT_SUR_VOL (KDATA_BASE_ADDR + 0x003F) +#define KDATA_ADC1_RIGHT_SUR_VOL (KDATA_BASE_ADDR + 0x0040) + +#define KDATA_ADC2_XFER0 (KDATA_BASE_ADDR + 0x0041) +#define KDATA_ADC2_XFER_ENDMARK (KDATA_BASE_ADDR + 0x0042) +#define KDATA_ADC2_LEFT_VOLUME (KDATA_BASE_ADDR + 0x0043) +#define KDATA_ADC2_RIGHT_VOLUME (KDATA_BASE_ADDR + 0x0044) +#define KDATA_ADC2_LEFT_SUR_VOL (KDATA_BASE_ADDR + 0x0045) +#define KDATA_ADC2_RIGHT_SUR_VOL (KDATA_BASE_ADDR + 0x0046) + +#define KDATA_CD_XFER0 (KDATA_BASE_ADDR + 0x0047) +#define KDATA_CD_XFER_ENDMARK (KDATA_BASE_ADDR + 0x0048) +#define KDATA_CD_LEFT_VOLUME (KDATA_BASE_ADDR + 0x0049) +#define KDATA_CD_RIGHT_VOLUME (KDATA_BASE_ADDR + 0x004A) +#define KDATA_CD_LEFT_SUR_VOL (KDATA_BASE_ADDR + 0x004B) +#define KDATA_CD_RIGHT_SUR_VOL (KDATA_BASE_ADDR + 0x004C) + +#define KDATA_MIC_XFER0 (KDATA_BASE_ADDR + 0x004D) +#define KDATA_MIC_XFER_ENDMARK (KDATA_BASE_ADDR + 0x004E) +#define KDATA_MIC_VOLUME (KDATA_BASE_ADDR + 0x004F) +#define KDATA_MIC_SUR_VOL (KDATA_BASE_ADDR + 0x0050) + +#define KDATA_I2S_XFER0 (KDATA_BASE_ADDR + 0x0051) +#define KDATA_I2S_XFER_ENDMARK (KDATA_BASE_ADDR + 0x0052) + +#define KDATA_CHI_XFER0 (KDATA_BASE_ADDR + 0x0053) +#define KDATA_CHI_XFER_ENDMARK (KDATA_BASE_ADDR + 0x0054) + +#define KDATA_SPDIF_XFER (KDATA_BASE_ADDR + 0x0055) +#define KDATA_SPDIF_CURRENT_FRAME (KDATA_BASE_ADDR + 0x0056) +#define KDATA_SPDIF_FRAME0 (KDATA_BASE_ADDR + 0x0057) +#define KDATA_SPDIF_FRAME1 (KDATA_BASE_ADDR + 0x0058) +#define KDATA_SPDIF_FRAME2 (KDATA_BASE_ADDR + 0x0059) + +#define KDATA_SPDIF_REQUEST (KDATA_BASE_ADDR + 0x005A) +#define KDATA_SPDIF_TEMP (KDATA_BASE_ADDR + 0x005B) + +/*AY SPDIF IN */ +#define KDATA_SPDIFIN_XFER0 (KDATA_BASE_ADDR + 0x005C) +#define KDATA_SPDIFIN_XFER_ENDMARK (KDATA_BASE_ADDR + 0x005D) +#define KDATA_SPDIFIN_INT_METER (KDATA_BASE_ADDR + 0x005E) + +#define KDATA_DSP_RESET_COUNT (KDATA_BASE_ADDR + 0x005F) +#define KDATA_DEBUG_OUTPUT (KDATA_BASE_ADDR + 0x0060) + +#define KDATA_KERNEL_ISR_LIST (KDATA_BASE_ADDR + 0x0061) + +#define KDATA_KERNEL_ISR_CBSR1 (KDATA_BASE_ADDR + 0x0062) +#define KDATA_KERNEL_ISR_CBER1 (KDATA_BASE_ADDR + 0x0063) +#define KDATA_KERNEL_ISR_CBCR (KDATA_BASE_ADDR + 0x0064) +#define KDATA_KERNEL_ISR_AR0 (KDATA_BASE_ADDR + 0x0065) +#define KDATA_KERNEL_ISR_AR1 (KDATA_BASE_ADDR + 0x0066) +#define KDATA_KERNEL_ISR_AR2 (KDATA_BASE_ADDR + 0x0067) +#define KDATA_KERNEL_ISR_AR3 (KDATA_BASE_ADDR + 0x0068) +#define KDATA_KERNEL_ISR_AR4 (KDATA_BASE_ADDR + 0x0069) +#define KDATA_KERNEL_ISR_AR5 (KDATA_BASE_ADDR + 0x006A) +#define KDATA_KERNEL_ISR_BRCR (KDATA_BASE_ADDR + 0x006B) +#define KDATA_KERNEL_ISR_PASR (KDATA_BASE_ADDR + 0x006C) +#define KDATA_KERNEL_ISR_PAER (KDATA_BASE_ADDR + 0x006D) + +#define KDATA_CLIENT_SCRATCH0 (KDATA_BASE_ADDR + 0x006E) +#define KDATA_CLIENT_SCRATCH1 (KDATA_BASE_ADDR + 0x006F) +#define KDATA_KERNEL_SCRATCH (KDATA_BASE_ADDR + 0x0070) +#define KDATA_KERNEL_ISR_SCRATCH (KDATA_BASE_ADDR + 0x0071) + +#define KDATA_OUEUE_LEFT (KDATA_BASE_ADDR + 0x0072) +#define KDATA_QUEUE_RIGHT (KDATA_BASE_ADDR + 0x0073) + +#define KDATA_ADC1_REQUEST (KDATA_BASE_ADDR + 0x0074) +#define KDATA_ADC2_REQUEST (KDATA_BASE_ADDR + 0x0075) +#define KDATA_CD_REQUEST (KDATA_BASE_ADDR + 0x0076) +#define KDATA_MIC_REQUEST (KDATA_BASE_ADDR + 0x0077) + +#define KDATA_ADC1_MIXER_REQUEST (KDATA_BASE_ADDR + 0x0078) +#define KDATA_ADC2_MIXER_REQUEST (KDATA_BASE_ADDR + 0x0079) +#define KDATA_CD_MIXER_REQUEST (KDATA_BASE_ADDR + 0x007A) +#define KDATA_MIC_MIXER_REQUEST (KDATA_BASE_ADDR + 0x007B) +#define KDATA_MIC_SYNC_COUNTER (KDATA_BASE_ADDR + 0x007C) + + +/* */ +/* second segment */ +/* */ + +/* smart mixer buffer */ + +#define KDATA_MIXER_WORD0 (KDATA_BASE_ADDR2 + 0x0000) +#define KDATA_MIXER_WORD1 (KDATA_BASE_ADDR2 + 0x0001) +#define KDATA_MIXER_WORD2 (KDATA_BASE_ADDR2 + 0x0002) +#define KDATA_MIXER_WORD3 (KDATA_BASE_ADDR2 + 0x0003) +#define KDATA_MIXER_WORD4 (KDATA_BASE_ADDR2 + 0x0004) +#define KDATA_MIXER_WORD5 (KDATA_BASE_ADDR2 + 0x0005) +#define KDATA_MIXER_WORD6 (KDATA_BASE_ADDR2 + 0x0006) +#define KDATA_MIXER_WORD7 (KDATA_BASE_ADDR2 + 0x0007) +#define KDATA_MIXER_WORD8 (KDATA_BASE_ADDR2 + 0x0008) +#define KDATA_MIXER_WORD9 (KDATA_BASE_ADDR2 + 0x0009) +#define KDATA_MIXER_WORDA (KDATA_BASE_ADDR2 + 0x000A) +#define KDATA_MIXER_WORDB (KDATA_BASE_ADDR2 + 0x000B) +#define KDATA_MIXER_WORDC (KDATA_BASE_ADDR2 + 0x000C) +#define KDATA_MIXER_WORDD (KDATA_BASE_ADDR2 + 0x000D) +#define KDATA_MIXER_WORDE (KDATA_BASE_ADDR2 + 0x000E) +#define KDATA_MIXER_WORDF (KDATA_BASE_ADDR2 + 0x000F) + +#define KDATA_MIXER_XFER0 (KDATA_BASE_ADDR2 + 0x0010) +#define KDATA_MIXER_XFER1 (KDATA_BASE_ADDR2 + 0x0011) +#define KDATA_MIXER_XFER2 (KDATA_BASE_ADDR2 + 0x0012) +#define KDATA_MIXER_XFER3 (KDATA_BASE_ADDR2 + 0x0013) +#define KDATA_MIXER_XFER4 (KDATA_BASE_ADDR2 + 0x0014) +#define KDATA_MIXER_XFER5 (KDATA_BASE_ADDR2 + 0x0015) +#define KDATA_MIXER_XFER6 (KDATA_BASE_ADDR2 + 0x0016) +#define KDATA_MIXER_XFER7 (KDATA_BASE_ADDR2 + 0x0017) +#define KDATA_MIXER_XFER8 (KDATA_BASE_ADDR2 + 0x0018) +#define KDATA_MIXER_XFER9 (KDATA_BASE_ADDR2 + 0x0019) +#define KDATA_MIXER_XFER_ENDMARK (KDATA_BASE_ADDR2 + 0x001A) + +#define KDATA_MIXER_TASK_NUMBER (KDATA_BASE_ADDR2 + 0x001B) +#define KDATA_CURRENT_MIXER (KDATA_BASE_ADDR2 + 0x001C) +#define KDATA_MIXER_ACTIVE (KDATA_BASE_ADDR2 + 0x001D) +#define KDATA_MIXER_BANK_STATUS (KDATA_BASE_ADDR2 + 0x001E) +#define KDATA_DAC_LEFT_VOLUME (KDATA_BASE_ADDR2 + 0x001F) +#define KDATA_DAC_RIGHT_VOLUME (KDATA_BASE_ADDR2 + 0x0020) + +/* AY */ +/* */ +/* 4 speaker support */ +/* */ + +#define KDATA_DAC2_REQUEST (KDATA_BASE_ADDR2 + 0x0021) + +#define KDATA_FMIXER_XFER0 (KDATA_BASE_ADDR2 + 0x0022) +#define KDATA_FMIXER_XFER_ENDMARK (KDATA_BASE_ADDR2 + 0x0023) + +#define KDATA_RMIXER_XFER0 (KDATA_BASE_ADDR2 + 0x0024) +#define KDATA_RMIXER_XFER_ENDMARK (KDATA_BASE_ADDR2 + 0x0025) + + +#if (REV_A_DATA_MEMORY_UNIT_LENGTH - 0x0080) +#error Assumption about DATA_MEMORY_UNIT_LENGTH size failed. +#endif + + +/* */ +/* Client data memory definition */ +/* */ + +#define CDATA_INSTANCE_READY 0x00 + +#define CDATA_HOST_SRC_ADDRL 0x01 +#define CDATA_HOST_SRC_ADDRH 0x02 +#define CDATA_HOST_SRC_END_PLUS_1L 0x03 +#define CDATA_HOST_SRC_END_PLUS_1H 0x04 +#define CDATA_HOST_SRC_CURRENTL 0x05 +#define CDATA_HOST_SRC_CURRENTH 0x06 + +#define CDATA_IN_BUF_CONNECT 0x07 +#define CDATA_OUT_BUF_CONNECT 0x08 + +#define CDATA_IN_BUF_BEGIN 0x09 +#define CDATA_IN_BUF_END_PLUS_1 0x0A +#define CDATA_IN_BUF_HEAD 0x0B +#define CDATA_IN_BUF_TAIL 0x0C + +#define CDATA_OUT_BUF_BEGIN 0x0D +#define CDATA_OUT_BUF_END_PLUS_1 0x0E +#define CDATA_OUT_BUF_HEAD 0x0F +#define CDATA_OUT_BUF_TAIL 0x10 + +#define CDATA_DMA_CONTROL 0x11 +#define CDATA_RESERVED 0x12 + +#define CDATA_FREQUENCY 0x13 +#define CDATA_LEFT_VOLUME 0x14 +#define CDATA_RIGHT_VOLUME 0x15 +#define CDATA_LEFT_SUR_VOL 0x16 +#define CDATA_RIGHT_SUR_VOL 0x17 + +#define CDATA_HEADER_LEN 0x18 + +/* */ +/* DMA control definition */ +/* */ + +#define DMACONTROL_BLOCK_MASK 0x000F +#define DMAC_BLOCK0_SELECTOR 0x0000 +#define DMAC_BLOCK1_SELECTOR 0x0001 +#define DMAC_BLOCK2_SELECTOR 0x0002 +#define DMAC_BLOCK3_SELECTOR 0x0003 +#define DMAC_BLOCK4_SELECTOR 0x0004 +#define DMAC_BLOCK5_SELECTOR 0x0005 +#define DMAC_BLOCK6_SELECTOR 0x0006 +#define DMAC_BLOCK7_SELECTOR 0x0007 +#define DMAC_BLOCK8_SELECTOR 0x0008 +#define DMAC_BLOCK9_SELECTOR 0x0009 +#define DMAC_BLOCKA_SELECTOR 0x000A +#define DMAC_BLOCKB_SELECTOR 0x000B +#define DMAC_BLOCKC_SELECTOR 0x000C +#define DMAC_BLOCKD_SELECTOR 0x000D +#define DMAC_BLOCKE_SELECTOR 0x000E +#define DMAC_BLOCKF_SELECTOR 0x000F +#define DMACONTROL_PAGE_MASK 0x00F0 +#define DMAC_PAGE0_SELECTOR 0x0030 +#define DMAC_PAGE1_SELECTOR 0x0020 +#define DMAC_PAGE2_SELECTOR 0x0010 +#define DMAC_PAGE3_SELECTOR 0x0000 +#define DMACONTROL_AUTOREPEAT 0x1000 +#define DMACONTROL_STOPPED 0x2000 +#define DMACONTROL_DIRECTION 0x0100 + + +/* */ +/* Direct mixer definition */ +/* */ + +#define DIRECTMIXER_ADC1 0x0001 +#define DIRECTMIXER_ADC2 0x0002 + + +/* */ +/* DSP to Host interrupt request definition */ +/* */ + +#define DSP2HOST_REQ_PIORECORD 0x01 +#define DSP2HOST_REQ_I2SRATE 0x02 +#define DSP2HOST_REQ_TIMER 0x04 + +/* */ +/* memory check code uses this areas */ +/* */ + +#define FLAGADD1 0x1400 /* dsp internal data */ +#define FLAGADD2 0x1800 /* dsp internal data */ +#define FLAGADD3 0x1000 /* dsp internal data */ + + +/* WARNING! DANGER! WARNING! DANGER! WARNING! DANGER! WARNING! DANGER! */ +/* */ +/* If you modify any memory map and/or definitions above be sure to reflect */ +/* the changes in the DSP version found in KERNEL.INC. */ +/* */ +/* WARNING! DANGER! WARNING! DANGER! WARNING! DANGER! WARNING! DANGER! */ + + +#define F_FREE 0x00 +#define F_USED 0x01 +#define F_END -1 + + +/* */ +/* Kernel/client memory allocation */ +/* */ + +#define NUM_UNITS_KERNEL_CODE 16 +#define NUM_UNITS_KERNEL_DATA 2 + +#define NUM_UNITS_KERNEL_CODE_WITH_HSP 16 +#ifdef NT_MODEL +#define NUM_UNITS_KERNEL_DATA_WITH_HSP 5 +#else +#define NUM_UNITS_KERNEL_DATA_WITH_HSP 4 +#endif + +#define NUM_UNITS( BYTES, UNITLEN ) ((((BYTES+1)>>1) + (UNITLEN-1)) / UNITLEN) + + +/* */ +/* Maximum instances */ +/* */ + +#define MAX_TASKS (KDATA_TASK_ENDMARK - KDATA_TASK0) + +#define MAX_INSTANCE_CPYTHRU (KDATA_INSTANCE_CPYTHRU_ENDMARK - KDATA_INSTANCE0_CPYTHRU) +#define MAX_INSTANCE_MODEM (KDATA_INSTANCE_MODEM_ENDMARK - KDATA_INSTANCE0_MODEM) +#define MAX_INSTANCE_POS3D (KDATA_INSTANCE_POS3D_ENDMARK - KDATA_INSTANCE0_POS3D) +#define MAX_INSTANCE_SPKVIRT (KDATA_INSTANCE_SPKVIRT_ENDMARK - KDATA_INSTANCE0_SPKVIRT) +#define MAX_INSTANCE_SRC (KDATA_INSTANCE_SRC_ENDMARK - KDATA_INSTANCE0_SRC) +#define MAX_INSTANCE_MINISRC (KDATA_INSTANCE_MINISRC_ENDMARK - KDATA_INSTANCE0_MINISRC) +#define MAX_INSTANCE_SPDIF (KDATA_INSTANCE_SPDIF_ENDMARK - KDATA_INSTANCE0_SPDIF) + +#define MAX_VIRTUAL_DMA_CHANNELS (KDATA_DMA_XFER_ENDMARK - KDATA_DMA_XFER0) +#define MAX_VIRTUAL_ADC1_CHANNELS (KDATA_ADC1_XFER_ENDMARK - KDATA_ADC1_XFER0) +#define MAX_VIRTUAL_ADC2_CHANNELS (KDATA_ADC2_XFER_ENDMARK - KDATA_ADC2_XFER0) +#define MAX_VIRTUAL_CD_CHANNELS (KDATA_CD_XFER_ENDMARK - KDATA_CD_XFER0) +#define MAX_VIRTUAL_MIC_CHANNELS (KDATA_MIC_XFER_ENDMARK - KDATA_MIC_XFER0) + +#define MAX_VIRTUAL_I2S_CHANNELS (KDATA_I2S_XFER_ENDMARK - KDATA_I2S_XFER0) +#define MAX_VIRTUAL_CHI_CHANNELS (KDATA_CHI_XFER_ENDMARK - KDATA_CHI_XFER0) +#define MAX_VIRTUAL_SOUNDBLASTER_CHANNELS (KDATA_SOUNDBLASTER_XFER_ENDMARK - KDATA_SOUNDBLASTER_XFER0) +#define MAX_VIRTUAL_SPDIFIN_CHANNELS (KDATA_SPDIFIN_XFER_ENDMARK - KDATA_SPDIFIN_XFER0) + +/*AY */ +#define MAX_VIRTUAL_MIXER_CHANNELS (KDATA_MIXER_XFER_ENDMARK - KDATA_MIXER_XFER0) +#define MAX_VIRTUAL_FMIXER_CHANNELS (KDATA_FMIXER_XFER_ENDMARK - KDATA_FMIXER_XFER0) +#define MAX_VIRTUAL_RMIXER_CHANNELS (KDATA_RMIXER_XFER_ENDMARK - KDATA_RMIXER_XFER0) + +/* */ +/* Hardware instance flags */ +/* */ + +#define HWI_FLAG_UNLOADED 0x00000001 +#define HWI_FLAG_I2S_SECONDPASS 0x00000002 +#define HWI_FLAG_FM_LOADED 0x00000004 +#define HWI_FLAG_SUSPENDED 0x00000008 +#define HWI_FLAG_HSP_PRESENT 0x00000010 +#define HWI_FLAG_MEM_CHECK 0x00000020 + +/* */ +/* Client input/output buffer connectivity */ +/* */ + +#define KCONNECT_NONE 0x0000 +#define KCONNECT_DMA 0x0001 +#define KCONNECT_ADC1 0x0002 +#define KCONNECT_ADC2 0x0003 +#define KCONNECT_CD 0x0004 +#define KCONNECT_MIC 0x0005 +#define KCONNECT_I2S 0x0006 +#define KCONNECT_CHI 0x0007 +#define KCONNECT_SOUNDBLASTER 0x0008 +#define KCONNECT_SPDIF 0x0009 +#define KCONNECT_PIO 0x000A +#define KCONNECT_MIXER 0x000B +#define KCONNECT_SPDIFIN 0x000C +#define KCONNECT_FMIXER 0x000D /*AY */ +#define KCONNECT_RMIXER 0x000E /*AY */ +#define KCONNECT_SAME 0x000F +#define NUMBER_OF_CONNECTIONS (KCONNECT_SAME + 1) + +#define MASK_KCONNECT_NONE (1 << KCONNECT_NONE) +#define MASK_KCONNECT_DMA (1 << KCONNECT_DMA) +#define MASK_KCONNECT_ADC1 (1 << KCONNECT_ADC1) +#define MASK_KCONNECT_ADC2 (1 << KCONNECT_ADC2) +#define MASK_KCONNECT_CD (1 << KCONNECT_CD) +#define MASK_KCONNECT_MIC (1 << KCONNECT_MIC) +#define MASK_KCONNECT_I2S (1 << KCONNECT_I2S) +#define MASK_KCONNECT_CHI (1 << KCONNECT_CHI) +#define MASK_KCONNECT_SOUNDBLASTER (1 << KCONNECT_SOUNDBLASTER) +#define MASK_KCONNECT_SPDIF (1 << KCONNECT_SPDIF) +#define MASK_KCONNECT_MIXER (1 << KCONNECT_MIXER) +#define MASK_KCONNECT_SPDIFIN (1 << KCONNECT_SPDIFIN) +#define MASK_KCONNECT_FMIXER (1 << KCONNECT_FMIXER) /*AY */ +#define MASK_KCONNECT_RMIXER (1 << KCONNECT_RMIXER) /*AY */ +#define MASK_KCONNECT_SAME (1 << KCONNECT_SAME) + +/* */ +/* Open/Close flags */ +/* */ + +#define KOPENCLOSE_SYNCHRONOUS 0x0001 + +/* */ +/* Switch client */ +#define KENABLE_CLIENT 0 +#define KDISABLE_CLIENT 1 + + +/* */ +/* DSP timeout */ +/* */ + +#define DSP_TIMEOUT 10000 + + +/* */ +/* DMA transfer alteration flags */ +/* */ + +#define KALTER_AUTOREPEAT 0x0001 +#define KALTER_POSITION 0x0002 + + +/* */ +/* DSP hardware */ +/* */ + +#define DSP_PORT_TIMER_COUNT 0x06 +#define DSP_PORT_MEMORY_INDEX 0x80 +#define DSP_PORT_MEMORY_TYPE 0x82 +#define DSP_PORT_MEMORY_DATA 0x84 +#define DSP_PORT_CONTROL_REG_A 0xA2 +#define DSP_PORT_CONTROL_REG_B 0xA4 +#define DSP_PORT_CONTROL_REG_C 0xA6 + +#define MEMTYPE_INTERNAL_CODE 0x0002 +#define MEMTYPE_INTERNAL_DATA 0x0003 +#define MEMTYPE_MASK 0x0003 + +#define REGB_ENABLE_RESET 0x01 +#define REGB_STOP_CLOCK 0x10 + +#define REGC_DISABLE_FM_MAPPING 0x02 + +#define DP_SHIFT_COUNT 7 + +#define DMA_BLOCK_LENGTH 32 + + +/* */ +/* kernel binary image storage */ +/* */ + +typedef struct tagKERNEL_BIN +{ + + PWORD pwBinCode; + DWORD dwLengthCode; + +} +KERNEL_BIN, *PKERNEL_BIN; + + +/* */ +/* client binary image storage */ +/* */ + +typedef struct tagCLIENT_BIN +{ + + DWORD dwCodeAddress; + + PWORD pwBinVect; + PWORD pwBinCode; + PWORD pwBinData; + + DWORD dwLengthVect; + DWORD dwLengthCode; + DWORD dwLengthData; + +} +CLIENT_BIN, *PCLIENT_BIN; + + +/* */ +/* FM client binary image storage */ +/* */ + +typedef struct tagFMCLIENT_BIN +{ + + DWORD dwCodeAddress; + DWORD dwData2Address; + + PWORD pwBinVect; + PWORD pwBinCode; + PWORD pwBinData; + PWORD pwBinData2; + + DWORD dwLengthVect; + DWORD dwLengthCode; + DWORD dwLengthData; + DWORD dwLengthData2; + +} +FMCLIENT_BIN, *PFMCLIENT_BIN; + + +/* */ +/* client */ +/* */ + +typedef struct tagCLIENT +{ + + /* kernel use only */ + + PCLIENT_BIN pClient_Bin; + DWORD dwReferenceCount; + DWORD dwMaxReference; + DWORD dwInstanceListArea; + DWORD dwDspCodeNumUnits; + PBYTE pbDspCodeMapPtr; + + /* client use */ + + DWORD dwDspCodeClientArea; + +} +CLIENT, *PCLIENT; + + +/* */ +/* client instance */ +/* */ + +typedef struct tagCLIENT_INST +{ + + /* kernel use only */ + + DWORD dwClient; + DWORD dwHostSrcBufferAddr; + DWORD dwHostSrcBufferLen; + DWORD dwHostDstBufferAddr; + DWORD dwHostDstBufferLen; + DWORD dwHostDstCurrent; + DWORD dwDSPOutBufferAddr; + DWORD dwDSPOutBufferLen; + DWORD dwDSPInConnection; + DWORD dwDSPOutConnection; + DWORD dwDspDataNumUnits; + PBYTE pbDspDataMapPtr; + + /* client use */ + + DWORD dwDspDataClientArea; + DWORD dwDspCodeClientArea; + +} +CLIENT_INST, *PCLIENT_INST; + + +/* */ +/* pass through descriptor */ +/* */ + +typedef struct tagPASSTHRU +{ + + DWORD dwDSPInConnection; + DWORD dwDSPOutConnection; + PBYTE pbDspDataMapPtr; + DWORD dwDspDataPassThruArea; + + WORD wLeftVolume; + WORD wRightVolume; + +} +PASSTHRU, *PPASSTHRU; + + +/* */ +/* Hardware instance */ +/* */ + +typedef struct tagHWI +{ + + DWORD dwDeviceID; + DWORD dwRevisionID; + DWORD dwBaseIO; + DWORD dwFlags; + + PWORD pwSuspendBuffer; + + WORD wI2SSampleCount; + WORD wI2STimerCount; + + WORD wDspResetCount; + + /* client table */ + + CLIENT asClientTable[NUMBER_OF_CLIENTS]; + + /* resource lists */ + + WORD awTaskList[MAX_TASKS + 1]; + + WORD awInstanceCpyThruList[MAX_INSTANCE_CPYTHRU + 1]; + WORD awInstanceModemList[MAX_INSTANCE_MODEM + 1]; + WORD awInstancePos3DList[MAX_INSTANCE_POS3D + 1]; + WORD awInstanceSpkVirtList[MAX_INSTANCE_SPKVIRT + 1]; + WORD awInstanceSRCList[MAX_INSTANCE_SRC + 1]; + WORD awInstanceMINISRCList[MAX_INSTANCE_MINISRC + 1]; + WORD awInstanceSPDIFList[MAX_INSTANCE_SPDIF + 1]; + + WORD awVirtualDMAList[MAX_VIRTUAL_DMA_CHANNELS + 1]; + WORD awVirtualADC1List[MAX_VIRTUAL_ADC1_CHANNELS + 1]; + WORD awVirtualADC2List[MAX_VIRTUAL_ADC2_CHANNELS + 1]; + WORD awVirtualCDList[MAX_VIRTUAL_CD_CHANNELS + 1]; + WORD awVirtualMICList[MAX_VIRTUAL_MIC_CHANNELS + 1]; + + WORD awVirtualI2SList[MAX_VIRTUAL_I2S_CHANNELS + 1]; + WORD awVirtualCHIList[MAX_VIRTUAL_CHI_CHANNELS + 1]; + + WORD awVirtualSPDIFINList[MAX_VIRTUAL_SPDIFIN_CHANNELS + 1]; + WORD awVirtualMIXERList[MAX_VIRTUAL_MIXER_CHANNELS + 1]; + + /*AY */ + WORD awVirtualFMIXERList[MAX_VIRTUAL_FMIXER_CHANNELS + 1]; + WORD awVirtualRMIXERList[MAX_VIRTUAL_RMIXER_CHANNELS + 1]; + + /* memory maps */ + + DWORD dwCodeMemoryBegin; + DWORD dwCodeMemoryEnd; + DWORD dwCodeMemoryUnitLength; + DWORD dwCodeMemoryLength; + + DWORD dwDataMemoryBegin; + DWORD dwDataMemoryEnd; + DWORD dwDataMemoryUnitLength; + DWORD dwDataMemoryLength; + + BYTE abCodeMemoryMap[CODE_MEMORY_MAP_LENGTH]; + BYTE abDataMemoryMap[DATA_MEMORY_MAP_LENGTH]; + + /* vector list */ + + WORD awVectorList[KCODE_VECTORS_LENGTH]; + +} +HWI, *PHWI; + + +/* */ +/* function return codes */ +/* */ + +typedef DWORD KRETURN; + +#define KRETURN_SUCCESS 0 +#define KRETURN_ERROR_GENERIC 1 +#define KRETURN_ERROR_BUSY 2 +#define KRETURN_ERROR_UNLOADED 3 + + +/* */ +/* external function prototypes */ +/* */ +#ifdef __cplusplus +extern "C" +{ +#endif + + WORD kDspReadWord (allegro_devc * devc, DWORD dwBaseIO, DWORD dwMemType, + DWORD dwMemAddr); + + VOID kDspWriteWord + (allegro_devc * devc, DWORD dwBaseIO, DWORD dwMemType, DWORD dwMemAddr, + WORD wMemData); + + VOID kDspReadWords + (allegro_devc * devc, DWORD dwBaseIO, + DWORD dwMemType, DWORD dwMemAddr, DWORD dwMemLen, PWORD pwHostAddr); + + VOID kDspWriteWords + (allegro_devc * devc, DWORD dwBaseIO, + DWORD dwMemType, DWORD dwMemAddr, DWORD dwMemLen, PWORD pwHostAddr); + + VOID kDspWriteZeros + (allegro_devc * devc, DWORD dwBaseIO, DWORD dwMemType, DWORD dwMemAddr, + DWORD dwMemLen); + + VOID kPIOInterruptHandler (allegro_devc * devc, PHWI phwi, + PCLIENT_INST pClient_Inst); + + VOID kI2SInterruptHandler (allegro_devc * devc, PHWI phwi, + PDWORD pdwI2SRate); + + KRETURN kQueryPosition + (allegro_devc * devc, PHWI phwi, + PCLIENT_INST pClient_Inst, DWORD dwQueryOutput, PDWORD pdwPosition); + + KRETURN kResetApuBlockCount (allegro_devc * devc, PHWI phwi, + PCLIENT_INST pClient_Inst); + + KRETURN kGetApuBlockCount + (allegro_devc * devc, PHWI phwi, PCLIENT_INST pClient_Inst, + PDWORD pdwBlockCount); + + KRETURN kInitKernel + (allegro_devc * devc, PHWI * pphwi, + DWORD dwDeviceID, DWORD dwRevisionID, DWORD dwBaseIO, DWORD dwFlags); + + KRETURN kDSPMemCheck (allegro_devc * devc, PHWI phwi); + + KRETURN kTermKernel (allegro_devc * devc, PHWI phwi, DWORD dwBaseIO); + + KRETURN kSuspendKernel (allegro_devc * devc, PHWI phwi); + + KRETURN kResumeKernel (allegro_devc * devc, PHWI phwi); + + KRETURN kOpenInstance + (allegro_devc * devc, PHWI phwi, + DWORD dwClient, + DWORD dwFlags, DWORD dwLen, PCLIENT_INST * ppClient_Inst); + + KRETURN kCloseInstance + (allegro_devc * devc, PHWI phwi, PCLIENT_INST pClient_Inst, + DWORD dwFlags); + + KRETURN kSwitchClient (allegro_devc * devc, PHWI phwi, + PCLIENT_INST pClient_Inst, DWORD dwFlags); + + KRETURN kSetInstanceReady (allegro_devc * devc, PHWI phwi, + PCLIENT_INST pClient_Inst); + + KRETURN kSetInstanceNotReady (allegro_devc * devc, PHWI phwi, + PCLIENT_INST pClient_Inst); + + KRETURN kStartTransfer + (allegro_devc * devc, PHWI phwi, + PCLIENT_INST pClient_Inst, + DWORD dwAutoRepeat, + DWORD dwHostSrcBufferAddr, + DWORD dwHostSrcBufferLen, + DWORD dwHostDstBufferAddr, + DWORD dwHostDstBufferLen, + DWORD dwDSPInBufferAddr, + DWORD dwDSPInBufferLen, + DWORD dwDSPOutBufferAddr, + DWORD dwDSPOutBufferLen, + DWORD dwDSPInConnection, DWORD dwDSPOutConnection); + + KRETURN kStopTransfer (allegro_devc * devc, PHWI phwi, + PCLIENT_INST pClient_Inst); + + KRETURN kAlterTransfer + (allegro_devc * devc, PHWI phwi, + PCLIENT_INST pClient_Inst, + DWORD dwFlags, DWORD dwAutoRepeat, DWORD dwPosition); + + KRETURN kSwitchPINConnection + (allegro_devc * devc, PHWI phwi, + PCLIENT_INST pClient_Inst, + DWORD dwDSPInConnection, DWORD dwDSPOutConnection); + + KRETURN kQueryActivity + (allegro_devc * devc, PHWI phwi, PDWORD pdwClientMasks, + PDWORD pdwConnectMasks); + + KRETURN kSetTimer (allegro_devc * devc, PHWI phwi, DWORD dwTimeInterval); + + KRETURN kOpenPassThru + (allegro_devc * devc, PHWI phwi, + PPASSTHRU * ppPassThru, + DWORD dwDSPInConnection, DWORD dwDSPOutConnection); + + KRETURN kClosePassThru (allegro_devc * devc, PHWI phwi, + PPASSTHRU pPassThru); + + KRETURN kSetVolume + (allegro_devc * devc, PHWI phwi, + PCLIENT_INST pClient_Inst, + WORD wLeftVolume, WORD wRightVolume, WORD wBoosterMode); + + KRETURN kSetRearVolume + (allegro_devc * devc, PHWI phwi, + PCLIENT_INST pClient_Inst, WORD wLeftRearVolume, WORD wRightRearVolume); + + KRETURN kSetPassThruVolume + (allegro_devc * devc, PHWI phwi, PPASSTHRU pPassThru, WORD wLeftVolume, + WORD wRightVolume); + + KRETURN kSetPassThruRearVolume + (allegro_devc * devc, PHWI phwi, + PPASSTHRU pPassThru, WORD wLeftRearVolume, WORD wRightRearVolume); + + + KRETURN kSetMasterVolume (allegro_devc * devc, PHWI phwi, WORD wLeftVolume, + WORD wRightVolume); + + + KRETURN kSetFrequency + (allegro_devc * devc, PHWI phwi, PCLIENT_INST pClient_Inst, + WORD wFrequency); + +#ifdef __cplusplus +} +#endif + + +/* */ +/* external data declarations */ +/* */ +extern KERNEL_BIN gsMemChkVectCode; +extern KERNEL_BIN gsKernelVectCode; +extern KERNEL_BIN gsKernelVectCodeWithHSP; + + + +extern CLIENT_BIN gasCpyThruVectCode[]; +extern CLIENT_BIN gasModemVectCode[]; +extern CLIENT_BIN gasPos3DVectCode[]; +extern CLIENT_BIN gasSpkVirtVectCode[]; +extern CLIENT_BIN gasSpkVirtVectCode_CRL[]; +extern CLIENT_BIN gasSRCVectCode[]; +extern CLIENT_BIN gasMINISRCVectCode[]; +extern CLIENT_BIN gasSPDIFVectCode[]; + + +extern FMCLIENT_BIN gsFMVectCode; + +extern WORD MIXER_TASK_NUMBER; + +/* */ +/* critical enter/leave */ +/* */ + +#if defined( DOS_MODEL ) || defined( WDM_MODEL ) +#define CRITENTER +#define CRITLEAVE +#endif + +#if defined( VXD_MODEL ) +#define CRITENTER _asm pushfd \ + _asm cli + +#define CRITLEAVE _asm popfd +#endif + +#ifdef WDM_MODEL +#define KCALL( func ) func +#define KBEGIN( func ) if ( KRETURN_SUCCESS == func ) { +#define KEND() } +#endif + +#ifdef NT_MODEL +#undef NULL +#define NULL 0 +#endif + +#endif + +/*--------------------------------------------------------------------------- */ +/* End of File: kernel.h */ +/*--------------------------------------------------------------------------- */ + +/****************************************************************************** + * * + * (C) 1997-1999 ESS Technology, Inc. * + * * + ******************************************************************************/ |