Configure Tegra ASoC Driver for custom hardware with TI audio CODEC

I’ve been trying to get the Tegra ASoC Driver to work with the audio codec we’ve selected for our custom TX1 support board, the TLV320AIC3204 from Texus Instruments. The codec seems to be supported well enough in the kernel (sound/soc/codecs/tlv320aic32x4.c), and the ASoC driver seems to load the codec driver just fine.

The “tegra,audio,routing” bit also seems to work without complaints, which leaves at least one part left in the official documentation: the amixer magic. I’m not sure if what is described isn’t appropriate to my setup, but I’ve got nothing else to go on. I tried fiddling with it a bit, but couldn’t get any sound to come out. I also poked at the other 467 controls, but well, that’s kinda crazy.

Anyway, I’m hoping that someone else out there might have succeeded in setting up audio on their own hardware (w/o HDMI), and could advise. The official docs are full of information, but seem to be geared to someone who knows what they are looking for (or I’m just dumb).

Any advice could be helpful. If anyone knows how to get the full routing map, that would be particularly interesting to me. Or just pointing me at working examples that they found illustrative, if your own setup is secret, that’s fine too.

Thanks! The relevant part of my device tree is below.

/ {
        i2c@7000c000 {
                /* NEW - sound/soc/codecs/tlv320aic32x4.c */
                aic32x4: tlv320aic32x4@18 {
                        compatible = "ti,tlv320aic32x4";
                        reg = <0x18>;
                };
        };

        /* NEW */
        sound_ref {
                compatible = "nvidia,tegra-audio-t210ref";
                nvidia,model = "tegra-snd-t210ref";
                nvidia,num-codec-link = <1>;

                nvidia,audio-routing =
                        "Headphone-z",  "HPL",
                        "Headphone-z",  "HPR",
                        "IN1_L",        "LineIn-z",
                        "IN1_R",        "LineIn-z";

                nvidia,xbar = <&tegra_axbar>;

                nvidia,dai-link-1 {
                        /* see sound/soc/tegra-alt/tegra_t210ref_alt.c */
                        link-name = "ti-playback-z";
                        cpu-dai = <&tegra_i2s1>;
                        codec-dai = <&aic32x4>;
                        cpu-dai-name = "I2S1";
                        codec-dai-name = "tlv320aic32x4-hifi";
                        /* TODO: I'm not sure about the rest of these. */
                        tx-mask = <0xFF>;
                        rx-mask = <0xFF>;
                        format = "i2s";
                        bitclock-slave;
                        frame-slave;
                        bitclock-noninversion;
                        frame-noninversion;
                        bit-format = "s16_le";
                        bclk_ratio = <0>;
                        srate = <48000>;
                        num-channel = <2>;  /* max 2 input/output */
                };
        };
};

This is something I’ve found has helped in the past to indirectly find out more about audio settings…when I find it starts getting too complicated I install the “mumble” audio chat client (which uses pulse audio plus amixer), then plug in a common 7.1 surround sound audio head set. This chat client has the ability to detect and configure such a head set, and get audio working (you don’t even need to use it for chat). Once that is working you can save the mixer settings…if you saved settings prior to this, then you can see what changed. You may find that mumble is able to see or configure based on your audio hardware. Once this works with a head set you can be sure that many of the basic mixer settings are in place and it becomes easier to figure out the parts you were previously missing.

No good. I just get nothing or an error like the following. I’m guessing that I’ve more than mixer problems.

ALSAAudio: Non-critical: w=snd_pcm_writei(pcm_handle, outbuff, period_size): Broken pipe

There’s a section in the documentation describing part of the ASoC machine driver: “The machine driver creates three snd_soc_dai_links for each dai-link- node initialized in the DT file and appends them to XBAR DAI links using the utility API. It also initializes the .dai_ops for the ADMAIF interfaces accordingly as shown below.”

That part of the code looks for dai-links like “ad-playback-z” for the one built-in CODEC, which seems to require manual initialization. The CODEC I’m using seems to do this sort of thing automatically when probed via I2C (which does happen), so I assumed that I didn’t need to modify the driver. Maybe I’m wrong, so I’ll start poking at that, I guess.

I haven’t modified any C code yet to get the audio working, but maybe I need to. If anyone knows that I definitely need to do some mucking about in the code, please chime in.

Also, I had been wondering about the “Headphone-x”, “-y”, “-z”, “-s” names. The docs don’t explain if these are just candidate output devices or if they have some special meaning. Anyone know details here? Knowing what these were will probably help with the routing.

Hi actuated-man,

In your device tree, please add the following code snippet to make pins work on i2s not GPIO.

gpio@6000d000 {
    gpio_default: default {
        gpio-to-sfio = <8 9 10 11 216 219>;
    };
};

About ahub, below is a example to set ahub to “i2s1 <-> ADMAIF1” which means
the audio data flow does not pass to other components. and play a wav file via ADMAIF1 to i2s1 to your codec.

amixer -c 1 sset “ADMAIF1 Mux” “I2S1”
amixer -c 1 sset “I2S1 Mux” “ADMAIF1”
aplay -D hw:1,0 xxx.wav

Thanks, tedc. The gpio-to-sfio part makes sense, except that 219 (BB3) doesn’t seem to be powered when necessary. If I drop that in, the I get errors from alsactl init 1 which may be telling.

era-two$ ./mixer.sh 
Found hardware: "tegra-snd-t210r" "" "" "" ""
Hardware is initialized using a generic method
/usr/share/alsa/init/default:171: value write error: Remote I/O error
/usr/share/alsa/init/default:171: value write error: Remote I/O error
  Item0: 'I2S1'
  Item0: 'ADMAIF1'

If I keep BB3 as GPIO, and set it high myself, those errors go away (and the pin stays on). Alsactl still fails with code 99 for some other reason (its manual page suggests that the device is unknown, but it doesn’t print anything to that effect).

era-two$ ./mixer.sh 
Found hardware: "tegra-snd-t210r" "" "" "" ""
Hardware is initialized using a generic method
alsactl returned 99
  Item0: 'I2S1'
  Item0: 'ADMAIF1'

However in both cases, after applying those mixer settings you suggest, I get a few “device or resource busy” errors from aplay, but then it appears to play but nothing is heard.

era-two$ ./test.sh 
aplay: main:722: audio open error: Device or resource busy
era-two$ ./test.sh 
Playing WAVE 'sample.wav' : Signed 16 bit Little Endian, Rate 11025 Hz, Mono

I can read the AUDIO_MCLK (BB0) and I2S0_CLK (B3) at 20 MHz, but I can’t get a signal on the other I2S pins while running the speaker-test: LRCLK (B0), SDIN (B1), and SDOUT (B2). I’m guessing the audio data is not being routed to the CODEC for some reason.

The gpio-to-sfio part makes sense, except that 219 (BB3) doesn’t seem to be powered when necessary.
219(BB3) is GPIO_X1_AUD/AUD_RST and is used to reset codec. In your HW design, do you connect this pin to your codec?

I can read the AUDIO_MCLK (BB0) and I2S0_CLK (B3) at 20 MHz, but I can’t get a signal on the other I2S pins
while running the speaker-test: LRCLK (B0), SDIN (B1), and SDOUT (B2). I’m guessing the audio data is not
being routed to the CODEC for some reason.
AUDIO_MCLK and I2S0_SCLK work with signal output. But I2S0_LRCLK dose not have signal output. This is weird.
Because I2S0_SCLK and I2S0_LRCLK are in the same block and share same power(VDDIO_AUDIO_HV), they should continuously output signal when you “aplay” and power is turned on. I suspect there is a HW issue. Can you re-check the part of schematic related to the pin I2S0_LRCLK.

External Media

I’ve retraced all the connections, physically. BB3 (audio reset, pin F2) is connected correctly. The TX1 does not seem to power the pin ever (it’s supposed to be high normally; reset is low on the codec), even if I call amixer. Amixer fails because the device doesn’t respond, it’s reset.

If I use BB3 as GPIO, I can enable the codec, but the driver won’t be able to reset it (or it doesn’t try when I run amixer, at least).

I was mistaken about the clocks: I do not get a signal on B3 (I2S0_SCLK). So I guess if that is tied with B0 (I2S0_LRCLK), not getting a clock on either is consistent at least. I guess the VDDIO_AUDIO_HV power isn’t enabled; I’m not sure where that should be enabled.

Could you check if your device tree have a node like below to describe something about regulator.

153                 i2s@702d1000 {
154                         pinctrl-names = "dap_active", "dap_inactive";
155                         pinctrl-0 = <>;
156                         pinctrl-1 = <>;
157                         regulator-supplies = "vdd-1v8-audio-hv", "vdd-1v8-audio-hv-bias";
158                         <b>vdd-1v8-audio-hv-supply</b> = <&max77620_sd3>;
159                         <b>vdd-1v8-audio-hv-bias-supply</b> = <&max77620_sd3>;
160                 };

Could you check if the i2s0 in /sys/kernel/debug/clock/clock_tree is on or not when “aplay”.

pll_a                                 on     1   x7.3..   282239844
            pll_a_out0                         on     3   6.50     43421515
               extern1                         on     3   4.0      10855379
                  clk_out_1                    on     2   1.0      10855379
               d_audio                       $ on     2   1.0      43421515
                  vdd_core                                        800 mV
                  d_audio_slcg_ovr           $ off    0            43421515
               dmic3                           off    0   11.0     3947411
               dmic2                           off    0   11.0     3947411
               dmic1                           off    0   11.0     3947411
               spdif_out                     $ off    0   21.0     2067692
                  vdd_core                                        0 mV
               i2s4                            off    0   5.50     7894821
               i2s3                            off    0   5.50     7894821
               i2s1                            off    0   5.50     7894821
             <b>  i2s0                            on     1   31.0     1400695</b>
              *pll_a_out0_out_adsp             off    0   1.0      43421515

Could you share your kernel log(dmesg) which is after “aplay”.

Yes, we have that exact fragment in our device tree describing the audio regulators, under “ahub”. I can also confirm that it is enabled under /proc/device-tree/ahub/i2s@702d1000.

As to /sys/kernel/debug/clock/clock_tree, the i2s0 clock never seems to come on. I tried looping the audio with speaker-test, but never saw it. A few clocks do come on, and others change; I’ve attached a sample diff.

$ diff -u audio_off audio_on
--- audio_off	2016-09-14 15:30:36.014715605 +0000
+++ audio_on	2016-09-14 15:30:44.894621187 +0000
@@ -31,8 +31,7 @@
         *hsic_trk                              off    0   1.0      9600000   
       gpu_gate                                 off    0            38400000  
       xusb_gate                                on     1            38400000  
-      pll_mb                                   off    0   x41.6..  1600000000
-      pll_m                                    on     1   x27.7..  1065600000
+      pll_mb                                   on     1   x27.7..  1065600000
          emc                                 $ on     6   1.0      1065600000
             vdd_core                                              837 mV
             xusb.emc                         $ on     1            1065600000 (32000000 / 40000000+)
@@ -76,7 +75,8 @@
                mc_cbpa                       $ on     1   1.0      532800000 
                mc_capa                       $ on     1   1.0      532800000 
                mc_bbc                        $ on     1   1.0      532800000 
-      pll_ref                                  on     4   1.0      38400000  
+      pll_m                                    off    0   x17.3..  665600000 
+      pll_ref                                  on     5   1.0      38400000  
          gpu_ref                               off    0            38400000  
             gbus                             $ off    0   x2       76800000  
                vdd_gpu                                            820 mV
@@ -137,10 +137,10 @@
                   vdd_core                                        0 mV
               *dsia                          $ off    0   1.0      96000000  
                   vdd_core                                        0 mV
-         pll_a                                 off    0   x3.3..   128000000 
-            pll_a_out0                         off    0   5.50     23272728  
-               d_audio                       $ off    0   2.0      11636364  
-                  vdd_core                                        0 mV
+         pll_a                                 on     1   x3.3..   128000000 
+            pll_a_out0                         on     1   5.50     23272728  
+               d_audio                       $ on     2   2.0      11636364  
+                  vdd_core                                        800 mV
                   d_audio_slcg_ovr           $ off    0            11636364  
                dmic3                           off    0   11.0     2115703   
                dmic2                           off    0   11.0     2115703   
@@ -153,7 +153,7 @@
                i2s0                            off    0   10.50    2216451   
               *pll_a_out0_out_adsp             off    0   1.0      23272728  
            *pll_a_out_adsp                     off    0   1.0      128000000 
-         pll_p                                 on     14  x10.6..  408000000 
+         pll_p                                 on     15  x10.6..  408000000 
             tsec                             $ off    0   1.0      408000000 
                vdd_core                                           0 mV
               *tsec_skip                     $ on     0   1.0      408000000 
@@ -221,14 +221,14 @@
               *sata_slcg_ovr_ipfs            $ off    0            102000000 
               *sata_slcg_ovr_fpci            $ off    0            102000000 
                sata_aux                      $ off    0            102000000 
-            ape                              $ off    0   16.0     25500000  
-               vdd_core                                           0 mV
+            ape                              $ on     3   16.0     25500000  
+               vdd_core                                           800 mV
                ape_slcg_ovr                  $ off    0            25500000   (0)
                override.ape                  $ off    0            25500000   (408000000)
                cap.vcore.ape                 $ on     1            25500000   (408000000^)
-               xbar.ape                      $ off    0            25500000   (25500000)
+               xbar.ape                      $ on     1            25500000   (25500000)
                adsp.ape                      $ off    0            25500000   (25500000)
-               adma.ape                      $ off    0            25500000   (25500000)
+               adma.ape                      $ on     1            25500000   (25500000)
             mselect                          $ on     2   4.0      102000000 
                vdd_core                                           800 mV
                override.mselect              $ off    0            102000000  (408000000)
@@ -374,7 +374,7 @@
                   ispa_slcg_ovr              $ off    0            268800000 
                  *ispa_skip                  $ on     0   1.0      268800000 
            *pll_c_out1                         off    0   3.0      89600000  
-      clk_m                                    on     9   2.0      19200000  
+      clk_m                                    on     10  2.0      19200000  
         *dp2                                   off    0   1.0      19200000  
          afi                                   off    0   1.0      19200000  
          pcie                                  off    0   1.0      19200000  
@@ -409,7 +409,7 @@
         *vcp                                   off    0   1.0      19200000  
         *sata_cold                             off    0   1.0      19200000  
         *maud                                  off    0   2.0      9600000   
-         apb2ape                               off    0   1.0      19200000  
+         apb2ape                               on     1   1.0      19200000  
          i2s2                                  off    0   2.0      9600000   
          fuse_burn                             off    0   1.0      19200000  
          fuse                                  on     1   1.0      19200000
1 Like

Oh, and my kernel messages:

Initializing cgroup subsys cpu
Initializing cgroup subsys cpuacct
Linux version 3.10.67-era+ (eric@eric-thinkpad.local) (gcc version 5.3.1 20160113 (Linaro GCC 5.3-2016.02) ) #34 SMP PREEMPT Thu Sep 8 11:22:33 EDT 2016
CPU: Cortex A57 Processor [411fd071] revision 1
alternative: enabling workaround for ARM erratum 832075
Machine: Aevena ERA
bootconsole [earlycon0] enabled
Tegra reserved memory:
LP0:                    ff2bf000 - ff2bffff
Bootloader framebuffer: 00000000 - 00000000
Bootloader framebuffer2: 00000000 - 00000000
Framebuffer:            f6200000 - fa9fffff
2nd Framebuffer:        faa00000 - ff1fffff
Carveout:               00000000 - 00000000
Vpr:                    00000000 - 0b9fffff
Tsec:                   00000000 - 00000000
Bootloader Debug Data:  00000000 - 00000000
Nvdumper:               ff23f000 - ff23ffff
cma: CMA: reserved 188 MiB at ea400000
cma: CMA: reserved 16 MiB at e9400000
On node 0 totalpages: 1007616
  DMA32 zone: 6608 pages used for memmap
  DMA32 zone: 0 pages reserved
  DMA32 zone: 483328 pages, LIFO batch:31
  Normal zone: 7168 pages used for memmap
  Normal zone: 524288 pages, LIFO batch:31
psci: probing for conduit method from DT.
psci: PSCIv0.2 detected in firmware.
psci: Using standard PSCI v0.2 function IDs
DTS File Name: arch/arm64/boot/dts/tegra210-era.dts
DTB Build time: Sep 14 2016 13:17:31
Tegra21: Speedo/IDDQ fuse revision 4
Tegra21: CPU Speedo ID 7, Soc Speedo ID 0, Gpu Speedo ID 2
Tegra21: CPU Process ID 0, Soc Process ID 1, Gpu Process ID 0
Tegra21: CPU Speedo value 2103, Soc Speedo value 2006, Gpu Speedo value 2112
Tegra21: CPU IDDQ 2440, Soc IDDQ 2656, Gpu IDDQ 3495
Tegra Revision: A02 SKU: 0x17 CPU Process: 0 Core Process: 1
tegra: PLLP fixed rate: 408000000
pll_u: boot with h/w control already set
pll_x boot misc1 0x0 : expected 0x20
 (comparison mask = 0xffffff)
pll_c4 rates match 204000000 max sdmmc: vco=998400000 out0=998400000 out3=998400000
Lowering vic03 maximum rate from 1000000000 to 627200000
Lowering nvjpg maximum rate from 1000000000 to 627200000
Lowering se maximum rate from 1000000000 to 627200000
Lowering tsecb maximum rate from 1000000000 to 627200000
Lowering msenc maximum rate from 1000000000 to 716800000
Lowering nvdec maximum rate from 1000000000 to 716800000
Lowering vi maximum rate from 1000000000 to 793600000
Lowering isp maximum rate from 1000000000 to 793600000
Lowering adsp_bus maximum rate from 1200000000 to 844800000
Lowering sbus maximum rate from 600000000 to 408000000
Lowering host1x maximum rate from 600000000 to 408000000
Lowering pll_c maximum rate from 1200000000 to 1130000000
Lowering pll_c2 maximum rate from 1200000000 to 1130000000
Lowering pll_c3 maximum rate from 1200000000 to 1130000000
Lowering pll_d2 maximum rate from 1500000000 to 1130000000
Lowering pll_dp maximum rate from 1500000000 to 1130000000
Lowering sor0 maximum rate from 600000000 to 540000000
Lowering sor1 maximum rate from 600000000 to 594000000
Lowering dmic1 maximum rate from 12288000 to 12190000
Lowering dmic2 maximum rate from 12288000 to 12190000
Lowering dmic3 maximum rate from 12288000 to 12190000
Lowering hda maximum rate from 102000000 to 51000000
Lowering sdmmc2 maximum rate from 266000000 to 204000000
Lowering qspi maximum rate from 133000000 to 116600000
Lowering gbus maximum rate from 1300000000 to 998400000
Lowering cpu_g maximum rate from 3000000000 to 1734000000
Lowering cpu_lp maximum rate from 1350000000 to 1132800000
tegra dvfs: vdd_cpu: nominal 1226mV, offset 708000uV, step 19200uV, scaling enabled
tegra dvfs: vdd_core: nominal 1075mV, offset 0uV, step 12500uV, scaling enabled
tegra dvfs: vdd_gpu: nominal 1090mV, offset 710000uV, step 10000uV, scaling enabled
tegra_powergate_init: DONE
tegra21_plle_clk_enable: pll_e is already enabled
PERCPU: Embedded 13 pages/cpu @ffffffc03feb2000 s21504 r8192 d23552 u53248
pcpu-alloc: s21504 r8192 d23552 u53248 alloc=13*4096
pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3 
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 993840
Kernel command line: fbcon=map:0 console=tty0 console=ttyS0,115200n8 androidboot.modem=none androidboot.serialno=P2180A00P00940c003fd androidboot.security=non-secure tegraid=21.1.2.0.0 ddr_die=2048M@2048M ddr_die=2048M@4096M section=256M memtype=0 vpr_resize usb_port_owner_info=0 lane_owner_info=0 emc_max_dvfs=0 touch_id=0@63 video=tegrafb no_console_suspend=1 debug_uartport=lsport,0 earlyprintk=uart8250-32bit,0x70006000 maxcpus=4 usbcore.old_scheme_first=1 lp0_vec=0x1000@0xff2bf000 nvdumper_reserved=0xff23f000 core_edp_mv=1125 core_edp_ma=4000 gpt android.kerneltype=normal androidboot.touch_vendor_id=0 androidboot.touch_panel_id=63 androidboot.touch_feature=0 androidboot.bootreason=pmc:software_reset,pmic:0x0 root=/dev/mmcblk0p1 rw rootwait debug loglevel=7 log_buf_len=4M
log_buf_len: 4194304
early log buf free: 125116(95%)
PID hash table entries: 4096 (order: 3, 32768 bytes)
Dentry cache hash table entries: 524288 (order: 10, 4194304 bytes)
Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes)
Memory: 1888MB 2048MB = 3936MB total
Memory: 3733076k/3733076k available, 297388k reserved
Virtual kernel memory layout:
    vmalloc : 0xffffff8000000000 - 0xffffffbbffff0000   (245759 MB)
    vmemmap : 0xffffffbc01c00000 - 0xffffffbc05400000   (    56 MB)
    modules : 0xffffffbffc000000 - 0xffffffc000000000   (    64 MB)
    memory  : 0xffffffc000000000 - 0xffffffc100000000   (  4096 MB)
      .init : 0xffffffc001034000 - 0xffffffc00109f400   (   429 kB)
      .text : 0xffffffc000080000 - 0xffffffc0010331c4   ( 16077 kB)
      .data : 0xffffffc0010b3000 - 0xffffffc00125ffc0   (  1716 kB)
SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
Preemptible hierarchical RCU implementation.
	RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=4.
