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.

Issue with RS485 using 7,E,2 serial moving from sitara SDK 8 to TI processor SDK 2.00.1

Other Parts Discussed in Thread: TPS65217, PCA9534, LM75A

We are in the process of moving from the last sitara sdk (8 I believe) to the latest TI Processor SDK (2.00.1). We use the omap_uart (omap-serial?) driver to automatically handle the 485 half duplex control. Back in the old sitara sdk this worked with serial formats 8N1 and 7E2, but in the latest sdk we only see 8N1 function and not the even parity. The normal RS232 port still works fine for both formats, so it seems to be specific to the 485 function. Was a bug introduced into this driver or am I overlooking something?

  • Here is our device tree entry for our 485 if that is helpful.
    serial@48022000 {
    compatible = "ti,am3352-uart", "ti,omap3-uart";
    ti,hwmods = "uart2";
    clock-frequency = <0x2dc6c00>;
    reg = <0x48022000 0x2000>;
    interrupts = <0x49>;
    status = "okay";
    dmas = <0x2a 0x1c 0x2a 0x1d>;
    dma-names = "tx", "rx";
    pinctrl-names = "default";
    pinctrl-0 = <0x2c>;
    rs485-rts-delay = <0x5 0x5>;
    rts-gpio = <0x2d 0x15 0x0>;
    rs485-rts-active-high;
    linux,rs485-enabled-at-boot-time;
    };
  • Here is a sample of dmesg. Only UART1 is 485.

    [ 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.13-g8dc6617 (adaptive-sdc@SDC-STATION) (gcc version 4.9.3 20150413 (prerelease) (Linaro GCC 4.9-2015.05) ) #20 PREEMPT Thu Mar 17 10:43:52 CDT 2016
    [ 0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c5387d
    [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
    [ 0.000000] Machine model: TI AM335x BeagleBone Black
    [ 0.000000] debug: ignoring loglevel setting.
    [ 0.000000] cma: Reserved 24 MiB at 0x9e800000
    [ 0.000000] Memory policy: Data cache writeback
    [ 0.000000] On node 0 totalpages: 131072
    [ 0.000000] free_area_init_node: node 0, pgdat c0891334, node_mem_map de36d000
    [ 0.000000] Normal zone: 1152 pages used for memmap
    [ 0.000000] Normal zone: 0 pages reserved
    [ 0.000000] Normal zone: 131072 pages, LIFO batch:31
    [ 0.000000] CPU: All CPU(s) started in SVC mode.
    [ 0.000000] AM335X ES2.1 (sgx neon )
    [ 0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
    [ 0.000000] pcpu-alloc: [0] 0
    [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 129920
    [ 0.000000] Kernel command line: console=ttyO0,115200n8 psplash=false rootflags=barrier=1,commit=1 consoleblank=0 debug ignore_loglevel loglevel=7 root=/dev/mmcblk0p2 ro rootfstype=ext4 rootwait
    [ 0.000000] PID hash table entries: 2048 (order: 1, 8192 bytes)
    [ 0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
    [ 0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
    [ 0.000000] Memory: 485456K/524288K available (6175K kernel code, 233K rwdata, 2080K rodata, 252K init, 219K bss, 14256K reserved, 24576K cma-reserved, 0K highmem)
    [ 0.000000] Virtual kernel memory layout:
    [ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB)
    [ 0.000000] fixmap : 0xffc00000 - 0xfff00000 (3072 kB)
    [ 0.000000] vmalloc : 0xe0800000 - 0xff000000 ( 488 MB)
    [ 0.000000] lowmem : 0xc0000000 - 0xe0000000 ( 512 MB)
    [ 0.000000] pkmap : 0xbfe00000 - 0xc0000000 ( 2 MB)
    [ 0.000000] modules : 0xbf000000 - 0xbfe00000 ( 14 MB)
    [ 0.000000] .text : 0xc0008000 - 0xc08180ac (8257 kB)
    [ 0.000000] .init : 0xc0819000 - 0xc0858000 ( 252 kB)
    [ 0.000000] .data : 0xc0858000 - 0xc08927f0 ( 234 kB)
    [ 0.000000] .bss : 0xc0895000 - 0xc08cbed0 ( 220 kB)
    [ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
    [ 0.000000] Preemptible hierarchical RCU implementation.
    [ 0.000000] Additional per-CPU info printed with stalls.
    [ 0.000000] NR_IRQS:16 nr_irqs:16 16
    [ 0.000000] IRQ: Found an INTC at 0xfa200000 (revision 5.0) with 128 interrupts
    [ 0.000000] OMAP clockevent source: timer2 at 24000000 Hz
    [ 0.000014] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns
    [ 0.000030] clocksource timer1: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
    [ 0.000039] OMAP clocksource: timer1 at 24000000 Hz
    [ 0.000198] Console: colour dummy device 80x30
    [ 0.000219] Calibrating delay loop... 996.14 BogoMIPS (lpj=4980736)
    [ 0.089324] pid_max: default: 32768 minimum: 301
    [ 0.089419] Security Framework initialized
    [ 0.089466] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
    [ 0.089476] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
    [ 0.090084] Initializing cgroup subsys blkio
    [ 0.090108] Initializing cgroup subsys memory
    [ 0.090147] Initializing cgroup subsys devices
    [ 0.090161] Initializing cgroup subsys freezer
    [ 0.090173] Initializing cgroup subsys perf_event
    [ 0.090195] CPU: Testing write buffer coherency: ok
    [ 0.090542] Setting up static identity map for 0x80008200 - 0x80008270
    [ 0.091932] devtmpfs: initialized
    [ 0.100567] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3
    [ 0.108002] omap_hwmod: tptc0 using broken dt data from edma
    [ 0.108108] omap_hwmod: tptc1 using broken dt data from edma
    [ 0.108190] omap_hwmod: tptc2 using broken dt data from edma
    [ 0.112449] omap_hwmod: debugss: _wait_target_disable failed
    [ 0.166781] clocksource jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
    [ 0.168755] pinctrl core: initialized pinctrl subsystem
    [ 0.170016] NET: Registered protocol family 16
    [ 0.171939] DMA: preallocated 256 KiB pool for atomic coherent allocations
    [ 0.199315] cpuidle: using governor ladder
    [ 0.229303] cpuidle: using governor menu
    [ 0.232187] gpiochip_add: registered GPIOs 0 to 31 on device: gpio
    [ 0.232464] OMAP GPIO hardware version 0.1
    [ 0.233082] gpiochip_add: registered GPIOs 32 to 63 on device: gpio
    [ 0.233756] gpiochip_add: registered GPIOs 64 to 95 on device: gpio
    [ 0.234381] gpiochip_add: registered GPIOs 96 to 127 on device: gpio
    [ 0.241476] No ATAGs?
    [ 0.241505] hw-breakpoint: debug architecture 0x4 unsupported.
    [ 0.276354] edma-dma-engine edma-dma-engine.0: TI EDMA DMA engine driver
    [ 0.276802] of_get_named_gpiod_flags: can't parse 'gpio' property of node '/fixedregulator@0[0]'
    [ 0.278103] vgaarb: loaded
    [ 0.278583] SCSI subsystem initialized
    [ 0.279010] omap_i2c 44e0b000.i2c: could not find pctldev for node /ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_i2c0_pins, deferring probe
    [ 0.279059] omap_i2c 4802a000.i2c: could not find pctldev for node /ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_i2c1_pins, deferring probe
    [ 0.279088] omap_i2c 4819c000.i2c: could not find pctldev for node /ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_i2c2_pins, deferring probe
    [ 0.279193] media: Linux media interface: v0.10
    [ 0.279248] Linux video capture interface: v2.00
    [ 0.279370] pps_core: LinuxPPS API ver. 1 registered
    [ 0.279377] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
    [ 0.279419] PTP clock support registered
    [ 0.280151] omap-mailbox 480c8000.mailbox: omap mailbox rev 0x400
    [ 0.280366] Advanced Linux Sound Architecture Driver Initialized.
    [ 0.281100] Switched to clocksource timer1
    [ 0.290092] NET: Registered protocol family 2
    [ 0.290817] TCP established hash table entries: 4096 (order: 2, 16384 bytes)
    [ 0.290862] TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
    [ 0.290900] TCP: Hash tables configured (established 4096 bind 4096)
    [ 0.290964] UDP hash table entries: 256 (order: 0, 4096 bytes)
    [ 0.290980] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
    [ 0.291201] NET: Registered protocol family 1
    [ 0.291549] RPC: Registered named UNIX socket transport module.
    [ 0.291562] RPC: Registered udp transport module.
    [ 0.291568] RPC: Registered tcp transport module.
    [ 0.291573] RPC: Registered tcp NFSv4.1 backchannel transport module.
    [ 0.291598] PCI: CLS 0 bytes, default 64
    [ 0.292419] CPU PMU: Failed to parse /pmu/interrupt-affinity[0]
    [ 0.292462] hw perfevents: enabled with armv7_cortex_a8 PMU driver, 5 counters available
    [ 0.294164] futex hash table entries: 256 (order: -1, 3072 bytes)
    [ 0.294235] audit: initializing netlink subsys (disabled)
    [ 0.294297] audit: type=2000 audit(0.280:1): initialized
    [ 0.300505] VFS: Disk quotas dquot_6.6.0
    [ 0.300686] VFS: Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
    [ 0.302744] NFS: Registering the id_resolver key type
    [ 0.302815] Key type id_resolver registered
    [ 0.302823] Key type id_legacy registered
    [ 0.302892] jffs2: version 2.2. (NAND) (SUMMARY) © 2001-2006 Red Hat, Inc.
    [ 0.305103] NET: Registered protocol family 38
    [ 0.305160] io scheduler noop registered
    [ 0.305170] io scheduler deadline registered
    [ 0.305223] io scheduler cfq registered (default)
    [ 0.306172] pinctrl-single 44e10800.pinmux: 142 pins at pa f9e10800 size 568
    [ 0.307687] wkup_m3_ipc 44e11324.wkup_m3_ipc: could not get rproc handle
    [ 0.308694] omap_uart 44e09000.serial: no wakeirq for uart0
    [ 0.308715] of_get_named_gpiod_flags: can't parse 'rts-gpio' property of node '/ocp/serial@44e09000[0]'
    [ 0.308877] 44e09000.serial: ttyO0 at MMIO 0x44e09000 (irq = 155, base_baud = 3000000) is a OMAP UART0
    [ 1.086322] console [ttyO0] enabled
    [ 1.090450] omap_uart 48022000.serial: no wakeirq for uart1
    [ 1.096333] of_get_named_gpiod_flags: parsed 'rts-gpio' property of node '/ocp/serial@48022000[0]' - status (0)
    [ 1.107058] 48022000.serial: ttyO1 at MMIO 0x48022000 (irq = 156, base_baud = 3000000) is a OMAP UART1
    [ 1.117206] omap_uart 481a8000.serial: no wakeirq for uart4
    [ 1.123068] of_get_named_gpiod_flags: can't parse 'rts-gpio' property of node '/ocp/serial@481a8000[0]'
    [ 1.132991] 481a8000.serial: ttyO4 at MMIO 0x481a8000 (irq = 157, base_baud = 3000000) is a OMAP UART4
    [ 1.143184] [drm] Initialized drm 1.1.0 20060810
    [ 1.148394] panel panel: GPIO lookup for consumer enable
    [ 1.153994] panel panel: using device tree for GPIO lookup
    [ 1.159724] of_get_named_gpiod_flags: can't parse 'enable-gpios' property of node '/panel[0]'
    [ 1.168637] of_get_named_gpiod_flags: can't parse 'enable-gpio' property of node '/panel[0]'
    [ 1.177456] panel panel: using lookup tables for GPIO lookup
    [ 1.183374] panel panel: lookup for GPIO enable failed
    [ 1.189915] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
    [ 1.196926] [drm] No driver support for vblank timestamp query.
    [ 1.214310] Console: switching to colour frame buffer device 100x37
    [ 1.226540] tilcdc 4830e000.lcdc: fb0: frame buffer device
    [ 1.232437] tilcdc 4830e000.lcdc: registered panic notifier
    [ 1.261126] [drm] Initialized tilcdc 1.0.0 20121205 on minor 0
    [ 1.267399] brd: module loaded
    [ 1.270791] loop: module loaded
    [ 1.274940] mtdoops: mtd device (mtddev=name/number) must be supplied
    [ 1.341131] davinci_mdio 4a101000.mdio: davinci mdio revision 1.6
    [ 1.347529] davinci_mdio 4a101000.mdio: detected phy mask fffffffd
    [ 1.354751] libphy: 4a101000.mdio: probed
    [ 1.358993] davinci_mdio 4a101000.mdio: phy[1]: device 4a101000.mdio:01, driver Micrel KSZ9031 Gigabit PHY
    [ 1.369661] cpsw 4a100000.ethernet: Detected MACID = 54:4a:16:f2:d6:aa
    [ 1.378181] mousedev: PS/2 mouse device common for all mice
    [ 1.384213] i2c /dev entries driver
    [ 1.388383] omap_wdt: PRM_RSTST Reboot Cause: 2
    [ 1.393907] omap_wdt: OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec
    [ 1.401940] omap_hsmmc 48060000.mmc: GPIO lookup for consumer cd
    [ 1.408275] omap_hsmmc 48060000.mmc: using device tree for GPIO lookup
    [ 1.415152] of_get_named_gpiod_flags: parsed 'cd-gpios' property of node '/ocp/mmc@48060000[0]' - status (0)
    [ 1.425502] omap_hsmmc 48060000.mmc: Got CD GPIO
    [ 1.430327] omap_hsmmc 48060000.mmc: GPIO lookup for consumer wp
    [ 1.436615] omap_hsmmc 48060000.mmc: using device tree for GPIO lookup
    [ 1.443463] of_get_named_gpiod_flags: can't parse 'wp-gpios' property of node '/ocp/mmc@48060000[0]'
    [ 1.453012] of_get_named_gpiod_flags: can't parse 'wp-gpio' property of node '/ocp/mmc@48060000[0]'
    [ 1.462482] omap_hsmmc 48060000.mmc: using lookup tables for GPIO lookup
    [ 1.469478] omap_hsmmc 48060000.mmc: lookup for GPIO wp failed
    [ 1.511955] of_get_named_gpiod_flags: parsed 'gpios' property of node '/leds/led@2[0]' - status (0)
    [ 1.524881] of_get_named_gpiod_flags: parsed 'gpios' property of node '/leds/led@3[0]' - status (0)
    [ 1.534564] of_get_named_gpiod_flags: parsed 'gpios' property of node '/leds/led@4[0]' - status (0)
    [ 1.544211] of_get_named_gpiod_flags: parsed 'gpios' property of node '/leds/led@5[0]' - status (0)
    [ 1.553935] ledtrig-cpu: registered to indicate activity on CPUs
    [ 1.560661] omap-aes 53500000.aes: OMAP AES hw accel rev: 3.2
    [ 1.571010] omap-sham 53100000.sham: hw accel on OMAP rev 4.3
    [ 1.578687] remoteproc0: wkup_m3 is available
    [ 1.583508] remoteproc0: Note: remoteproc is still under development and considered experimental.
    [ 1.593001] remoteproc0: THE BINARY FORMAT IS NOT YET FINALIZED, and backward compatibility isn't yet guaranteed.
    [ 1.604126] remoteproc0: Direct firmware load for am335x-pm-firmware.elf failed with error -2
    [ 1.615822] oprofile: using arm/armv7
    [ 1.619962] Initializing XFRM netlink socket
    [ 1.624666] remoteproc0: Falling back to user helper
    [ 1.630057] NET: Registered protocol family 17
    [ 1.634990] NET: Registered protocol family 15
    [ 1.639818] Key type dns_resolver registered
    [ 1.644359] mmc0: host does not support reading read-only switch, assuming write-enable
    [ 1.652983] omap_voltage_late_init: Voltage driver support not added
    [ 1.659999] cpu cpu0: of_pm_voltdm_notifier_register: Failed to get cpu0 regulator/voltdm: -517
    [ 1.669236] mmc0: new high speed SD card at address b368
    [ 1.674826] cpu cpu0: cpu0 clock notifier not ready, retry
    [ 1.680871] ThumbEE CPU extension supported.
    [ 1.685821] mmcblk0: mmc0:b368 N1BW1 1.91 GiB
    [ 1.691263] Registering SWP/SWPB emulation handler
    [ 1.696381] mmcblk0: p1 p2
    [ 1.728016] tps65217 0-0024: TPS65217 ID 0xe version 1.2
    [ 1.734239] gpiochip_find_base: found new base at 504
    [ 1.739662] gpiochip_add: registered GPIOs 504 to 511 on device: pca9534
    [ 1.746692] pca953x 0-0020: interrupt support not compiled in
    [ 1.753246] lm75 0-0048: hwmon0: sensor 'lm75a'
    [ 1.759126] rtc-ds1307 0-006f: rtc core: registered mcp7940x as rtc0
    [ 1.765828] rtc-ds1307 0-006f: 64 bytes nvram
    [ 1.770530] omap_i2c 44e0b000.i2c: bus 0 rev0.11 at 400 kHz
    [ 1.777335] omap_i2c 4802a000.i2c: bus 1 rev0.11 at 400 kHz
    [ 1.784006] omap_i2c 4819c000.i2c: bus 2 rev0.11 at 400 kHz
    [ 1.790735] cpu cpu0: of_pm_voltdm_notifier_register: Fail calculating voltage latency[950000<->1325000]:-22
    [ 1.801518] cpu cpu0: of_pm_voltdm_notifier_register: Fail calculating voltage latency[950000<->1325000]:-22
    [ 1.812756] rtc-ds1307 0-006f: setting system clock to 2016-03-21 14:57:28 UTC (1458572248)
    [ 1.824788] ALSA device list:
    [ 1.827906] No soundcards found.
    [ 1.835735] EXT4-fs (mmcblk0p2): INFO: recovery required on readonly filesystem
    [ 1.843593] EXT4-fs (mmcblk0p2): write access will be enabled during recovery
    [ 3.263472] EXT4-fs (mmcblk0p2): recovery complete
    [ 3.414370] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: barrier=1,commit=1
    [ 3.424271] VFS: Mounted root (ext4 filesystem) readonly on device 179:2.
    [ 3.439275] devtmpfs: mounted
    [ 3.443614] Freeing unused kernel memory: 252K (c0819000 - c0858000)
    [ 4.167253] udevd[100]: starting version 182
    [ 4.582489] am335x-phy-driver 47401300.usb-phy: GPIO lookup for consumer reset
    [ 4.590055] am335x-phy-driver 47401300.usb-phy: using device tree for GPIO lookup
    [ 4.830354] of_get_named_gpiod_flags: can't parse 'gpio-reset' property of node '/ocp/i2c@44e0b000/tlv320aic3x@1b[0]'
    [ 4.857308] of_get_named_gpiod_flags: can't parse 'reset-gpios' property of node '/ocp/usb@47400000/usb-phy@47401300[0]'
    [ 4.969109] at24 0-0050: 4096 byte 24c32 EEPROM, writable, 1 bytes/write
    [ 4.979332] of_get_named_gpiod_flags: can't parse 'reset-gpio' property of node '/ocp/usb@47400000/usb-phy@47401300[0]'
    [ 5.091344] am335x-phy-driver 47401300.usb-phy: using lookup tables for GPIO lookup
    [ 5.099369] am335x-phy-driver 47401300.usb-phy: lookup for GPIO reset failed
    [ 5.220065] am335x-phy-driver 47401300.usb-phy: GPIO lookup for consumer vbus-detect
    [ 5.299006] am335x-phy-driver 47401300.usb-phy: using device tree for GPIO lookup
    [ 5.354051] of_get_named_gpiod_flags: can't parse 'vbus-detect-gpios' property of node '/ocp/usb@47400000/usb-phy@47401300[0]'
    [ 5.454025] of_get_named_gpiod_flags: can't parse 'vbus-detect-gpio' property of node '/ocp/usb@47400000/usb-phy@47401300[0]'
    [ 5.616624] am335x-phy-driver 47401300.usb-phy: using lookup tables for GPIO lookup
    [ 5.650398] davinci_evm sound: tlv320aic3x-hifi <-> 48038000.mcasp mapping ok
    [ 5.771286] am335x-phy-driver 47401300.usb-phy: lookup for GPIO vbus-detect failed
    [ 5.830435] remoteproc0: powering up wkup_m3
    [ 5.871571] remoteproc0: Booting fw image am335x-pm-firmware.elf, size 219803
    [ 5.879407] remoteproc0: remote processor wkup_m3 is now up
    [ 5.885340] wkup_m3_ipc 44e11324.wkup_m3_ipc: CM3 Firmware Version = 0x191
    [ 5.918688] 47401300.usb-phy supply vcc not found, using dummy regulator
    [ 6.012634] am335x-phy-driver 47401b00.usb-phy: GPIO lookup for consumer reset
    [ 6.020232] am335x-phy-driver 47401b00.usb-phy: using device tree for GPIO lookup
    [ 6.150366] of_get_named_gpiod_flags: can't parse 'reset-gpios' property of node '/ocp/usb@47400000/usb-phy@47401b00[0]'
    [ 6.226266] of_get_named_gpiod_flags: can't parse 'reset-gpio' property of node '/ocp/usb@47400000/usb-phy@47401b00[0]'
    [ 6.301356] am335x-phy-driver 47401b00.usb-phy: using lookup tables for GPIO lookup
    [ 6.309378] am335x-phy-driver 47401b00.usb-phy: lookup for GPIO reset failed
    [ 6.383305] am335x-phy-driver 47401b00.usb-phy: GPIO lookup for consumer vbus-detect
    [ 6.399033] am335x-phy-driver 47401b00.usb-phy: using device tree for GPIO lookup
    [ 6.437445] of_get_named_gpiod_flags: can't parse 'vbus-detect-gpios' property of node '/ocp/usb@47400000/usb-phy@47401b00[0]'
    [ 6.489404] of_get_named_gpiod_flags: can't parse 'vbus-detect-gpio' property of node '/ocp/usb@47400000/usb-phy@47401b00[0]'
    [ 6.511999] FAT-fs (mmcblk0p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
    [ 6.531325] am335x-phy-driver 47401b00.usb-phy: using lookup tables for GPIO lookup
    [ 6.555128] am335x-phy-driver 47401b00.usb-phy: lookup for GPIO vbus-detect failed
    [ 6.579636] 47401b00.usb-phy supply vcc not found, using dummy regulator
    [ 6.638598] omap_rng 48310000.rng: OMAP Random Number Generator ver. 20
    [ 6.829295] usbcore: registered new interface driver usbfs
    [ 6.868857] usbcore: registered new interface driver hub
    [ 6.884174] usbcore: registered new device driver usb
    [ 6.988098] musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, bulk combine, bulk split, HB-ISO Rx, HB-ISO Tx, SoftConn)
    [ 6.999286] musb-hdrc: MHDRC RTL version 2.0
    [ 7.003985] musb-hdrc: setup fifo_mode 4
    [ 7.008092] musb-hdrc: 28/31 max ep, 16384/16384 memory
    [ 7.019466] musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, bulk combine, bulk split, HB-ISO Rx, HB-ISO Tx, SoftConn)
    [ 7.030582] musb-hdrc: MHDRC RTL version 2.0
    [ 7.035146] musb-hdrc: setup fifo_mode 4
    [ 7.039246] musb-hdrc: 28/31 max ep, 16384/16384 memory
    [ 7.044829] musb-hdrc musb-hdrc.1.auto: MUSB HDRC host driver
    [ 7.050874] musb-hdrc musb-hdrc.1.auto: new USB bus registered, assigned bus number 1
    [ 7.059252] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
    [ 7.066387] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
    [ 7.073995] usb usb1: Product: MUSB HDRC host driver
    [ 7.079194] usb usb1: Manufacturer: Linux 4.1.13-g8dc6617 musb-hcd
    [ 7.085659] usb usb1: SerialNumber: musb-hdrc.1.auto
    [ 7.092139] hub 1-0:1.0: USB hub found
    [ 7.096148] hub 1-0:1.0: 1 port detected
    [ 7.252616] EXT4-fs (mmcblk0p2): re-mounted. Opts: commit=1,data=ordered
    [ 7.396984] random: dd urandom read with 126 bits of entropy available
    [ 8.061244] random: nonblocking pool is initialized
    [ 8.364718] net eth0: initializing cpsw version 1.12 (0)
    [ 8.451380] net eth0: phy found : id is : 0x221622
    [ 12.452138] cpsw 4a100000.ethernet eth0: Link is Up - 1Gbps/Full - flow control rx/tx
  • Some more information. Have tried 7E1 as well, but it appears to be a combination of even parity and 485 regardless of stop bit 1 or 2. It also appears that an occasional serial transaction does get through, I've seen it as unlucky as 1 in 30 or as good as 50%. Verified that under the old sitara sdk I can go 10 for 10 under the same serial settings. I've also attached a log of the boot up. I've been trying to revert portions of omap-serial.c but hard to tell if I'm getting any improvement.

    =~=~=~=~=~=~=~=~=~=~=~= PuTTY log 2016.03.23 08:18:59 =~=~=~=~=~=~=~=~=~=~=~=
    
    U-Boot SPL 2015.01-00001-g1188880-dirty (Mar 09 2016 - 11:04:54)
    Overriding Board ID!
    Overriding Board ID!
    Overriding Board ID!
    Overriding Board ID!
    MMC: block number 0x100 exceeds max(0x0)
    MMC: block number 0x200 exceeds max(0x0)
    *** Error - No Valid Environment Area found
    Using default environment
    
    reading u-boot.img
    reading u-boot.img
    
    
    
    U-Boot 2015.01-00001-g1188880-dirty (Mar 09 2016 - 11:04:54)
    
    
           Watchdog enabled
    
    I2C:   ready
    
    DRAM:  512 MiB
    
    MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1
    
    Overriding Board ID!
    
    Net:   <ethaddr> not set. Validating first E-fuse MAC
    
    Overriding Board ID!
    
    cpsw, usb_ether
    
    Hit any key to stop autoboot:  1  0 
    
    switch to partitions #0, OK
    
    mmc0 is current device
    
    SD/MMC found on device 0
    
    reading boot.scr
    
    ** Unable to read file boot.scr **
    
    100 bytes read in 12 ms (7.8 KiB/s)
    
    Loaded environment from /boot/uEnv.txt
    
    Importing environment from mmc ...
    
    4321416 bytes read in 250 ms (16.5 MiB/s)
    
    35027 bytes read in 16 ms (2.1 MiB/s)
    
    Kernel image @ 0x82000000 [ 0x000000 - 0x41f088 ]
    
    ## Flattened Device Tree blob at 88000000
    
       Booting using the fdt blob at 0x88000000
    
       Loading Device Tree to 8fff4000, end 8ffff8d2 ... OK
    
    
    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.13-g8dc6617 (adaptive-sdc@SDC-STATION) (gcc version 4.9.3 20150413 (prerelease) (Linaro GCC 4.9-2015.05) ) #20 PREEMPT Thu Mar 17 10:43:52 CDT 2016
    [    0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c5387d
    [    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
    [    0.000000] Machine model: TI AM335x BeagleBone Black
    [    0.000000] debug: ignoring loglevel setting.
    [    0.000000] cma: Reserved 24 MiB at 0x9e800000
    [    0.000000] Memory policy: Data cache writeback
    [    0.000000] On node 0 totalpages: 131072
    [    0.000000] free_area_init_node: node 0, pgdat c0891334, node_mem_map de36d000
    [    0.000000]   Normal zone: 1152 pages used for memmap
    [    0.000000]   Normal zone: 0 pages reserved
    [    0.000000]   Normal zone: 131072 pages, LIFO batch:31
    [    0.000000] CPU: All CPU(s) started in SVC mode.
    [    0.000000] AM335X ES2.1 (sgx neon )
    [    0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
    [    0.000000] pcpu-alloc: [0] 0 
    [    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 129920
    [    0.000000] Kernel command line: console=ttyO0,115200n8 psplash=false rootflags=barrier=1,commit=1 consoleblank=0 debug ignore_loglevel loglevel=7 root=/dev/mmcblk0p2 ro rootfstype=ext4 rootwait
    [    0.000000] PID hash table entries: 2048 (order: 1, 8192 bytes)
    [    0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
    [    0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
    [    0.000000] Memory: 485456K/524288K available (6175K kernel code, 233K rwdata, 2080K rodata, 252K init, 219K bss, 14256K reserved, 24576K cma-reserved, 0K highmem)
    [    0.000000] Virtual kernel memory layout:
    [    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    [    0.000000]     fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
    [    0.000000]     vmalloc : 0xe0800000 - 0xff000000   ( 488 MB)
    [    0.000000]     lowmem  : 0xc0000000 - 0xe0000000   ( 512 MB)
    [    0.000000]     pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
    [    0.000000]     modules : 0xbf000000 - 0xbfe00000   (  14 MB)
    [    0.000000]       .text : 0xc0008000 - 0xc08180ac   (8257 kB)
    [    0.000000]       .init : 0xc0819000 - 0xc0858000   ( 252 kB)
    [    0.000000]       .data : 0xc0858000 - 0xc08927f0   ( 234 kB)
    [    0.000000]        .bss : 0xc0895000 - 0xc08cbed0   ( 220 kB)
    [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
    [    0.000000] Preemptible hierarchical RCU implementation.
    [    0.000000] 	Additional per-CPU info printed with stalls.
    [    0.000000] NR_IRQS:16 nr_irqs:16 16
    [    0.000000] IRQ: Found an INTC at 0xfa200000 (revision 5.0) with 128 interrupts
    [    0.000000] OMAP clockevent source: timer2 at 24000000 Hz
    [    0.000013] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns
    [    0.000030] clocksource timer1: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
    [    0.000039] OMAP clocksource: timer1 at 24000000 Hz
    [    0.000198] Console: colour dummy device 80x30
    [    0.000219] Calibrating delay loop... 996.14 BogoMIPS (lpj=4980736)
    [    0.089320] pid_max: default: 32768 minimum: 301
    [    0.089414] Security Framework initialized
    [    0.089460] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
    [    0.089469] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
    [    0.090081] Initializing cgroup subsys blkio
    [    0.090104] Initializing cgroup subsys memory
    [    0.090141] Initializing cgroup subsys devices
    [    0.090155] Initializing cgroup subsys freezer
    [    0.090168] Initializing cgroup subsys perf_event
    [    0.090190] CPU: Testing write buffer coherency: ok
    [    0.090537] Setting up static identity map for 0x80008200 - 0x80008270
    [    0.091911] devtmpfs: initialized
    [    0.100579] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3
    [    0.108008] omap_hwmod: tptc0 using broken dt data from edma
    [    0.108109] omap_hwmod: tptc1 using broken dt data from edma
    [    0.108190] omap_hwmod: tptc2 using broken dt data from edma
    [    0.112447] omap_hwmod: debugss: _wait_target_disable failed
    [    0.166792] clocksource jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
    [    0.168750] pinctrl core: initialized pinctrl subsystem
    [    0.169989] NET: Registered protocol family 16
    [    0.171901] DMA: preallocated 256 KiB pool for atomic coherent allocations
    [    0.199309] cpuidle: using governor ladder
    [    0.229299] cpuidle: using governor menu
    [    0.232188] gpiochip_add: registered GPIOs 0 to 31 on device: gpio
    [    0.232461] OMAP GPIO hardware version 0.1
    [    0.233089] gpiochip_add: registered GPIOs 32 to 63 on device: gpio
    [    0.233749] gpiochip_add: registered GPIOs 64 to 95 on device: gpio
    [    0.234362] gpiochip_add: registered GPIOs 96 to 127 on device: gpio
    [    0.241424] No ATAGs?
    [    0.241454] hw-breakpoint: debug architecture 0x4 unsupported.
    [    0.276322] edma-dma-engine edma-dma-engine.0: TI EDMA DMA engine driver
    [    0.276773] of_get_named_gpiod_flags: can't parse 'gpio' property of node '/fixedregulator@0[0]'
    [    0.278073] vgaarb: loaded
    [    0.278546] SCSI subsystem initialized
    [    0.278976] omap_i2c 44e0b000.i2c: could not find pctldev for node /ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_i2c0_pins, deferring probe
    [    0.279027] omap_i2c 4802a000.i2c: could not find pctldev for node /ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_i2c1_pins, deferring probe
    [    0.279056] omap_i2c 4819c000.i2c: could not find pctldev for node /ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_i2c2_pins, deferring probe
    [    0.279161] media: Linux media interface: v0.10
    [    0.279217] Linux video capture interface: v2.00
    [    0.279258] pps_core: LinuxPPS API ver. 1 registered
    [    0.279265] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
    [    0.279385] PTP clock support registered
    [    0.280118] omap-mailbox 480c8000.mailbox: omap mailbox rev 0x400
    [    0.280329] Advanced Linux Sound Architecture Driver Initialized.
    [    0.281064] Switched to clocksource timer1
    [    0.290048] NET: Registered protocol family 2
    [    0.290772] TCP established hash table entries: 4096 (order: 2, 16384 bytes)
    [    0.290815] TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
    [    0.290853] TCP: Hash tables configured (established 4096 bind 4096)
    [    0.290921] UDP hash table entries: 256 (order: 0, 4096 bytes)
    [    0.290937] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
    [    0.291162] NET: Registered protocol family 1
    [    0.291503] RPC: Registered named UNIX socket transport module.
    [    0.291516] RPC: Registered udp transport module.
    [    0.291522] RPC: Registered tcp transport module.
    [    0.291527] RPC: Registered tcp NFSv4.1 backchannel transport module.
    [    0.291553] PCI: CLS 0 bytes, default 64
    [    0.292376] CPU PMU: Failed to parse /pmu/interrupt-affinity[0]
    [    0.292419] hw perfevents: enabled with armv7_cortex_a8 PMU driver, 5 counters available
    [    0.294113] futex hash table entries: 256 (order: -1, 3072 bytes)
    [    0.294187] audit: initializing netlink subsys (disabled)
    [    0.294253] audit: type=2000 audit(0.280:1): initialized
    [    0.300466] VFS: Disk quotas dquot_6.6.0
    [    0.300654] VFS: Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
    [    0.302709] NFS: Registering the id_resolver key type
    [    0.302782] Key type id_resolver registered
    [    0.302790] Key type id_legacy registered
    [    0.302857] jffs2: version 2.2. (NAND) (SUMMARY)  © 2001-2006 Red Hat, Inc.
    [    0.305060] NET: Registered protocol family 38
    [    0.305117] io scheduler noop registered
    [    0.305128] io scheduler deadline registered
    [    0.305179] io scheduler cfq registered (default)
    [    0.306125] pinctrl-single 44e10800.pinmux: 142 pins at pa f9e10800 size 568
    [    0.307650] wkup_m3_ipc 44e11324.wkup_m3_ipc: could not get rproc handle
    [    0.308653] omap_uart 44e09000.serial: no wakeirq for uart0
    [    0.308674] of_get_named_gpiod_flags: can't parse 'rts-gpio' property of node '/ocp/serial@44e09000[0]'
    [    0.308841] 44e09000.serial: ttyO0 at MMIO 0x44e09000 (irq = 155, base_baud = 3000000) is a OMAP UART0
    [    1.086278] console [ttyO0] enabled
    [    1.090409] omap_uart 48022000.serial: no wakeirq for uart1
    [    1.096292] of_get_named_gpiod_flags: parsed 'rts-gpio' property of node '/ocp/serial@48022000[0]' - status (0)
    [    1.107017] 48022000.serial: ttyO1 at MMIO 0x48022000 (irq = 156, base_baud = 3000000) is a OMAP UART1
    [    1.117173] omap_uart 481a8000.serial: no wakeirq for uart4
    [    1.123035] of_get_named_gpiod_flags: can't parse 'rts-gpio' property of node '/ocp/serial@481a8000[0]'
    [    1.132957] 481a8000.serial: ttyO4 at MMIO 0x481a8000 (irq = 157, base_baud = 3000000) is a OMAP UART4
    [    1.143149] [drm] Initialized drm 1.1.0 20060810
    [    1.148367] panel panel: GPIO lookup for consumer enable
    [    1.153969] panel panel: using device tree for GPIO lookup
    [    1.159700] of_get_named_gpiod_flags: can't parse 'enable-gpios' property of node '/panel[0]'
    [    1.168614] of_get_named_gpiod_flags: can't parse 'enable-gpio' property of node '/panel[0]'
    [    1.177434] panel panel: using lookup tables for GPIO lookup
    [    1.183351] panel panel: lookup for GPIO enable failed
    [    1.189894] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
    [    1.196904] [drm] No driver support for vblank timestamp query.
    [    1.214285] Console: switching to colour frame buffer device 100x37
    [    1.226512] tilcdc 4830e000.lcdc: fb0:  frame buffer device
    [    1.232402] tilcdc 4830e000.lcdc: registered panic notifier
    [    1.261088] [drm] Initialized tilcdc 1.0.0 20121205 on minor 0
    [    1.267362] brd: module loaded
    [    1.270745] loop: module loaded
    [    1.274896] mtdoops: mtd device (mtddev=name/number) must be supplied
    [    1.341096] davinci_mdio 4a101000.mdio: davinci mdio revision 1.6
    [    1.347495] davinci_mdio 4a101000.mdio: detected phy mask fffffffd
    [    1.354748] libphy: 4a101000.mdio: probed
    [    1.358991] davinci_mdio 4a101000.mdio: phy[1]: device 4a101000.mdio:01, driver Micrel KSZ9031 Gigabit PHY
    [    1.369644] cpsw 4a100000.ethernet: Detected MACID = d0:39:72:17:f0:34
    [    1.378152] mousedev: PS/2 mouse device common for all mice
    [    1.384184] i2c /dev entries driver
    [    1.388375] omap_wdt: PRM_RSTST Reboot Cause: 1
    [    1.393904] omap_wdt: OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec
    [    1.401940] omap_hsmmc 48060000.mmc: GPIO lookup for consumer cd
    [    1.408271] omap_hsmmc 48060000.mmc: using device tree for GPIO lookup
    [    1.415151] of_get_named_gpiod_flags: parsed 'cd-gpios' property of node '/ocp/mmc@48060000[0]' - status (0)
    [    1.425497] omap_hsmmc 48060000.mmc: Got CD GPIO
    [    1.430320] omap_hsmmc 48060000.mmc: GPIO lookup for consumer wp
    [    1.436606] omap_hsmmc 48060000.mmc: using device tree for GPIO lookup
    [    1.443454] of_get_named_gpiod_flags: can't parse 'wp-gpios' property of node '/ocp/mmc@48060000[0]'
    [    1.453002] of_get_named_gpiod_flags: can't parse 'wp-gpio' property of node '/ocp/mmc@48060000[0]'
    [    1.462470] omap_hsmmc 48060000.mmc: using lookup tables for GPIO lookup
    [    1.469466] omap_hsmmc 48060000.mmc: lookup for GPIO wp failed
    [    1.511916] of_get_named_gpiod_flags: parsed 'gpios' property of node '/leds/led@2[0]' - status (0)
    [    1.524838] of_get_named_gpiod_flags: parsed 'gpios' property of node '/leds/led@3[0]' - status (0)
    [    1.534526] of_get_named_gpiod_flags: parsed 'gpios' property of node '/leds/led@4[0]' - status (0)
    [    1.544174] of_get_named_gpiod_flags: parsed 'gpios' property of node '/leds/led@5[0]' - status (0)
    [    1.553902] ledtrig-cpu: registered to indicate activity on CPUs
    [    1.560626] omap-aes 53500000.aes: OMAP AES hw accel rev: 3.2
    [    1.570976] omap-sham 53100000.sham: hw accel on OMAP rev 4.3
    [    1.578630]  remoteproc0: wkup_m3 is available
    [    1.583442]  remoteproc0: Note: remoteproc is still under development and considered experimental.
    [    1.592933]  remoteproc0: THE BINARY FORMAT IS NOT YET FINALIZED, and backward compatibility isn't yet guaranteed.
    [    1.604054]  remoteproc0: Direct firmware load for am335x-pm-firmware.elf failed with error -2
    [    1.615756] oprofile: using arm/armv7
    [    1.619895] Initializing XFRM netlink socket
    [    1.624593]  remoteproc0: Falling back to user helper
    [    1.629976] NET: Registered protocol family 17
    [    1.634908] NET: Registered protocol family 15
    [    1.639734] Key type dns_resolver registered
    [    1.644273] mmc0: host does not support reading read-only switch, assuming write-enable
    [    1.652898] omap_voltage_late_init: Voltage driver support not added
    [    1.659901] cpu cpu0: of_pm_voltdm_notifier_register: Failed to get cpu0 regulator/voltdm: -517
    [    1.669153] mmc0: new high speed SD card at address b368
    [    1.674744] cpu cpu0: cpu0 clock notifier not ready, retry
    [    1.680792] ThumbEE CPU extension supported.
    [    1.685741] mmcblk0: mmc0:b368 N1BW1 1.91 GiB 
    [    1.691176] Registering SWP/SWPB emulation handler
    [    1.696296]  mmcblk0: p1 p2
    [    1.727966] tps65217 0-0024: TPS65217 ID 0xe version 1.2
    [    1.734188] gpiochip_find_base: found new base at 504
    [    1.739605] gpiochip_add: registered GPIOs 504 to 511 on device: pca9534
    [    1.746634] pca953x 0-0020: interrupt support not compiled in
    [    1.753180] lm75 0-0048: hwmon0: sensor 'lm75a'
    [    1.759064] rtc-ds1307 0-006f: rtc core: registered mcp7940x as rtc0
    [    1.765767] rtc-ds1307 0-006f: 64 bytes nvram
    [    1.770470] omap_i2c 44e0b000.i2c: bus 0 rev0.11 at 400 kHz
    [    1.777272] omap_i2c 4802a000.i2c: bus 1 rev0.11 at 400 kHz
    [    1.783940] omap_i2c 4819c000.i2c: bus 2 rev0.11 at 400 kHz
    [    1.790665] cpu cpu0: of_pm_voltdm_notifier_register: Fail calculating voltage latency[950000<->1325000]:-22
    [    1.801492] cpu cpu0: of_pm_voltdm_notifier_register: Fail calculating voltage latency[950000<->1325000]:-22
    [    1.812717] rtc-ds1307 0-006f: setting system clock to 2016-03-23 13:21:02 UTC (1458739262)
    [    1.824735] ALSA device list:
    [    1.827854]   No soundcards found.
    [    1.835686] EXT4-fs (mmcblk0p2): INFO: recovery required on readonly filesystem
    [    1.843543] EXT4-fs (mmcblk0p2): write access will be enabled during recovery
    [    2.964123] EXT4-fs (mmcblk0p2): recovery complete
    [    3.113382] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: barrier=1,commit=1
    [    3.123289] VFS: Mounted root (ext4 filesystem) readonly on device 179:2.
    [    3.137921] devtmpfs: mounted
    [    3.142288] Freeing unused kernel memory: 252K (c0819000 - c0858000)
    
    INIT: version 2.88 booting
    
    Boot splashscreen disabled
    Starting udev
    udev: Not using udev cache because of changes detected in the following files:
    udev:     /proc/version /proc/cmdline /proc/devices
    udev:     lib/udev/rules.d/* etc/udev/rules.d/*
    udev: The udev cache will be regenerated. To identify the detected changes,
    udev: compare the cached sysconf at   /etc/udev/cache.data
    udev: against the current sysconf at  /dev/shm/udev.cache
    [    3.906395] udevd[100]: starting version 182
    [    4.278112] am335x-phy-driver 47401300.usb-phy: GPIO lookup for consumer reset
    [    4.358138] of_get_named_gpiod_flags: can't parse 'gpio-reset' property of node '/ocp/i2c@44e0b000/tlv320aic3x@1b[0]'
    [    4.431233] am335x-phy-driver 47401300.usb-phy: using device tree for GPIO lookup
    [    4.439086] of_get_named_gpiod_flags: can't parse 'reset-gpios' property of node '/ocp/usb@47400000/usb-phy@47401300[0]'
    [    4.541677] at24 0-0050: 4096 byte 24c32 EEPROM, writable, 1 bytes/write
    [    4.666428] of_get_named_gpiod_flags: can't parse 'reset-gpio' property of node '/ocp/usb@47400000/usb-phy@47401300[0]'
    [    4.751760] am335x-phy-driver 47401300.usb-phy: using lookup tables for GPIO lookup
    [    4.821252] am335x-phy-driver 47401300.usb-phy: lookup for GPIO reset failed
    [    4.875044] am335x-phy-driver 47401300.usb-phy: GPIO lookup for consumer vbus-detect
    [    4.939591] am335x-phy-driver 47401300.usb-phy: using device tree for GPIO lookup
    [    5.015427] of_get_named_gpiod_flags: can't parse 'vbus-detect-gpios' property of node '/ocp/usb@47400000/usb-phy@47401300[0]'
    [    5.105428] of_get_named_gpiod_flags: can't parse 'vbus-detect-gpio' property of node '/ocp/usb@47400000/usb-phy@47401300[0]'
    [    5.235841] am335x-phy-driver 47401300.usb-phy: using lookup tables for GPIO lookup
    [    5.386996] am335x-phy-driver 47401300.usb-phy: lookup for GPIO vbus-detect failed
    [    5.464716]  remoteproc0: powering up wkup_m3
    [    5.470289]  remoteproc0: Booting fw image am335x-pm-firmware.elf, size 219803
    [    5.487272] davinci_evm sound: tlv320aic3x-hifi <-> 48038000.mcasp mapping ok
    [    5.551447] 47401300.usb-phy supply vcc not found, using dummy regulator
    [    5.599264]  remoteproc0: remote processor wkup_m3 is now up
    [    5.599297] wkup_m3_ipc 44e11324.wkup_m3_ipc: CM3 Firmware Version = 0x191
    [    5.682458] am335x-phy-driver 47401b00.usb-phy: GPIO lookup for consumer reset
    [    5.690059] am335x-phy-driver 47401b00.usb-phy: using device tree for GPIO lookup
    [    5.818587] of_get_named_gpiod_flags: can't parse 'reset-gpios' property of node '/ocp/usb@47400000/usb-phy@47401b00[0]'
    [    5.908875] of_get_named_gpiod_flags: can't parse 'reset-gpio' property of node '/ocp/usb@47400000/usb-phy@47401b00[0]'
    [    5.986098] am335x-phy-driver 47401b00.usb-phy: using lookup tables for GPIO lookup
    [    6.038844] am335x-phy-driver 47401b00.usb-phy: lookup for GPIO reset failed
    [    6.067940] am335x-phy-driver 47401b00.usb-phy: GPIO lookup for consumer vbus-detect
    [    6.100617] am335x-phy-driver 47401b00.usb-phy: using device tree for GPIO lookup
    [    6.119707] of_get_named_gpiod_flags: can't parse 'vbus-detect-gpios' property of node '/ocp/usb@47400000/usb-phy@47401b00[0]'
    [    6.175780] of_get_named_gpiod_flags: can't parse 'vbus-detect-gpio' property of node '/ocp/usb@47400000/usb-phy@47401b00[0]'
    [    6.220824] am335x-phy-driver 47401b00.usb-phy: using lookup tables for GPIO lookup
    [    6.236817] FAT-fs (mmcblk0p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
    [    6.251308] am335x-phy-driver 47401b00.usb-phy: lookup for GPIO vbus-detect failed
    [    6.273738] 47401b00.usb-phy supply vcc not found, using dummy regulator
    [    6.325295] omap_rng 48310000.rng: OMAP Random Number Generator ver. 20
    [    6.507226] usbcore: registered new interface driver usbfs
    [    6.553632] usbcore: registered new interface driver hub
    [    6.571938] usbcore: registered new device driver usb
    [    6.678218] musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, bulk combine, bulk split, HB-ISO Rx, HB-ISO Tx, SoftConn)
    [    6.689922] musb-hdrc: MHDRC RTL version 2.0 
    [    6.694562] musb-hdrc: setup fifo_mode 4
    [    6.698697] musb-hdrc: 28/31 max ep, 16384/16384 memory
    [    6.710146] musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, bulk combine, bulk split, HB-ISO Rx, HB-ISO Tx, SoftConn)
    [    6.721277] musb-hdrc: MHDRC RTL version 2.0 
    [    6.725826] musb-hdrc: setup fifo_mode 4
    [    6.729923] musb-hdrc: 28/31 max ep, 16384/16384 memory
    [    6.735532] musb-hdrc musb-hdrc.1.auto: MUSB HDRC host driver
    [    6.741572] musb-hdrc musb-hdrc.1.auto: new USB bus registered, assigned bus number 1
    [    6.749950] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
    [    6.757067] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
    [    6.764686] usb usb1: Product: MUSB HDRC host driver
    [    6.769867] usb usb1: Manufacturer: Linux 4.1.13-g8dc6617 musb-hcd
    [    6.776340] usb usb1: SerialNumber: musb-hdrc.1.auto
    [    6.782829] hub 1-0:1.0: USB hub found
    [    6.786789] hub 1-0:1.0: 1 port detected
    [    6.972187] EXT4-fs (mmcblk0p2): re-mounted. Opts: commit=1,data=ordered
    bootlogd: cannot allocate pseudo tty: No such file or directory
    Starting random number generator daemon.
    [    7.133583] random: dd urandom read with 123 bits of entropy available
    Populating dev cache
    [    7.191247] usb 1-1: new low-speed USB device number 2 using musb-hdrc
    [    7.357963] usb 1-1: New USB device found, idVendor=0d62, idProduct=001d
    [    7.376633] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
    [    7.403944] usb 1-1: Product: USB Combo Keyboard
    [    7.408789] usb 1-1: Manufacturer: Darfon
    ALSA: Restoring mixer settings...
    
    INIT: Entering runlevel: 5
    
    Configuring network interfaces... [    8.255876] random: nonblocking pool is initialized
    [    8.293287] net eth0: initializing cpsw version 1.12 (0)
    [    8.371373] net eth0: phy found : id is : 0x221622
    [    8.438301] input: Darfon USB Combo Keyboard as /devices/platform/ocp/47400000.usb/47401c00.usb/musb-hdrc.1.auto/usb1/1-1/1-1:1.0/0003:0D62:001D.0001/input/input0
    done.
    [    8.521421] hid-generic 0003:0D62:001D.0001: input: USB HID v1.00 Keyboard [Darfon USB Combo Keyboard] on usb-musb-hdrc.1.auto-1/input0
    [    8.554903] input: Darfon USB Combo Keyboard as /devices/platform/ocp/47400000.usb/47401c00.usb/musb-hdrc.1.auto/usb1/1-1/1-1:1.1/0003:0D62:001D.0002/input/input1
    Starting system message bus: [    8.621299] hid-generic 0003:0D62:001D.0002: input: USB HID v1.00 Device [Darfon USB Combo Keyboard] on usb-musb-hdrc.1.auto-1/input1
    [    8.639191] usbcore: registered new interface driver usbhid
    [    8.647139] usbhid: USB HID core driver
    [    8.662894] usbcore: registered new interface driver usbkbd
    dbus.
    UIM SYSFS Node Not Found
    INITIALIZING GRAPHICS DRIVER ...
    Starting Dropbear SSH server: dropbear.
    Starting syslogd/klogd: done
    Enabling thermal zones...
    /etc/rc5.d/S98thermal-zone-init: line 7: /sys/class/thermal/thermal_zone*/mode: No such file or directory
    ***************************************************************
    ***************************************************************
    NOTICE: This file system contains the following GPLv3 packages:
    	autoconf
    	binutils
    	cpp-symlinks
    	cpp
    	g++-symlinks
    	g++
    	gcc-symlinks
    	gcc
    	gdb
    	gdbserver
    	gstreamer1.0-libav
    	libgmp10
    	libmpc3
    	libmpfr4
    	make
    
    If you do not wish to distribute GPLv3 components please remove
    the above packages prior to distribution.  This can be done using
    the opkg remove command.  i.e.:
        opkg remove <package>
    Where <package> is the name printed in the list above
    
    NOTE: If the package is a dependency of another package you
          will be notified of the dependent packages.  You should
          use the --force-removal-of-dependent-packages option to
          also remove the dependent packages as well
    ***************************************************************
    ***************************************************************
    Starting Adaptive Display Adaptor Daemon ...
    [   14.371999] cpsw 4a100000.ethernet eth0: Link is Up - 1Gbps/Full - flow control off
    umount: can't forcibly umount /mnt/.psplash: Invalid argument
    
    
     _____                    _____           _         _   
    
    |  _  |___ ___ ___ ___   |  _  |___ ___  |_|___ ___| |_ 
    
    |     |  _| .'| . | . |  |   __|  _| . | | | -_|  _|  _|
    
    |__|__|_| |__,|_  |___|  |__|  |_| |___|_| |___|___|_|  
    
                  |___|                    |___|            
    
    
    
    Arago Project http://arago-project.org P1900-3-SSC /dev/ttyO0
    
    
    
    Arago 2015.12 P1900-3-SSC /dev/ttyO0
    
    
    
    P1900-3-SSC login: 

  • Hi,

    I have asked the software team to look at this. They should post feedback directly here.
  • Hi,

    Just an FYI, Sitara SDKs switched from omap-serial to 8250 driver after 08.00.00.00. If you are trying to rework the omap-serial.c, you need to modify the kernel defconfig file, see: processors.wiki.ti.com/.../Sitara_Linux_UART_-_Switching_to_8250_Driver

    Best Regards,
    Yordan
  • We did build with the old omap serial support. The 8250 was debated, but at the time we thought we were mitigating risk. I did briefly try a build with 8250 but I suspect device tree bindings may be different as the 485 did not work initially (I did rename the ttyOx to ttySx). It does appear that sections of 485 support have moved up into higher source files in the transition from 3.14 to 4.1 (such as serial_core), so I can only guess at what level things may be tripping up. So far it seems to be the combination of 485 and even parity.
  • Actually looking at 8250 omap, I can't see evidence of 485 support in it at present. Looks like there may be some proposed fragments of patches to add 485 to 8250 omap, but not sure what kernel they may be meant for. lkml.org/.../587 At this point not sure whether to keep looking at omap-serial, try to get 485 into 8250 omap to see if issue exists there, or try to get by on the old sdk for the duration.
  • For clarification our customized am335x uses the following uarts.

    UART0 - RS232 system console

    UART1 - RS485 application

    UART4 - RS232 application

    Under the old sitara sdk, both application ports work fine at both no parity and even. Under the new sdk, 485 with even parity only works rarely to occasionally, however the RS232 port functions cleanly for both parities and 485 with no parity seems fine. I've had the application log the bytes it is reading, it appears that bytes are being lost when using 485 with even parity. Has changes to the drivers regarding 485 perhaps lead to erroneous parity errors? However I did try clearing both IGNPAR and PARMRK in the application and the missing bytes are simply not there versus having \0 bytes in their place.

  • Hi,

    I checked the 8250 driver, and indeed there is no support for rs485, yet. I also checked the latest mainline release v.:4.5, and couldn't find anything related to rs485 ported in 8250_omap.c. I have no information when and if, support for this interface will be available in TI releases.

    Since porting the rs485 functionality in kernel 4.1 could be quite time consuming, for the time being , I'd suggest to stick with the older sdk & omap_serial driver.

    Best Regards,
    Yordan
  • The thing driving us into the new sdk is that out in the public repos is a workaround for the tilcdc sync lost issue (aka "snowcrash" e2e.ti.com/.../1653040 ). So at the moment it appears we either need to try to back port that workaround to the old sdk, or attempt to revert the serial in the present sdk to a point where 485 worked with even parity. As the 485 issue is quicker to test for than the video, I've been looking over the serial this morning. Seems like there has been changes both in regards to flow control and 485, but nothing obvious as yet. Though perhaps I'm jumping to the conclusion that the serial is easier than the video and it may be the reverse (my knowing very little of the mechanics of linux drivers).
  • Yordan,

    Unfortunately using the older SDK is not a good option. The fixes being implemented for the DSS are required to fix other issues. Is there an option to roll back the omap serial driver and still use the latest SDK?

    485 functionality is pretty critical for a large number of customers. If this is not in the errata/issues list for the SDK would it make sense to add it?

    Regards,
    Matt

  • Hi Matt,

    matt minga said:
    Is there an option to roll back the omap serial driver and still use the latest SDK?

     

    Here is what I did, and it seems that kernel is initializing both UART0 (as a debug console) & UART2 (configured with customers dts node as RS485) with the omap_serial.c driver: 

    Test platform is BBB, running SDK02.00.01.07 (kernel 4.1.13). 

    In dts I added: 

    uart2_pins: uart2_pins {
                         pinctrl-single,pins = <
                                     0x150 (PIN_INPUT_PULLUP | MUX_MODE1)
                                     0x154 (PIN_INPUT_PULLUP | MUX_MODE1)
                         >;
    };

    &uart2 {
              status = "okay";
              pinctrl-names = "default";
              pinctrl-0 = <&uart2_pins>;
              rs485-rts-delay = <0x5 0x5>;
              rs485-rts-active-high;
              linux,rs485-enabled-at-boot-time;
    };

    In tisdk_am335x-evm_defconfig file I did the following changes (taken from older sdk, which uses omap-serial): 

    #
    # Serial drivers
    #
    #CONFIG_SERIAL_EARLYCON=y
    CONFIG_SERIAL_8250=y
    CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y
    CONFIG_SERIAL_8250_CONSOLE=y
    #previously dma was not set
    CONFIG_SERIAL_8250_DMA=y
    CONFIG_SERIAL_8250_PCI=y
    CONFIG_SERIAL_8250_NR_UARTS=32
    #number was 10
    CONFIG_SERIAL_8250_RUNTIME_UARTS=4
    CONFIG_SERIAL_8250_EXTENDED=y
    CONFIG_SERIAL_8250_MANY_PORTS=y
    CONFIG_SERIAL_8250_SHARE_IRQ=y
    CONFIG_SERIAL_8250_DETECT_IRQ=y
    CONFIG_SERIAL_8250_RSA=y
    # CONFIG_SERIAL_8250_DW is not set
    # CONFIG_SERIAL_8250_EM is not set
    #CONFIG_SERIAL_8250_OMAP=y
    #CONFIG_SERIAL_8250_OMAP_TTYO_FIXUP=y

    #
    # Non-8250 serial port support
    #
    # CONFIG_SERIAL_EARLYCON_ARM_SEMIHOST is not set
    # CONFIG_SERIAL_MAX3100 is not set
    # CONFIG_SERIAL_MAX310X is not set
    CONFIG_SERIAL_CORE=y
    CONFIG_SERIAL_CORE_CONSOLE=y
    # CONFIG_SERIAL_JSM is not set
    #CONFIG_SERIAL_OF_PLATFORM=y
    CONFIG_SERIAL_OMAP=y
    CONFIG_SERIAL_OMAP_CONSOLE=y
    # CONFIG_SERIAL_SCCNXP is not set
    # CONFIG_SERIAL_SC16IS7XX is not set
    # CONFIG_SERIAL_BCM63XX is not set
    # CONFIG_SERIAL_ALTERA_JTAGUART is not set
    # CONFIG_SERIAL_ALTERA_UART is not set
    # CONFIG_SERIAL_IFX6X60 is not set
    # CONFIG_SERIAL_XILINX_PS_UART is not set
    # CONFIG_SERIAL_ARC is not set
    # CONFIG_SERIAL_RP2 is not set
    # CONFIG_SERIAL_FSL_LPUART is not set
    # CONFIG_SERIAL_CONEXANT_DIGICOLOR is not set
    # CONFIG_SERIAL_ST_ASC is not set

    I added the following prints in omap_serial.c to be sure that the driver is inserted in kernel 4.1.13: 
      int ret;

    +  printk("####BEGIN OMAP_SERIAL DRIVER####\n");

      /* The optional wakeirq may be specified in the board dts file */

      if (pdev->dev.of_node) {

    ...............

      ret = serial_omap_probe_rs485(up, pdev->dev.of_node);

    +  printk("####PROBED RS485 SUCCESSFULLY####\n");

      if (ret < 0)

              goto err_rs485;

    As a result kernel on BBB indicated: 
      

    [ 0.311039] ####BEGIN OMAP_SERIAL DRIVER####
    [ 0.311117] omap_uart 44e09000.serial: no wakeirq for uart0
    [ 0.311138] ####PROBED RS485 SUCCESSFULLY####
    [ 0.311298] 44e09000.serial: ttyO0 at MMIO 0x44e09000 (irq = 155, base_baud = 3000000) is a OMAP UART0
    [ 1.041905] console [ttyO0] enabled
    [ 1.045967] ####BEGIN OMAP_SERIAL DRIVER####
    [ 1.050484] omap_uart 48024000.serial: no wakeirq for uart2
    [ 1.056354] ####PROBED RS485 SUCCESSFULLY#### 

    Which indicates that both uarts (debug console & UART2) are being used by omap_serial.c. This configures the system to omap_serial.c in kernel 4.1.13

    I don't have much experience with rs485 interface, so could you try these modifications?  

    Best Regards, 
    Yordan

  • Regarding your other question: 
     

    matt minga said:
    If this is not in the errata/issues list for the SDK would it make sense to add it?

    We don't have the plans for future SDK releases. I've asked the factory team in the internal discussion on this. I will post the feedback from them, as soon as there is one. 

    Best Regards, 
    Yordan

  • This morning I tried rolling back the entire serial folder as just reverting omap-serial didn't seem to get it. I had to flip defines from CONFIG_PM_RUNTIME to CONFIG_PM. However it did compile and the issue seems to no longer be there. I have run a loop of about 6000 485 transactions with 7E2 with no drops. Something in the serial driver system from then to now must be causing the issue with 485 even parity. I will attach a zip of the serial folder I stuffed in there. I will have a look at your post and compare it with our present configuration.https://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/791/serial_2800_mod_5F00_old_2900_.7z

  • Yordan,


    Thank you for the response. We have been running on the omap serial driver already. Switching between the driver versions is not the issue. The question was related to rolling back the kernel sources to allow the 485 to work properly. Ed's response below is more along the lines of what we were talking about doing.

    Generally we like to check with TI or anyone who might no better what the risks are of making changes to drivers.

    Regards,

    Matt Minga

  • Overall are settings are similiar. We turned off the CONFIG_SERIAL_8250 option entirely. I will attach our full config file and decompiled device tree. Our DT pin control is specified a little differently.

    5126.config.txt

    /dts-v1/;
    
    / {
    	#address-cells = <0x1>;
    	#size-cells = <0x1>;
    	compatible = "ti,am335x-bone-black", "ti,am335x-bone", "ti,am33xx";
    	interrupt-parent = <0x1>;
    	model = "TI AM335x BeagleBone Black";
    
    	chosen {
    	};
    
    	aliases {
    		i2c0 = "/ocp/i2c@44e0b000";
    		i2c1 = "/ocp/i2c@4802a000";
    		i2c2 = "/ocp/i2c@4819c000";
    		serial0 = "/ocp/serial@44e09000";
    		serial1 = "/ocp/serial@48022000";
    		serial2 = "/ocp/serial@48024000";
    		serial3 = "/ocp/serial@481a6000";
    		serial4 = "/ocp/serial@481a8000";
    		serial5 = "/ocp/serial@481aa000";
    		d_can0 = "/ocp/can@481cc000";
    		d_can1 = "/ocp/can@481d0000";
    		usb0 = "/ocp/usb@47400000/usb@47401000";
    		usb1 = "/ocp/usb@47400000/usb@47401800";
    		phy0 = "/ocp/usb@47400000/usb-phy@47401300";
    		phy1 = "/ocp/usb@47400000/usb-phy@47401b00";
    		ethernet0 = "/ocp/ethernet@4a100000/slave@4a100200";
    	};
    
    	memory {
    		device_type = "memory";
    		reg = <0x80000000 0x10000000>;
    	};
    
    	cpus {
    		#address-cells = <0x1>;
    		#size-cells = <0x0>;
    
    		cpu@0 {
    			compatible = "arm,cortex-a8";
    			device_type = "cpu";
    			reg = <0x0>;
    			voltage-tolerance = <0x2>;
    			clocks = <0x2>;
    			clock-names = "cpu";
    			clock-latency = <0x493e0>;
    			cpu0-supply = <0x3>;
    		};
    	};
    
    	pmu {
    		compatible = "arm,cortex-a8-pmu";
    		interrupts = <0x3>;
    	};
    
    	soc {
    		compatible = "ti,omap-infra";
    
    		mpu {
    			compatible = "ti,omap3-mpu";
    			ti,hwmods = "mpu";
    			sram = <0x4>;
    		};
    	};
    
    	ocp {
    		compatible = "simple-bus";
    		#address-cells = <0x1>;
    		#size-cells = <0x1>;
    		ranges;
    		ti,hwmods = "l3_main";
    
    		l4_wkup@44c00000 {
    			compatible = "ti,am3-l4-wkup", "simple-bus";
    			#address-cells = <0x1>;
    			#size-cells = <0x1>;
    			ranges = <0x0 0x44c00000 0x280000>;
    
    			wkup_m3@100000 {
    				compatible = "ti,am3352-wkup-m3";
    				reg = <0x100000 0x4000 0x180000 0x2000>;
    				reg-names = "umem", "dmem";
    				ti,hwmods = "wkup_m3";
    				ti,pm-firmware = "am335x-pm-firmware.elf";
    				linux,phandle = <0x27>;
    				phandle = <0x27>;
    			};
    
    			prcm@200000 {
    				compatible = "ti,am3-prcm";
    				reg = <0x200000 0x4000>;
    
    				clocks {
    					#address-cells = <0x1>;
    					#size-cells = <0x0>;
    
    					clk_32768_ck {
    						#clock-cells = <0x0>;
    						compatible = "fixed-clock";
    						clock-frequency = <0x8000>;
    						linux,phandle = <0x15>;
    						phandle = <0x15>;
    					};
    
    					clk_rc32k_ck {
    						#clock-cells = <0x0>;
    						compatible = "fixed-clock";
    						clock-frequency = <0x7d00>;
    						linux,phandle = <0x14>;
    						phandle = <0x14>;
    					};
    
    					virt_19200000_ck {
    						#clock-cells = <0x0>;
    						compatible = "fixed-clock";
    						clock-frequency = <0x124f800>;
    						linux,phandle = <0x22>;
    						phandle = <0x22>;
    					};
    
    					virt_24000000_ck {
    						#clock-cells = <0x0>;
    						compatible = "fixed-clock";
    						clock-frequency = <0x16e3600>;
    						linux,phandle = <0x23>;
    						phandle = <0x23>;
    					};
    
    					virt_25000000_ck {
    						#clock-cells = <0x0>;
    						compatible = "fixed-clock";
    						clock-frequency = <0x17d7840>;
    						linux,phandle = <0x24>;
    						phandle = <0x24>;
    					};
    
    					virt_26000000_ck {
    						#clock-cells = <0x0>;
    						compatible = "fixed-clock";
    						clock-frequency = <0x18cba80>;
    						linux,phandle = <0x25>;
    						phandle = <0x25>;
    					};
    
    					tclkin_ck {
    						#clock-cells = <0x0>;
    						compatible = "fixed-clock";
    						clock-frequency = <0xb71b00>;
    						linux,phandle = <0x13>;
    						phandle = <0x13>;
    					};
    
    					dpll_core_ck {
    						#clock-cells = <0x0>;
    						compatible = "ti,am3-dpll-core-clock";
    						clocks = <0x5 0x5>;
    						reg = <0x490 0x45c 0x468>;
    						linux,phandle = <0x6>;
    						phandle = <0x6>;
    					};
    
    					dpll_core_x2_ck {
    						#clock-cells = <0x0>;
    						compatible = "ti,am3-dpll-x2-clock";
    						clocks = <0x6>;
    						linux,phandle = <0x7>;
    						phandle = <0x7>;
    					};
    
    					dpll_core_m4_ck {
    						#clock-cells = <0x0>;
    						compatible = "ti,divider-clock";
    						clocks = <0x7>;
    						ti,max-div = <0x1f>;
    						reg = <0x480>;
    						ti,index-starts-at-one;
    						linux,phandle = <0xf>;
    						phandle = <0xf>;
    					};
    
    					dpll_core_m5_ck {
    						#clock-cells = <0x0>;
    						compatible = "ti,divider-clock";
    						clocks = <0x7>;
    						ti,max-div = <0x1f>;
    						reg = <0x484>;
    						ti,index-starts-at-one;
    						linux,phandle = <0x17>;
    						phandle = <0x17>;
    					};
    
    					dpll_core_m6_ck {
    						#clock-cells = <0x0>;
    						compatible = "ti,divider-clock";
    						clocks = <0x7>;
    						ti,max-div = <0x1f>;
    						reg = <0x4d8>;
    						ti,index-starts-at-one;
    					};
    
    					dpll_mpu_ck {
    						#clock-cells = <0x0>;
    						compatible = "ti,am3-dpll-clock";
    						clocks = <0x5 0x5>;
    						reg = <0x488 0x420 0x42c>;
    						linux,phandle = <0x2>;
    						phandle = <0x2>;
    					};
    
    					dpll_mpu_m2_ck {
    						#clock-cells = <0x0>;
    						compatible = "ti,divider-clock";
    						clocks = <0x2>;
    						ti,max-div = <0x1f>;
    						reg = <0x4a8>;
    						ti,index-starts-at-one;
    					};
    
    					dpll_ddr_ck {
    						#clock-cells = <0x0>;
    						compatible = "ti,am3-dpll-no-gate-clock";
    						clocks = <0x5 0x5>;
    						reg = <0x494 0x434 0x440>;
    						linux,phandle = <0x8>;
    						phandle = <0x8>;
    					};
    
    					dpll_ddr_m2_ck {
    						#clock-cells = <0x0>;
    						compatible = "ti,divider-clock";
    						clocks = <0x8>;
    						ti,max-div = <0x1f>;
    						reg = <0x4a0>;
    						ti,index-starts-at-one;
    						linux,phandle = <0x9>;
    						phandle = <0x9>;
    					};
    
    					dpll_ddr_m2_div2_ck {
    						#clock-cells = <0x0>;
    						compatible = "fixed-factor-clock";
    						clocks = <0x9>;
    						clock-mult = <0x1>;
    						clock-div = <0x2>;
    					};
    
    					dpll_disp_ck {
    						#clock-cells = <0x0>;
    						compatible = "ti,am3-dpll-no-gate-clock";
    						clocks = <0x5 0x5>;
    						reg = <0x498 0x448 0x454>;
    						linux,phandle = <0xa>;
    						phandle = <0xa>;
    					};
    
    					dpll_disp_m2_ck {
    						#clock-cells = <0x0>;
    						compatible = "ti,divider-clock";
    						clocks = <0xa>;
    						ti,max-div = <0x1f>;
    						reg = <0x4a4>;
    						ti,index-starts-at-one;
    						ti,set-rate-parent;
    						linux,phandle = <0x11>;
    						phandle = <0x11>;
    					};
    
    					dpll_per_ck {
    						#clock-cells = <0x0>;
    						compatible = "ti,am3-dpll-no-gate-j-type-clock";
    						clocks = <0x5 0x5>;
    						reg = <0x48c 0x470 0x49c>;
    						linux,phandle = <0xb>;
    						phandle = <0xb>;
    					};
    
    					dpll_per_m2_ck {
    						#clock-cells = <0x0>;
    						compatible = "ti,divider-clock";
    						clocks = <0xb>;
    						ti,max-div = <0x1f>;
    						reg = <0x4ac>;
    						ti,index-starts-at-one;
    						linux,phandle = <0xc>;
    						phandle = <0xc>;
    					};
    
    					dpll_per_m2_div4_wkupdm_ck {
    						#clock-cells = <0x0>;
    						compatible = "fixed-factor-clock";
    						clocks = <0xc>;
    						clock-mult = <0x1>;
    						clock-div = <0x4>;
    					};
    
    					dpll_per_m2_div4_ck {
    						#clock-cells = <0x0>;
    						compatible = "fixed-factor-clock";
    						clocks = <0xc>;
    						clock-mult = <0x1>;
    						clock-div = <0x4>;
    					};
    
    					cefuse_fck {
    						#clock-cells = <0x0>;
    						compatible = "ti,gate-clock";
    						clocks = <0x5>;
    						ti,bit-shift = <0x1>;
    						reg = <0xa20>;
    					};
    
    					clk_24mhz {
    						#clock-cells = <0x0>;
    						compatible = "fixed-factor-clock";
    						clocks = <0xc>;
    						clock-mult = <0x1>;
    						clock-div = <0x8>;
    						linux,phandle = <0xd>;
    						phandle = <0xd>;
    					};
    
    					clkdiv32k_ck {
    						#clock-cells = <0x0>;
    						compatible = "fixed-factor-clock";
    						clocks = <0xd>;
    						clock-mult = <0x1>;
    						clock-div = <0x2dc>;
    						linux,phandle = <0xe>;
    						phandle = <0xe>;
    					};
    
    					clkdiv32k_ick {
    						#clock-cells = <0x0>;
    						compatible = "ti,gate-clock";
    						clocks = <0xe>;
    						ti,bit-shift = <0x1>;
    						reg = <0x14c>;
    						linux,phandle = <0x12>;
    						phandle = <0x12>;
    					};
    
    					l3_gclk {
    						#clock-cells = <0x0>;
    						compatible = "fixed-factor-clock";
    						clocks = <0xf>;
    						clock-mult = <0x1>;
    						clock-div = <0x1>;
    						linux,phandle = <0x10>;
    						phandle = <0x10>;
    					};
    
    					pruss_ocp_gclk {
    						#clock-cells = <0x0>;
    						compatible = "ti,mux-clock";
    						clocks = <0x10 0x11>;
    						reg = <0x530>;
    					};
    
    					mmu_fck {
    						#clock-cells = <0x0>;
    						compatible = "ti,gate-clock";
    						clocks = <0xf>;
    						ti,bit-shift = <0x1>;
    						reg = <0x914>;
    					};
    
    					timer1_fck {
    						#clock-cells = <0x0>;
    						compatible = "ti,mux-clock";
    						clocks = <0x5 0x12 0x13 0x14 0x15>;
    						reg = <0x528>;
    					};
    
    					timer2_fck {
    						#clock-cells = <0x0>;
    						compatible = "ti,mux-clock";
    						clocks = <0x13 0x5 0x12>;
    						reg = <0x508>;
    					};
    
    					timer3_fck {
    						#clock-cells = <0x0>;
    						compatible = "ti,mux-clock";
    						clocks = <0x13 0x5 0x12>;
    						reg = <0x50c>;
    					};
    
    					timer4_fck {
    						#clock-cells = <0x0>;
    						compatible = "ti,mux-clock";
    						clocks = <0x13 0x5 0x12>;
    						reg = <0x510>;
    					};
    
    					timer5_fck {
    						#clock-cells = <0x0>;
    						compatible = "ti,mux-clock";
    						clocks = <0x13 0x5 0x12>;
    						reg = <0x518>;
    					};
    
    					timer6_fck {
    						#clock-cells = <0x0>;
    						compatible = "ti,mux-clock";
    						clocks = <0x13 0x5 0x12>;
    						reg = <0x51c>;
    					};
    
    					timer7_fck {
    						#clock-cells = <0x0>;
    						compatible = "ti,mux-clock";
    						clocks = <0x13 0x5 0x12>;
    						reg = <0x504>;
    					};
    
    					usbotg_fck {
    						#clock-cells = <0x0>;
    						compatible = "ti,gate-clock";
    						clocks = <0xb>;
    						ti,bit-shift = <0x8>;
    						reg = <0x47c>;
    					};
    
    					dpll_core_m4_div2_ck {
    						#clock-cells = <0x0>;
    						compatible = "fixed-factor-clock";
    						clocks = <0xf>;
    						clock-mult = <0x1>;
    						clock-div = <0x2>;
    						linux,phandle = <0x16>;
    						phandle = <0x16>;
    					};
    
    					ieee5000_fck {
    						#clock-cells = <0x0>;
    						compatible = "ti,gate-clock";
    						clocks = <0x16>;
    						ti,bit-shift = <0x1>;
    						reg = <0xe4>;
    					};
    
    					wdt1_fck {
    						#clock-cells = <0x0>;
    						compatible = "ti,mux-clock";
    						clocks = <0x14 0x12>;
    						reg = <0x538>;
    					};
    
    					l4_rtc_gclk {
    						#clock-cells = <0x0>;
    						compatible = "fixed-factor-clock";
    						clocks = <0xf>;
    						clock-mult = <0x1>;
    						clock-div = <0x2>;
    					};
    
    					l4hs_gclk {
    						#clock-cells = <0x0>;
    						compatible = "fixed-factor-clock";
    						clocks = <0xf>;
    						clock-mult = <0x1>;
    						clock-div = <0x1>;
    					};
    
    					l3s_gclk {
    						#clock-cells = <0x0>;
    						compatible = "fixed-factor-clock";
    						clocks = <0x16>;
    						clock-mult = <0x1>;
    						clock-div = <0x1>;
    					};
    
    					l4fw_gclk {
    						#clock-cells = <0x0>;
    						compatible = "fixed-factor-clock";
    						clocks = <0x16>;
    						clock-mult = <0x1>;
    						clock-div = <0x1>;
    					};
    
    					l4ls_gclk {
    						#clock-cells = <0x0>;
    						compatible = "fixed-factor-clock";
    						clocks = <0x16>;
    						clock-mult = <0x1>;
    						clock-div = <0x1>;
    						linux,phandle = <0x26>;
    						phandle = <0x26>;
    					};
    
    					sysclk_div_ck {
    						#clock-cells = <0x0>;
    						compatible = "fixed-factor-clock";
    						clocks = <0xf>;
    						clock-mult = <0x1>;
    						clock-div = <0x1>;
    					};
    
    					cpsw_125mhz_gclk {
    						#clock-cells = <0x0>;
    						compatible = "fixed-factor-clock";
    						clocks = <0x17>;
    						clock-mult = <0x1>;
    						clock-div = <0x2>;
    						linux,phandle = <0x40>;
    						phandle = <0x40>;
    					};
    
    					cpsw_cpts_rft_clk {
    						#clock-cells = <0x0>;
    						compatible = "ti,mux-clock";
    						clocks = <0x17 0xf>;
    						reg = <0x520>;
    						linux,phandle = <0x41>;
    						phandle = <0x41>;
    					};
    
    					gpio0_dbclk_mux_ck {
    						#clock-cells = <0x0>;
    						compatible = "ti,mux-clock";
    						clocks = <0x14 0x15 0x12>;
    						reg = <0x53c>;
    						linux,phandle = <0x18>;
    						phandle = <0x18>;
    					};
    
    					gpio0_dbclk {
    						#clock-cells = <0x0>;
    						compatible = "ti,gate-clock";
    						clocks = <0x18>;
    						ti,bit-shift = <0x12>;
    						reg = <0x408>;
    					};
    
    					gpio1_dbclk {
    						#clock-cells = <0x0>;
    						compatible = "ti,gate-clock";
    						clocks = <0x12>;
    						ti,bit-shift = <0x12>;
    						reg = <0xac>;
    					};
    
    					gpio2_dbclk {
    						#clock-cells = <0x0>;
    						compatible = "ti,gate-clock";
    						clocks = <0x12>;
    						ti,bit-shift = <0x12>;
    						reg = <0xb0>;
    					};
    
    					gpio3_dbclk {
    						#clock-cells = <0x0>;
    						compatible = "ti,gate-clock";
    						clocks = <0x12>;
    						ti,bit-shift = <0x12>;
    						reg = <0xb4>;
    					};
    
    					lcd_gclk {
    						#clock-cells = <0x0>;
    						compatible = "ti,mux-clock";
    						clocks = <0x11 0x17 0xc>;
    						reg = <0x534>;
    						ti,set-rate-parent;
    						linux,phandle = <0x1a>;
    						phandle = <0x1a>;
    					};
    
    					mmc_clk {
    						#clock-cells = <0x0>;
    						compatible = "fixed-factor-clock";
    						clocks = <0xc>;
    						clock-mult = <0x1>;
    						clock-div = <0x2>;
    					};
    
    					gfx_fclk_clksel_ck {
    						#clock-cells = <0x0>;
    						compatible = "ti,mux-clock";
    						clocks = <0xf 0xc>;
    						ti,bit-shift = <0x1>;
    						reg = <0x52c>;
    						linux,phandle = <0x19>;
    						phandle = <0x19>;
    					};
    
    					gfx_fck_div_ck {
    						#clock-cells = <0x0>;
    						compatible = "ti,divider-clock";
    						clocks = <0x19>;
    						reg = <0x52c>;
    						ti,max-div = <0x2>;
    					};
    
    					sysclkout_pre_ck {
    						#clock-cells = <0x0>;
    						compatible = "ti,mux-clock";
    						clocks = <0x15 0x10 0x9 0xc 0x1a>;
    						reg = <0x700>;
    						linux,phandle = <0x1b>;
    						phandle = <0x1b>;
    					};
    
    					clkout2_div_ck {
    						#clock-cells = <0x0>;
    						compatible = "ti,divider-clock";
    						clocks = <0x1b>;
    						ti,bit-shift = <0x3>;
    						ti,max-div = <0x8>;
    						reg = <0x700>;
    						linux,phandle = <0x20>;
    						phandle = <0x20>;
    					};
    
    					dbg_sysclk_ck {
    						#clock-cells = <0x0>;
    						compatible = "ti,gate-clock";
    						clocks = <0x5>;
    						ti,bit-shift = <0x13>;
    						reg = <0x414>;
    						linux,phandle = <0x1c>;
    						phandle = <0x1c>;
    					};
    
    					dbg_clka_ck {
    						#clock-cells = <0x0>;
    						compatible = "ti,gate-clock";
    						clocks = <0xf>;
    						ti,bit-shift = <0x1e>;
    						reg = <0x414>;
    						linux,phandle = <0x1d>;
    						phandle = <0x1d>;
    					};
    
    					stm_pmd_clock_mux_ck {
    						#clock-cells = <0x0>;
    						compatible = "ti,mux-clock";
    						clocks = <0x1c 0x1d>;
    						ti,bit-shift = <0x16>;
    						reg = <0x414>;
    						linux,phandle = <0x1e>;
    						phandle = <0x1e>;
    					};
    
    					trace_pmd_clk_mux_ck {
    						#clock-cells = <0x0>;
    						compatible = "ti,mux-clock";
    						clocks = <0x1c 0x1d>;
    						ti,bit-shift = <0x14>;
    						reg = <0x414>;
    						linux,phandle = <0x1f>;
    						phandle = <0x1f>;
    					};
    
    					stm_clk_div_ck {
    						#clock-cells = <0x0>;
    						compatible = "ti,divider-clock";
    						clocks = <0x1e>;
    						ti,bit-shift = <0x1b>;
    						ti,max-div = <0x40>;
    						reg = <0x414>;
    						ti,index-power-of-two;
    					};
    
    					trace_clk_div_ck {
    						#clock-cells = <0x0>;
    						compatible = "ti,divider-clock";
    						clocks = <0x1f>;
    						ti,bit-shift = <0x18>;
    						ti,max-div = <0x40>;
    						reg = <0x414>;
    						ti,index-power-of-two;
    					};
    
    					clkout2_ck {
    						#clock-cells = <0x0>;
    						compatible = "ti,gate-clock";
    						clocks = <0x20>;
    						ti,bit-shift = <0x7>;
    						reg = <0x700>;
    					};
    				};
    
    				clockdomains {
    
    					clk_24mhz_clkdm {
    						compatible = "ti,clockdomain";
    						clocks = <0x12>;
    					};
    				};
    			};
    
    			scm@210000 {
    				compatible = "ti,am3-scm", "simple-bus";
    				reg = <0x210000 0x2000>;
    				#address-cells = <0x1>;
    				#size-cells = <0x1>;
    				ranges = <0x0 0x210000 0x2000>;
    
    				pinmux@800 {
    					compatible = "pinctrl-single";
    					reg = <0x800 0x238>;
    					#address-cells = <0x1>;
    					#size-cells = <0x0>;
    					pinctrl-single,register-width = <0x20>;
    					pinctrl-single,function-mask = <0x7f>;
    					pinctrl-names = "default";
    					pinctrl-0 = <0x21>;
    
    					user_leds_default {
    						pinctrl-single,pins = <0x8c 0xf 0x90 0xf 0x94 0xf 0x98 0xf>;
    						linux,phandle = <0x4a>;
    						phandle = <0x4a>;
    					};
    
    					user_leds_sleep {
    						pinctrl-single,pins = <0x8c 0x27 0x90 0x27 0x94 0x27 0x98 0x27>;
    						linux,phandle = <0x4b>;
    						phandle = <0x4b>;
    					};
    
    					pinmux_i2c0_pins {
    						pinctrl-single,pins = <0x188 0x28 0x18c 0x28>;
    						linux,phandle = <0x2f>;
    						phandle = <0x2f>;
    					};
    
    					pinmux_uart0_pins {
    						pinctrl-single,pins = <0x170 0x28 0x174 0x8>;
    						linux,phandle = <0x2b>;
    						phandle = <0x2b>;
    					};
    
    					pinmux_clkout2_pin {
    						pinctrl-single,pins = <0x1b4 0xb>;
    						linux,phandle = <0x21>;
    						phandle = <0x21>;
    					};
    
    					cpsw_default {
    						pinctrl-single,pins = <0x114 0x22 0x118 0x22 0x11c 0x2 0x120 0x2 0x124 0x22 0x128 0x22 0x12c 0x12 0x130 0x32 0x134 0x32 0x138 0x32 0x13c 0x32 0x140 0x32>;
    						linux,phandle = <0x42>;
    						phandle = <0x42>;
    					};
    
    					cpsw_sleep {
    						pinctrl-single,pins = <0x114 0x27 0x118 0x27 0x11c 0x27 0x120 0x27 0x124 0x27 0x128 0x27 0x12c 0x27 0x130 0x27 0x134 0x27 0x138 0x27 0x13c 0x27 0x140 0x27>;
    						linux,phandle = <0x43>;
    						phandle = <0x43>;
    					};
    
    					davinci_mdio_default {
    						pinctrl-single,pins = <0x148 0x30 0x14c 0x10>;
    						linux,phandle = <0x44>;
    						phandle = <0x44>;
    					};
    
    					davinci_mdio_sleep {
    						pinctrl-single,pins = <0x148 0x27 0x14c 0x27>;
    						linux,phandle = <0x45>;
    						phandle = <0x45>;
    					};
    
    					pinmux_mmc1_pins {
    						pinctrl-single,pins = <0xf0 0x30 0xf4 0x30 0xf8 0x30 0xfc 0x30 0x100 0x30 0x104 0x30 0x144 0x15>;
    						linux,phandle = <0x34>;
    						phandle = <0x34>;
    					};
    
    					pinmux_emmc_pins {
    						pinctrl-single,pins = <0x80 0x32 0x84 0x32 0x0 0x21 0x4 0x21 0x8 0x21 0xc 0x21 0x10 0x21 0x14 0x21 0x18 0x21 0x1c 0x21>;
    					};
    
    					nxp_hdmi_bonelt_pins {
    						pinctrl-single,pins = <0xa0 0x28 0xa4 0x28 0xa8 0x28 0xac 0x28 0xb0 0x28 0xb4 0x28 0xb8 0x28 0xbc 0x28 0xc0 0x28 0xc4 0x28 0xc8 0x28 0xcc 0x28 0xd0 0x28 0xd4 0x28 0xd8 0x28 0xdc 0x28 0x3c 0x1 0x38 0x1 0x34 0x1 0x30 0x1 0x2c 0x1 0x28 0x1 0x24 0x1 0x20 0x1 0xe0 0x28 0xe4 0x8 0xe8 0x8 0xec 0x8>;
    						linux,phandle = <0x4d>;
    						phandle = <0x4d>;
    					};
    
    					pinmux_spi0_pins {
    						pinctrl-single,pins = <0x150 0x28 0x154 0x28 0x158 0x28 0x15c 0x28>;
    						linux,phandle = <0x3a>;
    						phandle = <0x3a>;
    					};
    
    					pinmux_spi1_pins {
    						pinctrl-single,pins = <0x190 0x23 0x194 0x23 0x198 0x23 0x19c 0x23>;
    						linux,phandle = <0x3b>;
    						phandle = <0x3b>;
    					};
    
    					pinmux_i2c1_pins {
    						pinctrl-single,pins = <0x168 0x2b 0x16c 0x2b>;
    						linux,phandle = <0x32>;
    						phandle = <0x32>;
    					};
    
    					pinmux_i2c2_pins {
    						pinctrl-single,pins = <0x178 0x2b 0x17c 0x2b>;
    						linux,phandle = <0x33>;
    						phandle = <0x33>;
    					};
    
    					pinmux_uart1_pins {
    						pinctrl-single,pins = <0x180 0x28 0x184 0x8 0x54 0x7 0x58 0x37>;
    						linux,phandle = <0x2c>;
    						phandle = <0x2c>;
    					};
    
    					pinmux_uart4_pins {
    						pinctrl-single,pins = <0x70 0x36 0x74 0x16>;
    						linux,phandle = <0x2e>;
    						phandle = <0x2e>;
    					};
    
    					mcasp0_pins_audio {
    						pinctrl-single,pins = <0x1ac 0x0 0x60 0x26 0x64 0x26 0x68 0x26 0x6c 0x26>;
    						linux,phandle = <0x49>;
    						phandle = <0x49>;
    					};
    				};
    
    				scm_conf@0 {
    					compatible = "syscon";
    					reg = <0x0 0x800>;
    					#address-cells = <0x1>;
    					#size-cells = <0x1>;
    					linux,phandle = <0x38>;
    					phandle = <0x38>;
    
    					clocks {
    						#address-cells = <0x1>;
    						#size-cells = <0x0>;
    
    						sys_clkin_ck {
    							#clock-cells = <0x0>;
    							compatible = "ti,mux-clock";
    							clocks = <0x22 0x23 0x24 0x25>;
    							ti,bit-shift = <0x16>;
    							reg = <0x40>;
    							linux,phandle = <0x5>;
    							phandle = <0x5>;
    						};
    
    						adc_tsc_fck {
    							#clock-cells = <0x0>;
    							compatible = "fixed-factor-clock";
    							clocks = <0x5>;
    							clock-mult = <0x1>;
    							clock-div = <0x1>;
    						};
    
    						dcan0_fck {
    							#clock-cells = <0x0>;
    							compatible = "fixed-factor-clock";
    							clocks = <0x5>;
    							clock-mult = <0x1>;
    							clock-div = <0x1>;
    							linux,phandle = <0x37>;
    							phandle = <0x37>;
    						};
    
    						dcan1_fck {
    							#clock-cells = <0x0>;
    							compatible = "fixed-factor-clock";
    							clocks = <0x5>;
    							clock-mult = <0x1>;
    							clock-div = <0x1>;
    							linux,phandle = <0x39>;
    							phandle = <0x39>;
    						};
    
    						mcasp0_fck {
    							#clock-cells = <0x0>;
    							compatible = "fixed-factor-clock";
    							clocks = <0x5>;
    							clock-mult = <0x1>;
    							clock-div = <0x1>;
    						};
    
    						mcasp1_fck {
    							#clock-cells = <0x0>;
    							compatible = "fixed-factor-clock";
    							clocks = <0x5>;
    							clock-mult = <0x1>;
    							clock-div = <0x1>;
    						};
    
    						smartreflex0_fck {
    							#clock-cells = <0x0>;
    							compatible = "fixed-factor-clock";
    							clocks = <0x5>;
    							clock-mult = <0x1>;
    							clock-div = <0x1>;
    						};
    
    						smartreflex1_fck {
    							#clock-cells = <0x0>;
    							compatible = "fixed-factor-clock";
    							clocks = <0x5>;
    							clock-mult = <0x1>;
    							clock-div = <0x1>;
    						};
    
    						sha0_fck {
    							#clock-cells = <0x0>;
    							compatible = "fixed-factor-clock";
    							clocks = <0x5>;
    							clock-mult = <0x1>;
    							clock-div = <0x1>;
    						};
    
    						aes0_fck {
    							#clock-cells = <0x0>;
    							compatible = "fixed-factor-clock";
    							clocks = <0x5>;
    							clock-mult = <0x1>;
    							clock-div = <0x1>;
    						};
    
    						rng_fck {
    							#clock-cells = <0x0>;
    							compatible = "fixed-factor-clock";
    							clocks = <0x5>;
    							clock-mult = <0x1>;
    							clock-div = <0x1>;
    						};
    
    						ehrpwm0_tbclk@44e10664 {
    							#clock-cells = <0x0>;
    							compatible = "ti,gate-clock";
    							clocks = <0x26>;
    							ti,bit-shift = <0x0>;
    							reg = <0x664>;
    						};
    
    						ehrpwm1_tbclk@44e10664 {
    							#clock-cells = <0x0>;
    							compatible = "ti,gate-clock";
    							clocks = <0x26>;
    							ti,bit-shift = <0x1>;
    							reg = <0x664>;
    						};
    
    						ehrpwm2_tbclk@44e10664 {
    							#clock-cells = <0x0>;
    							compatible = "ti,gate-clock";
    							clocks = <0x26>;
    							ti,bit-shift = <0x2>;
    							reg = <0x664>;
    						};
    					};
    				};
    
    				wkup_m3_ipc@1324 {
    					compatible = "ti,am3352-wkup-m3-ipc";
    					reg = <0x1324 0x24>;
    					interrupts = <0x4e>;
    					ti,rproc = <0x27>;
    					mboxes = <0x28 0x29>;
    					ti,scale-data-fw = "am335x-bone-scale-data.bin";
    				};
    
    				clockdomains {
    				};
    			};
    		};
    
    		interrupt-controller@48200000 {
    			compatible = "ti,am33xx-intc";
    			interrupt-controller;
    			#interrupt-cells = <0x1>;
    			reg = <0x48200000 0x1000>;
    			linux,phandle = <0x1>;
    			phandle = <0x1>;
    		};
    
    		edma@49000000 {
    			compatible = "ti,edma3";
    			ti,hwmods = "tpcc", "tptc0", "tptc1", "tptc2";
    			reg = <0x49000000 0x10000 0x44e10f90 0x40>;
    			interrupts = <0xc 0xd 0xe>;
    			#dma-cells = <0x1>;
    			linux,phandle = <0x2a>;
    			phandle = <0x2a>;
    		};
    
    		emif@4c000000 {
    			compatible = "ti,emif-am3352";
    			reg = <0x4c000000 0x1000>;
    			sram = <0x4>;
    		};
    
    		gpio@44e07000 {
    			compatible = "ti,omap4-gpio";
    			ti,hwmods = "gpio1";
    			gpio-controller;
    			#gpio-cells = <0x2>;
    			interrupt-controller;
    			#interrupt-cells = <0x2>;
    			reg = <0x44e07000 0x1000>;
    			interrupts = <0x60>;
    			linux,phandle = <0x35>;
    			phandle = <0x35>;
    		};
    
    		gpio@4804c000 {
    			compatible = "ti,omap4-gpio";
    			ti,hwmods = "gpio2";
    			gpio-controller;
    			#gpio-cells = <0x2>;
    			interrupt-controller;
    			#interrupt-cells = <0x2>;
    			reg = <0x4804c000 0x1000>;
    			interrupts = <0x62>;
    			linux,phandle = <0x2d>;
    			phandle = <0x2d>;
    		};
    
    		gpio@481ac000 {
    			compatible = "ti,omap4-gpio";
    			ti,hwmods = "gpio3";
    			gpio-controller;
    			#gpio-cells = <0x2>;
    			interrupt-controller;
    			#interrupt-cells = <0x2>;
    			reg = <0x481ac000 0x1000>;
    			interrupts = <0x20>;
    			linux,phandle = <0x4c>;
    			phandle = <0x4c>;
    		};
    
    		gpio@481ae000 {
    			compatible = "ti,omap4-gpio";
    			ti,hwmods = "gpio4";
    			gpio-controller;
    			#gpio-cells = <0x2>;
    			interrupt-controller;
    			#interrupt-cells = <0x2>;
    			reg = <0x481ae000 0x1000>;
    			interrupts = <0x3e>;
    		};
    
    		serial@44e09000 {
    			compatible = "ti,am3352-uart", "ti,omap3-uart";
    			ti,hwmods = "uart1";
    			clock-frequency = <0x2dc6c00>;
    			reg = <0x44e09000 0x2000>;
    			interrupts = <0x48>;
    			status = "okay";
    			dmas = <0x2a 0x1a 0x2a 0x1b>;
    			dma-names = "tx", "rx";
    			pinctrl-names = "default";
    			pinctrl-0 = <0x2b>;
    		};
    
    		serial@48022000 {
    			compatible = "ti,am3352-uart", "ti,omap3-uart";
    			ti,hwmods = "uart2";
    			clock-frequency = <0x2dc6c00>;
    			reg = <0x48022000 0x2000>;
    			interrupts = <0x49>;
    			status = "okay";
    			dmas = <0x2a 0x1c 0x2a 0x1d>;
    			dma-names = "tx", "rx";
    			pinctrl-names = "default";
    			pinctrl-0 = <0x2c>;
    			rs485-rts-delay = <0x5 0x5>;
    			rts-gpio = <0x2d 0x15 0x0>;
    			rs485-rts-active-high;
    			linux,rs485-enabled-at-boot-time;
    		};
    
    		serial@48024000 {
    			compatible = "ti,am3352-uart", "ti,omap3-uart";
    			ti,hwmods = "uart3";
    			clock-frequency = <0x2dc6c00>;
    			reg = <0x48024000 0x2000>;
    			interrupts = <0x4a>;
    			status = "disabled";
    			dmas = <0x2a 0x1e 0x2a 0x1f>;
    			dma-names = "tx", "rx";
    		};
    
    		serial@481a6000 {
    			compatible = "ti,am3352-uart", "ti,omap3-uart";
    			ti,hwmods = "uart4";
    			clock-frequency = <0x2dc6c00>;
    			reg = <0x481a6000 0x2000>;
    			interrupts = <0x2c>;
    			status = "disabled";
    		};
    
    		serial@481a8000 {
    			compatible = "ti,am3352-uart", "ti,omap3-uart";
    			ti,hwmods = "uart5";
    			clock-frequency = <0x2dc6c00>;
    			reg = <0x481a8000 0x2000>;
    			interrupts = <0x2d>;
    			status = "okay";
    			pinctrl-names = "default";
    			pinctrl-0 = <0x2e>;
    		};
    
    		serial@481aa000 {
    			compatible = "ti,am3352-uart", "ti,omap3-uart";
    			ti,hwmods = "uart6";
    			clock-frequency = <0x2dc6c00>;
    			reg = <0x481aa000 0x2000>;
    			interrupts = <0x2e>;
    			status = "disabled";
    		};
    
    		i2c@44e0b000 {
    			compatible = "ti,omap4-i2c";
    			#address-cells = <0x1>;
    			#size-cells = <0x0>;
    			ti,hwmods = "i2c1";
    			reg = <0x44e0b000 0x1000>;
    			interrupts = <0x46>;
    			status = "okay";
    			pinctrl-names = "default";
    			pinctrl-0 = <0x2f>;
    			clock-frequency = <0x61a80>;
    
    			tps@24 {
    				reg = <0x24>;
    				compatible = "ti,tps65217";
    				ti,pmic-shutdown-controller;
    
    				regulators {
    					#address-cells = <0x1>;
    					#size-cells = <0x0>;
    
    					regulator@0 {
    						reg = <0x0>;
    						regulator-compatible = "dcdc1";
    						regulator-name = "vdds_dpr";
    						regulator-always-on;
    					};
    
    					regulator@1 {
    						reg = <0x1>;
    						regulator-compatible = "dcdc2";
    						regulator-name = "vdd_mpu";
    						regulator-min-microvolt = <0xdec74>;
    						regulator-max-microvolt = <0x1506d0>;
    						regulator-boot-on;
    						regulator-always-on;
    						linux,phandle = <0x3>;
    						phandle = <0x3>;
    					};
    
    					regulator@2 {
    						reg = <0x2>;
    						regulator-compatible = "dcdc3";
    						regulator-name = "vdd_core";
    						regulator-min-microvolt = <0xe1d48>;
    						regulator-max-microvolt = <0x118c30>;
    						regulator-boot-on;
    						regulator-always-on;
    					};
    
    					regulator@3 {
    						reg = <0x3>;
    						regulator-compatible = "ldo1";
    						regulator-name = "vio,vrtc,vdds";
    						regulator-always-on;
    					};
    
    					regulator@4 {
    						reg = <0x4>;
    						regulator-compatible = "ldo2";
    						regulator-name = "vdd_3v3aux";
    						regulator-always-on;
    					};
    
    					regulator@5 {
    						reg = <0x5>;
    						regulator-compatible = "ldo3";
    						regulator-name = "vdd_1v8";
    						regulator-always-on;
    						regulator-min-microvolt = <0x1b7740>;
    						regulator-max-microvolt = <0x1b7740>;
    						linux,phandle = <0x31>;
    						phandle = <0x31>;
    					};
    
    					regulator@6 {
    						reg = <0x6>;
    						regulator-compatible = "ldo4";
    						regulator-name = "vdd_3v3a";
    						regulator-always-on;
    						linux,phandle = <0x30>;
    						phandle = <0x30>;
    					};
    				};
    			};
    
    			gpioEX@20 {
    				compatible = "ti,pca9534";
    				reg = <0x20>;
    				gpio-controller;
    				#gpio-cells = <0x2>;
    			};
    
    			LM75@48 {
    				compatible = "ti,lm75a";
    				reg = <0x48>;
    			};
    
    			eeprom@50 {
    				compatible = "atmel,24c32";
    				reg = <0x50>;
    			};
    
    			MCrtc@6F {
    				compatible = "mcp,mcp7940x";
    				reg = <0x6f>;
    			};
    
    			tlv320aic3x@1b {
    				compatible = "ti,tlv320aic3x";
    				reg = <0x18>;
    				status = "okay";
    				AVDD-supply = <0x30>;
    				IOVDD-supply = <0x30>;
    				DRVDD-supply = <0x30>;
    				DVDD-supply = <0x31>;
    				linux,phandle = <0x50>;
    				phandle = <0x50>;
    			};
    		};
    
    		i2c@4802a000 {
    			compatible = "ti,omap4-i2c";
    			#address-cells = <0x1>;
    			#size-cells = <0x0>;
    			ti,hwmods = "i2c2";
    			reg = <0x4802a000 0x1000>;
    			interrupts = <0x47>;
    			status = "okay";
    			pinctrl-names = "default";
    			pinctrl-0 = <0x32>;
    			clock-frequency = <0x61a80>;
    		};
    
    		i2c@4819c000 {
    			compatible = "ti,omap4-i2c";
    			#address-cells = <0x1>;
    			#size-cells = <0x0>;
    			ti,hwmods = "i2c3";
    			reg = <0x4819c000 0x1000>;
    			interrupts = <0x1e>;
    			status = "okay";
    			pinctrl-names = "default";
    			pinctrl-0 = <0x33>;
    			clock-frequency = <0x61a80>;
    		};
    
    		mmc@48060000 {
    			compatible = "ti,am33xx-hsmmc";
    			ti,hwmods = "mmc1";
    			ti,dual-volt;
    			ti,needs-special-reset;
    			ti,needs-special-hs-handling;
    			dmas = <0x2a 0x18 0x2a 0x19>;
    			dma-names = "tx", "rx";
    			interrupts = <0x40>;
    			interrupt-parent = <0x1>;
    			reg = <0x48060000 0x1000>;
    			status = "okay";
    			bus-width = <0x4>;
    			pinctrl-names = "default";
    			pinctrl-0 = <0x34>;
    			cd-gpios = <0x35 0x6 0x0>;
    			cd-inverted;
    			vmmc-supply = <0x36>;
    		};
    
    		spinlock@480ca000 {
    			compatible = "ti,omap4-hwspinlock";
    			reg = <0x480ca000 0x1000>;
    			ti,hwmods = "spinlock";
    			#hwlock-cells = <0x1>;
    		};
    
    		wdt@44e35000 {
    			compatible = "ti,omap3-wdt";
    			ti,hwmods = "wd_timer2";
    			reg = <0x44e35000 0x1000>;
    			interrupts = <0x5b>;
    		};
    
    		can@481cc000 {
    			compatible = "ti,am3352-d_can";
    			ti,hwmods = "d_can0";
    			reg = <0x481cc000 0x2000>;
    			clocks = <0x37>;
    			clock-names = "fck";
    			syscon-raminit = <0x38 0x644 0x0>;
    			interrupts = <0x34>;
    			status = "disabled";
    		};
    
    		can@481d0000 {
    			compatible = "ti,am3352-d_can";
    			ti,hwmods = "d_can1";
    			reg = <0x481d0000 0x2000>;
    			clocks = <0x39>;
    			clock-names = "fck";
    			syscon-raminit = <0x38 0x644 0x1>;
    			interrupts = <0x37>;
    			status = "disabled";
    		};
    
    		mailbox@480C8000 {
    			compatible = "ti,omap4-mailbox";
    			reg = <0x480c8000 0x200>;
    			interrupts = <0x4d>;
    			ti,hwmods = "mailbox";
    			#mbox-cells = <0x1>;
    			ti,mbox-num-users = <0x4>;
    			ti,mbox-num-fifos = <0x8>;
    			linux,phandle = <0x28>;
    			phandle = <0x28>;
    
    			wkup_m3 {
    				ti,mbox-send-noirq;
    				ti,mbox-tx = <0x0 0x0 0x0>;
    				ti,mbox-rx = <0x0 0x0 0x3>;
    				linux,phandle = <0x29>;
    				phandle = <0x29>;
    			};
    
    			mbox_pru0 {
    				ti,mbox-tx = <0x2 0x0 0x0>;
    				ti,mbox-rx = <0x3 0x0 0x0>;
    				linux,phandle = <0x47>;
    				phandle = <0x47>;
    			};
    
    			mbox_pru1 {
    				ti,mbox-tx = <0x4 0x0 0x0>;
    				ti,mbox-rx = <0x5 0x0 0x0>;
    				linux,phandle = <0x48>;
    				phandle = <0x48>;
    			};
    		};
    
    		timer@44e31000 {
    			compatible = "ti,am335x-timer-1ms";
    			reg = <0x44e31000 0x400>;
    			interrupts = <0x43>;
    			ti,hwmods = "timer1";
    			ti,timer-alwon;
    		};
    
    		timer@48040000 {
    			compatible = "ti,am335x-timer";
    			reg = <0x48040000 0x400>;
    			interrupts = <0x44>;
    			ti,hwmods = "timer2";
    		};
    
    		timer@48042000 {
    			compatible = "ti,am335x-timer";
    			reg = <0x48042000 0x400>;
    			interrupts = <0x45>;
    			ti,hwmods = "timer3";
    		};
    
    		timer@48044000 {
    			compatible = "ti,am335x-timer";
    			reg = <0x48044000 0x400>;
    			interrupts = <0x5c>;
    			ti,hwmods = "timer4";
    			ti,timer-pwm;
    		};
    
    		timer@48046000 {
    			compatible = "ti,am335x-timer";
    			reg = <0x48046000 0x400>;
    			interrupts = <0x5d>;
    			ti,hwmods = "timer5";
    			ti,timer-pwm;
    		};
    
    		timer@48048000 {
    			compatible = "ti,am335x-timer";
    			reg = <0x48048000 0x400>;
    			interrupts = <0x5e>;
    			ti,hwmods = "timer6";
    			ti,timer-pwm;
    		};
    
    		timer@4804a000 {
    			compatible = "ti,am335x-timer";
    			reg = <0x4804a000 0x400>;
    			interrupts = <0x5f>;
    			ti,hwmods = "timer7";
    			ti,timer-pwm;
    		};
    
    		rtc@44e3e000 {
    			compatible = "ti,am3352-rtc", "ti,da830-rtc";
    			reg = <0x44e3e000 0x1000>;
    			interrupts = <0x4b 0x4c>;
    			ti,hwmods = "rtc";
    			status = "disabled";
    			system-power-controller;
    		};
    
    		spi@48030000 {
    			compatible = "ti,omap4-mcspi";
    			#address-cells = <0x1>;
    			#size-cells = <0x0>;
    			reg = <0x48030000 0x400>;
    			interrupts = <0x41>;
    			ti,spi-num-cs = <0x1>;
    			ti,hwmods = "spi0";
    			dmas = <0x2a 0x10 0x2a 0x11>;
    			dma-names = "tx0", "rx0";
    			status = "okay";
    			pinctrl-names = "default";
    			pinctrl-0 = <0x3a>;
    
    			spi@0 {
    				compatible = "generic,spi";
    				reg = <0x0>;
    				spi-max-frequency = <0xf42400>;
    				spi-cpha;
    			};
    		};
    
    		spi@481a0000 {
    			compatible = "ti,omap4-mcspi";
    			#address-cells = <0x1>;
    			#size-cells = <0x0>;
    			reg = <0x481a0000 0x400>;
    			interrupts = <0x7d>;
    			ti,spi-num-cs = <0x1>;
    			ti,hwmods = "spi1";
    			dmas = <0x2a 0x2a 0x2a 0x2b>;
    			dma-names = "tx0", "rx0";
    			status = "okay";
    			pinctrl-names = "default";
    			pinctrl-0 = <0x3b>;
    
    			spi@0 {
    				compatible = "generic,spi";
    				reg = <0x0>;
    				spi-max-frequency = <0xf42400>;
    				spi-cpha;
    			};
    		};
    
    		usb@47400000 {
    			compatible = "ti,am33xx-usb";
    			reg = <0x47400000 0x1000>;
    			ranges;
    			#address-cells = <0x1>;
    			#size-cells = <0x1>;
    			ti,hwmods = "usb_otg_hs";
    			status = "okay";
    
    			control@44e10620 {
    				compatible = "ti,am335x-usb-ctrl-module";
    				reg = <0x44e10620 0x10 0x44e10648 0x4>;
    				reg-names = "phy_ctrl", "wakeup";
    				status = "okay";
    				linux,phandle = <0x3c>;
    				phandle = <0x3c>;
    			};
    
    			usb-phy@47401300 {
    				compatible = "ti,am335x-usb-phy";
    				reg = <0x47401300 0x100>;
    				reg-names = "phy";
    				status = "okay";
    				ti,ctrl_mod = <0x3c>;
    				linux,phandle = <0x3d>;
    				phandle = <0x3d>;
    			};
    
    			usb@47401000 {
    				compatible = "ti,musb-am33xx";
    				status = "okay";
    				reg = <0x47401400 0x400 0x47401000 0x200>;
    				reg-names = "mc", "control";
    				interrupts = <0x12>;
    				interrupt-names = "mc";
    				dr_mode = "peripheral";
    				mentor,multipoint = <0x1>;
    				mentor,num-eps = <0x10>;
    				mentor,ram-bits = <0xc>;
    				mentor,power = <0x1f4>;
    				phys = <0x3d>;
    				dmas = <0x3e 0x0 0x0 0x3e 0x1 0x0 0x3e 0x2 0x0 0x3e 0x3 0x0 0x3e 0x4 0x0 0x3e 0x5 0x0 0x3e 0x6 0x0 0x3e 0x7 0x0 0x3e 0x8 0x0 0x3e 0x9 0x0 0x3e 0xa 0x0 0x3e 0xb 0x0 0x3e 0xc 0x0 0x3e 0xd 0x0 0x3e 0xe 0x0 0x3e 0x0 0x1 0x3e 0x1 0x1 0x3e 0x2 0x1 0x3e 0x3 0x1 0x3e 0x4 0x1 0x3e 0x5 0x1 0x3e 0x6 0x1 0x3e 0x7 0x1 0x3e 0x8 0x1 0x3e 0x9 0x1 0x3e 0xa 0x1 0x3e 0xb 0x1 0x3e 0xc 0x1 0x3e 0xd 0x1 0x3e 0xe 0x1>;
    				dma-names = "rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7", "rx8", "rx9", "rx10", "rx11", "rx12", "rx13", "rx14", "rx15", "tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7", "tx8", "tx9", "tx10", "tx11", "tx12", "tx13", "tx14", "tx15";
    			};
    
    			usb-phy@47401b00 {
    				compatible = "ti,am335x-usb-phy";
    				reg = <0x47401b00 0x100>;
    				reg-names = "phy";
    				status = "okay";
    				ti,ctrl_mod = <0x3c>;
    				linux,phandle = <0x3f>;
    				phandle = <0x3f>;
    			};
    
    			usb@47401800 {
    				compatible = "ti,musb-am33xx";
    				status = "okay";
    				reg = <0x47401c00 0x400 0x47401800 0x200>;
    				reg-names = "mc", "control";
    				interrupts = <0x13>;
    				interrupt-names = "mc";
    				dr_mode = "host";
    				mentor,multipoint = <0x1>;
    				mentor,num-eps = <0x10>;
    				mentor,ram-bits = <0xc>;
    				mentor,power = <0x1f4>;
    				phys = <0x3f>;
    				dmas = <0x3e 0xf 0x0 0x3e 0x10 0x0 0x3e 0x11 0x0 0x3e 0x12 0x0 0x3e 0x13 0x0 0x3e 0x14 0x0 0x3e 0x15 0x0 0x3e 0x16 0x0 0x3e 0x17 0x0 0x3e 0x18 0x0 0x3e 0x19 0x0 0x3e 0x1a 0x0 0x3e 0x1b 0x0 0x3e 0x1c 0x0 0x3e 0x1d 0x0 0x3e 0xf 0x1 0x3e 0x10 0x1 0x3e 0x11 0x1 0x3e 0x12 0x1 0x3e 0x13 0x1 0x3e 0x14 0x1 0x3e 0x15 0x1 0x3e 0x16 0x1 0x3e 0x17 0x1 0x3e 0x18 0x1 0x3e 0x19 0x1 0x3e 0x1a 0x1 0x3e 0x1b 0x1 0x3e 0x1c 0x1 0x3e 0x1d 0x1>;
    				dma-names = "rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7", "rx8", "rx9", "rx10", "rx11", "rx12", "rx13", "rx14", "rx15", "tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7", "tx8", "tx9", "tx10", "tx11", "tx12", "tx13", "tx14", "tx15";
    			};
    
    			dma-controller@47402000 {
    				compatible = "ti,am3359-cppi41";
    				reg = <0x47400000 0x1000 0x47402000 0x1000 0x47403000 0x1000 0x47404000 0x4000>;
    				reg-names = "glue", "controller", "scheduler", "queuemgr";
    				interrupts = <0x11>;
    				interrupt-names = "glue";
    				#dma-cells = <0x2>;
    				#dma-channels = <0x1e>;
    				#dma-requests = <0x100>;
    				status = "okay";
    				linux,phandle = <0x3e>;
    				phandle = <0x3e>;
    			};
    		};
    
    		epwmss@48300000 {
    			compatible = "ti,am33xx-pwmss";
    			reg = <0x48300000 0x10>;
    			ti,hwmods = "epwmss0";
    			#address-cells = <0x1>;
    			#size-cells = <0x1>;
    			status = "disabled";
    			ranges = <0x48300100 0x48300100 0x80 0x48300180 0x48300180 0x80 0x48300200 0x48300200 0x80>;
    
    			ecap@48300100 {
    				compatible = "ti,am33xx-ecap";
    				#pwm-cells = <0x3>;
    				reg = <0x48300100 0x80>;
    				interrupts = <0x1f>;
    				interrupt-names = "ecap0";
    				ti,hwmods = "ecap0";
    				status = "disabled";
    			};
    
    			ehrpwm@48300200 {
    				compatible = "ti,am33xx-ehrpwm";
    				#pwm-cells = <0x3>;
    				reg = <0x48300200 0x80>;
    				ti,hwmods = "ehrpwm0";
    				status = "disabled";
    			};
    		};
    
    		epwmss@48302000 {
    			compatible = "ti,am33xx-pwmss";
    			reg = <0x48302000 0x10>;
    			ti,hwmods = "epwmss1";
    			#address-cells = <0x1>;
    			#size-cells = <0x1>;
    			status = "disabled";
    			ranges = <0x48302100 0x48302100 0x80 0x48302180 0x48302180 0x80 0x48302200 0x48302200 0x80>;
    
    			ecap@48302100 {
    				compatible = "ti,am33xx-ecap";
    				#pwm-cells = <0x3>;
    				reg = <0x48302100 0x80>;
    				interrupts = <0x2f>;
    				interrupt-names = "ecap1";
    				ti,hwmods = "ecap1";
    				status = "disabled";
    			};
    
    			ehrpwm@48302200 {
    				compatible = "ti,am33xx-ehrpwm";
    				#pwm-cells = <0x3>;
    				reg = <0x48302200 0x80>;
    				ti,hwmods = "ehrpwm1";
    				status = "disabled";
    			};
    		};
    
    		epwmss@48304000 {
    			compatible = "ti,am33xx-pwmss";
    			reg = <0x48304000 0x10>;
    			ti,hwmods = "epwmss2";
    			#address-cells = <0x1>;
    			#size-cells = <0x1>;
    			status = "disabled";
    			ranges = <0x48304100 0x48304100 0x80 0x48304180 0x48304180 0x80 0x48304200 0x48304200 0x80>;
    
    			ecap@48304100 {
    				compatible = "ti,am33xx-ecap";
    				#pwm-cells = <0x3>;
    				reg = <0x48304100 0x80>;
    				interrupts = <0x3d>;
    				interrupt-names = "ecap2";
    				ti,hwmods = "ecap2";
    				status = "disabled";
    			};
    
    			ehrpwm@48304200 {
    				compatible = "ti,am33xx-ehrpwm";
    				#pwm-cells = <0x3>;
    				reg = <0x48304200 0x80>;
    				ti,hwmods = "ehrpwm2";
    				status = "disabled";
    			};
    		};
    
    		ethernet@4a100000 {
    			compatible = "ti,am335x-cpsw", "ti,cpsw";
    			ti,hwmods = "cpgmac0";
    			clocks = <0x40 0x41>;
    			clock-names = "fck", "cpts";
    			cpdma_channels = <0x8>;
    			ale_entries = <0x400>;
    			bd_ram_size = <0x2000>;
    			no_bd_ram = <0x0>;
    			rx_descs = <0x40>;
    			mac_control = <0x20>;
    			slaves = <0x1>;
    			active_slave = <0x1>;
    			cpts_clock_mult = <0x80000000>;
    			cpts_clock_shift = <0x1d>;
    			reg = <0x4a100000 0x800 0x4a101200 0x100>;
    			#address-cells = <0x1>;
    			#size-cells = <0x1>;
    			interrupt-parent = <0x1>;
    			interrupts = <0x28 0x29 0x2a 0x2b>;
    			ranges;
    			syscon = <0x38>;
    			status = "okay";
    			pinctrl-names = "default", "sleep";
    			pinctrl-0 = <0x42>;
    			pinctrl-1 = <0x43>;
    
    			mdio@4a101000 {
    				compatible = "ti,davinci_mdio";
    				#address-cells = <0x1>;
    				#size-cells = <0x0>;
    				ti,hwmods = "davinci_mdio";
    				bus_freq = <0xf4240>;
    				reg = <0x4a101000 0x100>;
    				status = "okay";
    				pinctrl-names = "default", "sleep";
    				pinctrl-0 = <0x44>;
    				pinctrl-1 = <0x45>;
    				linux,phandle = <0x46>;
    				phandle = <0x46>;
    			};
    
    			slave@4a100200 {
    				mac-address = [00 00 00 00 00 00];
    				phy_id = <0x46 0x1>;
    				phy-mode = "rgmii";
    			};
    
    			cpsw-phy-sel@44e10650 {
    				compatible = "ti,am3352-cpsw-phy-sel";
    				reg = <0x44e10650 0x4>;
    				reg-names = "gmii-sel";
    			};
    		};
    
    		ocmcram@40300000 {
    			compatible = "mmio-sram";
    			reg = <0x40300000 0x10000>;
    			map-exec;
    			linux,phandle = <0x4>;
    			phandle = <0x4>;
    		};
    
    		pruss@4a300000 {
    			compatible = "ti,am3352-pruss";
    			ti,hwmods = "pruss";
    			reg = <0x4a300000 0x2000 0x4a302000 0x2000 0x4a310000 0x3000 0x4a320000 0x2000 0x4a326000 0x2000>;
    			reg-names = "dram0", "dram1", "shrdram2", "intc", "cfg";
    			interrupts = <0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b>;
    			#address-cells = <0x1>;
    			#size-cells = <0x1>;
    			ranges;
    
    			pru@4a334000 {
    				compatible = "ti,am3352-pru-rproc";
    				reg = <0x4a334000 0x2000 0x4a322000 0x400 0x4a322400 0x100>;
    				reg-names = "iram", "control", "debug";
    				mboxes = <0x28 0x47>;
    			};
    
    			pru@4a338000 {
    				compatible = "ti,am3352-pru-rproc";
    				reg = <0x4a338000 0x2000 0x4a324000 0x400 0x4a324400 0x100>;
    				reg-names = "iram", "control", "debug";
    				mboxes = <0x28 0x48>;
    			};
    		};
    
    		elm@48080000 {
    			compatible = "ti,am3352-elm";
    			reg = <0x48080000 0x2000>;
    			interrupts = <0x4>;
    			ti,hwmods = "elm";
    			status = "disabled";
    		};
    
    		lcdc@4830e000 {
    			compatible = "ti,am33xx-tilcdc";
    			reg = <0x4830e000 0x1000>;
    			interrupt-parent = <0x1>;
    			interrupts = <0x24>;
    			ti,hwmods = "lcdc";
    			status = "okay";
    		};
    
    		tscadc@44e0d000 {
    			compatible = "ti,am3359-tscadc";
    			reg = <0x44e0d000 0x1000>;
    			interrupt-parent = <0x1>;
    			interrupts = <0x10>;
    			ti,hwmods = "adc_tsc";
    			status = "disabled";
    
    			tsc {
    				compatible = "ti,am3359-tsc";
    			};
    
    			adc {
    				#io-channel-cells = <0x1>;
    				compatible = "ti,am3359-adc";
    			};
    		};
    
    		gpmc@50000000 {
    			compatible = "ti,am3352-gpmc";
    			ti,hwmods = "gpmc";
    			ti,no-idle-on-init;
    			reg = <0x50000000 0x2000>;
    			interrupts = <0x64>;
    			dmas = <0x2a 0x34>;
    			dma-names = "rxtx";
    			gpmc,num-cs = <0x7>;
    			gpmc,num-waitpins = <0x2>;
    			#address-cells = <0x2>;
    			#size-cells = <0x1>;
    			gpio-controller;
    			#gpio-cells = <0x2>;
    			interrupt-controller;
    			#interrupt-cells = <0x2>;
    			status = "disabled";
    		};
    
    		sham@53100000 {
    			compatible = "ti,omap4-sham";
    			ti,hwmods = "sham";
    			reg = <0x53100000 0x200>;
    			interrupts = <0x6d>;
    			dmas = <0x2a 0x24>;
    			dma-names = "rx";
    			status = "okay";
    		};
    
    		aes@53500000 {
    			compatible = "ti,omap4-aes";
    			ti,hwmods = "aes";
    			reg = <0x53500000 0xa0>;
    			interrupts = <0x67>;
    			dmas = <0x2a 0x6 0x2a 0x5>;
    			dma-names = "tx", "rx";
    			status = "okay";
    		};
    
    		mcasp@48038000 {
    			compatible = "ti,am33xx-mcasp-audio";
    			ti,hwmods = "mcasp0";
    			reg = <0x48038000 0x2000 0x46000000 0x400000>;
    			reg-names = "mpu", "dat";
    			interrupts = <0x50 0x51>;
    			interrupt-names = "tx", "rx";
    			status = "okay";
    			dmas = <0x2a 0x8 0x2a 0x9>;
    			dma-names = "tx", "rx";
    			pinctrl-names = "default";
    			pinctrl-0 = <0x49>;
    			op-mode = <0x0>;
    			tdm-slots = <0x2>;
    			num-serializer = <0x10>;
    			serial-dir = <0x2 0x1 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0>;
    			tx-num-evt = <0x1>;
    			rx-num-evt = <0x1>;
    			linux,phandle = <0x51>;
    			phandle = <0x51>;
    		};
    
    		mcasp@4803C000 {
    			compatible = "ti,am33xx-mcasp-audio";
    			ti,hwmods = "mcasp1";
    			reg = <0x4803c000 0x2000 0x46400000 0x400000>;
    			reg-names = "mpu", "dat";
    			interrupts = <0x52 0x53>;
    			interrupt-names = "tx", "rx";
    			status = "disabled";
    			dmas = <0x2a 0xa 0x2a 0xb>;
    			dma-names = "tx", "rx";
    		};
    
    		rng@48310000 {
    			compatible = "ti,omap4-rng";
    			ti,hwmods = "rng";
    			reg = <0x48310000 0x2000>;
    			interrupts = <0x6f>;
    		};
    
    		sgx@0x56000000 {
    			compatible = "ti,am3352-sgx530", "img,sgx530";
    			ti,hwmods = "gfx";
    			reg = <0x56000000 0x1000000>;
    			interrupts = <0x25>;
    			status = "okay";
    		};
    	};
    
    	leds {
    		pinctrl-names = "default", "sleep";
    		pinctrl-0 = <0x4a>;
    		pinctrl-1 = <0x4b>;
    		compatible = "gpio-leds";
    
    		led@2 {
    			label = "beaglebone:green:heartbeat";
    			gpios = <0x4c 0x1 0x0>;
    			linux,default-trigger = "heartbeat";
    			default-state = "off";
    		};
    
    		led@3 {
    			label = "beaglebone:green:mmc0";
    			gpios = <0x4c 0x2 0x0>;
    			linux,default-trigger = "mmc0";
    			default-state = "off";
    		};
    
    		led@4 {
    			label = "beaglebone:green:usr2";
    			gpios = <0x4c 0x3 0x0>;
    			linux,default-trigger = "cpu0";
    			default-state = "off";
    		};
    
    		led@5 {
    			label = "beaglebone:green:usr3";
    			gpios = <0x4c 0x4 0x0>;
    			linux,default-trigger = "mmc1";
    			default-state = "off";
    		};
    	};
    
    	fixedregulator@0 {
    		compatible = "regulator-fixed";
    		regulator-name = "vmmcsd_fixed";
    		regulator-min-microvolt = <0x325aa0>;
    		regulator-max-microvolt = <0x325aa0>;
    		linux,phandle = <0x36>;
    		phandle = <0x36>;
    	};
    
    	panel {
    		status = "okay";
    		compatible = "ti,tilcdc,panel";
    		pinctrl-names = "default";
    		pinctrl-0 = <0x4d>;
    
    		panel-info {
    			ac-bias = <0xff>;
    			ac-bias-intrpt = <0x0>;
    			dma-burst-sz = <0x10>;
    			bpp = <0x20>;
    			fdd = <0x80>;
    			sync-edge = <0x0>;
    			sync-ctrl = <0x1>;
    			raster-order = <0x1>;
    			fifo-th = <0x0>;
    		};
    
    		display-timings {
    			native-mode = <0x4e>;
    
    			SVGA-800x600@60Hz {
    				clock-frequency = <0x2625a00>;
    				hactive = <0x320>;
    				hfront-porch = <0x28>;
    				hsync-len = <0x80>;
    				hback-porch = <0x58>;
    				vactive = <0x258>;
    				vfront-porch = <0x1>;
    				vsync-len = <0x4>;
    				vback-porch = <0x17>;
    				hsync-active = <0x0>;
    				vsync-active = <0x0>;
    				de-active = <0x1>;
    				pixelclk-active = <0x0>;
    				linux,phandle = <0x4e>;
    				phandle = <0x4e>;
    			};
    
    			SVGA-800x600@75Hz {
    				clock-frequency = <0x2f34f60>;
    				hactive = <0x320>;
    				hfront-porch = <0x10>;
    				hsync-len = <0x50>;
    				hback-porch = <0xa0>;
    				vactive = <0x258>;
    				vfront-porch = <0x1>;
    				vsync-len = <0x3>;
    				vback-porch = <0x15>;
    				hsync-active = <0x0>;
    				vsync-active = <0x0>;
    				de-active = <0x1>;
    				pixelclk-active = <0x0>;
    			};
    
    			SXGA-800x600@85Hz {
    				clock-frequency = <0x35a4e90>;
    				hactive = <0x320>;
    				hfront-porch = <0x20>;
    				hsync-len = <0x40>;
    				hback-porch = <0x98>;
    				vactive = <0x258>;
    				vfront-porch = <0x1>;
    				vsync-len = <0x3>;
    				vback-porch = <0x1b>;
    				hsync-active = <0x0>;
    				vsync-active = <0x0>;
    				de-active = <0x1>;
    				pixelclk-active = <0x0>;
    			};
    		};
    	};
    
    	clk_mcasp0_fixed {
    		#clock-cells = <0x0>;
    		compatible = "fixed-clock";
    		clock-frequency = <0x1770000>;
    		linux,phandle = <0x4f>;
    		phandle = <0x4f>;
    	};
    
    	clk_mcasp0 {
    		#clock-cells = <0x0>;
    		compatible = "ti,gpio-gate-clock";
    		clocks = <0x4f>;
    		enable-gpios = <0x2d 0x1b 0x0>;
    	};
    
    	sound {
    		compatible = "ti,da830-evm-audio";
    		ti,model = "AM335x Audio";
    		ti,audio-codec = <0x50>;
    		ti,mcasp-controller = <0x51>;
    		ti,codec-clock-rate = <0x16e3600>;
    		ti,audio-routing = "Headphone Jack", "HPLOUT", "Headphone Jack", "HPROUT", "MIC3L", "Mic Jack", "MIC3R", "Mic Jack";
    	};
    };
    

  • Hi Matt,

    It should be ok to back port the RS485 functionality from kernel3.14 & config the kernel to use omap_serial.
    Some things I noted:
    1. in kernel 3.14 they use *up (i.e. up->rs485.flags) to configure the uart. In kernel 4.1.13 they use *port (i.e. port->rs485.flags). IMO you should keep the *port pointer
    2. In kernel 4.1.13 in serial_omap_config_rs485() function of the omap_serial driver, there is a spin_lock() removed:
    spin_lock_irqsave(&up->port.lock, flags);

    /* Disable interrupts from this port */
    mode = up->ier;
    up->ier = 0;
    serial_out(up, UART_IER, 0);
    Be careful with that, as it may lead to a deadlock in your kernel. Consider adding back the lock (either mutex or spinlock) to the uart port.

    3. In kernel 4.1.13 you may need to add back the serial_omap_ioctl() function in omap_serial. Without this it is probable to get unaligned access when you try to use the RS485 from user space.

    Hope this helps.
    Best Regards,
    Yordan