mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-11-09 13:12:37 -05:00
imx233: add audioin debug info
Change-Id: Iba6e2b720489c1d2178a44a0a4fe5df2a7540579
This commit is contained in:
parent
15c8ec8987
commit
8c91d05543
2 changed files with 45 additions and 1 deletions
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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__ */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue