* [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 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.