NR_IRQS:960 nr_irqs:960 0
the number of interrupt controllers found is 6
Architected local timer running at 19.20MHz (phys).
sched_clock: 56 bits at 19MHz, resolution 52ns, wraps every 3579139424256ns
Wake16 for irq=34
Wake16 for irq=34
Enabling wake16
Console: colour dummy device 80x25
console [tty0] enabled
Calibrating delay loop (skipped), value calculated using timer frequency.. lpj=192000
pid_max: default: 32768 minimum: 301
Security Framework initialized
Mount-cache hash table entries: 256
Initializing cgroup subsys debug
Initializing cgroup subsys freezer
hw perfevents: enabled with arm/armv8-pmuv3 PMU driver, 7 counters available
ftrace: Allocated trace_printk buffers
Brought up 4 CPUs
SMP: Total of 4 processors activated.
alternatives: patching kernel code
devtmpfs: initialized
pinctrl core: initialized pinctrl subsystem
regulator-dummy: ; Rail ON
Initializing plugin-manager
node /plugin-manager/p2180-1000-300@0 match with board 2180-1000-100
NET: Registered protocol family 16
DMA: preallocated 1024 KiB pool for atomic coherent allocations
console [pstore-1] enabled
ramoops: attached 0x200000@0xf6000000, ecc: 0/0
I2C first dynamic bus number based on alias = 7
cpuidle: using governor ladder
cpuidle: using governor menu
PMC: Setting PMIC interrupt active-low
tegra-pmc device create success
padctrl padctrl.0: Pad control driver tegra-pmc-padctrl registered
Clear bootloader IO dpd settings
PMC: configuring io pad defaults
PMC: IO pad audio voltage is 1800000
PMC: IO pad cam voltage is 1800000
PMC: IO pad dbg voltage is 1800000
PMC: IO pad dmic voltage is 1800000
PMC: IO pad pex-ctrl voltage is 1800000
PMC: IO pad spi voltage is 1800000
PMC: IO pad uart voltage is 1800000
PMC: IO pad bb voltage is 1800000
PMC: IO pad audio-hv voltage is 1800000
PMC: IO pad spi-hv voltage is 1800000
PMC: IO pad gpio voltage is 1800000
PMC: IO pad sdmmc3 voltage is 1800000
PMC: IO pad pex-bias power is disable
PMC: IO pad pex-clk1 power is disable
PMC: IO pad pex-clk2 power is disable
T210 pmc padctrl driver initialized
T210 pmc config for bootrom command passed
INFO: pinmux CLAMP_INPUTS_WHEN_TRISTATED: disabled
clk_init_from_dt_table: clocks are set from t210-clk-init-table:clkinit-0
tegra_smmu 70019000.iommu: Loaded Tegra IOMMU driver
platform bpmp.15: domain=ffffffc0ff050d98 allocates as[0]=ffffffc0ff1140a8
platform bpmp.15: IOVA linear map 0x00000000ff2c0000(40000)
bpmp bpmp.15: bpmp_connect returned 0
MC mapped MMIO address: 0xffffff800003a000
MC0 mapped MMIO address: 0xffffff8000072000
MC1 mapped MMIO address: 0xffffff8000098000
tegra210-pinctrl 700008d4.pinmux: lookup the user state drive not found
tegra210-pinctrl 700008d4.pinmux: Probed Tegra pinctrl driver
GPIO chip tegra-gpio: created GPIO range 0->245 ==> 700008d4.pinmux PIN 0->245
tegra-gpio 6000d000.gpio: Initialising GPIO state 0: name default
tegra-gpio 6000d000.gpio: Initialising GPIO state 1: name default
gpiochip_add: registered GPIOs 0 to 255 on device: tegra-gpio
Wake44 for irq=81
Wake40 for irq=53
Wake41 for irq=53
Wake42 for irq=53
Wake43 for irq=53
platform 70006000.serial: domain=ffffffc0ff0ed998 allocates as[0]=ffffffc0ff114110
platform sound_ref.18: domain=ffffffc0ff0edc18 allocates as[0]=ffffffc0ff114178
platform tegradc.1: domain=ffffffc0ff156018 allocates as[0]=ffffffc0ff1141e0
platform tegradc.1: IOVA linear map 0x00000000f6200000(4800000)
platform tegradc.1: IOVA linear map 0x00000000faa00000(4800000)
platform tegradc.1: IOVA linear map 0x00000000ea400000(bc00000)
platform gpu.0: domain=ffffffc0ff156198 allocates as[0]=ffffffc0ff114248
platform gpu.0: domain=ffffffc0ff156198 allocates as[1]=ffffffc0ff1142b0
platform gpu.0: domain=ffffffc0ff156198 allocates as[2]=ffffffc0ff114318
platform gpu.0: domain=ffffffc0ff156198 allocates as[3]=ffffffc0ff114380
platform sdhci-tegra.3: domain=ffffffc0ff156798 allocates as[0]=ffffffc0ff1143e8
platform sdhci-tegra.0: domain=ffffffc0ff156998 allocates as[0]=ffffffc0ff114450
Wake39 for irq=52
gpio wake52 for gpio=61
gpio wake8 for gpio=58
gpio wake8 for gpio=58
irq: no irq domain found for /soctherm@0x700E2000 !
irq: no irq domain found for /soctherm@0x700E2000 !
board_info: id:sku:fab:major:minor = 0x0884:0x03e8:0x00:0x00:0x00
PMC dt information non-NULL tegra_init_suspend
Loading EMC tables...
tegra: Using EMC sequence '21021' for Rev. 7 tables
tegra: emc: Derated table is valid.
Lowering emc maximum rate from 1800000000 to 1600000000
tegra: validated EMC DFS table
swapper/0 isomgr_init(): iso emc max clk=1600000KHz
swapper/0 isomgr_init(): max_iso_bw=11520000KB
vdso: 2 pages (1 code, 1 data) at base ffffffc0010ba000
vdso32: 2 pages (1 code, 1 data) at base ffffffc0010b9000
hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
nvdumper: last reboot was unknown
nvdumper: set_dirty_state 0x2badface
Tegra restart notifier registered.
bio: create slab <bio-0> at 0
vdd-ac-bat: 5000 mV ; Rail ON
vdd-cpu-fixed: 1000 mV ; Rail ON
vgaarb: loaded
SCSI subsystem initialized
libata version 3.00 loaded.
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
i2c i2c-0: of_i2c: modalias failure on /i2c@7000c000/icm20628@68
i2c i2c-0: of_i2c: modalias failure on /i2c@7000c000/ak8963@0d
i2c i2c-0: of_i2c: modalias failure on /i2c@7000c000/bmp280@77
i2c i2c-0: of_i2c: modalias failure on /i2c@7000c000/cm32180@48
i2c i2c-0: of_i2c: modalias failure on /i2c@7000c000/iqs263@44
gpio wake33 for gpio=188
i2c i2c-3: of_i2c: modalias failure on /i2c@7000c700/prod-settings
max77620 4-003c: CID0: 0xb3
max77620 4-003c: CID1: 0x0b
max77620 4-003c: CID2: 0x16
max77620 4-003c: CID3: 0x59
max77620 4-003c: CID4: 0x35
max77620 4-003c: CID5: 0x80
max77620 4-003c: MAX77620 PMIC OTP Version is 0x35
max77620-pmic max77620-pmic: Consumer c2 does not have device name
max77620-pmic max77620-pmic: Consumer c0 does not have device name
vdd_core: 600 <--> 1400 mV at 1000 mV with ramp delay 27500 uV/us ; Rail ON
vddio-ddr: at 1125 mV with ramp delay 27500 uV/us ; Rail ON
vdd-pre-reg: 1350 mV with ramp delay 27500 uV/us ; Rail ON
vdd-1v8: 1800 mV with ramp delay 27500 uV/us ; Rail ON
avdd-sys: 1200 mV with ramp delay 100000 uV/us ; Rail ON
avdd-sys: supplied by vdd-pre-reg
vdd-pex: 1050 mV with ramp delay 100000 uV/us ; Rail ON
vdd-pex: supplied by vdd-pre-reg
vddio-sdmmc1: 1800 <--> 3300 mV at 3300 mV with ramp delay 100000 uV/us ; Rail ON
vdd-cam-hv: 2800 mV with ramp delay 100000 uV/us ; Rail OFF
vdd-rtc: 850 mV with ramp delay 100000 uV/us ; Rail ON
avdd-ts-hv: 3300 mV with ramp delay 100000 uV/us ; Rail OFF
vdd-ts: 1800 mV with ramp delay 100000 uV/us ; Rail OFF
vdd-gen-pll-edp: 1050 mV with ramp delay 100000 uV/us ; Rail ON
vdd-gen-pll-edp: supplied by vdd-pre-reg
vdd-hdmi-dp: 1050 mV with ramp delay 100000 uV/us ; Rail ON
vdd-hdmi-dp: supplied by vdd-pre-reg
max77620-gpio max77620-gpio.0: Initialising GPIO state 1: name gpio_default
gpiochip_add: registered GPIOs 1016 to 1023 on device: max77620-gpio
max77620-gpio max77620-gpio.0: max77620 gpio successfully initialized
max77620 4-003c: max77620 probe successfully
Linux video capture interface: v2.00
pps_core: LinuxPPS API ver. 1 registered
pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
PTP clock support registered
Advanced Linux Sound Architecture Driver Initialized.
Bluetooth: Core ver 2.16
NET: Registered protocol family 31
Bluetooth: HCI device and connection manager initialized
Bluetooth: HCI socket layer initialized
Bluetooth: L2CAP socket layer initialized
Bluetooth: SCO socket layer initialized
vdd-3v3: 3300 mV ; Rail ON
max77620-gpio7: 1050 mV ; Rail ON
max77620-gpio7: supplied by vdd-gen-pll-edp
lcd-bl-en: 1800 mV ; Rail ON
en-vdd-sd: 3300 mV ; Rail OFF
en-vdd-sd: supplied by vdd-3v3
reg-fixed-sync-voltage 5.regulator: Consumer c1 does not have device name
platform 5.regulator: Driver reg-fixed-sync-voltage requests probe deferral
vdd-sys-boost: 5000 mV ; Rail ON
platform 7.regulator: Driver reg-fixed-sync-voltage requests probe deferral
aux-3v3: 3300 mV ; Rail ON
snsr_pm: 3300 mV ; Rail ON
vdd-disp-3v0: 3000 mV ; Rail ON
platform d.regulator: Driver reg-fixed-sync-voltage requests probe deferral
usb-vbus1: 5000 mV ; Rail OFF
usb-vbus1: supplied by vdd-3v3
usb-vbus3: 5000 mV ; Rail OFF
usb-vbus3: supplied by vdd-3v3
platform c9.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform ca.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform cb.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform cc.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform cd.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform ce.regulator: Driver reg-fixed-sync-voltage requests probe deferral
rtl-5v0: ; Rail OFF
en-usb-vbus2: ; Rail OFF
platform d1.regulator: Driver reg-fixed-sync-voltage requests probe deferral
regulator-pwm 0.pwm-regulator: PWM request deferred
platform 0.pwm-regulator: Driver regulator-pwm requests probe deferral
vdd_gpu: applied init 1000000uV constraint
vdd_gpu: 710 <--> 1320 mV at 1000 mV ; Rail OFF
vdd_cpu: applied init 1000000uV constraint
vdd_cpu: 708 <--> 1322 mV at 1000 mV normal ; Rail ON
gpio wake34 for gpio=200
extcon-gpio-states 1.extcon: Cable state 0
Switching to clocksource arch_sys_counter
No Device Node present for smmu client: tegra-carveouts !!
No Device Node present for smmu client: tegra-carveouts !!
nvmap_heap_init: nvmap_heap_init: created heap block cache
No Device Node present for smmu client: tegra-carveouts !!
dma_declare_coherent_resizable_cma_memory:278: resizable heap=vpr, base=0x0x00000000ea400000, size=0xbc00000
 dma-vpr: heap size is not multiple of cma_chunk_size heap_info->num_chunks (6) rem_chunk_size(0x1c00000)
cma: enabled page replacement for spfn=ea400, epfn=f6000
dma_declare_coherent_resizable_cma_memory:325: resizable cma heap=vpr create successful
nvmap_page_pool_init: Total RAM pages: 985493
nvmap_page_pool_init: nvmap page pool size: 123186 pages (481 MB)
nvmap_background_zero_thread: PP zeroing thread starting.
misc nvmap: iram :dma coherent mem declare 0x0000000040001000,258048
misc nvmap: created heap iram base 0x0000000040001000 size (252KiB)
misc nvmap: created heap vpr base 0x00000000ea400000 size (192512KiB)
nvmap:inner cache maint threshold=2097152
No Device Node present for smmu client: tegra-carveouts !!
Wake39 for irq=52
tegra-otg tegra-otg: otg transceiver registered
thermal thermal_zone0: Registering thermal zone thermal_zone0 for type AO-therm
thermal thermal_zone1: Registering thermal zone thermal_zone1 for type CPU-therm
thermal thermal_zone2: Registering thermal zone thermal_zone2 for type GPU-therm
thermal thermal_zone3: Registering thermal zone thermal_zone3 for type PLL-therm
thermal thermal_zone4: Registering thermal zone thermal_zone4 for type PMIC-Die
thermal thermal_zone5: Registering thermal zone thermal_zone5 for type Tdiode_tegra
thermal thermal_zone6: Registering thermal zone thermal_zone6 for type Tboard_tegra
tegra21_plle_clk_enable: pll_e hw sequencer is already on
t210_sata_uphy_pll_init: init sata uphy pll
t210_sata_uphy_pll_init SATA uses SATA Lane
tegra_xusb_padctl_phy_enable: pex uphy already enabled
tegra210-pmc-iopower pmc-iopower.20: Rail iopower-sys is having fixed voltage 1800000
tegra210-pmc-iopower pmc-iopower.20: Rail iopower-uart is having fixed voltage 1800000
tegra210-pmc-iopower pmc-iopower.20: Rail iopower-audio is having fixed voltage 1800000
tegra210-pmc-iopower pmc-iopower.20: Rail iopower-cam is having fixed voltage 1800000
tegra210-pmc-iopower pmc-iopower.20: Rail iopower-pex-ctrl is having fixed voltage 1800000
tegra210-pmc-iopower pmc-iopower.20: Rail iopower-sdmmc1 is having voltages: 1800000:3300000
tegra210-pmc-iopower pmc-iopower.20: Rail iopower-sdmmc3 is having fixed voltage 1800000
tegra210-pmc-iopower pmc-iopower.20: Rail iopower-sdmmc4 is having fixed voltage 1800000
tegra210-pmc-iopower pmc-iopower.20: Rail iopower-audio-hv is having fixed voltage 1800000
tegra210-pmc-iopower pmc-iopower.20: Rail iopower-debug is having fixed voltage 1800000
tegra210-pmc-iopower pmc-iopower.20: Rail iopower-dmic is having fixed voltage 1800000
tegra210-pmc-iopower pmc-iopower.20: Rail iopower-gpio is having fixed voltage 1800000
tegra210-pmc-iopower pmc-iopower.20: Rail iopower-spi is having fixed voltage 1800000
tegra210-pmc-iopower pmc-iopower.20: Rail iopower-spi-hv is having fixed voltage 1800000
tegra210-pmc-iopower pmc-iopower.20: Rail iopower-sdmmc2 is having fixed voltage 1800000
tegra210-pmc-iopower pmc-iopower.20: Rail iopower-dp is having fixed voltage 1800000
tegra210-pmc-iopower pmc-iopower.20: NO_IO_POWER setting 0x0
NET: Registered protocol family 2
TCP established hash table entries: 32768 (order: 7, 524288 bytes)
TCP bind hash table entries: 32768 (order: 7, 524288 bytes)
TCP: Hash tables configured (established 32768 bind 32768)
TCP: reno registered
UDP hash table entries: 2048 (order: 4, 65536 bytes)
UDP-Lite hash table entries: 2048 (order: 4, 65536 bytes)
NET: Registered protocol family 1
RPC: Registered named UNIX socket transport module.
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
RPC: Registered tcp NFSv4.1 backchannel transport module.
PCI: CLS 0 bytes, default 64
tegra-fuse tegra-fuse: Fuse driver initialized succesfully
host1x host1x: initialized
NTFS driver 2.1.30 [Flags: R/O].
fuse init (API version 7.22)
msgmni has been set to 7699
io scheduler noop registered (default)
Tegra cpuquiet initialized: disabled
tegra-pcie 1003000.pcie-controller: PCIE: Enable power rails
tegra-pcie 1003000.pcie-controller: probing port 0, using 4 lanes and lane map as 0x14
tegra-pcie 1003000.pcie-controller: probing port 1, using 1 lanes and lane map as 0x14
tegra-pcie 1003000.pcie-controller: link 0 down, retrying
tegra-pcie 1003000.pcie-controller: link 0 down, retrying
tegra-pcie 1003000.pcie-controller: link 0 down, retrying
tegra-pcie 1003000.pcie-controller: link 0 down, ignoring
tegra-pcie 1003000.pcie-controller: link 1 down, retrying
tegra-pcie 1003000.pcie-controller: link 1 down, retrying
tegra-pcie 1003000.pcie-controller: link 1 down, retrying
tegra-pcie 1003000.pcie-controller: link 1 down, ignoring
tegra-pcie 1003000.pcie-controller: PCIE: no ports detected
tegra-pcie 1003000.pcie-controller: PCIE: Disable power rails
tsec tsec: initialized
tsec tsecb: initialized
nvdec nvdec: initialized
falcon vic03: initialized
falcon msenc: initialized
falcon nvjpg: initialized
tegradc tegradc.1: Display dc.54240000 registered with id=0
display board info: id 0x0, fab 0x0
panel_select fail by _node_status
can not determine display type
parse_dc_out_type err
tegra_camera_platform tegra-camera-platform.37: tegra_camera_probe:camera_platform_driver probe
tegra-apbdma tegra-apbdma: Tegra20 APB DMA driver register 32 channels
tegra-adma tegra210-adma: Tegra210 ADMA driver register 10 channels
Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
No Device Node present for smmu client: serial8250 !!
No Device Node present for smmu client: serial8250 !!
No Device Node present for smmu client: serial8250 !!
No Device Node present for smmu client: serial8250 !!
of_serial 70006000.serial: RX periodic polling enabled
70006000.serial: ttyS0 at MMIO 0x70006000 (irq = 68) is a Tegra
console [ttyS0] enabled, bootconsole disabled
70006040.serial: ttyTHS1 at MMIO 0x70006040 (irq = 69) is a SERIAL_TEGRA
70006200.serial: ttyTHS2 at MMIO 0x70006200 (irq = 78) is a SERIAL_TEGRA
serial-tegra 70006300.serial: RX in PIO mode
70006300.serial: ttyTHS3 at MMIO 0x70006300 (irq = 122) is a SERIAL_TEGRA
brd: module loaded
loop: module loaded
zram: Created 1 device(s) ...
nct1008_nct72 0-004c: find device tree node, parsing dt
nct1008_nct72 0-004c: starting parse dt
nct1008_nct72 0-004c: success parsing dt
nct1008_nct72 0-004c: success in enabling rail vdd_nct72
NCT72: Enabled overheat logging at 104.00C
gpio wake33 for gpio=188
nct1008_nct72 0-004c: nct1008_probe: initialized
THERMAL EST start of therm_fan_est_probe.
THERMAL EST: found 2 subdevs
THERMAL EST name: thermal-fan-est.
THERMAL EST num_resources: 0
[THERMAL EST subdev 0]
THERMAL EST subdev name: CPU-therm
THERMAL EST index 0 coeffs 50
THERMAL EST index 1 coeffs 0
THERMAL EST index 2 coeffs 0
THERMAL EST index 3 coeffs 0
THERMAL EST index 4 coeffs 0
THERMAL EST index 5 coeffs 0
THERMAL EST index 6 coeffs 0
THERMAL EST index 7 coeffs 0
THERMAL EST index 8 coeffs 0
THERMAL EST index 9 coeffs 0
[THERMAL EST subdev 1]
THERMAL EST subdev name: GPU-therm
THERMAL EST index 0 coeffs 50
THERMAL EST index 1 coeffs 0
THERMAL EST index 2 coeffs 0
THERMAL EST index 3 coeffs 0
THERMAL EST index 4 coeffs 0
THERMAL EST index 5 coeffs 0
THERMAL EST index 6 coeffs 0
THERMAL EST index 7 coeffs 0
THERMAL EST index 8 coeffs 0
THERMAL EST index 9 coeffs 0
THERMAL EST index 0: trip_temp 0, hyst 0
THERMAL EST index 1: trip_temp 51000, hyst 15000
THERMAL EST index 2: trip_temp 61000, hyst 9000
THERMAL EST index 3: trip_temp 71000, hyst 9000
THERMAL EST index 4: trip_temp 82000, hyst 10000
THERMAL EST index 5: trip_temp 140000, hyst 0
THERMAL EST index 6: trip_temp 150000, hyst 0
THERMAL EST index 7: trip_temp 160000, hyst 0
THERMAL EST index 8: trip_temp 170000, hyst 0
THERMAL EST index 9: trip_temp 180000, hyst 0
THERMAL EST index 0: trip_temps_hyst 0
THERMAL EST index 1: trip_temps_hyst 36000
THERMAL EST index 2: trip_temps_hyst 51000
THERMAL EST index 3: trip_temps_hyst 52000
THERMAL EST index 4: trip_temps_hyst 61000
THERMAL EST index 5: trip_temps_hyst 62000
THERMAL EST index 6: trip_temps_hyst 71000
THERMAL EST index 7: trip_temps_hyst 72000
THERMAL EST index 8: trip_temps_hyst 82000
THERMAL EST index 9: trip_temps_hyst 140000
THERMAL EST index 10: trip_temps_hyst 140000
THERMAL EST index 11: trip_temps_hyst 150000
THERMAL EST index 12: trip_temps_hyst 150000
THERMAL EST index 13: trip_temps_hyst 160000
THERMAL EST index 14: trip_temps_hyst 160000
THERMAL EST index 15: trip_temps_hyst 170000
THERMAL EST index 16: trip_temps_hyst 170000
THERMAL EST index 17: trip_temps_hyst 180000
THERMAL EST index 18: trip_temps_hyst 180000
THERMAL EST index 19: trip_temps_hyst 0
THERMAL EST index 20: trip_temps_hyst 0
THERMAL EST init dev[0] temp hist to 25000
THERMAL EST init dev[1] temp hist to 25000
THERMAL EST cdev_type: pwm-fan.
THERMAL EST governor name: pid_thermal_gov
thermal thermal_zone7: Registering thermal zone thermal_zone7 for type thermal-fan-est.38
THERMAL EST: thz register success.
THERMAL EST: end of probe, return err: 0
tegra_profiler: Branch: Dev
tegra_profiler: Version: 1.104
tegra_profiler: Samples version: 34
tegra_profiler: IO version: 18
armv8_pmu: imp: 0x41, idcode: 0x1
armv8_pmu: arch: AA64 PmuV3 ARM CORTEX-A57, type: 5, ver: 0
tegra_profiler: auth: init
GPS: mt3332_gps_mod_init: platform_driver_register ret = 0
tegra-sata tegra-sata.0: version 1.0
t210_sata_uphy_pll_init: sata uphy already enabled
tegra-sata tegra-sata.0: AHCI 0001.0301 32 slots 2 ports 3 Gbps 0x1 impl TEGRA-SATA mode
tegra-sata tegra-sata.0: flags: 64bit ncq sntf pm led pmp pio slum part sadm apst 
Rounding down aligned max_sectors from 4294967295 to 4294967288
spi-tegra114 7000d400.spi: Static pin configuration used
spi-tegra114 7000da00.spi: Static pin configuration used
tun: Universal TUN/TAP device driver, 1.6
tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com>
e1000e: Intel(R) PRO/1000 Network Driver - 2.3.2-k
e1000e: Copyright(c) 1999 - 2013 Intel Corporation.
PPP generic driver version 2.4.2
PPP BSD Compression module registered
PPP Deflate Compression module registered
PPP MPPE Compression module registered
NET: Registered protocol family 24
usbcore: registered new interface driver r8152
usbcore: registered new interface driver asix
usbcore: registered new interface driver ax88179_178a
usbcore: registered new interface driver cdc_ether
usbcore: registered new interface driver smsc95xx
usbcore: registered new interface driver net1080
usbcore: registered new interface driver cdc_subset
usbcore: registered new interface driver zaurus
usbcore: registered new interface driver cdc_ncm
ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
ehci-pci: EHCI PCI platform driver
tegra_xusb_read_usb_calib: usb_calib0 = 0x08a2840e
tegra-xhci tegra-xhci: XUSB device id = 0xfac (T210)
usb_calib0 = 0x08a2840e
usb_calib_ext = 0x00000004
usb_calib0 = 0x08a2840e
usb_calib_ext = 0x00000004
usb_calib0 = 0x08a2840e
usb_calib_ext = 0x00000004
xusb_prod port0 RX_CTLE = 0xfc
xusb_prod port0 RX_DFE = 0xc0077f1f
xusb_prod port0 RX_CDR_CTRL = 0x1c7
xusb_prod port0 RX_EQ_CTRL_H = 0xfcf01368
xusb_prod port1 RX_CTLE = 0xfc
xusb_prod port1 RX_DFE = 0xc0077f1f
xusb_prod port1 RX_CDR_CTRL = 0x1c7
xusb_prod port1 RX_EQ_CTRL_H = 0xfcf01368
usbcore: registered new interface driver cdc_acm
cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
usbcore: registered new interface driver cdc_wdm
usbcore: registered new interface driver usb-storage
usbcore: registered new interface driver usbserial
usbcore: registered new interface driver ftdi_sio
usbserial: USB Serial support registered for FTDI USB Serial Device
usbcore: registered new interface driver option
usbserial: USB Serial support registered for GSM modem (1-port)
usbcore: registered new interface driver pl2303
usbserial: USB Serial support registered for pl2303
usbcore: registered new interface driver nvshieldled
Nvidia Tegra High-Speed USB Device Controller driver (Apr 30, 2012)
tegra USB phy - inst[0] platform info:
port_otg: yes
has_hostpc: yes
phy_interface: USB_PHY_INTF_UTMI
op_mode: TEGRA_USB_OPMODE_DEVICE
qc2_voltage: 0
vbus_pmu_irq: 0
charging: enabled
remote_wakeup: disabled
regulator_get() failed for (tegra-udc.0,usb_bat_chg), -19
tegra-udc tegra-udc.0: usb_bat_chg regulator not registered: USB charging will not be enabled
mousedev: could not register psaux device, error: -16
mousedev: PS/2 mouse device common for all mice
usbcore: registered new interface driver xpad
usbcore: registered new interface driver usb_acecad
usbcore: registered new interface driver aiptek
usbcore: registered new interface driver gtco
usbcore: registered new interface driver hanwang
usbcore: registered new interface driver kbtab
usbcore: registered new interface driver wacom
max77620-rtc max77620-rtc.1: rtc core: registered max77620-rtc as rtc0
Wake51 for irq=118
Enabling wake51
i2c /dev entries driver
i2c i2c-6: of_i2c: modalias failure on /i2c@546c0000/tca6408@21
virtual_init
[IMX135] sensor driver loading
[imx132] sensor driver loading
[ar0261] sensor driver loading
ov7695 sensor driver loading
mt9m114 sensor driver loading
pcl-generic pcl-generic: virtual_chip_add
ov5693 6-0036: Dev node doesn't have vana supply props
------------[ cut here ]------------
usbcore: registered new interface driver uvcvideo
USB Video Class driver (1.1.1)
WARNING: at drivers/regulator/core.c:1548 regulator_dev_lookup+0x184/0x1fc()
max77620-power-off max77620-power-off.4: Event recorder REG_NVERC : 0x0
Modules linked in:
CPU: 0 PID: 4 Comm: kworker/0:0 Not tainted 3.10.67-era+ #34
Workqueue: events camera_auto_detect
Call trace:
[<ffffffc000089ce0>] dump_backtrace+0x0/0xf4
[<ffffffc000089fd0>] show_stack+0x10/0x1c
[<ffffffc0002f5b94>] dump_stack+0x1c/0x28
[<ffffffc0000a4c38>] warn_slowpath_common+0x74/0x9c
[<ffffffc0000a4d20>] warn_slowpath_null+0x14/0x20
[<ffffffc000416b50>] regulator_dev_lookup+0x180/0x1fc
[<ffffffc000416f1c>] _regulator_get+0x6c/0x1d0
[<ffffffc00041708c>] regulator_get+0xc/0x18
[<ffffffc000417878>] devm_regulator_get+0x3c/0x88
[<ffffffc0006d61ac>] ov5693_regulator_get+0x2c/0xbc
[<ffffffc0006d7cc4>] ov5693_pm_init+0x28/0x64
[<ffffffc0006d7f48>] ov5693_probe+0x248/0x3ac
[<ffffffc00068a268>] i2c_device_probe+0xb0/0xfc
[<ffffffc0004c7940>] really_probe+0x11c/0x2c8
[<ffffffc0004c7be0>] driver_probe_device+0x74/0xa4
[<ffffffc0004c7c48>] __device_attach+0x38/0x48
[<ffffffc0004c5c2c>] bus_for_each_drv+0x4c/0x90
[<ffffffc0004c77f4>] device_attach+0x68/0x98
[<ffffffc0004c6c14>] bus_probe_device+0x2c/0xac
[<ffffffc0004c4ab4>] device_add+0x1e4/0x374
[<ffffffc0004c4c5c>] device_register+0x18/0x28
[<ffffffc00068a81c>] i2c_new_device+0x134/0x1c0
[<ffffffc0006dba64>] camera_add_dev_drv+0xdc/0x13c
[<ffffffc0006dd424>] camera_add_drv_by_module+0xc0/0x110
[<ffffffc0006b7dac>] camera_auto_detect+0x228/0x644
[<ffffffc0000c7864>] process_one_work+0x270/0x430
[<ffffffc0000c81d8>] worker_thread+0x184/0x2a4
[<ffffffc0000cf5b0>] kthread+0xbc/0xc8
---[ end trace 04ec055213d7c3ad ]---
FAN: coudln't get the regulator
ov5693 6-0036: ov5693_regulator_get vif ERR: fffffffffffffdfb
tegra_aotag tegra-aotag.21: AOTAG probe started
tegra_aotag tegra-aotag.21: nominal ft -- 105
tegra_aotag tegra-aotag.21: tall -- 76
tegra_aotag tegra-aotag.21: tiddq -- 1
tegra_aotag tegra-aotag.21: ten-count -- 16
tegra_aotag tegra-aotag.21: tsample -- 9
tegra_aotag tegra-aotag.21: pdiv -- 8
tegra_aotag tegra-aotag.21: nominal cp -- 25
tegra_aotag tegra-aotag.21: pdiv-ate -- 8
tegra_aotag tegra-aotag.21: tsamp-ate -- 39
tegra_aotag tegra-aotag.21: compensation A,B -- 10632,-67490
tegra_aotag tegra-aotag.21: sensor found :ID 0, Name: aotag0
tegra_aotag tegra-aotag.21: reading fuse value for sensor 0
tegra_aotag tegra-aotag.21: base-cp:220 shifted-cp:2
tegra_aotag tegra-aotag.21: base-ft:4a7 shifted-ft:0
tegra_aotag tegra-aotag.21: actual_aotag_cp 260, ft 1050
tegra_aotag tegra-aotag.21: - Tsens calib value - 0x3c2fe17
tegra_aotag tegra-aotag.21: CPmask 1fff FTmask 3ffe000
tegra_aotag tegra-aotag.21: Tsense calib CP - 0x1e17
tegra_aotag tegra-aotag.21: Tsense Actual CP d.34327
tegra_aotag tegra-aotag.21: Tsense calib FT - 0x1e17
tegra_aotag tegra-aotag.21: Tsense Actual FT d.37623
tegra_aotag tegra-aotag.21: delta ts 3296, temp 790
tegra_aotag tegra-aotag.21: thermA-903, thermB--853
tegra_aotag tegra-aotag.21: Registering sensor 0
tegra_aotag tegra-aotag.21: Bound to TZ : ID 0
tegra_aotag tegra-aotag.21: shutdown temperature - 55
tegra_aotag tegra-aotag.21: AOTAG EN 60
tegra_aotag tegra-aotag.21: Probe done [SUCCESS]:0
md: raid0 personality registered for level 0
device-mapper: uevent: version 1.0.3
device-mapper: ioctl: 4.24.0-ioctl (2013-01-15) initialised: dm-devel@redhat.com
Tegra210 cpuidle driver
sdhci: Secure Digital Host Controller Interface driver
sdhci: Copyright(c) Pierre Ossman
sdhci-pltfm: SDHCI platform and OF driver helper
mmc0: sdhci_tegra_probe line=5655 runtime pm type=mmc rtpm coupled with clock gate, disable-clock-gate=0
sdhci-tegra sdhci-tegra.3: Parent select= pll_p rate=408000000
sdhci-tegra sdhci-tegra.3: Parent select= pll_c4_out2 rate=199680000
sdhci-tegra sdhci-tegra.3: Speedo value 2006
sdhci-tegra sdhci-tegra.3: Tuning constraints: nom_mv 1075, boot_mv 1075, min_or_mv 0
regulator_get() failed for (sdhci-tegra.3,vqmmc), -19
mmc0: no vqmmc regulator found
regulator_get() failed for (sdhci-tegra.3,vmmc), -19
mmc0: no vmmc regulator found
mmc0: SDHCI controller on sdhci-tegra.3 [sdhci-tegra.3] using ADMA
mmc1: sdhci_tegra_probe line=5655 runtime pm type=mmc rtpm coupled with clock gate, disable-clock-gate=0
sdhci-tegra sdhci-tegra.1: Parent select= pll_p rate=408000000
sdhci-tegra sdhci-tegra.1: Speedo value 2006
sdhci-tegra sdhci-tegra.1: Tuning constraints: nom_mv 1075, boot_mv 1075, min_or_mv 0
regulator_get() failed for (sdhci-tegra.1,vqmmc), -19
mmc1: no vqmmc regulator found
regulator_get() failed for (sdhci-tegra.1,vmmc), -19
mmc1: no vmmc regulator found
mmc1: SDHCI controller on sdhci-tegra.1 [sdhci-tegra.1] using ADMA
mmc2: sdhci_tegra_probe line=5655 runtime pm type=mmc rtpm coupled with clock gate, disable-clock-gate=0
sdhci-tegra sdhci-tegra.0: Parent select= pll_p rate=408000000
sdhci-tegra sdhci-tegra.0: Speedo value 2006
sdhci-tegra sdhci-tegra.0: Tuning constraints: nom_mv 1075, boot_mv 1075, min_or_mv 0
regulator_get() failed for (sdhci-tegra.0,vqmmc), -19
mmc2: no vqmmc regulator found
regulator_get() failed for (sdhci-tegra.0,vmmc), -19
mmc2: no vmmc regulator found
mmc0: BKOPS_EN bit is not set
mmc2: SDHCI controller on sdhci-tegra.0 [sdhci-tegra.0] using ADMA
gpio wake35 for gpio=201
tegra-se tegra21-se: tegra_se_probe: complete
hidraw: raw HID events driver (C) Jiri Kosina
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
tegra_bootloader_debug: Created tegra_bootloader directory
tegra_bootloader_debug: Created sysfs interface tegra_bootloader_verify_regs in tegra_bootloader directory
tegra_bootloader_debug: Created sysfs interface tegra_bootloader_prof in tegra_bootloader directory
nvadsp 702ef000.adsp: in probe()...
nvadsp 702ef000.adsp: AMC/ARAM initialized.
nvadsp 702ef000.adsp: nvadsp_app_module_probe
tegra_throttle : init passed
cpu-tegra: init EDP limit: 1224 MHz
pll_x: not ready for dynamic ramp to 614400000
pll_x: not ready for dynamic ramp to 614400000
mmc0: tap value and tuning window after hw tuning completion ...
mmc0: tuning_window[0]: 0xffffffff
mmc0: tuning_window[1]: 0xffffffc7
mmc0: tuning_window[2]: 0xffffc7ff
mmc0: tuning_window[3]: 0x7f8fffff
mmc0: tuning_window[4]: 0x0
mmc0: tuning_window[5]: 0x0
mmc0: tuning_window[6]: 0x0
mmc0: tuning_window[7]: 0x0
sdhci: Tap value: 96 | Trim value: 8
sdhci: SDMMC Interrupt status: 0x00040000
mmc0: switch to HS400 mode is successful
mmc0: new HS400 MMC card at address 0001
mmcblk0: mmc0:0001 016G32 14.6 GiB 
mmcblk0rpmb: mmc0:0001 016G32 partition 3 4.00 MiB
 mmcblk0: p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 p16 p17 p18
mmc1: queuing unknown CIS tuple 0x80 (5 bytes)
soctherm: skipping sensor 4 programming
soctherm: skipping sensor 5 programming
usbcore: registered new interface driver snd-usb-audio
No Device Node present for smmu client: snd-soc-dummy !!
No Device Node present for smmu client: snd-soc-dummy !!
No Device Node present for smmu client: snd-soc-dummy !!
No Device Node present for smmu client: snd-soc-dummy !!
tegra210-i2s tegra210-i2s.0: Missing prop fsync-width for I2S0
tegra210-i2s tegra210-i2s.2: Missing prop fsync-width for I2S2
tegra210-i2s tegra210-i2s.3: Missing prop fsync-width for I2S3
tegra210-i2s tegra210-i2s.4: Missing prop fsync-width for I2S4
OPE platform probe
OPE platform probe successful
OPE platform probe
OPE platform probe successful
tegra210_adsp_audio_platform_probe: platform probe started
tegra210-adsp adsp_audio.3: Default param-type to BYTE for mp3-dec1
tegra210-adsp adsp_audio.3: Default param-type to BYTE for spkprot
tegra210-adsp adsp_audio.3: Default param-type to BYTE for src
tegra210-adsp adsp_audio.3: Default param-type to BYTE for aac-dec1
mmc1: tap value and tuning window after hw tuning completion ...
mmc1: tuning_window[0]: 0xe3ffffff
mmc1: tuning_window[1]: 0x7fffffff
mmc1: tuning_window[2]: 0xfffffffc
mmc1: tuning_window[3]: 0x7fffffcf
mmc1: tuning_window[4]: 0x0
mmc1: tuning_window[5]: 0x0
mmc1: tuning_window[6]: 0x0
mmc1: tuning_window[7]: 0x0
sdhci: Tap value: 45 | Trim value: 8
sdhci: SDMMC Interrupt status: 0x00040000
mmc1: queuing unknown CIS tuple 0x91 (3 bytes)
mmc1: new ultra high speed SDR104 SDIO card at address 0001
tegra210_adsp_audio_platform_probe probe successfull.
tegra-snd-t210ref sound_ref.18: ASoC: CODEC (null) not registered
tegra-snd-t210ref sound_ref.18: snd_soc_register_card failed (-517)
platform sound_ref.18: Driver tegra-snd-t210ref requests probe deferral
GACT probability NOT on
Mirror/redirect action on
u32 classifier
    Actions configured
Netfilter messages via NETLINK v0.30.
nf_conntrack version 0.5.0 (16384 buckets, 65536 max)
ctnetlink v0.93: registering with nfnetlink.
NF_TPROXY: Transparent proxy support initialized, version 4.1.0
NF_TPROXY: Copyright (c) 2006-2007 BalaBit IT Ltd.
xt_time: kernel timezone is -0000
ipip: IPv4 over IPv4 tunneling driver
ip_tables: (C) 2000-2006 Netfilter Core Team
arp_tables: (C) 2002 David S. Miller
TCP: cubic registered
Initializing XFRM netlink socket
NET: Registered protocol family 10
mip6: Mobile IPv6
ip6_tables: (C) 2000-2006 Netfilter Core Team
sit: IPv6 over IPv4 tunneling driver
NET: Registered protocol family 17
NET: Registered protocol family 15
Bluetooth: HIDP (Human Interface Emulation) ver 1.2
Bluetooth: HIDP socket layer initialized
NET: Registered protocol family 35
Key type dns_resolver registered
NET: Registered protocol family 41
Registering SWP/SWPB emulation handler
isp isp.0: initialized
isp isp.1: initialized
vdd_gpu: disabling
usb-vbus3: disabling
usb-vbus1: disabling
vdd-disp-3v0: disabling
snsr_pm: disabling
aux-3v3: disabling
en-vdd-sd: disabling
lcd-bl-en: disabling
max77620-gpio7: disabling
vdd-cpu-fixed: disabling
regulator-dummy: disabling
reg-fixed-sync-voltage 5.regulator: Consumer c1 does not have device name
platform 5.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform 7.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform d.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform c9.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform ca.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform cb.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform cc.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform cd.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform ce.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform d1.regulator: Driver reg-fixed-sync-voltage requests probe deferral
tegra-snd-t210ref sound_ref.18: ASoC: CODEC (null) not registered
tegra-snd-t210ref sound_ref.18: snd_soc_register_card failed (-517)
platform sound_ref.18: Driver tegra-snd-t210ref requests probe deferral
gpio wake24 for gpio=189
gpio wake27 for gpio=192
gpio wake25 for gpio=190
input: gpio-keys as /devices/platform/gpio-keys.39/input/input0
reg-fixed-sync-voltage 5.regulator: Consumer c1 does not have device name
platform 5.regulator: Driver reg-fixed-sync-voltage requests probe deferral
max77620-rtc max77620-rtc.1: setting system clock to 2016-09-14 17:23:13 UTC (1473873793)
platform 7.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform d.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform c9.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform ca.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform cb.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform cc.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform cd.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform ce.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform d1.regulator: Driver reg-fixed-sync-voltage requests probe deferral
tegra-snd-t210ref sound_ref.18: ASoC: CODEC (null) not registered
tegra-snd-t210ref sound_ref.18: snd_soc_register_card failed (-517)
platform sound_ref.18: Driver tegra-snd-t210ref requests probe deferral
[dram-timers] DRAM derating cdev registered.
Disable partitions left on by BL
    sata
    disb
Disabling clocks left on by bootloader:
   audio2_dmic
   audio1_dmic
   audio0_dmic
   audio_2x
   audio
   audio4
   audio3
   audio2
   audio1
   audio0
   entropy
   dsi2-fixed
   dsi1-fixed
   sdmmc4_ddr
   sdmmc1_ddr
   sor1_src
   cclk_lp
tegra_cl_dvfs 70110000.dfll-ovr: DT data retrieved successfully
tune_cpu_trimmers: init soctherm cpu zone LOW
tegra_cl_dvfs_init_cdev: cpu_cold cooling device registered
tegra_cl_dvfs_init_cdev: cpu_hot cooling device registered
reg-fixed-sync-voltage 5.regulator: Consumer c1 does not have device name
platform 5.regulator: Driver reg-fixed-sync-voltage requests probe deferral
Tegra CPU DFLL is initialized with use_dfll = 1
platform 7.regulator: Driver reg-fixed-sync-voltage requests probe deferral
tegra_dvfs: 0.vdd-cpu-rail-ovr connected to regulator 
platform d.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform c9.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform ca.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform cb.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform cc.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform cd.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform ce.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform d1.regulator: Driver reg-fixed-sync-voltage requests probe deferral
tegra-snd-t210ref sound_ref.18: ASoC: CODEC (null) not registered
tegra-snd-t210ref sound_ref.18: snd_soc_register_card failed (-517)
platform sound_ref.18: Driver tegra-snd-t210ref requests probe deferral
tegra_dvfs: 4.vdd-core-rail-max77620 connected to regulator 
tegra_dvfs: 1.vdd-gpu-rail-ovr connected to regulator 
CPU rate: 614 MHz
last reset is due to software reset

KERNEL: PMC reset status reg: 0x3
tegra_actmon.emc: Completed initialization (0)
tegra_actmon.avp: Completed initialization (0)
tegra dvfs: tegra sysfs cap interface is initialized
tegra dvfs: tegra sysfs gpu interface is initialized
ALSA device list:
  #0: HDA NVIDIA Tegra at 0x70038000 irq 113
md: Waiting for all devices to be available before autodetect
md: If you don't use raid, use raid=noautodetect
md: Autodetecting RAID arrays.
md: Scanned 0 and added 0 devices.
md: autorun ...
md: ... autorun DONE.
EXT4-fs (mmcblk0p1): couldn't mount as ext3 due to feature incompatibilities
EXT4-fs (mmcblk0p1): couldn't mount as ext2 due to feature incompatibilities
EXT4-fs (mmcblk0p1): warning: mounting fs with errors, running e2fsck is recommended
EXT4-fs (mmcblk0p1): mounted filesystem with ordered data mode. Opts: (null)
VFS: Mounted root (ext4 filesystem) on device 179:1.
devtmpfs: mounted
Freeing unused kernel memory: 428K (ffffffc001034000 - ffffffc00109f000)
Freeing alternatives memory: 52K (ffffffc0010a0000 - ffffffc0010ad000)
init: plymouth-upstart-bridge main process (116) terminated with status 1
init: plymouth-upstart-bridge main process ended, respawning
init: plymouth-upstart-bridge main process (126) terminated with status 1
init: plymouth-upstart-bridge main process ended, respawning
init: ureadahead main process (119) terminated with status 5
init: plymouth-upstart-bridge main process (130) terminated with status 1
init: plymouth-upstart-bridge main process ended, respawning
systemd-udevd[315]: starting version 204
gpio wake52 for gpio=61
reg-fixed-sync-voltage 5.regulator: Consumer c1 does not have device name
platform 5.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform 7.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform d.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform c9.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform ca.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform cb.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform cc.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform cd.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform ce.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform d1.regulator: Driver reg-fixed-sync-voltage requests probe deferral
tegra-snd-t210ref sound_ref.18: ASoC: CODEC (null) not registered
tegra-snd-t210ref sound_ref.18: snd_soc_register_card failed (-517)
platform sound_ref.18: Driver tegra-snd-t210ref requests probe deferral
reg-fixed-sync-voltage 5.regulator: Consumer c1 does not have device name
platform 5.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform 7.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform d.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform c9.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform ca.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform cb.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform cc.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform cd.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform ce.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform d1.regulator: Driver reg-fixed-sync-voltage requests probe deferral
tegra210-ape-admaif tegra210-admaif: ASoC: Failed to create codec debugfs directory
tegra210-adsp adsp_audio.3: ASoC: Failed to create platform debugfs directory
tegra-xhci tegra-xhci: Firmware File: tegra21x_xusb_firmware (132608 Bytes)
tegra-xhci tegra-xhci: Firmware DMA Memory: dma 0x0000000080080000 mapped 0xffffff8000541000 (132608 Bytes)
tegra-xhci tegra-xhci: num_hsic_port 0
tegra-xhci tegra-xhci: Firmware timestamp: 2016-01-07 06:59:07 UTC, Version: 50.12 release, Falcon state 0x20
tegra-xhci tegra-xhci: Nvidia xHCI Host Controller
tegra-xhci tegra-xhci: new USB bus registered, assigned bus number 1
tegra-xhci tegra-xhci: irq 71, io mem 0x70090000
usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb1: Product: Nvidia xHCI Host Controller
usb usb1: Manufacturer: Linux 3.10.67-era+ tegra-xhci
usb usb1: SerialNumber: tegra-xhci
xHCI xhci_add_endpoint called for root hub
xHCI xhci_check_bandwidth called for root hub
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 5 ports detected
cfg80211: Calling CRDA to update world regulatory domain
tegra-snd-t210ref sound_ref.18:  ADMAIF1 <-> ADMAIF1 mapping ok
tegra-snd-t210ref sound_ref.18:  ADMAIF2 <-> ADMAIF2 mapping ok
tegra-snd-t210ref sound_ref.18:  ADMAIF3 <-> ADMAIF3 mapping ok
tegra-snd-t210ref sound_ref.18:  ADMAIF4 <-> ADMAIF4 mapping ok
tegra-snd-t210ref sound_ref.18:  ADMAIF5 <-> ADMAIF5 mapping ok
tegra-snd-t210ref sound_ref.18:  ADMAIF6 <-> ADMAIF6 mapping ok
tegra-snd-t210ref sound_ref.18:  ADMAIF7 <-> ADMAIF7 mapping ok
tegra-snd-t210ref sound_ref.18:  ADMAIF8 <-> ADMAIF8 mapping ok
tegra-snd-t210ref sound_ref.18:  ADMAIF9 <-> ADMAIF9 mapping ok
tegra-snd-t210ref sound_ref.18:  ADMAIF10 <-> ADMAIF10 mapping ok
sdhci-tegra sdhci-tegra.1: Card already in requested state
sdhci-tegra sdhci-tegra.1: Card already in requested state
tegra-xhci tegra-xhci: Nvidia xHCI Host Controller
tegra-xhci tegra-xhci: new USB bus registered, assigned bus number 2
usb usb2: New USB device found, idVendor=1d6b, idProduct=0003
usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb2: Product: Nvidia xHCI Host Controller
usb usb2: Manufacturer: Linux 3.10.67-era+ tegra-xhci
usb usb2: SerialNumber: tegra-xhci
xHCI xhci_add_endpoint called for root hub
xHCI xhci_check_bandwidth called for root hub
hub 2-0:1.0: USB hub found
hub 2-0:1.0: 4 ports detected
tegra-snd-t210ref sound_ref.18:  ADSP-FE1 <-> ADSP PCM mapping ok
compress asoc: ADSP-FE2 <-> ADSP COMPR1 mapping ok
compress asoc: ADSP-FE3 <-> ADSP COMPR2 mapping ok
dhd_module_init in
Power-up adapter 'DHD generic adapter'
wifi_platform_set_power = 1
reg-fixed-sync-voltage 5.regulator: Consumer c1 does not have device name
platform 5.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform 7.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform d.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform c9.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform ca.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform cb.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform cc.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform cd.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform ce.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform d1.regulator: Driver reg-fixed-sync-voltage requests probe deferral
Wake44 for irq=81
Wake40 for irq=53
Wake41 for irq=53
Wake42 for irq=53
Wake43 for irq=53
Bluetooth: BNEP (Ethernet Emulation) ver 1.3
Bluetooth: BNEP socket layer initialized
Bluetooth: RFCOMM TTY layer initialized
Bluetooth: RFCOMM socket layer initialized
Bluetooth: RFCOMM ver 1.11
wifi_platform_bus_enumerate device present 1
SDIO Vendor ID:02d0 and SDIO Device ID: 4354
reg-fixed-sync-voltage 5.regulator: Consumer c1 does not have device name
platform 5.regulator: Driver reg-fixed-sync-voltage requests probe deferral
F1 signature read @0x18000000=0x17214354
platform 7.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform d.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform c9.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform ca.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform cb.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform cc.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform cd.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform ce.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform d1.regulator: Driver reg-fixed-sync-voltage requests probe deferral
F1 signature OK, socitype:0x1 chip:0x4354 rev:0x1 pkg:0x2
DHD: dongle ram size is set to 786432(orig 786432) at 0x180000
wifi_platform_prealloc: failed to alloc static mem section 7
wifi_platform_get_mac_addr
wl_create_event_handler(): thread:wl_event_handler:1e8 started
CFG80211-ERROR) wl_event_handler : tsk Enter, tsk = 0xffffffc0f6ee19f0
dhd_attach(): thread:dhd_watchdog_thread:1e9 started
dhd_attach(): thread:dhd_dpc:1ea started
dhd_attach(): thread:dhd_rxf:1eb started
dhd_deferred_work_init: work queue initialized 
Dongle Host Driver, version 1.201.82 (r)
Compiled in drivers/net/wireless/bcmdhd on May  3 2016 at 11:32:21
Register interface [wlan0]  MAC: 00:04:4b:58:16:59

