[2/2] Documentation: dt: bindings: sound: Add bindings file for CS35L32
diff mbox

Message ID 1406664163-10506-2-git-send-email-brian.austin@cirrus.com
State New, archived
Headers show

Commit Message

Austin, Brian July 29, 2014, 8:02 p.m. UTC
This patch adds the devicetree bindings file for the Cirrus Logic CS35L32 Boosted Amplifier

Signed-off-by: Brian Austin <brian.austin@cirrus.com>
---
 .../devicetree/bindings/sound/cs35l32.txt          |   69 ++++++++++++++++++++
 1 file changed, 69 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/sound/cs35l32.txt

Comments

Mark Brown July 31, 2014, 8:21 p.m. UTC | #1
On Tue, Jul 29, 2014 at 03:02:43PM -0500, Brian Austin wrote:

> This patch adds the devicetree bindings file for the Cirrus Logic CS35L32 Boosted Amplifier

Word wrapping in the commit message please.

> +  - cirrus,sdout-datacfg : Data configuration for dual CS35L32 applications only.
> +  Determines the data packed in a two-CS35L32 configuration.
> +  0 = Left/right channels VMON[11:0], IMON[11:0], VPMON[7:0].
> +  1 = Left/right channels VMON[11:0], IMON[11:0], STATUS.
> +  2 = (Default) left/right channels VMON[15:0], IMON [15:0].
> +  3 = Left/right channels VPMON[7:0], STATUS.

> +  - cirrus,sdout-share : SDOUT sharing. Determines whether one or two CS35L32
> +  devices are on board sharing SDOUT.
> +  0 = (Default) One IC.
> +  1 = Two IC's.

So, this was all a bit non-obvious but I found a datasheet so was able
to figure it out.  The device is using the I2S input channels to stream
monitoring data back to the host and can do this in TDM mode.  That's a
bit fun, and would ideally mean we'd have to play with hwmon, but it's
possibly better not to worry about that for now.

Looking at the datasheet I also see a VP supply which is omitted from
the driver and bindings - in battery powered devices like phones it'll
be connected directly to the battery so have no effect but it's still
better to represent it in case someone wants to use it some other way
that does merit software control (eg, a system running off 12V batteries
will need to regulate it down).

> +  - cirrus,gain-manager : Audio-gain management when LEDs are active.
> +  0 = (Default) Automatically reduces audio volume once by 3 dB, only if needed
> +  to avoid thermal shutdown or current limiting the boost converter.
> +  If the condition persists, the CS35L32 examine s ILED_MNG and responds accordingly.
> +  Audio recovers to original volume automatically at the end of the LED event.
> +  1 = User controls volume (nonautomatic).

This looks like something that should be a runtime control.
Austin, Brian July 31, 2014, 8:40 p.m. UTC | #2
On Thu, 31 Jul 2014, Mark Brown wrote:

> On Tue, Jul 29, 2014 at 03:02:43PM -0500, Brian Austin wrote:
> 
> > This patch adds the devicetree bindings file for the Cirrus Logic CS35L32 Boosted Amplifier
> 
> Word wrapping in the commit message please.
> 
> > +  - cirrus,sdout-datacfg : Data configuration for dual CS35L32 applications only.
> > +  Determines the data packed in a two-CS35L32 configuration.
> > +  0 = Left/right channels VMON[11:0], IMON[11:0], VPMON[7:0].
> > +  1 = Left/right channels VMON[11:0], IMON[11:0], STATUS.
> > +  2 = (Default) left/right channels VMON[15:0], IMON [15:0].
> > +  3 = Left/right channels VPMON[7:0], STATUS.
> 
> > +  - cirrus,sdout-share : SDOUT sharing. Determines whether one or two CS35L32
> > +  devices are on board sharing SDOUT.
> > +  0 = (Default) One IC.
> > +  1 = Two IC's.
> 
> So, this was all a bit non-obvious but I found a datasheet so was able
> to figure it out.  The device is using the I2S input channels to stream
> monitoring data back to the host and can do this in TDM mode.  That's a
> bit fun, and would ideally mean we'd have to play with hwmon, but it's
> possibly better not to worry about that for now.
Good. I didn't want to have to mess with anything on this part. At least 
for now
> 
> Looking at the datasheet I also see a VP supply which is omitted from
> the driver and bindings - in battery powered devices like phones it'll
> be connected directly to the battery so have no effect but it's still
> better to represent it in case someone wants to use it some other way
> that does merit software control (eg, a system running off 12V batteries
> will need to regulate it down).
> 
I was wondering about that. I didn't think representing a battery as a 
regulator was gonna be accepted but I can add that back in for sure

> > +  - cirrus,gain-manager : Audio-gain management when LEDs are active.
> > +  0 = (Default) Automatically reduces audio volume once by 3 dB, only if needed
> > +  to avoid thermal shutdown or current limiting the boost converter.
> > +  If the condition persists, the CS35L32 examine s ILED_MNG and responds accordingly.
> > +  Audio recovers to original volume automatically at the end of the LED event.
> > +  1 = User controls volume (nonautomatic).
> 
> This looks like something that should be a runtime control.
> 
I thought so too but "They" assure me it is not.

Thanks Mark
Mark Brown July 31, 2014, 9:18 p.m. UTC | #3
On Thu, Jul 31, 2014 at 03:40:51PM -0500, Brian Austin wrote:
> On Thu, 31 Jul 2014, Mark Brown wrote:
> > On Tue, Jul 29, 2014 at 03:02:43PM -0500, Brian Austin wrote:

> > > +  - cirrus,gain-manager : Audio-gain management when LEDs are active.
> > > +  0 = (Default) Automatically reduces audio volume once by 3 dB, only if needed
> > > +  to avoid thermal shutdown or current limiting the boost converter.
> > > +  If the condition persists, the CS35L32 examine s ILED_MNG and responds accordingly.
> > > +  Audio recovers to original volume automatically at the end of the LED event.
> > > +  1 = User controls volume (nonautomatic).

> > This looks like something that should be a runtime control.

> I thought so too but "They" assure me it is not.

They may be unfamiliar with upstream policies and standards!
Austin, Brian July 31, 2014, 9:28 p.m. UTC | #4
On Thu, 31 Jul 2014, Mark Brown wrote:

> On Thu, Jul 31, 2014 at 03:40:51PM -0500, Brian Austin wrote:
> > On Thu, 31 Jul 2014, Mark Brown wrote:
> > > On Tue, Jul 29, 2014 at 03:02:43PM -0500, Brian Austin wrote:
> 
> > > > +  - cirrus,gain-manager : Audio-gain management when LEDs are active.
> > > > +  0 = (Default) Automatically reduces audio volume once by 3 dB, only if needed
> > > > +  to avoid thermal shutdown or current limiting the boost converter.
> > > > +  If the condition persists, the CS35L32 examine s ILED_MNG and responds accordingly.
> > > > +  Audio recovers to original volume automatically at the end of the LED event.
> > > > +  1 = User controls volume (nonautomatic).
> 
> > > This looks like something that should be a runtime control.
> 
> > I thought so too but "They" assure me it is not.
> 
> They may be unfamiliar with upstream policies and standards!
> 
That is a fair assumption. I can turn it into a Switch kcontrol and remove 
it from DT.

Patch
diff mbox

diff --git a/Documentation/devicetree/bindings/sound/cs35l32.txt b/Documentation/devicetree/bindings/sound/cs35l32.txt
new file mode 100644
index 0000000..d3a8a51
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/cs35l32.txt
@@ -0,0 +1,69 @@ 
+CS35L32 audio CODEC
+
+Required properties:
+
+  - compatible : "cirrus,cs35l32"
+
+  - reg : the I2C address of the device for I2C. Address is determined by the level
+  of the AD0 pin. Level 0 is 0x40 while Level 1 is 0x41.
+
+  - VA-supply : power supply for the device,
+  as covered in Documentation/devicetree/bindings/regulator/regulator.txt.
+
+Optional properties:
+
+  - reset-gpios : a GPIO spec for the reset pin. If specified, it will be
+  deasserted before communication to the codec starts.
+
+  - cirrus,boost-manager : Boost voltage control.
+  0 = Automatically managed.  Boost-converter output voltage is the higher
+  of the two: Class G or adaptive LED voltage.
+  1 = Automatically managed irrespective of audio, adapting for low-power
+  dissipation when LEDs are ON, and operating in Fixed-Boost Bypass Mode
+  if LEDs are OFF (VBST = VP).
+  2 = (Default) Boost voltage fixed in Bypass Mode (VBST = VP).
+  3 = Boost voltage fixed at 5 V.
+
+  - cirrus,sdout-datacfg : Data configuration for dual CS35L32 applications only.
+  Determines the data packed in a two-CS35L32 configuration.
+  0 = Left/right channels VMON[11:0], IMON[11:0], VPMON[7:0].
+  1 = Left/right channels VMON[11:0], IMON[11:0], STATUS.
+  2 = (Default) left/right channels VMON[15:0], IMON [15:0].
+  3 = Left/right channels VPMON[7:0], STATUS.
+
+  - cirrus,sdout-share : SDOUT sharing. Determines whether one or two CS35L32
+  devices are on board sharing SDOUT.
+  0 = (Default) One IC.
+  1 = Two IC's.
+
+  - cirrus,gain-manager : Audio-gain management when LEDs are active.
+  0 = (Default) Automatically reduces audio volume once by 3 dB, only if needed
+  to avoid thermal shutdown or current limiting the boost converter.
+  If the condition persists, the CS35L32 examine s ILED_MNG and responds accordingly.
+  Audio recovers to original volume automatically at the end of the LED event.
+  1 = User controls volume (nonautomatic).
+
+  - cirrus,battery-recovery : Low battery nominal recovery threshold, rising VP.
+  0 = 3.1V
+  1 = 3.2V
+  2 = 3.3V (Default)
+  3 = 3.4V
+
+  - cirrus,battery-threshold : Low battery nominal threshold, falling VP.
+  0 = 3.1V
+  1 = 3.2V
+  2 = 3.3V
+  3 = 3.4V (Default)
+  4 = 3.5V
+  5 = 3.6V
+
+Example:
+
+codec: codec@40 {
+	compatible = "cirrus,cs35l32";
+	reg = <0x40>;
+	reset-gpios = <&gpio 10 0>;
+	cirrus,boost-manager = <0x03>;
+	cirrus,sdout-datacfg = <0x02>;
+	VA-supply = <&reg_audio>;
+};