All of lore.kernel.org
 help / color / mirror / Atom feed
From: Takashi Iwai <tiwai@suse.de>
To: Daniel Mack <daniel@caiaq.org>
Cc: alsa-devel@alsa-project.org
Subject: Re: [PATCH 3/3] asoc tlv320aic3x: add more routing controls
Date: Fri, 25 Apr 2008 11:22:10 +0200	[thread overview]
Message-ID: <s5hod7yl265.wl%tiwai@suse.de> (raw)
In-Reply-To: <20080425091809.GA18518@buzzloop.caiaq.de>

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@caiaq.de>

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@alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

  reply	other threads:[~2008-04-25  9:22 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-04-25  9:18 [PATCH 3/3] asoc tlv320aic3x: add more routing controls Daniel Mack
2008-04-25  9:22 ` Takashi Iwai [this message]
2008-04-25  9:30   ` Daniel Mack
2008-04-25  9:42     ` Takashi Iwai
2008-04-25 10:34       ` Liam Girdwood
2008-04-25 10:36         ` Liam Girdwood
2008-04-25 10:57         ` Mark Brown
2008-04-25 13:10         ` Takashi Iwai

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=s5hod7yl265.wl%tiwai@suse.de \
    --to=tiwai@suse.de \
    --cc=alsa-devel@alsa-project.org \
    --cc=daniel@caiaq.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.