tda7496.c
来自「GM5621原代码」· C语言 代码 · 共 253 行
C
253 行
/*
$Workfile: TDA7496.c $
$Revision: 1.0 $
$Date: May 17 2006 01:08:34 $
*/
#define __TDA7496_C__
//******************************************************************************
//
// Copyright (C) 2002. GENESIS MICROCHIP INC.
// All rights reserved. No part of this program may be reproduced.
//
// Genesis Microchip Inc., 165 Commerce Valley Dr. West
// Thornhill, Ontario, Canada, L3T 7V8
//
//==============================================================================
//
// MODULE: TDA7496.c
//
// USAGE: Contains Functions related to audio decoder TDA7496
//
//******************************************************************************
//******************************************************************************
// I N C L U D E F I L E S
//******************************************************************************
#include "inc\all.h"
#if (USE_AUDIO && USE_GSEL_DRVR_MODEL && (DEV_AUDIO_DECODER == DEV_TDA7496))
#define DEBUG_AUD 0
#define DEBUG_ADD_EX 0
#if DEBUG_AUD && DEBUG_MSG
#define msg(a,b) gm_Print((const char far *)a,b)
#else
#define msg(a,b)
#endif
#if DEBUG_ADD_EX && DEBUG_MSG
#define msgx(a,b) gm_Print((const char far *)a,b)
#else
#define msgx(a,b)
#endif
//******************************************************************************
// L O C A L D E F I N I T I O N S
//******************************************************************************
//******************************************************************************
// G L O B A L F U N C T I O N P R O T O T Y P E S
//******************************************************************************
static BYTE __near dev_TDA7496GetOutputVolume(void);
static void __near dev_TDA7496SetOutputMute(BYTE ctrl);
static void __near dev_TDA7496SetOutputVolume(BYTE vol);
static BYTE __near dev_TDA7496GetOutputMute(void);
static void __near dev_TDA7496SetStandby_On(BYTE ctrl);
static void __near dev_TDA7496SetConfig(BYTE val);
//******************************************************************************
// G L O B A L V A R I A B L E S
//******************************************************************************
//******************************************************************************
// S T A T I C V A R I A B L E S
//******************************************************************************
//******************************************************************************
// S T A T I C F U N C T I O N P R O T O T Y P E S
//******************************************************************************
//******************************************************************************
// C O D E
//******************************************************************************
//******************************************************************************
//
// FUNCTION : BYTE dev_TDA7496GetOutputVolume(void)
// USAGE : This function returns the current output volume
// INPUT : None
// OUTPUT : returns the volume value
// GLOBALS : None
// USED_REGS :
//******************************************************************************
static BYTE __near dev_TDA7496GetOutputVolume(void)
{
return AUDIO_GET_PWM_PULSE_VALUE();
}
//******************************************************************************
//
// FUNCTION : void dev_TDA7496SetOutputVolume(BYTE vol)
// USAGE : This function sets the output Volume value
// INPUT : Volume value
// OUTPUT : None
// GLOBALS : None
// USED_REGS :
//******************************************************************************
static void __near dev_TDA7496SetOutputVolume(BYTE vol)
{
if(vol>=AUDIO_VOL_PWM_MAX)
vol=AUDIO_VOL_PWM_MAX;
if(vol<=AUDIO_VOL_PWM_MIN)
vol=AUDIO_VOL_PWM_MIN;
#if (!AUDIO_VOL_PWM_POLARITY) //1: Volume up if PWM value increase
vol=AUDIO_VOL_PWM_MAX-vol; //0: Volume down if PWM value decrease
#endif
msg("TDA7496:SetOutPutVolume= %d",vol);
AUDIO_PWM_PULSE_VALUE(vol);
gm_SyncUpdate();
}
//******************************************************************************
//
// FUNCTION : void dev_TDA7496SetOutputMute(BYTE ctrl)
// USAGE : This function sets the Mute or UnMute for TDA7496
// INPUT : gmd_TRUE=Mute / gmd_FALSE=UnMute
// OUTPUT : None
// GLOBALS : None
// USED_REGS :
//******************************************************************************
static void __near dev_TDA7496SetOutputMute(BYTE ctrl)
{
msg("TDA7496:SetOutPutMute= %d",ctrl);
// AUD_Mute_Ctrl_Setup();
if(ctrl)
AUD_Mute_ON();
else
AUD_UnMute();
}
//******************************************************************************
//
// FUNCTION : BYTE dev_TDA7496GetOutputMute(void)
// USAGE : This function returns the status of the audio mute
// INPUT : None
// OUTPUT : gmd_False - UnMute
// gmd_TRUE - Mute
// GLOBALS : None
// USED_REGS :
//******************************************************************************
static BYTE __near dev_TDA7496GetOutputMute(void)
{
return AUD_Get_Mute_Status();
}
//******************************************************************************
//
// FUNCTION : void dev_TDA7496SetStandby_On(BYTE ctrl)
// USAGE : This function set the standby control pin of TDA7496.
// INPUT : ctrl=1 : Enter Standby ctrl=0: Normal operation mode.
// OUTPUT : None
// GLOBALS : None
//
//******************************************************************************
static void __near dev_TDA7496SetStandby_On(BYTE ctrl)
{
msg("TDA7496:SetStandby_On= %d",ctrl);
if(ctrl)
AUD_STBY_ON();
else
AUD_STBY_OFF();
}
//******************************************************************************
//
// FUNCTION : void dev_TDA7496SetConfig(BYTE val)
// USAGE : This function set the audeo TDA7496 configrations.
// INPUT : val: configrarion type
// OUTPUT : None
// GLOBALS : None
//
//******************************************************************************
static void __near dev_TDA7496SetConfig(BYTE val)
{
switch(val)
{
case AUDIO_INIT :
msg("TDA7496:AUD_INIT",0);
AUDIO_VOL_Ctrl_Setup1();
AUDIO_VOL_Ctrl_Setup2();
AUDIO_PWM_PULSE_VALUE((AUDIO_VOL_PWM_MAX+AUDIO_VOL_PWM_MIN)/2);
gm_SyncUpdate();
AUD_Mute_Ctrl_Setup();
AUD_Mute_ON();
AUD_STBY_Ctrl_Setup1();
AUD_STBY_Ctrl_Setup2();
AUD_STBY_OFF();
break;
default:
msg("TDA7496: No Audio Decoder SetConfig Function!!",0);
break;
}
}
//******************************************************************************
//
// FUNCTION : TDA7496_AudioDecoderEntry(BYTE func, void *p1, void *p2)
// USAGE : This function is main entry point into the audio decoder
// driver.
// INPUT : driver function and WORD value.
// OUTPUT : returns WORD value.
// GLOBALS : None
// USED_REGS : None
//
//******************************************************************************
#pragma argsused
WORD TDA7496_AudioDecoderEntry(BYTE func, void *p1, void *p2)
{
WORD val = (WORD)p1;
// WORD val2 = (WORD)p2;
WORD ret = 0;
msgx("**From Call Driver:TDA7496",0);
msgx(" Func number = %d", func);
msgx(" P1= 0x%x", val);
// msgx(" P1= 0x%x", val2);
switch(func)
{
case gmd_AUD_SET_STANDBY_ON :
dev_TDA7496SetStandby_On((BYTE)val);
break;
case gmd_AUD_SET_OUTPUT_VOLUME :
dev_TDA7496SetOutputVolume((BYTE)val);
break;
case gmd_AUD_SET_OUTPUT_MUTE :
dev_TDA7496SetOutputMute((BYTE)val);
break;
case gmd_AUD_GET_OUTPUT_VOLUME :
ret = (WORD)dev_TDA7496GetOutputVolume();
break;
case gmd_AUD_GET_OUTPUT_MUTE :
ret = (WORD)dev_TDA7496GetOutputMute();
break;
case gmd_AUD_SET_CONFIG:
dev_TDA7496SetConfig((BYTE)val);
break;
default :
msg("TDA7496: No Audio Decoder Function!!",0);
break;
}
return ret;
}
#endif //(USE_AUDIO && USE_GSEL_DRVR_MODEL && (DEV_AUDIO_DECODER == DEV_TDA7496))
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?