Other Parts Discussed in Thread: TLV320AIC3104
Tool/software: Linux
Hi,
I am having beaglebone black, I have connected the audio codec to beaglebone black pins as mentioned below,
AM33XX_IOPAD(0x99c, PIN_INPUT_PULLDOWN | MUX_MODE2) /* mcasp0_axr2 */ pin - C12
AM33XX_IOPAD(0x994, PIN_OUTPUT_PULLUP | MUX_MODE0) /* mcasp0_fsx */ pin - B13
AM33XX_IOPAD(0x990, PIN_OUTPUT_PULLDOWN | MUX_MODE0) /*mcasp0_aclkx */ pin - A13
AM33XX_IOPAD(0x998, PIN_OUTPUT_PULLUP | MUX_MODE0) /*mcasp0_axr0 */ pin -D12
I have given external clock to codec. I am getting BCLK,WCLK on scope.
I am able to list my device in ALSA.
root@am335x-evm:~# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Black [TI BeagleBone Black], device 0: davinci-mcasp.0-tlv320aic3x-hifi tlv320aic3x-hifi-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0
But i am not able to read registers of the codec, when i try the i2cdetect
root@am335x-evm:~# i2cdetect -y -r 2
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- UU -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
when i try to read register,
root@am335x-evm:~# i2cget -y -f 2 0x1b 0x0
Error: Read failed
What could be error, i am adding my dts nodes below please correct me.
&mcasp0 {
#sound-dai-cells = <0>;
pinctrl-names = "default";
pinctrl-0 = <&mcasp0_pins>;
status = "okay";
op-mode = <0>; /* MCASP_IIS_MODE */
tdm-slots = <2>;
// fck_parent = <&mcasp0_fck>;
serial-dir = < /* 0: INACTIVE, 1: TX, 2: RX */
2 0 1 0 0
>;
tx-num-evt = <32>;
rx-num-evt = <32>;
};
sound0:sound0 {
compatible = "simple-audio-card";
simple-audio-card,name = "TI BeagleBone Black";
simple-audio-card,format = "i2s";
simple-audio-card,widgets = "Line", "Line Out", "Line", "Line In", "Microphone", "Mic Jack";
simple-audio-card,routing = "Line Out", "LLOUT", "LINE2R", "Line In", "LINE1L", "Line In", "LINE1R", "Line In", "MIC3L", "Mic Jack", "MIC3R", "Mic Jack", "Mic Jack", "Mic Bias";
simple-audio-card,bitclock-master = <&dailink0_master>;
simple-audio-card,frame-master = <&dailink0_master>;
dailink0_master: simple-audio-card,cpu {
sound-dai = <&mcasp0>;
//system-clock-frequency = <&clk_mcasp0>;
};
simple-audio-card,codec {
sound-dai = <&tlv320aic3104>;
clocks = <&clk_mcasp0>;
};
};
};
i2c2_pins: pinmux_i2c2_pins {
pinctrl-single,pins = <
AM33XX_IOPAD(0x978, PIN_INPUT_PULLUP | MUX_MODE3) /* uart1_ctsn.i2c2_sda */
AM33XX_IOPAD(0x97c, PIN_INPUT_PULLUP | MUX_MODE3) /* uart1_rtsn.i2c2_scl */
>;
};
&i2c2 {
pinctrl-names = "default";
pinctrl-0 = <&i2c2_pins>;
status = "okay";
clock-frequency = <100000>;
tlv320aic3104: tlv320aic3104@1b {
#sound-dai-cells = <0>;
compatible = "ti,tlv320aic3104";
reg = <0x1b>;
status = "okay";
adc-settle-ms = <40>;
ai3x-micbias-vg = <0x1>;
AVDD-supply = <&ldo2_reg>;
IOVDD-supply = <&ldo2_reg>;
DRVDD-supply = <&ldo2_reg>;
DVDD-supply = <&ldo2_reg>;
};
};
Thank You