mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-11-09 21:22:39 -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 "audioin-imx233.h"
|
||||||
#include "pcm_sampr.h"
|
#include "pcm_sampr.h"
|
||||||
|
#include "string.h"
|
||||||
|
|
||||||
/* values in half-dB, one for each setting */
|
/* values in half-dB, one for each setting */
|
||||||
static int audioin_vol[2][4]; /* 0=left, 1=right */
|
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
|
* - 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
|
* Only left volume is relevant with microphone
|
||||||
* If gain is > 22dB, use mic gain */
|
* If gain is > 22dB, use mic gain */
|
||||||
if(select_l == AUDIOIN_SELECT_MICROPHONE && vol_l > 22 * 2)
|
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_FRAC(dacssr[fsel].src_frac), SRC_INT(dacssr[fsel].src_int),
|
||||||
SRC_HOLD(dacssr[fsel].src_hold), BASEMULT(dacssr[fsel].base_mult));
|
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_HEADPHONE 2
|
||||||
#define AUDIOIN_SELECT_LINE2 3
|
#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_preinit(void);
|
||||||
void imx233_audioin_postinit(void);
|
void imx233_audioin_postinit(void);
|
||||||
void imx233_audioin_open(void);
|
void imx233_audioin_open(void);
|
||||||
|
|
@ -47,4 +63,6 @@ void imx233_audioin_set_freq(int fsel);
|
||||||
/* enable microphone */
|
/* enable microphone */
|
||||||
void imx233_audioin_enable_mic(bool enable);
|
void imx233_audioin_enable_mic(bool enable);
|
||||||
|
|
||||||
|
struct imx233_audioin_info_t imx233_audioin_get_info(void);
|
||||||
|
|
||||||
#endif /* __audioin_imx233__ */
|
#endif /* __audioin_imx233__ */
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue