Alsa-Devel Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] ASoC: sta350: fix DT bindings document
@ 2014-05-05  9:49 Daniel Mack
  2014-05-05  9:49 ` [PATCH 2/2] ASoC: sta350: add support for bits in miscellaneous registers Daniel Mack
  2014-05-05 19:52 ` [PATCH 1/2] ASoC: sta350: fix DT bindings document Mark Brown
  0 siblings, 2 replies; 4+ messages in thread
From: Daniel Mack @ 2014-05-05  9:49 UTC (permalink / raw)
  To: broonie, alsa-devel; +Cc: Daniel Mack

Fix a misleading property description, and denote the fact that
st,output-conf and st,ch*-output-mapping have to be passed as /bits/ 8.

Signed-off-by: Daniel Mack <zonque@gmail.com>
---
 Documentation/devicetree/bindings/sound/st,sta350.txt | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/Documentation/devicetree/bindings/sound/st,sta350.txt b/Documentation/devicetree/bindings/sound/st,sta350.txt
index 9501888..ecd7a62 100644
--- a/Documentation/devicetree/bindings/sound/st,sta350.txt
+++ b/Documentation/devicetree/bindings/sound/st,sta350.txt
@@ -25,6 +25,7 @@ Optional properties:
 	2: 2 Channel (Full-Bridge) Power, 1 Channel FFX
 	3: 1 Channel Mono-Parallel
 	If parameter is missing, mode 0 will be enabled.
+	This property has to be specified as '/bits/ 8' value.
 
   -  st,ch1-output-mapping: Channel 1 output mapping
   -  st,ch2-output-mapping: Channel 2 output mapping
@@ -33,6 +34,7 @@ Optional properties:
 	1: Channel 2
 	2: Channel 3
 	If parameter is missing, channel 1 is choosen.
+	This properties have to be specified as '/bits/ 8' values.
 
   -  st,thermal-warning-recover:
 	If present, thermal warning recovery is enabled.
@@ -82,7 +84,7 @@ Optional properties:
 	If not present, preset DC coefficient is used.
 
   -  st,invalid-input-detect-mute:
-	If not present, automatic invalid input detect mute is enabled.
+	If present, automatic invalid input detect mute is enabled.
 
 
 
@@ -93,12 +95,12 @@ codec: sta350@38 {
 	reg = <0x1c>;
 	reset-gpios = <&gpio1 19 0>;
 	power-down-gpios = <&gpio1 16 0>;
-	st,output-conf = <0x3>;			// set output to 2-channel
+	st,output-conf = /bits/ 8  <0x3>;	// set output to 2-channel
 						// (full-bridge) power,
 						// 2-channel data-out
-	st,ch1-output-mapping = <0>;		// set channel 1 output ch 1
-	st,ch2-output-mapping = <0>;		// set channel 2 output ch 1
-	st,ch3-output-mapping = <0>;		// set channel 3 output ch 1
+	st,ch1-output-mapping = /bits/ 8 <0>;	// set channel 1 output ch 1
+	st,ch2-output-mapping = /bits/ 8 <0>;	// set channel 2 output ch 1
+	st,ch3-output-mapping = /bits/ 8 <0>;	// set channel 3 output ch 1
 	st,max-power-correction;		// enables power bridge
 						// correction for THD reduction
 						// near maximum power output
-- 
1.9.0

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 2/2] ASoC: sta350: add support for bits in miscellaneous registers
  2014-05-05  9:49 [PATCH 1/2] ASoC: sta350: fix DT bindings document Daniel Mack
