rockbox/firmware/drivers/audio/imx233-codec.c
Amaury Pouly af81cc4a93 imx233: slightly rework 3D audio setting
The old code made the setting appear as 0dB, 1.5dB, 3dB and 4.5dB when
in fact it is 0dB, 3dB, 4.5dB and 6dB. This commit clarifies the code and
also fix this at the same time. This imx233 3D enhancement is complete crap anyway
but now you can satisfy yourself with 6 dB of pure crap, clearly an enhancement.

Change-Id: Ia3e088987c1ff0cdde228905ff70f46476a499a2
2016-12-12 12:15:24 +01:00

110 lines
3 KiB
C

/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2011 by Amaury Pouly
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#include "config.h"
#include "system.h"
#include "audiohw.h"
#include "audio.h"
#include "audioout-imx233.h"
#include "audioin-imx233.h"
#include "audio-imx233.h"
void audiohw_preinit(void)
{
imx233_audioout_preinit();
imx233_audioin_preinit();
imx233_audio_preinit();
}
void audiohw_postinit(void)
{
imx233_audioout_postinit();
imx233_audioin_postinit();
imx233_audio_postinit();
}
void audiohw_close(void)
{
imx233_audioout_close();
imx233_audioin_close();
}
/* volume in centibels */
void audiohw_set_volume(int vol_l, int vol_r)
{
/* convert to half-dB */
imx233_audioout_set_hp_vol(vol_l / 5, vol_r / 5);
}
void audiohw_set_frequency(int fsel)
{
imx233_audioout_set_freq(fsel);
}
void audiohw_enable_recording(bool source_mic)
{
imx233_audioin_open();
/* if source is microhpone we need to power the microphone too */
imx233_audioin_enable_mic(source_mic);
int src = source_mic ? AUDIOIN_SELECT_MICROPHONE : AUDIOIN_SELECT_LINE1;
imx233_audioin_select_mux_input(false, src);
imx233_audioin_select_mux_input(true, src);
}
void audiohw_disable_recording(void)
{
imx233_audioin_close();
}
/* volume in decibels */
void audiohw_set_recvol(int left, int right, int type)
{
left *= 2; /* convert to half-dB */
right *= 2;
if(type == AUDIO_GAIN_LINEIN)
{
imx233_audioin_set_vol(false, left, AUDIOIN_SELECT_LINE1);
imx233_audioin_set_vol(true, right, AUDIOIN_SELECT_LINE1);
imx233_audioin_set_vol(false, left, AUDIOIN_SELECT_LINE2);
imx233_audioin_set_vol(true, right, AUDIOIN_SELECT_LINE2);
imx233_audioin_set_vol(false, left, AUDIOIN_SELECT_HEADPHONE);
imx233_audioin_set_vol(true, right, AUDIOIN_SELECT_HEADPHONE);
}
else
imx233_audioin_set_vol(false, left, AUDIOIN_SELECT_MICROPHONE);
}
void audiohw_set_depth_3d(int val)
{
imx233_audioout_set_3d_effect(val);
}
void audiohw_set_monitor(bool enable)
{
imx233_audioout_select_hp_input(enable);
}
#ifdef HAVE_SPEAKER
void audiohw_enable_speaker(bool en)
{
imx233_audioout_enable_spkr(en);
imx233_audio_enable_spkr(en);
}
#endif