1
0
Fork 0
forked from len0rd/rockbox
foxbox/firmware/drivers/audio/eros_qn_codec.c
Dana Conrad 5f377c2613 Eros Q Native: Add Stereo SW behavior setting
Hopefully this should cover our bases so we can change
the behavior of the stereo switch to keep line out working
when they change the hardware on us!

Change-Id: Ic36bcb3778d5681a5f3f158c689df9c1420c1d7e
2024-05-12 09:42:02 -04:00

66 lines
No EOL
2 KiB
C

/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2021 Andrew Ryabinin, Dana Conrad
*
* 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 "system.h"
#include "eros_qn_codec.h"
#include "config.h"
#include "audio.h"
#include "audiohw.h"
#include "settings.h"
#include "pcm_sw_volume.h"
#include "gpio-x1000.h"
static long int vol_l_hw = PCM5102A_VOLUME_MIN;
static long int vol_r_hw = PCM5102A_VOLUME_MIN;
int es9018k2m_present_flag = 0;
void eros_qn_set_outputs(void)
{
audiohw_set_volume(vol_l_hw, vol_r_hw);
}
void eros_qn_set_last_vol(long int vol_l, long int vol_r)
{
vol_l_hw = vol_l;
vol_r_hw = vol_r;
}
int eros_qn_get_volume_limit(void)
{
return (global_settings.volume_limit * 10);
}
void eros_qn_switch_output(int select)
{
/* normal operation 0, reverse operation 1, or always 0 */
if ((select == 0 && global_settings.stereosw_mode == 0) \
|| (select == 1 && global_settings.stereosw_mode == 1) \
|| global_settings.stereosw_mode == 2)
{
gpio_set_level(GPIO_STEREOSW_SEL, 0);
}
/* normal operation 1, reverse operation 0, or always 1 */
else
{
gpio_set_level(GPIO_STEREOSW_SEL, 1);
}
}