@ 2014-05-05  9:49 ` Daniel Mack
  2014-05-05 19:55   ` Mark Brown
  2014-05-05 19:52 ` [PATCH 1/2] ASoC: sta350: fix DT bindings document Mark Brown
  1 sibling, 1 reply; 4+ messages in thread
From: Daniel Mack @ 2014-05-05  9:49 UTC (permalink / raw)
  To: broonie, alsa-devel; +Cc: Daniel Mack

Add support for RPDNEN, NSHHPEN, BRIDGOFF, CPWMEN and PNDLSL, and add DT
bindings to access them.

Signed-off-by: Daniel Mack <zonque@gmail.com>
---
 .../devicetree/bindings/sound/st,sta350.txt        | 24 +++++++++++-
 include/sound/sta350.h                             |  5 +++
 sound/soc/codecs/sta350.c                          | 45 ++++++++++++++++++++++
 sound/soc/codecs/sta350.h                          | 10 +++++
 4 files changed, 83 insertions(+), 1 deletion(-)

diff --git a/Documentation/devicetree/bindings/sound/st,sta350.txt b/Documentation/devicetree/bindings/sound/st,sta350.txt
index ecd7a62..b7e71bf 100644
--- a/Documentation/devicetree/bindings/sound/st,sta350.txt
+++ b/Documentation/devicetree/bindings/sound/st,sta350.txt
@@ -86,7 +86,29 @@ Optional properties:
   -  st,invalid-input-detect-mute:
 	If present, automatic invalid input detect mute is enabled.
 
-
+  -  st,activate-mute-output:
+	If present, a mute output will be activated in ase the volume will
+	reach a value lower than -76 dBFS.
+
+  -  st,bridge-immediate-off:
+	If present, the bridge will be switched off immediately after the
+	power-down-gpio goes low. Otherwise, the bridge will wait for 13
+	million clock cycles to pass before shutting down.
+
+  -  st,noise-shape-dc-cut:
+	If present, the noise-shaping technique on the DC cutoff filter are
+	enabled.
+
+  -  st,powerdown-master-volume:
+	If present, the power-down pin and I2C power-down functions will
+	act on the master volume. Otherwise, the functions will act on the
+	mute commands.
+
+  -  st,powerdown-delay-divider:
+	If present, the bridge power-down time will be divided by the provided
+	value. If not specified, a divider of 1 will be used. Allowed values
+	are 1, 2, 4, 8, 16, 32, 64 and 128.
+	This property has to be specified as '/bits/ 8' value.
 
 Example:
 
diff --git a/include/sound/sta350.h b/include/sound/sta350.h
index 3a329810..42edceb 100644
--- a/include/sound/sta350.h
+++ b/include/sound/sta350.h
@@ -37,6 +37,7 @@ struct sta350_platform_data {
 	u8 ch3_output_mapping;
 	u8 ffx_power_output_mode;
 	u8 drop_compensation_ns;
+	u8 powerdown_delay_divider;
 	unsigned int thermal_warning_recovery:1;
 	unsigned int thermal_warning_adjustment:1;
 	unsigned int fault_detect_recovery:1;
@@ -47,6 +48,10 @@ struct sta350_platform_data {
 	unsigned int odd_pwm_speed_mode:1;
 	unsigned int distortion_compensation:1;
 	unsigned int invalid_input_detect_mute:1;
+	unsigned int activate_mute_output:1;
+	unsigned int bridge_immediate_off:1;
+	unsigned int noise_shape_dc_cut:1;
+	unsigned int powerdown_master_vol:1;
 };
 
 #endif /* __LINUX_SND__STA350_H */
diff --git a/sound/soc/codecs/sta350.c b/sound/soc/codecs/sta350.c
index 552e92a..2353a54 100644
--- a/sound/soc/codecs/sta350.c
+++ b/sound/soc/codecs/sta350.c
@@ -1020,6 +1020,29 @@ static int sta350_probe(struct snd_soc_codec *codec)
 			   pdata->ch3_output_mapping
 				<< STA350_CxCFG_OM_SHIFT);
 
+	/* miscellaneous registers */
+	regmap_update_bits(sta350->regmap, STA350_MISC1,
+			   STA350_MISC1_CPWMEN,
+			   pdata->activate_mute_output ?
+				STA350_MISC1_CPWMEN : 0);
+	regmap_update_bits(sta350->regmap, STA350_MISC1,
+			   STA350_MISC1_BRIDGOFF,
+			   pdata->bridge_immediate_off ?
+				STA350_MISC1_BRIDGOFF : 0);
+	regmap_update_bits(sta350->regmap, STA350_MISC1,
+			   STA350_MISC1_NSHHPEN,
+			   pdata->noise_shape_dc_cut ?
+				STA350_MISC1_NSHHPEN : 0);
+	regmap_update_bits(sta350->regmap, STA350_MISC1,
+			   STA350_MISC1_RPDNEN,
+			   pdata->powerdown_master_vol ?
+				STA350_MISC1_RPDNEN: 0);
+
+	regmap_update_bits(sta350->regmap, STA350_MISC2,
+			   STA350_MISC2_PNDLSL_MASK,
+			   pdata->powerdown_delay_divider
+				<< STA350_MISC2_PNDLSL_SHIFT);
+
 	/* initialize coefficient shadow RAM with reset values */
 	for (i = 4; i <= 49; i += 5)
 		sta350->coef_shadow[i] = 0x400000;
@@ -1094,6 +1117,7 @@ static int sta350_probe_dt(struct device *dev, struct sta350_priv *sta350)
 	struct sta350_platform_data *pdata;
 	const char *ffx_power_mode;
 	u16 tmp;
+	u8 tmp8;
 
 	pdata = devm_kzalloc(dev, sizeof(*pdata), GFP_KERNEL);
 	if (!pdata)
@@ -1158,6 +1182,27 @@ static int sta350_probe_dt(struct device *dev, struct sta350_priv *sta350)
 	if (of_get_property(np, "st,invalid-input-detect-mute", NULL))
 		pdata->invalid_input_detect_mute = 1;
 
+	/* MISC */
+	if (of_get_property(np, "st,activate-mute-output", NULL))
+		pdata->activate_mute_output = 1;
+
+	if (of_get_property(np, "st,bridge-immediate-off", NULL))
+		pdata->bridge_immediate_off = 1;
+
+	if (of_get_property(np, "st,noise-shape-dc-cut", NULL))
+		pdata->noise_shape_dc_cut = 1;
+
+	if (of_get_property(np, "st,powerdown-master-volume", NULL))
+		pdata->powerdown_master_vol = 1;
+
+	if (!of_property_read_u8(np, "st,powerdown-delay-divider", &tmp8)) {
+		if (is_power_of_2(tmp8) && tmp8 >= 1 && tmp8 <= 128)
+			pdata->powerdown_delay_divider = ilog2(tmp8);
+		else
+			dev_warn(dev, "Unsupported powerdown delay divider %d\n",
+				 tmp8);
+	}
+
 	sta350->pdata = pdata;
 
 	return 0;
diff --git a/sound/soc/codecs/sta350.h b/sound/soc/codecs/sta350.h
index c3248f0..fb72852 100644
--- a/sound/soc/codecs/sta350.h
+++ b/sound/soc/codecs/sta350.h
@@ -225,4 +225,14 @@
 #define STA350_C3_MIX1		60
 #define STA350_C3_MIX2		61
 
+/* miscellaneous register 1 */
+#define STA350_MISC1_CPWMEN	BIT(2)
+#define STA350_MISC1_BRIDGOFF	BIT(5)
+#define STA350_MISC1_NSHHPEN	BIT(6)
+#define STA350_MISC1_RPDNEN	BIT(7)
+
+/* miscellaneous register 2 */
+#define STA350_MISC2_PNDLSL_MASK	0x1c
+#define STA350_MISC2_PNDLSL_SHIFT	2
+
 #endif /* _ASOC_STA_350_H */
-- 
1.9.0

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH 1/2] ASoC: sta350: fix DT bindings document
  2014-05-05  9:49 [PATCH 1/2] ASoC: sta350: fix DT bindings document Daniel Mack
  2014-05-05  9:49 ` [PATCH 2/2] ASoC: sta350: add support for bits in miscellaneous registers Daniel Mack
