MoroSound: v2.2.0: mic gains and mono sound
- Rewrite and optimize driver - Mono sound for Headphones /sys/devices/virtual/misc/moro_sound/headphone_mono - Mic Gain settings for 3 mics: /sys/devices/virtual/misc/moro_sound/mic_down_gain (Main Mic, at the bottom) /sys/devices/virtual/misc/moro_sound/mic_up_gain (Secundary Mic, at the top) /sys/devices/virtual/misc/moro_sound/mic_hp_gain (Headphone Mic) - Add a reset button /sys/devices/virtual/misc/moro_sound/reset by @morogoku - Dec 2020 Signed-off-by: morogoku <morogoku@hotmail.com>
This commit is contained in:
parent
c58f32f9c9
commit
24145025f9
3 changed files with 407 additions and 295 deletions
|
@ -5,6 +5,7 @@
|
|||
*
|
||||
* Date : March 2019 - v2.0
|
||||
* : April 2019 - v2.1
|
||||
* : December 2020 - v2.2
|
||||
*
|
||||
*
|
||||
* Based on the Boeffla Sound 1.6 for Galaxy S3
|
||||
|
@ -30,44 +31,29 @@
|
|||
// pointer to regmap
|
||||
static struct regmap *map;
|
||||
|
||||
// internal moro sound variables
|
||||
static int first = 1; // first access
|
||||
// First access
|
||||
static int first = 1;
|
||||
|
||||
static int moro_sound; // moro sound master switch
|
||||
static int debug; // debug switch
|
||||
// Switches
|
||||
static int moro_sound, eq, headphone_mono, mic, reset = 0;
|
||||
|
||||
static int headphone_gain_l; // headphone volume left
|
||||
static int headphone_gain_r; // headphone volume right
|
||||
// Gains
|
||||
static int headphone_gain_l, headphone_gain_r, earpiece_gain, speaker_gain, eq_gains[5],
|
||||
mic_down_gain, mic_up_gain, mic_hp_gain;
|
||||
|
||||
static int earpiece_gain; // earpiece volume
|
||||
static int speaker_gain; // speaker volume
|
||||
|
||||
static int out2l_mix_source; // out2 mix source left
|
||||
static int out2r_mix_source; // out2 mix source right
|
||||
static int eq1_mix_source; // eq1 mix source left
|
||||
static int eq2_mix_source; // eq2 mix soirce right
|
||||
|
||||
static int eq; // eq master switch
|
||||
static int eq_gains[5] = {EQ_GAIN_DEFAULT}; // eq 5 bands gains
|
||||
// Mixers
|
||||
static int out2l_mix_source, out2r_mix_source, eq1_mix_source, eq2_mix_source;
|
||||
|
||||
|
||||
/*****************************************/
|
||||
// Internal function declarations
|
||||
/*****************************************/
|
||||
|
||||
static unsigned int get_headphone_gain_l(void);
|
||||
static unsigned int get_headphone_gain_r(void);
|
||||
static void set_headphone_gain_l(int gain);
|
||||
static void set_headphone_gain_r(int gain);
|
||||
static unsigned int get_value(int reg, int mask, int shift);
|
||||
static void set_value(int reg, int mask, int shift, int value);
|
||||
|
||||
static void set_out2l_mix_source(int value);
|
||||
static void set_out2r_mix_source(int value);
|
||||
|
||||
static void set_eq1_mix_source(int value);
|
||||
static void set_eq2_mix_source(int value);
|
||||
|
||||
static void set_eq(void);
|
||||
static void set_eq_gains(void);
|
||||
static void set_eq(bool reset);
|
||||
static void set_eq_gains(bool reset);
|
||||
|
||||
static void reset_moro_sound(void);
|
||||
static void reset_audio_hub(void);
|
||||
|
@ -82,159 +68,83 @@ static void update_audio_hub(void);
|
|||
|
||||
#define _read(reg, val) regmap_read(map, reg, val)
|
||||
|
||||
static unsigned int get_headphone_gain_l(void)
|
||||
static unsigned int get_value(int reg, int mask, int shift)
|
||||
{
|
||||
unsigned int val;
|
||||
|
||||
_read(MADERA_DAC_DIGITAL_VOLUME_2L, &val);
|
||||
val &= MADERA_OUT2L_VOL_MASK;
|
||||
val >>= MADERA_OUT2L_VOL_SHIFT;
|
||||
_read(reg, &val);
|
||||
val &= mask;
|
||||
val >>= shift;
|
||||
|
||||
return val;
|
||||
}
|
||||
|
||||
static void set_headphone_gain_l(int gain)
|
||||
static void set_value(int reg, int mask, int shift, int value)
|
||||
{
|
||||
unsigned int val;
|
||||
|
||||
_read(MADERA_DAC_DIGITAL_VOLUME_2L, &val);
|
||||
val &= ~MADERA_OUT2L_VOL_MASK;
|
||||
val |= (gain << MADERA_OUT2L_VOL_SHIFT);
|
||||
_write(MADERA_DAC_DIGITAL_VOLUME_2L, val);
|
||||
_read(reg, &val);
|
||||
val &= ~mask;
|
||||
val |= (value << shift);
|
||||
_write(reg, val);
|
||||
}
|
||||
|
||||
static unsigned int get_headphone_gain_r(void)
|
||||
static void set_eq(bool reset)
|
||||
{
|
||||
unsigned int val;
|
||||
|
||||
_read(MADERA_DAC_DIGITAL_VOLUME_2R, &val);
|
||||
val &= MADERA_OUT2R_VOL_MASK;
|
||||
val >>= MADERA_OUT2R_VOL_SHIFT;
|
||||
|
||||
return val;
|
||||
}
|
||||
|
||||
static void set_headphone_gain_r(int gain)
|
||||
{
|
||||
unsigned int val;
|
||||
|
||||
_read(MADERA_DAC_DIGITAL_VOLUME_2R, &val);
|
||||
val &= ~MADERA_OUT2R_VOL_MASK;
|
||||
val |= (gain << MADERA_OUT2R_VOL_SHIFT);
|
||||
_write(MADERA_DAC_DIGITAL_VOLUME_2R, val);
|
||||
}
|
||||
|
||||
static void set_out2l_mix_source(int value)
|
||||
{
|
||||
unsigned int val;
|
||||
|
||||
_read(MADERA_OUT2LMIX_INPUT_1_SOURCE, &val);
|
||||
val &= ~MADERA_MIXER_SOURCE_MASK;
|
||||
val |= (value << MADERA_MIXER_SOURCE_SHIFT);
|
||||
_write(MADERA_OUT2LMIX_INPUT_1_SOURCE, val);
|
||||
}
|
||||
|
||||
static void set_out2r_mix_source(int value)
|
||||
{
|
||||
unsigned int val;
|
||||
|
||||
_read(MADERA_OUT2RMIX_INPUT_1_SOURCE, &val);
|
||||
val &= ~MADERA_MIXER_SOURCE_MASK;
|
||||
val |= (value << MADERA_MIXER_SOURCE_SHIFT);
|
||||
_write(MADERA_OUT2RMIX_INPUT_1_SOURCE, val);
|
||||
}
|
||||
|
||||
static void set_eq1_mix_source(int value)
|
||||
{
|
||||
unsigned int val;
|
||||
|
||||
_read(MADERA_EQ1MIX_INPUT_1_SOURCE, &val);
|
||||
val &= ~MADERA_MIXER_SOURCE_MASK;
|
||||
val |= (value << MADERA_MIXER_SOURCE_SHIFT);
|
||||
_write(MADERA_EQ1MIX_INPUT_1_SOURCE, val);
|
||||
}
|
||||
|
||||
|
||||
static void set_eq2_mix_source(int value)
|
||||
{
|
||||
unsigned int val;
|
||||
|
||||
_read(MADERA_EQ2MIX_INPUT_1_SOURCE, &val);
|
||||
val &= ~MADERA_MIXER_SOURCE_MASK;
|
||||
val |= (value << MADERA_MIXER_SOURCE_SHIFT);
|
||||
_write(MADERA_EQ2MIX_INPUT_1_SOURCE, val);
|
||||
}
|
||||
|
||||
static void set_eq(void)
|
||||
{
|
||||
unsigned int val;
|
||||
|
||||
// If EQ is enabled
|
||||
if (eq & moro_sound)
|
||||
{
|
||||
// Enable EQ1 for left channel
|
||||
_read(MADERA_EQ1_1, &val);
|
||||
val &= ~MADERA_EQ1_ENA_MASK;
|
||||
val |= 1 << MADERA_EQ1_ENA_SHIFT;
|
||||
_write(MADERA_EQ1_1, val);
|
||||
|
||||
// Enable EQ2 for right channel
|
||||
_read(MADERA_EQ2_1, &val);
|
||||
val &= ~MADERA_EQ2_ENA_MASK;
|
||||
val |= 1 << MADERA_EQ2_ENA_SHIFT;
|
||||
_write(MADERA_EQ2_1, val);
|
||||
|
||||
if (eq & moro_sound) {
|
||||
// Set mixers
|
||||
eq1_mix_source = 33; // EQ1 -> AIF1 RX1 left
|
||||
eq2_mix_source = 33; // EQ2 -> AIF1 RX2 right
|
||||
set_eq1_mix_source(eq1_mix_source);
|
||||
set_eq2_mix_source(eq2_mix_source);
|
||||
|
||||
out2l_mix_source = 81; // OUT2L -> EQ1 left
|
||||
out2r_mix_source = 81; // OUT2R -> EQ2 right
|
||||
set_out2l_mix_source(out2l_mix_source);
|
||||
set_out2r_mix_source(out2r_mix_source);
|
||||
}
|
||||
// If EQ is disabled
|
||||
else
|
||||
{
|
||||
// Disable EQ1
|
||||
_read(MADERA_EQ1_1, &val);
|
||||
val &= ~MADERA_EQ1_ENA_MASK;
|
||||
val |= 0 << MADERA_EQ1_ENA_SHIFT;
|
||||
_write(MADERA_EQ1_1, val);
|
||||
|
||||
// Disable EQ2
|
||||
_read(MADERA_EQ2_1, &val);
|
||||
val &= ~MADERA_EQ2_ENA_MASK;
|
||||
val |= 0 << MADERA_EQ2_ENA_SHIFT;
|
||||
_write(MADERA_EQ2_1, val);
|
||||
} else {
|
||||
|
||||
// Set mixers to default
|
||||
eq1_mix_source = EQ1_MIX_DEFAULT;
|
||||
eq2_mix_source = EQ2_MIX_DEFAULT;
|
||||
set_eq1_mix_source(eq1_mix_source);
|
||||
set_eq2_mix_source(eq2_mix_source);
|
||||
|
||||
out2l_mix_source = OUT2L_MIX_DEFAULT;
|
||||
out2r_mix_source = OUT2R_MIX_DEFAULT;
|
||||
set_out2l_mix_source(out2l_mix_source);
|
||||
set_out2r_mix_source(out2r_mix_source);
|
||||
}
|
||||
|
||||
set_eq_gains();
|
||||
set_value(EQ1_ENA, eq);
|
||||
set_value(EQ2_ENA, eq);
|
||||
|
||||
set_value(EQ1_MIX, eq1_mix_source);
|
||||
set_value(EQ2_MIX, eq2_mix_source);
|
||||
|
||||
set_value(OUT2L_MIX, out2l_mix_source);
|
||||
set_value(OUT2R_MIX, out2r_mix_source);
|
||||
|
||||
// If reset = true, then set the eq band gains to default values
|
||||
if (reset)
|
||||
set_eq_gains(1);
|
||||
else
|
||||
set_eq_gains(0);
|
||||
}
|
||||
|
||||
static void set_eq_gains(void)
|
||||
static void set_eq_gains(bool reset)
|
||||
{
|
||||
unsigned int val;
|
||||
unsigned int gain1, gain2, gain3, gain4, gain5;
|
||||
|
||||
gain1 = eq_gains[0];
|
||||
gain2 = eq_gains[1];
|
||||
gain3 = eq_gains[2];
|
||||
gain4 = eq_gains[3];
|
||||
gain5 = eq_gains[4];
|
||||
// If reset = true, set the eq band gains to default
|
||||
if (reset) {
|
||||
gain1 = EQ_B1_GAIN_DEFAULT;
|
||||
gain2 = EQ_B2_GAIN_DEFAULT;
|
||||
gain3 = EQ_B3_GAIN_DEFAULT;
|
||||
gain4 = EQ_B4_GAIN_DEFAULT;
|
||||
gain5 = EQ_B5_GAIN_DEFAULT;
|
||||
} else {
|
||||
gain1 = eq_gains[0];
|
||||
gain2 = eq_gains[1];
|
||||
gain3 = eq_gains[2];
|
||||
gain4 = eq_gains[3];
|
||||
gain5 = eq_gains[4];
|
||||
}
|
||||
|
||||
// First register
|
||||
// read current value from audio hub and mask all bits apart from equalizer enabled bit,
|
||||
|
@ -256,9 +166,6 @@ static void set_eq_gains(void)
|
|||
val |= ((gain5 + EQ_GAIN_OFFSET) << MADERA_EQ1_B5_GAIN_SHIFT);
|
||||
_write(MADERA_EQ1_2, val);
|
||||
_write(MADERA_EQ2_2, val);
|
||||
|
||||
if (debug)
|
||||
printk("Moro-sound: written the new EQ gain values\n");
|
||||
}
|
||||
|
||||
|
||||
|
@ -272,13 +179,17 @@ void moro_sound_hook_madera_pcm_probe(struct regmap *pmap)
|
|||
// that for internal calls to the audio hub
|
||||
map = pmap;
|
||||
|
||||
// Print debug info
|
||||
printk("Moro-sound: regmap pointer received\n");
|
||||
|
||||
// Initialize moro sound master switch finally
|
||||
moro_sound = MORO_SOUND_DEFAULT;
|
||||
headphone_mono = HEADPHONE_MONO_DEFAULT;
|
||||
mic = MIC_DEFAULT;
|
||||
eq = EQ_DEFAULT;
|
||||
set_eq();
|
||||
eq_gains[0] = EQ_B1_GAIN_DEFAULT;
|
||||
eq_gains[1] = EQ_B2_GAIN_DEFAULT;
|
||||
eq_gains[2] = EQ_B3_GAIN_DEFAULT;
|
||||
eq_gains[3] = EQ_B4_GAIN_DEFAULT;
|
||||
eq_gains[4] = EQ_B5_GAIN_DEFAULT;
|
||||
set_eq(0);
|
||||
|
||||
// If moro sound is enabled during driver start, reset to default configuration
|
||||
if (moro_sound)
|
||||
|
@ -313,14 +224,6 @@ unsigned int moro_sound_write_hook(unsigned int reg, unsigned int val)
|
|||
break;
|
||||
}
|
||||
|
||||
// earpiece
|
||||
case MADERA_DAC_DIGITAL_VOLUME_3L:
|
||||
{
|
||||
val &= ~MADERA_OUT3L_VOL_MASK;
|
||||
val |= (earpiece_gain << MADERA_OUT3L_VOL_SHIFT);
|
||||
break;
|
||||
}
|
||||
|
||||
if (eq){
|
||||
// hpout2 l
|
||||
case MADERA_OUT2LMIX_INPUT_1_SOURCE:
|
||||
|
@ -337,6 +240,29 @@ unsigned int moro_sound_write_hook(unsigned int reg, unsigned int val)
|
|||
break;
|
||||
}
|
||||
}
|
||||
if (mic){
|
||||
// mic down
|
||||
case MADERA_ADC_DIGITAL_VOLUME_1R:
|
||||
{
|
||||
val &= ~MADERA_IN1R_DIG_VOL_MASK;
|
||||
val |= (mic_down_gain << MADERA_IN1R_DIG_VOL_SHIFT);
|
||||
break;
|
||||
}
|
||||
// mic up
|
||||
case MADERA_ADC_DIGITAL_VOLUME_3L:
|
||||
{
|
||||
val &= ~MADERA_IN3L_DIG_VOL_MASK;
|
||||
val |= (mic_up_gain << MADERA_IN3L_DIG_VOL_SHIFT);
|
||||
break;
|
||||
}
|
||||
// mic hp
|
||||
case MADERA_ADC_DIGITAL_VOLUME_2L:
|
||||
{
|
||||
val &= ~MADERA_IN2L_DIG_VOL_MASK;
|
||||
val |= (mic_hp_gain << MADERA_IN2L_DIG_VOL_SHIFT);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return val;
|
||||
|
@ -356,6 +282,7 @@ static void reset_moro_sound(void)
|
|||
|
||||
headphone_gain_l = HEADPHONE_DEFAULT;
|
||||
headphone_gain_r = HEADPHONE_DEFAULT;
|
||||
headphone_mono = HEADPHONE_MONO_DEFAULT;
|
||||
|
||||
out2l_mix_source = OUT2L_MIX_DEFAULT;
|
||||
out2r_mix_source = OUT2R_MIX_DEFAULT;
|
||||
|
@ -363,33 +290,39 @@ static void reset_moro_sound(void)
|
|||
eq1_mix_source = EQ1_MIX_DEFAULT;
|
||||
eq2_mix_source = EQ2_MIX_DEFAULT;
|
||||
|
||||
debug = DEBUG_DEFAULT;
|
||||
|
||||
if (debug)
|
||||
printk("Moro-sound: moro sound reset done\n");
|
||||
eq = EQ_DEFAULT;
|
||||
eq_gains[0] = EQ_B1_GAIN_DEFAULT;
|
||||
eq_gains[1] = EQ_B2_GAIN_DEFAULT;
|
||||
eq_gains[2] = EQ_B3_GAIN_DEFAULT;
|
||||
eq_gains[3] = EQ_B4_GAIN_DEFAULT;
|
||||
eq_gains[4] = EQ_B5_GAIN_DEFAULT;
|
||||
|
||||
mic = MIC_DEFAULT;
|
||||
mic_down_gain = MIC_DOWN_GAIN_DEFAULT;
|
||||
mic_up_gain = MIC_UP_GAIN_DEFAULT;
|
||||
mic_hp_gain = MIC_HP_GAIN_DEFAULT;
|
||||
}
|
||||
|
||||
|
||||
static void reset_audio_hub(void)
|
||||
{
|
||||
// reset all audio hub registers back to defaults
|
||||
|
||||
set_headphone_gain_l(HEADPHONE_DEFAULT);
|
||||
set_headphone_gain_r(HEADPHONE_DEFAULT);
|
||||
set_value(OUT2L_VOLUME, HEADPHONE_DEFAULT);
|
||||
set_value(OUT2R_VOLUME, HEADPHONE_DEFAULT);
|
||||
set_value(OUT2_MONO, HEADPHONE_MONO_DEFAULT);
|
||||
|
||||
set_earpiece_gain_value(EARPIECE_DEFAULT);
|
||||
set_speaker_gain_value(SPEAKER_DEFAULT);
|
||||
|
||||
set_out2l_mix_source(OUT2L_MIX_DEFAULT);
|
||||
set_out2r_mix_source(OUT2R_MIX_DEFAULT);
|
||||
set_value(OUT2L_MIX, OUT2L_MIX_DEFAULT);
|
||||
set_value(OUT2R_MIX, OUT2R_MIX_DEFAULT);
|
||||
|
||||
set_eq1_mix_source(EQ1_MIX_DEFAULT);
|
||||
set_eq2_mix_source(EQ2_MIX_DEFAULT);
|
||||
set_value(EQ1_MIX, EQ1_MIX_DEFAULT);
|
||||
set_value(EQ2_MIX, EQ2_MIX_DEFAULT);
|
||||
|
||||
set_eq();
|
||||
|
||||
if (debug)
|
||||
printk("Moro-sound: madera audio hub reset done\n");
|
||||
set_value(MIC1R_VOLUME, MIC_DOWN_GAIN_DEFAULT);
|
||||
set_value(MIC3L_VOLUME, MIC_UP_GAIN_DEFAULT);
|
||||
set_value(MIC2L_VOLUME, MIC_HP_GAIN_DEFAULT);
|
||||
set_eq(1);
|
||||
}
|
||||
|
||||
|
||||
|
@ -400,19 +333,21 @@ static void update_audio_hub(void)
|
|||
set_earpiece_gain_value(earpiece_gain);
|
||||
set_speaker_gain_value(speaker_gain);
|
||||
|
||||
set_headphone_gain_l(headphone_gain_l);
|
||||
set_headphone_gain_r(headphone_gain_r);
|
||||
set_value(OUT2L_VOLUME, headphone_gain_l);
|
||||
set_value(OUT2R_VOLUME, headphone_gain_r);
|
||||
set_value(OUT2_MONO, headphone_mono);
|
||||
|
||||
set_out2l_mix_source(out2l_mix_source);
|
||||
set_out2r_mix_source(out2r_mix_source);
|
||||
set_value(OUT2L_MIX, out2l_mix_source);
|
||||
set_value(OUT2R_MIX, out2r_mix_source);
|
||||
|
||||
set_eq1_mix_source(eq1_mix_source);
|
||||
set_eq2_mix_source(eq2_mix_source);
|
||||
set_value(EQ1_MIX, eq1_mix_source);
|
||||
set_value(EQ2_MIX, eq1_mix_source);
|
||||
|
||||
set_eq();
|
||||
set_value(MIC1R_VOLUME, mic_down_gain);
|
||||
set_value(MIC3L_VOLUME, mic_up_gain);
|
||||
set_value(MIC2L_VOLUME, mic_hp_gain);
|
||||
|
||||
if (debug)
|
||||
printk("Moro-sound: madera audio hub updated done\n");
|
||||
set_eq(0);
|
||||
}
|
||||
|
||||
|
||||
|
@ -460,10 +395,6 @@ static ssize_t moro_sound_store(struct device *dev, struct device_attribute *att
|
|||
if(val == 1) update_audio_hub();
|
||||
if(val == 0) reset_audio_hub();
|
||||
}
|
||||
|
||||
// print debug info
|
||||
if (debug)
|
||||
printk("Moro-sound: status %d\n", moro_sound);
|
||||
}
|
||||
|
||||
return count;
|
||||
|
@ -483,8 +414,7 @@ static ssize_t headphone_gain_store(struct device *dev, struct device_attribute
|
|||
const char *buf, size_t count)
|
||||
{
|
||||
unsigned int ret = -EINVAL;
|
||||
int val_l;
|
||||
int val_r;
|
||||
int val_l, val_r;
|
||||
|
||||
// Terminate if moro sound is not enabled
|
||||
if (!moro_sound)
|
||||
|
@ -510,12 +440,44 @@ static ssize_t headphone_gain_store(struct device *dev, struct device_attribute
|
|||
headphone_gain_r = val_r;
|
||||
|
||||
// set new values
|
||||
set_headphone_gain_l(headphone_gain_l);
|
||||
set_headphone_gain_r(headphone_gain_r);
|
||||
set_value(OUT2L_VOLUME, headphone_gain_l);
|
||||
set_value(OUT2R_VOLUME, headphone_gain_r);
|
||||
|
||||
// print debug info
|
||||
if (debug)
|
||||
printk("Moro-sound: headphone volume L=%d R=%d\n", headphone_gain_l, headphone_gain_r);
|
||||
return count;
|
||||
}
|
||||
|
||||
static ssize_t headphone_mono_show(struct device *dev, struct device_attribute *attr, char *buf)
|
||||
{
|
||||
return sprintf(buf, "%d\n", headphone_mono);
|
||||
}
|
||||
|
||||
static ssize_t headphone_mono_store(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
unsigned int ret = -EINVAL;
|
||||
int val;
|
||||
|
||||
// Terminate if moro sound is not enabled
|
||||
if (!moro_sound)
|
||||
return count;
|
||||
|
||||
// read values from input buffer
|
||||
ret = sscanf(buf, "%d", &val);
|
||||
|
||||
if (ret != 1)
|
||||
return -EINVAL;
|
||||
|
||||
// store if valid data
|
||||
if ((val == 0) || (val == 1)) {
|
||||
// check if there was a change
|
||||
if (headphone_mono != val) {
|
||||
// set new status
|
||||
headphone_mono = val;
|
||||
|
||||
// set new values
|
||||
set_value(OUT2_MONO, headphone_mono);
|
||||
}
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
|
@ -550,9 +512,6 @@ static ssize_t earpiece_gain_store(struct device *dev, struct device_attribute *
|
|||
earpiece_gain = val;
|
||||
// set new values
|
||||
set_earpiece_gain_value(earpiece_gain);
|
||||
// print debug info
|
||||
if (debug)
|
||||
printk("Moro-sound: earpiece volume: %d\n", earpiece_gain);
|
||||
return count;
|
||||
}
|
||||
static ssize_t earpiece_limits_show(struct device *dev, struct device_attribute *attr, char *buf)
|
||||
|
@ -560,6 +519,121 @@ static ssize_t earpiece_limits_show(struct device *dev, struct device_attribute
|
|||
// return version information
|
||||
return sprintf(buf, "Min:%u Max:%u Def:%u\n", EARPIECE_MIN, EARPIECE_MAX, EARPIECE_DEFAULT);
|
||||
}
|
||||
// Mic Gain
|
||||
|
||||
static ssize_t mic_show(struct device *dev, struct device_attribute *attr, char *buf)
|
||||
{
|
||||
return sprintf(buf, "%d\n", mic);
|
||||
}
|
||||
|
||||
static ssize_t mic_store(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
unsigned int ret = -EINVAL;
|
||||
int val;
|
||||
|
||||
// Terminate if moro sound is not enabled
|
||||
if (!moro_sound)
|
||||
return count;
|
||||
|
||||
// read values from input buffer
|
||||
ret = sscanf(buf, "%d", &val);
|
||||
|
||||
if (ret != 1)
|
||||
return -EINVAL;
|
||||
|
||||
mic = val;
|
||||
|
||||
set_value(MIC1R_VOLUME, MIC_DOWN_GAIN_DEFAULT);
|
||||
set_value(MIC3L_VOLUME, MIC_UP_GAIN_DEFAULT);
|
||||
set_value(MIC2L_VOLUME, MIC_HP_GAIN_DEFAULT);
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
static ssize_t mic_down_gain_show(struct device *dev, struct device_attribute *attr, char *buf)
|
||||
{
|
||||
return sprintf(buf, "%d\n", mic_down_gain);
|
||||
}
|
||||
|
||||
static ssize_t mic_down_gain_store(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
unsigned int ret = -EINVAL;
|
||||
int val;
|
||||
|
||||
// Terminate if moro sound is not enabled
|
||||
if ((!moro_sound) && (!mic))
|
||||
return count;
|
||||
|
||||
// read values from input buffer
|
||||
ret = sscanf(buf, "%d", &val);
|
||||
|
||||
if (ret != 1)
|
||||
return -EINVAL;
|
||||
|
||||
mic_down_gain = val;
|
||||
|
||||
set_value(MIC1R_VOLUME, mic_down_gain);
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
static ssize_t mic_up_gain_show(struct device *dev, struct device_attribute *attr, char *buf)
|
||||
{
|
||||
return sprintf(buf, "%d\n", mic_up_gain);
|
||||
}
|
||||
|
||||
static ssize_t mic_up_gain_store(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
unsigned int ret = -EINVAL;
|
||||
int val;
|
||||
|
||||
// Terminate if moro sound is not enabled
|
||||
if ((!moro_sound) && (!mic))
|
||||
return count;
|
||||
|
||||
// read values from input buffer
|
||||
ret = sscanf(buf, "%d", &val);
|
||||
|
||||
if (ret != 1)
|
||||
return -EINVAL;
|
||||
|
||||
mic_up_gain = val;
|
||||
|
||||
set_value(MIC3L_VOLUME, mic_up_gain);
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
static ssize_t mic_hp_gain_show(struct device *dev, struct device_attribute *attr, char *buf)
|
||||
{
|
||||
return sprintf(buf, "%d\n", mic_hp_gain);
|
||||
}
|
||||
|
||||
static ssize_t mic_hp_gain_store(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
unsigned int ret = -EINVAL;
|
||||
int val;
|
||||
|
||||
// Terminate if moro sound is not enabled
|
||||
if ((!moro_sound) && (!mic))
|
||||
return count;
|
||||
|
||||
// read values from input buffer
|
||||
ret = sscanf(buf, "%d", &val);
|
||||
|
||||
if (ret != 1)
|
||||
return -EINVAL;
|
||||
|
||||
mic_hp_gain = val;
|
||||
|
||||
set_value(MIC2L_VOLUME, mic_hp_gain);
|
||||
|
||||
return count;
|
||||
}
|
||||
// Speaker Volume
|
||||
static ssize_t speaker_gain_show(struct device *dev, struct device_attribute *attr, char *buf)
|
||||
{
|
||||
|
@ -583,9 +657,6 @@ static ssize_t speaker_gain_store(struct device *dev, struct device_attribute *a
|
|||
speaker_gain = val;
|
||||
// set new values
|
||||
set_speaker_gain_value(speaker_gain);
|
||||
// print debug info
|
||||
if (debug)
|
||||
printk("Moro-sound: speaker volume: %d\n", speaker_gain);
|
||||
return count;
|
||||
}
|
||||
static ssize_t speaker_limits_show(struct device *dev, struct device_attribute *attr, char *buf)
|
||||
|
@ -629,12 +700,8 @@ static ssize_t eq_store(struct device *dev, struct device_attribute *attr,
|
|||
// store new value
|
||||
eq = val;
|
||||
|
||||
set_eq();
|
||||
set_eq(1);
|
||||
}
|
||||
|
||||
// print debug info
|
||||
if (debug)
|
||||
printk("Moro-sound: EQ status: %d\n", eq);
|
||||
}
|
||||
|
||||
return count;
|
||||
|
@ -653,8 +720,7 @@ static ssize_t eq_gains_store(struct device *dev, struct device_attribute *attr,
|
|||
const char *buf, size_t count)
|
||||
{
|
||||
unsigned int ret = -EINVAL;
|
||||
int gains[5];
|
||||
int i;
|
||||
int i, gains[5];
|
||||
|
||||
// Terminate if moro sound is not enabled
|
||||
if (!moro_sound)
|
||||
|
@ -679,11 +745,7 @@ static ssize_t eq_gains_store(struct device *dev, struct device_attribute *attr,
|
|||
}
|
||||
|
||||
// set new values
|
||||
set_eq_gains();
|
||||
|
||||
// print debug info
|
||||
if (debug)
|
||||
printk("Moro-sound: EQ gains: %d %d %d %d %d\n", eq_gains[0], eq_gains[1], eq_gains[2], eq_gains[3], eq_gains[4]);
|
||||
set_eq_gains(0);
|
||||
|
||||
return count;
|
||||
}
|
||||
|
@ -716,11 +778,7 @@ static ssize_t eq_b1_gain_store(struct device *dev, struct device_attribute *att
|
|||
eq_gains[0] = val;
|
||||
|
||||
// set new values
|
||||
set_eq_gains();
|
||||
|
||||
// print debug info
|
||||
if (debug)
|
||||
printk("Moro-sound: EQ Band1 gain: %d\n", eq_gains[0]);
|
||||
set_eq_gains(0);
|
||||
|
||||
return count;
|
||||
}
|
||||
|
@ -753,11 +811,7 @@ static ssize_t eq_b2_gain_store(struct device *dev, struct device_attribute *att
|
|||
eq_gains[1] = val;
|
||||
|
||||
// set new values
|
||||
set_eq_gains();
|
||||
|
||||
// print debug info
|
||||
if (debug)
|
||||
printk("Moro-sound: EQ Band2 gain: %d\n", eq_gains[1]);
|
||||
set_eq_gains(0);
|
||||
|
||||
return count;
|
||||
}
|
||||
|
@ -790,11 +844,7 @@ static ssize_t eq_b3_gain_store(struct device *dev, struct device_attribute *att
|
|||
eq_gains[2] = val;
|
||||
|
||||
// set new values
|
||||
set_eq_gains();
|
||||
|
||||
// print debug info
|
||||
if (debug)
|
||||
printk("Moro-sound: EQ Band3 gain: %d\n", eq_gains[2]);
|
||||
set_eq_gains(0);
|
||||
|
||||
return count;
|
||||
}
|
||||
|
@ -827,11 +877,7 @@ static ssize_t eq_b4_gain_store(struct device *dev, struct device_attribute *att
|
|||
eq_gains[3] = val;
|
||||
|
||||
// set new values
|
||||
set_eq_gains();
|
||||
|
||||
// print debug info
|
||||
if (debug)
|
||||
printk("Moro-sound: EQ Band4 gain: %d\n", eq_gains[3]);
|
||||
set_eq_gains(0);
|
||||
|
||||
return count;
|
||||
}
|
||||
|
@ -864,11 +910,7 @@ static ssize_t eq_b5_gain_store(struct device *dev, struct device_attribute *att
|
|||
eq_gains[4] = val;
|
||||
|
||||
// set new values
|
||||
set_eq_gains();
|
||||
|
||||
// print debug info
|
||||
if (debug)
|
||||
printk("Moro-sound: EQ Band5 gain: %d\n", eq_gains[4]);
|
||||
set_eq_gains(0);
|
||||
|
||||
return count;
|
||||
}
|
||||
|
@ -876,17 +918,17 @@ static ssize_t eq_b5_gain_store(struct device *dev, struct device_attribute *att
|
|||
|
||||
// Debug status
|
||||
|
||||
static ssize_t debug_show(struct device *dev, struct device_attribute *attr, char *buf)
|
||||
static ssize_t reset_show(struct device *dev, struct device_attribute *attr, char *buf)
|
||||
{
|
||||
// return current debug status
|
||||
return sprintf(buf, "%d\n", debug);
|
||||
return sprintf(buf, "%d\n", reset);
|
||||
}
|
||||
|
||||
static ssize_t debug_store(struct device *dev, struct device_attribute *attr,
|
||||
static ssize_t reset_store(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
unsigned int ret = -EINVAL;
|
||||
unsigned int val;
|
||||
int val;
|
||||
|
||||
// check data and store if valid
|
||||
ret = sscanf(buf, "%d", &val);
|
||||
|
@ -894,8 +936,10 @@ static ssize_t debug_store(struct device *dev, struct device_attribute *attr,
|
|||
if (ret != 1)
|
||||
return -EINVAL;
|
||||
|
||||
if ((val == 0) || (val == 1))
|
||||
debug = val;
|
||||
if (val == 1) {
|
||||
reset_moro_sound();
|
||||
update_audio_hub();
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
|
@ -905,25 +949,7 @@ static ssize_t debug_store(struct device *dev, struct device_attribute *attr,
|
|||
|
||||
static ssize_t reg_dump_show(struct device *dev, struct device_attribute *attr, char *buf)
|
||||
{
|
||||
unsigned int out2_ena, out2l_mix, out2r_mix, eq1_ena, eq2_ena, eq1_mix, eq2_mix, eq_b1,
|
||||
eq_b2, eq_b3, eq_b4, eq_b5;
|
||||
|
||||
_read(MADERA_OUTPUT_ENABLES_1, &out2_ena);
|
||||
out2_ena = (out2_ena & MADERA_OUT2L_ENA_MASK) >> MADERA_OUT2L_ENA_SHIFT;
|
||||
|
||||
_read(MADERA_OUT2LMIX_INPUT_1_SOURCE, &out2l_mix);
|
||||
|
||||
_read(MADERA_OUT2RMIX_INPUT_1_SOURCE, &out2r_mix);
|
||||
|
||||
_read(MADERA_EQ1_1, &eq1_ena);
|
||||
eq1_ena = (eq1_ena & MADERA_EQ1_ENA_MASK) >> MADERA_EQ1_ENA_SHIFT;
|
||||
|
||||
_read(MADERA_EQ2_1, &eq2_ena);
|
||||
eq2_ena = (eq2_ena & MADERA_EQ2_ENA_MASK) >> MADERA_EQ2_ENA_SHIFT;
|
||||
|
||||
_read(MADERA_EQ1MIX_INPUT_1_SOURCE, &eq1_mix);
|
||||
|
||||
_read(MADERA_EQ2MIX_INPUT_1_SOURCE, &eq2_mix);
|
||||
unsigned int eq_b1, eq_b2, eq_b3, eq_b4, eq_b5, mic1r, mic3l, mic2l;
|
||||
|
||||
_read(MADERA_EQ1_1, &eq_b1);
|
||||
eq_b1 = ((eq_b1 & MADERA_EQ1_B1_GAIN_MASK) >> MADERA_EQ1_B1_GAIN_SHIFT) - EQ_GAIN_OFFSET;
|
||||
|
@ -935,6 +961,12 @@ static ssize_t reg_dump_show(struct device *dev, struct device_attribute *attr,
|
|||
eq_b4 = ((eq_b4 & MADERA_EQ1_B4_GAIN_MASK) >> MADERA_EQ1_B4_GAIN_SHIFT) - EQ_GAIN_OFFSET;
|
||||
_read(MADERA_EQ1_2, &eq_b5);
|
||||
eq_b5 = ((eq_b5 & MADERA_EQ1_B5_GAIN_MASK) >> MADERA_EQ1_B5_GAIN_SHIFT) - EQ_GAIN_OFFSET;
|
||||
_read(MADERA_INPUT_ENABLES, &mic1r);
|
||||
mic1r = (mic1r & MADERA_IN1R_ENA_MASK) >> MADERA_IN1R_ENA_SHIFT;
|
||||
_read(MADERA_INPUT_ENABLES, &mic3l);
|
||||
mic3l = (mic3l & MADERA_IN3L_ENA_MASK) >> MADERA_IN3L_ENA_SHIFT;
|
||||
_read(MADERA_INPUT_ENABLES, &mic2l);
|
||||
mic2l = (mic2l & MADERA_IN2L_ENA_MASK) >> MADERA_IN2L_ENA_SHIFT;
|
||||
|
||||
|
||||
|
||||
|
@ -943,41 +975,42 @@ static ssize_t reg_dump_show(struct device *dev, struct device_attribute *attr,
|
|||
return sprintf(buf, "\
|
||||
headphone_gain_l: reg: %d, variable: %d\n\
|
||||
headphone_gain_r: reg: %d, variable: %d\n\
|
||||
headphone mono: %d\n\
|
||||
first enable: %d\n\
|
||||
earpiece_gain: %d\n\
|
||||
speaker_gain: %d\n\
|
||||
HPOUT2 Enabled: %d\n\
|
||||
HPOUT2L Source: %d\n\
|
||||
HPOUT2R Source: %d\n\
|
||||
EQ1 Enabled: %d\n\
|
||||
EQ2 Enabled: %d\n\
|
||||
EQ1MIX source: %d\n\
|
||||
EQ2MIX source: %d\n\
|
||||
OUT1 Source: L: %d R: %d\n\
|
||||
EQ Enabled: 1: %d 2: %d\n\
|
||||
EQMIX source: 1: %d 2: %d\n\
|
||||
EQ b1 gain: %d\n\
|
||||
EQ b2 gain: %d\n\
|
||||
EQ b3 gain: %d\n\
|
||||
EQ b4 gain: %d\n\
|
||||
EQ b5 gain: %d\n\
|
||||
",
|
||||
get_headphone_gain_l(),
|
||||
headphone_gain_l,
|
||||
get_headphone_gain_r(),
|
||||
headphone_gain_r,
|
||||
MIC Down: %d Vol: %d\n\
|
||||
MIC Up: %d Vol: %d\n\
|
||||
MIC Hp: %d Vol: %d\n\
|
||||
",
|
||||
get_value(OUT2L_VOLUME), headphone_gain_l,
|
||||
get_value(OUT2R_VOLUME), headphone_gain_r,
|
||||
get_value(OUT2_MONO),
|
||||
first,
|
||||
get_earpiece_gain(),
|
||||
get_speaker_gain(),
|
||||
out2_ena,
|
||||
out2l_mix,
|
||||
out2r_mix,
|
||||
eq1_ena,
|
||||
eq2_ena,
|
||||
eq1_mix,
|
||||
eq2_mix,
|
||||
get_value(OUT2L_MIX), get_value(OUT2R_MIX),
|
||||
get_value(EQ1_ENA), get_value(EQ2_ENA),
|
||||
get_value(EQ1_MIX), get_value(EQ2_MIX),
|
||||
eq_b1,
|
||||
eq_b2,
|
||||
eq_b3,
|
||||
eq_b4,
|
||||
eq_b5);
|
||||
eq_b5,
|
||||
mic1r,
|
||||
get_value(MIC1R_VOLUME),
|
||||
mic3l,
|
||||
get_value(MIC3L_VOLUME),
|
||||
mic2l,
|
||||
get_value(MIC2L_VOLUME));
|
||||
}
|
||||
|
||||
|
||||
|
@ -998,8 +1031,13 @@ static ssize_t version_show(struct device *dev, struct device_attribute *attr, c
|
|||
static DEVICE_ATTR(moro_sound, 0664, moro_sound_show, moro_sound_store);
|
||||
static DEVICE_ATTR(headphone_gain, 0664, headphone_gain_show, headphone_gain_store);
|
||||
static DEVICE_ATTR(headphone_limits, 0664, headphone_limits_show, NULL);
|
||||
static DEVICE_ATTR(headphone_mono, 0664, headphone_mono_show, headphone_mono_store);
|
||||
static DEVICE_ATTR(earpiece_gain, 0664, earpiece_gain_show, earpiece_gain_store);
|
||||
static DEVICE_ATTR(earpiece_limits, 0664, earpiece_limits_show, NULL);
|
||||
static DEVICE_ATTR(mic, 0664, mic_show, mic_store);
|
||||
static DEVICE_ATTR(mic_down_gain, 0664, mic_down_gain_show, mic_down_gain_store);
|
||||
static DEVICE_ATTR(mic_up_gain, 0664, mic_up_gain_show, mic_up_gain_store);
|
||||
static DEVICE_ATTR(mic_hp_gain, 0664, mic_hp_gain_show, mic_hp_gain_store);
|
||||
static DEVICE_ATTR(speaker_gain, 0664, speaker_gain_show, speaker_gain_store);
|
||||
static DEVICE_ATTR(speaker_limits, 0664, speaker_limits_show, NULL);
|
||||
static DEVICE_ATTR(eq, 0664, eq_show, eq_store);
|
||||
|
@ -1009,7 +1047,7 @@ static DEVICE_ATTR(eq_b2_gain, 0664, eq_b2_gain_show, eq_b2_gain_store);
|
|||
static DEVICE_ATTR(eq_b3_gain, 0664, eq_b3_gain_show, eq_b3_gain_store);
|
||||
static DEVICE_ATTR(eq_b4_gain, 0664, eq_b4_gain_show, eq_b4_gain_store);
|
||||
static DEVICE_ATTR(eq_b5_gain, 0664, eq_b5_gain_show, eq_b5_gain_store);
|
||||
static DEVICE_ATTR(debug, 0664, debug_show, debug_store);
|
||||
static DEVICE_ATTR(reset, 0664, reset_show, reset_store);
|
||||
static DEVICE_ATTR(version, 0664, version_show, NULL);
|
||||
static DEVICE_ATTR(reg_dump, 0664, reg_dump_show, NULL);
|
||||
|
||||
|
@ -1017,9 +1055,14 @@ static DEVICE_ATTR(reg_dump, 0664, reg_dump_show, NULL);
|
|||
static struct attribute *moro_sound_attributes[] = {
|
||||
&dev_attr_moro_sound.attr,
|
||||
&dev_attr_headphone_gain.attr,
|
||||
&dev_attr_headphone_mono.attr,
|
||||
&dev_attr_headphone_limits.attr,
|
||||
&dev_attr_earpiece_gain.attr,
|
||||
&dev_attr_earpiece_limits.attr,
|
||||
&dev_attr_mic.attr,
|
||||
&dev_attr_mic_down_gain.attr,
|
||||
&dev_attr_mic_up_gain.attr,
|
||||
&dev_attr_mic_hp_gain.attr,
|
||||
&dev_attr_speaker_gain.attr,
|
||||
&dev_attr_speaker_limits.attr,
|
||||
&dev_attr_eq.attr,
|
||||
|
@ -1029,7 +1072,7 @@ static struct attribute *moro_sound_attributes[] = {
|
|||
&dev_attr_eq_b3_gain.attr,
|
||||
&dev_attr_eq_b4_gain.attr,
|
||||
&dev_attr_eq_b5_gain.attr,
|
||||
&dev_attr_debug.attr,
|
||||
&dev_attr_reset.attr,
|
||||
&dev_attr_version.attr,
|
||||
&dev_attr_reg_dump.attr,
|
||||
NULL
|
||||
|
@ -1074,13 +1117,11 @@ static int __init moro_sound_init(void)
|
|||
// Initialize moro sound master switch with OFF per default (will be set to correct
|
||||
// default value when we receive the codec pointer later - avoids startup boot loop)
|
||||
moro_sound = 0;
|
||||
eq = 0;
|
||||
|
||||
// Initialize variables
|
||||
reset_moro_sound();
|
||||
|
||||
// Print debug info
|
||||
printk("Moro-sound: engine version %s started\n", MORO_SOUND_VERSION);
|
||||
pr_info("Moro-sound: engine version %s started\n", MORO_SOUND_VERSION);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -1093,9 +1134,6 @@ static void __exit moro_sound_exit(void)
|
|||
&moro_sound_control_group);
|
||||
|
||||
misc_deregister(&moro_sound_control_device);
|
||||
|
||||
// Print debug info
|
||||
printk("Moro-sound: engine stopped\n");
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -11,7 +11,6 @@
|
|||
#include <linux/sysfs.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/miscdevice.h>
|
||||
#include <linux/printk.h>
|
||||
#include <sound/soc.h>
|
||||
|
||||
#include <linux/mfd/madera/registers.h>
|
||||
|
@ -35,13 +34,14 @@ int get_earpiece_gain(void);
|
|||
|
||||
// Moro sound general
|
||||
#define MORO_SOUND_DEFAULT 0
|
||||
#define MORO_SOUND_VERSION "2.1.1"
|
||||
#define MORO_SOUND_VERSION "2.2.0"
|
||||
#define DEBUG_DEFAULT 0
|
||||
|
||||
// headphone levels
|
||||
#define HEADPHONE_DEFAULT 128
|
||||
#define HEADPHONE_MIN 60
|
||||
#define HEADPHONE_MAX 190
|
||||
#define HEADPHONE_MONO_DEFAULT 0
|
||||
|
||||
/* Earpiece levels */
|
||||
#define EARPIECE_DEFAULT 12
|
||||
|
@ -65,6 +65,11 @@ int get_earpiece_gain(void);
|
|||
#define EQ_GAIN_OFFSET 12
|
||||
#define EQ_GAIN_MIN -12
|
||||
#define EQ_GAIN_MAX 12
|
||||
#define EQ_B1_GAIN_DEFAULT 0
|
||||
#define EQ_B2_GAIN_DEFAULT 0
|
||||
#define EQ_B3_GAIN_DEFAULT 0
|
||||
#define EQ_B4_GAIN_DEFAULT 0
|
||||
#define EQ_B5_GAIN_DEFAULT 0
|
||||
|
||||
// Mixers
|
||||
#define MADERA_MIXER_SOURCE_MASK 0xff
|
||||
|
@ -72,5 +77,73 @@ int get_earpiece_gain(void);
|
|||
#define MADERA_MIXER_VOLUME_MASK 0xfe
|
||||
#define MADERA_MIXER_VOLUME_SHIFT 1
|
||||
|
||||
// Mic
|
||||
#define MIC_DEFAULT 0
|
||||
#define MIC_DOWN_GAIN_DEFAULT 128
|
||||
#define MIC_UP_GAIN_DEFAULT 128
|
||||
#define MIC_HP_GAIN_DEFAULT 128
|
||||
|
||||
|
||||
// REGS FOR GET AND SET
|
||||
// Headphone
|
||||
#define OUT2L_VOLUME \
|
||||
MADERA_DAC_DIGITAL_VOLUME_2L, \
|
||||
MADERA_OUT2L_VOL_MASK, \
|
||||
MADERA_OUT2L_VOL_SHIFT
|
||||
|
||||
#define OUT2R_VOLUME \
|
||||
MADERA_DAC_DIGITAL_VOLUME_2R, \
|
||||
MADERA_OUT1R_VOL_MASK, \
|
||||
MADERA_OUT1R_VOL_SHIFT
|
||||
|
||||
#define OUT2_MONO \
|
||||
MADERA_OUTPUT_PATH_CONFIG_2L, \
|
||||
MADERA_OUT2_MONO_MASK, \
|
||||
MADERA_OUT2_MONO_SHIFT
|
||||
|
||||
#define OUT2L_MIX \
|
||||
MADERA_OUT2LMIX_INPUT_1_SOURCE, \
|
||||
MADERA_MIXER_SOURCE_MASK, \
|
||||
MADERA_MIXER_SOURCE_SHIFT
|
||||
|
||||
#define OUT2R_MIX \
|
||||
MADERA_OUT2RMIX_INPUT_1_SOURCE, \
|
||||
MADERA_MIXER_SOURCE_MASK, \
|
||||
MADERA_MIXER_SOURCE_SHIFT
|
||||
|
||||
// Eq
|
||||
#define EQ1_ENA \
|
||||
MADERA_EQ1_1, \
|
||||
MADERA_EQ1_ENA_MASK, \
|
||||
MADERA_EQ1_ENA_SHIFT
|
||||
|
||||
#define EQ2_ENA \
|
||||
MADERA_EQ2_1, \
|
||||
MADERA_EQ2_ENA_MASK, \
|
||||
MADERA_EQ2_ENA_SHIFT
|
||||
|
||||
#define EQ1_MIX \
|
||||
MADERA_EQ1MIX_INPUT_1_SOURCE, \
|
||||
MADERA_MIXER_SOURCE_MASK, \
|
||||
MADERA_MIXER_SOURCE_SHIFT
|
||||
|
||||
#define EQ2_MIX \
|
||||
MADERA_EQ2MIX_INPUT_1_SOURCE, \
|
||||
MADERA_MIXER_SOURCE_MASK, \
|
||||
MADERA_MIXER_SOURCE_SHIFT
|
||||
|
||||
// Mic
|
||||
#define MIC1R_VOLUME \
|
||||
MADERA_ADC_DIGITAL_VOLUME_1R, \
|
||||
MADERA_IN1R_DIG_VOL_MASK, \
|
||||
MADERA_IN1R_DIG_VOL_SHIFT
|
||||
|
||||
#define MIC3L_VOLUME \
|
||||
MADERA_ADC_DIGITAL_VOLUME_3L, \
|
||||
MADERA_IN3L_DIG_VOL_MASK, \
|
||||
MADERA_IN3L_DIG_VOL_SHIFT
|
||||
|
||||
#define MIC2L_VOLUME \
|
||||
MADERA_ADC_DIGITAL_VOLUME_2L, \
|
||||
MADERA_IN2L_DIG_VOL_MASK, \
|
||||
MADERA_IN2L_DIG_VOL_SHIFT
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue