Skip to content

Instantly share code, notes, and snippets.

@AndreiLux
Created June 18, 2013 17:13
Show Gist options
  • Save AndreiLux/5807343 to your computer and use it in GitHub Desktop.
Save AndreiLux/5807343 to your computer and use it in GitHub Desktop.
Equalizer controls for WM5102 sound control
diff --git a/sound/soc/codecs/arizona-control.c b/sound/soc/codecs/arizona-control.c
index 05614dc..dbd56a4 100644
--- a/sound/soc/codecs/arizona-control.c
+++ b/sound/soc/codecs/arizona-control.c
@@ -84,6 +84,62 @@ struct arizona_control sound_controls[] = {
_control("speaker_volume" , ARIZONA_DAC_DIGITAL_VOLUME_4L, ARIZONA_OUT4L_VOL_MASK,
ARIZONA_OUT4L_VOL_SHIFT, ARIZONA_OUT4L_VOL_WIDTH, delta_override ),
+
+ /* Master switches */
+
+ _control("eq1_switch", ARIZONA_EQ1_1, ARIZONA_EQ1_ENA_MASK, ARIZONA_EQ1_ENA_SHIFT, ARIZONA_EQ1_ENA_WIDTH, generic_override ),
+ _control("eq2_switch", ARIZONA_EQ2_1, ARIZONA_EQ2_ENA_MASK, ARIZONA_EQ2_ENA_SHIFT, ARIZONA_EQ2_ENA_WIDTH, generic_override ),
+ _control("eq3_switch", ARIZONA_EQ3_1, ARIZONA_EQ3_ENA_MASK, ARIZONA_EQ3_ENA_SHIFT, ARIZONA_EQ3_ENA_WIDTH, generic_override ),
+ _control("eq4_switch", ARIZONA_EQ4_1, ARIZONA_EQ4_ENA_MASK, ARIZONA_EQ4_ENA_SHIFT, ARIZONA_EQ4_ENA_WIDTH, generic_override ),
+
+ /* EQ Configurables */
+
+ _control("eq1_band1_gain" , ARIZONA_EQ1_1, ARIZONA_EQ1_B1_GAIN_MASK, ARIZONA_EQ1_B1_GAIN_SHIFT, ARIZONA_EQ1_B1_GAIN_WIDTH, generic_override ),
+ _control("eq1_band2_gain" , ARIZONA_EQ1_1, ARIZONA_EQ1_B2_GAIN_MASK, ARIZONA_EQ1_B2_GAIN_SHIFT, ARIZONA_EQ1_B2_GAIN_WIDTH, generic_override ),
+ _control("eq1_band3_gain" , ARIZONA_EQ1_1, ARIZONA_EQ1_B3_GAIN_MASK, ARIZONA_EQ1_B3_GAIN_SHIFT, ARIZONA_EQ1_B3_GAIN_WIDTH, generic_override ),
+ _control("eq1_band4_gain" , ARIZONA_EQ1_2, ARIZONA_EQ1_B4_GAIN_MASK, ARIZONA_EQ1_B4_GAIN_SHIFT, ARIZONA_EQ1_B4_GAIN_WIDTH, generic_override ),
+ _control("eq1_band5_gain" , ARIZONA_EQ1_2, ARIZONA_EQ1_B5_GAIN_MASK, ARIZONA_EQ1_B5_GAIN_SHIFT, ARIZONA_EQ1_B5_GAIN_WIDTH, generic_override ),
+
+ _control("eq1_band1_freq_A" , ARIZONA_EQ1_3, ARIZONA_EQ1_B1_A_MASK, ARIZONA_EQ1_B1_A_SHIFT, ARIZONA_EQ1_B1_A_WIDTH, generic_override ),
+ _control("eq1_band1_freq_B" , ARIZONA_EQ1_4, ARIZONA_EQ1_B1_B_MASK, ARIZONA_EQ1_B1_B_SHIFT, ARIZONA_EQ1_B1_B_WIDTH, generic_override ),
+ _control("eq1_band1_freq_PG" , ARIZONA_EQ1_5, ARIZONA_EQ1_B1_PG_MASK, ARIZONA_EQ1_B1_PG_SHIFT, ARIZONA_EQ1_B1_PG_WIDTH, generic_override ),
+
+ _control("eq1_band2_freq_A" , ARIZONA_EQ1_6, ARIZONA_EQ1_B2_A_MASK, ARIZONA_EQ1_B2_A_SHIFT, ARIZONA_EQ1_B2_A_WIDTH, generic_override ),
+ _control("eq1_band2_freq_B" , ARIZONA_EQ1_7, ARIZONA_EQ1_B2_B_MASK, ARIZONA_EQ1_B2_B_SHIFT, ARIZONA_EQ1_B2_B_WIDTH, generic_override ),
+ _control("eq1_band2_freq_C" , ARIZONA_EQ1_8, ARIZONA_EQ1_B2_C_MASK, ARIZONA_EQ1_B2_C_SHIFT, ARIZONA_EQ1_B2_C_WIDTH, generic_override ),
+ _control("eq1_band2_freq_PG" , ARIZONA_EQ1_9, ARIZONA_EQ1_B2_PG_MASK, ARIZONA_EQ1_B2_PG_SHIFT, ARIZONA_EQ1_B2_PG_WIDTH, generic_override ),
+
+ _control("eq1_band3_freq_A" , ARIZONA_EQ1_10, ARIZONA_EQ1_B3_A_MASK, ARIZONA_EQ1_B3_A_SHIFT, ARIZONA_EQ1_B3_A_WIDTH, generic_override ),
+ _control("eq1_band3_freq_B" , ARIZONA_EQ1_11, ARIZONA_EQ1_B3_B_MASK, ARIZONA_EQ1_B3_B_SHIFT, ARIZONA_EQ1_B3_B_WIDTH, generic_override ),
+ _control("eq1_band3_freq_C" , ARIZONA_EQ1_12, ARIZONA_EQ1_B3_C_MASK, ARIZONA_EQ1_B3_C_SHIFT, ARIZONA_EQ1_B3_C_WIDTH, generic_override ),
+ _control("eq1_band3_freq_PG" , ARIZONA_EQ1_13, ARIZONA_EQ1_B3_PG_MASK, ARIZONA_EQ1_B3_PG_SHIFT, ARIZONA_EQ1_B3_PG_WIDTH, generic_override ),
+
+ _control("eq1_band4_freq_A" , ARIZONA_EQ1_14, ARIZONA_EQ1_B4_A_MASK, ARIZONA_EQ1_B4_A_SHIFT, ARIZONA_EQ1_B4_A_WIDTH, generic_override ),
+ _control("eq1_band4_freq_B" , ARIZONA_EQ1_15, ARIZONA_EQ1_B4_B_MASK, ARIZONA_EQ1_B4_B_SHIFT, ARIZONA_EQ1_B4_B_WIDTH, generic_override ),
+ _control("eq1_band4_freq_C" , ARIZONA_EQ1_16, ARIZONA_EQ1_B4_C_MASK, ARIZONA_EQ1_B4_C_SHIFT, ARIZONA_EQ1_B4_C_WIDTH, generic_override ),
+ _control("eq1_band4_freq_PG" , ARIZONA_EQ1_17, ARIZONA_EQ1_B4_PG_MASK, ARIZONA_EQ1_B4_PG_SHIFT, ARIZONA_EQ1_B4_PG_WIDTH, generic_override ),
+
+ _control("eq1_band5_freq_A" , ARIZONA_EQ1_18, ARIZONA_EQ1_B5_A_MASK, ARIZONA_EQ1_B5_A_SHIFT, ARIZONA_EQ1_B5_A_WIDTH, generic_override ),
+ _control("eq1_band5_freq_B" , ARIZONA_EQ1_19, ARIZONA_EQ1_B5_B_MASK, ARIZONA_EQ1_B5_B_SHIFT, ARIZONA_EQ1_B5_B_WIDTH, generic_override ),
+ _control("eq1_band5_freq_PG" , ARIZONA_EQ1_20, ARIZONA_EQ1_B5_PG_MASK, ARIZONA_EQ1_B5_PG_SHIFT, ARIZONA_EQ1_B5_PG_WIDTH, generic_override ),
+
+ _control("eq2_band1_gain" , ARIZONA_EQ2_1, ARIZONA_EQ2_B1_GAIN_MASK, ARIZONA_EQ2_B1_GAIN_SHIFT, ARIZONA_EQ2_B1_GAIN_WIDTH, generic_override ),
+ _control("eq2_band2_gain" , ARIZONA_EQ2_1, ARIZONA_EQ2_B2_GAIN_MASK, ARIZONA_EQ2_B2_GAIN_SHIFT, ARIZONA_EQ2_B2_GAIN_WIDTH, generic_override ),
+ _control("eq2_band3_gain" , ARIZONA_EQ2_1, ARIZONA_EQ2_B3_GAIN_MASK, ARIZONA_EQ2_B3_GAIN_SHIFT, ARIZONA_EQ2_B3_GAIN_WIDTH, generic_override ),
+ _control("eq2_band4_gain" , ARIZONA_EQ2_2, ARIZONA_EQ2_B4_GAIN_MASK, ARIZONA_EQ2_B4_GAIN_SHIFT, ARIZONA_EQ2_B4_GAIN_WIDTH, generic_override ),
+ _control("eq2_band5_gain" , ARIZONA_EQ2_2, ARIZONA_EQ2_B5_GAIN_MASK, ARIZONA_EQ2_B5_GAIN_SHIFT, ARIZONA_EQ2_B5_GAIN_WIDTH, generic_override ),
+
+ _control("eq3_band1_gain" , ARIZONA_EQ3_1, ARIZONA_EQ3_B1_GAIN_MASK, ARIZONA_EQ3_B1_GAIN_SHIFT, ARIZONA_EQ3_B1_GAIN_WIDTH, generic_override ),
+ _control("eq3_band2_gain" , ARIZONA_EQ3_1, ARIZONA_EQ3_B2_GAIN_MASK, ARIZONA_EQ3_B2_GAIN_SHIFT, ARIZONA_EQ3_B2_GAIN_WIDTH, generic_override ),
+ _control("eq3_band3_gain" , ARIZONA_EQ3_1, ARIZONA_EQ3_B3_GAIN_MASK, ARIZONA_EQ3_B3_GAIN_SHIFT, ARIZONA_EQ3_B3_GAIN_WIDTH, generic_override ),
+ _control("eq3_band4_gain" , ARIZONA_EQ3_2, ARIZONA_EQ3_B4_GAIN_MASK, ARIZONA_EQ3_B4_GAIN_SHIFT, ARIZONA_EQ3_B4_GAIN_WIDTH, generic_override ),
+ _control("eq3_band5_gain" , ARIZONA_EQ3_2, ARIZONA_EQ3_B5_GAIN_MASK, ARIZONA_EQ3_B5_GAIN_SHIFT, ARIZONA_EQ3_B5_GAIN_WIDTH, generic_override ),
+
+ _control("eq4_band1_gain" , ARIZONA_EQ4_1, ARIZONA_EQ4_B1_GAIN_MASK, ARIZONA_EQ4_B1_GAIN_SHIFT, ARIZONA_EQ4_B1_GAIN_WIDTH, generic_override ),
+ _control("eq4_band2_gain" , ARIZONA_EQ4_1, ARIZONA_EQ4_B2_GAIN_MASK, ARIZONA_EQ4_B2_GAIN_SHIFT, ARIZONA_EQ4_B2_GAIN_WIDTH, generic_override ),
+ _control("eq4_band3_gain" , ARIZONA_EQ4_1, ARIZONA_EQ4_B3_GAIN_MASK, ARIZONA_EQ4_B3_GAIN_SHIFT, ARIZONA_EQ4_B3_GAIN_WIDTH, generic_override ),
+ _control("eq4_band4_gain" , ARIZONA_EQ4_2, ARIZONA_EQ4_B4_GAIN_MASK, ARIZONA_EQ4_B4_GAIN_SHIFT, ARIZONA_EQ4_B4_GAIN_WIDTH, generic_override ),
+ _control("eq4_band5_gain" , ARIZONA_EQ4_2, ARIZONA_EQ4_B5_GAIN_MASK, ARIZONA_EQ4_B5_GAIN_SHIFT, ARIZONA_EQ4_B5_GAIN_WIDTH, generic_override ),
};
void arizona_control_regmap_hook(struct regmap *pmap, unsigned int reg,
@@ -135,6 +191,8 @@ static ssize_t show_arizona_property(struct device *dev,
if (ctl->value == -1)
ctl->ctlval = ctl->value = (codec->read(codec, ctl->reg) & ctl->mask) >> ctl->shift;
+ return sprintf(buf, "%d %d %u", ctl->value, (codec->read(codec, ctl->reg) & ctl->mask) >> ctl->shift, ctl->ctlval);
+
return sprintf(buf, "%d", ctl->value);
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment