rockbox/firmware/target/arm/imx233/audioout-imx233.h
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

70 lines
2.4 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.
*
****************************************************************************/
#ifndef __audioout_imx233__
#define __audioout_imx233__
#include "config.h"
#include "cpu.h"
#include "system.h"
/* target-defined output stage coupling method
* its setting is IMX233_AUDIO_COUPLING_MODE and must be set for every target
* Use ACM_CAP if output stage (i.e. headphones) have output capacitors,
* ACM_CAPLESS (DC-coupled) otherwise.
*/
#define ACM_CAPLESS 0
#define ACM_CAP 1
struct imx233_audioout_info_t
{
// NOTE there is a convention here: dac -> dacvol -> dacmute
int freq; // in mHz
bool hpselect;
bool dac;
int dacvol[2]; // in tenth-dB, l/r
bool dacmute[2]; // l/r
bool hp;
int hpvol[2]; // in tenth-db, l/r
bool hpmute[2]; // l/r
bool spkr;
int spkrvol[2]; // in tenth-db, l/r
int spkrmute[2]; // l/r
int ss3d; // in tenth-db
bool capless;
};
void imx233_audioout_preinit(void);
void imx233_audioout_postinit(void);
void imx233_audioout_close(void);
/* volume in half dB */
void imx233_audioout_set_hp_vol(int vol_l, int vol_r);
/* frequency index, NOT the frequency itself */
void imx233_audioout_set_freq(int fsel);
/* select between DAC and Line1 */
void imx233_audioout_select_hp_input(bool line1);
/* value is uses register encoding: 0=Off, 1=3dB, 2=4.5dB, 3=6dB */
void imx233_audioout_set_3d_effect(int val);
/* enable/disable speaker amplifier */
void imx233_audioout_enable_spkr(bool en);
struct imx233_audioout_info_t imx233_audioout_get_info(void);
#endif /* __audioout_imx233__ */