Hi Folks,
Managed to wrap this one around my neck. Trying to bring up this ADC on a Raspberry Pi to do some experimentation. The driver is being recognised (in that I can see i2c transactions to reset the chip and then wake it up) but I'm seeing these messages in the log and the device doesn't appear;
[ 75.487720] tlv320adcx140-codec 1-0054: ASoC: error at snd_soc_component_probe on tlv320adcx140-codec.1-0054: -22 [ 75.498363] tlv320adcx140-codec 1-0054: ASoC: failed to probe component -22 [ 75.505861] asoc-simple-card soc:sound: ASoC: failed to instantiate card -22
It's going to be something obvious, and I'm certainly no device tree expert, but if anyone has any suggestions on what the issue is I'd be deeply appreciative.
DAVE
// Definitions for tlv320adcx140 multi-channel codec
/dts-v1/;
/plugin/;
/ {
compatible = "brcm,bcm2837", "brcm,bcm2836", "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
fragment@0 {
target = <&i2s>;
__overlay__ {
#sound-dai-cells = <0>;
status = "okay";
};
};
fragment@1 {
target-path="/";
__overlay__ {
codec_mclk:codec-mclk {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <24000000>;
};
};
};
fragment@2 {
target = <&i2c_arm>;
__overlay__ {
#address-cells = <1>;
#size-cells = <0>;
status = "okay";
codec: tlv320adc5140@54{
compatible = "ti,tlv320adc5140";
reg = <0x54>;
#sound-dai-cells = <0>;
ti,use-internal-areg;
ti,mic-bias-source = <0>;
iov-supply = <&codec_reg_3v3>; ldoin-supply = <&codec_reg_3v3>;
};
};
};
fragment@3 {
target-path = "/";
__overlay__ {
codec_reg_3v3: codec-reg-3v3 {
compatible = "regulator-fixed";
regulator-name = "tlv320adc5140_3v3";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-always-on;
};
};
};
fragment@4 {
target = <&sound>;
sound_overlay: __overlay__ {
compatible = "simple-audio-card";
simple-audio-card,name = "technosampler";
simple-audio-card,format = "i2s";
simple-audio-card,bitclock-master = <&codec_dai>;
simple-audio-card,frame-master = <&codec_dai>;
simple-audio-card,widgets =
"Microphone", "Microphone Jack",
"Headphone", "Headphone Jack",
"Speaker", "External Speaker";
simple-audio-card,routing =
"MIC_IN", "Microphone Jack",
"Headphone Jack", "HP_OUT",
"External Speaker", "LINE_OUT";
status = "okay";
cpu_dai: simple-audio-card,cpu {
sound-dai = <&i2s>;
};
codec_dai: simple-audio-card,codec {
sound-dai = <&codec>;
clocks = <&codec_mclk>;
};
};
};
__overrides__ {
alsaname = <&sound_overlay>,"simple-audio-card,name";
};
};