At Fri, 25 Apr 2008 11:18:09 +0200, Daniel Mack wrote: > > Add more routing controls to AIC3x chips to allow things like routing > the left PGA input to right line out. > > Signed-off-by: Daniel Mack <daniel@xxxxxxxx> It should be implemented rather with stereo mixer switches in general... Takashi > > [2 alsa-tlv320aic33-routing.diff <text/x-diff; us-ascii (7bit)>] > diff --git a/sound/soc/codecs/tlv320aic3x.c b/sound/soc/codecs/tlv320aic3x.c > index bddbae2..c0c1714 100644 > --- a/sound/soc/codecs/tlv320aic3x.c > +++ b/sound/soc/codecs/tlv320aic3x.c > @@ -330,7 +330,8 @@ SOC_DAPM_ENUM("Route", aic3x_enum[RHPCOM_ENUM]); > > /* Left DAC_L1 Mixer */ > static const struct snd_kcontrol_new aic3x_left_dac_mixer_controls[] = { > - SOC_DAPM_SINGLE("Line Switch", DACL1_2_LLOPM_VOL, 7, 1, 0), > + SOC_DAPM_SINGLE("LineL Switch", DACL1_2_LLOPM_VOL, 7, 1, 0), > + SOC_DAPM_SINGLE("LineR Switch", DACL1_2_RLOPM_VOL, 7, 1, 0), > SOC_DAPM_SINGLE("Mono Switch", DACL1_2_MONOLOPM_VOL, 7, 1, 0), > SOC_DAPM_SINGLE("HP Switch", DACL1_2_HPLOUT_VOL, 7, 1, 0), > SOC_DAPM_SINGLE("HPCOM Switch", DACL1_2_HPLCOM_VOL, 7, 1, 0), > @@ -338,7 +339,8 @@ static const struct snd_kcontrol_new aic3x_left_dac_mixer_controls[] = { > > /* Right DAC_R1 Mixer */ > static const struct snd_kcontrol_new aic3x_right_dac_mixer_controls[] = { > - SOC_DAPM_SINGLE("Line Switch", DACR1_2_RLOPM_VOL, 7, 1, 0), > + SOC_DAPM_SINGLE("LineL Switch", DACR1_2_LLOPM_VOL, 7, 1, 0), > + SOC_DAPM_SINGLE("LineR Switch", DACR1_2_RLOPM_VOL, 7, 1, 0), > SOC_DAPM_SINGLE("Mono Switch", DACR1_2_MONOLOPM_VOL, 7, 1, 0), > SOC_DAPM_SINGLE("HP Switch", DACR1_2_HPROUT_VOL, 7, 1, 0), > SOC_DAPM_SINGLE("HPCOM Switch", DACR1_2_HPRCOM_VOL, 7, 1, 0), > @@ -347,14 +349,18 @@ static const struct snd_kcontrol_new aic3x_right_dac_mixer_controls[] = { > /* Left PGA Mixer */ > static const struct snd_kcontrol_new aic3x_left_pga_mixer_controls[] = { > SOC_DAPM_SINGLE_AIC3X("Line1L Switch", LINE1L_2_LADC_CTRL, 3, 1, 1), > + SOC_DAPM_SINGLE_AIC3X("Line1R Switch", LINE1R_2_LADC_CTRL, 3, 1, 1), > SOC_DAPM_SINGLE_AIC3X("Line2L Switch", LINE2L_2_LADC_CTRL, 3, 1, 1), > SOC_DAPM_SINGLE_AIC3X("Mic3L Switch", MIC3LR_2_LADC_CTRL, 4, 1, 1), > + SOC_DAPM_SINGLE_AIC3X("Mic3R Switch", MIC3LR_2_LADC_CTRL, 0, 1, 1), > }; > > /* Right PGA Mixer */ > static const struct snd_kcontrol_new aic3x_right_pga_mixer_controls[] = { > SOC_DAPM_SINGLE_AIC3X("Line1R Switch", LINE1R_2_RADC_CTRL, 3, 1, 1), > + SOC_DAPM_SINGLE_AIC3X("Line1L Switch", LINE1L_2_RADC_CTRL, 3, 1, 1), > SOC_DAPM_SINGLE_AIC3X("Line2R Switch", LINE2R_2_RADC_CTRL, 3, 1, 1), > + SOC_DAPM_SINGLE_AIC3X("Mic3L Switch", MIC3LR_2_RADC_CTRL, 4, 1, 1), > SOC_DAPM_SINGLE_AIC3X("Mic3R Switch", MIC3LR_2_RADC_CTRL, 0, 1, 1), > }; > > @@ -376,7 +382,8 @@ SOC_DAPM_ENUM("Route", aic3x_enum[LINE2R_ENUM]); > > /* Left PGA Bypass Mixer */ > static const struct snd_kcontrol_new aic3x_left_pga_bp_mixer_controls[] = { > - SOC_DAPM_SINGLE("Line Switch", PGAL_2_LLOPM_VOL, 7, 1, 0), > + SOC_DAPM_SINGLE("LineL Switch", PGAL_2_LLOPM_VOL, 7, 1, 0), > + SOC_DAPM_SINGLE("LineR Switch", PGAL_2_RLOPM_VOL, 7, 1, 0), > SOC_DAPM_SINGLE("Mono Switch", PGAL_2_MONOLOPM_VOL, 7, 1, 0), > SOC_DAPM_SINGLE("HP Switch", PGAL_2_HPLOUT_VOL, 7, 1, 0), > SOC_DAPM_SINGLE("HPCOM Switch", PGAL_2_HPLCOM_VOL, 7, 1, 0), > @@ -384,7 +391,8 @@ static const struct snd_kcontrol_new aic3x_left_pga_bp_mixer_controls[] = { > > /* Right PGA Bypass Mixer */ > static const struct snd_kcontrol_new aic3x_right_pga_bp_mixer_controls[] = { > - SOC_DAPM_SINGLE("Line Switch", PGAR_2_RLOPM_VOL, 7, 1, 0), > + SOC_DAPM_SINGLE("LineL Switch", PGAR_2_LLOPM_VOL, 7, 1, 0), > + SOC_DAPM_SINGLE("LineR Switch", PGAR_2_RLOPM_VOL, 7, 1, 0), > SOC_DAPM_SINGLE("Mono Switch", PGAR_2_MONOLOPM_VOL, 7, 1, 0), > SOC_DAPM_SINGLE("HP Switch", PGAR_2_HPROUT_VOL, 7, 1, 0), > SOC_DAPM_SINGLE("HPCOM Switch", PGAR_2_HPRCOM_VOL, 7, 1, 0), > @@ -392,7 +400,8 @@ static const struct snd_kcontrol_new aic3x_right_pga_bp_mixer_controls[] = { > > /* Left Line2 Bypass Mixer */ > static const struct snd_kcontrol_new aic3x_left_line2_bp_mixer_controls[] = { > - SOC_DAPM_SINGLE("Line Switch", LINE2L_2_LLOPM_VOL, 7, 1, 0), > + SOC_DAPM_SINGLE("LineL Switch", LINE2L_2_LLOPM_VOL, 7, 1, 0), > + SOC_DAPM_SINGLE("LineR Switch", LINE2L_2_RLOPM_VOL, 7, 1, 0), > SOC_DAPM_SINGLE("Mono Switch", LINE2L_2_MONOLOPM_VOL, 7, 1, 0), > SOC_DAPM_SINGLE("HP Switch", LINE2L_2_HPLOUT_VOL, 7, 1, 0), > SOC_DAPM_SINGLE("HPCOM Switch", LINE2L_2_HPLCOM_VOL, 7, 1, 0), > @@ -400,7 +409,8 @@ static const struct snd_kcontrol_new aic3x_left_line2_bp_mixer_controls[] = { > > /* Right Line2 Bypass Mixer */ > static const struct snd_kcontrol_new aic3x_right_line2_bp_mixer_controls[] = { > - SOC_DAPM_SINGLE("Line Switch", LINE2R_2_RLOPM_VOL, 7, 1, 0), > + SOC_DAPM_SINGLE("LineL Switch", LINE2R_2_LLOPM_VOL, 7, 1, 0), > + SOC_DAPM_SINGLE("LineR Switch", LINE2R_2_RLOPM_VOL, 7, 1, 0), > SOC_DAPM_SINGLE("Mono Switch", LINE2R_2_MONOLOPM_VOL, 7, 1, 0), > SOC_DAPM_SINGLE("HP Switch", LINE2R_2_HPROUT_VOL, 7, 1, 0), > SOC_DAPM_SINGLE("HPCOM Switch", LINE2R_2_HPRCOM_VOL, 7, 1, 0), > @@ -505,7 +515,8 @@ static const char *intercon[][3] = { > {"Left DAC Mux", "DAC_L2", "Left DAC"}, > {"Left DAC Mux", "DAC_L3", "Left DAC"}, > > - {"Left DAC_L1 Mixer", "Line Switch", "Left DAC Mux"}, > + {"Left DAC_L1 Mixer", "LineL Switch", "Left DAC Mux"}, > + {"Left DAC_L1 Mixer", "LineR Switch", "Left DAC Mux"}, > {"Left DAC_L1 Mixer", "Mono Switch", "Left DAC Mux"}, > {"Left DAC_L1 Mixer", "HP Switch", "Left DAC Mux"}, > {"Left DAC_L1 Mixer", "HPCOM Switch", "Left DAC Mux"}, > @@ -531,7 +542,8 @@ static const char *intercon[][3] = { > {"Right DAC Mux", "DAC_R2", "Right DAC"}, > {"Right DAC Mux", "DAC_R3", "Right DAC"}, > > - {"Right DAC_R1 Mixer", "Line Switch", "Right DAC Mux"}, > + {"Right DAC_R1 Mixer", "LineL Switch", "Right DAC Mux"}, > + {"Right DAC_R1 Mixer", "LineR Switch", "Right DAC Mux"}, > {"Right DAC_R1 Mixer", "Mono Switch", "Right DAC Mux"}, > {"Right DAC_R1 Mixer", "HP Switch", "Right DAC Mux"}, > {"Right DAC_R1 Mixer", "HPCOM Switch", "Right DAC Mux"}, > @@ -566,8 +578,10 @@ static const char *intercon[][3] = { > {"Left Line2L Mux", "differential", "LINE2L"}, > > {"Left PGA Mixer", "Line1L Switch", "Left Line1L Mux"}, > + {"Left PGA Mixer", "Line1R Switch", "Left Line1R Mux"}, > {"Left PGA Mixer", "Line2L Switch", "Left Line2L Mux"}, > {"Left PGA Mixer", "Mic3L Switch", "MIC3L"}, > + {"Left PGA Mixer", "Mic3R Switch", "MIC3R"}, > > {"Left ADC", NULL, "Left PGA Mixer"}, > > @@ -579,13 +593,16 @@ static const char *intercon[][3] = { > {"Right Line2R Mux", "differential", "LINE2R"}, > > {"Right PGA Mixer", "Line1R Switch", "Right Line1R Mux"}, > + {"Right PGA Mixer", "Line1L Switch", "Right Line1L Mux"}, > {"Right PGA Mixer", "Line2R Switch", "Right Line2R Mux"}, > {"Right PGA Mixer", "Mic3R Switch", "MIC3R"}, > + {"Right PGA Mixer", "Mic3L Switch", "MIC3L"}, > > {"Right ADC", NULL, "Right PGA Mixer"}, > > /* Left PGA Bypass */ > - {"Left PGA Bypass Mixer", "Line Switch", "Left PGA Mixer"}, > + {"Left PGA Bypass Mixer", "LineL Switch", "Left PGA Mixer"}, > + {"Left PGA Bypass Mixer", "LineR Switch", "Left PGA Mixer"}, > {"Left PGA Bypass Mixer", "Mono Switch", "Left PGA Mixer"}, > {"Left PGA Bypass Mixer", "HP Switch", "Left PGA Mixer"}, > {"Left PGA Bypass Mixer", "HPCOM Switch", "Left PGA Mixer"}, > @@ -599,7 +616,8 @@ static const char *intercon[][3] = { > {"Left HP Out", NULL, "Left PGA Bypass Mixer"}, > > /* Right PGA Bypass */ > - {"Right PGA Bypass Mixer", "Line Switch", "Right PGA Mixer"}, > + {"Right PGA Bypass Mixer", "LineL Switch", "Right PGA Mixer"}, > + {"Right PGA Bypass Mixer", "LineR Switch", "Right PGA Mixer"}, > {"Right PGA Bypass Mixer", "Mono Switch", "Right PGA Mixer"}, > {"Right PGA Bypass Mixer", "HP Switch", "Right PGA Mixer"}, > {"Right PGA Bypass Mixer", "HPCOM Switch", "Right PGA Mixer"}, > @@ -615,7 +633,8 @@ static const char *intercon[][3] = { > {"Right HP Out", NULL, "Right PGA Bypass Mixer"}, > > /* Left Line2 Bypass */ > - {"Left Line2 Bypass Mixer", "Line Switch", "Left Line2L Mux"}, > + {"Left Line2 Bypass Mixer", "LineL Switch", "Left Line2L Mux"}, > + {"Left Line2 Bypass Mixer", "LineR Switch", "Left Line2L Mux"}, > {"Left Line2 Bypass Mixer", "Mono Switch", "Left Line2L Mux"}, > {"Left Line2 Bypass Mixer", "HP Switch", "Left Line2L Mux"}, > {"Left Line2 Bypass Mixer", "HPCOM Switch", "Left Line2L Mux"}, > @@ -629,7 +648,8 @@ static const char *intercon[][3] = { > {"Left HP Out", NULL, "Left Line2 Bypass Mixer"}, > > /* Right Line2 Bypass */ > - {"Right Line2 Bypass Mixer", "Line Switch", "Right Line2R Mux"}, > + {"Right Line2 Bypass Mixer", "LineL Switch", "Right Line2R Mux"}, > + {"Right Line2 Bypass Mixer", "LineR Switch", "Right Line2R Mux"}, > {"Right Line2 Bypass Mixer", "Mono Switch", "Right Line2R Mux"}, > {"Right Line2 Bypass Mixer", "HP Switch", "Right Line2R Mux"}, > {"Right Line2 Bypass Mixer", "HPCOM Switch", "Right Line2R Mux"}, > diff --git a/sound/soc/codecs/tlv320aic3x.h b/sound/soc/codecs/tlv320aic3x.h > index c1dd1ac..136af06 100644 > --- a/sound/soc/codecs/tlv320aic3x.h > +++ b/sound/soc/codecs/tlv320aic3x.h > @@ -46,7 +46,9 @@ > #define MIC3LR_2_RADC_CTRL 18 > /* Line1 Input control registers */ > #define LINE1L_2_LADC_CTRL 19 > +#define LINE1R_2_LADC_CTRL 21 > #define LINE1R_2_RADC_CTRL 22 > +#define LINE1L_2_RADC_CTRL 24 > /* Line2 Input control registers */ > #define LINE2L_2_LADC_CTRL 20 > #define LINE2R_2_RADC_CTRL 23 > @@ -101,11 +103,17 @@ > #define MONOLOPM_CTRL 79 > /* Line Output Plus/Minus control registers */ > #define LINE2L_2_LLOPM_VOL 80 > -#define LINE2R_2_RLOPM_VOL 90 > +#define LINE2L_2_RLOPM_VOL 87 > +#define LINE2R_2_LLOPM_VOL 90 > +#define LINE2R_2_RLOPM_VOL 83 > #define PGAL_2_LLOPM_VOL 81 > +#define PGAL_2_RLOPM_VOL 88 > +#define PGAR_2_LLOPM_VOL 84 > #define PGAR_2_RLOPM_VOL 91 > #define DACL1_2_LLOPM_VOL 82 > +#define DACL1_2_RLOPM_VOL 89 > #define DACR1_2_RLOPM_VOL 92 > +#define DACR1_2_LLOPM_VOL 85 > #define LLOPM_CTRL 86 > #define RLOPM_CTRL 93 > /* GPIO/IRQ registers */ > [3 <text/plain; us-ascii (7bit)>] > _______________________________________________ > Alsa-devel mailing list > Alsa-devel@xxxxxxxxxxxxxxxx > http://mailman.alsa-project.org/mailman/listinfo/alsa-devel _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel