This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Linux/PROCESSOR-SDK-AM335X: McASP configuration

Part Number: PROCESSOR-SDK-AM335X
Other Parts Discussed in Thread: AM3358, ADS127L01, TMDXEVM3358, TLV320AIC3106, PCM5102A, PCM5102

Tool/software: Linux

We are using an external ADC chip (TI ADS127L01) with McASP connection to an Octavo part with AM3358 processor. We are using the ADC chip as a McASP Master (AM335x as slave) and we are struggling to find any reference for both setup of the device tree and an example user mode app for McASP FIFO read. The ADC is being used to measure voltage from an analog accelerometer.

Our board is utilizing the following McASP0 to ADC pin mapping:

(B12) mcasp0_aclkr for SCLK (AM335x input from ADC bit clock)

(C13) mcasp0_fsr for Frame Sync ((AM335x input from ADC word clock)

(D13) mcasp0_axr1 for Data (AM35x input from ADC DOUT).

Note that we are not using the ADC DIN line as no ADC codec control is required, we will simply enable the chip to start streaming (handled via GPIO - which we have full control of now).

First - the device tree. This is the last board peripheral that we will interface to. We have been using a BBBW ref BSP elements. All device tree entries are within the am335x-bone-common.dtsi file. Specific entries for McASP0 are:

{
   cpus {
      cpu@0 {
         cpu0-supply = <&dcdc2_reg>;
         };
   };

   memory {
      device_type = "memory";
      reg = <0x80000000 0x10000000>; /* 256 MB */
   };

   vmmcsd_fixed: fixedregulator@0 {
      compatible = "regulator-fixed";
      regulator-name = "vmmcsd_fixed";
      regulator-min-microvolt = <3300000>;
      regulator-max-microvolt = <3300000>;
   };

   ocp {
      mcasp0: mcasp@48038000 {
         compatible = "ti,am33xx-mcasp-audio";
         ti,hwmods = "mcasp0";
         reg = <0x48038000 0x2000>,
         <0x46000000 0x400000>;
         reg-names = "mpu", "dat";
         interrupts = <81>;
         interrupts-names = "rx";
         status = "okay";
         op-mode = <0>; /* operational mode - 0 -> I2S mode, used for I2S, PCM and TDM protocols */
         tdm-slots = <2>; /* Number of TDM slots */
         num-serializer = <4>;
         serial-dir = <0 2 0 0>; /* 0:INACTIVE, 1:TX, 2:RX */
         rx-num-evt = <8>;
         dmas = <&edma 9>;
         dma-names = "rx";
      };
   };
};

&am33xx_pinmux {
   pinctrl-names = "default";
   pinctrl-0 = <&clkout2_pin>;

   ...

   mcasp0_pins: mcasp0_pins {
      pinctrl-single,pins = <
         0x1a0 ( PIN_INPUT_PULLDOWN | MUX_MODE0 ) /* (B12) mcasp0_aclkr.mcasp0_aclkr */
         0x1a4 ( PIN_INPUT_PULLDOWN | MUX_MODE0 ) /* (C13) mcasp0_fsr.mcasp0_fsr */
         0x1a8 ( PIN_INPUT_PULLDOWN | MUX_MODE0 ) /* (D13) mcasp0_axr1.mcasp0_axr1 */
      >;
   };

};

&mcasp0 {
   pinctrl-names = "default";
   pinctrl-0 = <&mcasp0_pins>;
   status = "okay";
};

The above entries compile just fine (to dtb file), but without user mode code to execute, it is difficult to say if it works.

All referenceable ALSA examples that I can find utilize an audio codec driver as shown in the TI Sitara Audio Driver Overview here:

http://processors.wiki.ti.com/index.php/Sitara_Linux_Audio_Driver_Overview

... but these codecs all support both a Control Interface (Codec Driver) and Data Transfer Interface (Platform Driver). Our circumstance is unique in that we will only use the Platform Driver API.

The same Sitara Audio Driver site lists the following Platform Driver interface:

https://git.ti.com/ti-linux-kernel/ti-linux-kernel/blobs/ti-linux-3.12.y/sound/soc/davinci/davinci-mcasp.c

... but I cannot find any example client that uses this API. 

It would be extremely helpful to:

1. Understand if a better approach makes sense (considering our single, unidirectional McASP connection with no control interface).

2. Understand if our device tree makes sense (we cannot find an example without control interface elements).

3. If our approach is OK, where can we find a referecable user mode example for reading an incoming FIFO from the Platform Driver API.

Thanks in advance to any repliers.

Regards,

Mark J

  • Hi Mark,

    Mark Janke said:
    We are using the ADC chip as a McASP Master (AM335x as slave)

    Mark Janke said:

    Our board is utilizing the following McASP0 to ADC pin mapping:

    (B12) mcasp0_aclkr for SCLK (AM335x input from ADC bit clock)

    (C13) mcasp0_fsr for Frame Sync ((AM335x input from ADC word clock)

    (D13) mcasp0_axr1 for Data (AM35x input from ADC DOUT).

    Note that AM335x TI EVM TMDXEVM3358 is using the same configuration (AM335x McASP1 slave, AIC3x codec master), and using these mcasp pins: mcasp1_aclkx, mcasp1_fsx and mcasp1_axr3. I would recommend you, if possible, to use the same pin configuration, as this configuration is validated and supported by default in the latest AM335x TI PSDK v4.02.

    am335x-evm.dts

    sound {
            compatible = "simple-audio-card";
            simple-audio-card,name = "AM335x-EVM";
            simple-audio-card,widgets =
                "Headphone", "Headphone Jack",
                "Line", "Line In";
            simple-audio-card,routing =
                "Headphone Jack",    "HPLOUT",
                "Headphone Jack",    "HPROUT",
                "LINE1L",        "Line In",
                "LINE1R",        "Line In";
            simple-audio-card,format = "dsp_b";
            simple-audio-card,bitclock-master = <&sound_master>;
            simple-audio-card,frame-master = <&sound_master>;
            simple-audio-card,bitclock-inversion;

            simple-audio-card,cpu {
                sound-dai = <&mcasp1>;
            };

            sound_master: simple-audio-card,codec {
                sound-dai = <&tlv320aic3106>;
                system-clock-frequency = <12000000>;
            };
        };

    mcasp1_pins: mcasp1_pins {
            pinctrl-single,pins = <
                AM33XX_IOPAD(0x90c, PIN_INPUT_PULLDOWN | MUX_MODE4) /* mii1_crs.mcasp1_aclkx */
                AM33XX_IOPAD(0x910, PIN_INPUT_PULLDOWN | MUX_MODE4) /* mii1_rxerr.mcasp1_fsx */
                AM33XX_IOPAD(0x908, PIN_OUTPUT_PULLDOWN | MUX_MODE4) /* mii1_col.mcasp1_axr2 */
                AM33XX_IOPAD(0x944, PIN_INPUT_PULLDOWN | MUX_MODE4) /* rmii1_ref_clk.mcasp1_axr3 */
            >;
        };

    &mcasp1 {
        #sound-dai-cells = <0>;
        pinctrl-names = "default", "sleep";
        pinctrl-0 = <&mcasp1_pins>;
        pinctrl-1 = <&mcasp1_pins_sleep>;

        status = "okay";

        op-mode = <0>;          /* MCASP_IIS_MODE */
        tdm-slots = <2>;
        /* 4 serializers */
        serial-dir = <  /* 0: INACTIVE, 1: TX, 2: RX */
            0 0 1 2
        >;
        tx-num-evt = <32>;
        rx-num-evt = <32>;
    };

     

    Mark Janke said:

    1. Understand if a better approach makes sense (considering our single, unidirectional McASP connection with no control interface).

    2. Understand if our device tree makes sense (we cannot find an example without control interface elements).

    3. If our approach is OK, where can we find a referecable user mode example for reading an incoming FIFO from the Platform Driver API.


    Please check the below pointers will be in help.

    http://processors.wiki.ti.com/index.php/Linux_Core_Audio_User's_Guide#If_there.27s_an_issue

    http://processors.wiki.ti.com/index.php/Sitara_Linux_Audio_DAC_Example

    Regards,
    Pavel

  • Hi Pavel,

    Thank you for the response.

    I would like to confirm that it is ok to use the the simple audio support without any DIN to the codec. Importantly - we only connect to the codec DOUT and not DIN. When reading about this driver, I could find no examples where DIN was unused.

    If we only define 1 axr line (codec DOUT), will the driver still work?

    Also - can we simply remove DIN references (e.g. routing elements "Headphone Jack",  "HPLOUT", "Headphone Jack", "HPROUT"" and widget elements "Headphone", "Headphone Jack") from the device tree without effect?

    Regards,

    Mark J

  • Mark,

    Mark Janke said:

    I would like to confirm that it is ok to use the the simple audio support without any DIN to the codec. Importantly - we only connect to the codec DOUT and not DIN. When reading about this driver, I could find no examples where DIN was unused.

    If we only define 1 axr line (codec DOUT), will the driver still work?

    Yes, driver should work.

    We have the same configuration in SPRAC97 application report, only MCASP1_AXR0 data pin is used for RX, no other data pin used for TX/RX.

    mcasp1_pins: mcasp1_pins {
        pinctrl-single,pins = <
            /* sink must enable receivers */
            0x1a0 0x23 /* P9_42 mcasp1_aclkx - bit clock */
            0x1a4 0x23 /* P9_27 mcasp1_fsx - frame sync */
            0x1a8 0x23 /* P9_41 mcasp1_axr0 - i2s input */
        >;
    };

    &mcasp1 {
        #sound-dai-cells = <0>;
        pinctrl-names = "default";
        pinctrl-0 = <&mcasp1_pins>;
        status = "okay";
        op-mode = <0>; /* MCASP_IIS_MODE */
        tdm-slots = <2>;
        num-serializer = <4>;
        serial-dir = < /* 1 TX 2 RX 0 unused */
                2 0 0 0
            >;
        rx-num-evt = <1>;
        tx-num-evt = <1>;
    };

    Also in below wiki page, only mcasp0_axr0 data pin is used for TX, no other data pin is used for TX/RX

    &am33xx_pinmux {
        mcasp0_pins: mcasp0_pins {
            pinctrl-single,pins = <
                0x190 (PIN_OUTPUT_PULLDOWN | MUX_MODE0)    /* mcasp0_aclkx */
                0x194 (PIN_OUTPUT_PULLDOWN | MUX_MODE0)    /* mcasp0_fsx*/
                0x198 (PIN_OUTPUT_PULLDOWN | MUX_MODE0)    /* mcasp0_axr0 */
            >;
        };
    };

    &mcasp0 {
            pinctrl-names = "default";
            pinctrl-0 = <&mcasp0_pins>;
            status = "okay";
            op-mode = <0>;          /* MCASP_IIS_MODE */
            tdm-slots = <2>;
            /* 16 serializer */
            serial-dir = <  /* 0: INACTIVE, 1: TX, 2: RX */
                1 0 0 0
            >;
            tx-num-evt = <32>;
            rx-num-evt = <32>;
    };

     

    Mark Janke said:
    Also - can we simply remove DIN references (e.g. routing elements "Headphone Jack",  "HPLOUT", "Headphone Jack", "HPROUT"" and widget elements "Headphone", "Headphone Jack") from the device tree without effect?

    "simple-audio-card,widgets" and "simple-audio-card,routing" are optional properties, thus you can remove from your DTS file.

    linux-kernel/devicetree/bindings/sound/simple-card.txt

    The McASP configuration in SPRAC97 application report do not use widgets/routing in DTS file.

    sound1: sound@1 {
        compatible = "simple-audio-card";
        simple-audio-card,name = "PCM5102a";
        simple-audio-card,format = "i2s";
        simple-audio-card,bitclock-master = <&sound1_master>;
        simple-audio-card,frame-master = <&sound1_master>;
        simple-audio-card,bitclock-inversion;

        simple-audio-card,cpu {
            sound-dai = <&mcasp1>;
        };

        sound1_master: simple-audio-card,codec {
            #sound-dai-cells = <0>;
            sound-dai = <&pcm5102a>;
            clocks = <&mcasp1_fck>;
            clock-names = "mclk";
        };
    };

  • Hi Pavel,

    This is very helpful. Thank you again.

    Regards,

    Mark J

  • Hi Pavel,

    The reference that you provided that most directly aligned to our application was the Sprac97:

    We have setup our device tree accordingly with: 

    cpus {


    cpu@0 {


    cpu0-supply = <&dcdc2_reg>;
    };


    };

    memory {
    device_type = "memory";
    reg = <0x80000000 0x10000000>; /* 256 MB */
    };


    vmmcsd_fixed: fixedregulator@0 {
    compatible = "regulator-fixed";
    regulator-name = "vmmcsd_fixed";
    regulator-min-microvolt = <3300000>;
    regulator-max-microvolt = <3300000>;
    };

    ocp {

    pcm5102a: pcm5102a {
    #sound-dai-cells = <0>;
    compatible = "ti,pcm5102a";
    status = "okay";
    };

    sound1: sound@1 {
    compatible = "simple-audio-card";
    simple-audio-card,name = "PCM5102a";
    simple-audio-card,format = "i2s";
    simple-audio-card,bitclock-master = <&sound1_master>;
    simple-audio-card,frame-master = <&sound1_master>;
    simple-audio-card,bitclock-inversion;
    simple-audio-card,cpu {
    sound-dai = <&mcasp0>;
    };
    sound1_master: simple-audio-card,codec {
    #sound-dai-cells = <0>;
    sound-dai = <&pcm5102a>;
    clocks = <&mcasp0_fck>;
    clock-names = "mclk";
    };

    };

    };

    mcasp0_pins: mcasp0_pins {
    pinctrl-single,pins = <
    0x1a0 ( PIN_INPUT_PULLDOWN | MUX_MODE0 ) /* (B12) mcasp0_aclkr.mcasp0_aclkr */
    0x1a4 ( PIN_INPUT_PULLDOWN | MUX_MODE0 ) /* (C13) mcasp0_fsr.mcasp0_fsr */
    0x1a8 ( PIN_INPUT_PULLDOWN | MUX_MODE0 ) /* (D13) mcasp0_axr1.mcasp0_axr1 */
    >;
    };

    &mcasp0 {
    #sound-dai-cells = <0>;
    pinctrl-names = "default";
    pinctrl-0 = <&mcasp0_pins>;
    status = "okay";
    op-mode = <0>; /* MCASP_IIS_MODE */
    tdm-slots = <2>;
    num-serializer = <4>;
    serial-dir = < /* 1 TX 2 RX 0 unused */
    0 2 0 0
    >;
    rx-num-evt = <1>;
    tx-num-evt = <1>;
    };

    ... but it appears that the Sprac97 doc is missing a step. Specifically, the machine driver tie in.

    I was getting a pcm5102a_dai "not used" error and then found this other example:

    ... that shows the "ALSA Machine Layer Configuration" that is missing from the Sprac97 doc. Using this as a reference, I would guess that the following davinci-evm.c additions might be appropriate (for capture only):

    static struct snd_soc_dai_link evm_dai_pcm5102a = {
    .name = "PCM5102A", //This is chosen to match the eg.
    .stream_name = "Capture", //This comes from the PCM5102a driver create previously.
    .codec_dai_name = "pcm5102a-hifi", //This comes from the PCM5102a driver create previously
    .ops = &evm_ops , 
    .dai_fmt = (SND_SOC_DAIFMT_CBS_CFS | SND_SOC_DAIFMT_I2S |
       SND_SOC_DAIFMT_IB_NF),
    };
    I have used a .stream_name = "Capture" rather than "Playback" and because we are using the external clock source for I2S capture, I am referencing the standard evm_ops struct instead of the custom pcm5102a_ops struct (that appears to be used because of the Playback use of the host clock).
    I have also added the first of_device_id entry as suggested:
    static const struct of_device_id davinci_evm_dt_ids[] = {
    {
    .compatible = "ti,pcm5102a-evm-audio",
    .data = &evm_dai_pcm5102a,
    },
    {
    .compatible = "ti,da830-evm-audio",
    .data = &evm_dai_tlv320aic3x,
    },
    {
    .compatible = "ti,beaglebone-black-audio",
    .data = &evm_dai_tda998x_hdmi,
    },
    { /* sentinel */ }
    };

    Are my edits to davinci-evm.c ok ... given that we are simply capturing and not playing back and that we are using the external device clock?

    I rebuild my kernel without error, but I cannot find any sound cards. 

    "dmesg | grep pcm" returns nothing.

    Thanks,

    Mark J

  • Mark,

    In latest 4.x kernels, DTS entries will replace davinci-evm.c settings. Refer to the below e2e thread for more info:

    e2e.ti.com/.../2477663

    Regards,
    Pavel
  • Hi Pavel,

    We started off with the unaltered davinci-evm.c and noticed the issue below (dts entries as described above in this thread).

    When we compiled, we got a warning on pcm5102a.c that "pcm5102a_dai" was defined but not used. This is what led us to change davinci-evm.c after some online research.

    Before the davinci-evm.c change, startup code indicated that an HDMI driver was loading:

    [    8.401499] input: HDA Intel PCH HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:1b.0/sound/card0/input17

    ... but no sound cards were found. This suggested the broken link between the selection of the pcm5102a in the dts file and lack of tie-in within the davinci-evm.c file.

    After the davinci-evm.c alteration - we see nothing in the startup and there are still no cards list-able.

    I see that there are 2 "placeholder" structs already defined within davinci-evm.c:

    /*
    * The structs are used as place holders. They will be completely
    * filled with data from dt node.
    */
    static struct snd_soc_dai_link evm_dai_tlv320aic3x = {
    .name = "TLV320AIC3X",
    .stream_name = "AIC3X",
    .codec_dai_name = "tlv320aic3x-hifi",
    .ops = &evm_ops,
    .init = evm_aic3x_init,
    .dai_fmt = SND_SOC_DAIFMT_DSP_B | SND_SOC_DAIFMT_CBM_CFM |
    SND_SOC_DAIFMT_IB_NF,
    };

    static struct snd_soc_dai_link evm_dai_tda998x_hdmi = {
    .name = "NXP TDA998x HDMI Chip",
    .stream_name = "HDMI",
    .codec_dai_name = "hdmi-hifi",
    .ops = &evm_tda998x_ops,
    .init = evm_tda998x_init,
    .dai_fmt = (SND_SOC_DAIFMT_CBS_CFS | SND_SOC_DAIFMT_I2S |
    SND_SOC_DAIFMT_IB_NF),
    };

    Perhaps the second is used by default (it has an "HDMI" label)?

    Because we are not required to use the pcm5102a, we should simply change the .config file (menuconfig) to support "tlv320aic3x" and disable HDMI and then we change our dts file to ref tlv320aic3x?

    One concern is that its .dai_format is set to SND_SOC_DAIFMT_DSP_B | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_IB_NF

    ... and we want:

    SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_IB_NF

    ... but I think that we can make this simple change to davinci-evm.c define for evm_dai_tlv320aic3x to handle this - correct?

    Thanks again.

    Mark J

  • After some consideration, I don't think switching to use the tlv320aic3x is a good idea as the driver is not a "dummy" as is the pcm5102a option described within the sprac97.pdf.

    I tried (using menuconfig) to remove all codecs except the pcm5102a, but could not. I am left with just the pcm5102a and the tlv320aic3x. For some reason, only "m" and "*" options are available for the tlv320aic3x. Perhaps it is a dependency for something else that is enabled?

    Upon device start, I am seeing the following:

    [    0.280870] Advanced Linux Sound Architecture Driver Initialized.

    ...

    [    3.115477] ALSA device list:

    [    3.118478]   No soundcards found.

    ...

    [    5.199680] Error: Driver 'asoc-simple-card' is already registered, aborting...

    ...

    [    5.420715] Error: Driver 'asoc-simple-card' is already registered, aborting...

    Full startup.txt attached.

    2318.startup.txt
    Starting kernel ...
    
    [    0.000000] Booting Linux on physical CPU 0x0
    [    0.000000] Initializing cgroup subsys cpuset
    [    0.000000] Initializing cgroup subsys cpu
    [    0.000000] Initializing cgroup subsys cpuacct
    [    0.000000] Linux version 4.1.6-g52c4aa7 (dworx@dworx-System-Product-Name) (gcc version 4.9.3 20150413 (prerelease) (Linaro GCC 4.9-2015.05) ) #9 PREEMPT Tue Apr 17 11:27:46 PDT 2018
    [    0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c5387d
    [    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
    [    0.000000] Machine model: TI AM335x BeagleBone Black
    [    0.000000] cma: Reserved 24 MiB at 0x9e800000
    [    0.000000] Memory policy: Data cache writeback
    [    0.000000] CPU: All CPU(s) started in SVC mode.
    [    0.000000] AM335X ES2.1 (sgx neon )
    [    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 129920
    [    0.000000] Kernel command line: console=ttyO0,115200n8 root=PARTUUID=00000000-02 rw rootfstype=ext4 rootwait
    [    0.000000] PID hash table entries: 2048 (order: 1, 8192 bytes)
    [    0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
    [    0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
    [    0.000000] Memory: 485216K/524288K available (6339K kernel code, 258K rwdata, 2124K rodata, 260K init, 230K bss, 14496K reserved, 24576K cma-reserved, 0K highmem)
    [    0.000000] Virtual kernel memory layout:
    [    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    [    0.000000]     fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
    [    0.000000]     vmalloc : 0xe0800000 - 0xff000000   ( 488 MB)
    [    0.000000]     lowmem  : 0xc0000000 - 0xe0000000   ( 512 MB)
    [    0.000000]     pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
    [    0.000000]     modules : 0xbf000000 - 0xbfe00000   (  14 MB)
    [    0.000000]       .text : 0xc0008000 - 0xc084c0ac   (8465 kB)
    [    0.000000]       .init : 0xc084d000 - 0xc088e000   ( 260 kB)
    [    0.000000]       .data : 0xc088e000 - 0xc08ceb68   ( 259 kB)
    [    0.000000]        .bss : 0xc08d1000 - 0xc090a8f8   ( 231 kB)
    [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
    [    0.000000] Preemptible hierarchical RCU implementation.
    [    0.000000]  Additional per-CPU info printed with stalls.
    [    0.000000] NR_IRQS:16 nr_irqs:16 16
    [    0.000000] IRQ: Found an INTC at 0xfa200000 (revision 5.0) with 128 interrupts
    [    0.000000] OMAP clockevent source: timer2 at 24000000 Hz
    [    0.000014] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns
    [    0.000030] clocksource timer1: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
    [    0.000040] OMAP clocksource: timer1 at 24000000 Hz
    [    0.000200] Console: colour dummy device 80x30
    [    0.000222] WARNING: Your 'console=ttyO0' has been replaced by 'ttyS0'
    [    0.000228] This ensures that you still see kernel messages. Please
    [    0.000232] update your kernel commandline.
    [    0.000248] Calibrating delay loop... 996.14 BogoMIPS (lpj=4980736)
    [    0.089335] pid_max: default: 32768 minimum: 301
    [    0.089428] Security Framework initialized
    [    0.089474] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
    [    0.089484] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
    [    0.090086] Initializing cgroup subsys blkio
    [    0.090109] Initializing cgroup subsys memory
    [    0.090145] Initializing cgroup subsys devices
    [    0.090158] Initializing cgroup subsys freezer
    [    0.090171] Initializing cgroup subsys perf_event
    [    0.090194] CPU: Testing write buffer coherency: ok
    [    0.090548] Setting up static identity map for 0x80008200 - 0x80008270
    [    0.091889] devtmpfs: initialized
    [    0.099782] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3
    [    0.106945] omap_hwmod: tptc0 using broken dt data from edma
    [    0.107038] omap_hwmod: tptc1 using broken dt data from edma
    [    0.107115] omap_hwmod: tptc2 using broken dt data from edma
    [    0.111361] omap_hwmod: debugss: _wait_target_disable failed
    [    0.165702] clocksource jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
    [    0.167662] pinctrl core: initialized pinctrl subsystem
    [    0.168786] NET: Registered protocol family 16
    [    0.170823] DMA: preallocated 256 KiB pool for atomic coherent allocations
    [    0.199323] cpuidle: using governor ladder
    [    0.229314] cpuidle: using governor menu
    [    0.232351] OMAP GPIO hardware version 0.1
    [    0.233338] omap_gpio 481ac000.gpio: could not find pctldev for node /ocp/l4_wkup@44c00000/scm@210000/pinmux@800/gpio2_pins_default, deferring probe
    [    0.233573] omap_gpio 481ae000.gpio: could not find pctldev for node /ocp/l4_wkup@44c00000/scm@210000/pinmux@800/gpio3_pins_default, deferring probe
    [    0.238548] No ATAGs?
    [    0.238577] hw-breakpoint: debug architecture 0x4 unsupported.
    [    0.276202] edma-dma-engine edma-dma-engine.0: TI EDMA DMA engine driver
    [    0.278751] vgaarb: loaded
    [    0.279210] SCSI subsystem initialized
    [    0.279753] omap_i2c 44e0b000.i2c: could not find pctldev for node /ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_i2c0_pins, deferring probe
    [    0.279802] omap_i2c 4802a000.i2c: could not find pctldev for node /ocp/l4_wkup@44c00000/scm@210000/pinmux@800/led_batt_i2c1_pins_default, deferring probe
    [    0.279911] pps_core: LinuxPPS API ver. 1 registered
    [    0.279918] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
    [    0.279946] PTP clock support registered
    [    0.280692] omap-mailbox 480c8000.mailbox: omap mailbox rev 0x400
    [    0.280870] Advanced Linux Sound Architecture Driver Initialized.
    [    0.281641] Switched to clocksource timer1
    [    0.290404] NET: Registered protocol family 2
    [    0.291148] TCP established hash table entries: 4096 (order: 2, 16384 bytes)
    [    0.291193] TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
    [    0.291232] TCP: Hash tables configured (established 4096 bind 4096)
    [    0.291308] UDP hash table entries: 256 (order: 0, 4096 bytes)
    [    0.291325] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
    [    0.291469] NET: Registered protocol family 1
    [    0.291885] RPC: Registered named UNIX socket transport module.
    [    0.291898] RPC: Registered udp transport module.
    [    0.291904] RPC: Registered tcp transport module.
    [    0.291909] RPC: Registered tcp NFSv4.1 backchannel transport module.
    [    0.292685] CPU PMU: Failed to parse /pmu/interrupt-affinity[0]
    [    0.292727] hw perfevents: enabled with armv7_cortex_a8 PMU driver, 5 counters available
    [    0.294344] futex hash table entries: 256 (order: -1, 3072 bytes)
    [    0.294430] audit: initializing netlink subsys (disabled)
    [    0.294492] audit: type=2000 audit(0.280:1): initialized
    [    0.300724] VFS: Disk quotas dquot_6.6.0
    [    0.300908] VFS: Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
    [    0.302903] NFS: Registering the id_resolver key type
    [    0.302972] Key type id_resolver registered
    [    0.302980] Key type id_legacy registered
    [    0.303046] jffs2: version 2.2. (NAND) (SUMMARY)  © 2001-2006 Red Hat, Inc.
    [    0.305233] NET: Registered protocol family 38
    [    0.305300] io scheduler noop registered
    [    0.305313] io scheduler deadline registered
    [    0.305367] io scheduler cfq registered (default)
    [    0.306269] pinctrl-single 44e10800.pinmux: 142 pins at pa f9e10800 size 568
    [    0.307861] wkup_m3_ipc 44e11324.wkup_m3_ipc: could not get rproc handle
    [    0.308762] Serial: 8250/16550 driver, 10 ports, IRQ sharing enabled
    [    0.312001] 44e09000.serial: ttyS0 at MMIO 0x44e09000 (irq = 91, base_baud = 3000000) is a 8250
    [    0.989671] console [ttyS0] enabled
    [    0.994026] 481a6000.serial: ttyS3 at MMIO 0x481a6000 (irq = 92, base_baud = 3000000) is a 8250
    [    1.003607] [drm] Initialized drm 1.1.0 20060810
    [    1.017177] brd: module loaded
    [    1.024615] loop: module loaded
    [    1.028549] mtdoops: mtd device (mtddev=name/number) must be supplied
    [    1.036631] spidev spi1.0: buggy DT: spidev listed directly in DT
    [    1.042890] ------------[ cut here ]------------
    [    1.047541] WARNING: CPU: 0 PID: 1 at drivers/spi/spidev.c:730 spidev_probe+0x178/0x1bc()
    [    1.055770] Modules linked in:
    [    1.058851] CPU: 0 PID: 1 Comm: swapper Not tainted 4.1.6-g52c4aa7 #9
    [    1.065328] Hardware name: Generic AM33XX (Flattened Device Tree)
    [    1.071444] Backtrace: 
    [    1.073935] [<c0012b10>] (dump_backtrace) from [<c0012d30>] (show_stack+0x18/0x1c)
    [    1.081534]  r7:c07f1c14 r6:000002da r5:00000009 r4:00000000
    [    1.087258] [<c0012d18>] (show_stack) from [<c0630274>] (dump_stack+0x20/0x28)
    [    1.094528] [<c0630254>] (dump_stack) from [<c0037d14>] (warn_slowpath_common+0x7c/0xb4)
    [    1.102666] [<c0037c98>] (warn_slowpath_common) from [<c0037df0>] (warn_slowpath_null+0x24/0x2c)
    [    1.111484]  r8:00000000 r7:c08bf780 r6:00000000 r5:dda9ac00 r4:c08bf770
    [    1.118256] [<c0037dcc>] (warn_slowpath_null) from [<c0478ab0>] (spidev_probe+0x178/0x1bc)
    [    1.126579] [<c0478938>] (spidev_probe) from [<c0476270>] (spi_drv_probe+0x58/0x7c)
    [    1.134275]  r8:00000000 r7:c08bf780 r6:00000000 r5:dda9ac00 r4:c08bf770
    [    1.141039] [<c0476218>] (spi_drv_probe) from [<c0401820>] (driver_probe_device+0x17c/0x2c0)
    [    1.149521]  r5:dda9ac00 r4:c0901d80
    [    1.153134] [<c04016a4>] (driver_probe_device) from [<c04019ac>] (__device_attach+0x48/0x4c)
    [    1.161604]  r9:00000000 r8:c0901d5c r7:00000000 r6:c0401964 r5:dda9ac00 r4:c08bf780
    [    1.169424] [<c0401964>] (__device_attach) from [<c03ffc38>] (bus_for_each_drv+0x6c/0xa0)
    [    1.177643]  r5:dda9ac00 r4:00000000
    [    1.181244] [<c03ffbcc>] (bus_for_each_drv) from [<c0401664>] (device_attach+0x78/0x90)
    [    1.189289]  r6:dda9ac34 r5:dda9ac00 r4:dda9ac00
    [    1.193955] [<c04015ec>] (device_attach) from [<c0400cc0>] (bus_probe_device+0x8c/0xb4)
    [    1.201998]  r7:00000000 r6:c08bf678 r5:dda9ac00 r4:dda9ac08
    [    1.207704] [<c0400c34>] (bus_probe_device) from [<c03fede4>] (device_add+0x3c4/0x570)
    [    1.215662]  r7:00000000 r6:dda9ac00 r5:dda6c800 r4:dda9ac08
    [    1.221367] [<c03fea20>] (device_add) from [<c0476978>] (spi_add_device+0x94/0x138)
    [    1.229063]  r10:dd9de8bc r9:dd8e1010 r8:00000000 r7:dd8e1010 r6:dda6c800 r5:00000000
    [    1.236964]  r4:dda9ac00
    [    1.239512] [<c04768e4>] (spi_add_device) from [<c04782dc>] (spi_register_master+0x438/0x6f4)
    [    1.248080]  r7:dda9ac00 r6:00000000 r5:de365dac r4:dda6c800
    [    1.253801] [<c0477ea4>] (spi_register_master) from [<c04785cc>] (devm_spi_register_master+0x34/0x70)
    [    1.263066]  r10:dd9de8bc r9:dda6c968 r8:dda6ca20 r7:dd8e1010 r6:dda6c800 r5:dda94010
    [    1.270954]  r4:00000000
    [    1.273516] [<c0478598>] (devm_spi_register_master) from [<c047a1dc>] (omap2_mcspi_probe+0x304/0x3b8)
    [    1.282781]  r7:dd8e1000 r6:00000088 r5:dda6c800 r4:00000000
    [    1.288493] [<c0479ed8>] (omap2_mcspi_probe) from [<c0403224>] (platform_drv_probe+0x4c/0xac)
    [    1.297061]  r10:00000000 r9:c0882158 r8:00000000 r7:fffffdfb r6:c08bf7d0 r5:dd8e1010
    [    1.304961]  r4:c0901d80
    [    1.307510] [<c04031d8>] (platform_drv_probe) from [<c0401820>] (driver_probe_device+0x17c/0x2c0)
    [    1.316427]  r7:c08bf7d0 r6:00000000 r5:dd8e1010 r4:c0901d80
    [    1.322145] [<c04016a4>] (driver_probe_device) from [<c0401a44>] (__driver_attach+0x94/0x98)
    [    1.330614]  r9:c0882158 r8:c08d1000 r7:00000000 r6:dd8e1044 r5:c08bf7d0 r4:dd8e1010
    [    1.338434] [<c04019b0>] (__driver_attach) from [<c03ffb74>] (bus_for_each_dev+0x74/0xa8)
    [    1.346653]  r7:00000000 r6:c04019b0 r5:c08bf7d0 r4:00000000
    [    1.352371] [<c03ffb00>] (bus_for_each_dev) from [<c040128c>] (driver_attach+0x20/0x28)
    [    1.360406]  r6:c08b5510 r5:dda99880 r4:c08bf7d0
    [    1.365076] [<c040126c>] (driver_attach) from [<c0400f40>] (bus_add_driver+0x148/0x1f4)
    [    1.373127] [<c0400df8>] (bus_add_driver) from [<c0402114>] (driver_register+0x80/0x100)
    [    1.381248]  r7:dda96bc0 r6:c08926a0 r5:c0873c30 r4:c08bf7d0
    [    1.386967] [<c0402094>] (driver_register) from [<c040315c>] (__platform_driver_register+0x50/0x64)
    [    1.396058]  r5:c0873c30 r4:c08926a0
    [    1.399666] [<c040310c>] (__platform_driver_register) from [<c0873c48>] (omap2_mcspi_driver_init+0x18/0x20)
    [    1.409463] [<c0873c30>] (omap2_mcspi_driver_init) from [<c0009664>] (do_one_initcall+0x88/0x1e0)
    [    1.418389] [<c00095dc>] (do_one_initcall) from [<c084de78>] (kernel_init_freeable+0x178/0x240)
    [    1.427131]  r10:c084d5e8 r9:c0882158 r8:c08d1000 r7:c088dcb4 r6:c08d1000 r5:c0882150
    [    1.435031]  r4:00000006
    [    1.437580] [<c084dd00>] (kernel_init_freeable) from [<c062d304>] (kernel_init+0x10/0xf4)
    [    1.445800]  r10:00000000 r9:00000000 r8:00000000 r7:00000000 r6:00000000 r5:c062d2f4
    [    1.453702]  r4:00000000
    [    1.456251] [<c062d2f4>] (kernel_init) from [<c000f928>] (ret_from_fork+0x14/0x2c)
    [    1.463860]  r5:c062d2f4 r4:00000000
    [    1.467487] ---[ end trace a7bd6ba4e9271b32 ]---
    [    1.472617] spidev spi1.1: buggy DT: spidev listed directly in DT
    [    1.478742] ------------[ cut here ]------------
    [    1.483420] WARNING: CPU: 0 PID: 1 at drivers/spi/spidev.c:730 spidev_probe+0x178/0x1bc()
    [    1.491644] Modules linked in:
    [    1.494718] CPU: 0 PID: 1 Comm: swapper Tainted: G        W       4.1.6-g52c4aa7 #9
    [    1.502414] Hardware name: Generic AM33XX (Flattened Device Tree)
    [    1.508529] Backtrace: 
    [    1.510997] [<c0012b10>] (dump_backtrace) from [<c0012d30>] (show_stack+0x18/0x1c)
    [    1.518606]  r7:c07f1c14 r6:000002da r5:00000009 r4:00000000
    [    1.524329] [<c0012d18>] (show_stack) from [<c0630274>] (dump_stack+0x20/0x28)
    [    1.531584] [<c0630254>] (dump_stack) from [<c0037d14>] (warn_slowpath_common+0x7c/0xb4)
    [    1.539723] [<c0037c98>] (warn_slowpath_common) from [<c0037df0>] (warn_slowpath_null+0x24/0x2c)
    [    1.548553]  r8:00000000 r7:c08bf780 r6:00000000 r5:dda52000 r4:c08bf770
    [    1.555325] [<c0037dcc>] (warn_slowpath_null) from [<c0478ab0>] (spidev_probe+0x178/0x1bc)
    [    1.563640] [<c0478938>] (spidev_probe) from [<c0476270>] (spi_drv_probe+0x58/0x7c)
    [    1.571325]  r8:00000000 r7:c08bf780 r6:00000000 r5:dda52000 r4:c08bf770
    [    1.578096] [<c0476218>] (spi_drv_probe) from [<c0401820>] (driver_probe_device+0x17c/0x2c0)
    [    1.586578]  r5:dda52000 r4:c0901d80
    [    1.590181] [<c04016a4>] (driver_probe_device) from [<c04019ac>] (__device_attach+0x48/0x4c)
    [    1.598661]  r9:00000000 r8:c0901d5c r7:00000000 r6:c0401964 r5:dda52000 r4:c08bf780
    [    1.606480] [<c0401964>] (__device_attach) from [<c03ffc38>] (bus_for_each_drv+0x6c/0xa0)
    [    1.614699]  r5:dda52000 r4:00000000
    [    1.618300] [<c03ffbcc>] (bus_for_each_drv) from [<c0401664>] (device_attach+0x78/0x90)
    [    1.626344]  r6:dda52034 r5:dda52000 r4:dda52000
    [    1.630999] [<c04015ec>] (device_attach) from [<c0400cc0>] (bus_probe_device+0x8c/0xb4)
    [    1.639044]  r7:00000000 r6:c08bf678 r5:dda52000 r4:dda52008
    [    1.644761] [<c0400c34>] (bus_probe_device) from [<c03fede4>] (device_add+0x3c4/0x570)
    [    1.652718]  r7:00000000 r6:dda52000 r5:dda6c800 r4:dda52008
    [    1.658425] [<c03fea20>] (device_add) from [<c0476978>] (spi_add_device+0x94/0x138)
    [    1.666122]  r10:dd9de8bc r9:dd8e1010 r8:00000000 r7:dd8e1010 r6:dda6c800 r5:00000000
    [    1.674021]  r4:dda52000
    [    1.676569] [<c04768e4>] (spi_add_device) from [<c04782dc>] (spi_register_master+0x438/0x6f4)
    [    1.685138]  r7:dda52000 r6:00000000 r5:de365f94 r4:dda6c800
    [    1.690846] [<c0477ea4>] (spi_register_master) from [<c04785cc>] (devm_spi_register_master+0x34/0x70)
    [    1.700111]  r10:dd9de8bc r9:dda6c968 r8:dda6ca20 r7:dd8e1010 r6:dda6c800 r5:dda94010
    [    1.708010]  r4:00000000
    [    1.710560] [<c0478598>] (devm_spi_register_master) from [<c047a1dc>] (omap2_mcspi_probe+0x304/0x3b8)
    [    1.719825]  r7:dd8e1000 r6:00000088 r5:dda6c800 r4:00000000
    [    1.725546] [<c0479ed8>] (omap2_mcspi_probe) from [<c0403224>] (platform_drv_probe+0x4c/0xac)
    [    1.734114]  r10:00000000 r9:c0882158 r8:00000000 r7:fffffdfb r6:c08bf7d0 r5:dd8e1010
    [    1.742013]  r4:c0901d80
    [    1.744563] [<c04031d8>] (platform_drv_probe) from [<c0401820>] (driver_probe_device+0x17c/0x2c0)
    [    1.753480]  r7:c08bf7d0 r6:00000000 r5:dd8e1010 r4:c0901d80
    [    1.759186] [<c04016a4>] (driver_probe_device) from [<c0401a44>] (__driver_attach+0x94/0x98)
    [    1.767667]  r9:c0882158 r8:c08d1000 r7:00000000 r6:dd8e1044 r5:c08bf7d0 r4:dd8e1010
    [    1.775484] [<c04019b0>] (__driver_attach) from [<c03ffb74>] (bus_for_each_dev+0x74/0xa8)
    [    1.783703]  r7:00000000 r6:c04019b0 r5:c08bf7d0 r4:00000000
    [    1.789410] [<c03ffb00>] (bus_for_each_dev) from [<c040128c>] (driver_attach+0x20/0x28)
    [    1.797454]  r6:c08b5510 r5:dda99880 r4:c08bf7d0
    [    1.802120] [<c040126c>] (driver_attach) from [<c0400f40>] (bus_add_driver+0x148/0x1f4)
    [    1.810158] [<c0400df8>] (bus_add_driver) from [<c0402114>] (driver_register+0x80/0x100)
    [    1.818291]  r7:dda96bc0 r6:c08926a0 r5:c0873c30 r4:c08bf7d0
    [    1.824009] [<c0402094>] (driver_register) from [<c040315c>] (__platform_driver_register+0x50/0x64)
    [    1.833100]  r5:c0873c30 r4:c08926a0
    [    1.836706] [<c040310c>] (__platform_driver_register) from [<c0873c48>] (omap2_mcspi_driver_init+0x18/0x20)
    [    1.846502] [<c0873c30>] (omap2_mcspi_driver_init) from [<c0009664>] (do_one_initcall+0x88/0x1e0)
    [    1.855426] [<c00095dc>] (do_one_initcall) from [<c084de78>] (kernel_init_freeable+0x178/0x240)
    [    1.864168]  r10:c084d5e8 r9:c0882158 r8:c08d1000 r7:c088dcb4 r6:c08d1000 r5:c0882150
    [    1.872066]  r4:00000006
    [    1.874616] [<c084dd00>] (kernel_init_freeable) from [<c062d304>] (kernel_init+0x10/0xf4)
    [    1.882835]  r10:00000000 r9:00000000 r8:00000000 r7:00000000 r6:00000000 r5:c062d2f4
    [    1.890720]  r4:00000000
    [    1.893279] [<c062d2f4>] (kernel_init) from [<c000f928>] (ret_from_fork+0x14/0x2c)
    [    1.900876]  r5:c062d2f4 r4:00000000
    [    1.904485] ---[ end trace a7bd6ba4e9271b33 ]---
    [    1.909945] spidev spi2.0: buggy DT: spidev listed directly in DT
    [    1.916134] ------------[ cut here ]------------
    [    1.920777] WARNING: CPU: 0 PID: 1 at drivers/spi/spidev.c:730 spidev_probe+0x178/0x1bc()
    [    1.928999] Modules linked in:
    [    1.932085] CPU: 0 PID: 1 Comm: swapper Tainted: G        W       4.1.6-g52c4aa7 #9
    [    1.939770] Hardware name: Generic AM33XX (Flattened Device Tree)
    [    1.945896] Backtrace: 
    [    1.948367] [<c0012b10>] (dump_backtrace) from [<c0012d30>] (show_stack+0x18/0x1c)
    [    1.955977]  r7:c07f1c14 r6:000002da r5:00000009 r4:00000000
    [    1.961697] [<c0012d18>] (show_stack) from [<c0630274>] (dump_stack+0x20/0x28)
    [    1.968952] [<c0630254>] (dump_stack) from [<c0037d14>] (warn_slowpath_common+0x7c/0xb4)
    [    1.977090] [<c0037c98>] (warn_slowpath_common) from [<c0037df0>] (warn_slowpath_null+0x24/0x2c)
    [    1.985921]  r8:00000000 r7:c08bf780 r6:00000000 r5:dda52400 r4:c08bf770
    [    1.992692] [<c0037dcc>] (warn_slowpath_null) from [<c0478ab0>] (spidev_probe+0x178/0x1bc)
    [    2.000999] [<c0478938>] (spidev_probe) from [<c0476270>] (spi_drv_probe+0x58/0x7c)
    [    2.008703]  r8:00000000 r7:c08bf780 r6:00000000 r5:dda52400 r4:c08bf770
    [    2.015477] [<c0476218>] (spi_drv_probe) from [<c0401820>] (driver_probe_device+0x17c/0x2c0)
    [    2.023959]  r5:dda52400 r4:c0901d80
    [    2.027562] [<c04016a4>] (driver_probe_device) from [<c04019ac>] (__device_attach+0x48/0x4c)
    [    2.036042]  r9:00000000 r8:c0901d5c r7:00000000 r6:c0401964 r5:dda52400 r4:c08bf780
    [    2.043861] [<c0401964>] (__device_attach) from [<c03ffc38>] (bus_for_each_drv+0x6c/0xa0)
    [    2.052081]  r5:dda52400 r4:00000000
    [    2.055682] [<c03ffbcc>] (bus_for_each_drv) from [<c0401664>] (device_attach+0x78/0x90)
    [    2.063728]  r6:dda52434 r5:dda52400 r4:dda52400
    [    2.068383] [<c04015ec>] (device_attach) from [<c0400cc0>] (bus_probe_device+0x8c/0xb4)
    [    2.076429]  r7:00000000 r6:c08bf678 r5:dda52400 r4:dda52408
    [    2.082146] [<c0400c34>] (bus_probe_device) from [<c03fede4>] (device_add+0x3c4/0x570)
    [    2.090093]  r7:00000000 r6:dda52400 r5:dda6cc00 r4:dda52408
    [    2.095811] [<c03fea20>] (device_add) from [<c0476978>] (spi_add_device+0x94/0x138)
    [    2.103507]  r10:dd9de97c r9:dd8e1210 r8:00000000 r7:dd8e1210 r6:dda6cc00 r5:00000000
    [    2.111397]  r4:dda52400
    [    2.113956] [<c04768e4>] (spi_add_device) from [<c04782dc>] (spi_register_master+0x438/0x6f4)
    [    2.122524]  r7:dda52400 r6:00000000 r5:de36645c r4:dda6cc00
    [    2.128231] [<c0477ea4>] (spi_register_master) from [<c04785cc>] (devm_spi_register_master+0x34/0x70)
    [    2.137496]  r10:dd9de97c r9:dda6cd68 r8:dda6ce20 r7:dd8e1210 r6:dda6cc00 r5:dda94c90
    [    2.145396]  r4:00000000
    [    2.147945] [<c0478598>] (devm_spi_register_master) from [<c047a1dc>] (omap2_mcspi_probe+0x304/0x3b8)
    [    2.157211]  r7:dd8e1200 r6:00000088 r5:dda6cc00 r4:00000000
    [    2.162930] [<c0479ed8>] (omap2_mcspi_probe) from [<c0403224>] (platform_drv_probe+0x4c/0xac)
    [    2.171488]  r10:00000000 r9:c0882158 r8:00000000 r7:fffffdfb r6:c08bf7d0 r5:dd8e1210
    [    2.179387]  r4:c0901d80
    [    2.181948] [<c04031d8>] (platform_drv_probe) from [<c0401820>] (driver_probe_device+0x17c/0x2c0)
    [    2.190853]  r7:c08bf7d0 r6:00000000 r5:dd8e1210 r4:c0901d80
    [    2.196571] [<c04016a4>] (driver_probe_device) from [<c0401a44>] (__driver_attach+0x94/0x98)
    [    2.205052]  r9:c0882158 r8:c08d1000 r7:00000000 r6:dd8e1244 r5:c08bf7d0 r4:dd8e1210
    [    2.212869] [<c04019b0>] (__driver_attach) from [<c03ffb74>] (bus_for_each_dev+0x74/0xa8)
    [    2.221077]  r7:00000000 r6:c04019b0 r5:c08bf7d0 r4:00000000
    [    2.226795] [<c03ffb00>] (bus_for_each_dev) from [<c040128c>] (driver_attach+0x20/0x28)
    [    2.234840]  r6:c08b5510 r5:dda99880 r4:c08bf7d0
    [    2.239495] [<c040126c>] (driver_attach) from [<c0400f40>] (bus_add_driver+0x148/0x1f4)
    [    2.247546] [<c0400df8>] (bus_add_driver) from [<c0402114>] (driver_register+0x80/0x100)
    [    2.255678]  r7:dda96bc0 r6:c08926a0 r5:c0873c30 r4:c08bf7d0
    [    2.261386] [<c0402094>] (driver_register) from [<c040315c>] (__platform_driver_register+0x50/0x64)
    [    2.270477]  r5:c0873c30 r4:c08926a0
    [    2.274096] [<c040310c>] (__platform_driver_register) from [<c0873c48>] (omap2_mcspi_driver_init+0x18/0x20)
    [    2.283893] [<c0873c30>] (omap2_mcspi_driver_init) from [<c0009664>] (do_one_initcall+0x88/0x1e0)
    [    2.292818] [<c00095dc>] (do_one_initcall) from [<c084de78>] (kernel_init_freeable+0x178/0x240)
    [    2.301549]  r10:c084d5e8 r9:c0882158 r8:c08d1000 r7:c088dcb4 r6:c08d1000 r5:c0882150
    [    2.309451]  r4:00000006
    [    2.312011] [<c084dd00>] (kernel_init_freeable) from [<c062d304>] (kernel_init+0x10/0xf4)
    [    2.320219]  r10:00000000 r9:00000000 r8:00000000 r7:00000000 r6:00000000 r5:c062d2f4
    [    2.328118]  r4:00000000
    [    2.330667] [<c062d2f4>] (kernel_init) from [<c000f928>] (ret_from_fork+0x14/0x2c)
    [    2.338275]  r5:c062d2f4 r4:00000000
    [    2.341883] ---[ end trace a7bd6ba4e9271b34 ]---
    [    2.346914] spidev spi2.1: buggy DT: spidev listed directly in DT
    [    2.353071] ------------[ cut here ]------------
    [    2.357712] WARNING: CPU: 0 PID: 1 at drivers/spi/spidev.c:730 spidev_probe+0x178/0x1bc()
    [    2.365932] Modules linked in:
    [    2.369006] CPU: 0 PID: 1 Comm: swapper Tainted: G        W       4.1.6-g52c4aa7 #9
    [    2.376702] Hardware name: Generic AM33XX (Flattened Device Tree)
    [    2.382828] Backtrace: 
    [    2.385297] [<c0012b10>] (dump_backtrace) from [<c0012d30>] (show_stack+0x18/0x1c)
    [    2.392905]  r7:c07f1c14 r6:000002da r5:00000009 r4:00000000
    [    2.398615] [<c0012d18>] (show_stack) from [<c0630274>] (dump_stack+0x20/0x28)
    [    2.405882] [<c0630254>] (dump_stack) from [<c0037d14>] (warn_slowpath_common+0x7c/0xb4)
    [    2.414020] [<c0037c98>] (warn_slowpath_common) from [<c0037df0>] (warn_slowpath_null+0x24/0x2c)
    [    2.422849]  r8:00000000 r7:c08bf780 r6:00000000 r5:dda52800 r4:c08bf770
    [    2.429609] [<c0037dcc>] (warn_slowpath_null) from [<c0478ab0>] (spidev_probe+0x178/0x1bc)
    [    2.437926] [<c0478938>] (spidev_probe) from [<c0476270>] (spi_drv_probe+0x58/0x7c)
    [    2.445622]  r8:00000000 r7:c08bf780 r6:00000000 r5:dda52800 r4:c08bf770
    [    2.452395] [<c0476218>] (spi_drv_probe) from [<c0401820>] (driver_probe_device+0x17c/0x2c0)
    [    2.460865]  r5:dda52800 r4:c0901d80
    [    2.464479] [<c04016a4>] (driver_probe_device) from [<c04019ac>] (__device_attach+0x48/0x4c)
    [    2.472960]  r9:00000000 r8:c0901d5c r7:00000000 r6:c0401964 r5:dda52800 r4:c08bf780
    [    2.480769] [<c0401964>] (__device_attach) from [<c03ffc38>] (bus_for_each_drv+0x6c/0xa0)
    [    2.488988]  r5:dda52800 r4:00000000
    [    2.492600] [<c03ffbcc>] (bus_for_each_drv) from [<c0401664>] (device_attach+0x78/0x90)
    [    2.500634]  r6:dda52834 r5:dda52800 r4:dda52800
    [    2.505299] [<c04015ec>] (device_attach) from [<c0400cc0>] (bus_probe_device+0x8c/0xb4)
    [    2.513343]  r7:00000000 r6:c08bf678 r5:dda52800 r4:dda52808
    [    2.519050] [<c0400c34>] (bus_probe_device) from [<c03fede4>] (device_add+0x3c4/0x570)
    [    2.527007]  r7:00000000 r6:dda52800 r5:dda6cc00 r4:dda52808
    [    2.532724] [<c03fea20>] (device_add) from [<c0476978>] (spi_add_device+0x94/0x138)
    [    2.540409]  r10:dd9de97c r9:dd8e1210 r8:00000000 r7:dd8e1210 r6:dda6cc00 r5:00000000
    [    2.548309]  r4:dda52800
    [    2.550856] [<c04768e4>] (spi_add_device) from [<c04782dc>] (spi_register_master+0x438/0x6f4)
    [    2.559424]  r7:dda52800 r6:00000000 r5:de366644 r4:dda6cc00
    [    2.565143] [<c0477ea4>] (spi_register_master) from [<c04785cc>] (devm_spi_register_master+0x34/0x70)
    [    2.574409]  r10:dd9de97c r9:dda6cd68 r8:dda6ce20 r7:dd8e1210 r6:dda6cc00 r5:dda94c90
    [    2.582308]  r4:00000000
    [    2.584857] [<c0478598>] (devm_spi_register_master) from [<c047a1dc>] (omap2_mcspi_probe+0x304/0x3b8)
    [    2.594124]  r7:dd8e1200 r6:00000088 r5:dda6cc00 r4:00000000
    [    2.599834] [<c0479ed8>] (omap2_mcspi_probe) from [<c0403224>] (platform_drv_probe+0x4c/0xac)
    [    2.608402]  r10:00000000 r9:c0882158 r8:00000000 r7:fffffdfb r6:c08bf7d0 r5:dd8e1210
    [    2.616300]  r4:c0901d80
    [    2.618849] [<c04031d8>] (platform_drv_probe) from [<c0401820>] (driver_probe_device+0x17c/0x2c0)
    [    2.627767]  r7:c08bf7d0 r6:00000000 r5:dd8e1210 r4:c0901d80
    [    2.633486] [<c04016a4>] (driver_probe_device) from [<c0401a44>] (__driver_attach+0x94/0x98)
    [    2.641968]  r9:c0882158 r8:c08d1000 r7:00000000 r6:dd8e1244 r5:c08bf7d0 r4:dd8e1210
    [    2.649775] [<c04019b0>] (__driver_attach) from [<c03ffb74>] (bus_for_each_dev+0x74/0xa8)
    [    2.657994]  r7:00000000 r6:c04019b0 r5:c08bf7d0 r4:00000000
    [    2.663714] [<c03ffb00>] (bus_for_each_dev) from [<c040128c>] (driver_attach+0x20/0x28)
    [    2.671759]  r6:c08b5510 r5:dda99880 r4:c08bf7d0
    [    2.676413] [<c040126c>] (driver_attach) from [<c0400f40>] (bus_add_driver+0x148/0x1f4)
    [    2.684465] [<c0400df8>] (bus_add_driver) from [<c0402114>] (driver_register+0x80/0x100)
    [    2.692598]  r7:dda96bc0 r6:c08926a0 r5:c0873c30 r4:c08bf7d0
    [    2.698305] [<c0402094>] (driver_register) from [<c040315c>] (__platform_driver_register+0x50/0x64)
    [    2.707396]  r5:c0873c30 r4:c08926a0
    [    2.711002] [<c040310c>] (__platform_driver_register) from [<c0873c48>] (omap2_mcspi_driver_init+0x18/0x20)
    [    2.720799] [<c0873c30>] (omap2_mcspi_driver_init) from [<c0009664>] (do_one_initcall+0x88/0x1e0)
    [    2.729722] [<c00095dc>] (do_one_initcall) from [<c084de78>] (kernel_init_freeable+0x178/0x240)
    [    2.738464]  r10:c084d5e8 r9:c0882158 r8:c08d1000 r7:c088dcb4 r6:c08d1000 r5:c0882150
    [    2.746365]  r4:00000006
    [    2.748913] [<c084dd00>] (kernel_init_freeable) from [<c062d304>] (kernel_init+0x10/0xf4)
    [    2.757132]  r10:00000000 r9:00000000 r8:00000000 r7:00000000 r6:00000000 r5:c062d2f4
    [    2.765032]  r4:00000000
    [    2.767580] [<c062d2f4>] (kernel_init) from [<c000f928>] (ret_from_fork+0x14/0x2c)
    [    2.775189]  r5:c062d2f4 r4:00000000
    [    2.778786] ---[ end trace a7bd6ba4e9271b35 ]---
    [    2.785840] 47401300.usb-phy supply vcc not found, using dummy regulator
    [    2.824628] 47401b00.usb-phy supply vcc not found, using dummy regulator
    [    2.859204] using random self ethernet address
    [    2.863765] using random host ethernet address
    [    2.868796] usb0: HOST MAC fa:62:7f:8e:d5:09
    [    2.873223] usb0: MAC c2:ac:4c:41:21:56
    [    2.877111] using random self ethernet address
    [    2.881573] using random host ethernet address
    [    2.886244] g_ether gadget: Ethernet Gadget, version: Memorial Day 2008
    [    2.892940] g_ether gadget: g_ether ready
    [    2.897636] mousedev: PS/2 mouse device common for all mice
    [    2.903316] i2c /dev entries driver
    [    2.942092] ledtrig-cpu: registered to indicate activity on CPUs
    [    2.948926]  remoteproc0: wkup_m3 is available
    [    2.953569]  remoteproc0: Note: remoteproc is still under development and considered experimental.
    [    2.962645]  remoteproc0: THE BINARY FORMAT IS NOT YET FINALIZED, and backward compatibility isn't yet guaranteed.
    [    2.974215]  remoteproc0: Direct firmware load for am335x-pm-firmware.elf failed with error -2
    [    2.987672] oprofile: using arm/armv7
    [    2.991430]  remoteproc0: Falling back to user helper
    [    2.997009] Initializing XFRM netlink socket
    [    3.001386] NET: Registered protocol family 17
    [    3.006135] NET: Registered protocol family 15
    [    3.013796] Key type dns_resolver registered
    [    3.018280] omap_voltage_late_init: Voltage driver support not added
    [    3.025100] ThumbEE CPU extension supported.
    [    3.029409] Registering SWP/SWPB emulation handler
    [    3.049083] mmc0: MAN_BKOPS_EN bit is not set
    [    3.058671] mmc0: new high speed MMC card at address 0001
    [    3.064952] mmcblk0: mmc0:0001 M32508 7.12 GiB 
    [    3.069850] mmcblk0boot0: mmc0:0001 M32508 partition 1 4.00 MiB
    [    3.076047] mmcblk0boot1: mmc0:0001 M32508 partition 2 4.00 MiB
    [    3.082923] tps65217 0-0024: TPS65217 ID 0xe version 1.2
    [    3.088296] omap_i2c 44e0b000.i2c: bus 0 rev0.11 at 400 kHz
    [    3.094938]  mmcblk0: p1 p2
    [    3.099794] omap_i2c 4802a000.i2c: bus 1 rev0.11 at 400 kHz
    [    3.107193] hctosys: unable to open rtc device (rtc0)
    [    3.115477] ALSA device list:
    [    3.118478]   No soundcards found.
    [    3.132430] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
    [    3.140671] VFS: Mounted root (ext4 filesystem) on device 179:2.
    [    3.149784] devtmpfs: mounted
    [    3.153366] Freeing unused kernel memory: 260K (c084d000 - c088e000)
    INIT: version 2.88 booting
    [    3.289326] g_ether gadget: high-speed config #2: RNDIS
    Error opening /dev/fb0: No such file or directory
    Starting udev
    udev: Not using udev cache because of changes detected in the following files:
    udev:     /proc/version /proc/cmdline /proc/devices
    udev:     lib/udev/rules.d/* etc/udev/rules.d/*
    udev: The udev cache will be regenerated. To identify the detected changes,
    udev: compare the cached sysconf at   /etc/udev/cache.data
    udev: against the current sysconf at  /dev/shm/udev.cache
    [    3.710051] udevd[87]: starting version 182
    [    3.935839] cpu cpu0: of_pm_voltdm_notifier_register: Fail calculating voltage latency[950000<->1325000]:-22
    [    4.036870] cpu cpu0: of_pm_voltdm_notifier_register: Fail calculating voltage latency[950000<->1325000]:-22
    [    4.066357] omap_wdt: OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec
    [    4.149047] Error: Driver 'am335x-usb-childs' is already registered, aborting...
    [    4.172790] omap_rtc 44e3e000.rtc: already running
    [    4.201946] omap_rtc 44e3e000.rtc: rtc core: registered 44e3e000.rtc as rtc0
    [    4.461264] usbcore: registered new interface driver usbfs
    [    4.536224] usbcore: registered new interface driver hub
    [    4.576622] usbcore: registered new device driver usb
    [    4.619350] udc_core: exports duplicate symbol usb_add_gadget_udc (owned by kernel)
    [    4.683293] udc_core: exports duplicate symbol usb_add_gadget_udc (owned by kernel)
    [    4.764904] udc_core: exports duplicate symbol usb_add_gadget_udc (owned by kernel)
    [    4.883264] udc_core: exports duplicate symbol usb_add_gadget_udc (owned by kernel)
    [    4.952435] omap_rng 48310000.rng: OMAP Random Number Generator ver. 20
    [    5.119342] PM: bootloader does not support rtc-only!
    [    5.199680] Error: Driver 'asoc-simple-card' is already registered, aborting...
    [    5.252150]  remoteproc0: powering up wkup_m3
    [    5.257707]  remoteproc0: Booting fw image am335x-pm-firmware.elf, size 219803
    [    5.368515]  remoteproc0: remote processor wkup_m3 is now up
    [    5.368541] wkup_m3_ipc 44e11324.wkup_m3_ipc: CM3 Firmware Version = 0x191
    [    5.420715] Error: Driver 'asoc-simple-card' is already registered, aborting...
    [    6.305830] random: nonblocking pool is initialized
    [    7.516441] cryptodev: driver 1.6 loaded.
    [    7.557286] EXT4-fs (mmcblk0p2): re-mounted. Opts: data=ordered
    bootlogd: cannot allocate pseudo tty: No such file or directory
    Starting random number generator daemon.
    Populating dev cache
    INIT: Entering runlevel: 5
    [    8.661013] HAVER_BOARD_GPIO: Initializing the HAVER_BOARD_GPIO LKM
    [    8.667528] HAVER_BOARD_GPIO: Initializing GPIO_0_16 for BT830 RST line
    [    9.691820] HAVER_BOARD_GPIO: Initializing GPIO_3_17 for LED Driver
    [    9.703105] HAVER_BOARD_GPIO: Initializing GPIO_2_22 for Power Off Button
    .
    Configuring network interfaces... done.
    Starting system message bus: dbus.
    UIM SYSFS Node Not Found
    Starting Dropbear SSH server: [   12.519869] NET: Registered protocol family 10
    dropbear.
    Starting rpcbind daemon...done.
    starting statd: done
    Starting syslogd/klogd: done
    Starting Haver board startup scriptSetting governor to userspace and frequency to 300000
    Starting Haver app
    .
    ***************************************************************
    ***************************************************************
    NOTICE: This file system contains the following GPLv3 packages:
            autoconf
            binutils
            cpp-symlinks
            cpp
            g++-symlinks
            g++
            gcc-symlinks
            gcc
            gdbserver
            gstreamer1.0-libav
            libgmp10
            libmpc3
            libmpfr4
            make
    
    If you do not wish to distribute GPLv3 components please remove
    the above packages prior to distribution.  This can be done using
    the opkg remove command.  i.e.:
        opkg remove <package>
    Where <package> is the name printed in the list above
    
    NOTE: If the package is a dependency of another package you
          will be notified of the dependent packages.  You should
          use the --force-removal-of-dependent-packages option to
          also remove the dependent packages as well
    ***************************************************************
    ***************************************************************
    
     _____                    _____           _         _   
    |  _  |___ ___ ___ ___   |  _  |___ ___  |_|___ ___| |_ 
    |     |  _| .'| . | . |  |   __|  _| . | | | -_|  _|  _|
    |__|__|_| |__,|_  |___|  |__|  |_| |___|_| |___|___|_|  
                  |___|                    |___|            
    
    Arago Project http://arago-project.org am335x-evm /dev/ttyO0
    
    Arago 2015.09 am335x-evm /dev/ttyO0
    
    am335x-evm login:

    Could there be an issue with the fact that 2 codecs are enabled (even though I only reference 1 in the dts).

    For completeness, here is the dtsi file edited to include pinmux and sound settings used.

    am335x-bone-common-dtsi.txt
    /*
     * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
     *
     * This program is free software; you can redistribute it and/or modify
     * it under the terms of the GNU General Public License version 2 as
     * published by the Free Software Foundation.
     */
    
    / {
    	cpus {
    		cpu@0 {
    			cpu0-supply = <&dcdc2_reg>;
    		};
    	};
    
    	memory {
    		device_type = "memory";
    		reg = <0x80000000 0x10000000>; /* 256 MB */
    	};
    
    
    	vmmcsd_fixed: fixedregulator@0 {
    		compatible = "regulator-fixed";
    		regulator-name = "vmmcsd_fixed";
    		regulator-min-microvolt = <3300000>;
    		regulator-max-microvolt = <3300000>;
    	};
    	
    	pcm5102a: pcm5102a {
    		#sound-dai-cells = <0>;
    		compatible = "ti,pcm5102a";
    		status = "okay";
    	};
    	
    	sound1: sound@1 {
    		compatible = "simple-audio-card";
    		simple-audio-card,name = "PCM5102a";
    		simple-audio-card,format = "i2s";
    		simple-audio-card,bitclock-master = <&sound1_master>;
    		simple-audio-card,frame-master = <&sound1_master>;
    		simple-audio-card,bitclock-inversion;
    		simple-audio-card,cpu {
    			sound-dai = <&mcasp0>;
    		};
    		sound1_master: simple-audio-card,codec {
    			#sound-dai-cells = <0>;
    			sound-dai = <&pcm5102a>;
    			clocks = <&mcasp0_fck>;
    			clock-names = "mclk";
    		};
    	};
    
    };
    
    &am33xx_pinmux {
    	pinctrl-names = "default";
    	pinctrl-0 = <&clkout2_pin>;
    
    	i2c0_pins: pinmux_i2c0_pins {
    		pinctrl-single,pins = <
    			0x188 (PIN_INPUT_PULLUP | MUX_MODE0)	/* i2c0_sda.i2c0_sda */
    			0x18c (PIN_INPUT_PULLUP | MUX_MODE0)	/* i2c0_scl.i2c0_scl */
    		>;
    	};
    
    	uart0_pins: pinmux_uart0_pins {
    		pinctrl-single,pins = <
    			0x170 (PIN_INPUT_PULLUP | MUX_MODE0)	/* uart0_rxd.uart0_rxd */
    			0x174 (PIN_OUTPUT_PULLDOWN | MUX_MODE0)	/* uart0_txd.uart0_txd */
    		>;
    	};
    
    	bluetooth_uart3_pins_default: bluetooth_uart3_pins_default {
    		pinctrl-single,pins = <
    			0x134 ( PIN_INPUT | MUX_MODE1 ) /* (L17) gmii1_rxd3.uart3_rxd */
    			0x138 ( PIN_OUTPUT | MUX_MODE1 ) /* (L16) gmii1_rxd2.uart3_txd */
    			0xc8 ( PIN_INPUT | MUX_MODE6 ) /* (U3) lcd_data10.uart3_ctsn */
    			0xcc ( PIN_OUTPUT | MUX_MODE6 ) /* (U4) lcd_data11.uart3_rtsn */
    		>;
    	};
    
    	led_batt_i2c1_pins_default: led_batt_i2c1_pins_default {
    		pinctrl-single,pins = <
    			0x16c ( PIN_INPUT | MUX_MODE3 ) /* (E17) uart0_rtsn.I2C1_SCL */
    			0x168 ( PIN_INPUT | MUX_MODE3 ) /* (E18) uart0_ctsn.I2C1_SDA */
    		>;
    	};
    
    	clkout2_pin: pinmux_clkout2_pin {
    		pinctrl-single,pins = <
    			0x1b4 (PIN_OUTPUT_PULLDOWN | MUX_MODE3)	/* xdma_event_intr1.clkout2 */
    		>;
    	};
    
    	radio_spi0_pins_default: radio_spi0_pins_default {
    		pinctrl-single,pins = <
    			0x150 ( PIN_INPUT | MUX_MODE0 ) /* (A17) spi0_sclk.spi0_sclk */
    			0x154 ( PIN_INPUT | MUX_MODE0 ) /* (B17) spi0_d0.spi0_d0 */
    			0x158 ( PIN_OUTPUT | MUX_MODE0 ) /* (B16) spi0_d1.spi0_d1 */
    			0x15c ( PIN_OUTPUT | MUX_MODE0 ) /* (A16) spi0_cs0.spi0_cs0 */
    			0x160 ( PIN_OUTPUT | MUX_MODE0 ) /* (C15) spi0_cs1.spi0_cs1 */
    		>;
    	};
    
    	spi1_pins_s0: spi1_pins_s0 {
                    pinctrl-single,pins = <
    			0x190 ( PIN_INPUT | MUX_MODE3 ) /* (A13) mcasp0_aclkx.spi1_sclk */
    			0x194 ( PIN_INPUT | MUX_MODE3 ) /* (B13) mcasp0_fsx.spi1_d0 */
    			0x198 ( PIN_OUTPUT | MUX_MODE3 ) /* (D12) mcasp0_axr0.spi1_d1 */
    			0x164 ( PIN_OUTPUT | MUX_MODE2 ) /* (C18) eCAP0_in_PWM0_out.spi1_cs1 */
                    >;
                };
    
    	emmc_pins: pinmux_emmc_pins {
    		pinctrl-single,pins = <
    			0x80 (PIN_INPUT_PULLUP | MUX_MODE2) /* gpmc_csn1.mmc1_clk */
    			0x84 (PIN_INPUT_PULLUP | MUX_MODE2) /* gpmc_csn2.mmc1_cmd */
    			0x00 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad0.mmc1_dat0 */
    			0x04 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad1.mmc1_dat1 */
    			0x08 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad2.mmc1_dat2 */
    			0x0c (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad3.mmc1_dat3 */
    			0x10 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad4.mmc1_dat4 */
    			0x14 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad5.mmc1_dat5 */
    			0x18 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad6.mmc1_dat6 */
    			0x1c (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad7.mmc1_dat7 */
    		>;
    	};
    
    	gpio2_pins_default: gpio2_pins_default {
            	pinctrl-single,pins = <
                		AM33XX_IOPAD(0x8E4, PIN_INPUT_PULLDOWN | MUX_MODE7)	        /* r5_lcd_hsync.gpio2_23 */
                 		AM33XX_IOPAD(0x8EC, PIN_INPUT_PULLDOWN  | MUX_MODE7)	        /* r6_lcd_ac_bias_en.gpio2_25 */
    			AM33XX_IOPAD(0x8E8, PIN_INPUT_PULLDOWN | MUX_MODE7)	        /* v5_lcd_pclk.gpio2_24 */
    			AM33XX_IOPAD(0x8AC, PIN_OUTPUT | MUX_MODE7)            		/* (R4) lcd_data3.gpio2[9] */ 
    			AM33XX_IOPAD(0x8B0, PIN_OUTPUT | MUX_MODE7)            		/* (T1) lcd_data4.gpio2[10] */ 
            	>;
     	};
    
       	gpio3_pins_default: gpio3_pins_default {
                    pinctrl-single,pins = <
                            AM33XX_IOPAD(0x99C, PIN_OUTPUT | MUX_MODE7)                          /* c12_mcasp0_ahclkr.gpio3_17 */
                    >;
            };
    
    	mcasp0_pins: mcasp0_pins {
     	   	pinctrl-single,pins = <
            		0x1a0 ( PIN_INPUT_PULLDOWN | MUX_MODE0 ) /* (B12) mcasp0_aclkr.mcasp0_aclkr */
            		0x1a4 ( PIN_INPUT_PULLDOWN | MUX_MODE0 ) /* (C13) mcasp0_fsr.mcasp0_fsr */
            		0x1a8 ( PIN_INPUT_PULLDOWN | MUX_MODE0 ) /* (D13) mcasp0_axr1.mcasp0_axr1 */
        		>;
    	};
    
    	system_power_pin: pinmux_system_power {
                  pinctrl-single,bits = <
                         AM33XX_IOPAD(0x8E8, PIN_INPUT_PULLDOWN | MUX_MODE7)	       /* v5_lcd_pclk.gpio2_24 */
     		>;
     	};
    };
    
    &uart0 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&uart0_pins>;
    
    	status = "okay";
    };
    
    &uart3 {
            pinctrl-names = "default";
            pinctrl-0 = <&bluetooth_uart3_pins_default>;
    
            status = "okay";
    };
    
    &usb {
    	status = "okay";
    };
    
    &usb_ctrl_mod {
    	status = "okay";
    };
    
    &usb0_phy {
    	status = "okay";
    };
    
    &usb1_phy {
    	status = "okay";
    };
    
    &usb0 {
    	status = "okay";
    	dr_mode = "peripheral";
    };
    
    &usb1 {
    	status = "okay";
    	dr_mode = "host";
    };
    
    &cppi41dma  {
    	status = "okay";
    };
    
    &i2c0 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&i2c0_pins>;
    
    	status = "okay";
    	clock-frequency = <400000>;
    
    	tps: tps@24 {
    		reg = <0x24>;
    	};
    
    };
    
    /include/ "tps65217.dtsi"
    
    &tps {
    	/*
    	 * Configure pmic to enter OFF-state instead of SLEEP-state ("RTC-only
    	 * mode") at poweroff.  Most BeagleBone versions do not support RTC-only
    	 * mode and risk hardware damage if this mode is entered.
    	 *
    	 * For details, see linux-omap mailing list May 2015 thread
    	 *	[PATCH] ARM: dts: am335x-bone* enable pmic-shutdown-controller
    	 * In particular, messages:
    	 *	http://www.spinics.net/lists/linux-omap/msg118585.html
    	 *	http://www.spinics.net/lists/linux-omap/msg118615.html
    	 *
    	 * You can override this later with
    	 *	&tps {  /delete-property/ ti,pmic-shutdown-controller;  }
    	 * if you want to use RTC-only mode and made sure you are not affected
    	 * by the hardware problems. (Tip: double-check by performing a current
    	 * measurement after shutdown: it should be less than 1 mA.)
    	 */
    	ti,pmic-shutdown-controller;
    
    	regulators {
    		dcdc1_reg: regulator@0 {
    			regulator-name = "vdds_dpr";
    			regulator-always-on;
    		};
    
    		dcdc2_reg: regulator@1 {
    			/* VDD_MPU voltage limits 0.95V - 1.325V with +/-4% tolerance */
    			regulator-name = "vdd_mpu";
    			regulator-min-microvolt = <925000>;
    			regulator-max-microvolt = <1378000>;
    			regulator-boot-on;
    			regulator-always-on;
    		};
    
    		dcdc3_reg: regulator@2 {
    			/* VDD_CORE voltage limits 0.95V - 1.1V with +/-4% tolerance */
    			regulator-name = "vdd_core";
    			regulator-min-microvolt = <925000>;
    			regulator-max-microvolt = <1150000>;
    			regulator-boot-on;
    			regulator-always-on;
    		};
    
    		ldo1_reg: regulator@3 {
    			regulator-name = "vio,vrtc,vdds";
    			regulator-always-on;
    		};
    
    		ldo2_reg: regulator@4 {
    			regulator-name = "vdd_3v3aux";
    			regulator-always-on;
    		};
    
    		ldo3_reg: regulator@5 {
    			regulator-name = "vdd_1v8";
    			regulator-always-on;
    		};
    
    		ldo4_reg: regulator@6 {
    			regulator-name = "vdd_3v3a";
    			regulator-always-on;
    		};
    	};
    };
    
    &aes {
    	status = "disabled";
    };
    
    &sham {
    	status = "disabled";
    };
    
    &wkup_m3_ipc {
    	ti,scale-data-fw = "am335x-bone-scale-data.bin";
    };
    
    &rtc {
    	/*ti,hwmods = "disabled";
            status = "disabled";*/
    	system-power-controller;
    };
    
    &spi0 {
            status = "okay";
            pinctrl-names = "default";
            pinctrl-0 = <&radio_spi0_pins_default>;
    
            #address-cells = <1>;
            #size-cells = <0>;
    
            channel@0 {
                    #address-cells = <1>;
                    #size-cells = <0>;
    
                    compatible = "spidev";
    
                    reg = <0>;
                    spi-max-frequency = <16000000>;
                    spi-cpha;
            };
    
    
            channel@1 {
                    #address-cells = <1>;
                    #size-cells = <0>;
    
                    compatible = "spidev";
    
                    reg = <1>;
                    spi-max-frequency = <16000000>;
            };
    };
    
    &spi1 {
    	status = "okay";
    	pinctrl-names = "default";
    	pinctrl-0 = <&spi1_pins_s0>;
    
    	#address-cells = <1>;
    	#size-cells = <0>;
    
    	channel@0 {
    		#address-cells = <1>;
    		#size-cells = <0>;
    
    		compatible = "spidev";
    
    		reg = <0>;
    		spi-max-frequency = <16000000>;
    		spi-cpha;
    	};
    
    
    	channel@1 {
    		#address-cells = <1>;
    		#size-cells = <0>;
    
    		compatible = "spidev";
    
    		reg = <1>;
    		spi-max-frequency = <16000000>;
    	};
    };
    
    &i2c1 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&led_batt_i2c1_pins_default>;
    
    	status = "okay";
    	clock-frequency = <400000>;
    };
    
    
    &gpio2 {
        pinctrl-names = "default";
        pinctrl-0 = <&gpio2_pins_default>;
    
        status = "okay";
    };
    
    &gpio3 {
        pinctrl-names = "default";
        pinctrl-0 = <&gpio3_pins_default>;
    
        status = "okay";
    };
    
    &mcasp0 {
    	#sound-dai-cells = <0>;
    	pinctrl-names = "default";
    	pinctrl-0 = <&mcasp0_pins>;
    	status = "okay";
    	op-mode = <0>; /* MCASP_IIS_MODE */
    	tdm-slots = <2>;
    	num-serializer = <4>;
    	serial-dir = < /* 1 TX 2 RX 0 unused */
    	0 2 0 0
    	>;
    	rx-num-evt = <1>;
    	tx-num-evt = <1>;
    };
    
    

    ... and here is the pcm5102a.c file used.

    4375.pcm5102a.c
    #include <linux/init.h>
    #include <linux/module.h>
    #include <linux/platform_device.h>
    #include <sound/soc.h>
    
    static struct snd_soc_dai_driver pcm5102a_dai = {
    	.name = "pcm5102a-hifi",
    	.playback = {
    		.channels_min = 2,
    		.channels_max = 2,
    		.rates = SNDRV_PCM_RATE_8000_192000,
    		.formats = SNDRV_PCM_FMTBIT_S16_LE |
    				SNDRV_PCM_FMTBIT_S24_LE |
    				SNDRV_PCM_FMTBIT_S32_LE
    	},
    	.capture = {
    		.stream_name = "Capture",
    		.channels_min = 1,
    		.channels_max = 2,
    		.rates = SNDRV_PCM_RATE_8000_192000,
    		.formats = SNDRV_PCM_FMTBIT_S16_LE |
    				SNDRV_PCM_FMTBIT_S24_LE |
    				SNDRV_PCM_FMTBIT_S32_LE
    	},
    };
    

    Perhaps we simply need to disable the tlv320aic3x support?

    Thanks,

    Mark J

  • Mark,

    For using dummy codec, you should use PCM5102 only and remove AIC3x support.

    Note that in latest 4.x kernels, we have this "No soundcards found" kernel message by default, as aic3x is build and load as kernel module at later stage (in rootfs), where we have:

    "asoc-simple-card sound: tlv320aic3x-hifi <-> 4803c000.mcasp mapping ok"

    I am attaching full boot up log + arecord command log for your reference. The log is based on the pre-built images available at PSDK 4.02 and executed on AM335x StarterKit.

    5873.arecord_log

    Regards,
    Pavel

  • Hi Pavel,

    We learned that the tlv320aic3x was a dependency for "SOC Audio for the AM33xx chip based boards". Disabling "SOC Audio for the AM33xx chip based boards" using menuconfig supported our disabling the tlv320aic3x codec. We rebuild and re-ran, but can see no difference. Still nothing found. See the attached boot logs.

    bootuplog.log
    Starting kernel ...
    
    [    0.000000] Booting Linux on physical CPU 0x0
    [    0.000000] Initializing cgroup subsys cpuset
    [    0.000000] Initializing cgroup subsys cpu
    [    0.000000] Initializing cgroup subsys cpuacct
    [    0.000000] Linux version 4.1.6-g52c4aa7 (dworx@dworx-System-Product-Name) (gcc version 4.9.3 20150413 (prerelease) (Linaro GCC 4.9-2015.05) ) #10 PREEMPT Sun Apr 22 18:23:21 PDT 2018
    [    0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c5387d
    [    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
    [    0.000000] Machine model: TI AM335x BeagleBone Black
    [    0.000000] cma: Reserved 24 MiB at 0x9e800000
    [    0.000000] Memory policy: Data cache writeback
    [    0.000000] CPU: All CPU(s) started in SVC mode.
    [    0.000000] AM335X ES2.1 (sgx neon )
    [    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 129920
    [    0.000000] Kernel command line: console=ttyO0,115200n8 root=PARTUUID=00000000-02 rw rootfstype=ext4 rootwait
    [    0.000000] PID hash table entries: 2048 (order: 1, 8192 bytes)
    [    0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
    [    0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
    [    0.000000] Memory: 485216K/524288K available (6339K kernel code, 258K rwdata, 2124K rodata, 260K init, 230K bss, 14496K reserved, 24576K cma-reserved, 0K highmem)
    [    0.000000] Virtual kernel memory layout:
    [    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    [    0.000000]     fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
    [    0.000000]     vmalloc : 0xe0800000 - 0xff000000   ( 488 MB)
    [    0.000000]     lowmem  : 0xc0000000 - 0xe0000000   ( 512 MB)
    [    0.000000]     pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
    [    0.000000]     modules : 0xbf000000 - 0xbfe00000   (  14 MB)
    [    0.000000]       .text : 0xc0008000 - 0xc084c0ac   (8465 kB)
    [    0.000000]       .init : 0xc084d000 - 0xc088e000   ( 260 kB)
    [    0.000000]       .data : 0xc088e000 - 0xc08ceb68   ( 259 kB)
    [    0.000000]        .bss : 0xc08d1000 - 0xc090a8f8   ( 231 kB)
    [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
    [    0.000000] Preemptible hierarchical RCU implementation.
    [    0.000000]  Additional per-CPU info printed with stalls.
    [    0.000000] NR_IRQS:16 nr_irqs:16 16
    [    0.000000] IRQ: Found an INTC at 0xfa200000 (revision 5.0) with 128 interrupts
    [    0.000000] OMAP clockevent source: timer2 at 24000000 Hz
    [    0.000014] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns
    [    0.000031] clocksource timer1: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
    [    0.000041] OMAP clocksource: timer1 at 24000000 Hz
    [    0.000198] Console: colour dummy device 80x30
    [    0.000220] WARNING: Your 'console=ttyO0' has been replaced by 'ttyS0'
    [    0.000225] This ensures that you still see kernel messages. Please
    [    0.000230] update your kernel commandline.
    [    0.000247] Calibrating delay loop... 996.14 BogoMIPS (lpj=4980736)
    [    0.089335] pid_max: default: 32768 minimum: 301
    [    0.089425] Security Framework initialized
    [    0.089470] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
    [    0.089480] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
    [    0.090082] Initializing cgroup subsys blkio
    [    0.090106] Initializing cgroup subsys memory
    [    0.090142] Initializing cgroup subsys devices
    [    0.090156] Initializing cgroup subsys freezer
    [    0.090169] Initializing cgroup subsys perf_event
    [    0.090192] CPU: Testing write buffer coherency: ok
    [    0.090542] Setting up static identity map for 0x80008200 - 0x80008270
    [    0.091876] devtmpfs: initialized
    [    0.099768] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3
    [    0.106938] omap_hwmod: tptc0 using broken dt data from edma
    [    0.107031] omap_hwmod: tptc1 using broken dt data from edma
    [    0.107108] omap_hwmod: tptc2 using broken dt data from edma
    [    0.111355] omap_hwmod: debugss: _wait_target_disable failed
    [    0.165708] clocksource jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
    [    0.167656] pinctrl core: initialized pinctrl subsystem
    [    0.168790] NET: Registered protocol family 16
    [    0.170830] DMA: preallocated 256 KiB pool for atomic coherent allocations
    [    0.199324] cpuidle: using governor ladder
    [    0.229315] cpuidle: using governor menu
    [    0.232358] OMAP GPIO hardware version 0.1
    [    0.233353] omap_gpio 481ac000.gpio: could not find pctldev for node /ocp/l4_wkup@44c00000/scm@210000/pinmux@800/gpio2_pins_default, deferring probe
    [    0.233589] omap_gpio 481ae000.gpio: could not find pctldev for node /ocp/l4_wkup@44c00000/scm@210000/pinmux@800/gpio3_pins_default, deferring probe
    [    0.238577] No ATAGs?
    [    0.238605] hw-breakpoint: debug architecture 0x4 unsupported.
    [    0.276206] edma-dma-engine edma-dma-engine.0: TI EDMA DMA engine driver
    [    0.278760] vgaarb: loaded
    [    0.279222] SCSI subsystem initialized
    [    0.279774] omap_i2c 44e0b000.i2c: could not find pctldev for node /ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_i2c0_pins, deferring probe
    [    0.279821] omap_i2c 4802a000.i2c: could not find pctldev for node /ocp/l4_wkup@44c00000/scm@210000/pinmux@800/led_batt_i2c1_pins_default, deferring probe
    [    0.279932] pps_core: LinuxPPS API ver. 1 registered
    [    0.279939] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
    [    0.279967] PTP clock support registered
    [    0.280701] omap-mailbox 480c8000.mailbox: omap mailbox rev 0x400
    [    0.280883] Advanced Linux Sound Architecture Driver Initialized.
    [    0.281652] Switched to clocksource timer1
    [    0.290410] NET: Registered protocol family 2
    [    0.291157] TCP established hash table entries: 4096 (order: 2, 16384 bytes)
    [    0.291201] TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
    [    0.291240] TCP: Hash tables configured (established 4096 bind 4096)
    [    0.291320] UDP hash table entries: 256 (order: 0, 4096 bytes)
    [    0.291336] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
    [    0.291478] NET: Registered protocol family 1
    [    0.291892] RPC: Registered named UNIX socket transport module.
    [    0.291905] RPC: Registered udp transport module.
    [    0.291911] RPC: Registered tcp transport module.
    [    0.291916] RPC: Registered tcp NFSv4.1 backchannel transport module.
    [    0.292684] CPU PMU: Failed to parse /pmu/interrupt-affinity[0]
    [    0.292725] hw perfevents: enabled with armv7_cortex_a8 PMU driver, 5 counters available
    [    0.294314] futex hash table entries: 256 (order: -1, 3072 bytes)
    [    0.294396] audit: initializing netlink subsys (disabled)
    [    0.294461] audit: type=2000 audit(0.280:1): initialized
    [    0.300672] VFS: Disk quotas dquot_6.6.0
    [    0.300854] VFS: Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
    [    0.302844] NFS: Registering the id_resolver key type
    [    0.302914] Key type id_resolver registered
    [    0.302921] Key type id_legacy registered
    [    0.302990] jffs2: version 2.2. (NAND) (SUMMARY)  © 2001-2006 Red Hat, Inc.
    [    0.305162] NET: Registered protocol family 38
    [    0.305228] io scheduler noop registered
    [    0.305241] io scheduler deadline registered
    [    0.305293] io scheduler cfq registered (default)
    [    0.306206] pinctrl-single 44e10800.pinmux: 142 pins at pa f9e10800 size 568
    [    0.307790] wkup_m3_ipc 44e11324.wkup_m3_ipc: could not get rproc handle
    [    0.308689] Serial: 8250/16550 driver, 10 ports, IRQ sharing enabled
    [    0.311929] 44e09000.serial: ttyS0 at MMIO 0x44e09000 (irq = 91, base_baud = 3000000) is a 8250
    [    0.989693] console [ttyS0] enabled
    [    0.994057] 481a6000.serial: ttyS3 at MMIO 0x481a6000 (irq = 92, base_baud = 3000000) is a 8250
    [    1.003638] [drm] Initialized drm 1.1.0 20060810
    [    1.017234] brd: module loaded
    [    1.024678] loop: module loaded
    [    1.028616] mtdoops: mtd device (mtddev=name/number) must be supplied
    [    1.036688] spidev spi1.0: buggy DT: spidev listed directly in DT
    [    1.042946] ------------[ cut here ]------------
    [    1.047598] WARNING: CPU: 0 PID: 1 at drivers/spi/spidev.c:730 spidev_probe+0x178/0x1bc()
    [    1.055828] Modules linked in:
    [    1.058907] CPU: 0 PID: 1 Comm: swapper Not tainted 4.1.6-g52c4aa7 #10
    [    1.065474] Hardware name: Generic AM33XX (Flattened Device Tree)
    [    1.071589] Backtrace: 
    [    1.074081] [<c0012b10>] (dump_backtrace) from [<c0012d30>] (show_stack+0x18/0x1c)
    [    1.081690]  r7:c07f1bd4 r6:000002da r5:00000009 r4:00000000
    [    1.087402] [<c0012d18>] (show_stack) from [<c0630274>] (dump_stack+0x20/0x28)
    [    1.094672] [<c0630254>] (dump_stack) from [<c0037d14>] (warn_slowpath_common+0x7c/0xb4)
    [    1.102811] [<c0037c98>] (warn_slowpath_common) from [<c0037df0>] (warn_slowpath_null+0x24/0x2c)
    [    1.111629]  r8:00000000 r7:c08bf780 r6:00000000 r5:dda9ac00 r4:c08bf770
    [    1.118400] [<c0037dcc>] (warn_slowpath_null) from [<c0478ab0>] (spidev_probe+0x178/0x1bc)
    [    1.126724] [<c0478938>] (spidev_probe) from [<c0476270>] (spi_drv_probe+0x58/0x7c)
    [    1.134421]  r8:00000000 r7:c08bf780 r6:00000000 r5:dda9ac00 r4:c08bf770
    [    1.141188] [<c0476218>] (spi_drv_probe) from [<c0401820>] (driver_probe_device+0x17c/0x2c0)
    [    1.149671]  r5:dda9ac00 r4:c0901d80
    [    1.153286] [<c04016a4>] (driver_probe_device) from [<c04019ac>] (__device_attach+0x48/0x4c)
    [    1.161766]  r9:00000000 r8:c0901d5c r7:00000000 r6:c0401964 r5:dda9ac00 r4:c08bf780
    [    1.169575] [<c0401964>] (__device_attach) from [<c03ffc38>] (bus_for_each_drv+0x6c/0xa0)
    [    1.177795]  r5:dda9ac00 r4:00000000
    [    1.181397] [<c03ffbcc>] (bus_for_each_drv) from [<c0401664>] (device_attach+0x78/0x90)
    [    1.189441]  r6:dda9ac34 r5:dda9ac00 r4:dda9ac00
    [    1.194106] [<c04015ec>] (device_attach) from [<c0400cc0>] (bus_probe_device+0x8c/0xb4)
    [    1.202151]  r7:00000000 r6:c08bf678 r5:dda9ac00 r4:dda9ac08
    [    1.207858] [<c0400c34>] (bus_probe_device) from [<c03fede4>] (device_add+0x3c4/0x570)
    [    1.215816]  r7:00000000 r6:dda9ac00 r5:dda6c800 r4:dda9ac08
    [    1.221521] [<c03fea20>] (device_add) from [<c0476978>] (spi_add_device+0x94/0x138)
    [    1.229218]  r10:dd9de8bc r9:dd8e1010 r8:00000000 r7:dd8e1010 r6:dda6c800 r5:00000000
    [    1.237118]  r4:dda9ac00
    [    1.239665] [<c04768e4>] (spi_add_device) from [<c04782dc>] (spi_register_master+0x438/0x6f4)
    [    1.248233]  r7:dda9ac00 r6:00000000 r5:de365dac r4:dda6c800
    [    1.253951] [<c0477ea4>] (spi_register_master) from [<c04785cc>] (devm_spi_register_master+0x34/0x70)
    [    1.263217]  r10:dd9de8bc r9:dda6c968 r8:dda6ca20 r7:dd8e1010 r6:dda6c800 r5:dda94010
    [    1.271103]  r4:00000000
    [    1.273665] [<c0478598>] (devm_spi_register_master) from [<c047a1dc>] (omap2_mcspi_probe+0x304/0x3b8)
    [    1.282930]  r7:dd8e1000 r6:00000088 r5:dda6c800 r4:00000000
    [    1.288638] [<c0479ed8>] (omap2_mcspi_probe) from [<c0403224>] (platform_drv_probe+0x4c/0xac)
    [    1.297206]  r10:00000000 r9:c0882158 r8:00000000 r7:fffffdfb r6:c08bf7d0 r5:dd8e1010
    [    1.305105]  r4:c0901d80
    [    1.307655] [<c04031d8>] (platform_drv_probe) from [<c0401820>] (driver_probe_device+0x17c/0x2c0)
    [    1.316571]  r7:c08bf7d0 r6:00000000 r5:dd8e1010 r4:c0901d80
    [    1.322290] [<c04016a4>] (driver_probe_device) from [<c0401a44>] (__driver_attach+0x94/0x98)
    [    1.330759]  r9:c0882158 r8:c08d1000 r7:00000000 r6:dd8e1044 r5:c08bf7d0 r4:dd8e1010
    [    1.338576] [<c04019b0>] (__driver_attach) from [<c03ffb74>] (bus_for_each_dev+0x74/0xa8)
    [    1.346795]  r7:00000000 r6:c04019b0 r5:c08bf7d0 r4:00000000
    [    1.352513] [<c03ffb00>] (bus_for_each_dev) from [<c040128c>] (driver_attach+0x20/0x28)
    [    1.360547]  r6:c08b5510 r5:dda99880 r4:c08bf7d0
    [    1.365219] [<c040126c>] (driver_attach) from [<c0400f40>] (bus_add_driver+0x148/0x1f4)
    [    1.373271] [<c0400df8>] (bus_add_driver) from [<c0402114>] (driver_register+0x80/0x100)
    [    1.381391]  r7:dda96bc0 r6:c08926a0 r5:c0873c30 r4:c08bf7d0
    [    1.387110] [<c0402094>] (driver_register) from [<c040315c>] (__platform_driver_register+0x50/0x64)
    [    1.396202]  r5:c0873c30 r4:c08926a0
    [    1.399811] [<c040310c>] (__platform_driver_register) from [<c0873c48>] (omap2_mcspi_driver_init+0x18/0x20)
    [    1.409607] [<c0873c30>] (omap2_mcspi_driver_init) from [<c0009664>] (do_one_initcall+0x88/0x1e0)
    [    1.418533] [<c00095dc>] (do_one_initcall) from [<c084de78>] (kernel_init_freeable+0x178/0x240)
    [    1.427276]  r10:c084d5e8 r9:c0882158 r8:c08d1000 r7:c088dcb4 r6:c08d1000 r5:c0882150
    [    1.435175]  r4:00000006
    [    1.437724] [<c084dd00>] (kernel_init_freeable) from [<c062d304>] (kernel_init+0x10/0xf4)
    [    1.445943]  r10:00000000 r9:00000000 r8:00000000 r7:00000000 r6:00000000 r5:c062d2f4
    [    1.453844]  r4:00000000
    [    1.456393] [<c062d2f4>] (kernel_init) from [<c000f928>] (ret_from_fork+0x14/0x2c)
    [    1.464001]  r5:c062d2f4 r4:00000000
    [    1.467628] ---[ end trace 0275e36d091f45f8 ]---
    [    1.472765] spidev spi1.1: buggy DT: spidev listed directly in DT
    [    1.478887] ------------[ cut here ]------------
    [    1.483568] WARNING: CPU: 0 PID: 1 at drivers/spi/spidev.c:730 spidev_probe+0x178/0x1bc()
    [    1.491791] Modules linked in:
    [    1.494865] CPU: 0 PID: 1 Comm: swapper Tainted: G        W       4.1.6-g52c4aa7 #10
    [    1.502650] Hardware name: Generic AM33XX (Flattened Device Tree)
    [    1.508764] Backtrace: 
    [    1.511232] [<c0012b10>] (dump_backtrace) from [<c0012d30>] (show_stack+0x18/0x1c)
    [    1.518843]  r7:c07f1bd4 r6:000002da r5:00000009 r4:00000000
    [    1.524565] [<c0012d18>] (show_stack) from [<c0630274>] (dump_stack+0x20/0x28)
    [    1.531832] [<c0630254>] (dump_stack) from [<c0037d14>] (warn_slowpath_common+0x7c/0xb4)
    [    1.539957] [<c0037c98>] (warn_slowpath_common) from [<c0037df0>] (warn_slowpath_null+0x24/0x2c)
    [    1.548785]  r8:00000000 r7:c08bf780 r6:00000000 r5:dda52000 r4:c08bf770
    [    1.555556] [<c0037dcc>] (warn_slowpath_null) from [<c0478ab0>] (spidev_probe+0x178/0x1bc)
    [    1.563872] [<c0478938>] (spidev_probe) from [<c0476270>] (spi_drv_probe+0x58/0x7c)
    [    1.571556]  r8:00000000 r7:c08bf780 r6:00000000 r5:dda52000 r4:c08bf770
    [    1.578330] [<c0476218>] (spi_drv_probe) from [<c0401820>] (driver_probe_device+0x17c/0x2c0)
    [    1.586812]  r5:dda52000 r4:c0901d80
    [    1.590415] [<c04016a4>] (driver_probe_device) from [<c04019ac>] (__device_attach+0x48/0x4c)
    [    1.598896]  r9:00000000 r8:c0901d5c r7:00000000 r6:c0401964 r5:dda52000 r4:c08bf780
    [    1.606715] [<c0401964>] (__device_attach) from [<c03ffc38>] (bus_for_each_drv+0x6c/0xa0)
    [    1.614935]  r5:dda52000 r4:00000000
    [    1.618535] [<c03ffbcc>] (bus_for_each_drv) from [<c0401664>] (device_attach+0x78/0x90)
    [    1.626580]  r6:dda52034 r5:dda52000 r4:dda52000
    [    1.631235] [<c04015ec>] (device_attach) from [<c0400cc0>] (bus_probe_device+0x8c/0xb4)
    [    1.639280]  r7:00000000 r6:c08bf678 r5:dda52000 r4:dda52008
    [    1.644998] [<c0400c34>] (bus_probe_device) from [<c03fede4>] (device_add+0x3c4/0x570)
    [    1.652955]  r7:00000000 r6:dda52000 r5:dda6c800 r4:dda52008
    [    1.658659] [<c03fea20>] (device_add) from [<c0476978>] (spi_add_device+0x94/0x138)
    [    1.666355]  r10:dd9de8bc r9:dd8e1010 r8:00000000 r7:dd8e1010 r6:dda6c800 r5:00000000
    [    1.674254]  r4:dda52000
    [    1.676802] [<c04768e4>] (spi_add_device) from [<c04782dc>] (spi_register_master+0x438/0x6f4)
    [    1.685370]  r7:dda52000 r6:00000000 r5:de365f94 r4:dda6c800
    [    1.691073] [<c0477ea4>] (spi_register_master) from [<c04785cc>] (devm_spi_register_master+0x34/0x70)
    [    1.700339]  r10:dd9de8bc r9:dda6c968 r8:dda6ca20 r7:dd8e1010 r6:dda6c800 r5:dda94010
    [    1.708238]  r4:00000000
    [    1.710787] [<c0478598>] (devm_spi_register_master) from [<c047a1dc>] (omap2_mcspi_probe+0x304/0x3b8)
    [    1.720053]  r7:dd8e1000 r6:00000088 r5:dda6c800 r4:00000000
    [    1.725772] [<c0479ed8>] (omap2_mcspi_probe) from [<c0403224>] (platform_drv_probe+0x4c/0xac)
    [    1.734340]  r10:00000000 r9:c0882158 r8:00000000 r7:fffffdfb r6:c08bf7d0 r5:dd8e1010
    [    1.742241]  r4:c0901d80
    [    1.744791] [<c04031d8>] (platform_drv_probe) from [<c0401820>] (driver_probe_device+0x17c/0x2c0)
    [    1.753707]  r7:c08bf7d0 r6:00000000 r5:dd8e1010 r4:c0901d80
    [    1.759415] [<c04016a4>] (driver_probe_device) from [<c0401a44>] (__driver_attach+0x94/0x98)
    [    1.767897]  r9:c0882158 r8:c08d1000 r7:00000000 r6:dd8e1044 r5:c08bf7d0 r4:dd8e1010
    [    1.775716] [<c04019b0>] (__driver_attach) from [<c03ffb74>] (bus_for_each_dev+0x74/0xa8)
    [    1.783935]  r7:00000000 r6:c04019b0 r5:c08bf7d0 r4:00000000
    [    1.789641] [<c03ffb00>] (bus_for_each_dev) from [<c040128c>] (driver_attach+0x20/0x28)
    [    1.797685]  r6:c08b5510 r5:dda99880 r4:c08bf7d0
    [    1.802352] [<c040126c>] (driver_attach) from [<c0400f40>] (bus_add_driver+0x148/0x1f4)
    [    1.810391] [<c0400df8>] (bus_add_driver) from [<c0402114>] (driver_register+0x80/0x100)
    [    1.818523]  r7:dda96bc0 r6:c08926a0 r5:c0873c30 r4:c08bf7d0
    [    1.824242] [<c0402094>] (driver_register) from [<c040315c>] (__platform_driver_register+0x50/0x64)
    [    1.833333]  r5:c0873c30 r4:c08926a0
    [    1.836938] [<c040310c>] (__platform_driver_register) from [<c0873c48>] (omap2_mcspi_driver_init+0x18/0x20)
    [    1.846735] [<c0873c30>] (omap2_mcspi_driver_init) from [<c0009664>] (do_one_initcall+0x88/0x1e0)
    [    1.855657] [<c00095dc>] (do_one_initcall) from [<c084de78>] (kernel_init_freeable+0x178/0x240)
    [    1.864399]  r10:c084d5e8 r9:c0882158 r8:c08d1000 r7:c088dcb4 r6:c08d1000 r5:c0882150
    [    1.872299]  r4:00000006
    [    1.874847] [<c084dd00>] (kernel_init_freeable) from [<c062d304>] (kernel_init+0x10/0xf4)
    [    1.883066]  r10:00000000 r9:00000000 r8:00000000 r7:00000000 r6:00000000 r5:c062d2f4
    [    1.890955]  r4:00000000
    [    1.893515] [<c062d2f4>] (kernel_init) from [<c000f928>] (ret_from_fork+0x14/0x2c)
    [    1.901113]  r5:c062d2f4 r4:00000000
    [    1.904720] ---[ end trace 0275e36d091f45f9 ]---
    [    1.910173] spidev spi2.0: buggy DT: spidev listed directly in DT
    [    1.916369] ------------[ cut here ]------------
    [    1.921014] WARNING: CPU: 0 PID: 1 at drivers/spi/spidev.c:730 spidev_probe+0x178/0x1bc()
    [    1.929237] Modules linked in:
    [    1.932326] CPU: 0 PID: 1 Comm: swapper Tainted: G        W       4.1.6-g52c4aa7 #10
    [    1.940099] Hardware name: Generic AM33XX (Flattened Device Tree)
    [    1.946225] Backtrace: 
    [    1.948696] [<c0012b10>] (dump_backtrace) from [<c0012d30>] (show_stack+0x18/0x1c)
    [    1.956306]  r7:c07f1bd4 r6:000002da r5:00000009 r4:00000000
    [    1.962028] [<c0012d18>] (show_stack) from [<c0630274>] (dump_stack+0x20/0x28)
    [    1.969284] [<c0630254>] (dump_stack) from [<c0037d14>] (warn_slowpath_common+0x7c/0xb4)
    [    1.977422] [<c0037c98>] (warn_slowpath_common) from [<c0037df0>] (warn_slowpath_null+0x24/0x2c)
    [    1.986252]  r8:00000000 r7:c08bf780 r6:00000000 r5:dda52400 r4:c08bf770
    [    1.993023] [<c0037dcc>] (warn_slowpath_null) from [<c0478ab0>] (spidev_probe+0x178/0x1bc)
    [    2.001329] [<c0478938>] (spidev_probe) from [<c0476270>] (spi_drv_probe+0x58/0x7c)
    [    2.009031]  r8:00000000 r7:c08bf780 r6:00000000 r5:dda52400 r4:c08bf770
    [    2.015808] [<c0476218>] (spi_drv_probe) from [<c0401820>] (driver_probe_device+0x17c/0x2c0)
    [    2.024290]  r5:dda52400 r4:c0901d80
    [    2.027892] [<c04016a4>] (driver_probe_device) from [<c04019ac>] (__device_attach+0x48/0x4c)
    [    2.036373]  r9:00000000 r8:c0901d5c r7:00000000 r6:c0401964 r5:dda52400 r4:c08bf780
    [    2.044192] [<c0401964>] (__device_attach) from [<c03ffc38>] (bus_for_each_drv+0x6c/0xa0)
    [    2.052411]  r5:dda52400 r4:00000000
    [    2.056014] [<c03ffbcc>] (bus_for_each_drv) from [<c0401664>] (device_attach+0x78/0x90)
    [    2.064060]  r6:dda52434 r5:dda52400 r4:dda52400
    [    2.068714] [<c04015ec>] (device_attach) from [<c0400cc0>] (bus_probe_device+0x8c/0xb4)
    [    2.076759]  r7:00000000 r6:c08bf678 r5:dda52400 r4:dda52408
    [    2.082478] [<c0400c34>] (bus_probe_device) from [<c03fede4>] (device_add+0x3c4/0x570)
    [    2.090425]  r7:00000000 r6:dda52400 r5:dda6cc00 r4:dda52408
    [    2.096144] [<c03fea20>] (device_add) from [<c0476978>] (spi_add_device+0x94/0x138)
    [    2.103840]  r10:dd9de97c r9:dd8e1210 r8:00000000 r7:dd8e1210 r6:dda6cc00 r5:00000000
    [    2.111740]  r4:dda52400
    [    2.114288] [<c04768e4>] (spi_add_device) from [<c04782dc>] (spi_register_master+0x438/0x6f4)
    [    2.122856]  r7:dda52400 r6:00000000 r5:de36645c r4:dda6cc00
    [    2.128560] [<c0477ea4>] (spi_register_master) from [<c04785cc>] (devm_spi_register_master+0x34/0x70)
    [    2.137826]  r10:dd9de97c r9:dda6cd68 r8:dda6ce20 r7:dd8e1210 r6:dda6cc00 r5:dda94c90
    [    2.145726]  r4:00000000
    [    2.148274] [<c0478598>] (devm_spi_register_master) from [<c047a1dc>] (omap2_mcspi_probe+0x304/0x3b8)
    [    2.157539]  r7:dd8e1200 r6:00000088 r5:dda6cc00 r4:00000000
    [    2.163259] [<c0479ed8>] (omap2_mcspi_probe) from [<c0403224>] (platform_drv_probe+0x4c/0xac)
    [    2.171827]  r10:00000000 r9:c0882158 r8:00000000 r7:fffffdfb r6:c08bf7d0 r5:dd8e1210
    [    2.179716]  r4:c0901d80
    [    2.182277] [<c04031d8>] (platform_drv_probe) from [<c0401820>] (driver_probe_device+0x17c/0x2c0)
    [    2.191182]  r7:c08bf7d0 r6:00000000 r5:dd8e1210 r4:c0901d80
    [    2.196901] [<c04016a4>] (driver_probe_device) from [<c0401a44>] (__driver_attach+0x94/0x98)
    [    2.205381]  r9:c0882158 r8:c08d1000 r7:00000000 r6:dd8e1244 r5:c08bf7d0 r4:dd8e1210
    [    2.213201] [<c04019b0>] (__driver_attach) from [<c03ffb74>] (bus_for_each_dev+0x74/0xa8)
    [    2.221408]  r7:00000000 r6:c04019b0 r5:c08bf7d0 r4:00000000
    [    2.227126] [<c03ffb00>] (bus_for_each_dev) from [<c040128c>] (driver_attach+0x20/0x28)
    [    2.235172]  r6:c08b5510 r5:dda99880 r4:c08bf7d0
    [    2.239826] [<c040126c>] (driver_attach) from [<c0400f40>] (bus_add_driver+0x148/0x1f4)
    [    2.247877] [<c0400df8>] (bus_add_driver) from [<c0402114>] (driver_register+0x80/0x100)
    [    2.256008]  r7:dda96bc0 r6:c08926a0 r5:c0873c30 r4:c08bf7d0
    [    2.261726] [<c0402094>] (driver_register) from [<c040315c>] (__platform_driver_register+0x50/0x64)
    [    2.270807]  r5:c0873c30 r4:c08926a0
    [    2.274428] [<c040310c>] (__platform_driver_register) from [<c0873c48>] (omap2_mcspi_driver_init+0x18/0x20)
    [    2.284225] [<c0873c30>] (omap2_mcspi_driver_init) from [<c0009664>] (do_one_initcall+0x88/0x1e0)
    [    2.293150] [<c00095dc>] (do_one_initcall) from [<c084de78>] (kernel_init_freeable+0x178/0x240)
    [    2.301893]  r10:c084d5e8 r9:c0882158 r8:c08d1000 r7:c088dcb4 r6:c08d1000 r5:c0882150
    [    2.309784]  r4:00000006
    [    2.312344] [<c084dd00>] (kernel_init_freeable) from [<c062d304>] (kernel_init+0x10/0xf4)
    [    2.320552]  r10:00000000 r9:00000000 r8:00000000 r7:00000000 r6:00000000 r5:c062d2f4
    [    2.328454]  r4:00000000
    [    2.331002] [<c062d2f4>] (kernel_init) from [<c000f928>] (ret_from_fork+0x14/0x2c)
    [    2.338610]  r5:c062d2f4 r4:00000000
    [    2.342218] ---[ end trace 0275e36d091f45fa ]---
    [    2.347268] spidev spi2.1: buggy DT: spidev listed directly in DT
    [    2.353426] ------------[ cut here ]------------
    [    2.358067] WARNING: CPU: 0 PID: 1 at drivers/spi/spidev.c:730 spidev_probe+0x178/0x1bc()
    [    2.366289] Modules linked in:
    [    2.369362] CPU: 0 PID: 1 Comm: swapper Tainted: G        W       4.1.6-g52c4aa7 #10
    [    2.377147] Hardware name: Generic AM33XX (Flattened Device Tree)
    [    2.383272] Backtrace: 
    [    2.385741] [<c0012b10>] (dump_backtrace) from [<c0012d30>] (show_stack+0x18/0x1c)
    [    2.393353]  r7:c07f1bd4 r6:000002da r5:00000009 r4:00000000
    [    2.399061] [<c0012d18>] (show_stack) from [<c0630274>] (dump_stack+0x20/0x28)
    [    2.406329] [<c0630254>] (dump_stack) from [<c0037d14>] (warn_slowpath_common+0x7c/0xb4)
    [    2.414466] [<c0037c98>] (warn_slowpath_common) from [<c0037df0>] (warn_slowpath_null+0x24/0x2c)
    [    2.423297]  r8:00000000 r7:c08bf780 r6:00000000 r5:dda52800 r4:c08bf770
    [    2.430056] [<c0037dcc>] (warn_slowpath_null) from [<c0478ab0>] (spidev_probe+0x178/0x1bc)
    [    2.438373] [<c0478938>] (spidev_probe) from [<c0476270>] (spi_drv_probe+0x58/0x7c)
    [    2.446068]  r8:00000000 r7:c08bf780 r6:00000000 r5:dda52800 r4:c08bf770
    [    2.452842] [<c0476218>] (spi_drv_probe) from [<c0401820>] (driver_probe_device+0x17c/0x2c0)
    [    2.461311]  r5:dda52800 r4:c0901d80
    [    2.464926] [<c04016a4>] (driver_probe_device) from [<c04019ac>] (__device_attach+0x48/0x4c)
    [    2.473406]  r9:00000000 r8:c0901d5c r7:00000000 r6:c0401964 r5:dda52800 r4:c08bf780
    [    2.481214] [<c0401964>] (__device_attach) from [<c03ffc38>] (bus_for_each_drv+0x6c/0xa0)
    [    2.489434]  r5:dda52800 r4:00000000
    [    2.493049] [<c03ffbcc>] (bus_for_each_drv) from [<c0401664>] (device_attach+0x78/0x90)
    [    2.501081]  r6:dda52834 r5:dda52800 r4:dda52800
    [    2.505746] [<c04015ec>] (device_attach) from [<c0400cc0>] (bus_probe_device+0x8c/0xb4)
    [    2.513791]  r7:00000000 r6:c08bf678 r5:dda52800 r4:dda52808
    [    2.519495] [<c0400c34>] (bus_probe_device) from [<c03fede4>] (device_add+0x3c4/0x570)
    [    2.527453]  r7:00000000 r6:dda52800 r5:dda6cc00 r4:dda52808
    [    2.533171] [<c03fea20>] (device_add) from [<c0476978>] (spi_add_device+0x94/0x138)
    [    2.540856]  r10:dd9de97c r9:dd8e1210 r8:00000000 r7:dd8e1210 r6:dda6cc00 r5:00000000
    [    2.548756]  r4:dda52800
    [    2.551304] [<c04768e4>] (spi_add_device) from [<c04782dc>] (spi_register_master+0x438/0x6f4)
    [    2.559872]  r7:dda52800 r6:00000000 r5:de366644 r4:dda6cc00
    [    2.565591] [<c0477ea4>] (spi_register_master) from [<c04785cc>] (devm_spi_register_master+0x34/0x70)
    [    2.574857]  r10:dd9de97c r9:dda6cd68 r8:dda6ce20 r7:dd8e1210 r6:dda6cc00 r5:dda94c90
    [    2.582754]  r4:00000000
    [    2.585304] [<c0478598>] (devm_spi_register_master) from [<c047a1dc>] (omap2_mcspi_probe+0x304/0x3b8)
    [    2.594570]  r7:dd8e1200 r6:00000088 r5:dda6cc00 r4:00000000
    [    2.600279] [<c0479ed8>] (omap2_mcspi_probe) from [<c0403224>] (platform_drv_probe+0x4c/0xac)
    [    2.608848]  r10:00000000 r9:c0882158 r8:00000000 r7:fffffdfb r6:c08bf7d0 r5:dd8e1210
    [    2.616748]  r4:c0901d80
    [    2.619299] [<c04031d8>] (platform_drv_probe) from [<c0401820>] (driver_probe_device+0x17c/0x2c0)
    [    2.628215]  r7:c08bf7d0 r6:00000000 r5:dd8e1210 r4:c0901d80
    [    2.633932] [<c04016a4>] (driver_probe_device) from [<c0401a44>] (__driver_attach+0x94/0x98)
    [    2.642416]  r9:c0882158 r8:c08d1000 r7:00000000 r6:dd8e1244 r5:c08bf7d0 r4:dd8e1210
    [    2.650222] [<c04019b0>] (__driver_attach) from [<c03ffb74>] (bus_for_each_dev+0x74/0xa8)
    [    2.658442]  r7:00000000 r6:c04019b0 r5:c08bf7d0 r4:00000000
    [    2.664159] [<c03ffb00>] (bus_for_each_dev) from [<c040128c>] (driver_attach+0x20/0x28)
    [    2.672204]  r6:c08b5510 r5:dda99880 r4:c08bf7d0
    [    2.676857] [<c040126c>] (driver_attach) from [<c0400f40>] (bus_add_driver+0x148/0x1f4)
    [    2.684909] [<c0400df8>] (bus_add_driver) from [<c0402114>] (driver_register+0x80/0x100)
    [    2.693041]  r7:dda96bc0 r6:c08926a0 r5:c0873c30 r4:c08bf7d0
    [    2.698750] [<c0402094>] (driver_register) from [<c040315c>] (__platform_driver_register+0x50/0x64)
    [    2.707841]  r5:c0873c30 r4:c08926a0
    [    2.711448] [<c040310c>] (__platform_driver_register) from [<c0873c48>] (omap2_mcspi_driver_init+0x18/0x20)
    [    2.721244] [<c0873c30>] (omap2_mcspi_driver_init) from [<c0009664>] (do_one_initcall+0x88/0x1e0)
    [    2.730168] [<c00095dc>] (do_one_initcall) from [<c084de78>] (kernel_init_freeable+0x178/0x240)
    [    2.738910]  r10:c084d5e8 r9:c0882158 r8:c08d1000 r7:c088dcb4 r6:c08d1000 r5:c0882150
    [    2.746811]  r4:00000006
    [    2.749359] [<c084dd00>] (kernel_init_freeable) from [<c062d304>] (kernel_init+0x10/0xf4)
    [    2.757577]  r10:00000000 r9:00000000 r8:00000000 r7:00000000 r6:00000000 r5:c062d2f4
    [    2.765476]  r4:00000000
    [    2.768025] [<c062d2f4>] (kernel_init) from [<c000f928>] (ret_from_fork+0x14/0x2c)
    [    2.775634]  r5:c062d2f4 r4:00000000
    [    2.779232] ---[ end trace 0275e36d091f45fb ]---
    [    2.786281] 47401300.usb-phy supply vcc not found, using dummy regulator
    [    2.824648] 47401b00.usb-phy supply vcc not found, using dummy regulator
    [    2.859197] using random self ethernet address
    [    2.863759] using random host ethernet address
    [    2.868786] usb0: HOST MAC 2a:c2:a7:b6:fb:41
    [    2.873215] usb0: MAC 82:85:2f:fd:0a:7b
    [    2.877099] using random self ethernet address
    [    2.881561] using random host ethernet address
    [    2.886227] g_ether gadget: Ethernet Gadget, version: Memorial Day 2008
    [    2.892926] g_ether gadget: g_ether ready
    [    2.897622] mousedev: PS/2 mouse device common for all mice
    [    2.903299] i2c /dev entries driver
    [    2.942108] ledtrig-cpu: registered to indicate activity on CPUs
    [    2.948939]  remoteproc0: wkup_m3 is available
    [    2.953583]  remoteproc0: Note: remoteproc is still under development and considered experimental.
    [    2.962656]  remoteproc0: THE BINARY FORMAT IS NOT YET FINALIZED, and backward compatibility isn't yet guaranteed.
    [    2.974221]  remoteproc0: Direct firmware load for am335x-pm-firmware.elf failed with error -2
    [    2.987673] oprofile: using arm/armv7
    [    2.991425]  remoteproc0: Falling back to user helper
    [    2.997000] Initializing XFRM netlink socket
    [    3.001379] NET: Registered protocol family 17
    [    3.006129] NET: Registered protocol family 15
    [    3.013789] Key type dns_resolver registered
    [    3.018270] omap_voltage_late_init: Voltage driver support not added
    [    3.025092] ThumbEE CPU extension supported.
    [    3.029398] Registering SWP/SWPB emulation handler
    [    3.049066] mmc0: MAN_BKOPS_EN bit is not set
    [    3.058658] mmc0: new high speed MMC card at address 0001
    [    3.065125] mmcblk0: mmc0:0001 M32508 7.12 GiB 
    [    3.069885] mmcblk0boot0: mmc0:0001 M32508 partition 1 4.00 MiB
    [    3.076140] mmcblk0boot1: mmc0:0001 M32508 partition 2 4.00 MiB
    [    3.082750] tps65217 0-0024: TPS65217 ID 0xe version 1.2
    [    3.088123] omap_i2c 44e0b000.i2c: bus 0 rev0.11 at 400 kHz
    [    3.094928]  mmcblk0: p1 p2
    [    3.099774] omap_i2c 4802a000.i2c: bus 1 rev0.11 at 400 kHz
    [    3.107169] hctosys: unable to open rtc device (rtc0)
    [    3.115460] ALSA device list:
    [    3.118460]   No soundcards found.
    [    3.132543] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
    [    3.140787] VFS: Mounted root (ext4 filesystem) on device 179:2.
    [    3.149943] devtmpfs: mounted
    [    3.153526] Freeing unused kernel memory: 260K (c084d000 - c088e000)
    INIT: version 2.88 booting
    [    3.288674] g_ether gadget: high-speed config #2: RNDIS
    Error opening /dev/fb0: No such file or directory
    Starting udev
    udev: Not using udev cache because of changes detected in the following files:
    udev:     /proc/version /proc/cmdline /proc/devices
    udev:     lib/udev/rules.d/* etc/udev/rules.d/*
    udev: The udev cache will be regenerated. To identify the detected changes,
    udev: compare the cached sysconf at   /etc/udev/cache.data
    udev: against the current sysconf at  /dev/shm/udev.cache
    [    3.707515] udevd[87]: starting version 182
    [    3.952242] cpu cpu0: of_pm_voltdm_notifier_register: Fail calculating voltage latency[950000<->1325000]:-22
    [    4.026486] omap_wdt: OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec
    [    4.052386] cpu cpu0: of_pm_voltdm_notifier_register: Fail calculating voltage latency[950000<->1325000]:-22
    [    4.111387] Error: Driver 'am335x-usb-childs' is already registered, aborting...
    [    4.143684] omap_rtc 44e3e000.rtc: rtc core: registered 44e3e000.rtc as rtc0
    [    4.451524] usbcore: registered new interface driver usbfs
    [    4.530383] usbcore: registered new interface driver hub
    [    4.570540] usbcore: registered new device driver usb
    [    4.609294] udc_core: exports duplicate symbol usb_add_gadget_udc (owned by kernel)
    [    4.683097] udc_core: exports duplicate symbol usb_add_gadget_udc (owned by kernel)
    [    4.748790] udc_core: exports duplicate symbol usb_add_gadget_udc (owned by kernel)
    [    4.893043] udc_core: exports duplicate symbol usb_add_gadget_udc (owned by kernel)
    [    4.956364] omap_rng 48310000.rng: OMAP Random Number Generator ver. 20
    [    5.179127]  remoteproc0: powering up wkup_m3
    [    5.190231] PM: bootloader does not support rtc-only!
    [    5.206397]  remoteproc0: Booting fw image am335x-pm-firmware.elf, size 219803
    [    5.275238] Error: Driver 'asoc-simple-card' is already registered, aborting...
    [    5.338584]  remoteproc0: remote processor wkup_m3 is now up
    [    5.338614] wkup_m3_ipc 44e11324.wkup_m3_ipc: CM3 Firmware Version = 0x191
    [    5.619936] Error: Driver 'asoc-simple-card' is already registered, aborting...
    [    6.287343] random: nonblocking pool is initialized
    [    7.507093] cryptodev: driver 1.6 loaded.
    [    7.547489] EXT4-fs (mmcblk0p2): re-mounted. Opts: data=ordered
    bootlogd: cannot allocate pseudo tty: No such file or directory
    Starting random number generator daemon.
    Populating dev cache
    Sat Oct 17 00:54:50 UTC 2015
    INIT: Entering runlevel: 5
    [    8.670441] HAVER_BOARD_GPIO: Initializing the HAVER_BOARD_GPIO LKM
    [    8.676974] HAVER_BOARD_GPIO: Initializing GPIO_0_16 for BT830 RST line
    [    9.701816] HAVER_BOARD_GPIO: Initializing GPIO_3_17 for LED Driver
    [    9.713240] HAVER_BOARD_GPIO: Initializing GPIO_2_22 for Power Off Button
    .
    Configuring network interfaces... done.
    Starting system message bus: dbus.
    UIM SYSFS Node Not Found
    Starting Dropbear SSH server: [   12.601846] NET: Registered protocol family 10
    dropbear.
    Starting rpcbind daemon...done.
    starting statd: done
    Starting syslogd/klogd: done
    Starting Haver board startup scriptSetting governor to userspace and frequency to 300000
    Starting Haver app
    .
    ***************************************************************
    ***************************************************************
    NOTICE: This file system contains the following GPLv3 packages:
            autoconf
            binutils
            cpp-symlinks
            cpp
            g++-symlinks
            g++
            gcc-symlinks
            gcc
            gdbserver
            gstreamer1.0-libav
            libgmp10
            libmpc3
            libmpfr4
            make
    
    If you do not wish to distribute GPLv3 components please remove
    the above packages prior to distribution.  This can be done using
    the opkg remove command.  i.e.:
        opkg remove <package>
    Where <package> is the name printed in the list above
    
    NOTE: If the package is a dependency of another package you
          will be notified of the dependent packages.  You should
          use the --force-removal-of-dependent-packages option to
          also remove the dependent packages as well
    ***************************************************************
    ***************************************************************
    
     _____                    _____           _         _   
    |  _  |___ ___ ___ ___   |  _  |___ ___  |_|___ ___| |_ 
    |     |  _| .'| . | . |  |   __|  _| . | | | -_|  _|  _|
    |__|__|_| |__,|_  |___|  |__|  |_| |___|_| |___|___|_|  
                  |___|                    |___|            
    
    Arago Project http://arago-project.org am335x-evm /dev/ttyO0
    
    Arago 2015.09 am335x-evm /dev/ttyO0
    
    am335x-evm login: root

    There must be a step that we are missing.

    Thanks,

    Mark J

  • Mark,

    As we already discussed, AIC3x codec driver is built as a module and loaded after the kernel boot up, loaded by rootfs. This is what we have by default in AM335x TI PSDK.

    {PSDK}/board-support/linux-4.x/arch/arm/configs/tisdk_am335x-evm_defconfig

    CONFIG_SND_SOC_TLV320AIC3X=m

    In SPRAC97 document (sections 4.2.1.1 and 4.2.2) I see both options for PCM5102a codec are supported - built in kernel and built as a module. Which option have you selected?

    Regards,
    Pavel

  • Hi Pavel,

    I have tried both built-in (*selection in menuconfig) and loadable module (m selection in menuconfig). The result appears to be the same. ALSA starts, but no soundcards are found and I see "Error: Driver 'asoc-simple-card' is already registered, aborting..." within the startup. Attached to this reply (bootuplog_builtin.log) is the boot with built-in selected.

    8688.bootuplog_builtin.log
    Starting kernel ...
    
    [    0.000000] Booting Linux on physical CPU 0x0
    [    0.000000] Initializing cgroup subsys cpuset
    [    0.000000] Initializing cgroup subsys cpu
    [    0.000000] Initializing cgroup subsys cpuacct
    [    0.000000] Linux version 4.1.6-g52c4aa7 (dworx@dworx-System-Product-Name) (gcc version 4.9.3 20150413 (prerelease) (Linaro GCC 4.9-2015.05) ) #11 PREEMPT Mon Apr 23 08:36:40 PDT 2018
    [    0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c5387d
    [    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
    [    0.000000] Machine model: TI AM335x BeagleBone Black
    [    0.000000] cma: Reserved 24 MiB at 0x9e800000
    [    0.000000] Memory policy: Data cache writeback
    [    0.000000] CPU: All CPU(s) started in SVC mode.
    [    0.000000] AM335X ES2.1 (sgx neon )
    [    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 129920
    [    0.000000] Kernel command line: console=ttyO0,115200n8 root=PARTUUID=00000000-02 rw rootfstype=ext4 rootwait
    [    0.000000] PID hash table entries: 2048 (order: 1, 8192 bytes)
    [    0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
    [    0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
    [    0.000000] Memory: 485216K/524288K available (6339K kernel code, 258K rwdata, 2124K rodata, 260K init, 230K bss, 14496K reserved, 24576K cma-reserved, 0K highmem)
    [    0.000000] Virtual kernel memory layout:
    [    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    [    0.000000]     fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
    [    0.000000]     vmalloc : 0xe0800000 - 0xff000000   ( 488 MB)
    [    0.000000]     lowmem  : 0xc0000000 - 0xe0000000   ( 512 MB)
    [    0.000000]     pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
    [    0.000000]     modules : 0xbf000000 - 0xbfe00000   (  14 MB)
    [    0.000000]       .text : 0xc0008000 - 0xc084c0ac   (8465 kB)
    [    0.000000]       .init : 0xc084d000 - 0xc088e000   ( 260 kB)
    [    0.000000]       .data : 0xc088e000 - 0xc08ceb68   ( 259 kB)
    [    0.000000]        .bss : 0xc08d1000 - 0xc090a8f8   ( 231 kB)
    [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
    [    0.000000] Preemptible hierarchical RCU implementation.
    [    0.000000]  Additional per-CPU info printed with stalls.
    [    0.000000] NR_IRQS:16 nr_irqs:16 16
    [    0.000000] IRQ: Found an INTC at 0xfa200000 (revision 5.0) with 128 interrupts
    [    0.000000] OMAP clockevent source: timer2 at 24000000 Hz
    [    0.000012] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns
    [    0.000029] clocksource timer1: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
    [    0.000039] OMAP clocksource: timer1 at 24000000 Hz
    [    0.000197] Console: colour dummy device 80x30
    [    0.000217] WARNING: Your 'console=ttyO0' has been replaced by 'ttyS0'
    [    0.000224] This ensures that you still see kernel messages. Please
    [    0.000228] update your kernel commandline.
    [    0.000244] Calibrating delay loop... 996.14 BogoMIPS (lpj=4980736)
    [    0.089331] pid_max: default: 32768 minimum: 301
    [    0.089421] Security Framework initialized
    [    0.089466] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
    [    0.089476] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
    [    0.090075] Initializing cgroup subsys blkio
    [    0.090097] Initializing cgroup subsys memory
    [    0.090134] Initializing cgroup subsys devices
    [    0.090147] Initializing cgroup subsys freezer
    [    0.090160] Initializing cgroup subsys perf_event
    [    0.090182] CPU: Testing write buffer coherency: ok
    [    0.090537] Setting up static identity map for 0x80008200 - 0x80008270
    [    0.091880] devtmpfs: initialized
    [    0.099788] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3
    [    0.106944] omap_hwmod: tptc0 using broken dt data from edma
    [    0.107039] omap_hwmod: tptc1 using broken dt data from edma
    [    0.107115] omap_hwmod: tptc2 using broken dt data from edma
    [    0.111358] omap_hwmod: debugss: _wait_target_disable failed
    [    0.165683] clocksource jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
    [    0.167686] pinctrl core: initialized pinctrl subsystem
    [    0.168813] NET: Registered protocol family 16
    [    0.170851] DMA: preallocated 256 KiB pool for atomic coherent allocations
    [    0.199319] cpuidle: using governor ladder
    [    0.229310] cpuidle: using governor menu
    [    0.232344] OMAP GPIO hardware version 0.1
    [    0.233321] omap_gpio 481ac000.gpio: could not find pctldev for node /ocp/l4_wkup@44c00000/scm@210000/pinmux@800/gpio2_pins_default, deferring probe
    [    0.233561] omap_gpio 481ae000.gpio: could not find pctldev for node /ocp/l4_wkup@44c00000/scm@210000/pinmux@800/gpio3_pins_default, deferring probe
    [    0.238513] No ATAGs?
    [    0.238542] hw-breakpoint: debug architecture 0x4 unsupported.
    [    0.276201] edma-dma-engine edma-dma-engine.0: TI EDMA DMA engine driver
    [    0.278764] vgaarb: loaded
    [    0.279218] SCSI subsystem initialized
    [    0.279762] omap_i2c 44e0b000.i2c: could not find pctldev for node /ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_i2c0_pins, deferring probe
    [    0.279809] omap_i2c 4802a000.i2c: could not find pctldev for node /ocp/l4_wkup@44c00000/scm@210000/pinmux@800/led_batt_i2c1_pins_default, deferring probe
    [    0.279920] pps_core: LinuxPPS API ver. 1 registered
    [    0.279927] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
    [    0.279954] PTP clock support registered
    [    0.280694] omap-mailbox 480c8000.mailbox: omap mailbox rev 0x400
    [    0.280872] Advanced Linux Sound Architecture Driver Initialized.
    [    0.281638] Switched to clocksource timer1
    [    0.290401] NET: Registered protocol family 2
    [    0.291133] TCP established hash table entries: 4096 (order: 2, 16384 bytes)
    [    0.291177] TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
    [    0.291216] TCP: Hash tables configured (established 4096 bind 4096)
    [    0.291293] UDP hash table entries: 256 (order: 0, 4096 bytes)
    [    0.291310] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
    [    0.291456] NET: Registered protocol family 1
    [    0.291865] RPC: Registered named UNIX socket transport module.
    [    0.291877] RPC: Registered udp transport module.
    [    0.291882] RPC: Registered tcp transport module.
    [    0.291888] RPC: Registered tcp NFSv4.1 backchannel transport module.
    [    0.292656] CPU PMU: Failed to parse /pmu/interrupt-affinity[0]
    [    0.292696] hw perfevents: enabled with armv7_cortex_a8 PMU driver, 5 counters available
    [    0.294300] futex hash table entries: 256 (order: -1, 3072 bytes)
    [    0.294383] audit: initializing netlink subsys (disabled)
    [    0.294448] audit: type=2000 audit(0.280:1): initialized
    [    0.300669] VFS: Disk quotas dquot_6.6.0
    [    0.300849] VFS: Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
    [    0.302844] NFS: Registering the id_resolver key type
    [    0.302915] Key type id_resolver registered
    [    0.302922] Key type id_legacy registered
    [    0.302991] jffs2: version 2.2. (NAND) (SUMMARY)  © 2001-2006 Red Hat, Inc.
    [    0.305178] NET: Registered protocol family 38
    [    0.305244] io scheduler noop registered
    [    0.305257] io scheduler deadline registered
    [    0.305309] io scheduler cfq registered (default)
    [    0.306223] pinctrl-single 44e10800.pinmux: 142 pins at pa f9e10800 size 568
    [    0.307803] wkup_m3_ipc 44e11324.wkup_m3_ipc: could not get rproc handle
    [    0.308701] Serial: 8250/16550 driver, 10 ports, IRQ sharing enabled
    [    0.311940] 44e09000.serial: ttyS0 at MMIO 0x44e09000 (irq = 91, base_baud = 3000000) is a 8250
    [    0.989699] console [ttyS0] enabled
    [    0.994048] 481a6000.serial: ttyS3 at MMIO 0x481a6000 (irq = 92, base_baud = 3000000) is a 8250
    [    1.003624] [drm] Initialized drm 1.1.0 20060810
    [    1.017190] brd: module loaded
    [    1.024655] loop: module loaded
    [    1.028596] mtdoops: mtd device (mtddev=name/number) must be supplied
    [    1.036667] spidev spi1.0: buggy DT: spidev listed directly in DT
    [    1.042927] ------------[ cut here ]------------
    [    1.047579] WARNING: CPU: 0 PID: 1 at drivers/spi/spidev.c:730 spidev_probe+0x178/0x1bc()
    [    1.055809] Modules linked in:
    [    1.058888] CPU: 0 PID: 1 Comm: swapper Not tainted 4.1.6-g52c4aa7 #11
    [    1.065453] Hardware name: Generic AM33XX (Flattened Device Tree)
    [    1.071568] Backtrace: 
    [    1.074059] [<c0012b10>] (dump_backtrace) from [<c0012d30>] (show_stack+0x18/0x1c)
    [    1.081671]  r7:c07f1bd4 r6:000002da r5:00000009 r4:00000000
    [    1.087385] [<c0012d18>] (show_stack) from [<c0630274>] (dump_stack+0x20/0x28)
    [    1.094657] [<c0630254>] (dump_stack) from [<c0037d14>] (warn_slowpath_common+0x7c/0xb4)
    [    1.102796] [<c0037c98>] (warn_slowpath_common) from [<c0037df0>] (warn_slowpath_null+0x24/0x2c)
    [    1.111614]  r8:00000000 r7:c08bf780 r6:00000000 r5:dda9ac00 r4:c08bf770
    [    1.118386] [<c0037dcc>] (warn_slowpath_null) from [<c0478ab0>] (spidev_probe+0x178/0x1bc)
    [    1.126708] [<c0478938>] (spidev_probe) from [<c0476270>] (spi_drv_probe+0x58/0x7c)
    [    1.134405]  r8:00000000 r7:c08bf780 r6:00000000 r5:dda9ac00 r4:c08bf770
    [    1.141172] [<c0476218>] (spi_drv_probe) from [<c0401820>] (driver_probe_device+0x17c/0x2c0)
    [    1.149653]  r5:dda9ac00 r4:c0901d80
    [    1.153269] [<c04016a4>] (driver_probe_device) from [<c04019ac>] (__device_attach+0x48/0x4c)
    [    1.161750]  r9:00000000 r8:c0901d5c r7:00000000 r6:c0401964 r5:dda9ac00 r4:c08bf780
    [    1.169558] [<c0401964>] (__device_attach) from [<c03ffc38>] (bus_for_each_drv+0x6c/0xa0)
    [    1.177779]  r5:dda9ac00 r4:00000000
    [    1.181381] [<c03ffbcc>] (bus_for_each_drv) from [<c0401664>] (device_attach+0x78/0x90)
    [    1.189426]  r6:dda9ac34 r5:dda9ac00 r4:dda9ac00
    [    1.194091] [<c04015ec>] (device_attach) from [<c0400cc0>] (bus_probe_device+0x8c/0xb4)
    [    1.202136]  r7:00000000 r6:c08bf678 r5:dda9ac00 r4:dda9ac08
    [    1.207843] [<c0400c34>] (bus_probe_device) from [<c03fede4>] (device_add+0x3c4/0x570)
    [    1.215800]  r7:00000000 r6:dda9ac00 r5:dda6c800 r4:dda9ac08
    [    1.221505] [<c03fea20>] (device_add) from [<c0476978>] (spi_add_device+0x94/0x138)
    [    1.229202]  r10:dd9de8bc r9:dd8e1010 r8:00000000 r7:dd8e1010 r6:dda6c800 r5:00000000
    [    1.237102]  r4:dda9ac00
    [    1.239650] [<c04768e4>] (spi_add_device) from [<c04782dc>] (spi_register_master+0x438/0x6f4)
    [    1.248218]  r7:dda9ac00 r6:00000000 r5:de365dac r4:dda6c800
    [    1.253937] [<c0477ea4>] (spi_register_master) from [<c04785cc>] (devm_spi_register_master+0x34/0x70)
    [    1.263203]  r10:dd9de8bc r9:dda6c968 r8:dda6ca20 r7:dd8e1010 r6:dda6c800 r5:dda94010
    [    1.271092]  r4:00000000
    [    1.273653] [<c0478598>] (devm_spi_register_master) from [<c047a1dc>] (omap2_mcspi_probe+0x304/0x3b8)
    [    1.282919]  r7:dd8e1000 r6:00000088 r5:dda6c800 r4:00000000
    [    1.288629] [<c0479ed8>] (omap2_mcspi_probe) from [<c0403224>] (platform_drv_probe+0x4c/0xac)
    [    1.297198]  r10:00000000 r9:c0882158 r8:00000000 r7:fffffdfb r6:c08bf7d0 r5:dd8e1010
    [    1.305099]  r4:c0901d80
    [    1.307649] [<c04031d8>] (platform_drv_probe) from [<c0401820>] (driver_probe_device+0x17c/0x2c0)
    [    1.316566]  r7:c08bf7d0 r6:00000000 r5:dd8e1010 r4:c0901d80
    [    1.322282] [<c04016a4>] (driver_probe_device) from [<c0401a44>] (__driver_attach+0x94/0x98)
    [    1.330751]  r9:c0882158 r8:c08d1000 r7:00000000 r6:dd8e1044 r5:c08bf7d0 r4:dd8e1010
    [    1.338571] [<c04019b0>] (__driver_attach) from [<c03ffb74>] (bus_for_each_dev+0x74/0xa8)
    [    1.346791]  r7:00000000 r6:c04019b0 r5:c08bf7d0 r4:00000000
    [    1.352507] [<c03ffb00>] (bus_for_each_dev) from [<c040128c>] (driver_attach+0x20/0x28)
    [    1.360542]  r6:c08b5510 r5:dda99880 r4:c08bf7d0
    [    1.365213] [<c040126c>] (driver_attach) from [<c0400f40>] (bus_add_driver+0x148/0x1f4)
    [    1.373265] [<c0400df8>] (bus_add_driver) from [<c0402114>] (driver_register+0x80/0x100)
    [    1.381386]  r7:dda96bc0 r6:c08926a0 r5:c0873c30 r4:c08bf7d0
    [    1.387108] [<c0402094>] (driver_register) from [<c040315c>] (__platform_driver_register+0x50/0x64)
    [    1.396199]  r5:c0873c30 r4:c08926a0
    [    1.399806] [<c040310c>] (__platform_driver_register) from [<c0873c48>] (omap2_mcspi_driver_init+0x18/0x20)
    [    1.409602] [<c0873c30>] (omap2_mcspi_driver_init) from [<c0009664>] (do_one_initcall+0x88/0x1e0)
    [    1.418528] [<c00095dc>] (do_one_initcall) from [<c084de78>] (kernel_init_freeable+0x178/0x240)
    [    1.427270]  r10:c084d5e8 r9:c0882158 r8:c08d1000 r7:c088dcb4 r6:c08d1000 r5:c0882150
    [    1.435170]  r4:00000006
    [    1.437718] [<c084dd00>] (kernel_init_freeable) from [<c062d304>] (kernel_init+0x10/0xf4)
    [    1.445938]  r10:00000000 r9:00000000 r8:00000000 r7:00000000 r6:00000000 r5:c062d2f4
    [    1.453836]  r4:00000000
    [    1.456385] [<c062d2f4>] (kernel_init) from [<c000f928>] (ret_from_fork+0x14/0x2c)
    [    1.463993]  r5:c062d2f4 r4:00000000
    [    1.467619] ---[ end trace d6cc9a013d1b85ae ]---
    [    1.472744] spidev spi1.1: buggy DT: spidev listed directly in DT
    [    1.478869] ------------[ cut here ]------------
    [    1.483546] WARNING: CPU: 0 PID: 1 at drivers/spi/spidev.c:730 spidev_probe+0x178/0x1bc()
    [    1.491768] Modules linked in:
    [    1.494841] CPU: 0 PID: 1 Comm: swapper Tainted: G        W       4.1.6-g52c4aa7 #11
    [    1.502624] Hardware name: Generic AM33XX (Flattened Device Tree)
    [    1.508739] Backtrace: 
    [    1.511207] [<c0012b10>] (dump_backtrace) from [<c0012d30>] (show_stack+0x18/0x1c)
    [    1.518817]  r7:c07f1bd4 r6:000002da r5:00000009 r4:00000000
    [    1.524536] [<c0012d18>] (show_stack) from [<c0630274>] (dump_stack+0x20/0x28)
    [    1.531802] [<c0630254>] (dump_stack) from [<c0037d14>] (warn_slowpath_common+0x7c/0xb4)
    [    1.539929] [<c0037c98>] (warn_slowpath_common) from [<c0037df0>] (warn_slowpath_null+0x24/0x2c)
    [    1.548758]  r8:00000000 r7:c08bf780 r6:00000000 r5:dda52000 r4:c08bf770
    [    1.555529] [<c0037dcc>] (warn_slowpath_null) from [<c0478ab0>] (spidev_probe+0x178/0x1bc)
    [    1.563847] [<c0478938>] (spidev_probe) from [<c0476270>] (spi_drv_probe+0x58/0x7c)
    [    1.571532]  r8:00000000 r7:c08bf780 r6:00000000 r5:dda52000 r4:c08bf770
    [    1.578309] [<c0476218>] (spi_drv_probe) from [<c0401820>] (driver_probe_device+0x17c/0x2c0)
    [    1.586791]  r5:dda52000 r4:c0901d80
    [    1.590392] [<c04016a4>] (driver_probe_device) from [<c04019ac>] (__device_attach+0x48/0x4c)
    [    1.598872]  r9:00000000 r8:c0901d5c r7:00000000 r6:c0401964 r5:dda52000 r4:c08bf780
    [    1.606691] [<c0401964>] (__device_attach) from [<c03ffc38>] (bus_for_each_drv+0x6c/0xa0)
    [    1.614911]  r5:dda52000 r4:00000000
    [    1.618513] [<c03ffbcc>] (bus_for_each_drv) from [<c0401664>] (device_attach+0x78/0x90)
    [    1.626557]  r6:dda52034 r5:dda52000 r4:dda52000
    [    1.631212] [<c04015ec>] (device_attach) from [<c0400cc0>] (bus_probe_device+0x8c/0xb4)
    [    1.639256]  r7:00000000 r6:c08bf678 r5:dda52000 r4:dda52008
    [    1.644974] [<c0400c34>] (bus_probe_device) from [<c03fede4>] (device_add+0x3c4/0x570)
    [    1.652931]  r7:00000000 r6:dda52000 r5:dda6c800 r4:dda52008
    [    1.658637] [<c03fea20>] (device_add) from [<c0476978>] (spi_add_device+0x94/0x138)
    [    1.666334]  r10:dd9de8bc r9:dd8e1010 r8:00000000 r7:dd8e1010 r6:dda6c800 r5:00000000
    [    1.674233]  r4:dda52000
    [    1.676780] [<c04768e4>] (spi_add_device) from [<c04782dc>] (spi_register_master+0x438/0x6f4)
    [    1.685349]  r7:dda52000 r6:00000000 r5:de365f94 r4:dda6c800
    [    1.691056] [<c0477ea4>] (spi_register_master) from [<c04785cc>] (devm_spi_register_master+0x34/0x70)
    [    1.700321]  r10:dd9de8bc r9:dda6c968 r8:dda6ca20 r7:dd8e1010 r6:dda6c800 r5:dda94010
    [    1.708224]  r4:00000000
    [    1.710772] [<c0478598>] (devm_spi_register_master) from [<c047a1dc>] (omap2_mcspi_probe+0x304/0x3b8)
    [    1.720038]  r7:dd8e1000 r6:00000088 r5:dda6c800 r4:00000000
    [    1.725754] [<c0479ed8>] (omap2_mcspi_probe) from [<c0403224>] (platform_drv_probe+0x4c/0xac)
    [    1.734322]  r10:00000000 r9:c0882158 r8:00000000 r7:fffffdfb r6:c08bf7d0 r5:dd8e1010
    [    1.742223]  r4:c0901d80
    [    1.744772] [<c04031d8>] (platform_drv_probe) from [<c0401820>] (driver_probe_device+0x17c/0x2c0)
    [    1.753689]  r7:c08bf7d0 r6:00000000 r5:dd8e1010 r4:c0901d80
    [    1.759397] [<c04016a4>] (driver_probe_device) from [<c0401a44>] (__driver_attach+0x94/0x98)
    [    1.767878]  r9:c0882158 r8:c08d1000 r7:00000000 r6:dd8e1044 r5:c08bf7d0 r4:dd8e1010
    [    1.775696] [<c04019b0>] (__driver_attach) from [<c03ffb74>] (bus_for_each_dev+0x74/0xa8)
    [    1.783915]  r7:00000000 r6:c04019b0 r5:c08bf7d0 r4:00000000
    [    1.789622] [<c03ffb00>] (bus_for_each_dev) from [<c040128c>] (driver_attach+0x20/0x28)
    [    1.797666]  r6:c08b5510 r5:dda99880 r4:c08bf7d0
    [    1.802333] [<c040126c>] (driver_attach) from [<c0400f40>] (bus_add_driver+0x148/0x1f4)
    [    1.810373] [<c0400df8>] (bus_add_driver) from [<c0402114>] (driver_register+0x80/0x100)
    [    1.818505]  r7:dda96bc0 r6:c08926a0 r5:c0873c30 r4:c08bf7d0
    [    1.824222] [<c0402094>] (driver_register) from [<c040315c>] (__platform_driver_register+0x50/0x64)
    [    1.833313]  r5:c0873c30 r4:c08926a0
    [    1.836919] [<c040310c>] (__platform_driver_register) from [<c0873c48>] (omap2_mcspi_driver_init+0x18/0x20)
    [    1.846715] [<c0873c30>] (omap2_mcspi_driver_init) from [<c0009664>] (do_one_initcall+0x88/0x1e0)
    [    1.855638] [<c00095dc>] (do_one_initcall) from [<c084de78>] (kernel_init_freeable+0x178/0x240)
    [    1.864381]  r10:c084d5e8 r9:c0882158 r8:c08d1000 r7:c088dcb4 r6:c08d1000 r5:c0882150
    [    1.872279]  r4:00000006
    [    1.874828] [<c084dd00>] (kernel_init_freeable) from [<c062d304>] (kernel_init+0x10/0xf4)
    [    1.883047]  r10:00000000 r9:00000000 r8:00000000 r7:00000000 r6:00000000 r5:c062d2f4
    [    1.890934]  r4:00000000
    [    1.893494] [<c062d2f4>] (kernel_init) from [<c000f928>] (ret_from_fork+0x14/0x2c)
    [    1.901091]  r5:c062d2f4 r4:00000000
    [    1.904699] ---[ end trace d6cc9a013d1b85af ]---
    [    1.910157] spidev spi2.0: buggy DT: spidev listed directly in DT
    [    1.916351] ------------[ cut here ]------------
    [    1.920995] WARNING: CPU: 0 PID: 1 at drivers/spi/spidev.c:730 spidev_probe+0x178/0x1bc()
    [    1.929220] Modules linked in:
    [    1.932309] CPU: 0 PID: 1 Comm: swapper Tainted: G        W       4.1.6-g52c4aa7 #11
    [    1.940081] Hardware name: Generic AM33XX (Flattened Device Tree)
    [    1.946208] Backtrace: 
    [    1.948677] [<c0012b10>] (dump_backtrace) from [<c0012d30>] (show_stack+0x18/0x1c)
    [    1.956286]  r7:c07f1bd4 r6:000002da r5:00000009 r4:00000000
    [    1.962007] [<c0012d18>] (show_stack) from [<c0630274>] (dump_stack+0x20/0x28)
    [    1.969262] [<c0630254>] (dump_stack) from [<c0037d14>] (warn_slowpath_common+0x7c/0xb4)
    [    1.977400] [<c0037c98>] (warn_slowpath_common) from [<c0037df0>] (warn_slowpath_null+0x24/0x2c)
    [    1.986229]  r8:00000000 r7:c08bf780 r6:00000000 r5:dda52400 r4:c08bf770
    [    1.993000] [<c0037dcc>] (warn_slowpath_null) from [<c0478ab0>] (spidev_probe+0x178/0x1bc)
    [    2.001304] [<c0478938>] (spidev_probe) from [<c0476270>] (spi_drv_probe+0x58/0x7c)
    [    2.009008]  r8:00000000 r7:c08bf780 r6:00000000 r5:dda52400 r4:c08bf770
    [    2.015784] [<c0476218>] (spi_drv_probe) from [<c0401820>] (driver_probe_device+0x17c/0x2c0)
    [    2.024265]  r5:dda52400 r4:c0901d80
    [    2.027866] [<c04016a4>] (driver_probe_device) from [<c04019ac>] (__device_attach+0x48/0x4c)
    [    2.036346]  r9:00000000 r8:c0901d5c r7:00000000 r6:c0401964 r5:dda52400 r4:c08bf780
    [    2.044165] [<c0401964>] (__device_attach) from [<c03ffc38>] (bus_for_each_drv+0x6c/0xa0)
    [    2.052385]  r5:dda52400 r4:00000000
    [    2.055987] [<c03ffbcc>] (bus_for_each_drv) from [<c0401664>] (device_attach+0x78/0x90)
    [    2.064031]  r6:dda52434 r5:dda52400 r4:dda52400
    [    2.068684] [<c04015ec>] (device_attach) from [<c0400cc0>] (bus_probe_device+0x8c/0xb4)
    [    2.076729]  r7:00000000 r6:c08bf678 r5:dda52400 r4:dda52408
    [    2.082448] [<c0400c34>] (bus_probe_device) from [<c03fede4>] (device_add+0x3c4/0x570)
    [    2.090394]  r7:00000000 r6:dda52400 r5:dda6cc00 r4:dda52408
    [    2.096112] [<c03fea20>] (device_add) from [<c0476978>] (spi_add_device+0x94/0x138)
    [    2.103808]  r10:dd9de97c r9:dd8e1210 r8:00000000 r7:dd8e1210 r6:dda6cc00 r5:00000000
    [    2.111710]  r4:dda52400
    [    2.114258] [<c04768e4>] (spi_add_device) from [<c04782dc>] (spi_register_master+0x438/0x6f4)
    [    2.122826]  r7:dda52400 r6:00000000 r5:de36645c r4:dda6cc00
    [    2.128534] [<c0477ea4>] (spi_register_master) from [<c04785cc>] (devm_spi_register_master+0x34/0x70)
    [    2.137800]  r10:dd9de97c r9:dda6cd68 r8:dda6ce20 r7:dd8e1210 r6:dda6cc00 r5:dda94c90
    [    2.145699]  r4:00000000
    [    2.148247] [<c0478598>] (devm_spi_register_master) from [<c047a1dc>] (omap2_mcspi_probe+0x304/0x3b8)
    [    2.157514]  r7:dd8e1200 r6:00000088 r5:dda6cc00 r4:00000000
    [    2.163234] [<c0479ed8>] (omap2_mcspi_probe) from [<c0403224>] (platform_drv_probe+0x4c/0xac)
    [    2.171802]  r10:00000000 r9:c0882158 r8:00000000 r7:fffffdfb r6:c08bf7d0 r5:dd8e1210
    [    2.179691]  r4:c0901d80
    [    2.182252] [<c04031d8>] (platform_drv_probe) from [<c0401820>] (driver_probe_device+0x17c/0x2c0)
    [    2.191158]  r7:c08bf7d0 r6:00000000 r5:dd8e1210 r4:c0901d80
    [    2.196876] [<c04016a4>] (driver_probe_device) from [<c0401a44>] (__driver_attach+0x94/0x98)
    [    2.205357]  r9:c0882158 r8:c08d1000 r7:00000000 r6:dd8e1244 r5:c08bf7d0 r4:dd8e1210
    [    2.213176] [<c04019b0>] (__driver_attach) from [<c03ffb74>] (bus_for_each_dev+0x74/0xa8)
    [    2.221385]  r7:00000000 r6:c04019b0 r5:c08bf7d0 r4:00000000
    [    2.227103] [<c03ffb00>] (bus_for_each_dev) from [<c040128c>] (driver_attach+0x20/0x28)
    [    2.235149]  r6:c08b5510 r5:dda99880 r4:c08bf7d0
    [    2.239803] [<c040126c>] (driver_attach) from [<c0400f40>] (bus_add_driver+0x148/0x1f4)
    [    2.247855] [<c0400df8>] (bus_add_driver) from [<c0402114>] (driver_register+0x80/0x100)
    [    2.255987]  r7:dda96bc0 r6:c08926a0 r5:c0873c30 r4:c08bf7d0
    [    2.261707] [<c0402094>] (driver_register) from [<c040315c>] (__platform_driver_register+0x50/0x64)
    [    2.270788]  r5:c0873c30 r4:c08926a0
    [    2.274406] [<c040310c>] (__platform_driver_register) from [<c0873c48>] (omap2_mcspi_driver_init+0x18/0x20)
    [    2.284202] [<c0873c30>] (omap2_mcspi_driver_init) from [<c0009664>] (do_one_initcall+0x88/0x1e0)
    [    2.293127] [<c00095dc>] (do_one_initcall) from [<c084de78>] (kernel_init_freeable+0x178/0x240)
    [    2.301869]  r10:c084d5e8 r9:c0882158 r8:c08d1000 r7:c088dcb4 r6:c08d1000 r5:c0882150
    [    2.309757]  r4:00000006
    [    2.312318] [<c084dd00>] (kernel_init_freeable) from [<c062d304>] (kernel_init+0x10/0xf4)
    [    2.320525]  r10:00000000 r9:00000000 r8:00000000 r7:00000000 r6:00000000 r5:c062d2f4
    [    2.328426]  r4:00000000
    [    2.330975] [<c062d2f4>] (kernel_init) from [<c000f928>] (ret_from_fork+0x14/0x2c)
    [    2.338583]  r5:c062d2f4 r4:00000000
    [    2.342191] ---[ end trace d6cc9a013d1b85b0 ]---
    [    2.347239] spidev spi2.1: buggy DT: spidev listed directly in DT
    [    2.353395] ------------[ cut here ]------------
    [    2.358039] WARNING: CPU: 0 PID: 1 at drivers/spi/spidev.c:730 spidev_probe+0x178/0x1bc()
    [    2.366260] Modules linked in:
    [    2.369333] CPU: 0 PID: 1 Comm: swapper Tainted: G        W       4.1.6-g52c4aa7 #11
    [    2.377117] Hardware name: Generic AM33XX (Flattened Device Tree)
    [    2.383243] Backtrace: 
    [    2.385710] [<c0012b10>] (dump_backtrace) from [<c0012d30>] (show_stack+0x18/0x1c)
    [    2.393319]  r7:c07f1bd4 r6:000002da r5:00000009 r4:00000000
    [    2.399026] [<c0012d18>] (show_stack) from [<c0630274>] (dump_stack+0x20/0x28)
    [    2.406294] [<c0630254>] (dump_stack) from [<c0037d14>] (warn_slowpath_common+0x7c/0xb4)
    [    2.414432] [<c0037c98>] (warn_slowpath_common) from [<c0037df0>] (warn_slowpath_null+0x24/0x2c)
    [    2.423262]  r8:00000000 r7:c08bf780 r6:00000000 r5:dda52800 r4:c08bf770
    [    2.430021] [<c0037dcc>] (warn_slowpath_null) from [<c0478ab0>] (spidev_probe+0x178/0x1bc)
    [    2.438337] [<c0478938>] (spidev_probe) from [<c0476270>] (spi_drv_probe+0x58/0x7c)
    [    2.446034]  r8:00000000 r7:c08bf780 r6:00000000 r5:dda52800 r4:c08bf770
    [    2.452809] [<c0476218>] (spi_drv_probe) from [<c0401820>] (driver_probe_device+0x17c/0x2c0)
    [    2.461279]  r5:dda52800 r4:c0901d80
    [    2.464894] [<c04016a4>] (driver_probe_device) from [<c04019ac>] (__device_attach+0x48/0x4c)
    [    2.473375]  r9:00000000 r8:c0901d5c r7:00000000 r6:c0401964 r5:dda52800 r4:c08bf780
    [    2.481184] [<c0401964>] (__device_attach) from [<c03ffc38>] (bus_for_each_drv+0x6c/0xa0)
    [    2.489403]  r5:dda52800 r4:00000000
    [    2.493016] [<c03ffbcc>] (bus_for_each_drv) from [<c0401664>] (device_attach+0x78/0x90)
    [    2.501050]  r6:dda52834 r5:dda52800 r4:dda52800
    [    2.505716] [<c04015ec>] (device_attach) from [<c0400cc0>] (bus_probe_device+0x8c/0xb4)
    [    2.513760]  r7:00000000 r6:c08bf678 r5:dda52800 r4:dda52808
    [    2.519467] [<c0400c34>] (bus_probe_device) from [<c03fede4>] (device_add+0x3c4/0x570)
    [    2.527425]  r7:00000000 r6:dda52800 r5:dda6cc00 r4:dda52808
    [    2.533144] [<c03fea20>] (device_add) from [<c0476978>] (spi_add_device+0x94/0x138)
    [    2.540829]  r10:dd9de97c r9:dd8e1210 r8:00000000 r7:dd8e1210 r6:dda6cc00 r5:00000000
    [    2.548730]  r4:dda52800
    [    2.551277] [<c04768e4>] (spi_add_device) from [<c04782dc>] (spi_register_master+0x438/0x6f4)
    [    2.559845]  r7:dda52800 r6:00000000 r5:de366644 r4:dda6cc00
    [    2.565563] [<c0477ea4>] (spi_register_master) from [<c04785cc>] (devm_spi_register_master+0x34/0x70)
    [    2.574829]  r10:dd9de97c r9:dda6cd68 r8:dda6ce20 r7:dd8e1210 r6:dda6cc00 r5:dda94c90
    [    2.582730]  r4:00000000
    [    2.585279] [<c0478598>] (devm_spi_register_master) from [<c047a1dc>] (omap2_mcspi_probe+0x304/0x3b8)
    [    2.594546]  r7:dd8e1200 r6:00000088 r5:dda6cc00 r4:00000000
    [    2.600254] [<c0479ed8>] (omap2_mcspi_probe) from [<c0403224>] (platform_drv_probe+0x4c/0xac)
    [    2.608822]  r10:00000000 r9:c0882158 r8:00000000 r7:fffffdfb r6:c08bf7d0 r5:dd8e1210
    [    2.616721]  r4:c0901d80
    [    2.619270] [<c04031d8>] (platform_drv_probe) from [<c0401820>] (driver_probe_device+0x17c/0x2c0)
    [    2.628187]  r7:c08bf7d0 r6:00000000 r5:dd8e1210 r4:c0901d80
    [    2.633904] [<c04016a4>] (driver_probe_device) from [<c0401a44>] (__driver_attach+0x94/0x98)
    [    2.642387]  r9:c0882158 r8:c08d1000 r7:00000000 r6:dd8e1244 r5:c08bf7d0 r4:dd8e1210
    [    2.650196] [<c04019b0>] (__driver_attach) from [<c03ffb74>] (bus_for_each_dev+0x74/0xa8)
    [    2.658416]  r7:00000000 r6:c04019b0 r5:c08bf7d0 r4:00000000
    [    2.664134] [<c03ffb00>] (bus_for_each_dev) from [<c040128c>] (driver_attach+0x20/0x28)
    [    2.672179]  r6:c08b5510 r5:dda99880 r4:c08bf7d0
    [    2.676833] [<c040126c>] (driver_attach) from [<c0400f40>] (bus_add_driver+0x148/0x1f4)
    [    2.684885] [<c0400df8>] (bus_add_driver) from [<c0402114>] (driver_register+0x80/0x100)
    [    2.693017]  r7:dda96bc0 r6:c08926a0 r5:c0873c30 r4:c08bf7d0
    [    2.698723] [<c0402094>] (driver_register) from [<c040315c>] (__platform_driver_register+0x50/0x64)
    [    2.707815]  r5:c0873c30 r4:c08926a0
    [    2.711420] [<c040310c>] (__platform_driver_register) from [<c0873c48>] (omap2_mcspi_driver_init+0x18/0x20)
    [    2.721215] [<c0873c30>] (omap2_mcspi_driver_init) from [<c0009664>] (do_one_initcall+0x88/0x1e0)
    [    2.730138] [<c00095dc>] (do_one_initcall) from [<c084de78>] (kernel_init_freeable+0x178/0x240)
    [    2.738880]  r10:c084d5e8 r9:c0882158 r8:c08d1000 r7:c088dcb4 r6:c08d1000 r5:c0882150
    [    2.746781]  r4:00000006
    [    2.749329] [<c084dd00>] (kernel_init_freeable) from [<c062d304>] (kernel_init+0x10/0xf4)
    [    2.757548]  r10:00000000 r9:00000000 r8:00000000 r7:00000000 r6:00000000 r5:c062d2f4
    [    2.765448]  r4:00000000
    [    2.767996] [<c062d2f4>] (kernel_init) from [<c000f928>] (ret_from_fork+0x14/0x2c)
    [    2.775605]  r5:c062d2f4 r4:00000000
    [    2.779202] ---[ end trace d6cc9a013d1b85b1 ]---
    [    2.786247] 47401300.usb-phy supply vcc not found, using dummy regulator
    [    2.824631] 47401b00.usb-phy supply vcc not found, using dummy regulator
    [    2.859177] using random self ethernet address
    [    2.863740] using random host ethernet address
    [    2.868774] usb0: HOST MAC e6:1c:4d:40:9e:1a
    [    2.873200] usb0: MAC 62:c0:aa:b1:d3:f0
    [    2.877085] using random self ethernet address
    [    2.881548] using random host ethernet address
    [    2.886212] g_ether gadget: Ethernet Gadget, version: Memorial Day 2008
    [    2.892911] g_ether gadget: g_ether ready
    [    2.897608] mousedev: PS/2 mouse device common for all mice
    [    2.903285] i2c /dev entries driver
    [    2.942095] ledtrig-cpu: registered to indicate activity on CPUs
    [    2.948929]  remoteproc0: wkup_m3 is available
    [    2.953571]  remoteproc0: Note: remoteproc is still under development and considered experimental.
    [    2.962644]  remoteproc0: THE BINARY FORMAT IS NOT YET FINALIZED, and backward compatibility isn't yet guaranteed.
    [    2.974213]  remoteproc0: Direct firmware load for am335x-pm-firmware.elf failed with error -2
    [    2.987662] oprofile: using arm/armv7
    [    2.991418]  remoteproc0: Falling back to user helper
    [    2.996988] Initializing XFRM netlink socket
    [    3.001362] NET: Registered protocol family 17
    [    3.006112] NET: Registered protocol family 15
    [    3.013782] Key type dns_resolver registered
    [    3.018267] omap_voltage_late_init: Voltage driver support not added
    [    3.025091] ThumbEE CPU extension supported.
    [    3.029397] Registering SWP/SWPB emulation handler
    [    3.049042] mmc0: MAN_BKOPS_EN bit is not set
    [    3.058600] mmc0: new high speed MMC card at address 0001
    [    3.065058] mmcblk0: mmc0:0001 M32508 7.12 GiB 
    [    3.069814] mmcblk0boot0: mmc0:0001 M32508 partition 1 4.00 MiB
    [    3.076074] mmcblk0boot1: mmc0:0001 M32508 partition 2 4.00 MiB
    [    3.082685] tps65217 0-0024: TPS65217 ID 0xe version 1.2
    [    3.088055] omap_i2c 44e0b000.i2c: bus 0 rev0.11 at 400 kHz
    [    3.094867]  mmcblk0: p1 p2
    [    3.099733] omap_i2c 4802a000.i2c: bus 1 rev0.11 at 400 kHz
    [    3.107134] hctosys: unable to open rtc device (rtc0)
    [    3.115426] ALSA device list:
    [    3.118426]   No soundcards found.
    [    3.132545] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
    [    3.140784] VFS: Mounted root (ext4 filesystem) on device 179:2.
    [    3.149953] devtmpfs: mounted
    [    3.153530] Freeing unused kernel memory: 260K (c084d000 - c088e000)
    INIT: version 2.88 booting[    3.287643] g_ether gadget: high-speed config #2: RNDIS
    
    Error opening /dev/fb0: No such file or directory
    Starting udev
    udev: Not using udev cache because of changes detected in the following files:
    udev:     /proc/version /proc/cmdline /proc/devices
    udev:     lib/udev/rules.d/* etc/udev/rules.d/*
    udev: The udev cache will be regenerated. To identify the detected changes,
    udev: compare the cached sysconf at   /etc/udev/cache.data
    udev: against the current sysconf at  /dev/shm/udev.cache
    [    3.713237] udevd[87]: starting version 182
    [    3.938719] cpu cpu0: of_pm_voltdm_notifier_register: Fail calculating voltage latency[950000<->1325000]:-22
    [    4.028263] cpu cpu0: of_pm_voltdm_notifier_register: Fail calculating voltage latency[950000<->1325000]:-22
    [    4.109017] omap_wdt: OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec
    [    4.204364] Error: Driver 'am335x-usb-childs' is already registered, aborting...
    [    4.249571] omap_rtc 44e3e000.rtc: already running
    [    4.312440] omap_rtc 44e3e000.rtc: rtc core: registered 44e3e000.rtc as rtc0
    [    4.437301] omap_rng 48310000.rng: OMAP Random Number Generator ver. 20
    [    4.628283] usbcore: registered new interface driver usbfs
    [    4.712175] usbcore: registered new interface driver hub
    [    4.748189] usbcore: registered new device driver usb
    [    4.800134] udc_core: exports duplicate symbol usb_add_gadget_udc (owned by kernel)
    [    4.873209] udc_core: exports duplicate symbol usb_add_gadget_udc (owned by kernel)
    [    4.956557] udc_core: exports duplicate symbol usb_add_gadget_udc (owned by kernel)
    [    5.054268] udc_core: exports duplicate symbol usb_add_gadget_udc (owned by kernel)
    [    5.166252] PM: bootloader does not support rtc-only!
    [    5.277825]  remoteproc0: powering up wkup_m3
    [    5.302820]  remoteproc0: Booting fw image am335x-pm-firmware.elf, size 219803
    [    5.310478]  remoteproc0: remote processor wkup_m3 is now up
    [    5.316172] wkup_m3_ipc 44e11324.wkup_m3_ipc: CM3 Firmware Version = 0x191
    [    5.358235] Error: Driver 'asoc-simple-card' is already registered, aborting...
    [    5.580500] Error: Driver 'asoc-simple-card' is already registered, aborting...
    [    6.307798] random: nonblocking pool is initialized
    [    7.559852] cryptodev: driver 1.6 loaded.
    [    7.600129] EXT4-fs (mmcblk0p2): re-mounted. Opts: data=ordered
    bootlogd: cannot allocate pseudo tty: No such file or directory
    Starting random number generator daemon.
    Populating dev cache
    INIT: Entering runlevel: 5
    [    8.706063] HAVER_BOARD_GPIO: Initializing the HAVER_BOARD_GPIO LKM
    [    8.712736] HAVER_BOARD_GPIO: Initializing GPIO_0_16 for BT830 RST line
    [    9.731772] HAVER_BOARD_GPIO: Initializing GPIO_3_17 for LED Driver
    [    9.742962] HAVER_BOARD_GPIO: Initializing GPIO_2_22 for Power Off Button
    .
    Configuring network interfaces... done.
    Starting system message bus: dbus.
    UIM SYSFS Node Not Found
    Starting Dropbear SSH server: [   12.557801] NET: Registered protocol family 10
    dropbear.
    Starting rpcbind daemon...done.
    starting statd: done
    Starting syslogd/klogd: done
    Starting Haver board startup scriptSetting governor to userspace and frequency to 300000
    Starting Haver app
    .
    ***************************************************************
    ***************************************************************
    NOTICE: This file system contains the following GPLv3 packages:
            autoconf
            binutils
            cpp-symlinks
            cpp
            g++-symlinks
            g++
            gcc-symlinks
            gcc
            gdbserver
            gstreamer1.0-libav
            libgmp10
            libmpc3
            libmpfr4
            make
    
    If you do not wish to distribute GPLv3 components please remove
    the above packages prior to distribution.  This can be done using
    the opkg remove command.  i.e.:
        opkg remove <package>
    Where <package> is the name printed in the list above
    
    NOTE: If the package is a dependency of another package you
          will be notified of the dependent packages.  You should
          use the --force-removal-of-dependent-packages option to
          also remove the dependent packages as well
    ***************************************************************
    ***************************************************************
    
     _____                    _____           _         _   
    |  _  |___ ___ ___ ___   |  _  |___ ___  |_|___ ___| |_ 
    |     |  _| .'| . | . |  |   __|  _| . | | | -_|  _|  _|
    |__|__|_| |__,|_  |___|  |__|  |_| |___|_| |___|___|_|  
                  |___|                    |___|            
    
    Arago Project http://arago-project.org am335x-evm /dev/ttyO0
    
    Arago 2015.09 am335x-evm /dev/ttyO0
    
    am335x-evm login: root

    The previously attached log (bootuplog.log) showed boot with loadable selection.

    I am also attaching the .config used.

    .config.txt

    Is there any way to get some sort of ALSA log indicating what soc is "being registered" as per the startup terminal IO?

    Thanks,

    Mark J

    ,

  • Mark,

    I try this on my side and everything works fine, I am able to see "pcm5102a-hifi <-> 4803c000.mcasp mapping ok" message, see the full boot up log attached.

    pcm5102_log

    I followed strictly sprac97.pdf document, which means that I didn't disable AIC3x codec driver in .config file, I leave it as default. I also make PCM5102a codec built-in kernel (not external module).

    CONFIG_SND_SOC_TLV320AIC3X=m

    CONFIG_SND_SOC_PCM5102A=y

    I am using PSDK 4.01 (kernel 4.9.41) and AM335x StarterKit board.

    What I have change in addition is removing McASP1 support for AIC3x codec and transfer it to PCM5102 codec. I have removed McASP1/AIC3x support from am335x-evmsk.dts file, and add MCASP1/PCM5102 support in am335x-sk-pcm5102a.dtsi file. I am attaching these two files for your reference. Please try to align as much as possible to my use-case and report back if there are still issues.

    am335x-evmsk.dts

    am335x-sk-pcm5102a.dtsi

    Regards,
    Pavel

  • Hi Pavel,

    Late yesterday, we reached out to a colleague with some Linux codec dev experience. This resource suggested that the pcm5102a.c code used did not include required elements for registration and tie-in to dts/dtb entries. So, we found another pcm5102a.c reference. See this implementation: 

    Note that it includes MODULE_DEVICE_TABLE(), etc. We updated the pcm5102a_dai declaration as follows (to include capture):

    static struct snd_soc_dai_driver pcm5102a_dai = {
    	.name = "pcm5102a-hifi",
    	.playback = {
    		.channels_min = 2,
    		.channels_max = 2,
    		.rates = SNDRV_PCM_RATE_8000_192000,
    		.formats = SNDRV_PCM_FMTBIT_S16_LE |
    			   SNDRV_PCM_FMTBIT_S24_LE |
    			   SNDRV_PCM_FMTBIT_S32_LE
    	},
    	.capture = {
    		.stream_name = "Capture",
    		.channels_min = 1,
    		.channels_max = 2,
    		.rates = SNDRV_PCM_RATE_8000_192000,
    		.formats = SNDRV_PCM_FMTBIT_S16_LE |
    				SNDRV_PCM_FMTBIT_S24_LE |
    				SNDRV_PCM_FMTBIT_S32_LE
    	},
    };

    After compiling with this updated pcm5102a.c file (still with no tlv320x codec enabled within our kernel) we were able to get a response to "arecord -l":

    root@am335x-evm:~# arecord -l
    **** List of CAPTURE Hardware Devices ****
    card 0: PCM5102a [PCM5102a], device 0: davinci-mcasp.0-pcm5102a-hifi pcm5102a-hifi-0 []
      Subdevices: 1/1
      Subdevice #0: subdevice #0
    root@am335x-evm:~# 
    We then tried to record a wav file and got an error. We then changed the /etc/asound.conf to support our "hw:0,0" device:
    # default Arago configuration
    
    pcm.dsnooped
    {
    	type dsnoop
    	ipc_key 1025
    	slave.pcm "hw:0,0"
    }
    
    pcm.!default
    {
    	type plug
    	slave.pcm "dsnooped"
    }

    ... and now arecord is supporting log to a wav file. We will continue testing.

    Note that we are getting the following response to "dmesg | grep pcm":

    [    3.063761] asoc-simple-card sound@1: pcm5102a-hifi <-> 48038000.mcasp mapping ok

    ... this is the other verification method described within the sprac97.pdf.

    So, from a driver verification method, we look ok.

    Should the sprac97.pdf be updated to reflect these required changes?

    I will reply again after validating that the data supported by this working driver looks good.

    Thanks,

    Mark J

  • Mark Janke said:
    Note that it includes MODULE_DEVICE_TABLE(), etc.

    Mark Janke said:
    Should the sprac97.pdf be updated to reflect these required changes?

    No, I do not think that sprac97 should be updated, as this doc is based on PSDK v3.03, which comes with kernel 4.4.41. And MODULE_DEVICE_TABLE seems to be used only for older kernels, like 3.x. MODULE_DEVICE_TABLE is used in the below wiki, which is based on old kernel 3.12.10

    Regards,
    Pavel

  • Hi,

    We have moved on to using the ALSA Library API to get data from the PCM5102a codec that appears to be running fine and have hit a snag. I believe that this issue is an improperly setup asound.conf file. Here is what we are using:

    6153.asound.conf.txt
    pcm.dmixed
    {
        type dmix
        ipc_key 1024
        ipc_key_add_uid 0
        ipc_perm 0666
        slave.pcm "hw:0,0"
    }
    
    pcm.dsnooped
    {
        type dsnoop
        ipc_key 1025
        slave.pcm "hw:0,0"
    }
    
    pcm.duplex
    {
        type asym
        playback.pcm "dmixed"
        capture.pcm "dsnooped"
    }
    
    pcm.!default
    {
        type plug
        slave.pcm "duplex"
    }
    
    ctl.!default
    {
        type hw
        card 0
    }
    
    
    

    We are using the asoundlib (#include <alsa/asoundlib.h>) and fairly standard techniques to read from our streaming codec device. Here is a cap showing our input (Frame Sync and Data signals):

    The above data shows what we expect - 24 bits of data (single channel) followed by 8 bits of status within each frame sync period (125 uSec or 8K samples/sec).

    Our app is doing the following.

    - Get a cap handle for block IO: snd_pcm_open (&m_pCap_hdl, "default", SND_PCM_STREAM_CAPTURE, 0);

    - Alloc mem for hw params (m_pHw_params): snd_pcm_hw_params_malloc (&m_pHw_params);

    - Setup defaults within m_pHw_params: snd_pcm_hw_params_any (m_pCap_hdl, m_pHw_params);

    - Setup non-interleaved access: snd_pcm_hw_params_set_access (m_pCap_hdl, m_pHw_params, SND_PCM_ACCESS_RW_NONINTERLEAVED);

    - Set the format (we will throw out the first byte, so get 32 bits): snd_pcm_hw_params_set_format (m_pCap_hdl, m_pHw_params, SND_PCM_FORMAT_S32_LE );

    - Set the rate (Rate = 8000, RateDir=0): snd_pcm_hw_params_set_rate_near (m_pCap_hdl, m_pHw_params, &Rate, &RateDir);

    - Set the channel(s): snd_pcm_hw_params_set_channels (m_pCap_hdl, m_pHw_params, 1);

    - Request frames in period (m_Frames = 32): snd_pcm_hw_params_set_period_size_near(m_pCap_hdl, m_pHw_params, &m_Frames, &RateDir);

    - Use m_pHw_params: snd_pcm_hw_params (m_pCap_hdl, m_pHw_params);

    - Get the frames per period that will be used: snd_pcm_hw_params_get_period_size(m_pHw_params, &m_Frames, &RateDir);

    - Prep for capture: snd_pcm_prepare (m_pCap_hdl);

    - Allocate mem for an incoming buffer (m_pBuf)

    - Setup to dump PCM config: snd_output_stdio_attach(&pSTDOUT, stdout, 0);

    - Dump the config: snd_pcm_dump(m_pCap_hdl, pSTDOUT);

    - Try reading to m_pBuf: FramesRead = snd_pcm_readn(m_pCap_hdl, (void**) &m_pBuf, m_Frames);

    The snd_pcm_readn call always blocks. We have also tried to setup for interleaved read with S16 format (snd_pcm_readi) - intending to reformat the incoming data as requried later. It still blocks. We have tried both endian options and both signed and unsigned options for data format, but we always block on snd_pcm_readn or snd_pcm_readi. PCM dump is:

    Plug PCM: Rate conversion PCM (48000, sformat=S32_LE)

    Converter: linear-interpolation

    Protocol version: 10002

    Its setup is:

    stream : CAPTURE

    access : RW_NONINTERLEAVED

    format : S32_LE

    subformat : STD

    channels : 1

    rate : 8000

    exact rate : 8000 (8000/1)

    msbits : 32

    buffer_size : 3000

    period_size : 1000

    period_time : 125000

    tstamp_mode : NONE

    period_step : 1

    avail_min : 1000

    period_event : 0

    start_threshold : 1

    stop_threshold : 3000

    silence_threshold: 0

    silence_size : 0

    boundary : 196608000

    Slave: Route conversion PCM (sformat=S16_LE)

    Transformation table:

    0 <- 0*0.5 + 1*0.5

    Its setup is:

    stream : CAPTURE

    access : MMAP_INTERLEAVED

    format : S32_LE

    subformat : STD

    channels : 1

    rate : 48000

    exact rate : 48000 (48000/1)

    msbits : 32

    buffer_size : 18000

    period_size : 6000

    period_time : 125000

    tstamp_mode : NONE

    period_step : 1

    avail_min : 6000

    period_event : 0

    start_threshold : 6

    stop_threshold : 18000

    silence_threshold: 0

    silence_size : 0

    boundary : 1179648000

    Slave: Direct Snoop PCM

    Its setup is:

    stream : CAPTURE

    access : MMAP_INTERLEAVED

    format : S16_LE

    subformat : STD

    channels : 2

    rate : 48000

    exact rate : 48000 (48000/1)

    msbits : 16

    buffer_size : 18000

    period_size : 6000

    period_time : 125000

    tstamp_mode : NONE

    period_step : 1

    avail_min : 6000

    period_event : 0

    start_threshold : 6

    stop_threshold : 18000

    silence_threshold: 0

    silence_size : 0

    boundary : 1179648000

    Hardware PCM card 0 'PCM5102a' device 0 subdevice 0

    Its setup is:

    stream : CAPTURE

    access : MMAP_INTERLEAVED

    format : S16_LE

    subformat : STD

    channels : 2

    rate : 48000

    exact rate : 48000 (48000/1)

    msbits : 16

    buffer_size : 18000

    period_size : 6000

    period_time : 125000

    tstamp_mode : ENABLE

    period_step : 1

    avail_min : 6000

    period_event : 0

    start_threshold : 1

    stop_threshold : 1179648000

    silence_threshold: 0

    silence_size : 0

    boundary : 1179648000

    appl_ptr : 0

    hw_ptr : 0

    We believe that our issue is with the asound.conf contents. If we do not open (snd_pcm_open) with name "default" (i.e. we use "hw:0,0") we get invalid argument errors when trying to set the number of channels to 1 or non-interleaved format. We think that this may be because "default" is defined within the asound.conf (linked above).

    Our detailed app thread (handling ADC interface) header is here:

    CADCThrd.h

    ... and source is here:

    CADCThrd.cpp.c
    /*
     * To change this license header, choose License Headers in Project Properties.
     * To change this template file, choose Tools | Templates
     * and open the template in the editor.
     */
    
    /*
     * File:   CADCThrd.cpp
     * Author: mjanke
     *
     * Created on 26 April, 2018, 3:07 PM
     */
    
    #include <CADCThrd.h>
    
    #pragma GCC diagnostic ignored "-Wnarrowing"
    
    /////////////////////////////
    // Public Member Functions
    /////////////////////////////
    
    CADCThrd::CADCThrd(CBBB_Evnt* pBBBEvnt):
    CBBB_Base(pBBBEvnt)
    {
    	// Init members.
    	m_pCritSec = NULL;
    	m_pCap_hdl = NULL;
    	m_pHw_params = NULL;
    	m_pBuf = NULL;
    	m_Format = PCMFORMAT;
    	m_Frames = REQFRAMESINPERIOD;		// Frames per period. Declared as signed or unsigned in header.
    	m_PeriodTimeUSec = 0;
    
    	return;
    }
    
    /////////////////////////////
    // Private Member Functions
    /////////////////////////////
    
    UINT8 CADCThrd::InitCap(void)
    {
    	INT16 SndErr = 0;
    	UINT32 Rate = 8000;		// For some reason, need to use a pointer to this const value.
    	INT32 RateDir = 0;		// For some reason, need to use a pointer to this const value.
    	INT32 FrameBytes = 0;
    
    	// Open the card with device.
    	SndErr = snd_pcm_open (&m_pCap_hdl, CARDDEVICENAME, SND_PCM_STREAM_CAPTURE, SND_PCM_NONBLOCK);
    	if(SndErr < 0)
    	{
    		printf("snd_pcm_open() Error num: %d Error str: %s Cannot continue.\r\n", SndErr, snd_strerror(SndErr));
    		return 1;
    	}
    
    	// Allocate m_pHw_params
    	SndErr = snd_pcm_hw_params_malloc (&m_pHw_params);
    	if(SndErr < 0)
    	{
    		printf("snd_pcm_hw_params_malloc() Error num: %d Error str: %s Cannot continue.\r\n", SndErr, snd_strerror(SndErr));
    		return 1;
    	}
    
    	// Init m_pHw_params with defaults.
    	SndErr = snd_pcm_hw_params_any (m_pCap_hdl, m_pHw_params);
    	if(SndErr < 0)
    	{
    		printf("snd_pcm_hw_params_any() Error num: %d Error str: %s Cannot continue.\r\n", SndErr, snd_strerror(SndErr));
    		return 1;
    	}
    
    
    	// If possible - set to 1 chan here.
    
    	// Set m_pHw_params access. (try SND_PCM_ACCESS_MMAP_NONINTERLEAVED and then SND_PCM_ACCESS_RW_NONINTERLEAVED).
    	//SndErr = snd_pcm_hw_params_set_access (m_pCap_hdl, m_pHw_params, SND_PCM_ACCESS_MMAP_NONINTERLEAVED);
    	SndErr = snd_pcm_hw_params_set_access (m_pCap_hdl, m_pHw_params, SND_PCM_ACCESS_RW_NONINTERLEAVED);
    	if(SndErr < 0)
    	{
    		printf("snd_pcm_hw_params_set_access() Error num: %d Error str: %s Cannot continue.\r\n", SndErr, snd_strerror(SndErr));
    		return 1;
    	}
    
    	// Set m_pHw_params format
    	SndErr = snd_pcm_hw_params_set_format (m_pCap_hdl, m_pHw_params, m_Format);
    	if(SndErr < 0)
    	{
    		printf("snd_pcm_hw_params_set_format() Error num: %d Error str: %s Cannot continue.\r\n", SndErr, snd_strerror(SndErr));
    		return 1;
    	}
    
    	// Set m_pHw_params rate.
    	SndErr = snd_pcm_hw_params_set_rate_near (m_pCap_hdl, m_pHw_params, &Rate, &RateDir);
    	if(SndErr < 0)
    	{
    		printf("snd_pcm_hw_params_set_rate_near() Error num: %d Error str: %s Cannot continue.\r\n", SndErr, snd_strerror(SndErr));
    		return 1;
    	}
    
    	// Set m_pHw_params channel.
    	SndErr = snd_pcm_hw_params_set_channels (m_pCap_hdl, m_pHw_params, NUMCHANNELS);
    	if(SndErr < 0)
    	{
    		printf("snd_pcm_hw_params_set_channels() Error num: %d Error str: %s Cannot continue.\r\n", SndErr, snd_strerror(SndErr));
    		return 1;
    	}
    
    	// Always update m_Frames as it can be altered elsewhere.
    	m_Frames = REQFRAMESINPERIOD;
    	SndErr = snd_pcm_hw_params_set_period_size_near(m_pCap_hdl, m_pHw_params, &m_Frames, &RateDir);
    	if(SndErr < 0)
    	{
    		printf("snd_pcm_hw_params_set_period_size_near() Error num: %d Error str: %s Cannot continue.\r\n", SndErr, snd_strerror(SndErr));
    		return 1;
    	}
    
    	// Use m_pHw_params.
    	SndErr = snd_pcm_hw_params (m_pCap_hdl, m_pHw_params);
    	if(SndErr < 0)
    	{
    		printf("snd_pcm_hw_params() Error num: %d Error str: %s Cannot continue.\r\n", SndErr, snd_strerror(SndErr));
    		return 1;
    	}
    
    	// Done with m_pHw_params. Uncomment after working. Note called in LinuxJournal example.
    	// snd_pcm_hw_params_free (m_pHw_params);
    
    	// Get the actual frames per period - not what we requested this to be "near".
    	SndErr = snd_pcm_hw_params_get_period_size(m_pHw_params, &m_Frames, &RateDir);
    	if(SndErr < 0)
    	{
    		printf("snd_pcm_hw_params_get_period_size() Error num: %d Error str: %s Cannot continue.\r\n", SndErr, snd_strerror(SndErr));
    		return 1;
    	}
    
    	// Prep for capture.
    	SndErr = snd_pcm_prepare (m_pCap_hdl);
    	if(SndErr < 0)
    	{
    		printf("snd_pcm_prepare() Error num: %d Error str: %s Cannot continue.\r\n", SndErr, snd_strerror(SndErr));
    		return 1;
    	}
    
    	// Allocate for m_pBuf. FormatBytes is for each channel.
    	FrameBytes = (snd_pcm_format_width(m_Format) / 8) * NUMCHANNELS;
    	m_pBuf = (UINT8*) malloc(m_Frames * FrameBytes);
    	if(m_pBuf == NULL)
    	{
    		printf("m_pBuf malloc() Error. Cannot continue.\r\n");
    		return 1;
    	}
    	else
    	{
    		printf("m_pBuf malloc() Allocated %lu bytes with %d bytes/frame.\r\n", m_Frames * FrameBytes, FrameBytes);
    	}
    
    	SndErr = snd_pcm_hw_params_get_period_time(m_pHw_params, &m_PeriodTimeUSec, &RateDir);
    	if(SndErr < 0)
    	{
    		printf("snd_pcm_hw_params_get_period_time() Error num: %d Error str: %s Cannot continue.\r\n", SndErr, snd_strerror(SndErr));
    		return 1;
    	}
    	else
    	{
    		printf("snd_pcm_hw_params_get_period_time got %u uSec.\r\n", m_PeriodTimeUSec);
    	}
    
    
    	return 0;
    }
    
    void CADCThrd::DeInitCap(void)
    {
    	if(m_pHw_params != NULL)
    	{
    		snd_pcm_hw_params_free (m_pHw_params);
    		m_pHw_params = NULL;
    	}
    	if(m_pBuf != NULL)
    	{
    		free(m_pBuf);
    	}
    
    	if(m_pCap_hdl != NULL)
    	{
    		snd_pcm_close (m_pCap_hdl);
    		m_pCap_hdl = NULL;
    	}
    }
    
    void CADCThrd::simpleRecord(void)
    {
    	int i;
    	int err;
    	short buf[128];
    	snd_pcm_t *capture_handle;
    	snd_pcm_hw_params_t *hw_params;
    
    	if ((err = snd_pcm_open (&capture_handle, "default", SND_PCM_STREAM_CAPTURE, 0)) < 0) {
    		fprintf (stderr, "cannot open audio device %s (%s)\n",
    			 "default",
    			 snd_strerror (err));
    		exit (1);
    	}
    
    	if ((err = snd_pcm_hw_params_malloc (&hw_params)) < 0) {
    		fprintf (stderr, "cannot allocate hardware parameter structure (%s)\n",
    			 snd_strerror (err));
    		exit (1);
    	}
    
    	if ((err = snd_pcm_hw_params_any (capture_handle, hw_params)) < 0) {
    		fprintf (stderr, "cannot initialize hardware parameter structure (%s)\n",
    			 snd_strerror (err));
    		exit (1);
    	}
    
    	if ((err = snd_pcm_hw_params_set_access (capture_handle, hw_params, SND_PCM_ACCESS_RW_NONINTERLEAVED)) < 0) {
    		fprintf (stderr, "cannot set access type (%s)\n",
    			 snd_strerror (err));
    		exit (1);
    	}
    
    	if ((err = snd_pcm_hw_params_set_format (capture_handle, hw_params, SND_PCM_FORMAT_S32_BE)) < 0) {
    		fprintf (stderr, "cannot set sample format (%s)\n",
    			 snd_strerror (err));
    		exit (1);
    	}
    
    	int dir;
    	unsigned int value = 8000;
    	if ((err = snd_pcm_hw_params_set_rate_near (capture_handle, hw_params, &value, &dir)) < 0) {
    		fprintf (stderr, "cannot set sample rate (%s)\n",
    			 snd_strerror (err));
    		exit (1);
    	}
    
    	if ((err = snd_pcm_hw_params_set_channels (capture_handle, hw_params, 1)) < 0) {
    		fprintf (stderr, "cannot set channel count (%s)\n",
    			 snd_strerror (err));
    		exit (1);
    	}
    
    	if ((err = snd_pcm_hw_params (capture_handle, hw_params)) < 0) {
    		fprintf (stderr, "cannot set parameters (%s)\n",
    			 snd_strerror (err));
    		exit (1);
    	}
    
    	snd_pcm_hw_params_free (hw_params);
    
    	if ((err = snd_pcm_prepare (capture_handle)) < 0) {
    		fprintf (stderr, "cannot prepare audio interface for use (%s)\n",
    			 snd_strerror (err));
    		exit (1);
    	}
    
    	for (i = 0; i < 10; ++i) {
    		if ((err = snd_pcm_readi (capture_handle, buf, 128)) != 128) {
    			fprintf (stderr, "read from audio interface failed (%s)\n",
    				 snd_strerror (err));
    			exit (1);
    		}
    	}
    
    	snd_pcm_close (capture_handle);
    //	long loops;
    //	int rc;
    //	int size;
    //	snd_pcm_t *handle;
    //	snd_pcm_hw_params_t *params;
    //	unsigned int val;
    //	int dir;
    //	snd_pcm_uframes_t frames;
    //	char *buffer;
    //	INT16 SndErr = 0;
    //
    //	/* Open PCM device for recording (capture). */
    //	rc = snd_pcm_open(&handle, "default",
    //					SND_PCM_STREAM_CAPTURE, 0);
    //	if (rc < 0) {
    //	fprintf(stderr,
    //			"unable to open pcm device: %s\n",
    //			snd_strerror(rc));
    //	exit(1);
    //	}
    //
    //	/* Allocate a hardware parameters object. */
    //	snd_pcm_hw_params_alloca(&params);
    //	if(SndErr < 0)
    //	{
    //		printf("snd_pcm_open() Error num: %d Error str: %s Cannot continue.\r\n", SndErr, snd_strerror(SndErr));
    //		return;
    //	}
    //
    //	/* Fill it in with default values. */
    //	snd_pcm_hw_params_any(handle, params);
    //
    //	/* Set the desired hardware parameters. */
    //
    //	/* Interleaved mode */
    //	SndErr = snd_pcm_hw_params_set_access(handle, params,
    //					  SND_PCM_ACCESS_RW_INTERLEAVED);
    //	if(SndErr < 0)
    //	{
    //		printf("snd_pcm_hw_params_set_access() Error num: %d Error str: %s Cannot continue.\r\n", SndErr, snd_strerror(SndErr));
    //		return;
    //	}
    //
    //	/* Signed 32-bit big-endian format */
    //	SndErr = snd_pcm_hw_params_set_format(handle, params,
    //							  SND_PCM_FORMAT_S32_BE);
    //	if(SndErr < 0)
    //	{
    //		printf("snd_pcm_hw_params_set_format() Error num: %d Error str: %s Cannot continue.\r\n", SndErr, snd_strerror(SndErr));
    //		return;
    //	}
    //
    //	/* 1 channels (stereo) */
    //	snd_pcm_hw_params_set_channels(handle, params, 1);
    //	if(SndErr < 0)
    //	{
    //		printf("snd_pcm_hw_params_set_channels() Error num: %d Error str: %s Cannot continue.\r\n", SndErr, snd_strerror(SndErr));
    //		return;
    //	}
    //
    //	/* 8KHz*/
    //	val = 8000;
    //	SndErr = snd_pcm_hw_params_set_rate_near(handle, params,
    //								  &val, &dir);
    //	if(SndErr < 0)
    //	{
    //		printf("snd_pcm_hw_params_set_rate_near() Error num: %d Error str: %s Cannot continue.\r\n", SndErr, snd_strerror(SndErr));
    //		return;
    //	}
    //
    //	/* Set period size to 32 frames. */
    //	frames = 32;
    //	SndErr = snd_pcm_hw_params_set_period_size_near(handle,
    //							  params, &frames, &dir);
    //	if(SndErr < 0)
    //	{
    //		printf("snd_pcm_hw_params_set_period_size_near() Error num: %d Error str: %s Cannot continue.\r\n", SndErr, snd_strerror(SndErr));
    //		return;
    //	}
    //
    //	/* Write the parameters to the driver */
    //	rc = snd_pcm_hw_params(handle, params);
    //	if (rc < 0) {
    //	fprintf(stderr,
    //			"unable to set hw parameters: %s\n",
    //			snd_strerror(rc));
    //	exit(1);
    //	}
    //
    //	/* Use a buffer large enough to hold one period */
    //	snd_pcm_hw_params_get_period_size(params,
    //									  &frames, &dir);
    //	size = frames * 4; /* 2 bytes/sample, 2 channels */
    //	buffer = (char *) malloc(size);
    //
    //	/* We want to loop for 5 seconds */
    //	snd_pcm_hw_params_get_period_time(params,
    //										 &val, &dir);
    //	loops = 5000000 / val;
    //
    //	while (loops > 0) {
    //		loops--;
    //		rc = snd_pcm_readi(handle, buffer, frames);
    //		if (rc == -EPIPE) {
    //		  /* EPIPE means overrun */
    //		  fprintf(stderr, "overrun occurred\n");
    //		  snd_pcm_prepare(handle);
    //		} else if (rc < 0) {
    //		  fprintf(stderr,
    //				  "error from read: %s\n",
    //				  snd_strerror(rc));
    //		} else if (rc != (int)frames) {
    //		  fprintf(stderr, "short read, read %d frames\n", rc);
    //		}
    //		rc = write(1, buffer, size);
    //		if (rc != size)
    //		  fprintf(stderr,
    //				  "short write: wrote %d bytes\n", rc);
    //	}
    //
    //	snd_pcm_drain(handle);
    //	snd_pcm_close(handle);
    //	free(buffer);
    }
    
    void CADCThrd::DumpPCMToSTDOUT(void)
    {
    	snd_output_t *pSTDOUT = NULL;
    	int Error = -1;
    
    	Error = snd_output_stdio_attach(&pSTDOUT, stdout, 0);
    	if (Error < 0) 
    	{
    		printf("Cannot attach to STDOUT. Error num: %d Error str: %s Cannot continue.\r\n", Error, snd_strerror(Error));
    	}
    
    	// Dump the data.
    	snd_pcm_dump(m_pCap_hdl, pSTDOUT);
    	printf("\r\n");
    
    	return;
    }
    
    void CADCThrd::ThrdProc(void)
    {
    	//simpleRecord();
    
    	snd_pcm_sframes_t FramesRead = 0;
    	UINT32 NumLoops = 0;
    
    	if(InitCap() != 0)
    	{
    		return;
    	}
    
    	// Dump the PCM config.
    	DumpPCMToSTDOUT();
    
    	// We will read for 500 mSec
    	NumLoops = (500*1000) / m_PeriodTimeUSec;
    
    	// To be safe, check for valid pointers (in addition to m_bThreadStop) before reads.
    	while ((m_bThreadStop == FALSE) && (m_pCap_hdl != NULL) && (m_pBuf != NULL) && (NumLoops > 0))
    	{
    		FramesRead = snd_pcm_readn(m_pCap_hdl, (void**) &m_pBuf, m_Frames);
    		//FramesRead = snd_pcm_readi(m_pCap_hdl, m_pBuf, m_Frames);
    		if(FramesRead < 0)
    		{
    			if(FramesRead == -EPIPE)
    			{
    				printf("Overrun.\r\n");
    			}
    			else
    			{
    				printf("snd_pcm_readx() Error num: %ld Error str: %s Cannot continue.\r\n", FramesRead, snd_strerror(FramesRead));
    			}
    		}
    		else if(((snd_pcm_uframes_t)FramesRead) != m_Frames)
    		{
    			printf("snd_pcm_prepare() Read %ld, but requested %ld Cannot continue.\r\n", FramesRead, m_Frames);
    			break;
    		}
    		else
    		{
    			printf("Read %ld frames Ok.\r\n", FramesRead);
    		}
    
    		usleep(10*1000);
    
    		NumLoops--;
    	}
    
    
    }
    
    CADCThrd::~CADCThrd()
    {
    	DeInitCap();
    }
    

    The source for the codec that we are using (for ref) is here:

    0456.pcm5102a.c
    /*
     * Driver for the PCM5102A codec
     *
     * Author:	Florian Meier <florian.meier@koalo.de>
     *		Copyright 2013
     *
     * This program is free software; you can redistribute it and/or
     * modify it under the terms of the GNU General Public License
     * version 2 as published by the Free Software Foundation.
     *
     * This program is distributed in the hope that it will be useful, but
     * WITHOUT ANY WARRANTY; without even the implied warranty of
     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     * General Public License for more details.
     */
    
    #include <linux/init.h>
    #include <linux/module.h>
    #include <linux/platform_device.h>
    
    #include <sound/soc.h>
    
    static struct snd_soc_dai_driver pcm5102a_dai = {
    	.name = "pcm5102a-hifi",
    	.playback = {
    		.channels_min = 2,
    		.channels_max = 2,
    		.rates = SNDRV_PCM_RATE_8000_192000,
    		.formats = SNDRV_PCM_FMTBIT_S16_LE |
    			   SNDRV_PCM_FMTBIT_S24_LE |
    			   SNDRV_PCM_FMTBIT_S32_LE
    	},
    };
    
    static struct snd_soc_component_driver soc_component_dev_pcm5102a = {
    	.idle_bias_on		= 1,
    	.use_pmdown_time	= 1,
    	.endianness		= 1,
    	.non_legacy_dai_naming	= 1,
    };
    
    static int pcm5102a_probe(struct platform_device *pdev)
    {
    	return devm_snd_soc_register_component(&pdev->dev, &soc_component_dev_pcm5102a,
    			&pcm5102a_dai, 1);
    }
    
    static const struct of_device_id pcm5102a_of_match[] = {
    	{ .compatible = "ti,pcm5102a", },
    	{ }
    };
    MODULE_DEVICE_TABLE(of, pcm5102a_of_match);
    
    static struct platform_driver pcm5102a_codec_driver = {
    	.probe		= pcm5102a_probe,
    	.driver		= {
    		.name	= "pcm5102a-codec",
    		.of_match_table = pcm5102a_of_match,
    	},
    };
    
    module_platform_driver(pcm5102a_codec_driver);
    
    MODULE_DESCRIPTION("ASoC PCM5102A codec driver");
    MODULE_AUTHOR("Florian Meier <florian.meier@koalo.de>");
    MODULE_LICENSE("GPL v2");

    And the device tree entries supporting this codec are here:

    3750.am335x-bone-common.dtsi.txt
    /*
     * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
     *
     * This program is free software; you can redistribute it and/or modify
     * it under the terms of the GNU General Public License version 2 as
     * published by the Free Software Foundation.
     */
    
    / {
    	cpus {
    		cpu@0 {
    			cpu0-supply = <&dcdc2_reg>;
    		};
    	};
    
    	memory {
    		device_type = "memory";
    		reg = <0x80000000 0x10000000>; /* 256 MB */
    	};
    
    
    	vmmcsd_fixed: fixedregulator@0 {
    		compatible = "regulator-fixed";
    		regulator-name = "vmmcsd_fixed";
    		regulator-min-microvolt = <3300000>;
    		regulator-max-microvolt = <3300000>;
    	};
    	
    	pcm5102a: pcm5102a {
    		#sound-dai-cells = <0>;
    		compatible = "ti,pcm5102a";
    		status = "okay";
    	};
    	
    	sound1: sound@1 {
    		compatible = "simple-audio-card";
    		simple-audio-card,name = "PCM5102a";
    		simple-audio-card,format = "i2s";
    		simple-audio-card,bitclock-master = <&sound1_master>;
    		simple-audio-card,frame-master = <&sound1_master>;
    		simple-audio-card,bitclock-inversion;
    		simple-audio-card,cpu {
    			sound-dai = <&mcasp0>;
    		};
    		sound1_master: simple-audio-card,codec {
    			#sound-dai-cells = <0>;
    			sound-dai = <&pcm5102a>;
    			clocks = <&mcasp0_fck>;
    			clock-names = "mclk";
    		};
    	};
    
    };
    
    &am33xx_pinmux {
    	pinctrl-names = "default";
    	pinctrl-0 = <&clkout2_pin>;
    
    	i2c0_pins: pinmux_i2c0_pins {
    		pinctrl-single,pins = <
    			0x188 (PIN_INPUT_PULLUP | MUX_MODE0)	/* i2c0_sda.i2c0_sda */
    			0x18c (PIN_INPUT_PULLUP | MUX_MODE0)	/* i2c0_scl.i2c0_scl */
    		>;
    	};
    
    	uart0_pins: pinmux_uart0_pins {
    		pinctrl-single,pins = <
    			0x170 (PIN_INPUT_PULLUP | MUX_MODE0)	/* uart0_rxd.uart0_rxd */
    			0x174 (PIN_OUTPUT_PULLDOWN | MUX_MODE0)	/* uart0_txd.uart0_txd */
    		>;
    	};
    
    	bluetooth_uart3_pins_default: bluetooth_uart3_pins_default {
    		pinctrl-single,pins = <
    			0x134 ( PIN_INPUT | MUX_MODE1 ) /* (L17) gmii1_rxd3.uart3_rxd */
    			0x138 ( PIN_OUTPUT | MUX_MODE1 ) /* (L16) gmii1_rxd2.uart3_txd */
    			0xc8 ( PIN_INPUT | MUX_MODE6 ) /* (U3) lcd_data10.uart3_ctsn */
    			0xcc ( PIN_OUTPUT | MUX_MODE6 ) /* (U4) lcd_data11.uart3_rtsn */
    		>;
    	};
    
    	led_batt_i2c1_pins_default: led_batt_i2c1_pins_default {
    		pinctrl-single,pins = <
    			0x16c ( PIN_INPUT | MUX_MODE3 ) /* (E17) uart0_rtsn.I2C1_SCL */
    			0x168 ( PIN_INPUT | MUX_MODE3 ) /* (E18) uart0_ctsn.I2C1_SDA */
    		>;
    	};
    
    	clkout2_pin: pinmux_clkout2_pin {
    		pinctrl-single,pins = <
    			0x1b4 (PIN_OUTPUT_PULLDOWN | MUX_MODE3)	/* xdma_event_intr1.clkout2 */
    		>;
    	};
    
    	radio_spi0_pins_default: radio_spi0_pins_default {
    		pinctrl-single,pins = <
    			0x150 ( PIN_INPUT | MUX_MODE0 ) /* (A17) spi0_sclk.spi0_sclk */
    			0x154 ( PIN_INPUT | MUX_MODE0 ) /* (B17) spi0_d0.spi0_d0 */
    			0x158 ( PIN_OUTPUT | MUX_MODE0 ) /* (B16) spi0_d1.spi0_d1 */
    			0x15c ( PIN_OUTPUT | MUX_MODE0 ) /* (A16) spi0_cs0.spi0_cs0 */
    			0x160 ( PIN_OUTPUT | MUX_MODE0 ) /* (C15) spi0_cs1.spi0_cs1 */
    		>;
    	};
    
    	spi1_pins_s0: spi1_pins_s0 {
                    pinctrl-single,pins = <
    			0x190 ( PIN_INPUT | MUX_MODE3 ) /* (A13) mcasp0_aclkx.spi1_sclk */
    			0x194 ( PIN_INPUT | MUX_MODE3 ) /* (B13) mcasp0_fsx.spi1_d0 */
    			0x198 ( PIN_OUTPUT | MUX_MODE3 ) /* (D12) mcasp0_axr0.spi1_d1 */
    			0x164 ( PIN_OUTPUT | MUX_MODE2 ) /* (C18) eCAP0_in_PWM0_out.spi1_cs1 */
                    >;
                };
    
    	emmc_pins: pinmux_emmc_pins {
    		pinctrl-single,pins = <
    			0x80 (PIN_INPUT_PULLUP | MUX_MODE2) /* gpmc_csn1.mmc1_clk */
    			0x84 (PIN_INPUT_PULLUP | MUX_MODE2) /* gpmc_csn2.mmc1_cmd */
    			0x00 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad0.mmc1_dat0 */
    			0x04 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad1.mmc1_dat1 */
    			0x08 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad2.mmc1_dat2 */
    			0x0c (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad3.mmc1_dat3 */
    			0x10 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad4.mmc1_dat4 */
    			0x14 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad5.mmc1_dat5 */
    			0x18 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad6.mmc1_dat6 */
    			0x1c (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad7.mmc1_dat7 */
    		>;
    	};
    
    	gpio2_pins_default: gpio2_pins_default {
            	pinctrl-single,pins = <
                		AM33XX_IOPAD(0x8E4, PIN_INPUT_PULLDOWN | MUX_MODE7)	        /* r5_lcd_hsync.gpio2_23 */
                 		AM33XX_IOPAD(0x8EC, PIN_INPUT_PULLDOWN  | MUX_MODE7)	        /* r6_lcd_ac_bias_en.gpio2_25 */
    			AM33XX_IOPAD(0x8E8, PIN_INPUT_PULLDOWN | MUX_MODE7)	        /* v5_lcd_pclk.gpio2_24 */
    			AM33XX_IOPAD(0x8AC, PIN_OUTPUT | MUX_MODE7)            		/* (R4) lcd_data3.gpio2[9] */ 
    			AM33XX_IOPAD(0x8B0, PIN_OUTPUT | MUX_MODE7)            		/* (T1) lcd_data4.gpio2[10] */ 
            	>;
     	};
    
       	gpio3_pins_default: gpio3_pins_default {
                    pinctrl-single,pins = <
                            AM33XX_IOPAD(0x99C, PIN_OUTPUT | MUX_MODE7)                          /* c12_mcasp0_ahclkr.gpio3_17 */
                    >;
            };
    
    	mcasp0_pins: mcasp0_pins {
     	   	pinctrl-single,pins = <
            		0x1a0 ( PIN_INPUT_PULLDOWN | MUX_MODE0 ) /* (B12) mcasp0_aclkr.mcasp0_aclkr */
            		0x1a4 ( PIN_INPUT_PULLDOWN | MUX_MODE0 ) /* (C13) mcasp0_fsr.mcasp0_fsr */
            		0x1a8 ( PIN_INPUT_PULLDOWN | MUX_MODE0 ) /* (D13) mcasp0_axr1.mcasp0_axr1 */
        		>;
    	};
    
    	system_power_pin: pinmux_system_power {
                  pinctrl-single,bits = <
                         AM33XX_IOPAD(0x8E8, PIN_INPUT_PULLDOWN | MUX_MODE7)	       /* v5_lcd_pclk.gpio2_24 */
     		>;
     	};
    };
    
    &uart0 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&uart0_pins>;
    
    	status = "okay";
    };
    
    &uart3 {
            pinctrl-names = "default";
            pinctrl-0 = <&bluetooth_uart3_pins_default>;
    
            status = "okay";
    };
    
    &usb {
    	status = "okay";
    };
    
    &usb_ctrl_mod {
    	status = "okay";
    };
    
    &usb0_phy {
    	status = "okay";
    };
    
    &usb1_phy {
    	status = "okay";
    };
    
    &usb0 {
    	status = "okay";
    	dr_mode = "peripheral";
    };
    
    &usb1 {
    	status = "okay";
    	dr_mode = "host";
    };
    
    &cppi41dma  {
    	status = "okay";
    };
    
    &i2c0 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&i2c0_pins>;
    
    	status = "okay";
    	clock-frequency = <400000>;
    
    	tps: tps@24 {
    		reg = <0x24>;
    	};
    
    };
    
    /include/ "tps65217.dtsi"
    
    &tps {
    	/*
    	 * Configure pmic to enter OFF-state instead of SLEEP-state ("RTC-only
    	 * mode") at poweroff.  Most BeagleBone versions do not support RTC-only
    	 * mode and risk hardware damage if this mode is entered.
    	 *
    	 * For details, see linux-omap mailing list May 2015 thread
    	 *	[PATCH] ARM: dts: am335x-bone* enable pmic-shutdown-controller
    	 * In particular, messages:
    	 *	http://www.spinics.net/lists/linux-omap/msg118585.html
    	 *	http://www.spinics.net/lists/linux-omap/msg118615.html
    	 *
    	 * You can override this later with
    	 *	&tps {  /delete-property/ ti,pmic-shutdown-controller;  }
    	 * if you want to use RTC-only mode and made sure you are not affected
    	 * by the hardware problems. (Tip: double-check by performing a current
    	 * measurement after shutdown: it should be less than 1 mA.)
    	 */
    	ti,pmic-shutdown-controller;
    
    	regulators {
    		dcdc1_reg: regulator@0 {
    			regulator-name = "vdds_dpr";
    			regulator-always-on;
    		};
    
    		dcdc2_reg: regulator@1 {
    			/* VDD_MPU voltage limits 0.95V - 1.325V with +/-4% tolerance */
    			regulator-name = "vdd_mpu";
    			regulator-min-microvolt = <925000>;
    			regulator-max-microvolt = <1378000>;
    			regulator-boot-on;
    			regulator-always-on;
    		};
    
    		dcdc3_reg: regulator@2 {
    			/* VDD_CORE voltage limits 0.95V - 1.1V with +/-4% tolerance */
    			regulator-name = "vdd_core";
    			regulator-min-microvolt = <925000>;
    			regulator-max-microvolt = <1150000>;
    			regulator-boot-on;
    			regulator-always-on;
    		};
    
    		ldo1_reg: regulator@3 {
    			regulator-name = "vio,vrtc,vdds";
    			regulator-always-on;
    		};
    
    		ldo2_reg: regulator@4 {
    			regulator-name = "vdd_3v3aux";
    			regulator-always-on;
    		};
    
    		ldo3_reg: regulator@5 {
    			regulator-name = "vdd_1v8";
    			regulator-always-on;
    		};
    
    		ldo4_reg: regulator@6 {
    			regulator-name = "vdd_3v3a";
    			regulator-always-on;
    		};
    	};
    };
    
    &aes {
    	status = "disabled";
    };
    
    &sham {
    	status = "disabled";
    };
    
    &wkup_m3_ipc {
    	ti,scale-data-fw = "am335x-bone-scale-data.bin";
    };
    
    &rtc {
    	/*ti,hwmods = "disabled";
            status = "disabled";*/
    	system-power-controller;
    };
    
    &spi0 {
            status = "okay";
            pinctrl-names = "default";
            pinctrl-0 = <&radio_spi0_pins_default>;
    
            #address-cells = <1>;
            #size-cells = <0>;
    
            channel@0 {
                    #address-cells = <1>;
                    #size-cells = <0>;
    
                    compatible = "spidev";
    
                    reg = <0>;
                    spi-max-frequency = <16000000>;
                    spi-cpha;
            };
    
    
            channel@1 {
                    #address-cells = <1>;
                    #size-cells = <0>;
    
                    compatible = "spidev";
    
                    reg = <1>;
                    spi-max-frequency = <16000000>;
            };
    };
    
    &spi1 {
    	status = "okay";
    	pinctrl-names = "default";
    	pinctrl-0 = <&spi1_pins_s0>;
    
    	#address-cells = <1>;
    	#size-cells = <0>;
    
    	channel@0 {
    		#address-cells = <1>;
    		#size-cells = <0>;
    
    		compatible = "spidev";
    
    		reg = <0>;
    		spi-max-frequency = <16000000>;
    		spi-cpha;
    	};
    
    
    	channel@1 {
    		#address-cells = <1>;
    		#size-cells = <0>;
    
    		compatible = "spidev";
    
    		reg = <1>;
    		spi-max-frequency = <16000000>;
    	};
    };
    
    &i2c1 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&led_batt_i2c1_pins_default>;
    
    	status = "okay";
    	clock-frequency = <400000>;
    };
    
    
    &gpio2 {
        pinctrl-names = "default";
        pinctrl-0 = <&gpio2_pins_default>;
    
        status = "okay";
    };
    
    &gpio3 {
        pinctrl-names = "default";
        pinctrl-0 = <&gpio3_pins_default>;
    
        status = "okay";
    };
    
    &mcasp0 {
    	#sound-dai-cells = <0>;
    	pinctrl-names = "default";
    	pinctrl-0 = <&mcasp0_pins>;
    	status = "okay";
    	op-mode = <0>; /* MCASP_IIS_MODE */
    	num-serializer = <4>;
    	serial-dir = < /* 1 TX 2 RX 0 unused */
    	0 2 0 0
    	>;
    	rx-num-evt = <1>;
    	tx-num-evt = <1>;
    };
    
    

    We have reviewed the ALSA docs: www.alsa-project.org/.../index.html

    ... but can see no clear indication of how we can use the ALSA api differently than what we are doing.

    Any help is greatly appreciated.

    Thanks,

    Mark J

  • Mark,

    When your appl block, you can check the McASP status registers to see if some error is logged. See also if below wiki pages will be in help:

    processors.wiki.ti.com/.../Sitara_SDK_Linux_Audio_ALSA_User_Space
    processors.wiki.ti.com/.../Sitara_Linux_Audio_Sample_Application_Overview
    processors.wiki.ti.com/.../Linux_Core_Audio_User's_Guide

    Regards,
    Pavel
  • I just wanted to add a note to close this thread off for anyone who references it ....

    Ultimately, we were unable to get the Simple Audio to work with either the tlv320aic3x or "dummy" pcm5102a codecs. The API call to read data - never returned data. This was the case, even though the drivers appears to be working correctly (no apparent errors in the device startup code and codecs appeared to start correctly).

    We changed approaches and are now using PRU0 to "bit bang" an interface. We are close to having the UIO interface to PRU0 setup (it is running as a module, but we still do not see it as device UIO0). Once setup, UIO is a much simpler approach as we have complete control of pins via simpler api calls. The challenge with using an audio interface is that there is so much going on within different layers of audio drivers that we have little control over and few examples that work (in our case anyway).

    Thank you Pavel for assistance.

    Mark J