Beaglebone Black and TLV320AIC3254 codec

Hi,

I’m using a BeagleBone Black running under the latest available Debian and a TLV320AIC3254 evaluation board. I’m struggling to make this codec as an ALSA sound card.

I used the BB-BONE-AUDI-02 DTS file (with a little bit of modification to suit my hardware), the device is found and mounted as an ALSA sound card. I know that the AIC3x is not compatible with the AIC3254.

So I drifted this .dts file to suit my application by replacing tlv320aic3x by tlv320aic32x4 (as the driver seems already available in this linux core). See below.

/*
`

```* Copyright © 2012 Texas Instruments Incorporated - http://www.ti.com/`

```*`

```* 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.`

```*/`

/dts-v1/;

/plugin/;

/ {

```compatible = “ti,beaglebone”, “ti,beaglebone-black”;`

```/* identification */`

```part-number = “BB-BONE-AUDI-02”;`

```version = “00A0”, “A0”;`

```/* state the resources this cape uses */`

```exclusive-use =`

```/* the pin header uses */`

```“P9.31”, /* mcasp0: mcasp0_aclkx */`

```“P9.29”, /* mcasp0: mcasp0_fsx */`

```“P9.28”, /* mcasp0: mcasp0_axr2 */`

```“P9.25”, /* mcasp0: mcasp0_ahclkx */`

```/* the hardware ip uses */`

```“gpio1_18”, “gpio1_19”,`

```“mcasp0”;`

```fragment@0 {`

```target = <&am33xx_pinmux>;`

```overlay {`

```i2c2_pins: pinmux_i2c2_pins {`

```pinctrl-single,pins = <`

```0x17c 0x73 /spi0_scl.i2c2_sda,SLEWCTRL_SLOW | INPUT_PULLUP |MODE2/`

```0x178 0x73 /spi0_d0.i2c2_scl,SLEWCTRL_SLOW | INPUT_PULLUP | MODE2/`

```>;`

```};`

```bone_audio_cape_audio_pins: pinmux_bone_audio_cape_audio_pins {`

```pinctrl-single,pins = <`

```0x1ac 0x00 /* mcasp0_ahclkx, MODE0 | INPUT */`

```0x19c 0x22 /* mcasp0_ahclkr, */`

```0x194 0x20 /* mcasp0_fsx, MODE0 | OUTPUT */`

```0x190 0x20 /* mcasp0_aclkr.mcasp0_aclkx, MODE0 | OUTPUT_PULLDOWN */`

```0x198 0x20`

```>;`

```};`

```};`

```};`

```fragment@1 {`

```target = <&i2c2>;`

```overlay {`

```#address-cells = <1>;`

```#size-cells = <0>;`

```clock-frequency = <100000>;`

```status = “okay”;`

```pinctrl-names = “default”;`

```pinctrl-0 = <&i2c2_pins>;`

```tlv320aic32x4: tlv320aic32x4@18 {`

```compatible = “ti,tlv320aic32x4”;`

```reg = <0x18>;`

```status = “okay”;`

```};`

```};`

```};`

```fragment@2 {`

```target = <&mcasp0>;`

```overlay {`

```pinctrl-names = “default”;`

```pinctrl-0 = <&bone_audio_cape_audio_pins>;`

```status = “okay”;`

```op-mode = <0>; /* MCASP_IIS_MODE */`

```tdm-slots = <2>;`

```num-serializer = <16>;`

```serial-dir = < /* 0: INACTIVE, 1: TX, 2: RX */`

```2 0 1 0`

```0 0 0 0`

```0 0 0 0`

```0 0 0 0`

```>;`

```tx-num-evt = <1>;`

```rx-num-evt = <1>;`

```};`

```};`

```fragment@3 {`

```target = <&ocp>;`

```overlay {`

```sound {`

```compatible = “ti,da830-evm-audio”;`

```ti,model = “DA830 EVM”;`

```ti,audio-codec = <&tlv320aic32x4>;`

```ti,mcasp-controller = <&mcasp0>;`

```ti,codec-clock-rate = <24000000>;`

```ti,audio-routing =`

```“Headphone Jack”, “HPLOUT”,`

```“Headphone Jack”, “HPROUT”,`

```“LINE1L”, “Line In”,`

```“LINE1R”, “Line In”;`

```};`

```};`

```};`

};

`

After loading this device tree file, the dmesg differs from the previously pseudo-working file:

[ 249.639414] davinci_evm sound.12: ASoC: CODEC (null) not registered
[ 249.647617] davinci_evm sound.12: snd_soc_register_card failed (-517)

[ 249.662908] platform sound.12: Driver davinci_evm requests probe deferral

When trying to use the ALSA sound card, I get multiple errors such as ALSA lib confmisc.c:768:(parse_card) cannot find card ‘0’.

I’ve been looking every relevent forum or website but I couldn’t find any applicable or working suggestion. I’m a beginner in beaglebone/linux programming so please be indulgent.

I don’t know what can be wrong, any help would be very appreciated.

Thanks