problematic clock

ShaneCCC,

during the compilation of the DT (that I though it went OK)

/usr/src/kernel/kernel-4.4$ make dtbs

The printing out displayed something like this:

DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t18x/quill/kernel-dts/tegra186-quill-p3310-1000-a00-00-base.dtb
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t18x/quill/kernel-dts/tegra186-quill-p3310-1000-a00-00-ape-cam.dtb
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t18x/quill/kernel-dts/tegra186-quill-p3310-1000-a00-00-edp.dtb
...

instead of

DTC     arch/arm64/boot/dts/../../../../../../hardware/nvidia/platform/t18x/quill/kernel-dts/tegra186-quill-p3310-1000-a00-00-base.dtb   
...

The dots some how turned into letters, so eventually instead of going up the directory tree it created sub-directories by the name ddot

any suggestions?

ShaneCCC,

I saw that in a Makefile that the ddot was inserted intentionally, without understanding why I just left it and moved on.

I have finally succeed to compile a DT from source files (as opposed to from a de-compiled file source).

The terminal provides the following failure:

[    3.734225] ERROR: could not get clock /sound:clk_m(4)
[    3.734305] tegra-snd-t186ref-mobile-rt565x sound: Can't retrieve clk clk_m
[    3.734366] tegra-snd-t186ref-mobile-rt565x: probe of sound failed with error -2

This is the sound token from the DT:

tegra_sound: sound {
		compatible = "nvidia,tegra-audio-t186ref-mobile-rt565x";
		nvidia,model = "tegra-snd-t186ref-mobile-rt565x";
		nvidia,num-codec-link = <13>;
		nvidia,num-clk = <8>;
		nvidia,clk-rates = < 270950400  /* PLLA_x11025_RATE */
                                     11289600   /* AUD_MCLK_x11025_RATE */
                                     45158400   /* PLLA_OUT0_x11025_RATE */
                                     45158400   /* AHUB_x11025_RATE */
                                     245760000  /* PLLA_x8000_RATE */
                                     12288000   /* AUD_MCLK_x8000_RATE */
                                     49152000   /* PLLA_OUT0_x8000_RATE */
                                     49152000 >;/* AHUB_x8000_RATE */
		clocks = <&tegra_car TEGRA186_CLK_PLLP_OUT0>,
                        <&tegra_car TEGRA186_CLK_PLLA>,
                        <&tegra_car TEGRA186_CLK_PLL_A_OUT0>,
                        <&tegra_car TEGRA186_CLK_AHUB>,
                        <&tegra_car TEGRA186_CLK_CLK_M>,
                        <&tegra_car TEGRA186_CLK_AUD_MCLK>;
		clock-names = "pll_p_out1", "pll_a", "pll_a_out0", "ahub",
                                "clk_m", "extern1";
		resets = <&tegra_car TEGRA186_RESET_AUD_MCLK>;
		reset-names = "extern1_rst";
		
		nvidia,dai-link-1 {
            link-name = "ti-capture-z";
            cpu-dai = <0xcf>;
            codec-dai = <&aic32x4>;
            cpu-dai-name = "I2S1";
            codec-dai-name = "tlv320aic32x4-hifi";
         	tx-mask = <0xFF>;
          	rx-mask = <0xFF>;            
            format = "i2s";
            bitclock-slave;
            frame-slave;
            bitclock-noninversion;
            frame-noninversion;
            bit-format = "s16_le";
            bclk_ratio = <2>;
            srate = <44100>;
            num-channel = <2>;
            ignore_suspend;
            name-prefix = "z";
        };
        
		nvidia,dai-link-2 {
			link-name = "ti-playback-x";
			cpu-dai = <0xcf>;
     		codec-dai = <&aic32x4>;
          	cpu-dai-name = "I2S1";
         	codec-dai-name = "tlv320aic32x4-hifi";
         	tx-mask = <0xFF>;
          	rx-mask = <0xFF>;
         	format = "i2s";
          	bitclock-slave;
         	frame-slave;
         	bitclock-noninversion;
         	frame-noninversion;
         	bit-format = "s16_le";
         	bclk_ratio = <2>;
         	srate = <44100>;
         	num-channel = <2>;
        	ignore_suspend;
            name-prefix = "x";
		};
	};

any suggestions?
Thanks.

That’s strange, how do you apply your DTB? by flash the DTB partition? Did you see this message without any DTS modify?

ShaneCCC,

Nothing strange when you flash the correct DT…
I did not flash the correct DT. Once I have done it the following errors occurred:

[    3.640528] tegra-snd-t186ref-mobile-rt565x sound: ASoC: CPU DAI DAP not registered
[    3.640531] tegra-snd-t186ref-mobile-rt565x sound: snd_soc_register_card failed (-517)

what is this DAP that I did not provide.

Thanks.

@igal
Please check the troubleshooting of Tegra ASOC Driver in l4t document

External Media

ShaneCCC,
I have figured that the problem was in the definition within the DT - I have left there a phandle pointer which was not valid in the environment of the DT sources, so I have added a pointer to

cpu-dai=<&tegra_i2s1>

now I was informed by the code that the

ASoC: CODEC DAI tlv320aic32x4-hifi not registered

I think that I need to provide somewhere a structure which defines this CODEC DAI, though I’m not sure where…
I can see that the CODEC does registers but only 15 seconds later. Is there a way to make it register before the ASoC enumerations?

can you assist?

Thanks.

Hi Igal,

There error code …

[ 3.640531] tegra-snd-t186ref-mobile-rt565x sound: snd_soc_register_card failed (-517)

… is defined as follows …

#define EPROBE_DEFER 517 /* Driver requests probe retry */

This is a normal error and means that we were unable to complete the probe because something is missing not register yet (ie. the codec) and the kernel will retry the probe again later. So do you see the kernel attempt to probe the sound card again after the codec has registered?

Jon