dhd_prot_ioctl : bus is down. we have nothing to do
wifi_platform_set_power = 0
cfg80211: World regulatory domain updated:
cfg80211:   (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
cfg80211:   (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
cfg80211:   (2457000 KHz - 2482000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
cfg80211:   (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
cfg80211:   (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
cfg80211:   (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
tegra_sysfs_register
reg-fixed-sync-voltage 5.regulator: Consumer c1 does not have device name
platform 5.regulator: Driver reg-fixed-sync-voltage requests probe deferral
usb 2-1: new SuperSpeed USB device number 2 using tegra-xhci
platform 7.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform d.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform c9.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform ca.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform cb.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform cc.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform cd.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform ce.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform d1.regulator: Driver reg-fixed-sync-voltage requests probe deferral
reg-fixed-sync-voltage 5.regulator: Consumer c1 does not have device name
platform 5.regulator: Driver reg-fixed-sync-voltage requests probe deferral
usb 2-1: New USB device found, idVendor=0955, idProduct=09ff
usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=6
usb 2-1: Product: USB 10/100/1000 LAN
usb 2-1: Manufacturer: Nvidia
usb 2-1: SerialNumber: 000001000000
cdc_ether 2-1:2.0 eth0: register 'cdc_ether' at usb-tegra-xhci-1, CDC Ethernet Device, 00:04:4b:58:16:5b
platform 7.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform d.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform c9.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform ca.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform cb.regulator: Driver reg-fixed-sync-voltage requests probe deferral
cdc_ether 2-1:2.0 eth0: unregister 'cdc_ether' usb-tegra-xhci-1, CDC Ethernet Device
platform cc.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform cd.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform ce.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform d1.regulator: Driver reg-fixed-sync-voltage requests probe deferral
reg-fixed-sync-voltage 5.regulator: Consumer c1 does not have device name
platform 5.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform 7.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform d.regulator: Driver reg-fixed-sync-voltage requests probe deferral
usb 2-1: reset SuperSpeed USB device number 2 using tegra-xhci
r8152 2-1:1.0 eth0: v2.03.3 (2015/01/29)
r8152 2-1:1.0 eth0: This product is covered by one or more of the following patents:
		US6,570,884, US6,115,776, and US6,327,625.

platform c9.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform ca.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform cb.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform cc.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform cd.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform ce.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform d1.regulator: Driver reg-fixed-sync-voltage requests probe deferral
reg-fixed-sync-voltage 5.regulator: Consumer c1 does not have device name
platform 5.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform 7.regulator: Driver reg-fixed-sync-voltage requests probe deferral
platform d.regulator: Driver reg-fixed-sync-voltage requests probe deferral
init: failsafe main process (619) killed by TERM signal
init: Failed to obtain startpar-bridge instance: Unknown parameter: INSTANCE
IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
init: alsa-restore main process (1006) terminated with status 99
init: plymouth-upstart-bridge main process ended, respawning
Unhandled fault: alignment fault (0x92000061) at 0x00000000028e360b
init: mongodb main process (1008) terminated with status 14
gk20a gpu.0: GPCPLL initial settings: NA mode, M=1, N=34, P=3
init: plymouth-stop pre-start process (1276) terminated with status 1
HDA: No HDMI device connected
HDA: No HDMI device connected

Hey, tedc, is there anything in the above that hints why the I2S bus isn’t being powered? Maybe the audio path isn’t defined well enough for it to know to power the bus. The example in the docs uses the same bus, and I’m not sure what I could have missed copying its example.

Hi actuated-man,

From the kernel log, looks something wrong on your probe function.

tegra-snd-t210ref sound_ref.18: ASoC: CODEC (null) not registered
tegra-snd-t210ref sound_ref.18: snd_soc_register_card failed (-517)

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

I think this is the reason why you cannot find i2sx in your clock_tree.
Can you please enable the debug log from soc-core and your machine driver
to get more information and the patch below is how I did.

diff --git a/kernel/printk.c b/kernel/printk.c
index a081319..33c75e3 100644
--- a/kernel/printk.c
+++ b/kernel/printk.c
@@ -60,7 +60,7 @@ extern void printascii(char *);

 /* We show everything that is MORE important than this.. */
 #define MINIMUM_CONSOLE_LOGLEVEL 1 /* Minimum loglevel we let people use */
-#define DEFAULT_CONSOLE_LOGLEVEL 7 /* anything MORE serious than KERN_DEBUG */
+#define DEFAULT_CONSOLE_LOGLEVEL 8 /* anything MORE serious than KERN_DEBUG */

 int console_printk[5] = {
        DEFAULT_CONSOLE_LOGLEVEL,       /* console_loglevel */
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index 82221f1..0a86d54 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -21,7 +21,7 @@
  *   o Add more codecs and platforms to ensure good API coverage.
  *   o Support TDM on PCM and I2S
  */
-
+#define DEBUG    1
 #include <linux/module.h>
 #include <linux/moduleparam.h>
 #include <linux/init.h>
diff --git a/sound/soc/tegra-alt/tegra210_i2s_alt.c b/sound/soc/tegra-alt/tegra210_i2s_alt.c
index 86621eb..4fb6457 100644
--- a/sound/soc/tegra-alt/tegra210_i2s_alt.c
+++ b/sound/soc/tegra-alt/tegra210_i2s_alt.c
@@ -15,7 +15,7 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-
+#define DEBUG 1
 #include <linux/delay.h>
 #include <linux/clk.h>
 #include <linux/device.h>
diff --git a/sound/soc/tegra-alt/tegra_t210ref_mobile_rt565x_alt.c b/sound/soc/tegra-alt/tegra_t210ref_mobile_rt565x_alt.c
index 4f71ac8..ccd424c 100644
--- a/sound/soc/tegra-alt/tegra_t210ref_mobile_rt565x_alt.c
+++ b/sound/soc/tegra-alt/tegra_t210ref_mobile_rt565x_alt.c
@@ -15,7 +15,7 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */

Thanks for your help, tedc. As far as I can tell, that’s because the probing begins well before the CODEC module is loaded. It eventually succeeds once the module is loaded. Your extra debugging makes that clear (see boot.dmesg, attached).

My current line of thinking is that the audio path is incomplete, making the whole thing fail pretty silently. The ALSA Project’s ASoC page even calls out our chosen CODEC line as one that likes to play dead until everything is just so: DAPM - AlsaProject

I’ve enabled ASoC tracing in the kernel (all events). One aplay attempt yields the trace in trace.log (attached). Note that the snd_soc_dapm_widget_power event never occurs, but it does note that power changes are necessary. I haven’t dug around the code enough yet to see if that’s expected.
boot.dmesg.txt (526 KB)
trace.log.txt (32.4 KB)

By the way, I applied those mixer settings you suggested before trace.log was generated.

amixer -c 1 sset 'ADMAIF1 Mux' 'I2S1'
amixer -c 1 sset 'I2S1 Mux' 'ADMAIF1'

Hi actuated-man,

Let’s check tegra-side first for audio path issue. After applying the settings in #14, during “aplay”,
can you measure the correct frequency on MCLK, LRCLK and SCLK and see signal on DOUT?

I can read the MCLK at roughly 20 MHz, but I get nothing at all on the LRCLK, SCLK, and DOUT pins. I mentioned this before, but I guess this post is getting a little long. :-)

Any idea why the I2S1 bus (labelled I2S0 in the pinmux) wouldn’t be powered?

From the trace.log linked above, it looks like the audio path starts at “ADMAIF1 Receive” passes through a bunch of widgets labelled “I2S1” and ends at “Playback”. There’s no mention of the CODEC’s widgets, so maybe the route actually fails. The ASoC docs mention this as a possible reason for the CODEC not being powered.

Also, the WAV file takes no time to “play” despite its length, which might mean something to you.

I’ve read that other people have gotten the tlv320aic32x4 driver working on a BeagleBone with devicetree settings provided by Texus Instruments itself. The simple-audio-card provided by ALSA/ASoC seems to use CODECs without code changes.

However in tegra-alt/tegra_t210ref_alt.c, the ad1937 CODEC seems to be hard-coded. I figured this was just to simplify its use, but now I wonder if I need to modify this code to hook in the aic32x4’s hw_params hooks, etc. It seems to register the link, but maybe it doesn’t use it.

tegra-snd-t210ref sound_ref.18: ASoC: binding ti-playback-z at idx 96

The code in question follows. There’s also a section that sets an init routine. Neither seem to add widgets, though, so maybe these really are just for this particular ad1937 CODEC.

for (i = 0; i < machine->num_codec_links; i++) {
                if (tegra_t210ref_codec_links[i].name) {
                        if (strstr(tegra_t210ref_codec_links[i].name,
                                "ad-playback-z")) {
                                for (j = TEGRA210_DAI_LINK_ADMAIF1;
                                        j <= TEGRA210_DAI_LINK_ADMAIF4; j++)
                                        tegra_machine_set_dai_ops(j,
                                                &tegra_t210ref_ad1937_z_ops);
                        } ...

Hi actuated-man,

About the power for i2s, looks the regulator vdd-1v8 is always on by cat /sys/kernel/debug/regulator/power_tree to know.
So power should be okay.

[ 8.081532] tegra-snd-t210ref sound_ref.18: ASoC: binding ti-playback-z at idx 96
Things are okay at here sound/soc/soc-core.c:827
[ 8.081553] tegra-snd-t210ref sound_ref.18: ASoC: CODEC (null) not registered
But someting wrong at here sound/soc/soc-core.c:882 (codec does not be registered successfully?)
[ 8.081599] tegra-snd-t210ref sound_ref.18: snd_soc_register_card failed (-517)
So the snd_soc_card registration fails at sound/soc/tegra-alt/tegra_t210ref_alt.c:1003
Could you share the information generated by the commands below and also share your device tree about the node sound_card.

cat /sys/kernel/debug/asoc/*

aplay -l

if I need to modify this code to hook in the aic32x4’s hw_params hooks
Yes you need to modify the code and sound/soc/tegra-alt/tegra_t210ref_mobile_rt565x_alt.c:177 can be a reference for your i2s case.

From the trace.log linked above, it looks like the audio path starts at “ADMAIF1 Receive” passes through a
bunch of widgets labelled “I2S1” and ends at “Playback”. There’s no mention of the CODEC’s widgets,
so maybe the route actually fails.
Could you have a try on the routing below to play a wav to i2s while loopback the wav to ADMAIF2 Mux for recording.
You should be able to hear what you just play from loopback_recording_test.wav.
amixer -c 1 sset “ADMAIF2 Mux” “ADMAIF1” // set the source of ADMAIF2 Mux as ADMAIF1
amixer -c 1 sset “I2S1 Mux” “ADMAIF1” // set the source of I2S1 Mux as ADMAIF1
aplay -Dhw:1,0 test_stereo_44100Hz_16bit_PCM.wav // play a wav file to ADMAIF1
arecord -Dhw:1,1 -c 2 -d 5 -r 44100 -f S16_LE loopback_recording_test.wav // record audio from ADMAIF2 Mux

About the power for i2s, looks the regulator vdd-1v8 is always on by cat /sys/kernel/debug/regulator/power_tree to know.
So power should be okay.

That is not the case. As far as I can see, vdd-1v8 remains off during playback.

# grep vdd-1v8 /sys/kernel/debug/regulator/power_tree
----regulator.6 (vdd-1v8)----
		tegra210-i2s.1-vdd-1v8-spi-hv-bias: OFF [1800000:0:1800000]
		tegra210-i2s.1-vdd-1v8-spi-hv: OFF [1800000:0:1800000]
		tegra210-i2s.0-vdd-1v8-audio-hv-bias: OFF [1800000:0:1800000]
		tegra210-i2s.0-vdd-1v8-audio-hv: OFF [1800000:0:1800000]

[ 8.081532] tegra-snd-t210ref sound_ref.18: ASoC: binding ti-playback-z at idx 96
Things are okay at here sound/soc/soc-core.c:827
[ 8.081553] tegra-snd-t210ref sound_ref.18: ASoC: CODEC (null) not registered
But someting wrong at here sound/soc/soc-core.c:882 (codec does not be registered successfully?)

This is because the CODEC is loaded as a module. The sound driver retries several times until the CODEC module is actually loaded, then everything is fine.

[ 8.081599] tegra-snd-t210ref sound_ref.18: snd_soc_register_card failed (-517)
So the snd_soc_card registration fails at sound/soc/tegra-alt/tegra_t210ref_alt.c:1003

Could you share the information generated by the commands below and also share your device tree about the node sound_card.

cat /sys/kernel/debug/asoc/*

aplay -l

# cat codecs | column
tlv320aic32x4.0-0018	tegra210-sfc.3		tegra210-i2s.3
adsp_audio.3		tegra210-sfc.2		tegra210-i2s.2
tegra210-ope.1		tegra210-sfc.1		tegra210-i2s.1
tegra210-ope.0		tegra210-sfc.0		tegra210-i2s.0
tegra210-spdif		tegra210-mixer		tegra210-admaif
tegra210-mvc.1		tegra210-adx.1		tegra210-axbar
tegra210-mvc.0		tegra210-adx.0		spdif-dit.3
tegra210-afc.5		tegra210-amx.1		spdif-dit.2
tegra210-afc.4		tegra210-amx.0		spdif-dit.1
tegra210-afc.3		tegra210-dmic.2		spdif-dit.0
tegra210-afc.2		tegra210-dmic.1		snd-soc-dummy
tegra210-afc.1		tegra210-dmic.0
tegra210-afc.0		tegra210-i2s.4
# cat dais | column
tlv320aic32x4-hifi	OUT1			ADX1-4
ADSP-ADMAIF10		IN			ADX1-3
ADSP-ADMAIF9		OUT4			ADX1-2
ADSP-ADMAIF8		OUT3			ADX1-1
ADSP-ADMAIF7		OUT2			AMX2-4
ADSP-ADMAIF6		OUT1			AMX2-3
ADSP-ADMAIF5		OUT			AMX2-2
ADSP-ADMAIF4		IN4			AMX2-1
ADSP-ADMAIF3		IN3			AMX2
ADSP-ADMAIF2		IN2			AMX1-4
ADSP-ADMAIF1		IN1			AMX1-3
ADSP-FE5		OUT			AMX1-2
ADSP-FE4		IN4			AMX1-1
ADSP-FE3		IN3			AMX1
ADSP-FE2		IN2			DMIC3
ADSP-FE1		IN1			DMIC2
ADSP COMPR2		DAP			DMIC1
ADSP COMPR1		CIF			IQC2-2
ADSP PCM		DAP			IQC2-1
OPE OUT			CIF			IQC1-2
OPE IN			DAP			IQC1-1
OPE OUT			CIF			MVC2
OPE IN			DAP			MVC1
DAP			CIF			SPKPROT1
CIF			DAP			OPE2
MVC OUT			CIF			OPE1
MVC IN			DAP			AFC6
MVC OUT			CIF			AFC5
MVC IN			DAP			AFC4
AFC OUT			CIF			AFC3
AFC IN			DAP			AFC2
AFC OUT			CIF			AFC1
AFC IN			ADMAIF10 CIF		SPDIF1-2
AFC OUT			ADMAIF9 CIF		SPDIF1-1
AFC IN			ADMAIF8 CIF		MIXER1-10
AFC OUT			ADMAIF7 CIF		MIXER1-9
AFC IN			ADMAIF6 CIF		MIXER1-8
AFC OUT			ADMAIF5 CIF		MIXER1-7
AFC IN			ADMAIF4 CIF		MIXER1-6
AFC OUT			ADMAIF3 CIF		MIXER1-5
AFC IN			ADMAIF2 CIF		MIXER1-4
DAP			ADMAIF1 CIF		MIXER1-3
CIF			ADMAIF10 FIFO		MIXER1-2
DAP			ADMAIF9 FIFO		MIXER1-1
CIF			ADMAIF8 FIFO		SFC4
DAP			ADMAIF7 FIFO		SFC3
CIF			ADMAIF6 FIFO		SFC2
DAP			ADMAIF5 FIFO		SFC1
CIF			ADMAIF4 FIFO		I2S5
TX5			ADMAIF3 FIFO		I2S4
TX4			ADMAIF2 FIFO		I2S3
TX3			ADMAIF1 FIFO		I2S2
TX2			ADMAIF10		I2S1
TX1			ADMAIF9			ADMAIF10
RX10			ADMAIF8			ADMAIF9
RX9			ADMAIF7			ADMAIF8
RX8			ADMAIF6			ADMAIF7
RX7			ADMAIF5			ADMAIF6
RX6			ADMAIF4			ADMAIF5
RX5			ADMAIF3			ADMAIF4
RX4			ADMAIF2			ADMAIF3
RX3			ADMAIF1			ADMAIF2
RX2			ADX2			ADMAIF1
RX1			ADX2-4			dit-hifi
IN			ADX2-3			dit-hifi
OUT4			ADX2-2			dit-hifi
OUT3			ADX2-1			dit-hifi
OUT2			ADX1			snd-soc-dummy-dai
# cat platforms
adsp_audio.3
tegra210-admaif
snd-soc-dummy
# aplay -l | grep ^card
card 0: Tegra [HDA NVIDIA Tegra], device 3: HDMI 0 [HDMI 0]
card 1: tegrasndt210ref [tegra-snd-t210ref], device 0: ADMAIF1 CIF ADMAIF1-0 []
card 1: tegrasndt210ref [tegra-snd-t210ref], device 1: ADMAIF2 CIF ADMAIF2-1 []
card 1: tegrasndt210ref [tegra-snd-t210ref], device 2: ADMAIF3 CIF ADMAIF3-2 []
card 1: tegrasndt210ref [tegra-snd-t210ref], device 3: ADMAIF4 CIF ADMAIF4-3 []
card 1: tegrasndt210ref [tegra-snd-t210ref], device 4: ADMAIF5 CIF ADMAIF5-4 []
card 1: tegrasndt210ref [tegra-snd-t210ref], device 5: ADMAIF6 CIF ADMAIF6-5 []
card 1: tegrasndt210ref [tegra-snd-t210ref], device 6: ADMAIF7 CIF ADMAIF7-6 []
card 1: tegrasndt210ref [tegra-snd-t210ref], device 7: ADMAIF8 CIF ADMAIF8-7 []
card 1: tegrasndt210ref [tegra-snd-t210ref], device 8: ADMAIF9 CIF ADMAIF9-8 []
card 1: tegrasndt210ref [tegra-snd-t210ref], device 9: ADMAIF10 CIF ADMAIF10-9 []
card 1: tegrasndt210ref [tegra-snd-t210ref], device 93: ADSP PCM ADSP-FE1-93 []

The device-tree hasn’t changed much since the last time I mentioned it. I’ve changed the format to match what I’ve seen in some BeagleBone device-trees, but I think it’s too early for that to matter. I’ve also changed up the “Headphone-?” parts, to no effect. Here’s what I’ve got:

sound_ref {
                compatible = "nvidia,tegra-audio-t210ref";
                nvidia,model = "tegra-snd-t210ref";
                nvidia,num-codec-link = <1>;

                nvidia,audio-routing =
                        "Headphone-z",  "HPL",
                        "Headphone-z",  "HPR",
                        "Headphone-z",  "LOL",
                        "Headphone-z",  "LOR",
                        "IN1_L",        "LineIn-z",
                        "IN1_R",        "LineIn-z",
                        "IN2_L",        "LineIn-z",
                        "IN2_R",        "LineIn-z",
                        "IN3_L",        "LineIn-z",
                        "IN3_R",        "LineIn-z";

                nvidia,xbar = <&tegra_axbar>;

                nvidia,dai-link-1 {
                        /* see sound/soc/tegra-alt/tegra_t210ref_alt.c */
                        link-name = "ti-playback-z";
                        cpu-dai = <&tegra_i2s1>;
                        codec-dai = <&aic32x4>;
                        cpu-dai-name = "I2S1";
                        codec-dai-name = "tlv320aic32x4-hifi";
                        // TODO: Check the rest of these.
                        tx-mask = <0xFF>;
                        rx-mask = <0xFF>;
                        format = "dsp_b";  /* not i2s */
                        bitclock-slave;
                        frame-slave;
                        bitclock-noninversion;
                        frame-noninversion;
                        bit-format = "s16_le";
                        bclk_ratio = <1>;
                        srate = <48000>;
                        num-channel = <2>;  /* max 2 input/output */
                };
        };

if I need to modify this code to hook in the aic32x4’s hw_params hooks
Yes you need to modify the code and sound/soc/tegra-alt/tegra_t210ref_mobile_rt565x_alt.c:177 can be a reference for your i2s case.

I’ve tried to added init/hw_params following what was there and what was in that rt565x example, but still nothing. Basically it changes clock speeds, and I also added code to enable the machine->audio_clock (in the init routine, not the resume_pre code from rx565x; the resume_pre/suspend_post routines were not called in the non-mobile alt driver). I do see the mclk change speeds, but I do not see the other clocks come up. Not sure exactly what needs to be done here, btw.

From the trace.log linked above, it looks like the audio path starts at “ADMAIF1 Receive” passes through a
bunch of widgets labelled “I2S1” and ends at “Playback”. There’s no mention of the CODEC’s widgets,
so maybe the route actually fails.
Could you have a try on the routing below to play a wav to i2s while loopback the wav to ADMAIF2 Mux for recording.
You should be able to hear what you just play from loopback_recording_test.wav.
amixer -c 1 sset “ADMAIF2 Mux” “ADMAIF1” // set the source of ADMAIF2 Mux as ADMAIF1
amixer -c 1 sset “I2S1 Mux” “ADMAIF1” // set the source of I2S1 Mux as ADMAIF1
aplay -Dhw:1,0 test_stereo_44100Hz_16bit_PCM.wav // play a wav file to ADMAIF1
arecord -Dhw:1,1 -c 2 -d 5 -r 44100 -f S16_LE loopback_recording_test.wav // record audio from ADMAIF2 Mux

[/quote]

I get an I/O error. Also note, as before, the aplay program doesn’t block for as long as I would expect (as long as it takes to play the file); I ran it in the background anyway.

$ aplay -Dhw:1,0 sample.wav & arecord -Dhw:1,1 -c 2 -d 5 -r 44100 -f S16_LE loopback_recording_test.wav
[1] 1626
Recording WAVE 'loopback_recording_test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
Playing WAVE 'sample.wav' : Signed 16 bit Little Endian, Rate 11025 Hz, Mono
arecord: pcm_read:2031: read error: Input/output error
[1]+  Done                    aplay -Dhw:1,0 sample.wav

The output is a little squeak, like an old cassette tape on fast play. I don’t think it’s the original wave sped up. I’ll attach both of them for you.
loopback_recording_test.wav (32 KB)
sample.wav (35.4 KB)

Hi actuated-man,

Could you have a quick try with the following commands to verify if ahub is okay or not.
accroding the message of #18. ahub should be able to work correctly.
amixer -c 1 sset “ADMAIF2 Mux” “ADMAIF1”
amixer -c 1 sset “I2S1 Mux” “ADMAIF1”
aplay -Dhw:1,0 sample.wav & arecord -Dhw:1,1 -c 1 -d 2 -r 11025 -f S16_LE loopback_recording_test3.wav

Could you have a quick check by cat /sys/kernel/debug/tegra_gpio to know the current status of gpio
and the following message is the diff for the sfio config and gpio config on my device.
tegra_gpio.sfio was generated by cat /sys/kernel/debug/tegra_gpio > ~/tegra_gpio.sfio on the device tree with i2s enabled.
8 : B0 : DAP1_FS
9 : B1 : DAP1_DIN
10 : B2 : DAP1_DOUT
11 : B3 : DAP1_SCLK
216 : BB0 : AUD_MCLK
219 : BB3 : GPIO_X1_AUD
root@tegra-ubuntu:~# diff tegra_gpio.sfio tegra_gpio.gpio
3c3
< B: 0:1 00 00 00 00 00 00 000000

B: 0:1 0f 00 00 01 00 00 000000 (B3, B2, B1, B0)
29c29
< BB: 6:3 04 04 00 00 00 00 000000


BB: 6:3 0d 04 00 00 00 00 000000 (BB3, BB0)

About regulator.6 (vdd-1v8), this regulator is configured as Boot ON and Always ON.

1 Like

Could you have a quick try with the following commands to verify if ahub is okay or not.
accroding the message of #18. ahub should be able to work correctly.
amixer -c 1 sset “ADMAIF2 Mux” “ADMAIF1”
amixer -c 1 sset “I2S1 Mux” “ADMAIF1”
aplay -Dhw:1,0 sample.wav & arecord -Dhw:1,1 -c 1 -d 2 -r 11025 -f S16_LE loopback_recording_test3.wav

That works fine. The recorded file sounds just like the input.

Could you have a quick check by cat /sys/kernel/debug/tegra_gpio to know the current status of gpio
and the following message is the diff for the sfio config and gpio config on my device.
8 : B0 : DAP1_FS
9 : B1 : DAP1_DIN
10 : B2 : DAP1_DOUT
11 : B3 : DAP1_SCLK
216 : BB0 : AUD_MCLK
219 : BB3 : GPIO_X1_AUD
root@tegra-ubuntu:~# diff tegra_gpio.sfio tegra_gpio.gpio
3c3
< B: 0:1 00 00 00 00 00 00 000000

B: 0:1 0f 00 00 01 00 00 000000 (B3, B2, B1, B0)
29c29
< BB: 6:3 04 04 00 00 00 00 000000


BB: 6:3 0d 04 00 00 00 00 000000 (BB3, BB0)

This is what I see, and what I have in my device-tree (I don’t have the tegra_gpio.sfio or tegra_gpio.gpio files):

# cat tegra_gpio 
Name:Bank:Port CNF OE OUT IN INT_STA INT_ENB INT_LVL
 A: 0:0 24 00 00 04 00 00 000000
 B: 0:1 00 00 00 00 00 00 000000
 C: 0:2 1f 1f 1f 1f 00 00 000000
 D: 0:3 18 18 00 00 00 00 000000
 E: 1:0 70 00 00 60 00 00 000000
 F: 1:1 00 00 00 00 00 00 000000
 G: 1:2 00 00 00 00 00 00 000000
 H: 1:3 ff 1b 0b 00 00 24 002024
 I: 2:0 0f 0d 05 02 00 00 000000
 J: 2:1 00 00 00 00 00 00 000000
 K: 2:2 f0 20 00 d0 00 00 000000
 L: 2:3 02 02 02 02 00 00 000000
 M: 3:0 00 00 00 00 00 00 000000
 N: 3:1 00 00 00 00 00 00 000000
 O: 3:2 00 00 00 00 00 00 000000
 P: 3:3 00 00 00 00 00 00 000000
 Q: 4:0 00 00 00 00 00 00 000000
 R: 4:1 00 00 00 00 00 00 000000
 S: 4:2 f0 f0 80 00 00 00 000000
 T: 4:3 03 03 00 00 00 00 000000
 U: 5:0 0c 00 00 08 00 00 000000
 V: 5:1 6e 26 00 00 00 00 000000
 W: 5:2 00 00 00 00 00 00 000000
 X: 5:3 ff 8c 8c ff 00 70 606000
 Y: 6:0 07 04 00 03 00 01 010100
 Z: 6:1 1f 0c 04 17 00 03 030300
AA: 6:2 00 00 00 00 00 00 000000
BB: 6:3 0c 0c 08 00 00 00 000000
CC: 7:0 32 30 20 20 00 00 000000
DD: 7:1 00 00 00 00 00 00 000000
EE: 7:2 00 00 00 00 00 00 000000
FF: 7:3 00 00 00 00 00 00 000000
gpio: gpio@6000d000 {
                gpio-init-names = "default";
                gpio-init-0 = <&gpio_default>;

                gpio_default: default {
                        gpio-output-high = <
                                /* Unrelated to the audio system. */
                                TEGRA_GPIO(I, 2)
                                TEGRA_GPIO(Z, 2)
                                TEGRA_GPIO(L, 1)
                                TEGRA_GPIO(X, 2)
                                TEGRA_GPIO(X, 3)
                                TEGRA_GPIO(X, 7)
                                TEGRA_GPIO(S, 7)

                                /* Power-on the audio amplifier. */
                                TEGRA_GPIO(C, 0)  /* SPK_EN_L */
                                TEGRA_GPIO(C, 1)  /* SPK_EN_R */
                                TEGRA_GPIO(C, 2)  /* CODEC_PWR_EN */
                                TEGRA_GPIO(C, 3)  /* SPK_GAIN_0 */
                                TEGRA_GPIO(C, 4)  /* SPK_GAIN_1 */

                                /* Power-on the audio CODEC. */
                                TEGRA_GPIO(BB,3)  /* CODEC_RST */
                                >;

                        gpio-input = <
                                TEGRA_GPIO(V, 6)  /* Unrelated to CODEC */
                                >;

                        /* Transfer pins from GPIO to I2S for audio. */
                        gpio-to-sfio = <  /* GPIO# TX1-PIN TX1-FUNC/ERA-FUNC CODEC-PIN */
                                TEGRA_GPIO(B, 0)     /*   8 H1 I2S0_LRCLK/SFSYNC R335/3 */
                                TEGRA_GPIO(B, 1)     /*   9 G1 I2S0_SDIN         R339/5 */
                                TEGRA_GPIO(B, 2)     /*  10 H2 I2S0_SDOUT        R337/4 */
                                TEGRA_GPIO(B, 3)     /*  11 G2 I2S0_CLK/SRCLK    R334/2 */
                                TEGRA_GPIO(BB, 0)    /* 216 F1 AUDIO_MCLK     R1/R332/1 */

                                /* This is commented out; we leave the CODEC enabled. */
                                /*TEGRA_GPIO(BB, 3)  /* 219 F2 CODEC_RST         R331/31 */
                                >;
                };

        };

About regulator.6 (vdd-1v8), this regulator is configured as Boot ON and Always ON.

Yes, I verified that after I sent the last message.

Thanks for your continued help, tedc.

1 Like