@ 2014-05-05 19:52 ` Mark Brown
  1 sibling, 0 replies; 4+ messages in thread
From: Mark Brown @ 2014-05-05 19:52 UTC (permalink / raw)
  To: Daniel Mack; +Cc: alsa-devel


[-- Attachment #1.1: Type: text/plain, Size: 219 bytes --]

On Mon, May 05, 2014 at 11:49:22AM +0200, Daniel Mack wrote:
> Fix a misleading property description, and denote the fact that
> st,output-conf and st,ch*-output-mapping have to be passed as /bits/ 8.

Applied, thanks.

[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

[-- Attachment #2: Type: text/plain, Size: 0 bytes --]



^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH 2/2] ASoC: sta350: add support for bits in miscellaneous registers
  2014-05-05  9:49 ` [PATCH 2/2] ASoC: sta350: add support for bits in miscellaneous registers Daniel Mack
@ 2014-05-05 19:55   ` Mark Brown
  0 siblings, 0 replies; 4+ messages in thread
From: Mark Brown @ 2014-05-05 19:55 UTC (permalink / raw)
  To: Daniel Mack; +Cc: alsa-devel


[-- Attachment #1.1: Type: text/plain, Size: 642 bytes --]

On Mon, May 05, 2014 at 11:49:23AM +0200, Daniel Mack wrote:
> Add support for RPDNEN, NSHHPEN, BRIDGOFF, CPWMEN and PNDLSL, and add DT
> bindings to access them.

Applied, thanks.  However...

> +  -  st,powerdown-delay-divider:
> +	If present, the bridge power-down time will be divided by the provided
> +	value. If not specified, a divider of 1 will be used. Allowed values
> +	are 1, 2, 4, 8, 16, 32, 64 and 128.
> +	This property has to be specified as '/bits/ 8' value.

There doesn't seem to be a pressing need for this to be specified as
/bits/ 8?  It makes the parsing marginally easier but doesn't seem
entirely helpful for users.

[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

[-- Attachment #2: Type: text/plain, Size: 0 bytes --]



^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2014-05-06  0:56 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-05-05  9:49 [PATCH 1/2] ASoC: sta350: fix DT bindings document Daniel Mack
2014-05-05  9:49 ` [PATCH 2/2] ASoC: sta350: add support for bits in miscellaneous registers Daniel Mack
2014-05-05 19:55   ` Mark Brown
2014-05-05 19:52 ` [PATCH 1/2] ASoC: sta350: fix DT bindings document Mark Brown

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox