Loading Documentation/devicetree/bindings/sound/cs35l34.txt 0 → 100644 +64 −0 Original line number Diff line number Diff line CS35L34 Speaker Amplifier Required properties: - compatible : "cirrus,cs35l34" - 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. - cirrus,boost-vtge-millivolt : Boost Voltage Value. Configures the boost converter's output voltage in mV. The range is from VP to 8V with increments of 100mV. - cirrus,boost-nanohenry: Inductor value for boost converter. The value is in nH and they can be values of 1000nH, 1100nH, 1200nH, 1500nH, and 2200nH. Optional properties: - reset-gpios: GPIO used to reset the amplifier. - interrupt-parent : Specifies the phandle of the interrupt controller to which the IRQs from CS35L34 are delivered to. - interrupts : IRQ line info CS35L34. (See Documentation/devicetree/bindings/interrupt-controller/interrupts.txt for further information relating to interrupt properties) - cirrus,boost-peak-milliamp : Boost converter peak current limit in mA. The range starts at 1200mA and goes to a maximum of 3840mA with increments of 80mA. The default value is 2480mA. - cirrus,i2s-sdinloc : ADSP SDIN I2S channel location. Indicates whether the received mono data is in the left or right portion of the I2S frame according to the AD0 pin or directly via this configuration. 0x0 (Default) = Selected by AD0 input (if AD0 = LOW, use left channel), 0x2 = Left, 0x1 = Selected by the inversion of the AD0 input (if AD0 = LOW, use right channel), 0x3 = Right. - cirrus,gain-zc-disable: Boolean property. If set, the gain change will take effect without waiting for a zero cross. - cirrus,tdm-rising-edge: Boolean property. If set, data is on the rising edge of SCLK. Otherwise, data is on the falling edge of SCLK. Example: cs35l34: cs35l34@40 { compatible = "cirrus,cs35l34"; reg = <0x40>; interrupt-parent = <&gpio8>; interrupts = <3 IRQ_TYPE_LEVEL_LOW>; reset-gpios = <&gpio 10 0>; cirrus,boost-vtge-milltvolt = <8000>; /* 8V */ cirrus,boost-ind-nanohenry = <1000>; /* 1uH */ cirrus,boost-peak-milliamp = <3000>; /* 3A */ }; include/sound/cs35l34.h 0 → 100644 +35 −0 Original line number Diff line number Diff line /* * linux/sound/cs35l34.h -- Platform data for CS35l34 * * Copyright (c) 2016 Cirrus Logic Inc. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ #ifndef __CS35L34_H #define __CS35L34_H struct cs35l34_platform_data { /* Set AIF to half drive strength */ bool aif_half_drv; /* Digital Soft Ramp Disable */ bool digsft_disable; /* Amplifier Invert */ bool amp_inv; /* Peak current (mA) */ unsigned int boost_peak; /* Boost inductor value (nH) */ unsigned int boost_ind; /* Boost Controller Voltage Setting (mV) */ unsigned int boost_vtge; /* Gain Change Zero Cross */ bool gain_zc_disable; /* SDIN Left/Right Selection */ unsigned int i2s_sdinloc; /* TDM Rising Edge */ bool tdm_rising_edge; }; #endif /* __CS35L34_H */ include/sound/soc-dai.h +25 −0 Original line number Diff line number Diff line Loading @@ -207,6 +207,30 @@ struct snd_soc_dai_ops { struct snd_soc_dai *); }; struct snd_soc_cdai_ops { /* * for compress ops */ int (*startup)(struct snd_compr_stream *, struct snd_soc_dai *); int (*shutdown)(struct snd_compr_stream *, struct snd_soc_dai *); int (*set_params)(struct snd_compr_stream *, struct snd_compr_params *, struct snd_soc_dai *); int (*get_params)(struct snd_compr_stream *, struct snd_codec *, struct snd_soc_dai *); int (*set_metadata)(struct snd_compr_stream *, struct snd_compr_metadata *, struct snd_soc_dai *); int (*get_metadata)(struct snd_compr_stream *, struct snd_compr_metadata *, struct snd_soc_dai *); int (*trigger)(struct snd_compr_stream *, int, struct snd_soc_dai *); int (*pointer)(struct snd_compr_stream *, struct snd_compr_tstamp *, struct snd_soc_dai *); int (*ack)(struct snd_compr_stream *, size_t, struct snd_soc_dai *); }; /* * Digital Audio Interface Driver. * Loading Loading @@ -236,6 +260,7 @@ struct snd_soc_dai_driver { /* ops */ const struct snd_soc_dai_ops *ops; const struct snd_soc_cdai_ops *cops; /* DAI capabilities */ struct snd_soc_pcm_stream capture; Loading sound/soc/codecs/Kconfig +5 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,7 @@ config SND_SOC_ALL_CODECS select SND_SOC_CQ0093VC if MFD_DAVINCI_VOICECODEC select SND_SOC_CS35L32 if I2C select SND_SOC_CS35L33 if I2C select SND_SOC_CS35L34 if I2C select SND_SOC_CS42L51_I2C if I2C select SND_SOC_CS42L52 if I2C && INPUT select SND_SOC_CS42L56 if I2C && INPUT Loading Loading @@ -399,6 +400,10 @@ config SND_SOC_CS35L33 tristate "Cirrus Logic CS35L33 CODEC" depends on I2C config SND_SOC_CS35L34 tristate "Cirrus Logic CS35L34 CODEC" depends on I2C config SND_SOC_CS42L51 tristate Loading sound/soc/codecs/Makefile +2 −0 Original line number Diff line number Diff line Loading @@ -38,6 +38,7 @@ snd-soc-bt-sco-objs := bt-sco.o snd-soc-cq93vc-objs := cq93vc.o snd-soc-cs35l32-objs := cs35l32.o snd-soc-cs35l33-objs := cs35l33.o snd-soc-cs35l34-objs := cs35l34.o snd-soc-cs42l51-objs := cs42l51.o snd-soc-cs42l51-i2c-objs := cs42l51-i2c.o snd-soc-cs42l52-objs := cs42l52.o Loading Loading @@ -263,6 +264,7 @@ obj-$(CONFIG_SND_SOC_BT_SCO) += snd-soc-bt-sco.o obj-$(CONFIG_SND_SOC_CQ0093VC) += snd-soc-cq93vc.o obj-$(CONFIG_SND_SOC_CS35L32) += snd-soc-cs35l32.o obj-$(CONFIG_SND_SOC_CS35L33) += snd-soc-cs35l33.o obj-$(CONFIG_SND_SOC_CS35L34) += snd-soc-cs35l34.o obj-$(CONFIG_SND_SOC_CS42L51) += snd-soc-cs42l51.o obj-$(CONFIG_SND_SOC_CS42L51_I2C) += snd-soc-cs42l51-i2c.o obj-$(CONFIG_SND_SOC_CS42L52) += snd-soc-cs42l52.o Loading Loading
Documentation/devicetree/bindings/sound/cs35l34.txt 0 → 100644 +64 −0 Original line number Diff line number Diff line CS35L34 Speaker Amplifier Required properties: - compatible : "cirrus,cs35l34" - 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. - cirrus,boost-vtge-millivolt : Boost Voltage Value. Configures the boost converter's output voltage in mV. The range is from VP to 8V with increments of 100mV. - cirrus,boost-nanohenry: Inductor value for boost converter. The value is in nH and they can be values of 1000nH, 1100nH, 1200nH, 1500nH, and 2200nH. Optional properties: - reset-gpios: GPIO used to reset the amplifier. - interrupt-parent : Specifies the phandle of the interrupt controller to which the IRQs from CS35L34 are delivered to. - interrupts : IRQ line info CS35L34. (See Documentation/devicetree/bindings/interrupt-controller/interrupts.txt for further information relating to interrupt properties) - cirrus,boost-peak-milliamp : Boost converter peak current limit in mA. The range starts at 1200mA and goes to a maximum of 3840mA with increments of 80mA. The default value is 2480mA. - cirrus,i2s-sdinloc : ADSP SDIN I2S channel location. Indicates whether the received mono data is in the left or right portion of the I2S frame according to the AD0 pin or directly via this configuration. 0x0 (Default) = Selected by AD0 input (if AD0 = LOW, use left channel), 0x2 = Left, 0x1 = Selected by the inversion of the AD0 input (if AD0 = LOW, use right channel), 0x3 = Right. - cirrus,gain-zc-disable: Boolean property. If set, the gain change will take effect without waiting for a zero cross. - cirrus,tdm-rising-edge: Boolean property. If set, data is on the rising edge of SCLK. Otherwise, data is on the falling edge of SCLK. Example: cs35l34: cs35l34@40 { compatible = "cirrus,cs35l34"; reg = <0x40>; interrupt-parent = <&gpio8>; interrupts = <3 IRQ_TYPE_LEVEL_LOW>; reset-gpios = <&gpio 10 0>; cirrus,boost-vtge-milltvolt = <8000>; /* 8V */ cirrus,boost-ind-nanohenry = <1000>; /* 1uH */ cirrus,boost-peak-milliamp = <3000>; /* 3A */ };
include/sound/cs35l34.h 0 → 100644 +35 −0 Original line number Diff line number Diff line /* * linux/sound/cs35l34.h -- Platform data for CS35l34 * * Copyright (c) 2016 Cirrus Logic Inc. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ #ifndef __CS35L34_H #define __CS35L34_H struct cs35l34_platform_data { /* Set AIF to half drive strength */ bool aif_half_drv; /* Digital Soft Ramp Disable */ bool digsft_disable; /* Amplifier Invert */ bool amp_inv; /* Peak current (mA) */ unsigned int boost_peak; /* Boost inductor value (nH) */ unsigned int boost_ind; /* Boost Controller Voltage Setting (mV) */ unsigned int boost_vtge; /* Gain Change Zero Cross */ bool gain_zc_disable; /* SDIN Left/Right Selection */ unsigned int i2s_sdinloc; /* TDM Rising Edge */ bool tdm_rising_edge; }; #endif /* __CS35L34_H */
include/sound/soc-dai.h +25 −0 Original line number Diff line number Diff line Loading @@ -207,6 +207,30 @@ struct snd_soc_dai_ops { struct snd_soc_dai *); }; struct snd_soc_cdai_ops { /* * for compress ops */ int (*startup)(struct snd_compr_stream *, struct snd_soc_dai *); int (*shutdown)(struct snd_compr_stream *, struct snd_soc_dai *); int (*set_params)(struct snd_compr_stream *, struct snd_compr_params *, struct snd_soc_dai *); int (*get_params)(struct snd_compr_stream *, struct snd_codec *, struct snd_soc_dai *); int (*set_metadata)(struct snd_compr_stream *, struct snd_compr_metadata *, struct snd_soc_dai *); int (*get_metadata)(struct snd_compr_stream *, struct snd_compr_metadata *, struct snd_soc_dai *); int (*trigger)(struct snd_compr_stream *, int, struct snd_soc_dai *); int (*pointer)(struct snd_compr_stream *, struct snd_compr_tstamp *, struct snd_soc_dai *); int (*ack)(struct snd_compr_stream *, size_t, struct snd_soc_dai *); }; /* * Digital Audio Interface Driver. * Loading Loading @@ -236,6 +260,7 @@ struct snd_soc_dai_driver { /* ops */ const struct snd_soc_dai_ops *ops; const struct snd_soc_cdai_ops *cops; /* DAI capabilities */ struct snd_soc_pcm_stream capture; Loading
sound/soc/codecs/Kconfig +5 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,7 @@ config SND_SOC_ALL_CODECS select SND_SOC_CQ0093VC if MFD_DAVINCI_VOICECODEC select SND_SOC_CS35L32 if I2C select SND_SOC_CS35L33 if I2C select SND_SOC_CS35L34 if I2C select SND_SOC_CS42L51_I2C if I2C select SND_SOC_CS42L52 if I2C && INPUT select SND_SOC_CS42L56 if I2C && INPUT Loading Loading @@ -399,6 +400,10 @@ config SND_SOC_CS35L33 tristate "Cirrus Logic CS35L33 CODEC" depends on I2C config SND_SOC_CS35L34 tristate "Cirrus Logic CS35L34 CODEC" depends on I2C config SND_SOC_CS42L51 tristate Loading
sound/soc/codecs/Makefile +2 −0 Original line number Diff line number Diff line Loading @@ -38,6 +38,7 @@ snd-soc-bt-sco-objs := bt-sco.o snd-soc-cq93vc-objs := cq93vc.o snd-soc-cs35l32-objs := cs35l32.o snd-soc-cs35l33-objs := cs35l33.o snd-soc-cs35l34-objs := cs35l34.o snd-soc-cs42l51-objs := cs42l51.o snd-soc-cs42l51-i2c-objs := cs42l51-i2c.o snd-soc-cs42l52-objs := cs42l52.o Loading Loading @@ -263,6 +264,7 @@ obj-$(CONFIG_SND_SOC_BT_SCO) += snd-soc-bt-sco.o obj-$(CONFIG_SND_SOC_CQ0093VC) += snd-soc-cq93vc.o obj-$(CONFIG_SND_SOC_CS35L32) += snd-soc-cs35l32.o obj-$(CONFIG_SND_SOC_CS35L33) += snd-soc-cs35l33.o obj-$(CONFIG_SND_SOC_CS35L34) += snd-soc-cs35l34.o obj-$(CONFIG_SND_SOC_CS42L51) += snd-soc-cs42l51.o obj-$(CONFIG_SND_SOC_CS42L51_I2C) += snd-soc-cs42l51-i2c.o obj-$(CONFIG_SND_SOC_CS42L52) += snd-soc-cs42l52.o Loading