[alsa-devel] Kernel Device Tree entries for simple-audio-card

Rick Mann rmann at latencyzero.com
Tue Sep 29 10:28:41 CEST 2015


Okay, so I switched to da830-evm-audio, and things are much better. But still not perfect. Here's the DTS:

	https://github.com/JetForMe/podtique/blob/master/bbb/cape/Podtique1/BB-ENABLE-PRU.dts

Now I have a working MCLK, and I see clocking on BCLK and WCLK, but the rates are questionable. MCLK is 24 MHz (even though in the DTS it's set to 12 MHz); that might be okay. For the following call:

	# speaker-test -r 22050 -c 2 -f 1000 -F S16_LE -t sine -s 1 -D hw:0,0

WCLK is 11.88 kHz, and it is pulses (DSP mode), rather than high for left, low for right for each channel's word. BCLK is 379.5 kHz.

I'm looking at the i2c commands being sent to see if I can determine what the CODEC thinks it's trying to do.

> On Sep 28, 2015, at 23:42 , Caleb Crome <caleb at crome.org> wrote:
> 
>> 
>> Could you send me your DTS?
> 
> Yes, but I have modified a bit of stuff in the davinci-evm.c to make
> my multi-codec setup work right.
> 
> I turned off HDMI with this:
> 
> commit 7f20ffd56de6921bc5f8e2fee8da75d743d57847
> Author: Caleb Crome <caleb at signalessence.com>
> Date:   Wed Sep 9 13:33:36 2015 -0700
> 
>    turn off hdmi from boneblack
> 
> diff --git a/arch/arm/boot/dts/am335x-boneblack.dts
> b/arch/arm/boot/dts/am335x-boneblack.dts
> index 5c42d25..6335072 100644
> --- a/arch/arm/boot/dts/am335x-boneblack.dts
> +++ b/arch/arm/boot/dts/am335x-boneblack.dts
> @@ -34,51 +34,9 @@
> };
> 
> &am33xx_pinmux {
> - nxp_hdmi_bonelt_pins: nxp_hdmi_bonelt_pins {
> - pinctrl-single,pins = <
> - 0x1b0 0x03      /* xdma_event_intr0, OMAP_MUX_MODE3 | AM33XX_PIN_OUTPUT */
> - 0xa0 0x08       /* lcd_data0.lcd_data0, OMAP_MUX_MODE0 |
> AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA */
> - 0xa4 0x08       /* lcd_data1.lcd_data1, OMAP_MUX_MODE0 |
> AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA */
> - 0xa8 0x08       /* lcd_data2.lcd_data2, OMAP_MUX_MODE0 |
> AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA */
> - 0xac 0x08       /* lcd_data3.lcd_data3, OMAP_MUX_MODE0 |
> AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA */
> - 0xb0 0x08       /* lcd_data4.lcd_data4, OMAP_MUX_MODE0 |
> AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA */
> - 0xb4 0x08       /* lcd_data5.lcd_data5, OMAP_MUX_MODE0 |
> AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA */
> - 0xb8 0x08       /* lcd_data6.lcd_data6, OMAP_MUX_MODE0 |
> AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA */
> - 0xbc 0x08       /* lcd_data7.lcd_data7, OMAP_MUX_MODE0 |
> AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA */
> - 0xc0 0x08       /* lcd_data8.lcd_data8, OMAP_MUX_MODE0 |
> AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA */
> - 0xc4 0x08       /* lcd_data9.lcd_data9, OMAP_MUX_MODE0 |
> AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA */
> - 0xc8 0x08       /* lcd_data10.lcd_data10, OMAP_MUX_MODE0 |
> AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA */
> - 0xcc 0x08       /* lcd_data11.lcd_data11, OMAP_MUX_MODE0 |
> AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA */
> - 0xd0 0x08       /* lcd_data12.lcd_data12, OMAP_MUX_MODE0 |
> AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA */
> - 0xd4 0x08       /* lcd_data13.lcd_data13, OMAP_MUX_MODE0 |
> AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA */
> - 0xd8 0x08       /* lcd_data14.lcd_data14, OMAP_MUX_MODE0 |
> AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA */
> - 0xdc 0x08       /* lcd_data15.lcd_data15, OMAP_MUX_MODE0 |
> AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA */
> - 0xe0 0x00       /* lcd_vsync.lcd_vsync, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT */
> - 0xe4 0x00       /* lcd_hsync.lcd_hsync, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT */
> - 0xe8 0x00       /* lcd_pclk.lcd_pclk, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT */
> - 0xec 0x00       /* lcd_ac_bias_en.lcd_ac_bias_en, OMAP_MUX_MODE0 |
> AM33XX_PIN_OUTPUT */
> - >;
> - };
> - nxp_hdmi_bonelt_off_pins: nxp_hdmi_bonelt_off_pins {
> - pinctrl-single,pins = <
> - 0x1b0 0x03      /* xdma_event_intr0, OMAP_MUX_MODE3 | AM33XX_PIN_OUTPUT */
> - >;
> - };
> -};
> -
> -&lcdc {
> - status = "okay";
> };
> 
> / {
> - hdmi {
> - compatible = "ti,tilcdc,slave";
> - i2c = <&i2c0>;
> - pinctrl-names = "default", "off";
> - pinctrl-0 = <&nxp_hdmi_bonelt_pins>;
> - pinctrl-1 = <&nxp_hdmi_bonelt_off_pins>;
> - status = "okay";
> - };
> };
> 
> &rtc {
> 
> 
> 
> And here's the added bit:
> 
> Index: KERNEL/arch/arm/boot/dts/am335x-boneblack.dts
> ===================================================================
> --- KERNEL.orig/arch/arm/boot/dts/am335x-boneblack.dts 2015-09-21
> 17:23:14.961343604 -0700
> +++ KERNEL/arch/arm/boot/dts/am335x-boneblack.dts 2015-09-22
> 09:35:49.308278239 -0700
> @@ -5,11 +5,25 @@
>  * it under the terms of the GNU General Public License version 2 as
>  * published by the Free Software Foundation.
>  */
> +
> +
> +
> +/*
> +   * MCASP pin mapping
> +   *                          ball   BBB
> +   * MCASP0_ACLKX             A13    P9.31
> +   * MCASP0_AFSX              B13    P9.29
> +   * MCASP0_AXR2  (mcasp OUT) C12    P9.28
> +   * MCASP0_AXR3  (mcasp IN)  A14    P9.25
> +*/
> +
> /dts-v1/;
> 
> #include "am33xx.dtsi"
> #include "am335x-bone-common.dtsi"
> 
> +
> +
> / {
>  model = "TI AM335x BeagleBone Black";
>  compatible = "ti,am335x-bone-black", "ti,am335x-bone", "ti,am33xx";
> @@ -34,9 +48,119 @@
> };
> 
> &am33xx_pinmux {
> + i2c2_pins_default: i2c2_pins_default {
> +        pinctrl-single,pins = <
> +                0x17c ( PIN_INPUT_PULLUP | MUX_MODE3 ) /* (D17)
> uart1_rtsn.I2C2_SCL */
> +                0x178 ( PIN_INPUT_PULLUP | MUX_MODE3 ) /* (D18)
> uart1_ctsn.I2C2_SDA */
> +        >;
> + };
> +
> +
> + i2c1_pins_default: pinmux_i2c1_pins {
> +                       pinctrl-single,pins = <
> +                               0x158 0x72      /*
> uart1_ctsn.i2c2_sda, SLEWCTRL_SLOW | INPUT_PULLUP | MODE2 */
> +                               0x15c 0x72      /*
> uart1_rtsn.i2c2_scl, SLEWCTRL_SLOW | INPUT_PULLUP | MODE2 */
> +                       >;
> +        };
> +
> + mcasp_0_pins_default: mcasp_0_pins_default {
> + pinctrl-single,pins = <
> + 0x190 ( PIN_INPUT | MUX_MODE0 ) /* (A13) mcasp0_aclkx.mcasp0_aclkx */
> + 0x194 ( PIN_INPUT | MUX_MODE0 ) /* (B13) mcasp0_fsx.mcasp0_fsx */
> + 0x19c ( PIN_OUTPUT | MUX_MODE2 ) /* (C12) mcasp0_ahclkr.mcasp0_axr2 */
> + 0x1ac ( PIN_INPUT | MUX_MODE2 ) /* (A14) mcasp0_ahclkx.mcasp0_axr3 */
> + >;
> + };
> +};
> +
> +
> +&i2c1 {
> + clock-frequency = <100000>;
> + status = "okay";
> + pinctrl-names = "default";
> + pinctrl-0 = <&i2c1_pins_default>;
> + status="okay";
> +
> + tlv320aic3x_a: tlv320aic3x at 18 {
> + compatible = "ti,tlv320aic3x";
> + reg = <0x18>;
> + tdm-offset = <0>;
> + status = "okay";
> + };
> +
> + tlv320aic3x_b: tlv320aic3x at 19 {
> + compatible = "ti,tlv320aic3x";
> + reg = <0x19>;
> + tdm-offset = <32>;
> + status = "okay";
> + };
> +
> + tlv320aic3x_c: tlv320aic3x at 1a {
> + compatible = "ti,tlv320aic3x";
> + reg = <0x1a>;
> + tdm-offset = <64>;
> + status = "okay";
> + };
> +
> + tlv320aic3x_d: tlv320aic3x at 1b {
> + compatible = "ti,tlv320aic3x";
> + reg = <0x1b>;
> + tdm-offset = <96>;
> + status = "okay";
> + };
> +
> };
> 
> +&mcasp0 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&mcasp_0_pins_default>;
> + status = "okay";
> +
> + op-mode = <0>;          /* MCASP_IIS_MODE */
> + tdm-slots = <16>;
> + num-serializer = <16>;
> + serial-dir = <  /* 0: INACTIVE, 1: TX, 2: RX */
> + 0 0 1 2
> + 0 0 0 0
> + 0 0 0 0
> + 0 0 0 0
> + >;
> + tx-num-evt = <1>;
> + rx-num-evt = <1>;
> +};
> +
> +
> / {
> + sound {
> + compatible = "ti,da830-evm-audio";
> + ti,model = "PUPPY-AUDIO";
> + ti,audio-codec = <
> +       &tlv320aic3x_a
> +       &tlv320aic3x_b
> +       &tlv320aic3x_c
> +       &tlv320aic3x_d
> +       >;
> + ti,mcasp-controller = <&mcasp0>;
> + ti,codec-clock-rate = <12288000>;
> + ti,audio-routing =
> + "Headphone Jack",       "a HPLOUT",
> + "Headphone Jack",       "a HPROUT",
> + "Headphone Jack",       "b HPLOUT",
> + "Headphone Jack",       "b HPROUT",
> + "Headphone Jack",       "c HPLOUT",
> + "Headphone Jack",       "c HPROUT",
> + "Headphone Jack",       "d HPLOUT",
> + "Headphone Jack",       "d HPROUT",
> + "a LINE1L",               "Line In",
> + "a LINE1R",               "Line In",
> + "b LINE1L",               "Line In",
> + "b LINE1R",               "Line In",
> + "c LINE1L",               "Line In",
> + "c LINE1R",               "Line In",
> + "d LINE1L",               "Line In",
> + "d LINE1R",               "Line In";
> + status="okay";
> + };
> };
> 
> &rtc {
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel at alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel


-- 
Rick Mann
rmann at latencyzero.com




More information about the Alsa-devel mailing list