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.

USB Host on port 2 AM5728 custom board

Other Parts Discussed in Thread: AM5728, TPS659037

We are in the process of board bring up on a custom board using the am5728.  We based our hardware design heavily on the Beagleboard x15 with schematic review by TI. We intend to act as host only on both USB1 (3.0 on board only) and USB2 (2.0 type A connector)

I am working on a kernel branch on our local git repo. About once a week I merge in from ti-linux-4.4.y on git.ti.com to my local branch. 


Prior to the latest merge our board could get functional USB working only about 1 of every 10 power cycles.  The other 9 times I would get a kernel crash. The crash was in xhci_hub_control.  When USB was disabled in devicetree it never crashed in this way. This crash always occurred just after it detected the root hub for USB2.


Now as of the latest merge (last monday 28 march) which included several of changes to the dwc3-omap driver recently merged from connectivity branch to the ti-linux-4.4.y branch I now get a kernel crash on every boot in the dwc3_omap_interrupt function of drivers/usb/dwc3/dwc3-omap.c


I get the crash even when all usb are status="disabled" in my device tree.  In order to avoid the crash I must not enable the DWC3 USB drivers in the kernel.


Attached is my defconfig file and our device tree files.


Any help would be greatly appreciated.

usbhostonam5728customboard.zip

  • Dexter, Did you see this same behavior on the 4.1 kernel? TI isn't intending to support the 4.4 kernel until ~July.

  • The 4.4 branch you're using is under development and not yet officially supported. Also, your defconfig is substantially different than the omap2plus_defconfig that TI uses for testing/development.

    A few suggestions:

    1. Try using the omap2plus_defconfig. It could be that there's a dependency somewhere not captured in Kconfig. If that's the case, this test would give you a good starting point.

    2. Try reproducing this same issue on the official 4.1 kernel.

    3. Try reproducing the issue on the AM5728 EVM (with your own kernel).
  • Brad Griffis said:

    A few suggestions:

    1. Try using the omap2plus_defconfig. It could be that there's a dependency somewhere not captured in Kconfig. If that's the case, this test would give you a good starting point.

    2. Try reproducing this same issue on the official 4.1 kernel.

    3. Try reproducing the issue on the AM5728 EVM (with your own kernel).

    1) omap2plus_defconfig has LOTS of stuff built as modules.  I ran a kernel with it unchanged. Yes it booted but it never loaded the dwc3 module and so never encountered the bits of code that cause the crash.  I next went in through menuconfig and made all usb host stuff built in not a module.  I get the following build time error.  I think this implies a possible missed dependency in kconfig ?  I was able to config the kernel to have extcon as a module and dwc3 as built in.

    drivers/built-in.o: In function `dwc3_drd_exit':
    
    /home/dtravis/ppdev/bakery/gen3/kernel/dt2-linux-4.4.y/drivers/usb/dwc3/core.c:1126: undefined reference to `extcon_unregister_notifier'
    
    /home/dtravis/ppdev/bakery/gen3/kernel/dt2-linux-4.4.y/drivers/usb/dwc3/core.c:1127: undefined reference to `extcon_unregister_notifier'
    
    drivers/built-in.o: In function `dwc3_drd_fsm_sync':
    
    /home/dtravis/ppdev/bakery/gen3/kernel/dt2-linux-4.4.y/drivers/usb/dwc3/core.c:847: undefined reference to `extcon_get_cable_state'
    
    /home/dtravis/ppdev/bakery/gen3/kernel/dt2-linux-4.4.y/drivers/usb/dwc3/core.c:852: undefined reference to `extcon_get_cable_state'
    
    drivers/built-in.o: In function `dwc3_probe':
    
    /home/dtravis/ppdev/bakery/gen3/kernel/dt2-linux-4.4.y/drivers/usb/dwc3/core.c:1375: undefined reference to `extcon_get_edev_by_phandle'
    
    /home/dtravis/ppdev/bakery/gen3/kernel/dt2-linux-4.4.y/drivers/usb/dwc3/core.c:1377: undefined reference to `extcon_get_edev_by_phandle'
    
    drivers/built-in.o: In function `dwc3_drd_init':
    
    /home/dtravis/ppdev/bakery/gen3/kernel/dt2-linux-4.4.y/drivers/usb/dwc3/core.c:1024: undefined reference to `extcon_register_notifier'
    
    /home/dtravis/ppdev/bakery/gen3/kernel/dt2-linux-4.4.y/drivers/usb/dwc3/core.c:1031: undefined reference to `extcon_register_notifier'
    
    /home/dtravis/ppdev/bakery/gen3/kernel/dt2-linux-4.4.y/drivers/usb/dwc3/core.c:1040: undefined reference to `extcon_get_cable_state'
    
    /home/dtravis/ppdev/bakery/gen3/kernel/dt2-linux-4.4.y/drivers/usb/dwc3/core.c:1041: undefined reference to `extcon_get_cable_state'
    
    /home/dtravis/ppdev/bakery/gen3/kernel/dt2-linux-4.4.y/drivers/usb/dwc3/core.c:1058: undefined reference to `extcon_unregister_notifier'
    
    /home/dtravis/ppdev/bakery/gen3/kernel/dt2-linux-4.4.y/drivers/usb/dwc3/core.c:1061: undefined reference to `extcon_unregister_notifier'
    
    make: *** [vmlinux] Error 1

    Once I config extcon as builtin these build  errors went away.  They are not holding me up but may confirm that kconfig deps are not all worked out.

    After building with omap2plus_defconfig modified to use built in not module i do not ever see the dwc3 driver load at all.  USB core and platform drivers do load dwc3 drivers do not thus omap2plus_defconfig work to this point is not conclusive.   Below are my dmesg entries for USB with a modified (built in not modules) omap2plus_defconfig. At this point also lsusb returns -99 unable to initialize usb.  I have re-enabled usb2 and usb1 in my devicetree.

    # dmesg | grep usb
    [    0.531710] usbcore: registered new interface driver usbfs
    [    0.531827] usbcore: registered new interface driver hub
    [    0.531935] usbcore: registered new device driver usb
    [    2.405016] usbcore: registered new interface driver cdc_wdm
    [    2.411080] usbcore: registered new interface driver usb-storage
    [    2.417478] usbcore: registered new interface driver usbtest
    [    2.576869] extcon-usb-gpio extcon_usb1: GPIO lookup for consumer id
    [    2.576879] extcon-usb-gpio extcon_usb1: using device tree for GPIO lookup
    [    2.576890] of_get_named_gpiod_flags: can't parse 'id-gpios' property of node '/extcon_usb1[0]'
    [    2.576929] of_get_named_gpiod_flags: parsed 'id-gpio' property of node '/extcon_usb1[0]' - status (0)
    [    2.577839] extcon-usb-gpio extcon_usb2: GPIO lookup for consumer id
    [    2.577849] extcon-usb-gpio extcon_usb2: using device tree for GPIO lookup
    [    2.577860] of_get_named_gpiod_flags: can't parse 'id-gpios' property of node '/extcon_usb2[0]'
    [    2.577891] of_get_named_gpiod_flags: parsed 'id-gpio' property of node '/extcon_usb2[0]' - status (0)

    2)  I will work again on the 4.1 in the next few days to see where I get.  I have been on and off of it several times in the last few weeks, generally i have gotten further with 4.4 but will put in more effort on 4.1.  Regardless, we plan to ship with 4.4, the sooner we can get running and working on this the better.  Is it typical for TI "mainline linux" support to be 7 months or more behind mainline linux?

    3) The AM5728 EVM has proven to be of mixed value.  In the case of USB it only supports USB gadget mode on USB2 which we will be host mode.  This makes it very difficult to do apples to apples work on USB with my board vs the EVM.  For other peripherals it was/is useful.

    Dexter

  • I have reproduced the usb issue on linux 4.1 on my custom board.  The procedure to recreate it was as follows.

    Started with ti-linux-4.1.y commit 9669eef768ece4c18cf5e555a89658f9159ee4a5.

    copied am57xx-beagle-x15.dts to my pp-ssmg3.dts file and modify it to match my board. Also added this to the dts makefile.

    copied tisdk_am57xx-evm_defconfig from the tisdk release 2.0.1.07 to my arch/arm/configs directory.

    built the kernel using the unmodified tisdk_am57xx-evm_defconfig. 

    built and installed modules onto my sd card which i boot from.

    Booted with my dtb file.

    Attached are the boot log files from the serial terminal and my dts file.

    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.18-dirty (dtravis@dexter-Precision-T3610) (gcc version 5.1.0 (crosstool-NG crosstool-ng-1.20.0-195-gbaceedd) ) #38 SMP PREEMPT Mon Apr 4 15:05:38 CDT 2016
    [    0.000000] CPU: ARMv7 Processor [412fc0f2] revision 2 (ARMv7), cr=30c5387d
    [    0.000000] CPU: PIPT / VIPT nonaliasing data cache, PIPT instruction cache
    [    0.000000] Machine model: TI AM5728 BeagleBoard-X15
    [    0.000000] cma: Reserved 24 MiB at 0x00000000be400000
    [    0.000000] Forcing write-allocate cache policy for SMP
    [    0.000000] Memory policy: Data cache writealloc
    [    0.000000] OMAP4: Map 0x00000000bfd00000 to fe600000 for dram barrier
    [    0.000000] DRA752 ES1.1
    [    0.000000] PERCPU: Embedded 12 pages/cpu @eee8a000 s17088 r8192 d23872 u49152
    [    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 259666
    [    0.000000] Kernel command line: console=ttyO2,115200n8 root=PARTUUID=00000000-02 rw rootfstype=ext4 rootwait
    [    0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes)
    [    0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
    [    0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
    [    0.000000] Memory: 1000872K/1045504K available (6371K kernel code, 293K rwdata, 2212K rodata, 332K init, 254K bss, 20056K reserved, 24576K cma-reserved, 242688K highmem)
    [    0.000000] Virtual kernel memory layout:
    [    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    [    0.000000]     fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
    [    0.000000]     vmalloc : 0xf0000000 - 0xff000000   ( 240 MB)
    [    0.000000]     lowmem  : 0xc0000000 - 0xef800000   ( 760 MB)
    [    0.000000]     pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
    [    0.000000]     modules : 0xbf000000 - 0xbfe00000   (  14 MB)
    [    0.000000]       .text : 0xc0008000 - 0xc086a074   (8585 kB)
    [    0.000000]       .init : 0xc086b000 - 0xc08be000   ( 332 kB)
    [    0.000000]       .data : 0xc08be000 - 0xc09077e8   ( 294 kB)
    [    0.000000]        .bss : 0xc090a000 - 0xc09498b0   ( 255 kB)
    [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, 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] OMAP clockevent source: timer1 at 32768 Hz
    [    0.000000] clocksource 32k_counter: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 58327039986419 ns
    [    0.000000] sched_clock: 32 bits at 32kHz, resolution 30517ns, wraps every 65535999984741ns
    [    0.000030] OMAP clocksource: 32k_counter at 32768 Hz
    [    0.000396] Architected cp15 timer(s) running at 6.14MHz (virt).
    [    0.000427] clocksource arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x16af5adb9, max_idle_ns: 440795202250 ns
    [    0.000431] sched_clock: 56 bits at 6MHz, resolution 162ns, wraps every 4398046511023ns
    [    0.000441] Switching to timer-based delay loop, resolution 162ns
    [    0.000963] Console: colour dummy device 80x30
    [    0.000981] WARNING: Your 'console=ttyO2' has been replaced by 'ttyS2'
    [    0.000987] This ensures that you still see kernel messages. Please
    [    0.000993] update your kernel commandline.
    [    0.001006] Calibrating delay loop (skipped), value calculated using timer frequency.. 12.29 BogoMIPS (lpj=61475)
    [    0.001019] pid_max: default: 32768 minimum: 301
    [    0.001094] Security Framework initialized
    [    0.001142] Mount-cache hash table entries: 2048 (order: 1, 8192 bytes)
    [    0.001151] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes)
    [    0.001713] Initializing cgroup subsys blkio
    [    0.001727] Initializing cgroup subsys memory
    [    0.001754] Initializing cgroup subsys devices
    [    0.001766] Initializing cgroup subsys freezer
    [    0.001779] Initializing cgroup subsys perf_event
    [    0.001801] CPU: Testing write buffer coherency: ok
    [    0.002052] /cpus/cpu@0 missing clock-frequency property
    [    0.002096] /cpus/cpu@1 missing clock-frequency property
    [    0.002106] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
    [    0.002147] Setting up static identity map for 0x800082c0 - 0x80008318
    [    0.060663] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
    [    0.060722] Brought up 2 CPUs
    [    0.060735] SMP: Total of 2 processors activated (24.59 BogoMIPS).
    [    0.060741] CPU: All CPU(s) started in SVC mode.
    [    0.061138] devtmpfs: initialized
    [    0.085158] VFP support v0.3: implementor 41 architecture 4 part 30 variant f rev 0
    [    0.085923] omap_hwmod: l3_main_2 using broken dt data from ocp
    [    0.273980] clocksource jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
    [    0.274719] pinctrl core: initialized pinctrl subsystem
    [    0.275527] NET: Registered protocol family 16
    [    0.276434] DMA: preallocated 256 KiB pool for atomic coherent allocations
    [    0.300579] cpuidle: using governor ladder
    [    0.330607] cpuidle: using governor menu
    [    0.338583] OMAP GPIO hardware version 0.1
    [    0.344856] irq: no irq domain found for /ocp/l4@4a000000/scm@2000/pinmux@1400 !
    [    0.359445] No ATAGs?
    [    0.359476] hw-breakpoint: found 5 (+1 reserved) breakpoint and 4 watchpoint registers.
    [    0.359485] hw-breakpoint: maximum watchpoint size is 8 bytes.
    [    0.359939] omap4_sram_init:Unable to allocate sram needed to handle errata I688
    [    0.359948] omap4_sram_init:Unable to get sram pool needed to handle errata I688
    [    0.360511] OMAP DMA hardware revision 0.0
    [    0.395813] edma 43300000.edma: memcpy is disabled
    [    0.400563] edma 43300000.edma: TI EDMA DMA engine driver
    [    0.403404] omap-dma-engine 4a056000.dma-controller: OMAP DMA engine driver
    [    0.407543] vgaarb: loaded
    [    0.407927] SCSI subsystem initialized
    [    0.408972] palmas 0-0058: Irq flag is 0x00000008
    [    0.422328] palmas 0-0058: Muxing GPIO fd, PWM 0, LED 0
    [    0.504317] omap_i2c 48070000.i2c: bus 0 rev0.12 at 400 kHz
    [    0.504869] omap_i2c 48060000.i2c: bus 2 rev0.12 at 400 kHz
    [    0.505013] media: Linux media interface: v0.10
    [    0.505068] Linux video capture interface: v2.00
    [    0.505114] pps_core: LinuxPPS API ver. 1 registered
    [    0.505121] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
    [    0.505145] PTP clock support registered
    [    0.505650] Advanced Linux Sound Architecture Driver Initialized.
    [    0.506328] Switched to clocksource arch_sys_counter
    [    0.515965] NET: Registered protocol family 2
    [    0.516541] TCP established hash table entries: 8192 (order: 3, 32768 bytes)
    [    0.516605] TCP bind hash table entries: 8192 (order: 4, 65536 bytes)
    [    0.516729] TCP: Hash tables configured (established 8192 bind 8192)
    [    0.516785] UDP hash table entries: 512 (order: 2, 16384 bytes)
    [    0.516816] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
    [    0.516968] NET: Registered protocol family 1
    [    0.517186] RPC: Registered named UNIX socket transport module.
    [    0.517195] RPC: Registered udp transport module.
    [    0.517201] RPC: Registered tcp transport module.
    [    0.517208] RPC: Registered tcp NFSv4.1 backchannel transport module.
    [    0.518074] CPU PMU: Failed to parse /pmu/interrupt-affinity[0]
    [    0.518109] hw perfevents: enabled with armv7_cortex_a15 PMU driver, 7 counters available
    [    0.519765] futex hash table entries: 512 (order: 3, 32768 bytes)
    [    0.519869] audit: initializing netlink subsys (disabled)
    [    0.519905] audit: type=2000 audit(0.500:1): initialized
    [    0.527060] VFS: Disk quotas dquot_6.6.0
    [    0.527220] VFS: Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
    [    0.529270] NFS: Registering the id_resolver key type
    [    0.529295] Key type id_resolver registered
    [    0.529303] Key type id_legacy registered
    [    0.529364] jffs2: version 2.2. (NAND) (SUMMARY)  © 2001-2006 Red Hat, Inc.
    [    0.531449] NET: Registered protocol family 38
    [    0.531521] bounce: pool size: 64 pages
    [    0.531533] io scheduler noop registered
    [    0.531544] io scheduler deadline registered
    [    0.531580] io scheduler cfq registered (default)
    [    0.534930] pinctrl-single 4a003400.pinmux: 281 pins at pa fc003400 size 1124
    [    0.567600] dra7-pcie 51000000.pcie: PCI host bridge to bus 0000:00
    [    0.567613] pci_bus 0000:00: root bus resource [io  0x1000-0xffff]
    [    0.567624] pci_bus 0000:00: root bus resource [mem 0x20013000-0x2fffffff]
    [    0.567634] pci_bus 0000:00: root bus resource [bus 00-ff]
    [    0.567736] pci 0000:00:00.0: IOMMU is currently not supported for PCI
    [    0.568003] PCI: bus0: Fast back to back transfers disabled
    [    0.568123] PCI: bus1: Fast back to back transfers enabled
    [    0.568220] pci 0000:00:00.0: BAR 0: assigned [mem 0x20100000-0x201fffff]
    [    0.568234] pci 0000:00:00.0: BAR 1: assigned [mem 0x20020000-0x2002ffff]
    [    0.568247] pci 0000:00:00.0: PCI bridge to [bus 01]
    [    0.570220] OMAP DSS rev 6.1
    [    0.570488] omapdss_dss 58000000.dss: bound 58001000.dispc (ops dispc_component_ops)
    [    0.574633] Serial: 8250/16550 driver, 10 ports, IRQ sharing enabled
    [    0.577577] 48020000.serial: ttyS2 at MMIO 0x48020000 (irq = 301, base_baud = 3000000) is a 8250
    [    1.403232] console [ttyS2] enabled
    [    1.407677] [drm] Initialized drm 1.1.0 20060810
    [    1.420483] brd: module loaded
    [    1.427712] loop: module loaded
    [    1.431729] mtdoops: mtd device (mtddev=name/number) must be supplied
    [    1.486345] davinci_mdio 48485000.mdio: davinci mdio revision 1.6
    [    1.492469] davinci_mdio 48485000.mdio: no live phy, scanning all
    [    1.499416] davinci_mdio: probe of 48485000.mdio failed with error -5
    [    1.506446] cpsw 48484000.ethernet: Detected MACID = 74:da:ea:78:71:2e
    [    1.513727] cpsw 48484000.ethernet: cpsw: Detected MACID = 74:da:ea:78:71:2f
    [    1.521973] mousedev: PS/2 mouse device common for all mice
    [    1.527602] i2c /dev entries driver
    [    1.533672] omap_hsmmc 4809c000.mmc: Got CD GPIO
    [    1.576968] omap_hsmmc 480b4000.mmc: no pinctrl state for sdr25 mode
    [    1.583351] omap_hsmmc 480b4000.mmc: no pinctrl state for sdr12 mode
    [    1.589927] vdd_3v3: supplied by regen1
    [    1.613180] mmc0: host does not support reading read-only switch, assuming write-enable
    [    1.623035] mmc0: new high speed SDHC card at address 0001
    [    1.626622] ledtrig-cpu: registered to indicate activity on CPUs
    [    1.626911] omap-aes 4b500000.aes: OMAP AES hw accel rev: 3.3
    [    1.640889] mmcblk0: mmc0:0001 00000 14.9 GiB
    [    1.640930] omap-aes 4b700000.aes: OMAP AES hw accel rev: 3.3
    [    1.641308] omap-des 480a5000.des: OMAP DES hw accel rev: 2.2
    [    1.647235] omap-sham 4b101000.sham: hw accel on OMAP rev 4.3
    [    1.650646] oprofile: using timer interrupt.
    [    1.650877] Initializing XFRM netlink socket
    [    1.650895] NET: Registered protocol family 17
    [    1.650923] NET: Registered protocol family 15
    [    1.650998] Key type dns_resolver registered
    [    1.651101] omap_voltage_late_init: Voltage driver support not added
    [    1.651343] /cpus/cpu@0: could not get #voltdm-cells for /ocp/i2c@48070000/tps659038@58/tps659038_pmic/regulators/smps12
    [    1.651380] cpu cpu0: Failed to register cpu0 clock notifier: -22
    [    1.651394] cpufreq-voltdm: probe of cpufreq-voltdm.0 failed with error -22
    [    1.651519] Power Management for TI OMAP4+ devices.
    [    1.651754] ThumbEE CPU extension supported.
    [    1.651771] Registering SWP/SWPB emulation handler
    [    1.653341] dmm 4e000000.dmm: workaround for errata i878 in use
    [    1.662754] dmm 4e000000.dmm: initialized all PAT entries
    [    1.676795] hctosys: unable to open rtc device (rtc0)
    [    1.715039] aic_dvdd_fixed: disabling
    [    1.715284] ALSA device list:
    [    1.715288]   No soundcards found.
    [    1.756599]  mmcblk0: p1 p2
    [    2.180116] mmc1: MAN_BKOPS_EN bit is not set
    [    2.188003] mmc1: new DDR MMC card at address 0001
    [    2.193191] mmcblk1: mmc1:0001 MMC32G 29.6 GiB
    [    2.197880] mmcblk1boot0: mmc1:0001 MMC32G partition 1 16.0 MiB
    [    2.203932] mmcblk1boot1: mmc1:0001 MMC32G partition 2 16.0 MiB
    [    2.211543]  mmcblk1: p1 p2
    [    3.849339] EXT4-fs (mmcblk0p2): recovery complete
    [    3.856692] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
    [    3.864848] VFS: Mounted root (ext4 filesystem) on device 179:2.
    [    3.873187] devtmpfs: mounted
    [    3.876399] Freeing unused kernel memory: 332K (c086b000 - c08be000)
    [    4.206027] systemd[1]: Inserted module 'autofs4'
    [    4.547206] NET: Registered protocol family 10
    [    4.552589] systemd[1]: Inserted module 'ipv6'
    [    4.567803] random: systemd urandom read with 40 bits of entropy available
    [    4.578932] systemd[1]: systemd 219 running in system mode. (-PAM -AUDIT -SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP -LIBCRYPTSETUP -GCRYPT +GNUTLS +ACL +XZ -LZ4 -SECCOMP +BLKID -ELFUTILS +KMOD -IDN)
    [    4.597289] systemd[1]: Detected architecture arm.
    
    Welcome to Poky (Yocto Project Reference Distro) 1.8.2 (fido)!
    
    [    4.627182] systemd[1]: Set hostname to <ssmg3>.
    [    4.742421] systemd-sysv-generator[94]: Overwriting existing symlink /run/systemd/generator.late/umountnfs.service with real service
    [    4.754790] systemd-sysv-generator[94]: Overwriting existing symlink /run/systemd/generator.late/sshd.service with real service
    [    4.766783] systemd-sysv-generator[94]: Overwriting existing symlink /run/systemd/generator.late/reboot.service with real service
    [    4.778676] systemd-sysv-generator[94]: Overwriting existing symlink /run/systemd/generator.late/hostapd.service with real service
    [    4.790632] systemd-sysv-generator[94]: Overwriting existing symlink /run/systemd/generator.late/dhcp-server.service with real service
    [    4.802946] systemd-sysv-generator[94]: Overwriting existing symlink /run/systemd/generator.late/umountfs.service with real service
    [    4.815039] systemd-sysv-generator[94]: Overwriting existing symlink /run/systemd/generator.late/halt.service with real service
    [    4.826762] systemd-sysv-generator[94]: Overwriting existing symlink /run/systemd/generator.late/sendsigs.service with real service
    [    4.838899] systemd-sysv-generator[94]: Overwriting existing symlink /run/systemd/generator.late/alignment.service with real service
    [    4.851097] systemd-sysv-generator[94]: Overwriting existing symlink /run/systemd/generator.late/single.service with real service
    [    4.862973] systemd-sysv-generator[94]: Overwriting existing symlink /run/systemd/generator.late/syslog.sysklogd.service with real service
    [    4.875637] systemd-sysv-generator[94]: Overwriting existing symlink /run/systemd/generator.late/calibrate.service with real service
    [    4.887863] systemd-sysv-generator[94]: Overwriting existing symlink /run/systemd/generator.late/save-rtc.service with real service
    [  OK  ] Reached target Remote File Systems.
    [    5.316530] systemd[1]: Reached target Remote File Systems.
    [    5.322165] systemd[1]: Starting Remote File Systems.
    [    5.327483] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
    [    5.335116] systemd[1]: Starting Forward Password Requests to Wall Directory Watch.
    [  OK  ] Reached target Swap.
    [    5.356471] systemd[1]: Reached target Swap.
    [    5.360790] systemd[1]: Starting Swap.
    [  OK  ] Created slice Root Slice.
    [    5.376485] systemd[1]: Created slice Root Slice.
    [    5.381241] systemd[1]: Starting Root Slice.
    [  OK  ] Listening on Journal Socket.
    [    5.396465] systemd[1]: Listening on Journal Socket.
    [    5.401491] systemd[1]: Starting Journal Socket.
    [  OK  ] Listening on udev Control Socket.
    [    5.426468] systemd[1]: Listening on udev Control Socket.
    [    5.431921] systemd[1]: Starting udev Control Socket.
    [  OK  ] Listening on Syslog Socket.
    [    5.456466] systemd[1]: Listening on Syslog Socket.
    [    5.461393] systemd[1]: Starting Syslog Socket.
    [  OK  ] Listening on Delayed Shutdown Socket.
    [    5.486476] systemd[1]: Listening on Delayed Shutdown Socket.
    [    5.492277] systemd[1]: Starting Delayed Shutdown Socket.
    [  OK  ] Listening on Journal Audit Socket.
    [    5.516466] systemd[1]: Listening on Journal Audit Socket.
    [    5.522004] systemd[1]: Starting Journal Audit Socket.
    [  OK  ] Created slice System Slice.
    [    5.546470] systemd[1]: Created slice System Slice.
    [    5.551408] systemd[1]: Starting System Slice.
    [    5.557764] systemd[1]: Starting (null)...
             Starting (null)...
    [    5.578754] systemd[1]: Starting Create list of required static device nodes for the current kernel...
             Starting Create list of required st... nodes for the current kernel...
    [  OK  ] Created slice system-getty.slice.
    [    5.626490] systemd[1]: Created slice system-getty.slice.
    [    5.631959] systemd[1]: Starting system-getty.slice.
    [    5.654875] systemd[1]: Mounting Temporary Directory...
             Mounting Temporary Directory...
    [    5.676798] systemd[1]: Mounted Huge Pages File System.
    [    5.684089] systemd[1]: Mounting POSIX Message Queue File System...
             Mounting POSIX Message Queue File System...
    [  OK  ] Created slice system-serial\x2dgetty.slice.
    [    5.726512] systemd[1]: Created slice system-serial\x2dgetty.slice.
    [    5.732857] systemd[1]: Starting system-serial\x2dgetty.slice.
    [  OK  ] Listening on /dev/initctl Compatibility Named Pipe.
    [    5.756452] systemd[1]: Listening on /dev/initctl Compatibility Named Pipe.
    [    5.763474] systemd[1]: Starting /dev/initctl Compatibility Named Pipe.
    [    5.772155] systemd[1]: Starting Setup Virtual Console...
             Starting Setup Virtual Console...
    [    5.798587] systemd[1]: Mounting Debug File System...
             Mounting Debug File System...
    [    5.816551] systemd[1]: Started File System Check on Root Device.
    [    5.824687] systemd[1]: Starting Remount Root and Kernel File Systems...
             Starting Remount Root and Kernel File Systems...
    [    5.844436] EXT4-fs (mmcblk0p2): re-mounted. Opts: (null)
    [    5.856815] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
    [    5.864813] systemd[1]: Starting Dispatch Password Requests to Console Directory Watch.
    [  OK  ] Reached target Paths.
    [    5.886494] systemd[1]: Reached target Paths.
    [    5.890902] systemd[1]: Starting Paths.
    [  OK  ] Created slice User and Session Slice.
    [    5.906471] systemd[1]: Created slice User and Session Slice.
    [    5.912273] systemd[1]: Starting User and Session Slice.
    [  OK  ] Reached target Slices.
    [    5.936496] systemd[1]: Reached target Slices.
    [    5.940988] systemd[1]: Starting Slices.
    [    5.949887] systemd[1]: Starting Load Kernel Modules...
             Starting Load Kernel Modules...
    [  OK  ] Listening on Journal Socket (/dev/log).
    [    5.986481] systemd[1]: Listening on Journal Socket (/dev/log).
    [    5.992469] systemd[1]: Starting Journal Socket (/dev/log).
    [    6.000163] systemd[1]: Starting Journal Service...
             Starting Journal Service...
    [  OK  ] Listening on udev Kernel Socket.
    [    6.036524] systemd[1]: Listening on udev Kernel Socket.
    [    6.041915] systemd[1]: Starting udev Kernel Socket.
    [    6.049092] systemd[1]: Starting udev Coldplug all Devices...
             Starting udev Coldplug all Devices...
    [  OK  ] Mounted POSIX Message Queue File System.
    [    6.316490] systemd[1]: Mounted POSIX Message Queue File System.
    [  OK  ] Mounted Debug File System.
    [    6.336465] systemd[1]: Mounted Debug File System.
    [  OK  ] Mounted Temporary Directory.
    [    6.356494] systemd[1]: Mounted Temporary Directory.
    [  OK  ] Started Journal Service.
    [    6.376470] systemd[1]: Started Journal Service.
    [  OK  ] Started (null).
    [  OK  ] Started Create list of required sta...ce nodes for the current kernel.
    [  OK  ] Started Setup Virtual Console.
    [  OK  ] Started Remount Root and Kernel File Systems.
    [FAILED] Failed to start Load Kernel Modules.
    See "systemctl status systemd-modules-load.service" for details.
    [  OK  ] Started udev Coldplug all Devices.
             Mounting NFSD configuration filesystem...
             Mounting Configuration File System...
             Starting Apply Kernel Variables...
             Starting Create Static Device Nodes in /dev...
             Starting Flush Journal to Persistent Storage...
    [    6.745895] random: nonblocking pool is initialized
    [  OK  ] Mounted Configuration File System.
    [FAILED] Failed to mount NFSD configuration filesystem.
    See "systemctl status proc-fs-nfsd.mount" for details.
    [  OK  ] Started Apply Kernel Variables.
    [  OK  ] Started Create Static Device Nodes in /dev.
    [    7.011603] systemd-journald[142]: Received request to flush runtime journal from PID 1
             Starting udev Kernel Device Manager...
    [  OK  ] Reached target Local File Systems (Pre).
             Mounting /var/volatile...
    [    7.286529] rtc-ds1307: probe of 2-006f failed with error -5
    [    7.297345] palmas_pwrbutton 48070000.i2c:tps659038@58:tps659038_pwr_button: h/w controlled shutdown duration=12 seconds
    [    7.316557] input: palmas_pwron as /devices/platform/44000000.ocp/48070000.i2c/i2c-0/0-0058/48070000.i2c:tps659038@58:tps659038_pwr_button/input/input0
    [    7.335929] palmas-rtc 48070000.i2c:tps659038@58:tps659038_rtc: rtc core: registered 48070000.i2c:tps659 as rtc0
    [    7.402901] omap_rng 48090000.rng: OMAP Random Number Generator ver. 20
    [  OK  ] Mounted /var/volatile.
    [  OK  ] Started udev Kernel Device Manager.
    [    7.443760] omap_wdt: OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec
    [  OK  ] Started Flush Journal to Persistent Storage.
    [  OK  ] Found device /dev/ttyS2.
    [    7.552309] vpe 489d0000.vpe: loading firmware vpdma-1b8.bin
    [    7.569919] vpe 489d0000.vpe: Direct firmware load for vpdma-1b8.bin failed with error -2
    [    7.582269] vpe 489d0000.vpe: Falling back to user helper
             Starting Load/Save Random Seed...
    [  OK  ] Reached target Local File Systems.
    [    7.634226] ahci 4a140000.sata: SSS flag set, parallel bus scan disabled
             Starting Create Volatile Files and Directories...
    [    7.674536] ahci 4a140000.sata: AHCI 0001.0300 32 slots 1 ports 3 Gbps 0x1 impl platform mode
    [  OK  ] Started Load/Save Random Seed.
    [    7.688106] ahci 4a140000.sata: flags: 64bit ncq sntf stag pm led clo only pmp pio slum part ccc apst
    [    7.710255] scsi host0: ahci
    [    7.714168] ata1: SATA max UDMA/133 mmio [mem 0x4a140000-0x4a1410ff] port 0x100 irq 319
    [  OK  ] Started Create Volatile Files and Directories.
    [    7.745539] vpe 489d0000.vpe: couldn't get firmware
             Starting Update UTMP about System Boot/Shutdown...
             Starting Network Time Synchronization...
    [  OK  ] Started Update UTMP about System Boot/Shutdown.
    [  OK  ] Started Network Time Synchronization.
    [  OK  ] Reached target System Time Synchronized.
    [  OK  ] Reached target System Initialization.
    [  OK  ] Listening on D-Bus System Message Bus Socket.
    [  OK  ] Listening on RPCbind Server Activation Socket.
    [  OK  ] Listening on Avahi mDNS/DNS-SD Stack Activation Socket.
    [  OK  ] Reached target Timers.
    [  OK  ] Listening on sshd.socket.
    [  OK  ] Reached target Sockets.
    [    8.066365] ata1: SATA link down (SStatus 0 SControl 300)
    [  OK  ] Reached target Basic System.
    [  OK  ] Started System Logging Service.
             Starting System Logging Service...
    [  OK  ] Started Kernel Logging Service.
             Starting Kernel Logging Service...
             Starting Permit User Sessions...
    [  OK  ] Started Job spooling tools.
             Starting Job spooling tools...
             Starting Login Service...
             Starting Target Communication Framework agent...
    [  OK  ] Started Periodic Command Scheduler.
             Starting Periodic Command Scheduler...
             Starting Lightning Fast Webserver With Light System Requirements...
             Starting Avahi mDNS/DNS-SD Stack...
    [  OK  ] Started Distccd A Distributed Compilation Server.
             Starting Distccd A Distributed Compilation Server...
    [  OK  ] Started D-Bus System Message Bus.
             Starting D-Bus System Message Bus...
             Starting (null)...
    [  OK  ] Started Permit User Sessions.
    [  OK  ] Started Target Communication Framework agent.
    [  OK  ] Started Lightning Fast Webserver With Light System Requirements.
    [FAILED] Failed to start (null).
    See "systemctl status calibrate.service" for details.
    [  OK  ] Started Avahi mDNS/DNS-SD Stack.
    [    8.776418] usbcore: registered new interface driver usbfs
    [    8.784432] usbcore: registered new interface driver hub
    [    8.793305] usbcore: registered new device driver usb
    [  OK  ] Started Login Service.
    [  OK  ] Started Serial Getty on ttyS2.
             Starting Serial Getty on ttyS2...
    [  OK  ] Started Getty on tty1.
    [    8.865406] xhci-hcd xhci-hcd.0.auto: xHCI Host Controller
    [    8.871014] xhci-hcd xhci-hcd.0.auto: new USB bus registered, assigned bus number 1
             [    8.882638] xhci-hcd xhci-hcd.0.auto: hcc params 0x0220f04c hci version 0x100 quirks 0x00210010
    Starting Getty on tty1...
    [    8.891947] xhci-hcd xhci-hcd.0.auto: irq 405, io mem 0x488d0000
    [    8.900384] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
    [    8.907238] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
    [    8.914493] usb usb1: Product: xHCI Host Controller
    [   8.919419] usb usb1: Manufacturer: Linux 4.1.18-dirty xhci-hcd
    [    8.925336] usb usb1: SerialNumber: xhci-hcd.0.auto
    [    8.932049] hub 1-0:1.0: USB hub found
    [    8.935849] hub 1-0:1.0: 1 port detected
    [    8.940555] xhci-hcd xhci-hcd.0.auto: xHCI Host Controller
    [    8.946076] xhci-hcd xhci-hcd.0.auto: new USB bus registered, assigned bus number 2
    [    8.953886] usb usb2: We don't know the algorithms for LPM for this host, disabling LPM.
    [    8.962164] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003
    [    8.969020] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
    [    8.976274] usb usb2: Product: xHCI Host Controller
    [    8.981203] usb usb2: Manufacturer: Linux 4.1.18-dirty xhci-hcd
    [    8.987171] usb usb2: SerialNumber: xhci-hcd.0.auto
    [    8.992893] hub 2-0:1.0: USB hub found
    [    8.996718] hub 2-0:1.0: 1 port detected
    [    9.000999] Unhandled fault: asynchronous external abort (0x1211) at 0x00000000
    [    9.001005] ------------[ cut here ]------------
    [    9.001021] WARNING: CPU: 0 PID: 0 at drivers/bus/omap_l3_noc.c:147 l3_interrupt_handler+0x25c/0x364()
    [    9.001026] 44000000.ocp:L3 Custom Error: MASTER MPU TARGET L4_PER3_P3 (Idle): Data Access in User mode during Functional access
    [    9.001082] Modules linked in: xhci_plat_hcd(+) xhci_hcd usbcore dwc3 udc_core evdev ahci_platform libahci_platform libahci ti_vpe libata leds_gpio extcon_usb_gpio ti_sc omap_wdt ti_vpdma phy_omap_usb2 omap_rng dwc3_omap extcon_palmas rng_core extcon rtc_palmas palmas_pwrbutton rtc_ds1307 sch_fq_codel ipv6 autofs4
    [    9.001090] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.1.18-dirty #38
    [    9.001093] Hardware name: Generic DRA74X (Flattened Device Tree)
    [    9.001097] Backtrace:
    [    9.001113] [<c0012f14>] (dump_backtrace) from [<c0013138>] (show_stack+0x18/0x1c)
    [    9.001124]  r7:c0311dd4 r6:200f0193 r5:c08de184 r4:00000000
    [    9.001135] [<c0013120>] (show_stack) from [<c0637c10>] (dump_stack+0x94/0xa8)
    [    9.001143] [<c0637b7c>] (dump_stack) from [<c0037ad4>] (warn_slowpath_common+0x88/0xb8)
    [    9.001153]  r7:c0311dd4 r6:00000093 r5:00000009 r4:c08bfd40
    [    9.001160] [<c0037a4c>] (warn_slowpath_common) from [<c0037b3c>] (warn_slowpath_fmt+0x38/0x40)
    [    9.001171]  r8:c07e1868 r7:00000000 r6:c07e1928 r5:ee9a62d0 r4:c07e19cc
    [    9.001179] [<c0037b08>] (warn_slowpath_fmt) from [<c0311dd4>] (l3_interrupt_handler+0x25c/0x364)
    [    9.001186]  r3:ee9a6140 r2:c07e19cc
    [    9.001190]  r4:80080003
    [    9.001201] [<c0311b78>] (l3_interrupt_handler) from [<c0078d50>] (handle_irq_event_percpu+0x80/0x13c)
    [    9.001214]  r10:c0906f75 r9:ee99b600 r8:00000017 r7:00000000 r6:00000000 r5:ee99b660
    [    9.001218]  r4:ee9a6640
    [    9.001226] [<c0078cd0>] (handle_irq_event_percpu) from [<c0078e50>] (handle_irq_event+0x44/0x64)
    [    9.001238]  r10:c0906f73 r9:c08bff48 r8:ee808000 r7:00000001 r6:ee9a6640 r5:ee99b660
    [    9.001242]  r4:ee99b600
    [    9.001252] [<c0078e0c>] (handle_irq_event) from [<c007bcf0>] (handle_fasteoi_irq+0xb8/0x17c)
    [    9.001261]  r7:00000001 r6:c08c59fc r5:ee99b660 r4:ee99b600
    [    9.001270] [<c007bc38>] (handle_fasteoi_irq) from [<c00783b4>] (generic_handle_irq+0x34/0x44)
    [    9.001279]  r7:00000001 r6:00000000 r5:00000000 r4:00000017
    [    9.001287] [<c0078380>] (generic_handle_irq) from [<c007868c>] (__handle_domain_irq+0x64/0xbc)
    [    9.001293]  r5:00000000 r4:c08bad2c
    [    9.001301] [<c0078628>] (__handle_domain_irq) from [<c00094a4>] (gic_handle_irq+0x2c/0x64)
    [    9.001313]  r9:c08bff48 r8:00000000 r7:fa212000 r6:c08bfef0 r5:c08c0948 r4:fa21200c
    [    9.001322] [<c0009478>] (gic_handle_irq) from [<c063d9c0>] (__irq_svc+0x40/0x74)
    [    9.001326] Exception stack(0xc08bfef0 to 0xc08bff38)
    [    9.001331] fee0:                                     00000001 00000000 00000000 fe600000
    [    9.001337] ff00: c08be000 c08c05b4 c08c0568 00000000 00000000 c08bff48 c0906f73 c08bff44
    [    9.001341] ff20: c08bff24 c08bff38 c0028864 c0010400 600f0013 ffffffff
    [    9.001352]  r7:c08bff24 r6:ffffffff r5:600f0013 r4:c0010400
    [    9.001364] [<c00103d8>] (arch_cpu_idle) from [<c006f32c>] (cpu_startup_entry+0x284/0x300)
    [    9.001375] [<c006f0a8>] (cpu_startup_entry) from [<c06344a8>] (rest_init+0x90/0x94)
    [    9.001379]  r7:00000000
    [    9.001388] [<c0634418>] (rest_init) from [<c086bd7c>] (start_kernel+0x410/0x41c)
    [    9.001394]  r5:00000000 r4:c090a04c
    [    9.001402] [<c086b96c>] (start_kernel) from [<80008090>] (0x80008090)
    [    9.001406] ---[ end trace 260ac789aae031e9 ]---
    [    9.319893] pgd = ed9bda80
    [    9.322609] [00000000] *pgd=00000000
    [    9.326207] Internal error: : 1211 [#1] PREEMPT SMP ARM
    [    9.331452] Modules linked in: xhci_plat_hcd(+) xhci_hcd usbcore dwc3 udc_core evdev ahci_platform libahci_platform libahci ti_vpe libata leds_gpio extcon_usb_gpio ti_sc omap_wdt ti_vpdma phy_omap_usb2 omap_rng dwc3_omap extcon_palmas rng_core extcon rtc_palmas palmas_pwrbutton rtc_ds1307 sch_fq_codel ipv6 autofs4
    [    9.359609] CPU: 1 PID: 192 Comm: systemd-udevd Tainted: G        W       4.1.18-dirty #38
    [    9.367906] Hardware name: Generic DRA74X (Flattened Device Tree)
    [    9.374024] task: ee124f00 ti: ed982000 task.ti: ed982000
    [    9.379449] PC is at _raw_spin_unlock_irqrestore+0x0/0x5c
    [    9.384892] LR is at xhci_hub_control+0x9a0/0x1240 [xhci_hcd]
    [    9.390662] pc : [<c063d1a4>]    lr : [<bf21a56c>]    psr: a0010093
    [    9.390662] sp : ed983660  ip : ed983650  fp : ed9836bc
    [    9.402189] r10: 00000001  r9 : 60010013  r8 : 000002a0
    [    9.407434] r7 : ee2db18c  r6 : 00000000  r5 : ee2da000  r4 : ee2db000
    [    9.413988] r3 : fa8d0430  r2 : 00000000  r1 : 60010013  r0 : ee2db18c
    [    9.420543] Flags: NzCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment user
    [    9.427795] Control: 30c5387d  Table: ad9bda80  DAC: 55555555
    [    9.433564] Process systemd-udevd (pid: 192, stack limit = 0xed982218)
    [    9.440116] Stack: (0xed983660 to 0xed984000)
    [    9.444491] 3660: ed9836c4 ed983670 c0065660 c0060ebc 0000b800 eee99800 ee2db160 00000000
    [    9.452705] 3680: 00000000 00000000 ee2bff80 ed983698 c0110c18 edad4780 ee2da000 00002303
    [    9.460916] 36a0: 00000000 ee2b4480 bf219bcc 00000000 ed98376c ed9836c0 bf18dd7c bf219bd8
    [    9.469129] 36c0: ee2b4480 00000000 00000001 00000008 00000023 00000003 c00641a4 005b8d80
    [    9.477341] 36e0: 00000000 aa4573a8 ed98371c ed9836f8 c09070b9 00000000 ee844048 ed983744
    [    9.485554] 3700: c09368d8 00000011 00000000 000044ba ee0e8c80 00000012 ee844048 ee0e8c84
    [    9.493767] 3720: ed983784 ed983730 c02e5d80 c010f520 ee844048 c0111010 ed98378c ee844058
    [    9.501978] 3740: c09368d8 edad4780 00000010 ed947c00 00000000 00000000 00000002 00000003
    [    9.510190] 3760: ed9837b4 ed983770 bf18f238 bf18db58 20010013 edb86800 ed9837b4 ed983788
    [    9.518402] 3780: c02e5f10 00000001 c090a088 edad4780 ed9837bc 00000000 ed983804 000003e8
    [    9.526614] 37a0: 00000008 00000003 ed9837f4 ed9837b8 bf18fa5c bf18ef8c ee2b4280 00000000
    [    9.534826] 37c0: 00000000 ed9837c4 ed9837c4 00000008 ed9837f4 ee2b4280 00000000 80000100
    [    9.543039] 37e0: ed947c00 00000001 ed983834 ed9837f8 bf18fb78 bf18fa14 00000000 00000023
    [    9.551250] 3800: ed983844 ed983810 c0188f20 00000001 ed968600 ed968648 00000000 00000001
    [    9.559463] 3820: 00000001 00000000 ed98385c ed983838 bf184d1c bf18fad8 00000008 00000001
    [    9.567675] 3840: 00000000 00000000 000003e8 00000001 ed983884 ed983860 bf187c98 bf184cdc
    [    9.575887] 3860: ed968600 0000000a ed9686e0 00000000 ed947c00 00000001 ed9838dc ed983888
    [    9.584099] 3880: bf188120 bf187c70 ed968600 ed969c08 ed9838dc ed9838a0 bf2101d4 bf18bcdc
    [    9.592311] 38a0: ffffffff ed9838b0 bf19d000 c010ff20 ee124f00 ed968600 ed947c00 bf2101b0
    [    9.600523] 38c0: 00000000 ed964020 00000001 ed964000 ed98393c ed9838e0 bf18b61c bf187d14
    [    9.608735] 38e0: 00002a00 00000000 ee2b4200 0000000c 00001388 bf1a2f60 ed983924 ee2da000
    [    9.616948] 3900: edb2d480 00000000 ed98393c 00000000 ee2da000 ed964020 ed947c68 ed947c00
    [    9.625160] 3920: bf1a2eb4 ed964000 bf19e4e4 00000000 ed983974 ed983940 bf193c60 bf18af3c
    [    9.633372] 3940: c01896a4 c01895bc ed983974 c093f3f4 ed964020 00000000 bf1a2eb4 00000014
    [    9.641584] 3960: 00000000 bf1a2f60 ed98399c ed983978 c04058c0 bf193ae8 bf1a2eb4 ed964020
    [    9.649796] 3980: c0405a00 00000000 c093f3d0 00000000 ed9839b4 ed9839a0 c0405a48 c0405748
    [    9.658008] 39a0: 00000000 ed964020 ed9839dc ed9839b8 c0403e2c c0405a0c ee0f8b70 ed8e0fb8
    [    9.666221] 39c0: ed964028 ed964020 ed964020 ed964054 ed9839fc ed9839e0 c0405700 c0403dd0
    [    9.674433] 39e0: ed964028 ed964020 bf1a2f78 00000000 ed983a1c ed983a00 c0404d3c c0405684
    [    9.682645] 3a00: ed964028 ed964020 ed947c68 00000000 ed983a5c ed983a20 c0402e58 c0404cbc
    [    9.690857] 3a20: edb2d448 ed964250 ed983a5c ed983a38 bf185a40 ed964000 ed964250 ed947c68
    [    9.699069] 3a40: ed964250 ed947c00 edb2d448 ed964250 ed983ae4 ed983a60 bf191b9c c0402aec
    [    9.707281] 3a60: 00000001 00000000 00000000 00000000 00001388 edb2cdc0 bf1a3746 ee2da000
    [    9.715493] 3a80: 00000001 00000001 edb2dec0 ed964200 ed96420c bf1a2f78 bf1a3098 bf190b6c
    [    9.723705] 3aa0: ed947c04 ed964250 00000001 00000001 edb2dec0 ed947c68 bf19b660 ed947c00
    [    9.731917] 3ac0: 00000001 00000000 bf1a3650 00000014 00000000 bf1a2e1c ed983afc ed983ae8
    [    9.740129] 3ae0: bf19b878 bf1916f8 bf1a3650 ed947c00 ed983b14 ed983b00 bf193ac4 bf19b850
    [    9.748342] 3b00: c093f3f4 ed947c68 ed983b3c ed983b18 c04058c0 bf193aa4 bf1a3650 ed947c68
    [    9.756554] 3b20: c0405a00 00000000 ee85b700 00000000 ed983b54 ed983b40 c0405a48 c0405748
    [    9.764766] 3b40: 00000000 ed947c68 ed983b7c ed983b58 c0403e2c c0405a0c ee0f8b70 ed8e0ab8
    [    9.772978] 3b60: ed947c70 ed947c68 ed947c68 ed947c9c ed983b9c ed983b80 c0405700 c0403dd0
    [    9.781190] 3b80: ed947c70 ed947c68 bf1a2f78 00000000 ed983bbc ed983ba0 c0404d3c c0405684
    [    9.789402] 3ba0: ed947c70 ed947c68 ed96e410 00000000 ed983bfc ed983bc0 c0402e58 c0404cbc
    [    9.797614] 3bc0: 39383101 3832313a ed983b00 ed983bd8 c03b8b44 ed947c00 ed947c68 edb2d4c0
    [    9.805825] 3be0: 00000000 ee2da0c8 00000001 ed96e410 ed983c54 ed983c00 bf188f0c c0402aec
    [    9.814037] 3c00: 00000001 ed983c10 c04025d0 c04022b8 ed983c54 ed983c38 bf19f63c ed983c14
    [    9.822249] 3c20: 0000000f ed983c54 ed983c40 ee2da000 00000000 00000080 ed947c00 ee2da0c8
    [    9.830461] 3c40: 00000001 ed96e410 ed983c9c ed983c58 bf18cf80 bf188c6c c08f68b0 ee2da000
    [    9.838673] 3c60: ed983c9c 00000195 c0497510 ed947c00 bf1a2f38 ee2da000 00000195 00000080
    [    9.846885] 3c80: 00000000 ee2db000 fffffffe ed8cf1c0 ed983cbc ed983ca0 bf18d2cc bf18ca94
    [    9.855098] 3ca0: ed96e400 ed96e410 ee2db000 00000000 ed983cf4 ed983cc0 bf24c4d4 bf18d2a0
    [    9.863309] 3cc0: 00000195 00000000 ed96e418 c093f3f4 ed96e410 bf24cc2c fffffdfb 00000012
    [    9.871522] 3ce0: eb241548 bf24cd20 ed983d14 ed983cf8 c0407270 bf24c124 c093f3f4 ed96e410
    [    9.879735] 3d00: 00000000 bf24cc2c ed983d3c ed983d18 c04058c0 c0407230 ed96e410 bf24cc2c
    [    9.887947] 3d20: ed96e444 00000000 00000000 eb241548 ed983d5c ed983d40 c0405ae0 c0405748
    [    9.896158] 3d40: 00000000 bf24cc2c c0405a4c 00000000 ed983d84 ed983d60 c0403d6c c0405a58
    [    9.904369] 3d60: ee847a5c edb009b4 ee847a70 bf24cc2c ed8e0780 c08ebea0 ed983d94 ed983d88
    [    9.912581] 3d80: c0405314 c0403d08 ed983dbc ed983d98 c0404fbc c04052fc bf24cbe8 ed983da8
    [    9.920794] 3da0: bf24cc2c bf252000 c08c3120 eb241340 ed983dd4 ed983dc0 c0406150 c0404e78
    [    9.929006] 3dc0: c08c3120 bf252000 ed983de4 ed983dd8 c04071b4 c04060dc ed983df4 ed983de8
    [    9.937218] 3de0: bf252034 c0407164 ed983e6c ed983df8 c0009788 bf25200c 00000000 eeef2000
    [    9.945431] 3e00: 00080000 ed982000 ef503124 ee801e40 eb241340 c0104e4c ed983e30 0000e74a
    [    9.953643] 3e20: ed983e5c ed983e30 c0110090 c010f1a8 00000002 00000025 eb241340 f2abe000
    [    9.961855] 3e40: 00000001 14dbeadc bf24cd20 bf24cd20 00000001 ee25a900 00000001 14dbeadc
    [    9.970066] 3e60: ed983e94 ed983e70 c0635cec c0009700 ed983e94 ed983e80 c0104f38 ed983f48
    [    9.978279] 3e80: 00000001 eb241540 ed983f44 ed983e98 c00a309c c0635c94 bf24cd2c 00007fff
    [    9.986491] 3ea0: c009fd98 c011e974 c0645210 00000000 bf24cd2c f2ae28e4 bf24ce54 c08c0570
    [    9.994704] 3ec0: bf24cd2c bf24cd68 f2abe000 00024934 000e1bee 00000000 0b300002 00000000
    [   10.002916] 3ee0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    [   10.011127] 3f00: 00000000 00000000 00000000 00000000 00000000 00000000 00000130 00000000
    [   10.019339] 3f20: 0000000b b6e09ec8 0000017b c000fa44 ed982000 00000000 ed983fa4 ed983f48
    [   10.027551] 3f40: c00a3530 c00a1454 f2abe000 00024934 f2ae22cc f2ad977e f2ad9fcc 00000e64
    [   10.035763] 3f60: 00001054 00000000 00000000 00000000 00000027 00000028 00000011 0000000d
    [   10.043976] 3f80: 00000009 00000000 00000000 00000000 7f67b198 00000000 00000000 ed983fa8
    [   10.052188] 3fa0: c000f8a0 c00a34b4 00000000 7f67b198 0000000b b6e09ec8 00000000 00020000
    [   10.060400] 3fc0: 00000000 7f67b198 00000000 0000017b 00000000 7f67b198 7f686fe8 7f66b8c4
    [   10.068613] 3fe0: be9a0fe0 be9a0fd0 b6e0299c b6f3f7b0 60010010 0000000b 00000000 00000000
    [   10.076821] Backtrace:
    [   10.079332] [<bf219bcc>] (xhci_hub_control [xhci_hcd]) from [<bf18dd7c>] (usb_hcd_submit_urb+0x230/0x844 [usbcore])
    [   10.089809]  r10:00000000 r9:bf219bcc r8:ee2b4480 r7:00000000 r6:00002303 r5:ee2da000
    [   10.097711]  r4:edad4780
    [   10.100313] [<bf18db4c>] (usb_hcd_submit_urb [usbcore]) from [<bf18f238>] (usb_submit_urb+0x2b8/0x4c8 [usbcore])
    [   10.110529]  r10:00000003 r9:00000002 r8:00000000 r7:00000000 r6:ed947c00 r5:00000010
    [   10.118429]  r4:edad4780
    [   10.121030] [<bf18ef80>] (usb_submit_urb [usbcore]) from [<bf18fa5c>] (usb_start_wait_urb+0x54/0xc4 [usbcore])
    [   10.131071]  r10:00000003 r9:00000008 r8:000003e8 r7:ed983804 r6:00000000 r5:ed9837bc
    [   10.138973]  r4:edad4780
    [   10.141573] [<bf18fa08>] (usb_start_wait_urb [usbcore]) from [<bf18fb78>] (usb_control_msg+0xac/0xdc [usbcore])
    [   10.151702]  r8:00000001 r7:ed947c00 r6:80000100 r5:00000000 r4:ee2b4280
    [   10.158514] [<bf18facc>] (usb_control_msg [usbcore]) from [<bf184d1c>] (set_port_feature+0x4c/0x54 [usbcore])
    [   10.168467]  r10:00000000 r9:00000001 r8:00000001 r7:00000000 r6:ed968648 r5:ed968600
    [   10.176367]  r4:00000001
    [   10.178955] [<bf184cd0>] (set_port_feature [usbcore]) from [<bf187c98>] (hub_power_on+0x34/0xa4 [usbcore])
    [   10.188689] [<bf187c64>] (hub_power_on [usbcore]) from [<bf188120>] (hub_activate+0x418/0x67c [usbcore])
    [   10.198206]  r9:00000001 r8:ed947c00 r7:00000000 r6:ed9686e0 r5:0000000a r4:ed968600
    [   10.206062] [<bf187d08>] (hub_activate [usbcore]) from [<bf18b61c>] (hub_probe+0x6ec/0x820 [usbcore])
    [   10.215319]  r10:ed964000 r9:00000001 r8:ed964020 r7:00000000 r6:bf2101b0 r5:ed947c00
    [   10.223220]  r4:ed968600
    [   10.225818] [<bf18af30>] (hub_probe [usbcore]) from [<bf193c60>] (usb_probe_interface+0x184/0x24c [usbcore])
    [   10.235684]  r10:00000000 r9:bf19e4e4 r8:ed964000 r7:bf1a2eb4 r6:ed947c00 r5:ed947c68
    [   10.243582]  r4:ed964020
    [   10.246166] [<bf193adc>] (usb_probe_interface [usbcore]) from [<c04058c0>] (driver_probe_device+0x184/0x2c4)
    [   10.256034]  r10:bf1a2f60 r9:00000000 r8:00000014 r7:bf1a2eb4 r6:00000000 r5:ed964020
    [   10.263935]  r4:c093f3f4
    [   10.266486] [<c040573c>] (driver_probe_device) from [<c0405a48>] (__device_attach+0x48/0x4c)
    [   10.274958]  r9:00000000 r8:c093f3d0 r7:00000000 r6:c0405a00 r5:ed964020 r4:bf1a2eb4
    [   10.282780] [<c0405a00>] (__device_attach) from [<c0403e2c>] (bus_for_each_drv+0x68/0x9c)
    [   10.290990]  r5:ed964020 r4:00000000
    [   10.294597] [<c0403dc4>] (bus_for_each_drv) from [<c0405700>] (device_attach+0x88/0x9c)
    [   10.302632]  r6:ed964054 r5:ed964020 r4:ed964020
    [   10.307293] [<c0405678>] (device_attach) from [<c0404d3c>] (bus_probe_device+0x8c/0xb0)
    [   10.315329]  r7:00000000 r6:bf1a2f78 r5:ed964020 r4:ed964028
    [   10.321045] [<c0404cb0>] (bus_probe_device) from [<c0402e58>] (device_add+0x378/0x574)
    [   10.328992]  r7:00000000 r6:ed947c68 r5:ed964020 r4:ed964028
    [   10.334737] [<c0402ae0>] (device_add) from [<bf191b9c>] (usb_set_configuration+0x4b0/0x864 [usbcore])
    [   10.343993]  r10:ed964250 r9:edb2d448 r8:ed947c00 r7:ed964250 r6:ed947c68 r5:ed964250
    [   10.351893]  r4:ed964000
    [   10.354504] [<bf1916ec>] (usb_set_configuration [usbcore]) from [<bf19b878>] (generic_probe+0x34/0x80 [usbcore])
    [   10.364719]  r10:bf1a2e1c r9:00000000 r8:00000014 r7:bf1a3650 r6:00000000 r5:00000001
    [   10.372619]  r4:ed947c00
    [   10.375228] [<bf19b844>] (generic_probe [usbcore]) from [<bf193ac4>] (usb_probe_device+0x2c/0x44 [usbcore])
    [   10.385008]  r5:ed947c00 r4:bf1a3650
    [   10.388641] [<bf193a98>] (usb_probe_device [usbcore]) from [<c04058c0>] (driver_probe_device+0x184/0x2c4)
    [   10.398246]  r5:ed947c68 r4:c093f3f4
    [   10.401852] [<c040573c>] (driver_probe_device) from [<c0405a48>] (__device_attach+0x48/0x4c)
    [   10.410324]  r9:00000000 r8:ee85b700 r7:00000000 r6:c0405a00 r5:ed947c68 r4:bf1a3650
    [   10.418141] [<c0405a00>] (__device_attach) from [<c0403e2c>] (bus_for_each_drv+0x68/0x9c)
    [   10.426351]  r5:ed947c68 r4:00000000
    [   10.429957] [<c0403dc4>] (bus_for_each_drv) from [<c0405700>] (device_attach+0x88/0x9c)
    [   10.437992]  r6:ed947c9c r5:ed947c68 r4:ed947c68
    [   10.442654] [<c0405678>] (device_attach) from [<c0404d3c>] (bus_probe_device+0x8c/0xb0)
    [   10.450689]  r7:00000000 r6:bf1a2f78 r5:ed947c68 r4:ed947c70
    [   10.456406] [<c0404cb0>] (bus_probe_device) from [<c0402e58>] (device_add+0x378/0x574)
    [   10.464354]  r7:00000000 r6:ed96e410 r5:ed947c68 r4:ed947c70
    [   10.470090] [<c0402ae0>] (device_add) from [<bf188f0c>] (usb_new_device+0x2ac/0x544 [usbcore])
    [   10.478736]  r10:ed96e410 r9:00000001 r8:ee2da0c8 r7:00000000 r6:edb2d4c0 r5:ed947c68
    [   10.486634]  r4:ed947c00
    [   10.489227] [<bf188c60>] (usb_new_device [usbcore]) from [<bf18cf80>] (usb_otg_add_hcd+0x4f8/0x80c [usbcore])
    [   10.499182]  r10:ed96e410 r9:00000001 r8:ee2da0c8 r7:ed947c00 r6:00000080 r5:00000000
    [   10.507082]  r4:ee2da000
    [   10.509679] [<bf18ca88>] (usb_otg_add_hcd [usbcore]) from [<bf18d2cc>] (usb_add_hcd+0x38/0x40 [usbcore])
    [   10.519197]  r10:ed8cf1c0 r9:fffffffe r8:ee2db000 r7:00000000 r6:00000080 r5:00000195
    [   10.527099]  r4:ee2da000
    [   10.529676] [<bf18d294>] (usb_add_hcd [usbcore]) from [<bf24c4d4>] (xhci_plat_probe+0x3bc/0x3e0 [xhci_plat_hcd])
    [   10.539891]  r7:00000000 r6:ee2db000 r5:ed96e410 r4:ed96e400
    [   10.545613] [<bf24c118>] (xhci_plat_probe [xhci_plat_hcd]) from [<c0407270>] (platform_drv_probe+0x4c/0xb4)
    [   10.555392]  r10:bf24cd20 r9:eb241548 r8:00000012 r7:fffffdfb r6:bf24cc2c r5:ed96e410
    [   10.563293]  r4:c093f3f4
    [   10.565845] [<c0407224>] (platform_drv_probe) from [<c04058c0>] (driver_probe_device+0x184/0x2c4)
    [   10.574752]  r7:bf24cc2c r6:00000000 r5:ed96e410 r4:c093f3f4
    [   10.580468] [<c040573c>] (driver_probe_device) from [<c0405ae0>] (__driver_attach+0x94/0x98)
    [   10.588939]  r9:eb241548 r8:00000000 r7:00000000 r6:ed96e444 r5:bf24cc2c r4:ed96e410
    [   10.596762] [<c0405a4c>] (__driver_attach) from [<c0403d6c>] (bus_for_each_dev+0x70/0xa4)
    [   10.604972]  r7:00000000 r6:c0405a4c r5:bf24cc2c r4:00000000
    [   10.610688] [<c0403cfc>] (bus_for_each_dev) from [<c0405314>] (driver_attach+0x24/0x28)
    [   10.618723]  r6:c08ebea0 r5:ed8e0780 r4:bf24cc2c
    [   10.623383] [<c04052f0>] (driver_attach) from [<c0404fbc>] (bus_add_driver+0x150/0x1f8)
    [   10.631422] [<c0404e6c>] (bus_add_driver) from [<c0406150>] (driver_register+0x80/0x100)
    [   10.639545]  r7:eb241340 r6:c08c3120 r5:bf252000 r4:bf24cc2c
    [   10.645259] [<c04060d0>] (driver_register) from [<c04071b4>] (__platform_driver_register+0x5c/0x64)
    [   10.654340]  r5:bf252000 r4:c08c3120
    [   10.657950] [<c0407158>] (__platform_driver_register) from [<bf252034>] (xhci_plat_init+0x34/0x38 [xhci_plat_hcd])
    [   10.668348] [<bf252000>] (xhci_plat_init [xhci_plat_hcd]) from [<c0009788>] (do_one_initcall+0x94/0x1dc)
    [   10.677874] [<c00096f4>] (do_one_initcall) from [<c0635cec>] (do_init_module+0x64/0x1b0)
    [   10.685995]  r8:14dbeadc r7:00000001 r6:ee25a900 r5:00000001 r4:bf24cd20
    [   10.692770] [<c0635c88>] (do_init_module) from [<c00a309c>] (load_module+0x1c54/0x1f10)
    [   10.700804]  r6:eb241540 r5:00000001 r4:ed983f48
    [   10.705465] [<c00a1448>] (load_module) from [<c00a3530>] (SyS_finit_module+0x88/0x98)
    [   10.713325]  r10:00000000 r9:ed982000 r8:c000fa44 r7:0000017b r6:b6e09ec8 r5:0000000b
    [   10.721226]  r4:00000000
    [   10.723779] [<c00a34a8>] (SyS_finit_module) from [<c000f8a0>] (ret_fast_syscall+0x0/0x3c)
    [   10.731988]  r6:00000000 r5:7f67b198 r4:00000000
    [   10.736650] Code: e3130002 089da800 ebfff23f e89da800 (e1a0c00d)
    [   10.742772] ---[ end trace 260ac789aae031ea ]---
    [   10.747409] note: systemd-udevd[192] exited with preempt_count 1
    

    /*
     * Copyright (C) 2014 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.
     */
    /dts-v1/;
    
    #include "dra74x.dtsi"
    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/interrupt-controller/irq.h>
    
    / {
    	model = "TI AM5728 BeagleBoard-X15";
    	compatible = "ti,am572x-beagle-x15", "ti,am5728", "ti,dra742", "ti,dra74", "ti,dra7";
    
    	aliases {
    		rtc0 = &mcp_rtc;
    		rtc2 = &rtc;
    	};
    
    	memory {
    		device_type = "memory";
    		reg = <0x0 0x80000000 0x0 0x80000000>;
    	};
    	
    	vdd_3v3: fixedregulator-vdd_3v3 {
    		compatible = "regulator-fixed";
    		regulator-name = "vdd_3v3";
    		vin-supply = <&regen1>;
    		regulator-min-microvolt = <3300000>;
    		regulator-max-microvolt = <3300000>;
    	};
    
    	aic_dvdd: fixedregulator-aic_dvdd {
    		compatible = "regulator-fixed";
    		regulator-name = "aic_dvdd_fixed";
    		vin-supply = <&vdd_3v3>;
    		regulator-min-microvolt = <1800000>;
    		regulator-max-microvolt = <1800000>;
    	};
    
    	vtt_fixed: fixedregulator-vtt {
    		/* TPS51200 */
    		compatible = "regulator-fixed";
    		regulator-name = "vtt_fixed";
    		vin-supply = <&smps3_reg>;
    		regulator-min-microvolt = <3300000>;
    		regulator-max-microvolt = <3300000>;
    		regulator-always-on;
    		regulator-boot-on;
    		enable-active-high;
    		gpio = <&gpio7 11 GPIO_ACTIVE_HIGH>;
    	};
    
    	leds {
    		compatible = "gpio-leds";
    		led@0 {
    			label = "beagle-x15:usr0";
    			gpios = <&gpio4 6 GPIO_ACTIVE_HIGH>;
    			linux,default-trigger = "heartbeat";
    			default-state = "off";
    		};
    
    		led@1 {
    			label = "beagle-x15:usr1";
    			gpios = <&gpio4 7 GPIO_ACTIVE_HIGH>;
    			linux,default-trigger = "cpu0";
    			default-state = "off";
    		};
    
    		led@2 {
    			label = "beagle-x15:usr2";
    			gpios = <&gpio4 8 GPIO_ACTIVE_HIGH>;
    			linux,default-trigger = "mmc0";
    			default-state = "off";
    		};
    
    		led@3 {
    			label = "beagle-x15:usr3";
    			gpios = <&gpio4 9 GPIO_ACTIVE_HIGH>;
    			linux,default-trigger = "ide-disk";
    			default-state = "off";
    		};
    	};
    
    	extcon_usb1: extcon_usb1 {
    		compatible = "linux,extcon-usb-gpio";
    		id-gpio = <&gpio7 25 GPIO_ACTIVE_HIGH>;
    	};
    };
    
    &dra7_pmx_core {
    	leds_pins_default: leds_pins_default {
    		pinctrl-single,pins = <
    			0x3a8 (PIN_OUTPUT | MUX_MODE14)	/* spi1_d1.gpio7_8 */
    			0x3ac (PIN_OUTPUT | MUX_MODE14)	/* spi1_d0.gpio7_9 */
    			0x3c0 (PIN_OUTPUT | MUX_MODE14)	/* spi2_sclk.gpio7_14 */
    			0x3c4 (PIN_OUTPUT | MUX_MODE14)	/* spi2_d1.gpio7_15 */
    		>;
    	};
    
    	i2c1_pins_default: i2c1_pins_default {
    		pinctrl-single,pins = <
    			0x400 (PIN_INPUT_PULLUP | MUX_MODE0)	/* i2c1_sda.sda */
    			0x404 (PIN_INPUT_PULLUP | MUX_MODE0)	/* i2c1_scl.scl */
    		>;
    	};
    
    	i2c3_pins_default: i2c3_pins_default {
    		pinctrl-single,pins = <
    			0x2a4 (PIN_INPUT| MUX_MODE10)	/* mcasp1_aclkx.i2c3_sda */
    			0x2a8 (PIN_INPUT| MUX_MODE10)	/* mcasp1_fsx.i2c3_scl */
    		>;
    	};
    
    	uart3_pins_default: uart3_pins_default {
    		pinctrl-single,pins = <
    			0x3f8 (PIN_INPUT_SLEW | MUX_MODE2) /* uart2_ctsn.uart3_rxd */
    			0x3fc (PIN_INPUT_SLEW | MUX_MODE1) /* uart2_rtsn.uart3_txd */
    		>;
    	};
    
    	mmc1_pins_default: mmc1_pins_default {
    		pinctrl-single,pins = <
    			0x354 (PIN_INPUT_PULLUP | MUX_MODE0) /* mmc1_clk.clk */
    			0x358 (PIN_INPUT_PULLUP | MUX_MODE0) /* mmc1_cmd.cmd */
    			0x35c (PIN_INPUT_PULLUP | MUX_MODE0) /* mmc1_dat0.dat0 */
    			0x360 (PIN_INPUT_PULLUP | MUX_MODE0) /* mmc1_dat1.dat1 */
    			0x364 (PIN_INPUT_PULLUP | MUX_MODE0) /* mmc1_dat2.dat2 */
    			0x368 (PIN_INPUT_PULLUP | MUX_MODE0) /* mmc1_dat3.dat3 */
    		>;
    	};
    
    	mmc1_pins_hs: pinmux_mmc1_hs_pins {
    		pinctrl-single,pins = <
    			0x354 (PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0)	/* mmc1_clk.clk */
    			0x358 (PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0)	/* mmc1_cmd.cmd */
    			0x35c (PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0)	/* mmc1_dat0.dat0 */
    			0x360 (PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0)	/* mmc1_dat1.dat1 */
    			0x364 (PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0)	/* mmc1_dat2.dat2 */
    			0x368 (PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0)	/* mmc1_dat3.dat3 */
    		>;
    	};
    
    	mmc2_pins_default: mmc2_pins_default {
    		pinctrl-single,pins = <
    			0x9c (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a23.mmc2_clk */
    			0xb0 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_cs1.mmc2_cmd */
    			0xa0 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a24.mmc2_dat0 */
    			0xa4 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a25.mmc2_dat1 */
    			0xa8 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a26.mmc2_dat2 */
    			0xac (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a27.mmc2_dat3 */
    			0x8c (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a19.mmc2_dat4 */
    			0x90 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a20.mmc2_dat5 */
    			0x94 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a21.mmc2_dat6 */
    			0x98 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a22.mmc2_dat7 */
    		>;
    	};
    
    	mmc2_pins_hs: mmc2_pins_hs {
    		pinctrl-single,pins = <
    			0x9c (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a23.mmc2_clk */
    			0xb0 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_cs1.mmc2_cmd */
    			0xa0 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a24.mmc2_dat0 */
    			0xa4 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a25.mmc2_dat1 */
    			0xa8 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a26.mmc2_dat2 */
    			0xac (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a27.mmc2_dat3 */
    			0x8c (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a19.mmc2_dat4 */
    			0x90 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a20.mmc2_dat5 */
    			0x94 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a21.mmc2_dat6 */
    			0x98 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a22.mmc2_dat7 */
    		>;
    	};
    
    	mmc2_pins_ddr_1_8v: pinmux_mmc2_ddr_1_8v_pins {
    		pinctrl-single,pins = <
    			0x9c (PIN_INPUT_PULLUP | MANUAL_MODE | MUX_MODE1) /* gpmc_a23.mmc2_clk */
    			0xb0 (PIN_INPUT_PULLUP | MANUAL_MODE | MUX_MODE1) /* gpmc_cs1.mmc2_cmd */
    			0xa0 (PIN_INPUT_PULLUP | MANUAL_MODE | MUX_MODE1) /* gpmc_a24.mmc2_dat0 */
    			0xa4 (PIN_INPUT_PULLUP | MANUAL_MODE | MUX_MODE1) /* gpmc_a25.mmc2_dat1 */
    			0xa8 (PIN_INPUT_PULLUP | MANUAL_MODE | MUX_MODE1) /* gpmc_a26.mmc2_dat2 */
    			0xac (PIN_INPUT_PULLUP | MANUAL_MODE | MUX_MODE1) /* gpmc_a27.mmc2_dat3 */
    			0x8c (PIN_INPUT_PULLUP | MANUAL_MODE | MUX_MODE1) /* gpmc_a19.mmc2_dat4 */
    			0x90 (PIN_INPUT_PULLUP | MANUAL_MODE | MUX_MODE1) /* gpmc_a20.mmc2_dat5 */
    			0x94 (PIN_INPUT_PULLUP | MANUAL_MODE | MUX_MODE1) /* gpmc_a21.mmc2_dat6 */
    			0x98 (PIN_INPUT_PULLUP | MANUAL_MODE | MUX_MODE1) /* gpmc_a22.mmc2_dat7 */
    		>;
    	};
    
    	cpsw_pins_default: cpsw_pins_default {
                    pinctrl-single,pins = < 
                            /* RMII 50 MHz reference clocked shared */
                            0x244 (PIN_INPUT_PULLDOWN | MUX_MODE0) /* rmii_mhz_50_clk */
    
                            /* RMII 1 RX Signals */
                            0x248 (PIN_INPUT_PULLDOWN  | MUX_MODE2) /* rmii1_crs */
                            0x24C (PIN_INPUT_PULLDOWN | MUX_MODE14) /* rmii1_rxer not used */
                            0x250 (PIN_INPUT_PULLDOWN  | MUX_MODE2) /* rmii1_rxd1 */
                            0x254 (PIN_INPUT_PULLDOWN  | MUX_MODE2) /* rmii1_rxd0 */
    
                            /* RMII 0 RX Signals */
                            0x258 (PIN_INPUT_PULLDOWN  | MUX_MODE1) /* rmii0_crs */
                            0x25C (PIN_INPUT_PULLDOWN | MUX_MODE14) /* rmii0_rxer not used */
                            0x260 (PIN_INPUT_PULLDOWN  | MUX_MODE1) /* rmii0_rxd1 */
                            0x264 (PIN_INPUT_PULLDOWN  | MUX_MODE1) /* rmii0_rxd0 */
    
                            /* RMII 1 TX Signals */
                            0x268 (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* rmii1_txen */
                            0x26C (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* rmii1_txd1 */
                            0x270 (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* rmii1_txd0 */
    
                            /* RMII 0 TX Signals */
                            0x274 (PIN_OUTPUT_PULLDOWN | MUX_MODE1) /* rmii0_txen */
                            0x278 (PIN_OUTPUT_PULLDOWN | MUX_MODE1) /* rmii0_txd1 */
                            0x27C (PIN_OUTPUT_PULLDOWN | MUX_MODE1) /* rmii0_txd0 */
                    >;
    
            };
    
            cpsw_pins_sleep: cpsw_pins_sleep {
                    pinctrl-single,pins = < 
                            /* RMII 50 MHz reference clocked shared */
                            0x244 (PIN_INPUT | MUX_MODE15) /* rmii_mhz_50_clk */
    
                            /* RMII 1 RX Signals */
                            0x248 (PIN_INPUT  | MUX_MODE15) /* rmii1_crs */
                            0x24C (PIN_INPUT_PULLDOWN | MUX_MODE14) /* rmii1_rxer not used */
                            0x250 (PIN_INPUT  | MUX_MODE15) /* rmii1_rxd1 */
                            0x254 (PIN_INPUT  | MUX_MODE15) /* rmii1_rxd0 */
    
                            /* RMII 0 RX Signals */
                            0x258 (PIN_INPUT  | MUX_MODE15) /* rmii0_crs */
                            0x25C (PIN_INPUT_PULLDOWN | MUX_MODE14) /* rmii0_rxer not used */
                            0x260 (PIN_INPUT  | MUX_MODE15) /* rmii0_rxd1 */
                            0x264 (PIN_INPUT  | MUX_MODE15) /* rmii0_rxd0 */
    
                            /* RMII 1 TX Signals */
                            0x268 (PIN_INPUT | MUX_MODE15) /* rmii1_txen */
                            0x26C (PIN_INPUT | MUX_MODE15) /* rmii1_txd1 */
                            0x270 (PIN_INPUT | MUX_MODE15) /* rmii1_txd0 */
    
                            /* RMII 0 TX Signals */
                            0x274 (PIN_INPUT | MUX_MODE15) /* rmii0_txen */
                            0x278 (PIN_INPUT | MUX_MODE15) /* rmii0_txd1 */
                            0x27C (PIN_INPUT | MUX_MODE15) /* rmii0_txd0 */
                    >;
            };
    };
    
    &dra7_iodelay_core {
    	mmc2_iodelay_ddr_1_8v_conf: mmc2_iodelay_ddr_1_8v_conf {
    		pinctrl-single,pins = <
    			0x18c (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A19_IN */
    			0x1a4 (A_DELAY(274) | G_DELAY(240))	/* CFG_GPMC_A20_IN */
    			0x1b0 (A_DELAY(0) | G_DELAY(60))	/* CFG_GPMC_A21_IN */
    			0x1bc (A_DELAY(0) | G_DELAY(60))	/* CFG_GPMC_A22_IN */
    			0x1c8 (A_DELAY(514) | G_DELAY(360))	/* CFG_GPMC_A23_IN */
    			0x1d4 (A_DELAY(187) | G_DELAY(120))	/* CFG_GPMC_A24_IN */
    			0x1e0 (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A25_IN */
    			0x1ec (A_DELAY(0) | G_DELAY(60))	/* CFG_GPMC_A26_IN */
    			0x1f8 (A_DELAY(121) | G_DELAY(60))	/* CFG_GPMC_A27_IN */
    			0x360 (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_CS1_IN */
    			0x190 (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A19_OEN */
    			0x194 (A_DELAY(174) | G_DELAY(0))	/* CFG_GPMC_A19_OUT */
    			0x1a8 (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A20_OEN */
    			0x1ac (A_DELAY(168) | G_DELAY(0))	/* CFG_GPMC_A20_OUT */
    			0x1b4 (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A21_OEN */
    			0x1b8 (A_DELAY(136) | G_DELAY(0))	/* CFG_GPMC_A21_OUT */
    			0x1c0 (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A22_OEN */
    			0x1c4 (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A22_OUT */
    			0x1d0 (A_DELAY(879) | G_DELAY(0))	/* CFG_GPMC_A23_OUT */
    			0x1d8 (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A24_OEN */
    			0x1dc (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A24_OUT */
    			0x1e4 (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A25_OEN */
    			0x1e8 (A_DELAY(34) | G_DELAY(0))	/* CFG_GPMC_A25_OUT */
    			0x1f0 (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A26_OEN */
    			0x1f4 (A_DELAY(120) | G_DELAY(0))	/* CFG_GPMC_A26_OUT */
    			0x1fc (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A27_OEN */
    			0x200 (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A27_OUT */
    			0x364 (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_CS1_OEN */
    			0x368 (A_DELAY(11) | G_DELAY(0))	/* CFG_GPMC_CS1_OUT */
    		>;
    	};
    };
    
    &i2c1 {
    	status = "okay";
    	clock-frequency = <400000>;
    
    	tps659038: tps659038@58 {
    		compatible = "ti,tps659038";
    		reg = <0x58>;
    		interrupt-parent = <&gpio1>;
    		interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
    
    		#interrupt-cells = <2>;
    		interrupt-controller;
    
    		ti,system-power-controller;
    		ti,mux-pad1 = <8>;
    
    		tps659038_pmic {
    			compatible = "ti,tps659038-pmic";
    
    			regulators {
    				smps12_reg: smps12 {
    					/* VDD_MPU */
    					regulator-name = "smps12";
    					regulator-min-microvolt = < 850000>;
    					regulator-max-microvolt = <1250000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				smps3_reg: smps3 {
    					/* VDD_DDR */
    					regulator-name = "smps3";
    					regulator-min-microvolt = <1350000>;
    					regulator-max-microvolt = <1350000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				smps45_reg: smps45 {
    					/* VDD_DSPEVE, VDD_IVA, VDD_GPU */
    					regulator-name = "smps45";
    					regulator-min-microvolt = < 850000>;
    					regulator-max-microvolt = <1250000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				smps6_reg: smps6 {
    					/* VDD_CORE */
    					regulator-name = "smps6";
    					regulator-min-microvolt = <850000>;
    					regulator-max-microvolt = <1150000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				/* SMPS7 unused */
    
    				smps8_reg: smps8 {
    					/* VDD_1V8 */
    					regulator-name = "smps8";
    					regulator-min-microvolt = <1800000>;
    					regulator-max-microvolt = <1800000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				/* SMPS9 unused */
    
    				ldo1_reg: ldo1 {
    					/* VDD_SD / VDDSHV8  */
    					regulator-name = "ldo1";
    					regulator-min-microvolt = <1800000>;
    					regulator-max-microvolt = <3300000>;
    					regulator-boot-on;
    					regulator-always-on;
    				};
    
    				ldo2_reg: ldo2 {
    					/* VDD_SHV5 */
    					regulator-name = "ldo2";
    					regulator-min-microvolt = <3300000>;
    					regulator-max-microvolt = <3300000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				ldo3_reg: ldo3 {
    					/* VDDA_1V8_PHYA */
    					regulator-name = "ldo3";
    					regulator-min-microvolt = <1800000>;
    					regulator-max-microvolt = <1800000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				ldo4_reg: ldo4 {
    					/* VDDA_1V8_PHYB */
    					regulator-name = "ldo4";
    					regulator-min-microvolt = <1800000>;
    					regulator-max-microvolt = <1800000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				ldo9_reg: ldo9 {
    					/* VDD_RTC */
    					regulator-name = "ldo9";
    					regulator-min-microvolt = <1050000>;
    					regulator-max-microvolt = <1050000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				ldoln_reg: ldoln {
    					/* VDDA_1V8_PLL */
    					regulator-name = "ldoln";
    					regulator-min-microvolt = <1800000>;
    					regulator-max-microvolt = <1800000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				ldousb_reg: ldousb {
    					/* VDDA_3V_USB: VDDA_USBHS33 */
    					regulator-name = "ldousb";
    					regulator-min-microvolt = <3300000>;
    					regulator-max-microvolt = <3300000>;
    					regulator-boot-on;
    				};
    
    				regen1: regen1 {
    					/* VDD_3V3_ON */
    					regulator-name = "regen1";
    					regulator-boot-on;
    					regulator-always-on;
    				};
    			};
    		};
    
    		tps659038_rtc: tps659038_rtc {
    			compatible = "ti,palmas-rtc";
    			interrupt-parent = <&tps659038>;
    			interrupts = <8 IRQ_TYPE_EDGE_FALLING>;
    			wakeup-source;
    		};
    
    		tps659038_pwr_button: tps659038_pwr_button {
    			compatible = "ti,palmas-pwrbutton";
    			interrupt-parent = <&tps659038>;
    			interrupts = <1 IRQ_TYPE_EDGE_FALLING>;
    			wakeup-source;
    			ti,palmas-long-press-seconds = <12>;
    		};
    
    		tps659038_gpio: tps659038_gpio {
    			compatible = "ti,palmas-gpio";
    			gpio-controller;
    			#gpio-cells = <2>;
    		};
    
    		extcon_usb2: tps659038_usb {
    			compatible = "ti,palmas-usb-vid";
    			ti,enable-vbus-detection;
    			interrupts-extended = <&gpio4 21 IRQ_TYPE_EDGE_RISING>;
    		};
    
    	};
    
    };
    
    &i2c3 {
    	status = "okay";
    	clock-frequency = <400000>;
    
    	mcp_rtc: rtc@6f {
    		compatible = "microchip,mcp7941x";
    		reg = <0x6f>;
    		interrupts-extended = <&crossbar_mpu GIC_SPI 2 IRQ_TYPE_EDGE_RISING>,
    				      <&dra7_pmx_core 0x424>;
    
    		vcc-supply = <&vdd_3v3>;
    		wakeup-source;
    	};
    };
    
    &i2c5 {
            status = "disabled";
            clock-frequency = <400000>;
    };
    
    &gpio7 {
    	ti,no-reset-on-init;
    	ti,no-idle-on-init;
    };
    
    &cpu0 {
    	cpu0-voltdm = <&smps12_reg>;
    	voltage-tolerance = <1>;
    };
    
    &uart3 {
    	status = "okay";
    	interrupts-extended = <&crossbar_mpu GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>,
    			      <&dra7_pmx_core 0x3f8>;
    };
    
    &mac {
    	status = "okay";
            pinctrl-0 = <&cpsw_pins_default>;
            pinctrl-1 = <&cpsw_pins_sleep>;
    	dual_emac;
    };
    
    &phy_sel {
    	rmii-clock-ext;
    };
    
    &cpsw_emac0 {
    	phy_id = <&davinci_mdio>, <1>;
    	phy-mode = "rmii";
    	dual_emac_res_vlan = <1>;
    	fixed-link {
    	        speed = <100>;
                    full-duplex;
                    pause;
            };
    
    };
    
    &cpsw_emac1 {
    	status = "disabled";
    	phy_id = <&davinci_mdio>, <2>;
    	phy-mode = "rgmii";
    	dual_emac_res_vlan = <2>;
    };
    
    &mmc1 {
    	status = "okay";
    
    	pinctrl-names = "default", "hs";
    	pinctrl-0 = <&mmc1_pins_default>;
    	pinctrl-1 = <&mmc1_pins_hs>;
    
    	vmmc-supply = <&ldo1_reg>;
    	bus-width = <4>;
    	cd-gpios = <&gpio6 27 0>; /* gpio 219 */
    	max-frequency = <96000000>;
    	/delete-property/ sd-uhs-sdr104;
    	/delete-property/ sd-uhs-sdr50;
    	/delete-property/ sd-uhs-ddr50;
    	/delete-property/ sd-uhs-sdr25;
    	/delete-property/ sd-uhs-sdr12;
    };
    
    &mmc2 {
    	status = "okay";
    
    	pinctrl-names = "default", "hs", "ddr_1_8v";
    	pinctrl-0 = <&mmc2_pins_default>;
    	pinctrl-1 = <&mmc2_pins_hs>;
    	pinctrl-2 = <&mmc2_pins_ddr_1_8v &mmc2_iodelay_ddr_1_8v_conf>;
    
    	vmmc-supply = <&vdd_3v3>;
    	bus-width = <8>;
    	ti,non-removable;
    	cap-mmc-dual-data-rate;
    	max-frequency = <96000000>;
    	/delete-property/ mmc-hs200-1_8v;
    };
    
    &sata {
    	status = "okay";
    };
    
    &usb2_phy1 {
    	phy-supply = <&ldousb_reg>;
    };
    
    &usb2_phy2 {
    	phy-supply = <&ldousb_reg>;
    };
    
    &usb1 {
    	dr_mode = "host";
    };
    
    &omap_dwc3_1 {
    	extcon = <&extcon_usb1>;
    };
    
    &omap_dwc3_2 {
    	extcon = <&extcon_usb2>;
    };
    
    &usb2 {
    	/*
    	 * Stand alone usage is peripheral only.
    	 * However, with some resistor modifications
    	 * this port can be used via expansion connectors
    	 * as "host" or "dual-role". If so, provide
    	 * the necessary dr_mode override in the expansion
    	 * board's DT.
    	 */
    	dr_mode = "host";
    };
    
    &dss {
    	status = "ok";
    
    	vdda_video-supply = <&ldoln_reg>;
    };
    

  • Dexter,

    I am not in the part of the schematic review process. Can you please post the usb portion of the schematics? I'd like to see your change to the usb2 port.
  • Bin,

    Attached is USB portion of the schematic.  Note that I am currently concerned with USB2.  USB1 (configured as a 3.0 host) will not come online until our next board revision. 

    I have also tried a couple of other things that may be of value. 

    1) I moved to u-boot from the ti-sdk 2.0.1.07 only changed the dmm_lisa_regs value to match our RAM configuration.  I did this because some online reports by Robert Nelson implied that some version of u-boot would "break" USB for the kernel.  My test results are identical with u-boot from ti-sdk and u-boot from tag 2015.07 from git.ti.com/ti-u-boot.git

    2) I modified the device tree to remove the palmas extcon usb, as this more closely matches our schematic.  Results are the same with the dts i previously posted and the one posted here now.

    Finally, we are doing a small board revision for unrelated issues.  If we need to change the USB schematic it would be very important to have that finalized by early next week.

    /*
     * Copyright (C) 2014 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.
     */
    /dts-v1/;
    
    #include "dra74x.dtsi"
    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/interrupt-controller/irq.h>
    
    / {
    	model = "TI AM5728 BeagleBoard-X15";
    	compatible = "ti,am572x-beagle-x15", "ti,am5728", "ti,dra742", "ti,dra74", "ti,dra7";
    
    	aliases {
    		rtc0 = &mcp_rtc;
    		rtc2 = &rtc;
    	};
    
    	memory {
    		device_type = "memory";
    		reg = <0x0 0x80000000 0x0 0x80000000>;
    	};
    	
    	vdd_3v3: fixedregulator-vdd_3v3 {
    		compatible = "regulator-fixed";
    		regulator-name = "vdd_3v3";
    		vin-supply = <&regen1>;
    		regulator-min-microvolt = <3300000>;
    		regulator-max-microvolt = <3300000>;
    	};
    
    	aic_dvdd: fixedregulator-aic_dvdd {
    		compatible = "regulator-fixed";
    		regulator-name = "aic_dvdd_fixed";
    		vin-supply = <&vdd_3v3>;
    		regulator-min-microvolt = <1800000>;
    		regulator-max-microvolt = <1800000>;
    	};
    
    	vtt_fixed: fixedregulator-vtt {
    		/* TPS51200 */
    		compatible = "regulator-fixed";
    		regulator-name = "vtt_fixed";
    		vin-supply = <&smps3_reg>;
    		regulator-min-microvolt = <3300000>;
    		regulator-max-microvolt = <3300000>;
    		regulator-always-on;
    		regulator-boot-on;
    		enable-active-high;
    		gpio = <&gpio7 11 GPIO_ACTIVE_HIGH>;
    	};
    
    	leds {
    		compatible = "gpio-leds";
    		led@0 {
    			label = "beagle-x15:usr0";
    			gpios = <&gpio4 6 GPIO_ACTIVE_HIGH>;
    			linux,default-trigger = "heartbeat";
    			default-state = "off";
    		};
    
    		led@1 {
    			label = "beagle-x15:usr1";
    			gpios = <&gpio4 7 GPIO_ACTIVE_HIGH>;
    			linux,default-trigger = "cpu0";
    			default-state = "off";
    		};
    
    		led@2 {
    			label = "beagle-x15:usr2";
    			gpios = <&gpio4 8 GPIO_ACTIVE_HIGH>;
    			linux,default-trigger = "mmc0";
    			default-state = "off";
    		};
    
    		led@3 {
    			label = "beagle-x15:usr3";
    			gpios = <&gpio4 9 GPIO_ACTIVE_HIGH>;
    			linux,default-trigger = "ide-disk";
    			default-state = "off";
    		};
    	};
    
    	extcon_usb1: extcon_usb1 {
    		compatible = "linux,extcon-usb-gpio";
    		id-gpio = <&gpio7 25 GPIO_ACTIVE_HIGH>;
    	};
    };
    
    &dra7_pmx_core {
    	leds_pins_default: leds_pins_default {
    		pinctrl-single,pins = <
    			0x3a8 (PIN_OUTPUT | MUX_MODE14)	/* spi1_d1.gpio7_8 */
    			0x3ac (PIN_OUTPUT | MUX_MODE14)	/* spi1_d0.gpio7_9 */
    			0x3c0 (PIN_OUTPUT | MUX_MODE14)	/* spi2_sclk.gpio7_14 */
    			0x3c4 (PIN_OUTPUT | MUX_MODE14)	/* spi2_d1.gpio7_15 */
    		>;
    	};
    
    	i2c1_pins_default: i2c1_pins_default {
    		pinctrl-single,pins = <
    			0x400 (PIN_INPUT_PULLUP | MUX_MODE0)	/* i2c1_sda.sda */
    			0x404 (PIN_INPUT_PULLUP | MUX_MODE0)	/* i2c1_scl.scl */
    		>;
    	};
    
    	i2c3_pins_default: i2c3_pins_default {
    		pinctrl-single,pins = <
    			0x2a4 (PIN_INPUT| MUX_MODE10)	/* mcasp1_aclkx.i2c3_sda */
    			0x2a8 (PIN_INPUT| MUX_MODE10)	/* mcasp1_fsx.i2c3_scl */
    		>;
    	};
    
    	uart3_pins_default: uart3_pins_default {
    		pinctrl-single,pins = <
    			0x3f8 (PIN_INPUT_SLEW | MUX_MODE2) /* uart2_ctsn.uart3_rxd */
    			0x3fc (PIN_INPUT_SLEW | MUX_MODE1) /* uart2_rtsn.uart3_txd */
    		>;
    	};
    
    	mmc1_pins_default: mmc1_pins_default {
    		pinctrl-single,pins = <
    			0x354 (PIN_INPUT_PULLUP | MUX_MODE0) /* mmc1_clk.clk */
    			0x358 (PIN_INPUT_PULLUP | MUX_MODE0) /* mmc1_cmd.cmd */
    			0x35c (PIN_INPUT_PULLUP | MUX_MODE0) /* mmc1_dat0.dat0 */
    			0x360 (PIN_INPUT_PULLUP | MUX_MODE0) /* mmc1_dat1.dat1 */
    			0x364 (PIN_INPUT_PULLUP | MUX_MODE0) /* mmc1_dat2.dat2 */
    			0x368 (PIN_INPUT_PULLUP | MUX_MODE0) /* mmc1_dat3.dat3 */
    		>;
    	};
    
    	mmc1_pins_hs: pinmux_mmc1_hs_pins {
    		pinctrl-single,pins = <
    			0x354 (PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0)	/* mmc1_clk.clk */
    			0x358 (PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0)	/* mmc1_cmd.cmd */
    			0x35c (PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0)	/* mmc1_dat0.dat0 */
    			0x360 (PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0)	/* mmc1_dat1.dat1 */
    			0x364 (PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0)	/* mmc1_dat2.dat2 */
    			0x368 (PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0)	/* mmc1_dat3.dat3 */
    		>;
    	};
    
    	mmc2_pins_default: mmc2_pins_default {
    		pinctrl-single,pins = <
    			0x9c (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a23.mmc2_clk */
    			0xb0 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_cs1.mmc2_cmd */
    			0xa0 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a24.mmc2_dat0 */
    			0xa4 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a25.mmc2_dat1 */
    			0xa8 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a26.mmc2_dat2 */
    			0xac (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a27.mmc2_dat3 */
    			0x8c (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a19.mmc2_dat4 */
    			0x90 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a20.mmc2_dat5 */
    			0x94 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a21.mmc2_dat6 */
    			0x98 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a22.mmc2_dat7 */
    		>;
    	};
    
    	mmc2_pins_hs: mmc2_pins_hs {
    		pinctrl-single,pins = <
    			0x9c (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a23.mmc2_clk */
    			0xb0 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_cs1.mmc2_cmd */
    			0xa0 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a24.mmc2_dat0 */
    			0xa4 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a25.mmc2_dat1 */
    			0xa8 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a26.mmc2_dat2 */
    			0xac (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a27.mmc2_dat3 */
    			0x8c (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a19.mmc2_dat4 */
    			0x90 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a20.mmc2_dat5 */
    			0x94 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a21.mmc2_dat6 */
    			0x98 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a22.mmc2_dat7 */
    		>;
    	};
    
    	mmc2_pins_ddr_1_8v: pinmux_mmc2_ddr_1_8v_pins {
    		pinctrl-single,pins = <
    			0x9c (PIN_INPUT_PULLUP | MANUAL_MODE | MUX_MODE1) /* gpmc_a23.mmc2_clk */
    			0xb0 (PIN_INPUT_PULLUP | MANUAL_MODE | MUX_MODE1) /* gpmc_cs1.mmc2_cmd */
    			0xa0 (PIN_INPUT_PULLUP | MANUAL_MODE | MUX_MODE1) /* gpmc_a24.mmc2_dat0 */
    			0xa4 (PIN_INPUT_PULLUP | MANUAL_MODE | MUX_MODE1) /* gpmc_a25.mmc2_dat1 */
    			0xa8 (PIN_INPUT_PULLUP | MANUAL_MODE | MUX_MODE1) /* gpmc_a26.mmc2_dat2 */
    			0xac (PIN_INPUT_PULLUP | MANUAL_MODE | MUX_MODE1) /* gpmc_a27.mmc2_dat3 */
    			0x8c (PIN_INPUT_PULLUP | MANUAL_MODE | MUX_MODE1) /* gpmc_a19.mmc2_dat4 */
    			0x90 (PIN_INPUT_PULLUP | MANUAL_MODE | MUX_MODE1) /* gpmc_a20.mmc2_dat5 */
    			0x94 (PIN_INPUT_PULLUP | MANUAL_MODE | MUX_MODE1) /* gpmc_a21.mmc2_dat6 */
    			0x98 (PIN_INPUT_PULLUP | MANUAL_MODE | MUX_MODE1) /* gpmc_a22.mmc2_dat7 */
    		>;
    	};
    
    	cpsw_pins_default: cpsw_pins_default {
                    pinctrl-single,pins = < 
                            /* RMII 50 MHz reference clocked shared */
                            0x244 (PIN_INPUT_PULLDOWN | MUX_MODE0) /* rmii_mhz_50_clk */
    
                            /* RMII 1 RX Signals */
                            0x248 (PIN_INPUT_PULLDOWN  | MUX_MODE2) /* rmii1_crs */
                            0x24C (PIN_INPUT_PULLDOWN | MUX_MODE14) /* rmii1_rxer not used */
                            0x250 (PIN_INPUT_PULLDOWN  | MUX_MODE2) /* rmii1_rxd1 */
                            0x254 (PIN_INPUT_PULLDOWN  | MUX_MODE2) /* rmii1_rxd0 */
    
                            /* RMII 0 RX Signals */
                            0x258 (PIN_INPUT_PULLDOWN  | MUX_MODE1) /* rmii0_crs */
                            0x25C (PIN_INPUT_PULLDOWN | MUX_MODE14) /* rmii0_rxer not used */
                            0x260 (PIN_INPUT_PULLDOWN  | MUX_MODE1) /* rmii0_rxd1 */
                            0x264 (PIN_INPUT_PULLDOWN  | MUX_MODE1) /* rmii0_rxd0 */
    
                            /* RMII 1 TX Signals */
                            0x268 (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* rmii1_txen */
                            0x26C (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* rmii1_txd1 */
                            0x270 (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* rmii1_txd0 */
    
                            /* RMII 0 TX Signals */
                            0x274 (PIN_OUTPUT_PULLDOWN | MUX_MODE1) /* rmii0_txen */
                            0x278 (PIN_OUTPUT_PULLDOWN | MUX_MODE1) /* rmii0_txd1 */
                            0x27C (PIN_OUTPUT_PULLDOWN | MUX_MODE1) /* rmii0_txd0 */
                    >;
    
            };
    
            cpsw_pins_sleep: cpsw_pins_sleep {
                    pinctrl-single,pins = < 
                            /* RMII 50 MHz reference clocked shared */
                            0x244 (PIN_INPUT | MUX_MODE15) /* rmii_mhz_50_clk */
    
                            /* RMII 1 RX Signals */
                            0x248 (PIN_INPUT  | MUX_MODE15) /* rmii1_crs */
                            0x24C (PIN_INPUT_PULLDOWN | MUX_MODE14) /* rmii1_rxer not used */
                            0x250 (PIN_INPUT  | MUX_MODE15) /* rmii1_rxd1 */
                            0x254 (PIN_INPUT  | MUX_MODE15) /* rmii1_rxd0 */
    
                            /* RMII 0 RX Signals */
                            0x258 (PIN_INPUT  | MUX_MODE15) /* rmii0_crs */
                            0x25C (PIN_INPUT_PULLDOWN | MUX_MODE14) /* rmii0_rxer not used */
                            0x260 (PIN_INPUT  | MUX_MODE15) /* rmii0_rxd1 */
                            0x264 (PIN_INPUT  | MUX_MODE15) /* rmii0_rxd0 */
    
                            /* RMII 1 TX Signals */
                            0x268 (PIN_INPUT | MUX_MODE15) /* rmii1_txen */
                            0x26C (PIN_INPUT | MUX_MODE15) /* rmii1_txd1 */
                            0x270 (PIN_INPUT | MUX_MODE15) /* rmii1_txd0 */
    
                            /* RMII 0 TX Signals */
                            0x274 (PIN_INPUT | MUX_MODE15) /* rmii0_txen */
                            0x278 (PIN_INPUT | MUX_MODE15) /* rmii0_txd1 */
                            0x27C (PIN_INPUT | MUX_MODE15) /* rmii0_txd0 */
                    >;
            };
    };
    
    &dra7_iodelay_core {
    	mmc2_iodelay_ddr_1_8v_conf: mmc2_iodelay_ddr_1_8v_conf {
    		pinctrl-single,pins = <
    			0x18c (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A19_IN */
    			0x1a4 (A_DELAY(274) | G_DELAY(240))	/* CFG_GPMC_A20_IN */
    			0x1b0 (A_DELAY(0) | G_DELAY(60))	/* CFG_GPMC_A21_IN */
    			0x1bc (A_DELAY(0) | G_DELAY(60))	/* CFG_GPMC_A22_IN */
    			0x1c8 (A_DELAY(514) | G_DELAY(360))	/* CFG_GPMC_A23_IN */
    			0x1d4 (A_DELAY(187) | G_DELAY(120))	/* CFG_GPMC_A24_IN */
    			0x1e0 (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A25_IN */
    			0x1ec (A_DELAY(0) | G_DELAY(60))	/* CFG_GPMC_A26_IN */
    			0x1f8 (A_DELAY(121) | G_DELAY(60))	/* CFG_GPMC_A27_IN */
    			0x360 (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_CS1_IN */
    			0x190 (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A19_OEN */
    			0x194 (A_DELAY(174) | G_DELAY(0))	/* CFG_GPMC_A19_OUT */
    			0x1a8 (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A20_OEN */
    			0x1ac (A_DELAY(168) | G_DELAY(0))	/* CFG_GPMC_A20_OUT */
    			0x1b4 (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A21_OEN */
    			0x1b8 (A_DELAY(136) | G_DELAY(0))	/* CFG_GPMC_A21_OUT */
    			0x1c0 (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A22_OEN */
    			0x1c4 (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A22_OUT */
    			0x1d0 (A_DELAY(879) | G_DELAY(0))	/* CFG_GPMC_A23_OUT */
    			0x1d8 (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A24_OEN */
    			0x1dc (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A24_OUT */
    			0x1e4 (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A25_OEN */
    			0x1e8 (A_DELAY(34) | G_DELAY(0))	/* CFG_GPMC_A25_OUT */
    			0x1f0 (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A26_OEN */
    			0x1f4 (A_DELAY(120) | G_DELAY(0))	/* CFG_GPMC_A26_OUT */
    			0x1fc (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A27_OEN */
    			0x200 (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A27_OUT */
    			0x364 (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_CS1_OEN */
    			0x368 (A_DELAY(11) | G_DELAY(0))	/* CFG_GPMC_CS1_OUT */
    		>;
    	};
    };
    
    &i2c1 {
    	status = "okay";
    	clock-frequency = <400000>;
    
    	tps659038: tps659038@58 {
    		compatible = "ti,tps659038";
    		reg = <0x58>;
    		interrupt-parent = <&gpio1>;
    		interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
    
    		#interrupt-cells = <2>;
    		interrupt-controller;
    
    		ti,system-power-controller;
    		ti,mux-pad1 = <8>;
    
    		tps659038_pmic {
    			compatible = "ti,tps659038-pmic";
    
    			regulators {
    				smps12_reg: smps12 {
    					/* VDD_MPU */
    					regulator-name = "smps12";
    					regulator-min-microvolt = < 850000>;
    					regulator-max-microvolt = <1250000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				smps3_reg: smps3 {
    					/* VDD_DDR */
    					regulator-name = "smps3";
    					regulator-min-microvolt = <1350000>;
    					regulator-max-microvolt = <1350000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				smps45_reg: smps45 {
    					/* VDD_DSPEVE, VDD_IVA, VDD_GPU */
    					regulator-name = "smps45";
    					regulator-min-microvolt = < 850000>;
    					regulator-max-microvolt = <1250000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				smps6_reg: smps6 {
    					/* VDD_CORE */
    					regulator-name = "smps6";
    					regulator-min-microvolt = <850000>;
    					regulator-max-microvolt = <1150000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				/* SMPS7 unused */
    
    				smps8_reg: smps8 {
    					/* VDD_1V8 */
    					regulator-name = "smps8";
    					regulator-min-microvolt = <1800000>;
    					regulator-max-microvolt = <1800000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				/* SMPS9 unused */
    
    				ldo1_reg: ldo1 {
    					/* VDD_SD / VDDSHV8  */
    					regulator-name = "ldo1";
    					regulator-min-microvolt = <1800000>;
    					regulator-max-microvolt = <3300000>;
    					regulator-boot-on;
    					regulator-always-on;
    				};
    
    				ldo2_reg: ldo2 {
    					/* VDD_SHV5 */
    					regulator-name = "ldo2";
    					regulator-min-microvolt = <3300000>;
    					regulator-max-microvolt = <3300000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				ldo3_reg: ldo3 {
    					/* VDDA_1V8_PHYA */
    					regulator-name = "ldo3";
    					regulator-min-microvolt = <1800000>;
    					regulator-max-microvolt = <1800000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				ldo4_reg: ldo4 {
    					/* VDDA_1V8_PHYB */
    					regulator-name = "ldo4";
    					regulator-min-microvolt = <1800000>;
    					regulator-max-microvolt = <1800000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				ldo9_reg: ldo9 {
    					/* VDD_RTC */
    					regulator-name = "ldo9";
    					regulator-min-microvolt = <1050000>;
    					regulator-max-microvolt = <1050000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				ldoln_reg: ldoln {
    					/* VDDA_1V8_PLL */
    					regulator-name = "ldoln";
    					regulator-min-microvolt = <1800000>;
    					regulator-max-microvolt = <1800000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				ldousb_reg: ldousb {
    					/* VDDA_3V_USB: VDDA_USBHS33 */
    					regulator-name = "ldousb";
    					regulator-min-microvolt = <3300000>;
    					regulator-max-microvolt = <3300000>;
    					regulator-boot-on;
    				};
    
    				regen1: regen1 {
    					/* VDD_3V3_ON */
    					regulator-name = "regen1";
    					regulator-boot-on;
    					regulator-always-on;
    				};
    			};
    		};
    
    		tps659038_rtc: tps659038_rtc {
    			compatible = "ti,palmas-rtc";
    			interrupt-parent = <&tps659038>;
    			interrupts = <8 IRQ_TYPE_EDGE_FALLING>;
    			wakeup-source;
    		};
    
    		tps659038_pwr_button: tps659038_pwr_button {
    			compatible = "ti,palmas-pwrbutton";
    			interrupt-parent = <&tps659038>;
    			interrupts = <1 IRQ_TYPE_EDGE_FALLING>;
    			wakeup-source;
    			ti,palmas-long-press-seconds = <12>;
    		};
    
    		tps659038_gpio: tps659038_gpio {
    			compatible = "ti,palmas-gpio";
    			gpio-controller;
    			#gpio-cells = <2>;
    		};
    
    		/*extcon_usb2: tps659038_usb {
    			compatible = "ti,palmas-usb-vid";
    			ti,enable-vbus-detection;
    			interrupts-extended = <&gpio4 21 IRQ_TYPE_EDGE_RISING>;
    		};*/
    
    	};
    
    };
    
    &i2c3 {
    	status = "okay";
    	clock-frequency = <400000>;
    
    	mcp_rtc: rtc@6f {
    		compatible = "microchip,mcp7941x";
    		reg = <0x6f>;
    		interrupts-extended = <&crossbar_mpu GIC_SPI 2 IRQ_TYPE_EDGE_RISING>,
    				      <&dra7_pmx_core 0x424>;
    
    		vcc-supply = <&vdd_3v3>;
    		wakeup-source;
    	};
    };
    
    &i2c5 {
            status = "disabled";
            clock-frequency = <400000>;
    };
    
    &gpio7 {
    	ti,no-reset-on-init;
    	ti,no-idle-on-init;
    };
    
    &cpu0 {
    	cpu0-voltdm = <&smps12_reg>;
    	voltage-tolerance = <1>;
    };
    
    &uart3 {
    	status = "okay";
    	interrupts-extended = <&crossbar_mpu GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>,
    			      <&dra7_pmx_core 0x3f8>;
    };
    
    &mac {
    	status = "okay";
            pinctrl-0 = <&cpsw_pins_default>;
            pinctrl-1 = <&cpsw_pins_sleep>;
    	dual_emac;
    };
    
    &phy_sel {
    	rmii-clock-ext;
    };
    
    &cpsw_emac0 {
    	phy_id = <&davinci_mdio>, <1>;
    	phy-mode = "rmii";
    	dual_emac_res_vlan = <1>;
    	fixed-link {
    	        speed = <100>;
                    full-duplex;
                    pause;
            };
    
    };
    
    &cpsw_emac1 {
    	status = "disabled";
    	phy_id = <&davinci_mdio>, <2>;
    	phy-mode = "rgmii";
    	dual_emac_res_vlan = <2>;
    };
    
    &mmc1 {
    	status = "okay";
    
    	pinctrl-names = "default", "hs";
    	pinctrl-0 = <&mmc1_pins_default>;
    	pinctrl-1 = <&mmc1_pins_hs>;
    
    	vmmc-supply = <&ldo1_reg>;
    	bus-width = <4>;
    	cd-gpios = <&gpio6 27 0>; /* gpio 219 */
    	max-frequency = <96000000>;
    	/delete-property/ sd-uhs-sdr104;
    	/delete-property/ sd-uhs-sdr50;
    	/delete-property/ sd-uhs-ddr50;
    	/delete-property/ sd-uhs-sdr25;
    	/delete-property/ sd-uhs-sdr12;
    };
    
    &mmc2 {
    	status = "okay";
    
    	pinctrl-names = "default", "hs", "ddr_1_8v";
    	pinctrl-0 = <&mmc2_pins_default>;
    	pinctrl-1 = <&mmc2_pins_hs>;
    	pinctrl-2 = <&mmc2_pins_ddr_1_8v &mmc2_iodelay_ddr_1_8v_conf>;
    
    	vmmc-supply = <&vdd_3v3>;
    	bus-width = <8>;
    	ti,non-removable;
    	cap-mmc-dual-data-rate;
    	max-frequency = <96000000>;
    	/delete-property/ mmc-hs200-1_8v;
    };
    
    &sata {
    	status = "okay";
    };
    
    &usb2_phy1 {
    	phy-supply = <&ldousb_reg>;
    };
    
    &usb2_phy2 {
    	phy-supply = <&ldousb_reg>;
    };
    
    &usb1 {
    	dr_mode = "host";
    };
    
    &omap_dwc3_1 {
    	extcon = <&extcon_usb1>;
    };
    
    &omap_dwc3_2 {
    /*	extcon = <&extcon_usb2>;*/
    };
    
    &usb2 {
    	/*
    	 * Stand alone usage is peripheral only.
    	 * However, with some resistor modifications
    	 * this port can be used via expansion connectors
    	 * as "host" or "dual-role". If so, provide
    	 * the necessary dr_mode override in the expansion
    	 * board's DT.
    	 */
    	dr_mode = "host";
    };
    
    &dss {
    	status = "ok";
    
    	vdda_video-supply = <&ldoln_reg>;
    };
    

  • Dexter,


    I am unable to tell what exactly wrong, but it seems your system has something disabled which causes the access abort. I see your dts is quite different from am57xx-beagle-x15.dts, so it might be a problem in the dts you modified.

    BTY, I took the TI 4.1.y kernel and only changed usb2 dr_mode to host in dts, then I am able to run host mode on usb2 port of X15 Beagle board. Of cause, I have to add external power to vbus line.

  • I was hoping for a bit more direction in terms of what might be wrong in the device tree.

    Attached is a new device tree file that recreates the issue with a minimal number of changes to the device tree relative to the beagle x15.  My changes were as follows...

    1) disable hdmi.  My board does not have any hdmi.

    2) remove references to sound, i don't have sound and leaving it in the device tree causes unrelated crashes trying to probe mcasp3.  

    3) change usb2 dr_mode to host.

    I still get the same crash.

    Given my schematic, host only with no id connection and usb2_drvbus connecting directly to the switch without feedback through the PMIC can you help figure out what the devicetree should be?

    Thank you

    Dexter

    /*
     * Copyright (C) 2014 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.
     */
    /dts-v1/;
    
    #include "dra74x.dtsi"
    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/interrupt-controller/irq.h>
    
    / {
    	model = "TI AM5728 BeagleBoard-X15";
    	compatible = "ti,am572x-beagle-x15", "ti,am5728", "ti,dra742", "ti,dra74", "ti,dra7";
    
    	aliases {
    		rtc0 = &mcp_rtc;
    		rtc1 = &tps659038_rtc;
    		rtc2 = &rtc;
    		display0 = &hdmi0;
    
    		sound1 = &hdmi;
    	};
    
    	memory {
    		device_type = "memory";
    		reg = <0x0 0x80000000 0x0 0x80000000>;
    	};
    
    	reserved-memory {
    		#address-cells = <2>;
    		#size-cells = <2>;
    		ranges;
    
    		ipu2_cma_pool: ipu2_cma@95800000 {
    			compatible = "shared-dma-pool";
    			reg = <0x0 0x95800000 0x0 0x3800000>;
    			reusable;
    			status = "okay";
    		};
    
    		dsp1_cma_pool: dsp1_cma@99000000 {
    			compatible = "shared-dma-pool";
    			reg = <0x0 0x99000000 0x0 0x4000000>;
    			reusable;
    			status = "okay";
    		};
    
    		ipu1_cma_pool: ipu1_cma@9d000000 {
    			compatible = "shared-dma-pool";
    			reg = <0x0 0x9d000000 0x0 0x2000000>;
    			reusable;
    			status = "okay";
    		};
    
    		dsp2_cma_pool: dsp2_cma@9f000000 {
    			compatible = "shared-dma-pool";
    			reg = <0x0 0x9f000000 0x0 0x800000>;
    			reusable;
    			status = "okay";
    		};
    	};
    
    	vdd_3v3: fixedregulator-vdd_3v3 {
    		compatible = "regulator-fixed";
    		regulator-name = "vdd_3v3";
    		vin-supply = <&regen1>;
    		regulator-min-microvolt = <3300000>;
    		regulator-max-microvolt = <3300000>;
    	};
    
    	aic_dvdd: fixedregulator-aic_dvdd {
    		compatible = "regulator-fixed";
    		regulator-name = "aic_dvdd_fixed";
    		vin-supply = <&vdd_3v3>;
    		regulator-min-microvolt = <1800000>;
    		regulator-max-microvolt = <1800000>;
    	};
    
    	vtt_fixed: fixedregulator-vtt {
    		/* TPS51200 */
    		compatible = "regulator-fixed";
    		regulator-name = "vtt_fixed";
    		vin-supply = <&smps3_reg>;
    		regulator-min-microvolt = <3300000>;
    		regulator-max-microvolt = <3300000>;
    		regulator-always-on;
    		regulator-boot-on;
    		enable-active-high;
    		gpio = <&gpio7 11 GPIO_ACTIVE_HIGH>;
    	};
    
    	leds {
    		compatible = "gpio-leds";
    		led@0 {
    			label = "beagle-x15:usr0";
    			gpios = <&gpio4 6 GPIO_ACTIVE_HIGH>;
    			linux,default-trigger = "heartbeat";
    			default-state = "off";
    		};
    
    		led@1 {
    			label = "beagle-x15:usr1";
    			gpios = <&gpio4 7 GPIO_ACTIVE_HIGH>;
    			linux,default-trigger = "cpu0";
    			default-state = "off";
    		};
    
    		led@2 {
    			label = "beagle-x15:usr2";
    			gpios = <&gpio4 8 GPIO_ACTIVE_HIGH>;
    			linux,default-trigger = "mmc0";
    			default-state = "off";
    		};
    
    		led@3 {
    			label = "beagle-x15:usr3";
    			gpios = <&gpio4 9 GPIO_ACTIVE_HIGH>;
    			linux,default-trigger = "ide-disk";
    			default-state = "off";
    		};
    	};
    
    	gpio_fan: gpio_fan {
    		/* Based on 5v 500mA AFB02505HHB */
    		compatible = "gpio-fan";
    		gpios =  <&tps659038_gpio 2 GPIO_ACTIVE_HIGH>;
    		gpio-fan,speed-map = <0     0>,
    				     <13000 1>;
    		#cooling-cells = <2>;
    	};
    
    	extcon_usb1: extcon_usb1 {
    		compatible = "linux,extcon-usb-gpio";
    		id-gpio = <&gpio7 25 GPIO_ACTIVE_HIGH>;
    	};
    
    	hdmi0: connector {
    		compatible = "hdmi-connector";
    		label = "hdmi";
    
    		type = "a";
    
    		port {
    			hdmi_connector_in: endpoint {
    				remote-endpoint = <&tpd12s015_out>;
    			};
    		};
    	};
    
    	tpd12s015: encoder {
    		compatible = "ti,tpd12s015";
    
    		gpios = <&gpio7 10 GPIO_ACTIVE_HIGH>,	/* gpio7_10, CT CP HPD */
    			<&gpio6 28 GPIO_ACTIVE_HIGH>,	/* gpio6_28, LS OE */
    			<&gpio7 12 GPIO_ACTIVE_HIGH>;	/* gpio7_12/sp1_cs2, HPD */
    
    		ports {
    			#address-cells = <1>;
    			#size-cells = <0>;
    
    			port@0 {
    				reg = <0>;
    
    				tpd12s015_in: endpoint {
    					remote-endpoint = <&hdmi_out>;
    				};
    			};
    
    			port@1 {
    				reg = <1>;
    
    				tpd12s015_out: endpoint {
    					remote-endpoint = <&hdmi_connector_in>;
    				};
    			};
    		};
    	};
    };
    
    &dpll_dsp_ck {
    	assigned-clock-rates = <750000000>;
    };
    
    &dpll_dsp_m2_ck {
    	assigned-clock-rates = <750000000>;
    };
    
    &dpll_dsp_m3x2_ck {
    	assigned-clock-rates = <500000000>;
    };
    
    &dpll_iva_ck {
    	assigned-clock-rates = <1064000000>;
    };
    
    &dpll_iva_m2_ck {
    	assigned-clock-rates = <532000000>;
    };
    
    &dra7_pmx_core {
    	leds_pins_default: leds_pins_default {
    		pinctrl-single,pins = <
    			0x3a8 (PIN_OUTPUT | MUX_MODE14)	/* spi1_d1.gpio7_8 */
    			0x3ac (PIN_OUTPUT | MUX_MODE14)	/* spi1_d0.gpio7_9 */
    			0x3c0 (PIN_OUTPUT | MUX_MODE14)	/* spi2_sclk.gpio7_14 */
    			0x3c4 (PIN_OUTPUT | MUX_MODE14)	/* spi2_d1.gpio7_15 */
    		>;
    	};
    
    	i2c1_pins_default: i2c1_pins_default {
    		pinctrl-single,pins = <
    			0x400 (PIN_INPUT_PULLUP | MUX_MODE0)	/* i2c1_sda.sda */
    			0x404 (PIN_INPUT_PULLUP | MUX_MODE0)	/* i2c1_scl.scl */
    		>;
    	};
    
    	hdmi_pins: pinmux_hdmi_pins {
    		pinctrl-single,pins = <
    			0x408 (PIN_INPUT | MUX_MODE1)	/* i2c2_sda.hdmi1_ddc_scl */
    			0x40c (PIN_INPUT | MUX_MODE1)	/* i2c2_scl.hdmi1_ddc_sda */
    		>;
    	};
    
    	i2c3_pins_default: i2c3_pins_default {
    		pinctrl-single,pins = <
    			0x2a4 (PIN_INPUT| MUX_MODE10)	/* mcasp1_aclkx.i2c3_sda */
    			0x2a8 (PIN_INPUT| MUX_MODE10)	/* mcasp1_fsx.i2c3_scl */
    		>;
    	};
    
    	uart3_pins_default: uart3_pins_default {
    		pinctrl-single,pins = <
    			0x3f8 (PIN_INPUT_SLEW | MUX_MODE2) /* uart2_ctsn.uart3_rxd */
    			0x3fc (PIN_INPUT_SLEW | MUX_MODE1) /* uart2_rtsn.uart3_txd */
    		>;
    	};
    
    	mmc1_pins_default: mmc1_pins_default {
    		pinctrl-single,pins = <
    			0x354 (PIN_INPUT_PULLUP | MUX_MODE0) /* mmc1_clk.clk */
    			0x358 (PIN_INPUT_PULLUP | MUX_MODE0) /* mmc1_cmd.cmd */
    			0x35c (PIN_INPUT_PULLUP | MUX_MODE0) /* mmc1_dat0.dat0 */
    			0x360 (PIN_INPUT_PULLUP | MUX_MODE0) /* mmc1_dat1.dat1 */
    			0x364 (PIN_INPUT_PULLUP | MUX_MODE0) /* mmc1_dat2.dat2 */
    			0x368 (PIN_INPUT_PULLUP | MUX_MODE0) /* mmc1_dat3.dat3 */
    		>;
    	};
    
    	mmc1_pins_hs: pinmux_mmc1_hs_pins {
    		pinctrl-single,pins = <
    			0x354 (PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0)	/* mmc1_clk.clk */
    			0x358 (PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0)	/* mmc1_cmd.cmd */
    			0x35c (PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0)	/* mmc1_dat0.dat0 */
    			0x360 (PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0)	/* mmc1_dat1.dat1 */
    			0x364 (PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0)	/* mmc1_dat2.dat2 */
    			0x368 (PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0)	/* mmc1_dat3.dat3 */
    		>;
    	};
    
    	mmc2_pins_default: mmc2_pins_default {
    		pinctrl-single,pins = <
    			0x9c (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a23.mmc2_clk */
    			0xb0 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_cs1.mmc2_cmd */
    			0xa0 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a24.mmc2_dat0 */
    			0xa4 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a25.mmc2_dat1 */
    			0xa8 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a26.mmc2_dat2 */
    			0xac (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a27.mmc2_dat3 */
    			0x8c (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a19.mmc2_dat4 */
    			0x90 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a20.mmc2_dat5 */
    			0x94 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a21.mmc2_dat6 */
    			0x98 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a22.mmc2_dat7 */
    		>;
    	};
    
    	mmc2_pins_hs: mmc2_pins_hs {
    		pinctrl-single,pins = <
    			0x9c (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a23.mmc2_clk */
    			0xb0 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_cs1.mmc2_cmd */
    			0xa0 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a24.mmc2_dat0 */
    			0xa4 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a25.mmc2_dat1 */
    			0xa8 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a26.mmc2_dat2 */
    			0xac (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a27.mmc2_dat3 */
    			0x8c (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a19.mmc2_dat4 */
    			0x90 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a20.mmc2_dat5 */
    			0x94 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a21.mmc2_dat6 */
    			0x98 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a22.mmc2_dat7 */
    		>;
    	};
    
    	mmc2_pins_ddr_1_8v: pinmux_mmc2_ddr_1_8v_pins {
    		pinctrl-single,pins = <
    			0x9c (PIN_INPUT_PULLUP | MANUAL_MODE | MUX_MODE1) /* gpmc_a23.mmc2_clk */
    			0xb0 (PIN_INPUT_PULLUP | MANUAL_MODE | MUX_MODE1) /* gpmc_cs1.mmc2_cmd */
    			0xa0 (PIN_INPUT_PULLUP | MANUAL_MODE | MUX_MODE1) /* gpmc_a24.mmc2_dat0 */
    			0xa4 (PIN_INPUT_PULLUP | MANUAL_MODE | MUX_MODE1) /* gpmc_a25.mmc2_dat1 */
    			0xa8 (PIN_INPUT_PULLUP | MANUAL_MODE | MUX_MODE1) /* gpmc_a26.mmc2_dat2 */
    			0xac (PIN_INPUT_PULLUP | MANUAL_MODE | MUX_MODE1) /* gpmc_a27.mmc2_dat3 */
    			0x8c (PIN_INPUT_PULLUP | MANUAL_MODE | MUX_MODE1) /* gpmc_a19.mmc2_dat4 */
    			0x90 (PIN_INPUT_PULLUP | MANUAL_MODE | MUX_MODE1) /* gpmc_a20.mmc2_dat5 */
    			0x94 (PIN_INPUT_PULLUP | MANUAL_MODE | MUX_MODE1) /* gpmc_a21.mmc2_dat6 */
    			0x98 (PIN_INPUT_PULLUP | MANUAL_MODE | MUX_MODE1) /* gpmc_a22.mmc2_dat7 */
    		>;
    	};
    };
    
    &dra7_iodelay_core {
    	mmc2_iodelay_ddr_1_8v_conf: mmc2_iodelay_ddr_1_8v_conf {
    		pinctrl-single,pins = <
    			0x18c (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A19_IN */
    			0x1a4 (A_DELAY(274) | G_DELAY(240))	/* CFG_GPMC_A20_IN */
    			0x1b0 (A_DELAY(0) | G_DELAY(60))	/* CFG_GPMC_A21_IN */
    			0x1bc (A_DELAY(0) | G_DELAY(60))	/* CFG_GPMC_A22_IN */
    			0x1c8 (A_DELAY(514) | G_DELAY(360))	/* CFG_GPMC_A23_IN */
    			0x1d4 (A_DELAY(187) | G_DELAY(120))	/* CFG_GPMC_A24_IN */
    			0x1e0 (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A25_IN */
    			0x1ec (A_DELAY(0) | G_DELAY(60))	/* CFG_GPMC_A26_IN */
    			0x1f8 (A_DELAY(121) | G_DELAY(60))	/* CFG_GPMC_A27_IN */
    			0x360 (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_CS1_IN */
    			0x190 (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A19_OEN */
    			0x194 (A_DELAY(174) | G_DELAY(0))	/* CFG_GPMC_A19_OUT */
    			0x1a8 (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A20_OEN */
    			0x1ac (A_DELAY(168) | G_DELAY(0))	/* CFG_GPMC_A20_OUT */
    			0x1b4 (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A21_OEN */
    			0x1b8 (A_DELAY(136) | G_DELAY(0))	/* CFG_GPMC_A21_OUT */
    			0x1c0 (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A22_OEN */
    			0x1c4 (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A22_OUT */
    			0x1d0 (A_DELAY(879) | G_DELAY(0))	/* CFG_GPMC_A23_OUT */
    			0x1d8 (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A24_OEN */
    			0x1dc (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A24_OUT */
    			0x1e4 (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A25_OEN */
    			0x1e8 (A_DELAY(34) | G_DELAY(0))	/* CFG_GPMC_A25_OUT */
    			0x1f0 (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A26_OEN */
    			0x1f4 (A_DELAY(120) | G_DELAY(0))	/* CFG_GPMC_A26_OUT */
    			0x1fc (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A27_OEN */
    			0x200 (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A27_OUT */
    			0x364 (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_CS1_OEN */
    			0x368 (A_DELAY(11) | G_DELAY(0))	/* CFG_GPMC_CS1_OUT */
    		>;
    	};
    };
    
    &i2c1 {
    	status = "okay";
    	clock-frequency = <400000>;
    
    	tps659038: tps659038@58 {
    		compatible = "ti,tps659038";
    		reg = <0x58>;
    		interrupt-parent = <&gpio1>;
    		interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
    
    		#interrupt-cells = <2>;
    		interrupt-controller;
    
    		ti,system-power-controller;
    		ti,mux-pad1 = <8>;
    
    		tps659038_pmic {
    			compatible = "ti,tps659038-pmic";
    
    			regulators {
    				smps12_reg: smps12 {
    					/* VDD_MPU */
    					regulator-name = "smps12";
    					regulator-min-microvolt = < 850000>;
    					regulator-max-microvolt = <1250000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				smps3_reg: smps3 {
    					/* VDD_DDR */
    					regulator-name = "smps3";
    					regulator-min-microvolt = <1350000>;
    					regulator-max-microvolt = <1350000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				smps45_reg: smps45 {
    					/* VDD_DSPEVE, VDD_IVA, VDD_GPU */
    					regulator-name = "smps45";
    					regulator-min-microvolt = < 850000>;
    					regulator-max-microvolt = <1250000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				smps6_reg: smps6 {
    					/* VDD_CORE */
    					regulator-name = "smps6";
    					regulator-min-microvolt = <850000>;
    					regulator-max-microvolt = <1150000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				/* SMPS7 unused */
    
    				smps8_reg: smps8 {
    					/* VDD_1V8 */
    					regulator-name = "smps8";
    					regulator-min-microvolt = <1800000>;
    					regulator-max-microvolt = <1800000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				/* SMPS9 unused */
    
    				ldo1_reg: ldo1 {
    					/* VDD_SD / VDDSHV8  */
    					regulator-name = "ldo1";
    					regulator-min-microvolt = <1800000>;
    					regulator-max-microvolt = <3300000>;
    					regulator-boot-on;
    					regulator-always-on;
    				};
    
    				ldo2_reg: ldo2 {
    					/* VDD_SHV5 */
    					regulator-name = "ldo2";
    					regulator-min-microvolt = <3300000>;
    					regulator-max-microvolt = <3300000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				ldo3_reg: ldo3 {
    					/* VDDA_1V8_PHYA */
    					regulator-name = "ldo3";
    					regulator-min-microvolt = <1800000>;
    					regulator-max-microvolt = <1800000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				ldo4_reg: ldo4 {
    					/* VDDA_1V8_PHYB */
    					regulator-name = "ldo4";
    					regulator-min-microvolt = <1800000>;
    					regulator-max-microvolt = <1800000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				ldo9_reg: ldo9 {
    					/* VDD_RTC */
    					regulator-name = "ldo9";
    					regulator-min-microvolt = <1050000>;
    					regulator-max-microvolt = <1050000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				ldoln_reg: ldoln {
    					/* VDDA_1V8_PLL */
    					regulator-name = "ldoln";
    					regulator-min-microvolt = <1800000>;
    					regulator-max-microvolt = <1800000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				ldousb_reg: ldousb {
    					/* VDDA_3V_USB: VDDA_USBHS33 */
    					regulator-name = "ldousb";
    					regulator-min-microvolt = <3300000>;
    					regulator-max-microvolt = <3300000>;
    					regulator-boot-on;
    				};
    
    				regen1: regen1 {
    					/* VDD_3V3_ON */
    					regulator-name = "regen1";
    					regulator-boot-on;
    					regulator-always-on;
    				};
    			};
    		};
    
    		tps659038_rtc: tps659038_rtc {
    			compatible = "ti,palmas-rtc";
    			interrupt-parent = <&tps659038>;
    			interrupts = <8 IRQ_TYPE_EDGE_FALLING>;
    			wakeup-source;
    		};
    
    		tps659038_pwr_button: tps659038_pwr_button {
    			compatible = "ti,palmas-pwrbutton";
    			interrupt-parent = <&tps659038>;
    			interrupts = <1 IRQ_TYPE_EDGE_FALLING>;
    			wakeup-source;
    			ti,palmas-long-press-seconds = <12>;
    		};
    
    		tps659038_gpio: tps659038_gpio {
    			compatible = "ti,palmas-gpio";
    			gpio-controller;
    			#gpio-cells = <2>;
    		};
    
    		extcon_usb2: tps659038_usb {
    			compatible = "ti,palmas-usb-vid";
    			ti,enable-vbus-detection;
    			interrupts-extended = <&gpio4 21 IRQ_TYPE_EDGE_RISING>;
    		};
    
    	};
    
    	tmp102: tmp102@48 {
    		compatible = "ti,tmp102";
    		reg = <0x48>;
    		interrupt-parent = <&gpio7>;
    		interrupts = <16 IRQ_TYPE_LEVEL_LOW>;
    		#thermal-sensor-cells = <1>;
    	};
    
    };
    
    &i2c3 {
    	status = "okay";
    	clock-frequency = <400000>;
    
    	mcp_rtc: rtc@6f {
    		compatible = "microchip,mcp7941x";
    		reg = <0x6f>;
    		interrupts-extended = <&crossbar_mpu GIC_SPI 2 IRQ_TYPE_EDGE_RISING>,
    				      <&dra7_pmx_core 0x424>;
    
    		vcc-supply = <&vdd_3v3>;
    		wakeup-source;
    	};
    };
    
    &gpio7 {
    	ti,no-reset-on-init;
    	ti,no-idle-on-init;
    };
    
    &voltdm_mpu {
    	vdd-supply = <&smps12_reg>;
    };
    
    &voltdm_dspeve {
    	vdd-supply = <&smps45_reg>;
    };
    
    &voltdm_gpu {
    	vdd-supply = <&smps45_reg>;
    };
    
    &voltdm_ivahd {
    	vdd-supply = <&smps45_reg>;
    };
    
    &voltdm_core {
    	vdd-supply = <&smps6_reg>;
    };
    
    &cpu0 {
    	cpu0-voltdm = <&voltdm_mpu>;
    	voltage-tolerance = <1>;
    };
    
    &uart3 {
    	status = "okay";
    	interrupts-extended = <&crossbar_mpu GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>,
    			      <&dra7_pmx_core 0x3f8>;
    };
    
    &mac {
    	status = "okay";
    	dual_emac;
    };
    
    &cpsw_emac0 {
    	status = "disabled";
    	phy_id = <&davinci_mdio>, <1>;
    	phy-mode = "rgmii";
    	dual_emac_res_vlan = <1>;
    };
    
    &cpsw_emac1 {
    	status = "disabled";
    	phy_id = <&davinci_mdio>, <2>;
    	phy-mode = "rgmii";
    	dual_emac_res_vlan = <2>;
    };
    
    &mmc1 {
    	status = "okay";
    
    	pinctrl-names = "default", "hs";
    	pinctrl-0 = <&mmc1_pins_default>;
    	pinctrl-1 = <&mmc1_pins_hs>;
    
    	vmmc-supply = <&ldo1_reg>;
    	bus-width = <4>;
    	cd-gpios = <&gpio6 27 0>; /* gpio 219 */
    	max-frequency = <96000000>;
    	/delete-property/ sd-uhs-sdr104;
    	/delete-property/ sd-uhs-sdr50;
    	/delete-property/ sd-uhs-ddr50;
    	/delete-property/ sd-uhs-sdr25;
    	/delete-property/ sd-uhs-sdr12;
    };
    
    &mmc2 {
    	status = "okay";
    
    	pinctrl-names = "default", "hs", "ddr_1_8v";
    	pinctrl-0 = <&mmc2_pins_default>;
    	pinctrl-1 = <&mmc2_pins_hs>;
    	pinctrl-2 = <&mmc2_pins_ddr_1_8v &mmc2_iodelay_ddr_1_8v_conf>;
    
    	vmmc-supply = <&vdd_3v3>;
    	bus-width = <8>;
    	ti,non-removable;
    	cap-mmc-dual-data-rate;
    	max-frequency = <96000000>;
    	/delete-property/ mmc-hs200-1_8v;
    };
    
    &sata {
    	status = "okay";
    };
    
    &usb2_phy1 {
    	phy-supply = <&ldousb_reg>;
    };
    
    &usb2_phy2 {
    	phy-supply = <&ldousb_reg>;
    };
    
    &usb1 {
    	dr_mode = "host";
    };
    
    &omap_dwc3_1 {
    	extcon = <&extcon_usb1>;
    };
    
    &omap_dwc3_2 {
    	extcon = <&extcon_usb2>;
    };
    
    &usb2 {
    	/*
    	 * Stand alone usage is peripheral only.
    	 * However, with some resistor modifications
    	 * this port can be used via expansion connectors
    	 * as "host" or "dual-role". If so, provide
    	 * the necessary dr_mode override in the expansion
    	 * board's DT.
    	 */
    	dr_mode = "host";
    };
    
    &cpu_trips {
    	cpu_alert1: cpu_alert1 {
    		temperature = <50000>; /* millicelsius */
    		hysteresis = <2000>; /* millicelsius */
    		type = "active";
    	};
    };
    
    &cpu_cooling_maps {
    	map1 {
    		trip = <&cpu_alert1>;
    		cooling-device = <&gpio_fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
    	};
    };
    
    &thermal_zones {
    	board_thermal: board_thermal {
    		polling-delay-passive = <1250>; /* milliseconds */
    		polling-delay = <1500>; /* milliseconds */
    
    				/* sensor       ID */
    		thermal-sensors = <&tmp102     0>;
    
    		board_trips: trips {
    			board_alert0: board_alert {
    				temperature = <40000>; /* millicelsius */
    				hysteresis = <2000>; /* millicelsius */
    				type = "active";
    			};
    
    			board_crit: board_crit {
    				temperature = <105000>; /* millicelsius */
    				hysteresis = <0>; /* millicelsius */
    				type = "critical";
    			};
    		};
    
    		board_cooling_maps: cooling-maps {
    			map0 {
    				trip = <&board_alert0>;
    				cooling-device =
    				  <&gpio_fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
    			};
    		};
           };
    };
    
    &dss {
    	status = "ok";
    
    	vdda_video-supply = <&ldoln_reg>;
    };
    
    &hdmi {
    	status = "disabled";
    	vdda-supply = <&ldo4_reg>;
    
    	pinctrl-names = "default";
    	pinctrl-0 = <&hdmi_pins>;
    
    	port {
    		hdmi_out: endpoint {
    			remote-endpoint = <&tpd12s015_in>;
    		};
    	};
    };
    
    &rtc {
    	status = "okay";
    };
    
    &cpu_alert0 {
    	temperature = <90000>; /* milliCelsius */
    };
    
    &cpu_crit {
    	temperature = <105000>; /* milliCelsius */
    };
    
    &gpu_crit {
    	temperature = <105000>; /* milliCelsius */
    };
    
    &core_crit {
    	temperature = <105000>; /* milliCelsius */
    };
    
    &dspeve_crit {
    	temperature = <105000>; /* milliCelsius */
    };
    
    &iva_crit {
    	temperature = <105000>; /* milliCelsius */
    };
    
    &mailbox3 {
    	status = "okay";
    	mbox_pru1_0: mbox_pru1_0 {
    		status = "okay";
    	};
    	mbox_pru1_1: mbox_pru1_1 {
    		status = "okay";
    	};
    };
    
    &mailbox4 {
    	status = "okay";
    	mbox_pru2_0: mbox_pru2_0 {
    		status = "okay";
    	};
    	mbox_pru2_1: mbox_pru2_1 {
    		status = "okay";
    	};
    };
    
    &mailbox5 {
    	status = "okay";
    	mbox_ipu1_ipc3x: mbox_ipu1_ipc3x {
    		status = "okay";
    	};
    	mbox_dsp1_ipc3x: mbox_dsp1_ipc3x {
    		status = "okay";
    	};
    };
    
    &mailbox6 {
    	status = "okay";
    	mbox_ipu2_ipc3x: mbox_ipu2_ipc3x {
    		status = "okay";
    	};
    	mbox_dsp2_ipc3x: mbox_dsp2_ipc3x {
    		status = "okay";
    	};
    };
    
    &mmu0_dsp1 {
    	status = "okay";
    };
    
    &mmu1_dsp1 {
    	status = "okay";
    };
    
    &mmu0_dsp2 {
    	status = "okay";
    };
    
    &mmu1_dsp2 {
    	status = "okay";
    };
    
    &mmu_ipu1 {
    	status = "okay";
    };
    
    &mmu_ipu2 {
    	status = "okay";
    };
    
    &ipu2 {
    	status = "okay";
    	memory-region = <&ipu2_cma_pool>;
    	mboxes = <&mailbox6 &mbox_ipu2_ipc3x>;
    	timers = <&timer3>;
    	watchdog-timers = <&timer4>, <&timer9>;
    };
    
    &ipu1 {
    	status = "okay";
    	memory-region = <&ipu1_cma_pool>;
    	mboxes = <&mailbox5 &mbox_ipu1_ipc3x>;
    	timers = <&timer11>;
    };
    
    &dsp1 {
    	status = "okay";
    	memory-region = <&dsp1_cma_pool>;
    	mboxes = <&mailbox5 &mbox_dsp1_ipc3x>;
    	timers = <&timer5>;
    };
    
    &dsp2 {
    	status = "okay";
    	memory-region = <&dsp2_cma_pool>;
    	mboxes = <&mailbox6 &mbox_dsp2_ipc3x>;
    	timers = <&timer6>;
    };
    
    &pruss1 {
    	status = "okay";
    	pru1_0: pru0@4b234000 {
    		mboxes = <&mailbox3 &mbox_pru1_0>;
    		status = "okay";
    	};
    
    	pru1_1: pru1@4b238000 {
    		mboxes = <&mailbox3 &mbox_pru1_1>;
    		status = "okay";
    	};
    };
    
    &pruss2 {
    	status = "okay";
    	pru2_0: pru0@4b2b4000 {
    		mboxes = <&mailbox4 &mbox_pru2_0>;
    		status = "okay";
    	};
    
    	pru2_1: pru1@4b2b8000 {
    		mboxes = <&mailbox4 &mbox_pru2_1>;
    		status = "okay";
    	};
    };
    

  • /*
     * Copyright (C) 2014 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.
     */
    /dts-v1/;
    
    #include "dra74x.dtsi"
    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/interrupt-controller/irq.h>
    
    / {
    	model = "TI AM5728 BeagleBoard-X15";
    	compatible = "ti,am572x-beagle-x15", "ti,am5728", "ti,dra742", "ti,dra74", "ti,dra7";
    
    	aliases {
    		rtc0 = &mcp_rtc;
    		rtc1 = &tps659038_rtc;
    		rtc2 = &rtc;
    		display0 = &hdmi0;
    
    		sound1 = &hdmi;
    	};
    
    	memory {
    		device_type = "memory";
    		reg = <0x0 0x80000000 0x0 0x80000000>;
    	};
    
    	reserved-memory {
    		#address-cells = <2>;
    		#size-cells = <2>;
    		ranges;
    
    		ipu2_cma_pool: ipu2_cma@95800000 {
    			compatible = "shared-dma-pool";
    			reg = <0x0 0x95800000 0x0 0x3800000>;
    			reusable;
    			status = "okay";
    		};
    
    		dsp1_cma_pool: dsp1_cma@99000000 {
    			compatible = "shared-dma-pool";
    			reg = <0x0 0x99000000 0x0 0x4000000>;
    			reusable;
    			status = "okay";
    		};
    
    		ipu1_cma_pool: ipu1_cma@9d000000 {
    			compatible = "shared-dma-pool";
    			reg = <0x0 0x9d000000 0x0 0x2000000>;
    			reusable;
    			status = "okay";
    		};
    
    		dsp2_cma_pool: dsp2_cma@9f000000 {
    			compatible = "shared-dma-pool";
    			reg = <0x0 0x9f000000 0x0 0x800000>;
    			reusable;
    			status = "okay";
    		};
    	};
    
    	vdd_3v3: fixedregulator-vdd_3v3 {
    		compatible = "regulator-fixed";
    		regulator-name = "vdd_3v3";
    		vin-supply = <&regen1>;
    		regulator-min-microvolt = <3300000>;
    		regulator-max-microvolt = <3300000>;
    	};
    
    	aic_dvdd: fixedregulator-aic_dvdd {
    		compatible = "regulator-fixed";
    		regulator-name = "aic_dvdd_fixed";
    		vin-supply = <&vdd_3v3>;
    		regulator-min-microvolt = <1800000>;
    		regulator-max-microvolt = <1800000>;
    	};
    
    	vtt_fixed: fixedregulator-vtt {
    		/* TPS51200 */
    		compatible = "regulator-fixed";
    		regulator-name = "vtt_fixed";
    		vin-supply = <&smps3_reg>;
    		regulator-min-microvolt = <3300000>;
    		regulator-max-microvolt = <3300000>;
    		regulator-always-on;
    		regulator-boot-on;
    		enable-active-high;
    		gpio = <&gpio7 11 GPIO_ACTIVE_HIGH>;
    	};
    
    	leds {
    		compatible = "gpio-leds";
    		led@0 {
    			label = "beagle-x15:usr0";
    			gpios = <&gpio4 6 GPIO_ACTIVE_HIGH>;
    			linux,default-trigger = "heartbeat";
    			default-state = "off";
    		};
    
    		led@1 {
    			label = "beagle-x15:usr1";
    			gpios = <&gpio4 7 GPIO_ACTIVE_HIGH>;
    			linux,default-trigger = "cpu0";
    			default-state = "off";
    		};
    
    		led@2 {
    			label = "beagle-x15:usr2";
    			gpios = <&gpio4 8 GPIO_ACTIVE_HIGH>;
    			linux,default-trigger = "mmc0";
    			default-state = "off";
    		};
    
    		led@3 {
    			label = "beagle-x15:usr3";
    			gpios = <&gpio4 9 GPIO_ACTIVE_HIGH>;
    			linux,default-trigger = "ide-disk";
    			default-state = "off";
    		};
    	};
    
    	gpio_fan: gpio_fan {
    		/* Based on 5v 500mA AFB02505HHB */
    		compatible = "gpio-fan";
    		gpios =  <&tps659038_gpio 2 GPIO_ACTIVE_HIGH>;
    		gpio-fan,speed-map = <0     0>,
    				     <13000 1>;
    		#cooling-cells = <2>;
    	};
    
    	extcon_usb1: extcon_usb1 {
    		compatible = "linux,extcon-usb-gpio";
    		id-gpio = <&gpio7 25 GPIO_ACTIVE_HIGH>;
    	};
    
    	hdmi0: connector {
    		compatible = "hdmi-connector";
    		label = "hdmi";
    
    		type = "a";
    
    		port {
    			hdmi_connector_in: endpoint {
    				remote-endpoint = <&tpd12s015_out>;
    			};
    		};
    	};
    
    	tpd12s015: encoder {
    		compatible = "ti,tpd12s015";
    
    		gpios = <&gpio7 10 GPIO_ACTIVE_HIGH>,	/* gpio7_10, CT CP HPD */
    			<&gpio6 28 GPIO_ACTIVE_HIGH>,	/* gpio6_28, LS OE */
    			<&gpio7 12 GPIO_ACTIVE_HIGH>;	/* gpio7_12/sp1_cs2, HPD */
    
    		ports {
    			#address-cells = <1>;
    			#size-cells = <0>;
    
    			port@0 {
    				reg = <0>;
    
    				tpd12s015_in: endpoint {
    					remote-endpoint = <&hdmi_out>;
    				};
    			};
    
    			port@1 {
    				reg = <1>;
    
    				tpd12s015_out: endpoint {
    					remote-endpoint = <&hdmi_connector_in>;
    				};
    			};
    		};
    	};
    };
    
    &dpll_dsp_ck {
    	assigned-clock-rates = <750000000>;
    };
    
    &dpll_dsp_m2_ck {
    	assigned-clock-rates = <750000000>;
    };
    
    &dpll_dsp_m3x2_ck {
    	assigned-clock-rates = <500000000>;
    };
    
    &dpll_iva_ck {
    	assigned-clock-rates = <1064000000>;
    };
    
    &dpll_iva_m2_ck {
    	assigned-clock-rates = <532000000>;
    };
    
    &dra7_pmx_core {
    	leds_pins_default: leds_pins_default {
    		pinctrl-single,pins = <
    			0x3a8 (PIN_OUTPUT | MUX_MODE14)	/* spi1_d1.gpio7_8 */
    			0x3ac (PIN_OUTPUT | MUX_MODE14)	/* spi1_d0.gpio7_9 */
    			0x3c0 (PIN_OUTPUT | MUX_MODE14)	/* spi2_sclk.gpio7_14 */
    			0x3c4 (PIN_OUTPUT | MUX_MODE14)	/* spi2_d1.gpio7_15 */
    		>;
    	};
    
    	i2c1_pins_default: i2c1_pins_default {
    		pinctrl-single,pins = <
    			0x400 (PIN_INPUT_PULLUP | MUX_MODE0)	/* i2c1_sda.sda */
    			0x404 (PIN_INPUT_PULLUP | MUX_MODE0)	/* i2c1_scl.scl */
    		>;
    	};
    
    	hdmi_pins: pinmux_hdmi_pins {
    		pinctrl-single,pins = <
    			0x408 (PIN_INPUT | MUX_MODE1)	/* i2c2_sda.hdmi1_ddc_scl */
    			0x40c (PIN_INPUT | MUX_MODE1)	/* i2c2_scl.hdmi1_ddc_sda */
    		>;
    	};
    
    	i2c3_pins_default: i2c3_pins_default {
    		pinctrl-single,pins = <
    			0x2a4 (PIN_INPUT| MUX_MODE10)	/* mcasp1_aclkx.i2c3_sda */
    			0x2a8 (PIN_INPUT| MUX_MODE10)	/* mcasp1_fsx.i2c3_scl */
    		>;
    	};
    
    	uart3_pins_default: uart3_pins_default {
    		pinctrl-single,pins = <
    			0x3f8 (PIN_INPUT_SLEW | MUX_MODE2) /* uart2_ctsn.uart3_rxd */
    			0x3fc (PIN_INPUT_SLEW | MUX_MODE1) /* uart2_rtsn.uart3_txd */
    		>;
    	};
    
    	mmc1_pins_default: mmc1_pins_default {
    		pinctrl-single,pins = <
    			0x354 (PIN_INPUT_PULLUP | MUX_MODE0) /* mmc1_clk.clk */
    			0x358 (PIN_INPUT_PULLUP | MUX_MODE0) /* mmc1_cmd.cmd */
    			0x35c (PIN_INPUT_PULLUP | MUX_MODE0) /* mmc1_dat0.dat0 */
    			0x360 (PIN_INPUT_PULLUP | MUX_MODE0) /* mmc1_dat1.dat1 */
    			0x364 (PIN_INPUT_PULLUP | MUX_MODE0) /* mmc1_dat2.dat2 */
    			0x368 (PIN_INPUT_PULLUP | MUX_MODE0) /* mmc1_dat3.dat3 */
    		>;
    	};
    
    	mmc1_pins_hs: pinmux_mmc1_hs_pins {
    		pinctrl-single,pins = <
    			0x354 (PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0)	/* mmc1_clk.clk */
    			0x358 (PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0)	/* mmc1_cmd.cmd */
    			0x35c (PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0)	/* mmc1_dat0.dat0 */
    			0x360 (PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0)	/* mmc1_dat1.dat1 */
    			0x364 (PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0)	/* mmc1_dat2.dat2 */
    			0x368 (PIN_INPUT_PULLUP | MUX_VIRTUAL_MODE11 | MUX_MODE0)	/* mmc1_dat3.dat3 */
    		>;
    	};
    
    	mmc2_pins_default: mmc2_pins_default {
    		pinctrl-single,pins = <
    			0x9c (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a23.mmc2_clk */
    			0xb0 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_cs1.mmc2_cmd */
    			0xa0 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a24.mmc2_dat0 */
    			0xa4 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a25.mmc2_dat1 */
    			0xa8 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a26.mmc2_dat2 */
    			0xac (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a27.mmc2_dat3 */
    			0x8c (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a19.mmc2_dat4 */
    			0x90 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a20.mmc2_dat5 */
    			0x94 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a21.mmc2_dat6 */
    			0x98 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a22.mmc2_dat7 */
    		>;
    	};
    
    	mmc2_pins_hs: mmc2_pins_hs {
    		pinctrl-single,pins = <
    			0x9c (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a23.mmc2_clk */
    			0xb0 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_cs1.mmc2_cmd */
    			0xa0 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a24.mmc2_dat0 */
    			0xa4 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a25.mmc2_dat1 */
    			0xa8 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a26.mmc2_dat2 */
    			0xac (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a27.mmc2_dat3 */
    			0x8c (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a19.mmc2_dat4 */
    			0x90 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a20.mmc2_dat5 */
    			0x94 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a21.mmc2_dat6 */
    			0x98 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a22.mmc2_dat7 */
    		>;
    	};
    
    	mmc2_pins_ddr_1_8v: pinmux_mmc2_ddr_1_8v_pins {
    		pinctrl-single,pins = <
    			0x9c (PIN_INPUT_PULLUP | MANUAL_MODE | MUX_MODE1) /* gpmc_a23.mmc2_clk */
    			0xb0 (PIN_INPUT_PULLUP | MANUAL_MODE | MUX_MODE1) /* gpmc_cs1.mmc2_cmd */
    			0xa0 (PIN_INPUT_PULLUP | MANUAL_MODE | MUX_MODE1) /* gpmc_a24.mmc2_dat0 */
    			0xa4 (PIN_INPUT_PULLUP | MANUAL_MODE | MUX_MODE1) /* gpmc_a25.mmc2_dat1 */
    			0xa8 (PIN_INPUT_PULLUP | MANUAL_MODE | MUX_MODE1) /* gpmc_a26.mmc2_dat2 */
    			0xac (PIN_INPUT_PULLUP | MANUAL_MODE | MUX_MODE1) /* gpmc_a27.mmc2_dat3 */
    			0x8c (PIN_INPUT_PULLUP | MANUAL_MODE | MUX_MODE1) /* gpmc_a19.mmc2_dat4 */
    			0x90 (PIN_INPUT_PULLUP | MANUAL_MODE | MUX_MODE1) /* gpmc_a20.mmc2_dat5 */
    			0x94 (PIN_INPUT_PULLUP | MANUAL_MODE | MUX_MODE1) /* gpmc_a21.mmc2_dat6 */
    			0x98 (PIN_INPUT_PULLUP | MANUAL_MODE | MUX_MODE1) /* gpmc_a22.mmc2_dat7 */
    		>;
    	};
    };
    
    &dra7_iodelay_core {
    	mmc2_iodelay_ddr_1_8v_conf: mmc2_iodelay_ddr_1_8v_conf {
    		pinctrl-single,pins = <
    			0x18c (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A19_IN */
    			0x1a4 (A_DELAY(274) | G_DELAY(240))	/* CFG_GPMC_A20_IN */
    			0x1b0 (A_DELAY(0) | G_DELAY(60))	/* CFG_GPMC_A21_IN */
    			0x1bc (A_DELAY(0) | G_DELAY(60))	/* CFG_GPMC_A22_IN */
    			0x1c8 (A_DELAY(514) | G_DELAY(360))	/* CFG_GPMC_A23_IN */
    			0x1d4 (A_DELAY(187) | G_DELAY(120))	/* CFG_GPMC_A24_IN */
    			0x1e0 (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A25_IN */
    			0x1ec (A_DELAY(0) | G_DELAY(60))	/* CFG_GPMC_A26_IN */
    			0x1f8 (A_DELAY(121) | G_DELAY(60))	/* CFG_GPMC_A27_IN */
    			0x360 (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_CS1_IN */
    			0x190 (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A19_OEN */
    			0x194 (A_DELAY(174) | G_DELAY(0))	/* CFG_GPMC_A19_OUT */
    			0x1a8 (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A20_OEN */
    			0x1ac (A_DELAY(168) | G_DELAY(0))	/* CFG_GPMC_A20_OUT */
    			0x1b4 (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A21_OEN */
    			0x1b8 (A_DELAY(136) | G_DELAY(0))	/* CFG_GPMC_A21_OUT */
    			0x1c0 (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A22_OEN */
    			0x1c4 (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A22_OUT */
    			0x1d0 (A_DELAY(879) | G_DELAY(0))	/* CFG_GPMC_A23_OUT */
    			0x1d8 (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A24_OEN */
    			0x1dc (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A24_OUT */
    			0x1e4 (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A25_OEN */
    			0x1e8 (A_DELAY(34) | G_DELAY(0))	/* CFG_GPMC_A25_OUT */
    			0x1f0 (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A26_OEN */
    			0x1f4 (A_DELAY(120) | G_DELAY(0))	/* CFG_GPMC_A26_OUT */
    			0x1fc (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A27_OEN */
    			0x200 (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_A27_OUT */
    			0x364 (A_DELAY(0) | G_DELAY(0))		/* CFG_GPMC_CS1_OEN */
    			0x368 (A_DELAY(11) | G_DELAY(0))	/* CFG_GPMC_CS1_OUT */
    		>;
    	};
    };
    
    &i2c1 {
    	status = "okay";
    	clock-frequency = <400000>;
    
    	tps659038: tps659038@58 {
    		compatible = "ti,tps659038";
    		reg = <0x58>;
    		interrupt-parent = <&gpio1>;
    		interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
    
    		#interrupt-cells = <2>;
    		interrupt-controller;
    
    		ti,system-power-controller;
    		ti,mux-pad1 = <8>;
    
    		tps659038_pmic {
    			compatible = "ti,tps659038-pmic";
    
    			regulators {
    				smps12_reg: smps12 {
    					/* VDD_MPU */
    					regulator-name = "smps12";
    					regulator-min-microvolt = < 850000>;
    					regulator-max-microvolt = <1250000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				smps3_reg: smps3 {
    					/* VDD_DDR */
    					regulator-name = "smps3";
    					regulator-min-microvolt = <1350000>;
    					regulator-max-microvolt = <1350000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				smps45_reg: smps45 {
    					/* VDD_DSPEVE, VDD_IVA, VDD_GPU */
    					regulator-name = "smps45";
    					regulator-min-microvolt = < 850000>;
    					regulator-max-microvolt = <1250000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				smps6_reg: smps6 {
    					/* VDD_CORE */
    					regulator-name = "smps6";
    					regulator-min-microvolt = <850000>;
    					regulator-max-microvolt = <1150000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				/* SMPS7 unused */
    
    				smps8_reg: smps8 {
    					/* VDD_1V8 */
    					regulator-name = "smps8";
    					regulator-min-microvolt = <1800000>;
    					regulator-max-microvolt = <1800000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				/* SMPS9 unused */
    
    				ldo1_reg: ldo1 {
    					/* VDD_SD / VDDSHV8  */
    					regulator-name = "ldo1";
    					regulator-min-microvolt = <1800000>;
    					regulator-max-microvolt = <3300000>;
    					regulator-boot-on;
    					regulator-always-on;
    				};
    
    				ldo2_reg: ldo2 {
    					/* VDD_SHV5 */
    					regulator-name = "ldo2";
    					regulator-min-microvolt = <3300000>;
    					regulator-max-microvolt = <3300000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				ldo3_reg: ldo3 {
    					/* VDDA_1V8_PHYA */
    					regulator-name = "ldo3";
    					regulator-min-microvolt = <1800000>;
    					regulator-max-microvolt = <1800000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				ldo4_reg: ldo4 {
    					/* VDDA_1V8_PHYB */
    					regulator-name = "ldo4";
    					regulator-min-microvolt = <1800000>;
    					regulator-max-microvolt = <1800000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				ldo9_reg: ldo9 {
    					/* VDD_RTC */
    					regulator-name = "ldo9";
    					regulator-min-microvolt = <1050000>;
    					regulator-max-microvolt = <1050000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				ldoln_reg: ldoln {
    					/* VDDA_1V8_PLL */
    					regulator-name = "ldoln";
    					regulator-min-microvolt = <1800000>;
    					regulator-max-microvolt = <1800000>;
    					regulator-always-on;
    					regulator-boot-on;
    				};
    
    				ldousb_reg: ldousb {
    					/* VDDA_3V_USB: VDDA_USBHS33 */
    					regulator-name = "ldousb";
    					regulator-min-microvolt = <3300000>;
    					regulator-max-microvolt = <3300000>;
    					regulator-boot-on;
    				};
    
    				regen1: regen1 {
    					/* VDD_3V3_ON */
    					regulator-name = "regen1";
    					regulator-boot-on;
    					regulator-always-on;
    				};
    			};
    		};
    
    		tps659038_rtc: tps659038_rtc {
    			compatible = "ti,palmas-rtc";
    			interrupt-parent = <&tps659038>;
    			interrupts = <8 IRQ_TYPE_EDGE_FALLING>;
    			wakeup-source;
    		};
    
    		tps659038_pwr_button: tps659038_pwr_button {
    			compatible = "ti,palmas-pwrbutton";
    			interrupt-parent = <&tps659038>;
    			interrupts = <1 IRQ_TYPE_EDGE_FALLING>;
    			wakeup-source;
    			ti,palmas-long-press-seconds = <12>;
    		};
    
    		tps659038_gpio: tps659038_gpio {
    			compatible = "ti,palmas-gpio";
    			gpio-controller;
    			#gpio-cells = <2>;
    		};
    
    		extcon_usb2: tps659038_usb {
    			compatible = "ti,palmas-usb-vid";
    			ti,enable-vbus-detection;
    			interrupts-extended = <&gpio4 21 IRQ_TYPE_EDGE_RISING>;
    		};
    
    	};
    
    	tmp102: tmp102@48 {
    		compatible = "ti,tmp102";
    		reg = <0x48>;
    		interrupt-parent = <&gpio7>;
    		interrupts = <16 IRQ_TYPE_LEVEL_LOW>;
    		#thermal-sensor-cells = <1>;
    	};
    
    };
    
    &i2c3 {
    	status = "okay";
    	clock-frequency = <400000>;
    
    	mcp_rtc: rtc@6f {
    		compatible = "microchip,mcp7941x";
    		reg = <0x6f>;
    		interrupts-extended = <&crossbar_mpu GIC_SPI 2 IRQ_TYPE_EDGE_RISING>,
    				      <&dra7_pmx_core 0x424>;
    
    		vcc-supply = <&vdd_3v3>;
    		wakeup-source;
    	};
    };
    
    &gpio7 {
    	ti,no-reset-on-init;
    	ti,no-idle-on-init;
    };
    
    &voltdm_mpu {
    	vdd-supply = <&smps12_reg>;
    };
    
    &voltdm_dspeve {
    	vdd-supply = <&smps45_reg>;
    };
    
    &voltdm_gpu {
    	vdd-supply = <&smps45_reg>;
    };
    
    &voltdm_ivahd {
    	vdd-supply = <&smps45_reg>;
    };
    
    &voltdm_core {
    	vdd-supply = <&smps6_reg>;
    };
    
    &cpu0 {
    	cpu0-voltdm = <&voltdm_mpu>;
    	voltage-tolerance = <1>;
    };
    
    &uart3 {
    	status = "okay";
    	interrupts-extended = <&crossbar_mpu GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>,
    			      <&dra7_pmx_core 0x3f8>;
    };
    
    &mac {
    	status = "okay";
    	dual_emac;
    };
    
    &cpsw_emac0 {
    	phy_id = <&davinci_mdio>, <1>;
    	phy-mode = "rgmii";
    	dual_emac_res_vlan = <1>;
    };
    
    &cpsw_emac1 {
    	phy_id = <&davinci_mdio>, <2>;
    	phy-mode = "rgmii";
    	dual_emac_res_vlan = <2>;
    };
    
    &mmc1 {
    	status = "okay";
    
    	pinctrl-names = "default", "hs";
    	pinctrl-0 = <&mmc1_pins_default>;
    	pinctrl-1 = <&mmc1_pins_hs>;
    
    	vmmc-supply = <&ldo1_reg>;
    	bus-width = <4>;
    	cd-gpios = <&gpio6 27 0>; /* gpio 219 */
    	max-frequency = <96000000>;
    	/delete-property/ sd-uhs-sdr104;
    	/delete-property/ sd-uhs-sdr50;
    	/delete-property/ sd-uhs-ddr50;
    	/delete-property/ sd-uhs-sdr25;
    	/delete-property/ sd-uhs-sdr12;
    };
    
    &mmc2 {
    	status = "okay";
    
    	pinctrl-names = "default", "hs", "ddr_1_8v";
    	pinctrl-0 = <&mmc2_pins_default>;
    	pinctrl-1 = <&mmc2_pins_hs>;
    	pinctrl-2 = <&mmc2_pins_ddr_1_8v &mmc2_iodelay_ddr_1_8v_conf>;
    
    	vmmc-supply = <&vdd_3v3>;
    	bus-width = <8>;
    	ti,non-removable;
    	cap-mmc-dual-data-rate;
    	max-frequency = <96000000>;
    	/delete-property/ mmc-hs200-1_8v;
    };
    
    &sata {
    	status = "okay";
    };
    
    &usb2_phy1 {
    	phy-supply = <&ldousb_reg>;
    };
    
    &usb2_phy2 {
    	phy-supply = <&ldousb_reg>;
    };
    
    &usb1 {
    	dr_mode = "host";
    };
    
    &omap_dwc3_1 {
    	extcon = <&extcon_usb1>;
    };
    
    &omap_dwc3_2 {
    	extcon = <&extcon_usb2>;
    };
    
    &usb2 {
    	/*
    	 * Stand alone usage is peripheral only.
    	 * However, with some resistor modifications
    	 * this port can be used via expansion connectors
    	 * as "host" or "dual-role". If so, provide
    	 * the necessary dr_mode override in the expansion
    	 * board's DT.
    	 */
    	dr_mode = "host";
    };
    
    &cpu_trips {
    	cpu_alert1: cpu_alert1 {
    		temperature = <50000>; /* millicelsius */
    		hysteresis = <2000>; /* millicelsius */
    		type = "active";
    	};
    };
    
    &cpu_cooling_maps {
    	map1 {
    		trip = <&cpu_alert1>;
    		cooling-device = <&gpio_fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
    	};
    };
    
    &thermal_zones {
    	board_thermal: board_thermal {
    		polling-delay-passive = <1250>; /* milliseconds */
    		polling-delay = <1500>; /* milliseconds */
    
    				/* sensor       ID */
    		thermal-sensors = <&tmp102     0>;
    
    		board_trips: trips {
    			board_alert0: board_alert {
    				temperature = <40000>; /* millicelsius */
    				hysteresis = <2000>; /* millicelsius */
    				type = "active";
    			};
    
    			board_crit: board_crit {
    				temperature = <105000>; /* millicelsius */
    				hysteresis = <0>; /* millicelsius */
    				type = "critical";
    			};
    		};
    
    		board_cooling_maps: cooling-maps {
    			map0 {
    				trip = <&board_alert0>;
    				cooling-device =
    				  <&gpio_fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
    			};
    		};
           };
    };
    
    &dss {
    	status = "ok";
    
    	vdda_video-supply = <&ldoln_reg>;
    };
    
    &hdmi {
    	status = "ok";
    	vdda-supply = <&ldo4_reg>;
    
    	pinctrl-names = "default";
    	pinctrl-0 = <&hdmi_pins>;
    
    	port {
    		hdmi_out: endpoint {
    			remote-endpoint = <&tpd12s015_in>;
    		};
    	};
    };
    
    &rtc {
    	status = "okay";
    };
    
    &cpu_alert0 {
    	temperature = <90000>; /* milliCelsius */
    };
    
    &cpu_crit {
    	temperature = <105000>; /* milliCelsius */
    };
    
    &gpu_crit {
    	temperature = <105000>; /* milliCelsius */
    };
    
    &core_crit {
    	temperature = <105000>; /* milliCelsius */
    };
    
    &dspeve_crit {
    	temperature = <105000>; /* milliCelsius */
    };
    
    &iva_crit {
    	temperature = <105000>; /* milliCelsius */
    };
    
    &mailbox3 {
    	status = "okay";
    	mbox_pru1_0: mbox_pru1_0 {
    		status = "okay";
    	};
    	mbox_pru1_1: mbox_pru1_1 {
    		status = "okay";
    	};
    };
    
    &mailbox4 {
    	status = "okay";
    	mbox_pru2_0: mbox_pru2_0 {
    		status = "okay";
    	};
    	mbox_pru2_1: mbox_pru2_1 {
    		status = "okay";
    	};
    };
    
    &mailbox5 {
    	status = "okay";
    	mbox_ipu1_ipc3x: mbox_ipu1_ipc3x {
    		status = "okay";
    	};
    	mbox_dsp1_ipc3x: mbox_dsp1_ipc3x {
    		status = "okay";
    	};
    };
    
    &mailbox6 {
    	status = "okay";
    	mbox_ipu2_ipc3x: mbox_ipu2_ipc3x {
    		status = "okay";
    	};
    	mbox_dsp2_ipc3x: mbox_dsp2_ipc3x {
    		status = "okay";
    	};
    };
    
    &mmu0_dsp1 {
    	status = "okay";
    };
    
    &mmu1_dsp1 {
    	status = "okay";
    };
    
    &mmu0_dsp2 {
    	status = "okay";
    };
    
    &mmu1_dsp2 {
    	status = "okay";
    };
    
    &mmu_ipu1 {
    	status = "okay";
    };
    
    &mmu_ipu2 {
    	status = "okay";
    };
    
    &ipu2 {
    	status = "okay";
    	memory-region = <&ipu2_cma_pool>;
    	mboxes = <&mailbox6 &mbox_ipu2_ipc3x>;
    	timers = <&timer3>;
    	watchdog-timers = <&timer4>, <&timer9>;
    };
    
    &ipu1 {
    	status = "okay";
    	memory-region = <&ipu1_cma_pool>;
    	mboxes = <&mailbox5 &mbox_ipu1_ipc3x>;
    	timers = <&timer11>;
    };
    
    &dsp1 {
    	status = "okay";
    	memory-region = <&dsp1_cma_pool>;
    	mboxes = <&mailbox5 &mbox_dsp1_ipc3x>;
    	timers = <&timer5>;
    };
    
    &dsp2 {
    	status = "okay";
    	memory-region = <&dsp2_cma_pool>;
    	mboxes = <&mailbox6 &mbox_dsp2_ipc3x>;
    	timers = <&timer6>;
    };
    
    &pruss1 {
    	status = "okay";
    	pru1_0: pru0@4b234000 {
    		mboxes = <&mailbox3 &mbox_pru1_0>;
    		status = "okay";
    	};
    
    	pru1_1: pru1@4b238000 {
    		mboxes = <&mailbox3 &mbox_pru1_1>;
    		status = "okay";
    	};
    };
    
    &pruss2 {
    	status = "okay";
    	pru2_0: pru0@4b2b4000 {
    		mboxes = <&mailbox4 &mbox_pru2_0>;
    		status = "okay";
    	};
    
    	pru2_1: pru1@4b2b8000 {
    		mboxes = <&mailbox4 &mbox_pru2_1>;
    		status = "okay";
    	};
    };
    
    I was able to go one step further and leave hdmi enabled even though it is not used.

  • Bin Liu said:

    BTY, I took the TI 4.1.y kernel and only changed usb2 dr_mode to host in dts, then I am able to run host mode on usb2 port of X15 Beagle board. Of cause, I have to add external power to vbus line.

    It occurred to me this morning that your test is not sufficient to show proper operation.  As I understand it, in host mode the AM5728 uses the usb2_drvvbus pin to enable and disable vbus to the port through an external switch or power supply.  You have bypassed this function by supplying vbus manually. 

    I await TI response regarding how if possible I can get my circuit to work by modifying either the driver or devicetree. If that is not possible please advise how to modify the circuit for host function.

    Do any of your other EVMs have examples that were designed from the beginning for host mode on this port?  Will you please share schematic and devicetree information for these boards?

    Dexter

  • Dexter Travis said:
    As I understand it, in host mode the AM5728 uses the usb2_drvvbus pin to enable and disable vbus to the port through an external switch or power supply. 

    Yes, that is the intent of the usb2_drvvbus when using USB2 as a host.  I see your design has connected this to a power IC as expected.

    Do you ever see your IC being turned on and providing the necessary 5V?  I suspect that since the EVM was not using this pin, that it was not ever being configured.  Along those lines, it would be useful to see the value of the register CTRL_CORE_PAD_USB2_DRVVBUS (address 0x4A003684).  You could potentially grab this with JTAG or if you can disable USB to actually get your board booted you could do "devmem2 0x4A003684".

    Dexter Travis said:
    You have bypassed this function by supplying vbus manually. 

    We don't have an IC on our EVM to produce 5V.  USB2 was intended to be a device where the 5V was an input which we detect.

    Dexter Travis said:
    Do any of your other EVMs have examples that were designed from the beginning for host mode on this port?  Will you please share schematic and devicetree information for these boards?

    I had a look at our automotive EVM, but unfortunately it's nearly equivalent in that USB2 was designed as a device port.

  • I was also looking at this part of your dts:

    extcon_usb2: tps659038_usb {
    compatible = "ti,palmas-usb-vid";
    ti,enable-vbus-detection;
    interrupts-extended = <&gpio4 21 IRQ_TYPE_EDGE_RISING>;
    };

    That portion of code is for configuring the TPS65903x to detect the 5V (i.e. from having been "plugged in" to a host). Are you using this feature? Perhaps for USB1? It may need to be adjusted or removed depending on your setup.
  • Regarding the extcon_usb2 in the device tree,  I have tried it with and without. I have also tried doing an extcon_usb2 in the same fashion as extcon_usb1, outside of palmas.  In that case an ID pin was required and I configured it to an unused pin. I tried both internal pull up and pull downs on that ID pin. It seems to make no difference.  Frankly I have tried every combination and permutation I can think of that even remotely makes sense.

    The latest device tree in this thread was my attempt at being as close as possible to the x15 since Bin thought i was significantly different.

    The most success I had was with the TI 4.4 kernel prior to the connectivity branch merger on the TI side.  Roger Quadros I believe did most of the USB commits in the connectivity branch. In that kernel I was able get USB 2 fully functional in about 1 of 20 power cycles.  The other 19 power cycles i got the xhci_hub_control crash.  In the 1 of 20 attempts when it did work, usb2_drvvbus was correctly controlling the power switch IC and 5v was on the line.  Therefore we have proven the circuit works and eliminated board specific issues.

    I see that usb2_drvvbus line is available on the expansion connectors of the x15.  There is even a note in the device tree for the x15 about the ability to do host mode on the expansion headers.  Is it possible for someone on TI side to do this with the current 4.1 or 4.4 branch and verify function?  I have done my best to mimic as much of your software with as little modification as possible and I still see the issue.  I would appreciate if TI came at this from the other side and tried to mimic my hardware as close as possible.

    Dexter

  • Dexter Travis said:

    The most success I had was with the TI 4.4 kernel prior to the connectivity branch merger on the TI side.  Roger Quadros I believe did most of the USB commits in the connectivity branch. In that kernel I was able get USB 2 fully functional in about 1 of 20 power cycles.  The other 19 power cycles i got the xhci_hub_control crash.  In the 1 of 20 attempts when it did work, usb2_drvvbus was correctly controlling the power switch IC and 5v was on the line.  Therefore we have proven the circuit works and eliminated board specific issues.

    Is the 5V supply being enabled when you are running with the 4.1 kernel?  Please use a multimeter to verify.

    Dexter Travis said:
    I see that usb2_drvvbus line is available on the expansion connectors of the x15.  There is even a note in the device tree for the x15 about the ability to do host mode on the expansion headers.  Is it possible for someone on TI side to do this with the current 4.1 or 4.4 branch and verify function? 

    This sounds like what Bin already did with the exception of using usb2_drvvbus, though you sound pretty convinced that you already have usb2_drvvbus functioning properly.  I think it would make more sense for you to try and replicate Bin's result using the TI EVM.

  • "This sounds like what Bin already did with the exception of using usb2_drvvbus," 

    Yes, that was exactly my point.  Him not using vbus is a critical difference.

    I tried to reply via email and don't see that post coming through the following is from the email, so it may appear twice if the email ever comes through.

    Currently in the 4.1 kernel with a couple of different device tree configurations including the one I used back when it worked sporadically the usb2_drvvbus pin is NOT activating.

    I tried applying 5V directly to the USB port on my board.  I get the same crash from the kernel.

    As a reminder since we keep getting new people on this thread, I was able to sporadically get USB fully functional prior to recent merges.

    The image below is what I see immediately after power on.  I think this is a power on glitch followed by u-boot turning on vbus.  All that is in this image occurs before the kernel starts to load.  After this point the line is always low.

    Yellow is the vbus control line, blue is vbus itself.

  • For right now I suggest we focus on solving the one clear issue that you have, which is drvvbus.  I think this should fix it:

    --- a/arch/arm/boot/dts/am57xx-beagle-x15.dts
    +++ b/arch/arm/boot/dts/am57xx-beagle-x15.dts
    @@ -332,6 +332,12 @@
                            0x98 (PIN_INPUT_PULLUP | MANUAL_MODE | MUX_MODE1) /* gpmc_a22.mmc2_dat7 */
                    >;
            };
    +
    +        usb2_pins: usb2_pins {
    +                pinctrl-single,pins = <
    +                        0x284 (PIN_OUTPUT | MUX_MODE0) /* usb2_drvvbus.usb2_drvvbus */
    +                >;
    +        };
     };

     &dra7_iodelay_core {
    @@ -696,7 +702,10 @@
             * the necessary dr_mode override in the expansion
             * board's DT.
             */
    -       dr_mode = "peripheral";
    +       dr_mode = "host";
    +       status = "okay";
    +       pinctrl-names = "default";
    +       pinctrl-0 = <&usb2_pins>;
     };

     &cpu_trips {

    Can you please try that out and let me know if that solves the issue of usb2_drvvbus not working?  In fact, I recommend doing this testing using the software that worked 1 in 20 times.  Perhaps we can make some progress on that front.  If for example, we could get that working all the time and then pin-point a specific commit that breaks things, that might help us understand what's happening.

  • It appears you have a typo in the usb2_pins.  the pin address for usb2_drvvbus is 0x284 not 0x2c4.  You appear to have copied from the usb0_drvvbus.

    I will give this a try this afternoon and report back.

    Dexter

  • Sorry about that. Good catch!  I've gone back and cleaned up my original patch.

  • I started with the 4.1 kernel we had been working on. This was my attempt at making it as close as possible to the TI 4.1 kernel and x15 device tree. I then made the device tree changes Brad suggested.

    I now see that sometimes when i power cycle the usb2_drvvbus line does come high. When the line does come high, then USB does work. When the line does not go high USB does not work. It appears much more likely that when I apply 5v externally to USB on the USB side of the vbus control switch that it comes up correctly. I observe that when I supply 5v to the VBUS from a bench supply it feeds back through the switch and powers other systems.

    I have also observed the 3.3V USB and 1.8v PHY USB line that comes into the Am5728. When the system works 3v3 USB is at 3.3volts. When the system fails 3.3v USB is at or near ground. Some state machine somewhere is not always turning on 3v3 output from the PMIC to my USB 3v3 input. Somehow applying the 5V is sticking something so that this line does come on. The 1.8 line appears to always come up and be correct.

    Any suggestion on how to make sure that always happens would be appreciated.

    I should note that I am using ES1.1 silicon.
  • Great! I think we're closing in on the issue now...

    Are you using the TPS659037 as your PMIC? What does VUSB_3V3 from your schematic connect to on the PMIC? Does it connect to LDOUSB_OUT (like the EVM)?
  • Yes, TPS659037 PMIC. LDOUSB_OUT of the PMIC goes directly to VDDA33V_USB1 and VDDA33V_USB2. There are several capacitors on the line a 10uF, 2.2uF, 0.1uF and 1000pF.
  • And what is the supply rail for the LDOUSB_IN pins of the PMIC?
  • The input to the LDOUSB_IN of the PMIC is the main 5V bus that runs lots of stuff on the system. Its turned on by an external MCU. It is on before the PMIC or the AM5728 are out of reset or powered up. The LDO12_IN on the PMIC is fed by the same 5v line as LDOUSB_IN.
  • That main 5V line which is the LDOUSB_IN and LDO12_IN connection is also the 5V line that I backfeed when I hook up vbus to an external 5V supply. Generally 12V DC comes is and is stepped down to 5V by an on board regulator (not the PMIC) to supply this.
  • I also tried to add palmas_i2c_write_u8 commands to the late_init function on u-boot in order to poke the PMIC registers that I think control the LDOUSB. in particular 0x164, 0x165 and 0x16A. I do not see the VDDA33V_USB lines go high like I expect when I write to the those register to enable the output.
  • Which I2C bus of the AM5728 is connected to the PMIC? Have you probed the bus near the PMIC to see if there is proper communication? In particular if there's any level translation, etc. it is easy for something to get messed up there.
  • One other thought that comes to mind is whether LDOUSB is outputting the appropriate 3.3V as part of the power-up sequence. I expect that it should be high before the AM5728 is even released from reset. However, if it's not for some reason that would explain the behavior. And if that's the case, we'll definitely need to pull in the PMIC team to assist.
  • PMIC is connected directly between the 5728 and the PMIC.  It is on I2C1 of the AM5728.  I believe this is the same as the EVM. It has 2.2k pullups to 3.3v_sw2.  That power is up as soon as 12v is applied to the overall system input.

    Yes there is I2C activity on that line.  I did confirm with a logic analyzer that the commands I added are present and the logic analyzer reads them correctly and the PMIC acks them.

    The 5728 is held in reset for about 1 second after 5v is enabled to the PMIC.  That seems like it should be tons of time for the PMIC to have vdd33v_usb up.  Also even when i issue commands through u-boot to turn on the 33v_usb it does not happen. 

  • We stumbled into a test case that may shed some light to the PMIC team. We hold the AM5728 in reset forever. so nothing ever talks I2C to the PMIC.

    In this scenario I can apply power and get both results. VDD33V_USB low at ground and VDD33V_USB coming up. However when it comes up VDD33V_USB only comes up to about 2.16 volts. Not all the way to 3.3v.
  • Thanks for this info. That's a great test case. This rail should be coming up to 3.3V without any software intervention whatsoever. It's part of the power-up sequence. So you're saying when you hold the AM5728 in reset and examine the power-up sequence you get inconsistent results? sometimes it stays at 0V and other times it comes up to 2.16V?

    Can you tell me the precise orderable part number that's placed on your board? I need to talk this over some more with the PMIC team. There are a lot of variations of this device, so I need the complete part number please.
  • XAM5728AABCXE 

    TPS6590376ZWSR

  • I also have some units with the same PMIC orderable part and the same top two lines of part silk/etch but with different 3rd line (date/lot code i presume).
  • Tested the units with the different date/lot code and get the same results.
  • Is there more than one load on the LDOUSB output (i.e. is anything powered beyond the vdda33v_usb rail)?
  • no. It only goes to the AM5728.
  • The PMIC team was wondering if there might be an issue somewhere that a 3.3V rail is somehow coupled to a 1.8V rail. The 2.16V that you sometimes see looks suspiciously like 1.8V + a diode to clamp the voltage. Can you look through more of the voltage rails in your design to see if perhaps there's another one that looks suspicious? Another suggestion mentioned was to remove the processor altogether from your board to see if that "fixes" the PMIC. That could help us narrow this down quite a bit in terms of where we go hunt.
  • I don't have the capabilities here to remove the AM5728. That would require sending it back to our CM and would take at least a week round trip. Lets avoid that if we can.

    Interestingly the other 3.3V rails that come out of the PMIC are also at 2.16 as you suggest. The input rails to the PMIC are at 3.3v.

    LDO1_OUT, LDO2_OUT and LDOUSB_OUT are all at the same 2.16 volts.
  • Dexter Travis said:
    That main 5V line which is the LDOUSB_IN and LDO12_IN connection is also the 5V line that I backfeed when I hook up vbus to an external 5V supply.

    Dexter Travis said:
    I observe that when I supply 5v to the VBUS from a bench supply it feeds back through the switch and powers other systems.

    Dexter Travis said:
    LDO1_OUT, LDO2_OUT and LDOUSB_OUT are all at the same 2.16 volts.

    Will you please have another look at LDOUSB_IN?  All of these data points above are consistent with having insufficient input voltage on this net (LDUSB_IN and LD12_IN).  The other place where we might look is the output of LDO1 and LDO2.  I recommend revisiting the input once more first though.

  •  I was able to capture a scope trace of the 3.3v USB output of the PMIC during a "working" boot.  

    I am able to twiddle the power connection such that by watching the scope and quickly connect/disconnect power at a boot I can get it to "work" the line goes all the way to 3.3v.  During initial boot up it goes to an intermediate voltage for a little while.

    If I just apply power from a cold state and do not twiddle the power connector I see zero activity on the VDDUSB line (flat line).

    Attached is the twiddled power working case.

  • Can you get a scope shot of LDOUSB_IN relative to LDOUSB_OUT during the ramp up? It might also be useful to see the PMIC's RESET_OUT signal. I was trying to correlate some of the activity on LDOUSB with other events, and I think releasing the processor from reset is probably a decent guess.

    If possible, please provide a screenshot for a bad case (0V) as well as the "eventually successful" case.
  • FAILING CASE 1

    pink is pmic reset out.

    yellow 3.3v going into the PMIC for the other LDOs.

    light blue is the LDOUSB_IN line between D9 and the PMIC

    dark blue is USB3v3_OUT

    Failing Case 2

    All lines same as case 1 except yellow.  Yellow is now 5V before D9.  Schematically Yellow feeds through D9 to light blue.

    Based on these observations it appears the PMIC is allowing voltage to bleed through internally from the 3.3v LDO inputs to the LDOUSB input.  

    The LDOUSB_IN is only connected to D9 and the PMIC and some caps.  D9 selected between mains power and battery power.  The battery is not installed and at the time this net goes high (to 2.16 volts) there is no voltage on either 5V or the battery line. (I also took scope shots of the battery line not shown).  It seems that first hump in light blue must be coming from a back feed from the PMIC internally.

    Working Case 1


    dark blue is USB_OUT 3v3.  

    Pink is PMIC_RESET_OUT

    light blue is LDOUSB_IN between D9 and the PMIC.

    yellow if 5V feeding into D9.

    Currently we have the MCU (a non ti 32 bit device) controlling 5v regulator enable line.  I am going to bypass that so that 5V comes up at the same time as 3v3 so all the LDO inputs get voltage at the same time.  I will let you know results.  

    I look forward to hearing the opinions of the PMIC team.

  • If LDOUSB is enabled prior to having a stable input supply, this wall cause the LDO to register a short-circuit which will keep it off. I think that's the issue here. It looks to me like the PMIC is at the very end of the sequencing (i.e. RESET_OUT going high) before it even has a stable 5V supply. I think you need some additional sequencing to properly time when the PMIC starts to ramp.

    When you're referring to "D9" are you referring to pin D9 (VIO_IN) of the PMIC, or is that a component on your board?
  • I modified the board so that 5V and 3.3V come up roughly at the same time and took the external MCU out of the circuit (it was delaying 5v enable).

    So far the results look very promising.  I am about 5 out of 5 good resets from a cold state.

    yellow = 3.3v  (ldo inputs to other ldos on pmic)

    light blue 5v (ldousb pmic input.)

    pink (pmic_reset_out)

    dark blue (ldousb_out)

  • How are you initiating the PMIC power sequencing? Is there a push button somewhere, or is there some circuitry in there to make it power-up as soon as power is present? Based on the oscilloscope captures, it looks like a small change should be made such that the PGOOD from the 5V rail should be used to start up the PMIC. For example, if you keep PWRON pulled high and then connect the 5V PGOOD to POWERHOLD, that should do it.
  • a 12 VDC line goes high and the system turns on This should start the whole process.  We have a key switch input to turn on/off with the key position (think automotive).  At the moment key is tied to 12V in and both come up together.  This is a scenario we need to support.

    It looks like the POWERHOLD input is limited to VIO voltage range and cannot take the full 5v from 5v power good.  Fortunately 5V power good is open drain.  I pulled it up to the same 3.3 line that powers VIO.  It looks like VIO comes up a bit after 5V so the PG line is not as sharp an input as I would like.  However, it works.

    It appears this also gets rid of the PMIC_RESET_OUT pulse that was happening a little while after power up.

    Attached are some scope captures.

    This is the zoomed in version of power up, showing the PG coming up with 3.3 VIO.

    Yellow 3.3V VIO input to the PMIC also the line that 5v PG is pulled up to. 10k pullup.

    light blue 5V

    pink 5v PG output going into the powerhold pin of the PMIC

    dark blue VUSB LDO output.

    Same as above zoomed out except Yellow is main 3.3v not 3.3v VIO.  This yellow is the 3.3v that triggers 5v to start up.

    Questions:

    1) Is it OK to pull up to VIO like this given that VIO is coming up after the other voltages?

    2) Is it better to tie VIO and the POWERHOLD pull up to the primary 3.3v so that all come up together?

    3) Now that PG out controls POWERHOLD can we go back to having the MCU control 5V independently of main 3.3v and thus have those two input voltages to the PMIC not coming up together?  Or does all the LDO inputs need to be coming up together?

     

     

  • Question 4) Would it be acceptable to pull POWERHOLD up to 5V instead of 3.3V?
  • We would prefer to pull POWERHOLD up to the 5V line. Please verify my understanding that this input is in the 5v tolerant space and that this is safe to do for the PMIC.
  • That was my conclusion as well in terms of being the simplest. I'm confirming with the product group to be sure.

    I'm a little confused that the PMIC turned on at all when you pulled PGOOD to VIO. Isn't VIO enabled by REGEN1?
  • We have VIO pulled up to a switched version of the 3.3V input that powers the LDO inputs. It is independent (at least on our system) of the PMIC outputs.
  • The product group has confirmed that 5V DC is fine on the POWERHOLD pin. So puling it up to 5V sounds like the best solution.

    Before we close this out, I think it would be good if you could confirm that leaving PWRON pulled high and POWERHOLD driven low (e.g. don't pull it to anything) keeps the PMIC "off" (i.e. none of the rails turn on). Additionally (or maybe alternatively), it would be good to grab a scope shot of the 5V PGOOD relative to SMPS8. The first rail to turn on is SMPS8, so if we can show that it waits until after the 5V PGOOD transitions, then I think that proves you have everything wired properly.

    Also, just to be clear, is the USB2 Host working all the time now? Or is there still a software issue tied into this?

    I think the primary issue here was that we needed to fix the sequencing such that the PMIC turns on *after* the 5V rail is stable. The smaller issue was fixing the usb2_drvvbus signal in the dts. Correct?