AnsweredAssumed Answered

TLV320AIC3105 with i.MX6 running Linux 3.14 and Debian 8

Question asked by Steffen Doster on Jul 6, 2015
Latest reply on Jul 7, 2015 by Steffen Doster

Hi everyone,

 

I'm working on a custom board which uses a TLV320AIC3105 Audio Codec connected to an i.MX6.

I already managed to get Linux 3.14 and Debian 8 running with it.

The Linux Kernel is from here:

http://git.freescale.com/git/cgit.cgi/imx/linux-2.6-imx.git/snapshot/rel_imx_3.14.28_1.0.0_ga.tar.gz

Debian is installed by debootstrap as described here:

https://community.freescale.com/docs/DOC-95044#comment-27229

 

My next step after the GUI (KDE) is to get some sound out of the machine. And now I have a weird Problem:

The driver I need for this codec isn't available in the kernel's menuconfig. I have searched for it and got following result:

 

Symbol: SND_SOC_TLV320AIC3X [=n]

Type  : tristate

Defined at sound/soc/codecs/Kconfig:380

Depends on: SOUND [=y] && !M68K && !UML && SND [=y] && SND_SOC [=y]

Selected by: SND_DAVINCI_SOC_GENERIC_EVM [=n] && SOUND [=y] && !M68K && !UML && SND [=y] && SND_SOC [=y]

          || SND_OMAP_SOC_N810 [=n] && SOUND [=y] && !M68K && !UML && SND [=y] && SND_SOC [=y] && SND_OMAP_SOC [=n] && MACH_NOKIA_N810 [=n] && I2C [=y] && OMAP_MUX [=n]

          || SND_OMAP_SOC_RX51 [=n] && SOUND [=y] && !M68K && !UML && SND [=y] && SND_SOC [=y] && SND_OMAP_SOC [=n] && ARM [=y] && (MACH_NOKIA_RX51 [=n]

          || COMPILE_TEST [=n]) && GPIOLIB [=y]

          || SND_SOC_SAMSUNG_SIMTEC_HERMES [=n] && SOUND [=y] && !M68K && !UML && SND [=y] && SND_SOC [=y] && SND_SOC_SAMSUNG [=n] && ARCH_S3C24XX [=n]

          || SND_S6000_SOC_S6IPCAM [=n] && SOUND [=y] && !M68K && !UML && SND [=y] && SND_SOC [=y] && SND_S6000_SOC [=n] && XTENSA_PLATFORM_S6105

          || SND_SOC_ALL_CODECS [=n] && SOUND [=y] && !M68K && !UML && SND [=y] && SND_SOC [=y] && COMPILE_TEST [=n] && I2C [=y]

         

This gives me the answer, that the driver will not be compiled and the option isn't available, because there is no Path to this option.         

In my opinion, the dependencies are OK. So why is the Driver not available?

 

I also merged the mentioned Kconfig with the corresponding Kconfig of Kernel 3.19. After this merge, the Driver was available. But the compiled Kernel boots straight into an Oops with a NULL-Pointer-Exception.

 

Manually add the entry "CONFIG_SND_SOC_TLV320AIC3X=y" to the .config without the merge doesn't work. The driver will not be compiled and the entry is gone after compilation.

 

The Codec is connected to I2C3. Here's my device tree:

 

i2c3: i2c@021a8000 {

    #address-cells = <1>;

    #size-cells = <0>;

    compatible = "fsl,imx6q-i2c", "fsl,imx21-i2c";

    reg = <0x021a8000 0x4000>;

    interrupts = <0 38 IRQ_TYPE_LEVEL_HIGH>;

    clocks = <&clks IMX6QDL_CLK_I2C3>;

    clock-frequency = <100000>;

    pinctrl-names = "default";

    pinctrl-0 = <&pinctrl_i2c3>;

    status = "okay";

 

    tlv320aic3105: tlv320aic3105@18 {

        compatible = "ti,tlv320aic3x";

        reg = <0x18>;

    };

};

 

The Codec is also shown in the Output of "i2cdetect -y 2" with address 0x18.

 

Any Ideas how to solve this?

Outcomes