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

Caleb Crome caleb at crome.org
Tue Sep 29 16:08:07 CEST 2015


You need to fix the mclk rate first I think, then the pll settings should fall in line.  The DTS you sent still has the simple-audio-card and not the da830 stuff in it.

Caleb

Sent from my iPhone

> On Sep 29, 2015, at 1:28 AM, Rick Mann <rmann at latencyzero.com> wrote:
> 
> 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