imx233: add audioin debug info

Change-Id: Iba6e2b720489c1d2178a44a0a4fe5df2a7540579
This commit is contained in:
Amaury Pouly 2013-07-13 02:41:17 +02:00
parent 15c8ec8987
commit 8c91d05543
2 changed files with 45 additions and 1 deletions

View file

@ -20,6 +20,7 @@
****************************************************************************/
#include "audioin-imx233.h"
#include "pcm_sampr.h"
#include "string.h"
/* values in half-dB, one for each setting */
static int audioin_vol[2][4]; /* 0=left, 1=right */
@ -79,7 +80,7 @@ static void apply_config(void)
* - microphone: -100dB -> 62dB in 0.5dB steps
*/
/* First apply mic gain of possible and necessary
/* First apply mic gain if possible and necessary
* Only left volume is relevant with microphone
* If gain is > 22dB, use mic gain */
if(select_l == AUDIOIN_SELECT_MICROPHONE && vol_l > 22 * 2)
@ -188,3 +189,28 @@ void imx233_audioin_set_freq(int fsel)
SRC_FRAC(dacssr[fsel].src_frac), SRC_INT(dacssr[fsel].src_int),
SRC_HOLD(dacssr[fsel].src_hold), BASEMULT(dacssr[fsel].base_mult));
}
struct imx233_audioin_info_t imx233_audioin_get_info(void)
{
struct imx233_audioin_info_t info;
memset(&info, 0, sizeof(info));
/* 6*10^6*basemult/(src_frac*8*(src_hold+1)) in Hz */
info.freq = 60000000 * BF_RD(AUDIOIN_ADCSRR, BASEMULT) / 8 /
BF_RD(AUDIOIN_ADCSRR, SRC_FRAC) / (1 + BF_RD(AUDIOIN_ADCSRR, SRC_HOLD));
info.muxselect[0] = BF_RD(AUDIOIN_ADCVOL, SELECT_LEFT);
info.muxselect[1] = BF_RD(AUDIOIN_ADCVOL, SELECT_RIGHT);
/* convert half-dB to tenth-dB */
info.muxvol[0] = BF_RD(AUDIOIN_ADCVOL, GAIN_LEFT) * 15;
info.muxvol[1] = BF_RD(AUDIOIN_ADCVOL, GAIN_RIGHT) * 15;
info.muxmute[0] = info.adcmute[1] = BF_RD(AUDIOIN_ADCVOL, MUTE);
info.adcvol[0] = MAX((int)BF_RD(AUDIOIN_ADCVOLUME, VOLUME_LEFT) - 0xff, -100) * 5;
info.adcvol[1] = MAX((int)BF_RD(AUDIOIN_ADCVOLUME, VOLUME_RIGHT) - 0xff, -100) * 5;
info.adcmute[0] = info.adcmute[1] = false;
info.micvol[0] = BF_RD(AUDIOIN_MICLINE, MIC_GAIN);
if(info.micvol[0] != 0)
info.micvol[0] = info.micvol[1] = info.micvol[0] * 100 + 100;
info.micmute[0] = info.micmute[1] = false;
info.adc = !BF_RD(AUDIOOUT_PWRDN, ADC);
info.mic = info.mux = true;
return info;
}

View file

@ -34,6 +34,22 @@
#define AUDIOIN_SELECT_HEADPHONE 2
#define AUDIOIN_SELECT_LINE2 3
struct imx233_audioin_info_t
{
// NOTE there is a convention here: adc -> adcvol -> adcmute
int freq; // in mHz
int muxselect[2];
bool adc;
int adcvol[2]; // in tenth-dB, l/r
bool adcmute[2]; // l/r
bool mux;
int muxvol[2]; // in tenth-db, l/r
bool muxmute[2]; // l/r
bool mic;
int micvol[2]; // in tenth-db, l/r
int micmute[2]; // l/r
};
void imx233_audioin_preinit(void);
void imx233_audioin_postinit(void);
void imx233_audioin_open(void);
@ -47,4 +63,6 @@ void imx233_audioin_set_freq(int fsel);
/* enable microphone */
void imx233_audioin_enable_mic(bool enable);
struct imx233_audioin_info_t imx233_audioin_get_info(void);
#endif /* __audioin_imx233__ */