[alsa-devel] [PATCH v2 2/2] ASoC: cs35l35: Add device tree documentation for CS35L35
Rob Herring
robh at kernel.org
Mon Dec 19 19:10:11 CET 2016
On Tue, Dec 13, 2016 at 10:26:44AM -0600, Li Xu wrote:
> Add device tree documentation for Cirrus Logic CS35L35
> speaker amplifier
>
> Signed-off-by: Li Xu <li.xu at cirrus.com>
> ---
> .../devicetree/bindings/sound/cs35l35.txt | 172 +++++++++++++++++++++
> 1 file changed, 172 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/sound/cs35l35.txt
>
> diff --git a/Documentation/devicetree/bindings/sound/cs35l35.txt b/Documentation/devicetree/bindings/sound/cs35l35.txt
> new file mode 100644
> index 0000000..8b13f67
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/sound/cs35l35.txt
> @@ -0,0 +1,172 @@
> +CS35L35 Speaker Amplifier
> +
> +Required properties:
> +
> + - compatible : "cirrus,cs35l35"
> +
> + - reg : the I2C address of the device for I2C
> +
> + - VA-supply, VP-supply : power supplies for the device,
> + as covered in
> + Documentation/devicetree/bindings/regulator/regulator.txt.
> +
> + - interrupt-parent : Specifies the phandle of the interrupt controller to
> + which the IRQs from CS35L35 are delivered to.
> + - interrupts : IRQ line info CS35L35.
> + (See Documentation/devicetree/bindings/interrupt-controller/interrupts.txt
> + for further information relating to interrupt properties)
> +
> +Optional properties:
> + - cirrus,reset-gpios : Active low GPIO used to reset the amplifier
You can drop cirrus here. reset-gpios is pretty standard.
> +
> + - cirrus,stereo-config : Boolean to determine if there are 2 AMPs for a
> + Stereo configuration
The example shows this as a node. I prefer a property.
> + - cirrus,audio-channel : Set Location of Audio Signal on Serial Port
> + 0 = Data Packet received on Left I2S Channel
> + 1 = Data Packet received on Right I2S Channel
> +
> + - cirrus,advisory-channel : Set Location of Advisory Signal on Serial Port
> + 0 = Data Packet received on Left I2S Channel
> + 1 = Data Packet received on Right I2S Channel
> +
> + - cirrus,shared-boost : Boolean to enable ClassH tracking of Advisory Signal
> + if 2 Devices share Boost BST_CTL
> +
> + - cirrus,sp-drv-strength : Value for setting the Serial Port drive strength
> + Table 3-10 of the datasheet lists drive-strength specifications
> + 0 = 1x (Default)
> + 1 = .5x
> +
> + - cirrus,bst-pdn-fet-on : Boolean to determine if the Boost PDN control
> + powers down with a rectification FET On or Off. If VSPK is supplied
> + externally then FET is off.
> +
> + - cirrus,boost-ctl-millivolt : Boost Converter control word. Step Size of 100mV
> + 0x00 = (Default) VP
> + 0x01 = 2600mV
> + 0x41 = 9000mV
> +
> + - cirrus,boost-ipk-milliamp : Boost-converter peak current limit.
> + Configures the peak current by monitoring the current through the boost FET.
> + Step size: 112mA
> + 0x00 = 1680mA
> + 0x19 = 4480mA
Either make the values be actual mV or mA (actually, uV and uA are the
standard, see property-units.txt) or drop the unit suffix.
> +
> + - cirrus,amp-gain-zc : Boolean to determine if to use Amplifier gain-change
> + zero-cross
> +
> +Optional H/G Algorithm sub-node:
> +
> + The cs35l35 node can have a single "cirrus,classh-internal-algo" sub-node
> + that will disable automatic control of the internal H/G Algorithm.
> +
> + It is strongly recommended that the Datasheet be referenced when adjusting
> + or using these Class H Algorithm controls over the internal Algorithm.
> + Serious damage can occur to the Device and surrounding components.
> +
> + - cirrus,classh-internal-algo : Sub-node for the Internal Class H Algorithm
> + See Section 4.3 Internal Class H Algorithm in the Datasheet.
> + If not used, the device manages the ClassH Algorithm internally.
> +
> +Optional properties for the "cirrus,classh-internal-algo" Sub-node
> +
> + Section 7.29 Class H Control
> + - cirrus,classh-bst-overide : Boolean
> + - cirrus,classh-bst-max-limit
> + - cirrus,classh-mem-depth
> +
> + Section 7.30 Class H Headroom Control
> + - cirrus,classh-headroom
> +
> + Section 7.31 Class H Release Rate
> + - cirrus,classh-release-rate
> +
> + Section 7.32 Class H Weak FET Drive Control
> + - cirrus,classh-wk-fet-disable
> + - cirrus,classh-wk-fet-delay
> + - cirrus,classh-wk-fet-thld
> +
> + Section 7.34 Class H VP Control
> + - cirrus,classh-vpch-auto
> + - cirrus,classh-vpch-rate
> + - cirrus,classh-vpch-man
> +
> +Optional Monitor Signal Format sub-node:
> +
> + The cs35l35 node can have a single "cirrus,monitor-signal-format" sub-node
> + for adjusting the Depth, Location and Frame of the Monitoring Signals
> + for Algorithms.
> +
> + See Sections 4.8.2 through 4.8.4 Serial-Port Control in the Datasheet
> +
> + -cirrus,monitor-signal-format : Sub-node for the Monitor Signaling Formating
> + on the I2S Port. Each of the 3 8 bit values in the array contain the settings
> + for depth, location, and frame.
> +
> + If not used, the defaults for the 6 monitor signals is used.
> +
> + Sections 7.44 - 7.53 lists values for the depth, location, and frame
> + for each monitoring signal.
> +
> + - cirrus,imon : 3 8 bit values to set the depth, location, and frame
> + of the IMON monitor signal.
> +
> + - cirrus,vmon : 3 8 bit values to set the depth, location, and frame
> + of the VMON monitor signal.
> +
> + - cirrus,vpmon : 3 8 bit values to set the depth, location, and frame
> + of the VPMON monitor signal.
> +
> + - cirrus,vbstmon : 3 8 bit values to set the depth, location, and frame
> + of the VBSTMON monitor signal
> +
> + - cirrus,vpbrstat : 3 8 bit values to set the depth, location, and frame
> + of the VPBRSTAT monitor signal
> +
> + - cirrus,zerofill : 3 8 bit values to set the depth, location, and frame\
stray \
> + of the ZEROFILL packet in the monitor signal
> +
> +Example:
> +
> +cs35l35: audio-codec at 20 {
> + compatible = "cirrus,cs35l35";
> + reg = <0x20>;
> + VA-supply = <&dummy_vreg>;
> + VP-supply = <&dummy_vreg>;
> + reset-gpios = <&axi_gpio 54 1>;
> + interrupt-parent = <&gpio8>;
> + interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
> + cirrus,boost-ctl = <0x41>;
> +
> + cirrus,stereo-config {
> + cirrus,audio-channel = <0x00>;
> + cirrus,advisory-channel = <0x01>;
> + cirrus,shared-boost;
> + };
> +
> + cirrus,classh-internal-algo {
> + cirrus,classh-bst-overide;
> + cirrus,classh-bst-max-limit = <0x01>;
> + cirrus,classh-mem-depth = <0x01>;
> + cirrus,classh-release-rate = <0x08>;
> + cirrus,classh-headroom-millivolt = <0x0B>;
> + cirrus,classh-wk-fet-disable = <0x01>;
> + cirrus,classh-wk-fet-delay = <0x04>;
> + cirrus,classh-wk-fet-thld = <0x01>;
> + cirrus,classh-vpch-auto = <0x01>;
> + cirrus,classh-vpch-rate = <0x02>;
> + cirrus,classh-vpch-man = <0x05>;
> + };
> +
> + /* Depth, Location, Frame */
> + cirrus,monitor-signal-format {
> + cirrus,imon = /bits/ 8 <0x03 0x00 0x01>;
> + cirrus,vmon = /bits/ 8 <0x03 0x00 0x00>;
> + cirrus,vpmon = /bits/ 8 <0x03 0x04 0x00>;
> + cirrus,vbstmon = /bits/ 8 <0x03 0x04 0x01>;
> + cirrus,vpbrstat = /bits/ 8 <0x00 0x04 0x00>;
> + cirrus,zerofill = /bits/ 8 <0x00 0x00 0x00>;
> + };
> +
> +};
> --
> 1.9.1
>
More information about the Alsa-devel
mailing list