vs10xx.h

Go to the documentation of this file.
00001 #ifndef _DEV_VS10XX_H_
00002 #define _DEV_VS10XX_H_
00003 /*
00004  * Copyright (C) 2001-2007 by egnite Software GmbH. All rights reserved.
00005  *
00006  * Redistribution and use in source and binary forms, with or without
00007  * modification, are permitted provided that the following conditions
00008  * are met:
00009  *
00010  * 1. Redistributions of source code must retain the above copyright
00011  *    notice, this list of conditions and the following disclaimer.
00012  * 2. Redistributions in binary form must reproduce the above copyright
00013  *    notice, this list of conditions and the following disclaimer in the
00014  *    documentation and/or other materials provided with the distribution.
00015  * 3. Neither the name of the copyright holders nor the names of
00016  *    contributors may be used to endorse or promote products derived
00017  *    from this software without specific prior written permission.
00018  *
00019  * THIS SOFTWARE IS PROVIDED BY EGNITE SOFTWARE GMBH AND CONTRIBUTORS
00020  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
00021  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
00022  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL EGNITE
00023  * SOFTWARE GMBH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
00024  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
00025  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
00026  * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
00027  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
00028  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
00029  * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
00030  * SUCH DAMAGE.
00031  *
00032  * For additional information see http://www.ethernut.de/
00033  */
00034 
00035 /*
00036  * $Log: vs10xx.h,v $
00037  * Revision 1.1  2007/04/12 08:59:55  haraldkipp
00038  * VS10XX decoder support added.
00039  *
00040  */
00041 
00042 #include <cfg/audio.h>
00043 #include <sys/types.h>
00044 
00054 
00055 
00056 
00057 /*
00058  * Instruction opcodes.
00059  */
00060 #define VS_OPCODE_READ  3
00061 #define VS_OPCODE_WRITE 2
00062 
00063 
00067 /* ------------------------------------------------------------- */
00070 #define VS_MODE_REG         0
00071 
00072 #define VS_SM_DIFF          0x0001
00073 
00081 #define VS_SM_LAYER12       0x0002
00082 
00093 #define VS_SM_FFWD          0x0002
00094 
00098 #define VS_SM_RESET         0x0004
00099 
00106 #define VS_SM_MP12          0x0008
00107 
00115 #define VS_SM_OUTOFWAV      0x0008
00116 
00127 #define VS_SM_PDOWN         0x0010
00128 
00129 #define VS_SM_DAC           0x0020
00130 
00134 #define VS_SM_TESTS         0x0020
00135 
00136 #define VS_SM_DACMONO       0x0040
00137 
00148 #define VS_SM_STREAM        0x0040
00149 
00150 #define VS_SM_BASS          0x0080
00151 
00156 #define VS_SM_DACT          0x0100
00157 
00158 #define VS_SM_BYTEORD       0x0200
00159 
00163 #define VS_SM_SDIORD        0x0200
00164 
00168 #define VS_SM_IBMODE        0x0400
00169 
00170 #define VS_SM_SDISHARE      0x0400
00171 
00175 #define VS_SM_IBCLK         0x0800
00176 
00182 #define VS_SM_SDINEW        0x0800
00183 
00187 #define VS_SM_ADPCM         0x1000
00188 
00196 #define VS_SM_ADPCM_HP      0x2000
00197 
00204 #define VS_SM_LINE_IN       0x4000
00205 
00212 #define VS_SM_CLK_RANGE     0x8000
00213 
00219 /* ------------------------------------------------------------- */
00221 #define VS_STATUS_REG       1
00222 
00230 #define VS_SS_AVOL          0x0003
00231 
00232 #define VS_SS_AVOL_LSB  0
00233 
00237 #define VS_SS_APDOWM1       0x0004
00238 
00245 #define VS_SS_APDOWN2       0x0008
00246 
00253 #define VS_SS_VER           0x0070
00254 
00255 #define VS_SS_VER_LSB       4
00256 
00261 /* ------------------------------------------------------------- */
00267 #define VS_INT_FCTLH_REG    2
00268 
00273 /* ------------------------------------------------------------- */
00279 #define VS_BASS_REG         2
00280 
00284 #define VS_SB_FREQLIMIT     0x000F
00285 
00286 #define VS_SB_FREQLIMIT_LSB 0
00287 
00291 #define VS_SB_AMPLITUDE     0x00F0
00292 
00293 #define VS_SB_AMPLITUDE_LSB 4
00294 
00298 #define VS_ST_FREQLIMIT     0x000F
00299 
00300 #define VS_ST_FREQLIMIT_LSB 0
00301 
00305 #define VS_ST_AMPLITUDE     0x00F0
00306 
00307 #define VS_ST_AMPLITUDE_LSB 4
00308 
00313 /* ------------------------------------------------------------- */
00316 #define VS_CLOCKF_REG       3
00317 
00324 #define VS_SC_FREQ          0x7FFF
00325 
00332 #define VS_SC_X3FREQ        0x07FF
00333 
00334 #define VS_SC_FREQ_LSB      0
00335 
00339 #define VS_SC_ADD           0x1800
00340 
00344 #define VS_SC_MULT          0xE000
00345 
00349 #define VS_CF_DOUBLER       0x8000
00350 
00355 /* ------------------------------------------------------------- */
00362 #define VS_DECODE_TIME_REG  4
00363 
00368 /* ------------------------------------------------------------- */
00374 #define VS_AUDATA_REG       5
00375 
00379 #define VS_AD_STEREO        0x0001
00380 
00385 #define VS_AD_SRATE         0xFFFE
00386 
00387 #define VS_AD_SRATE_LSB     1
00388 
00393 /* ------------------------------------------------------------- */
00399 #define VS_WRAM_REG         6
00400 
00405 /* ------------------------------------------------------------- */
00411 #define VS_WRAMADDR_REG     7
00412 
00417 /* ------------------------------------------------------------- */
00423 #define VS_HDAT0_REG        8
00424 
00429 /* ------------------------------------------------------------- */
00432 #define VS_IN0_REG          8
00433 
00438 /* ------------------------------------------------------------- */
00444 #define VS_HDAT1_REG        9
00445 
00450 /* ------------------------------------------------------------- */
00453 #define VS_IN1_REG          9
00454 
00461 /* ------------------------------------------------------------- */
00464 #define VS_AIADDR_REG      10
00465 
00470 /* ------------------------------------------------------------- */
00473 #define VS_VOL_REG         11
00474 
00478 #define VS_VOL_RIGHT        0x00FF
00479 
00480 #define VS_VOL_RIGHT_LSB    0
00481 
00485 #define VS_VOL_LEFT         0xFF00
00486 
00487 #define VS_VOL_LEFT_LSB     8
00488 
00493 /* ------------------------------------------------------------- */
00498 #define VS_MIXERVOL_REG     12
00499 #define VS_SMV_GAIN1        0x001F
00500 #define VS_SMV_GAIN2        0x03E0
00501 #define VS_SMV_GAIN3        0x7C00
00502 #define VS_SMV_ACTIVE       0x8000
00503 
00508 /* ------------------------------------------------------------- */
00513 #define VS_ADPCMRECCTL_REG  13
00514 #define VS_SARC_GAIN4       0x003F
00515 #define VS_SARC_MANUALGAIN  0x0040
00516 #define VS_SARC_OUTOFADPCM  0x0080
00517 
00522 /* ------------------------------------------------------------- */
00528 #define VS_AICTRL0_REG     12
00529 
00533 #define VS_AICTRL_REG      13
00534 
00539 #define VS_AICTRL1_REG     13
00540 
00544 #define VS_AICTRL2_REG     14
00545 
00549 #define VS_AICTRL3_REG     15
00550 
00553 /*
00554  * Bytes needed to flush internal VS buffer (size of VS interbal buffer)
00555  */
00556 #define VS_FLUSH_BYTES 2048
00557 
00558 /*
00559  * Status of the decoder
00560  */
00561 #define VS_STATUS_STOPPED 0
00562 #define VS_STATUS_RUNNING 1
00563 #define VS_STATUS_EOF     2
00564 #define VS_STATUS_EMPTY   4
00565 
00566 /*
00567  * Header info filled by VsGetHeaderInfo.
00568  */
00569 #ifdef __GNUC__
00570 typedef struct __attribute__((packed)) {
00571     u_short vshi_no_crc:1;
00572     u_short vshi_layer:2;
00573     u_short vshi_id:2;
00574     u_short vshi_syncword:11;
00575 
00576     u_short vshi_emphasis:2;
00577     u_short vshi_original:1;
00578     u_short vshi_copyright:1;
00579     u_short vshi_extension:2;
00580     u_short vshi_mode:2;
00581     u_short vshi_private_bit:1;
00582     u_short vshi_pad_bit:1;
00583     u_short vshi_sample_rate:2;
00584     u_short vshi_bitrate:4;
00585 } VS_HEADERINFO;
00586 #endif
00587 
00588 __BEGIN_DECLS
00589 /* Function prototypes */
00590 
00591 extern int VsPlayerInit(void);
00592 extern int VsPlayerReset(u_short mode);
00593 extern int VsPlayerSetMode(u_short mode);
00594 extern int VsPlayerKick(void);
00595 extern int VsPlayerStop(void);
00596 extern int VsPlayerFlush(void);
00597 extern ureg_t VsPlayerInterrupts(ureg_t enable);
00598 extern ureg_t VsPlayerThrottle(ureg_t on);
00599 
00600 extern u_short VsPlayTime(void);
00601 extern u_int VsGetStatus(void);
00602 #ifdef __GNUC__
00603 extern int VsGetHeaderInfo(VS_HEADERINFO *vshi);
00604 #endif
00605 extern u_short VsMemoryTest(void);
00606 
00607 extern int VsSetVolume(ureg_t left, ureg_t right);
00608 extern int VsBeep(u_char fsin, u_char ms);
00609 
00612 __END_DECLS
00613 /* End of prototypes */
00614 
00615 #endif

© 2000-2007 by egnite Software GmbH - visit http://www.ethernut.de/