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.

am335x串口死掉

Other Parts Discussed in Thread: TPS65217, TLV320AIC3106, TMP275

板子本身是没有问题的。使用linux3.2的内核已经移植成功了。
但是移植到内核4.1之后, 文件系统开始挂载之后, 调试串口出现假死情况。

最后时刻的log
run-parts: /etc/network/if-up.d: No such file or directory
done.
hwclock: can't open '/dev/misc/rtc': No such file or directory
Thu Jan  1 01:21:00 UTC 1970
hwclock: can't open '/dev/misc/rtc': No such file or directory
INIT: Entering runlevel: 5
Starting system message bus: [    8.116494] random: dbus-daemon urandom read with 46 bits of entropy available
Failed to start message bus: Failed to read directory "/etc/dbus-1/system.d": No such file or directory
Starting telnet daemon.
hwclock: can't open '/dev/misc/rtc': No such file or directory
Starting syslogd/klogd: done
Stopping Bootlog daemon: bootlogd.

在这条log之后没有再向调试串口输入信息不会有任何反应。

  • 另外我是使用的sd启动,文件系统也在sd卡上。

    刚才移植一个3.12的内核, 也没有这个问题。

    还到4.1的内核上面就有问题。

    是不是内核少选了什么配置

  • 看你上面给的log,rtc哪块挂了。在你移植的这个有问题版本的内核中,RTC的相关配置是不是没有被去掉?你把在am33xx.dtsi中关于RTC的部分注释掉,然后查一下在你自己使用的dts文件中有没有,有的话也干掉。然后启动试试。

  • 还是不行, 都可以看到登录了。然后串口就没法输入了。在这之前是可以敲回车的, 能看到敲了回车调试串口有空行。

    现在到最后一步登录的时候, 调试串口无法操作。

    [    0.000000] Booting Linux on physical CPU 0x0
    [    0.000000] Initializing cgroup subsys cpu
    [    0.000000] Initializing cgroup subsys cpuacct
    [    0.000000] Linux version 4.1.18-gbbe8cfc (linux64@linux64) (gcc version 4.9.3 20150413 (prerelease) (Linaro GCC 4.9-2015.05) ) #56
    [    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 EVM
    [    0.000000] cma: Reserved 24 MiB at 0x9d800000
    [    0.000000] Memory policy: Data cache writeback
    [    0.000000] CPU: All CPU(s) started in SVC mode.
    [    0.000000] AM335X ES2.1 (sgx neon )
    [    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 129920
    [    0.000000] Kernel command line: console=ttyS0,115200n8 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: 484556K/524288K available (6775K kernel code, 278K rwdata, 2276K rodata, 272K init, 235K bss, 15156K reserved,)
    [    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 - 0xc08df05c   (9053 kB)
    [    0.000000]       .init : 0xc08e0000 - 0xc0924000   ( 272 kB)
    [    0.000000]       .data : 0xc0924000 - 0xc0969a80   ( 279 kB)
    [    0.000000]        .bss : 0xc096c000 - 0xc09a6fc8   ( 236 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.000030] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns
    [    0.000078] clocksource timer1: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
    [    0.000105] OMAP clocksource: timer1 at 24000000 Hz
    [    0.000484] Console: colour dummy device 80x30
    [    0.000555] Calibrating delay loop... 298.59 BogoMIPS (lpj=1492992)
    [    0.067577] pid_max: default: 32768 minimum: 301
    [    0.067835] Security Framework initialized
    [    0.067949] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
    [    0.067978] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
    [    0.069502] Initializing cgroup subsys blkio
    [    0.069554] Initializing cgroup subsys memory
    [    0.069645] Initializing cgroup subsys devices
    [    0.069680] Initializing cgroup subsys freezer
    [    0.069713] Initializing cgroup subsys perf_event
    [    0.069775] CPU: Testing write buffer coherency: ok
    [    0.070550] Setting up static identity map for 0x80008200 - 0x80008270
    [    0.074165] devtmpfs: initialized
    [    0.106141] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3
    [    0.141085] omap_hwmod: debugss: _wait_target_disable failed
    [    0.210997] clocksource jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
    [    0.215690] pinctrl core: initialized pinctrl subsystem
    [    0.218869] NET: Registered protocol family 16
    [    0.224409] DMA: preallocated 256 KiB pool for atomic coherent allocations
    [    0.247663] cpuidle: using governor ladder
    [    0.277646] cpuidle: using governor menu
    [    0.288952] OMAP GPIO hardware version 0.1
    [    0.311661] omap-gpmc 50000000.gpmc: could not find pctldev for node /ocp/l4_wkup@44c00000/scm@210000/pinmux@800/nandflash_pins_dee
    [    0.319838] No ATAGs?
    [    0.319898] hw-breakpoint: debug architecture 0x4 unsupported.
    [    0.393381] edma 49000000.edma: TI EDMA DMA engine driver
    [    0.404797] vgaarb: loaded
    [    0.406617] SCSI subsystem initialized
    [    0.407429] usbcore: registered new interface driver usbfs
    [    0.407752] usbcore: registered new interface driver hub
    [    0.408032] usbcore: registered new device driver usb
    [    0.409075] omap_i2c 44e0b000.i2c: could not find pctldev for node /ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_i2c0_pins, de
    [    0.409195] omap_i2c 4802a000.i2c: could not find pctldev for node /ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_i2c1_pins, de
    [    0.409558] media: Linux media interface: v0.10
    [    0.409734] Linux video capture interface: v2.00
    [    0.409884] pps_core: LinuxPPS API ver. 1 registered
    [    0.409905] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
    [    0.409987] PTP clock support registered
    [    0.412110] omap-mailbox 480c8000.mailbox: omap mailbox rev 0x400
    [    0.412711] Advanced Linux Sound Architecture Driver Initialized.
    [    0.414838] Switched to clocksource timer1
    [    0.442868] NET: Registered protocol family 2
    [    0.444796] TCP established hash table entries: 4096 (order: 2, 16384 bytes)
    [    0.445093] TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
    [    0.445217] TCP: Hash tables configured (established 4096 bind 4096)
    [    0.445389] UDP hash table entries: 256 (order: 0, 4096 bytes)
    [    0.445443] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
    [    0.445822] NET: Registered protocol family 1
    [    0.446603] RPC: Registered named UNIX socket transport module.
    [    0.446638] RPC: Registered udp transport module.
    [    0.446655] RPC: Registered tcp transport module.
    [    0.446673] RPC: Registered tcp NFSv4.1 backchannel transport module.
    [    0.448685] CPU PMU: Failed to parse /pmu/interrupt-affinity[0]
    [    0.448792] hw perfevents: enabled with armv7_cortex_a8 PMU driver, 5 counters available
    [    0.454070] futex hash table entries: 256 (order: -1, 3072 bytes)
    [    0.454257] audit: initializing netlink subsys (disabled)
    [    0.454397] audit: type=2000 audit(0.440:1): initialized
    [    0.474134] VFS: Disk quotas dquot_6.6.0
    [    0.474633] VFS: Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
    [    0.480316] NFS: Registering the id_resolver key type
    [    0.480469] Key type id_resolver registered
    [    0.480492] Key type id_legacy registered
    [    0.480683] jffs2: version 2.2. (NAND) (SUMMARY)  �© 2001-2006 Red Hat, Inc.
    [    0.489133] NET: Registered protocol family 38
    [    0.489296] io scheduler noop registered
    [    0.489331] io scheduler deadline registered
    [    0.489470] io scheduler cfq registered (default)
    [    0.492248] pinctrl-single 44e10800.pinmux: 142 pins at pa f9e10800 size 568
    [    0.498773] backlight supply power not found, using dummy regulator
    [    0.502983] wkup_m3_ipc 44e11324.wkup_m3_ipc: could not get rproc handle
    [    0.506321] Serial: 8250/16550 driver, 10 ports, IRQ sharing enabled
    [    0.515849] console [ttyS0] disabled
    [    0.516021] 44e09000.serial: ttyS0 at MMIO 0x44e09000 (irq = 158, base_baud = 3000000) is a 8250
    [    1.174807] console [ttyS0] enabled
    [    1.180662] 48022000.serial: ttyS1 at MMIO 0x48022000 (irq = 159, base_baud = 3000000) is a 8250
    [    1.191773] 48024000.serial: ttyS2 at MMIO 0x48024000 (irq = 160, base_baud = 3000000) is a 8250
    [    1.202787] 481a6000.serial: ttyS3 at MMIO 0x481a6000 (irq = 161, base_baud = 3000000) is a 8250
    [    1.213725] 481a8000.serial: ttyS4 at MMIO 0x481a8000 (irq = 162, base_baud = 3000000) is a 8250
    [    1.226914] omap_rng 48310000.rng: OMAP Random Number Generator ver. 20
    [    1.233994] [drm] Initialized drm 1.1.0 20060810
    [    1.239968] panel panel: pins are not configured
    [    1.247820] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
    [    1.254504] [drm] No driver support for vblank timestamp query.
    [    1.279473] Console: switching to colour frame buffer device 30x40
    [    1.288888] tilcdc 4830e000.lcdc: fb0:  frame buffer device
    [    1.294930] tilcdc 4830e000.lcdc: registered panic notifier
    [    1.324915] [drm] Initialized tilcdc 1.0.0 20121205 on minor 0
    [    1.357649] brd: module loaded
    [    1.374019] loop: module loaded
    [    1.380646] mtdoops: mtd device (mtddev=name/number) must be supplied
    [    1.395562] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
    [    1.402176] ehci-pci: EHCI PCI platform driver
    [    1.407005] ehci-platform: EHCI generic platform driver
    [    1.412857] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
    [    1.419219] ohci-pci: OHCI PCI platform driver
    [    1.424247] usbcore: registered new interface driver cdc_wdm
    [    1.430157] usbcore: registered new interface driver uas
    [    1.435752] usbcore: registered new interface driver usb-storage
    [    1.442012] usbcore: registered new interface driver ums_eneub6250
    [    1.448414] usbcore: registered new interface driver ums-freecom
    [    1.454640] usbcore: registered new interface driver ums-sddr55
    [    1.461871] mousedev: PS/2 mouse device common for all mice
    [    1.469331] omap_rtc 44e3e000.rtc: rtc core: registered 44e3e000.rtc as rtc0
    [    1.477005] i2c /dev entries driver
    [    1.482412] sdhci: Secure Digital Host Controller Interface driver
    [    1.488800] sdhci: Copyright(c) Pierre Ossman
    [    1.495129] omap_hsmmc 48060000.mmc: Got CD GPIO
    [    1.649465] usbcore: registered new interface driver ushc
    [    1.655724] ledtrig-cpu: registered to indicate activity on CPUs
    [    1.663678]  remoteproc0: wkup_m3 is available
    [    1.668376]  remoteproc0: Note: remoteproc is still under development and considered experimental.
    [    1.677600]  remoteproc0: THE BINARY FORMAT IS NOT YET FINALIZED, and backward compatibility isn't yet guaranteed.
    [    1.689580]  remoteproc0: Direct firmware load for am335x-pm-firmware.elf failed with error -2
    [    1.702308] pinctrl-single 44e10800.pinmux: pin 44e1090c.0 already requested by 48024000.serial; cannot claim for 4803c000.mcasp
    [    1.714281]  remoteproc0: Falling back to user helper
    [    1.719858] pinctrl-single 44e10800.pinmux: pin-67 (4803c000.mcasp) status -22
    [    1.727252] pinctrl-single 44e10800.pinmux: could not request pin 67 (44e1090c.0) from group am335x_evm_audio_pins  on device pince
    [    1.740043] davinci-mcasp 4803c000.mcasp: Error applying setting, reverse things back
    [    1.750453] oprofile: using arm/armv7
    [    1.755090] Initializing XFRM netlink socket
    [    1.759608] NET: Registered protocol family 17
    [    1.764182] NET: Registered protocol family 15
    [    1.768990] Key type dns_resolver registered
    [    1.774144] omap_voltage_late_init: Voltage driver support not added
    [    1.781519] cpu cpu0: of_pm_voltdm_notifier_register: Failed to get cpu0 regulator/voltdm: -517
    [    1.790646] cpu cpu0: cpu0 clock notifier not ready, retry
    [    1.797112] ThumbEE CPU extension supported.
    [    1.801565] Registering SWP/SWPB emulation handler
    [    1.812194] omap-gpmc 50000000.gpmc: GPMC revision 6.0
    [    1.817771] gpmc_mem_init: disabling cs 0 mapped at 0x0-0x1000000
    [    1.827101] nand: device found, Manufacturer ID: 0x2c, Chip ID: 0xda
    [    1.833630] nand: Micron MT29F2G08ABAEAWP
    [    1.837840] nand: 256 MiB, SLC, erase size: 128 KiB, page size: 2048, OOB size: 64
    [    1.845629] nand: using OMAP_ECC_BCH8_CODE_HW ECC scheme
    [    1.851187] 10 ofpart partitions found on MTD device 8000000.nand
    [    1.857501] Creating 10 MTD partitions on "8000000.nand":
    [    1.863028] 0x000000000000-0x000000020000 : "NAND.SPL"
    [    1.871061] 0x000000020000-0x000000040000 : "NAND.SPL.backup1"
    [    1.879583] 0x000000040000-0x000000060000 : "NAND.SPL.backup2"
    [    1.888031] 0x000000060000-0x000000080000 : "NAND.SPL.backup3"
    [    1.896466] 0x000000080000-0x0000000c0000 : "NAND.u-boot-spl-os"
    [    1.904978] 0x0000000c0000-0x0000001c0000 : "NAND.u-boot"
    [    1.913079] 0x0000001c0000-0x0000001e0000 : "NAND.u-boot-env"
    [    1.921382] 0x0000001e0000-0x000000200000 : "NAND.u-boot-env.backup1"
    [    1.930289] 0x000000200000-0x000000a00000 : "NAND.kernel"
    [    1.941447] 0x000000a00000-0x000010000000 : "NAND.file-system"
    [    2.077707] tps65217 0-0024: TPS65217 ID 0xe version 1.2
    [    2.083251] omap_i2c 44e0b000.i2c: bus 0 rev0.11 at 400 kHz
    [    2.092830] omap_i2c 4802a000.i2c: bus 1 rev0.11 at 100 kHz
    [    2.101259] omap_hsmmc 48060000.mmc: Got CD GPIO
    [    2.149520] cpu cpu0: of_pm_voltdm_notifier_register: Fail calculating voltage latency[950000<->1260000]:-22
    [    2.160870] cpu cpu0: of_pm_voltdm_notifier_register: Fail calculating voltage latency[950000<->1260000]:-22
    [    2.181770] omap_rtc 44e3e000.rtc: setting system clock to 2000-01-01 00:00:01 UTC (946684801)
    [    2.194683] wlan-en-regulator: disabling
    [    2.198909] lis3_reg: disabling
    [    2.202110] vbat: disabling
    [    2.205101] ALSA device list:
    [    2.208086]   No soundcards found.
    [    2.212921] Waiting for root device /dev/mmcblk0p2...
    [    2.233656] mmc1: host does not support reading read-only switch, assuming write-enable
    [    2.245032] mmc1: new high speed SDHC card at address aaaa
    [    2.251243] mmcblk0: mmc1:aaaa SL08G 7.40 GiB
    [    2.257526]  mmcblk0: p1 p2
    [    2.340578] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
    [    2.348997] VFS: Mounted root (ext4 filesystem) readonly on device 179:2.
    [    2.359444] devtmpfs: mounted
    [    2.362918] Freeing unused kernel memory: 272K (c08e0000 - c0924000)
    INIT: version 2.88 booting
    Starting udev
    cmp: EOF on /etc/udev/cache.data
    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.181054] udevd[93]: starting version 182
    [    4.913873]  remoteproc0: powering up wkup_m3
    [    4.955302]  remoteproc0: Booting fw image am335x-pm-firmware.elf, size 219803
    [    4.963035]  remoteproc0: remote processor wkup_m3 is now up
    [    4.968749] wkup_m3_ipc 44e11324.wkup_m3_ipc: CM3 Firmware Version = 0x191
    [    7.659954] FAT-fs (mmcblk0p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
    [    8.051334] EXT4-fs (mmcblk0p2): warning: mounting fs with errors, running e2fsck is recommended
    [    8.063618] EXT4-fs (mmcblk0p2): re-mounted. Opts: data=ordered
    bootlogd: cannot allocate pseudo tty: No such file or directory
    [    8.201606] random: dd urandom read with 54 bits of entropy available
    Populating dev cache
    ALSA: Restoring mixer settings...
    /usr/sbin/alsactl: load_state:1729: No soundcards found...
    Fri Jan  8 23:20:04 UTC 2016
    INIT: Entering runlevel: 5
    Configuring network interfaces... ifconfig: SIOCGIFFLAGS: No such device
    done.
    Starting system message bus: dbus.
    Starting telnet daemon.
    Starting rpcbind daemon...rpcbind: cannot create socket for udp6
    rpcbind: cannot create socket for tcp6
    done.
    starting statd: done
    Starting syslogd/klogd: done
    Starting thttpd.
    Enabling thermal zones...
    /etc/rc5.d/S98thermal-zone-init: line 7: /sys/class/thermal/thermal_zone*/mode: No such file or directory

     _____                    _____           _         _   
    |  _  |___ ___ ___ ___   |  _  |___ ___  |_|___ ___| |_
    |     |  _| .'| . | . |  |   __|  _| . | | | -_|  _|  _|
    |__|__|_| |__,|_  |___|  |__|  |_| |___|_| |___|___|_|  
                  |___|                    |___|            

    Arago Project http://arago-project.org am335x-evm /dev/ttyS0

    Arago 2015.12 am335x-evm /dev/ttyS0

    am335x-evm login:

  • 最后这条/etc/rc5.d/S98thermal-zone-init: line 7: /sys/class/thermal/thermal_zone*/mode: No such file or directory 是不影响启动的。

    在linux3.14上面也有这个部分报错都是可以进入命令行的。

  • 解决了rtc问题, 还是不行。

  • 我写了一个简单的驱动,定时器每隔一秒打印一条信息。

    但是在调试串口假死之后, 这个驱动就再也没打印信息了。

    尝试使用8250 -omap的串口驱动, 然后传串口参数console=ttyS0,115200n8, 修改/etc/inittab,

    S:2345:respawn:/sbin/getty 115200 ttyS0

    或者传参数 console=ttyO0,115200n8 /etc/inittab

    S:2345:respawn:/sbin/getty 115200 ttyO0

    使用omap-serial驱动,

    同样会出现该问题。

    文件系统是我从官方sdk里面取的, 换成其他内核可以使用, 不会有这个问题。

    内核配置文件我使用的是

    arch/arm/configs/tisdk_am335x-evm_defconfig 使用sd卡启动。

  • 你看你的log这里:

    [    0.515849] console [ttyS0] disabled
    [    0.516021] 44e09000.serial: ttyS0 at MMIO 0x44e09000 (irq = 158, base_baud = 3000000) is a 8250
    [    1.174807] console [ttyS0] enabled

    你是改了驱动哪里了吗?你在移植的时候,其实只要动dts文件的配置就好了,driver部分的话没什么要动的。能否简要描述一下你移植都改了哪些文件。

  • 现在内核里面有两个omap串口驱动,  一个是基于8250的

    另一个是omap-serial.c

    我参考的http://processors.wiki.ti.com/index.php/Sitara_Linux_UART_-_Switching_to_8250_Driver

    两个驱动我都试过,都不行。

    驱动我没有改过。

  • 目前只是修改了lcd, 以及pmic 因为这个和sd卡有关, 然后移植了uart0, 1, 2, 3, 4,

    其余的没动过。

    /*
     * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
     *
     * This program is free software; you can redistribute it and/or modify
     * it under the terms of the GNU General Public License version 2 as
     * published by the Free Software Foundation.
     */
    /dts-v1/;

    #include "am33xx.dtsi"
    #include <dt-bindings/interrupt-controller/irq.h>

    / {
        model = "TI AM335x EVM";
        compatible = "ti,am335x-evm", "ti,am33xx";

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

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

        vbat: fixedregulator@0 {
            compatible = "regulator-fixed";
            regulator-name = "vbat";
            regulator-min-microvolt = <5000000>;
            regulator-max-microvolt = <5000000>;
            regulator-boot-on;
        };

        lis3_reg: fixedregulator@1 {
            compatible = "regulator-fixed";
            regulator-name = "lis3_reg";
            regulator-boot-on;
        };

        wlan_en_reg: fixedregulator@2 {
            compatible = "regulator-fixed";
            regulator-name = "wlan-en-regulator";
            regulator-min-microvolt = <1800000>;
            regulator-max-microvolt = <1800000>;

            /* WLAN_EN GPIO for this board - Bank1, pin16 */
            gpio = <&gpio1 16 0>;

            /* WLAN card specific delay */
            startup-delay-us = <70000>;
            enable-active-high;
        };

        matrix_keypad: matrix_keypad@0 {
            compatible = "gpio-matrix-keypad";
            debounce-delay-ms = <5>;
            col-scan-delay-us = <2>;

            pinctrl-names = "default", "sleep";
            pinctrl-0 = <&matrix_keypad_default>;
            pinctrl-1 = <&matrix_keypad_sleep>;

            row-gpios = <&gpio1 25 GPIO_ACTIVE_HIGH        /* Bank1, pin25 */
                     &gpio1 26 GPIO_ACTIVE_HIGH        /* Bank1, pin26 */
                     &gpio1 27 GPIO_ACTIVE_HIGH>;    /* Bank1, pin27 */

            col-gpios = <&gpio1 21 GPIO_ACTIVE_HIGH        /* Bank1, pin21 */
                     &gpio1 22 GPIO_ACTIVE_HIGH>;    /* Bank1, pin22 */

            linux,keymap = <0x0000008b    /* MENU */
                    0x0100009e    /* BACK */
                    0x02000069    /* LEFT */
                    0x0001006a    /* RIGHT */
                    0x0101001c    /* ENTER */
                    0x0201006c>;    /* DOWN */
        };

        gpio_keys: volume_keys@0 {
            compatible = "gpio-keys";
            #address-cells = <1>;
            #size-cells = <0>;
            autorepeat;

            switch@9 {
                label = "volume-up";
                linux,code = <115>;
                gpios = <&gpio0 2 GPIO_ACTIVE_LOW>;
                gpio-key,wakeup;
            };

            switch@10 {
                label = "volume-down";
                linux,code = <114>;
                gpios = <&gpio0 3 GPIO_ACTIVE_LOW>;
                gpio-key,wakeup;
            };
        };

        backlight {
            compatible = "pwm-backlight";
            pwms = <&ecap0 0 50000 0>;
            brightness-levels = <0 51 53 56 62 75 101 152 255>;
            default-brightness-level = <5>;
        };

        panel {
            compatible = "ti,tilcdc,panel";
            status = "okay";
            panel-info {
                ac-bias           = <255>;
                ac-bias-intrpt    = <0>;
                dma-burst-sz      = <16>;
                bpp               = <32>;
                fdd               = <0x80>;
                sync-edge         = <0>;
                sync-ctrl         = <1>;
                raster-order      = <0>;
                fifo-th           = <0>;
            };

            display-timings {
                800x480p62 {
                    clock-frequency = <7000000>;
                    hactive = <240>;
                    vactive = <320>;
                    hfront-porch = <2>;
                    //hback-porch = <10>;
                    hback-porch = <60>;
                    //hsync-len = <10>;
                    hsync-len = <2>;
                    vback-porch = <4>;
                    vfront-porch = <8>;
                    vsync-len = <4>;
                    //hsync-active = <1>;
                    hsync-active = <1>;
                    vsync-active = <1>;
                };
            };
        };

        kim {
            compatible = "kim";
            nshutdown_gpio = <117>; /* Bank3, pin21 */
            dev_name = "/dev/ttyS1";
            flow_cntrl = <1>;
            baud_rate = <3000000>;
        };

        btwilink {
            compatible = "btwilink";
        };

        sound {
            compatible = "ti,da830-evm-audio";
            ti,model = "AM335x-EVM";
            ti,audio-codec = <&tlv320aic3106>;
            ti,mcasp-controller = <&mcasp1>;
            ti,codec-clock-rate = <12000000>;
            ti,audio-routing =
                "Headphone Jack",       "HPLOUT",
                "Headphone Jack",       "HPROUT",
                "LINE1L",               "Line In",
                "LINE1R",               "Line In";
        };
    };

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

        matrix_keypad_default: matrix_keypad_default {
            pinctrl-single,pins = <
                0x54 (PIN_OUTPUT_PULLDOWN | MUX_MODE7)    /* gpmc_a5.gpio1_21 */
                0x58 (PIN_OUTPUT_PULLDOWN | MUX_MODE7)    /* gpmc_a6.gpio1_22 */
                0x64 (PIN_INPUT_PULLDOWN | MUX_MODE7)    /* gpmc_a9.gpio1_25 */
                0x68 (PIN_INPUT_PULLDOWN | MUX_MODE7)    /* gpmc_a10.gpio1_26 */
                0x6c (PIN_INPUT_PULLDOWN | MUX_MODE7)    /* gpmc_a11.gpio1_27 */
            >;
        };

        matrix_keypad_sleep: matrix_keypad_sleep {
            pinctrl-single,pins = <
                0x54 (PIN_INPUT_PULLDOWN | MUX_MODE7)    /* gpmc_a5.gpio1_21 */
                0x58 (PIN_INPUT_PULLDOWN | MUX_MODE7)    /* gpmc_a6.gpio1_22 */
            >;
        };

        volume_keys_s0: volume_keys_s0 {
            pinctrl-single,pins = <
                0x150 (PIN_INPUT_PULLDOWN | MUX_MODE7)    /* spi0_sclk.gpio0_2 */
                0x154 (PIN_INPUT_PULLDOWN | MUX_MODE7)    /* spi0_d0.gpio0_3 */
            >;
        };

        i2c0_pins: pinmux_i2c0_pins {
            pinctrl-single,pins = <
                0x188 (PIN_INPUT_PULLUP | MUX_MODE0)    /* i2c0_sda.i2c0_sda */
                0x18c (PIN_INPUT_PULLUP | MUX_MODE0)    /* i2c0_scl.i2c0_scl */
            >;
        };

        i2c1_pins_default: pinmux_i2c1_pins {
            pinctrl-single,pins = <
                0x158 (PIN_INPUT_PULLUP | MUX_MODE2)    /* spi0_d1.i2c1_sda */
                0x15c (PIN_INPUT_PULLUP | MUX_MODE2)    /* spi0_cs0.i2c1_scl */
            >;
        };

        i2c1_pins_sleep: i2c1_pins_sleep {
            pinctrl-single,pins = <
                0x158 (PIN_INPUT_PULLDOWN | MUX_MODE7)    /* spi0_d1.i2c1_sda */
                0x15c (PIN_INPUT_PULLDOWN | MUX_MODE7)    /* spi0_cs0.i2c1_scl */
            >;
        };

        uart0_pins: pinmux_uart0_pins {
            pinctrl-single,pins = <
                0x170 (PIN_INPUT_PULLUP | MUX_MODE0)    /* uart0_rxd.uart0_rxd */
                0x174 (PIN_OUTPUT_PULLDOWN | MUX_MODE0)    /* uart0_txd.uart0_txd */
            >;
        };

        uart1_pins_default: pinmux_uart1_pins_default {
            pinctrl-single,pins = <
                0x180 (PIN_INPUT_PULLUP | MUX_MODE0)    /* uart1_rxd.uart1_rxd */
                0x184 (PIN_OUTPUT_PULLDOWN | MUX_MODE0)     /* uart1_txd.uart1_txd */
            >;
        };

        uart1_pins_sleep: pinmux_uart1_pins_sleep {
            pinctrl-single,pins = <
                0x180 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                0x184 (PIN_INPUT_PULLDOWN | MUX_MODE7)
            >;
        };


        uart2_pins_default: pinmux_uart2_pins_default {
            pinctrl-single,pins = <
                0x10c ( PIN_INPUT | MUX_MODE6 ) /* (H17) gmii1_crs.uart2_rxd */
                0x110 ( PIN_OUTPUT | MUX_MODE6 ) /* (J15) gmii1_rxer.uart2_txd */
            >;
        };

        uart2_pins_sleep: pinmux_uart2_pins_sleep {
            pinctrl-single,pins = <
                0x10c (PIN_INPUT_PULLDOWN | MUX_MODE7 ) /* (H17) gmii1_crs.uart2_rxd */
                0x110 ( PIN_INPUT_PULLDOWN | MUX_MODE7) /* (J15) gmii1_rxer.uart2_txd */
            >;
        };


        uart3_pins_default: pinmux_uart3_pins_default {
            pinctrl-single,pins = <
                0x134 ( PIN_INPUT | MUX_MODE1 ) /* (L17) gmii1_rxd3.uart3_rxd */
                0x138 ( PIN_OUTPUT | MUX_MODE1 ) /* (L16) gmii1_rxd2.uart3_txd */
            >;
        };

        uart3_pins_sleep: pinmux_uart3_pins_sleep {
            pinctrl-single,pins = <
                0x134 ( PIN_INPUT_PULLDOWN | MUX_MODE7) /* (L17) gmii1_rxd3.uart3_rxd */
                0x138 ( PIN_INPUT_PULLDOWN | MUX_MODE7 ) /* (L16) gmii1_rxd2.uart3_txd */
            >;
        };


        uart4_pins_default: pinmux_uart4_pins_default {
            pinctrl-single,pins = <
                0x11c ( PIN_INPUT | MUX_MODE3 ) /* (J18) gmii1_txd3.uart4_rxd */
                0x120 ( PIN_OUTPUT | MUX_MODE3 ) /* (K15) gmii1_txd2.uart4_txd */
            >;
        };

        uart4_pins_sleep: pinmux_uart4_pins_sleep {
            pinctrl-single,pins = <
                0x11c ( PIN_INPUT_PULLDOWN | MUX_MODE7) /* (J18) gmii1_txd3.uart4_rxd */
                0x120 ( PIN_INPUT_PULLDOWN | MUX_MODE7) /* (K15) gmii1_txd2.uart4_txd */
            >;
        };


        gps_no_pins_default: gps_no_pins_default {
            pinctrl-single,pins = <
                0x124 (PIN_OUTPUT_PULLUP | MUX_MODE7 ) /* (K16) gmii1_txd1.gpio0[21] */
            >;
        };

        gps_no_pins_sleep: gps_no_pins_sleep {
            pinctrl-single,pins = <
                0x124 (PIN_OUTPUT_PULLUP | MUX_MODE7 ) /* (K16) gmii1_txd1.gpio0[21] */
            >;
        };


        clkout2_pin: pinmux_clkout2_pin {
            pinctrl-single,pins = <
                0x1b4 (PIN_OUTPUT_PULLDOWN | MUX_MODE3)    /* xdma_event_intr1.clkout2 */
            >;
        };

        nandflash_pins_default: nandflash_pins_default {
            pinctrl-single,pins = <
                0x0 (PIN_INPUT_PULLUP | MUX_MODE0)    /* gpmc_ad0.gpmc_ad0 */
                0x4 (PIN_INPUT_PULLUP | MUX_MODE0)    /* gpmc_ad1.gpmc_ad1 */
                0x8 (PIN_INPUT_PULLUP | MUX_MODE0)    /* gpmc_ad2.gpmc_ad2 */
                0xc (PIN_INPUT_PULLUP | MUX_MODE0)    /* gpmc_ad3.gpmc_ad3 */
                0x10 (PIN_INPUT_PULLUP | MUX_MODE0)    /* gpmc_ad4.gpmc_ad4 */
                0x14 (PIN_INPUT_PULLUP | MUX_MODE0)    /* gpmc_ad5.gpmc_ad5 */
                0x18 (PIN_INPUT_PULLUP | MUX_MODE0)    /* gpmc_ad6.gpmc_ad6 */
                0x1c (PIN_INPUT_PULLUP | MUX_MODE0)    /* gpmc_ad7.gpmc_ad7 */
                0x70 (PIN_INPUT_PULLUP | MUX_MODE0)    /* gpmc_wait0.gpmc_wait0 */
                0x74 (PIN_INPUT_PULLUP | MUX_MODE7)    /* gpmc_wpn.gpio0_30 */
                0x7c (PIN_OUTPUT | MUX_MODE0)        /* gpmc_csn0.gpmc_csn0  */
                0x90 (PIN_OUTPUT | MUX_MODE0)        /* gpmc_advn_ale.gpmc_advn_ale */
                0x94 (PIN_OUTPUT | MUX_MODE0)        /* gpmc_oen_ren.gpmc_oen_ren */
                0x98 (PIN_OUTPUT | MUX_MODE0)        /* gpmc_wen.gpmc_wen */
                0x9c (PIN_OUTPUT | MUX_MODE0)        /* gpmc_be0n_cle.gpmc_be0n_cle */
            >;
        };

        nandflash_pins_sleep: nandflash_pins_sleep {
            pinctrl-single,pins = <
                0x0 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                0x4 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                0x8 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                0xc (PIN_INPUT_PULLDOWN | MUX_MODE7)
                0x10 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                0x14 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                0x18 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                0x1c (PIN_INPUT_PULLDOWN | MUX_MODE7)
                0x70 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                0x74 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                0x7c (PIN_INPUT_PULLDOWN | MUX_MODE7)
                0x90 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                0x94 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                0x98 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                0x9c (PIN_INPUT_PULLDOWN | MUX_MODE7)
            >;
        };

        ecap0_pins_default: backlight_pins {
            pinctrl-single,pins = <
                0x164 0x0    /* eCAP0_in_PWM0_out.eCAP0_in_PWM0_out MODE0 */
            >;
        };

        ecap0_pins_sleep: ecap0_pins_sleep {
            pinctrl-single,pins = <
                0x164  (PIN_INPUT_PULLDOWN | MUX_MODE7)    /* eCAP0_in_PWM0_out.eCAP0_in_PWM0_out */
            >;
        };

        cpsw_default: cpsw_default {
            pinctrl-single,pins = <
                /* Slave 1 */
                0x114 (PIN_OUTPUT_PULLDOWN | MUX_MODE2)    /* mii1_txen.rgmii1_tctl */
                0x118 (PIN_INPUT_PULLDOWN | MUX_MODE2)    /* mii1_rxdv.rgmii1_rctl */
                0x11c (PIN_OUTPUT_PULLDOWN | MUX_MODE2)    /* mii1_txd3.rgmii1_td3 */
                0x120 (PIN_OUTPUT_PULLDOWN | MUX_MODE2)    /* mii1_txd2.rgmii1_td2 */
                //0x124 (PIN_OUTPUT_PULLDOWN | MUX_MODE2)    /* mii1_txd1.rgmii1_td1 */
                0x128 (PIN_OUTPUT_PULLDOWN | MUX_MODE2)    /* mii1_txd0.rgmii1_td0 */
                0x12c (PIN_OUTPUT_PULLDOWN | MUX_MODE2)    /* mii1_txclk.rgmii1_tclk */
                0x130 (PIN_INPUT_PULLDOWN | MUX_MODE2)    /* mii1_rxclk.rgmii1_rclk */
                0x134 (PIN_INPUT_PULLDOWN | MUX_MODE2)    /* mii1_rxd3.rgmii1_rd3 */
                0x138 (PIN_INPUT_PULLDOWN | MUX_MODE2)    /* mii1_rxd2.rgmii1_rd2 */
                0x13c (PIN_INPUT_PULLDOWN | MUX_MODE2)    /* mii1_rxd1.rgmii1_rd1 */
                0x140 (PIN_INPUT_PULLDOWN | MUX_MODE2)    /* mii1_rxd0.rgmii1_rd0 */
            >;
        };

        cpsw_sleep: cpsw_sleep {
            pinctrl-single,pins = <
                /* Slave 1 reset value */
                0x114 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                0x118 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                0x11c (PIN_INPUT_PULLDOWN | MUX_MODE7)
                0x120 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                //0x124 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                0x128 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                0x12c (PIN_INPUT_PULLDOWN | MUX_MODE7)
                0x130 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                0x134 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                0x138 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                0x13c (PIN_INPUT_PULLDOWN | MUX_MODE7)
                0x140 (PIN_INPUT_PULLDOWN | MUX_MODE7)
            >;
        };

        davinci_mdio_default: davinci_mdio_default {
            pinctrl-single,pins = <
                /* MDIO */
                0x148 (PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0)    /* mdio_data.mdio_data */
                0x14c (PIN_OUTPUT_PULLUP | MUX_MODE0)            /* mdio_clk.mdio_clk */
            >;
        };

        davinci_mdio_sleep: davinci_mdio_sleep {
            pinctrl-single,pins = <
                /* MDIO reset value */
                0x148 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                0x14c (PIN_INPUT_PULLDOWN | MUX_MODE7)
            >;
        };

        mmc1_pins_default: pinmux_mmc1_pins {
            pinctrl-single,pins = <
                0x0F0 (PIN_INPUT_PULLUP | MUX_MODE0)    /* mmc0_dat3.mmc0_dat3 */
                0x0F4 (PIN_INPUT_PULLUP | MUX_MODE0)    /* mmc0_dat2.mmc0_dat2 */
                0x0F8 (PIN_INPUT_PULLUP | MUX_MODE0)    /* mmc0_dat1.mmc0_dat1 */
                0x0FC (PIN_INPUT_PULLUP | MUX_MODE0)    /* mmc0_dat0.mmc0_dat0 */
                0x100 (PIN_INPUT_PULLUP | MUX_MODE0)    /* mmc0_clk.mmc0_clk */
                0x104 (PIN_INPUT_PULLUP | MUX_MODE0)    /* mmc0_cmd.mmc0_cmd */
                0x1A0 (PIN_INPUT_PULLUP | MUX_MODE7)    /* mcasp0_aclkr.gpio3_18 */
                0x160 (PIN_INPUT | MUX_MODE7)           /* spi0_cs1.gpio0_6 */
            >;
        };

        mmc1_pins_sleep: pinmux_mmc1_pins_sleep {
            pinctrl-single,pins = <
                0x0F0 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                0x0F4 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                0x0F8 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                0x0FC (PIN_INPUT_PULLDOWN | MUX_MODE7)
                0x100 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                0x104 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                0x1A0 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                0x160 (PIN_INPUT_PULLDOWN | MUX_MODE7)
            >;
        };

        /* wl12xx/wl18xx card on mmc3 */
        mmc3_pins: pinmux_mmc3_pins {
            pinctrl-single,pins = <
                0x44 (PIN_INPUT_PULLUP | MUX_MODE3)    /* gpmc_a1.mmc2_dat0, INPUT_PULLUP | MODE3 */
                0x48 (PIN_INPUT_PULLUP | MUX_MODE3)    /* gpmc_a2.mmc2_dat1, INPUT_PULLUP | MODE3 */
                0x4C (PIN_INPUT_PULLUP | MUX_MODE3)    /* gpmc_a3.mmc2_dat2, INPUT_PULLUP | MODE3 */
                0x78 (PIN_INPUT_PULLUP | MUX_MODE3)    /* gpmc_ben1.mmc2_dat3, INPUT_PULLUP | MODE3 */
                0x88 (PIN_INPUT_PULLUP | MUX_MODE3)    /* gpmc_csn3.mmc2_cmd, INPUT_PULLUP | MODE3 */
                0x8C (PIN_INPUT_PULLUP | MUX_MODE3)    /* gpmc_clk.mmc2_clk, INPUT_PULLUP | MODE3 */
            >;
        };

        /* wl12xx/wl18xx card enable/irq GPIOs. */
        wlan_pins: pinmux_wlan_pins {
            pinctrl-single,pins = <
                0x40 (PIN_OUTPUT_PULLDOWN | MUX_MODE7)    /* gpmc_a0.gpio1_16 */
                0x19C (PIN_INPUT | MUX_MODE7)        /* mcasp0_ahclkr.gpio3_17 */
                0x1AC (PIN_OUTPUT_PULLDOWN | MUX_MODE7)    /* mcasp0_ahclkx.gpio3_21 */
            >;
        };

        lcd_pins_default: lcd_pins_default {
            pinctrl-single,pins = <

                0xa0 (PIN_OUTPUT | MUX_MODE0)        /* lcd_data0.lcd_data0 */
                0xa4 (PIN_OUTPUT | MUX_MODE0)        /* lcd_data1.lcd_data1 */
                0xa8 (PIN_OUTPUT | MUX_MODE0)        /* lcd_data2.lcd_data2 */
                0xac (PIN_OUTPUT | MUX_MODE0)        /* lcd_data3.lcd_data3 */
                0xb0 (PIN_OUTPUT | MUX_MODE0)        /* lcd_data4.lcd_data4 */
                0xb4 (PIN_OUTPUT | MUX_MODE0)        /* lcd_data5.lcd_data5 */
                0xb8 (PIN_OUTPUT | MUX_MODE0)        /* lcd_data6.lcd_data6 */
                0xbc (PIN_OUTPUT | MUX_MODE0)        /* lcd_data7.lcd_data7 */
                0xc0 (PIN_OUTPUT | MUX_MODE0)        /* lcd_data8.lcd_data8 */
                0xc4 (PIN_OUTPUT | MUX_MODE0)        /* lcd_data9.lcd_data9 */
                0xc8 (PIN_OUTPUT | MUX_MODE0)        /* lcd_data10.lcd_data10 */
                0xcc (PIN_OUTPUT | MUX_MODE0)        /* lcd_data11.lcd_data11 */
                0xd0 (PIN_OUTPUT | MUX_MODE0)        /* lcd_data12.lcd_data12 */
                0xd4 (PIN_OUTPUT | MUX_MODE0)        /* lcd_data13.lcd_data13 */
                0xd8 (PIN_OUTPUT | MUX_MODE0)        /* lcd_data14.lcd_data14 */
                0xdc (PIN_OUTPUT | MUX_MODE0)        /* lcd_data15.lcd_data15 */
                0xe0 (PIN_OUTPUT | MUX_MODE0)        /* lcd_vsync.lcd_vsync */
                0xe4 (PIN_OUTPUT | MUX_MODE0)        /* lcd_hsync.lcd_hsync */
                0xe8 (PIN_OUTPUT | MUX_MODE0)        /* lcd_pclk.lcd_pclk */
                0xec (PIN_OUTPUT | MUX_MODE0)        /* lcd_ac_bias_en.lcd_ac_bias_en */
            >;
        };

        lcd_pins_sleep: lcd_pins_sleep {
            pinctrl-single,pins = <

                0xa0 (PULL_DISABLE | MUX_MODE7)        /* lcd_data0.lcd_data0 */
                0xa4 (PULL_DISABLE | MUX_MODE7)        /* lcd_data1.lcd_data1 */
                0xa8 (PULL_DISABLE | MUX_MODE7)        /* lcd_data2.lcd_data2 */
                0xac (PULL_DISABLE | MUX_MODE7)        /* lcd_data3.lcd_data3 */
                0xb0 (PULL_DISABLE | MUX_MODE7)        /* lcd_data4.lcd_data4 */
                0xb4 (PULL_DISABLE | MUX_MODE7)        /* lcd_data5.lcd_data5 */
                0xb8 (PULL_DISABLE | MUX_MODE7)        /* lcd_data6.lcd_data6 */
                0xbc (PULL_DISABLE | MUX_MODE7)        /* lcd_data7.lcd_data7 */
                0xc0 (PULL_DISABLE | MUX_MODE7)        /* lcd_data8.lcd_data8 */
                0xc4 (PULL_DISABLE | MUX_MODE7)        /* lcd_data9.lcd_data9 */
                0xc8 (PULL_DISABLE | MUX_MODE7)        /* lcd_data10.lcd_data10 */
                0xcc (PULL_DISABLE | MUX_MODE7)        /* lcd_data11.lcd_data11 */
                0xd0 (PULL_DISABLE | MUX_MODE7)        /* lcd_data12.lcd_data12 */
                0xd4 (PULL_DISABLE | MUX_MODE7)        /* lcd_data13.lcd_data13 */
                0xd8 (PULL_DISABLE | MUX_MODE7)        /* lcd_data14.lcd_data14 */
                0xdc (PULL_DISABLE | MUX_MODE7)        /* lcd_data15.lcd_data15 */
                0xe0 (PIN_INPUT_PULLDOWN | MUX_MODE7)    /* lcd_vsync.lcd_vsync, OUTPUT | MODE0 */
                0xe4 (PIN_INPUT_PULLDOWN | MUX_MODE7)    /* lcd_hsync.lcd_hsync */
                0xe8 (PIN_INPUT_PULLDOWN | MUX_MODE7)    /* lcd_pclk.lcd_pclk */
                0xec (PIN_INPUT_PULLDOWN | MUX_MODE7)    /* lcd_ac_bias_en.lcd_ac_bias_en */
            >;
        };

        am335x_evm_audio_pins: am335x_evm_audio_pins {
            pinctrl-single,pins = <
                0x10c (PIN_INPUT_PULLDOWN | MUX_MODE4) /* mii1_crs.mcasp1_aclkx */
                0x110 (PIN_INPUT_PULLDOWN | MUX_MODE4) /* mii1_rxerr.mcasp1_fsx */
                0x108 (PIN_OUTPUT_PULLDOWN | MUX_MODE4) /* mii1_col.mcasp1_axr2 */
                0x144 (PIN_INPUT_PULLDOWN | MUX_MODE4) /* rmii1_ref_clk.mcasp1_axr3 */
            >;
        };

        am335x_evm_audio_pins_sleep: am335x_evm_audio_pins_sleep {
            pinctrl-single,pins = <
                0x10c (PIN_INPUT_PULLDOWN | MUX_MODE7) /* mii1_rx_dv.mcasp1_aclkx */
                0x110 (PIN_INPUT_PULLDOWN | MUX_MODE7) /* mii1_txd3.mcasp1_fsx */
                0x108 (PIN_INPUT_PULLDOWN | MUX_MODE7) /* mii1_col.mcasp1_axr2 */
                0x144 (PIN_INPUT_PULLDOWN | MUX_MODE7) /* rmii1_ref_clk.mcasp1_axr3 */
            >;
        };

        dcan1_pins_default: dcan1_pins_default {
            pinctrl-single,pins = <
                0x168 (PIN_OUTPUT | MUX_MODE2) /* uart0_ctsn.d_can1_tx */
                0x16c (PIN_INPUT_PULLDOWN | MUX_MODE2) /* uart0_rtsn.d_can1_rx */
            >;
        };
    };

    &uart0 {
        pinctrl-names = "default";
        pinctrl-0 = <&uart0_pins>;

        status = "okay";
    };

    &uart1 {
        pinctrl-names = "default", "sleep";
        pinctrl-0 = <&uart1_pins_default>;
        pinctrl-1 = <&uart1_pins_sleep>;

        status = "okay";
    };


    &uart2 {
        pinctrl-names = "default", "sleep";
        pinctrl-0 = <&uart2_pins_default>;
        pinctrl-1 = <&uart2_pins_sleep>;

        status = "okay";
    };

    &uart3 {
        pinctrl-names = "default", "sleep";
        pinctrl-0 = <&uart3_pins_default>;
        pinctrl-1 = <&uart3_pins_sleep>;

        status = "okay";
    };

    &uart4 {
        pinctrl-names = "default", "sleep";
        pinctrl-0 = <&uart4_pins_default>;
        pinctrl-1 = <&uart4_pins_sleep>;

        status = "okay";
    };



    &i2c0 {
        pinctrl-names = "default";
        pinctrl-0 = <&i2c0_pins>;

        status = "okay";
        clock-frequency = <400000>;

        tps: tps@24 {
            reg = <0x24>;
        };
    };

    &usb {
        status = "okay";
    };

    &usb_ctrl_mod {
        status = "okay";
    };

    &usb0_phy {
        status = "okay";
    };

    &usb1_phy {
        status = "okay";
    };

    &usb0 {
        status = "okay";
    };

    &usb1 {
        status = "okay";
        dr_mode = "host";
    };

    &cppi41dma  {
        status = "okay";
    };

    &i2c1 {
        pinctrl-names = "default", "sleep";
        pinctrl-0 = <&i2c1_pins_default>;
        pinctrl-1 = <&i2c1_pins_sleep>;

        status = "okay";
        clock-frequency = <100000>;

        lis331dlh: lis331dlh@18 {
            compatible = "st,lis331dlh", "st,lis3lv02d";
            reg = <0x18>;
            Vdd-supply = <&lis3_reg>;
            Vdd_IO-supply = <&lis3_reg>;

            st,click-single-x;
            st,click-single-y;
            st,click-single-z;
            st,click-thresh-x = <10>;
            st,click-thresh-y = <10>;
            st,click-thresh-z = <10>;
            st,irq1-click;
            st,irq2-click;
            st,wakeup-x-lo;
            st,wakeup-x-hi;
            st,wakeup-y-lo;
            st,wakeup-y-hi;
            st,wakeup-z-lo;
            st,wakeup-z-hi;
            st,min-limit-x = <120>;
            st,min-limit-y = <120>;
            st,min-limit-z = <140>;
            st,max-limit-x = <550>;
            st,max-limit-y = <550>;
            st,max-limit-z = <750>;
        };

        tsl2550: tsl2550@39 {
            compatible = "taos,tsl2550";
            reg = <0x39>;
        };

        tmp275: tmp275@48 {
            compatible = "ti,tmp275";
            reg = <0x48>;
        };

        tlv320aic3106: tlv320aic3106@1b {
            compatible = "ti,tlv320aic3106";
            reg = <0x1b>;
            status = "okay";

            /* Regulators */
            AVDD-supply = <&ldo4_reg>;
            IOVDD-supply = <&ldo4_reg>;
            DRVDD-supply = <&ldo4_reg>;
            DVDD-supply = <&ldo1_reg>;
        };
    };

    &lcdc {
        status = "okay";
        pinctrl-names = "default", "sleep";
        pinctrl-0 = <&lcd_pins_default>;
        pinctrl-1 = <&lcd_pins_sleep>;
    };

    &elm {
        status = "okay";
    };

    &epwmss0 {
        status = "okay";

        ecap0: ecap@48300100 {
            status = "okay";
            pinctrl-names = "default", "sleep";
            pinctrl-0 = <&ecap0_pins_default>;
            pinctrl-1 = <&ecap0_pins_sleep>;
        };
    };

    &gpmc {
        status = "okay";
        pinctrl-names = "default", "sleep";
        pinctrl-0 = <&nandflash_pins_default>;
        pinctrl-1 = <&nandflash_pins_sleep>;
        ranges = <0 0 0x08000000 0x1000000>;    /* CS0: 16MB for NAND */
        nand@0,0 {
            compatible = "ti,omap2-nand";
            reg = <0 0 4>; /* CS0, offset 0, IO size 4 */
            interrupt-parent = <&intc>;
            interrupts = <100>;
            ready-gpio = <&gpmc 0 GPIO_ACTIVE_HIGH>; /* gpmc_wait0 */
            ti,nand-ecc-opt = "bch8";
            ti,elm-id = <&elm>;
            nand-bus-width = <8>;
            gpmc,device-width = <1>;
            gpmc,sync-clk-ps = <0>;
            gpmc,cs-on-ns = <0>;
            gpmc,cs-rd-off-ns = <44>;
            gpmc,cs-wr-off-ns = <44>;
            gpmc,adv-on-ns = <6>;
            gpmc,adv-rd-off-ns = <34>;
            gpmc,adv-wr-off-ns = <44>;
            gpmc,we-on-ns = <0>;
            gpmc,we-off-ns = <40>;
            gpmc,oe-on-ns = <0>;
            gpmc,oe-off-ns = <54>;
            gpmc,access-ns = <64>;
            gpmc,rd-cycle-ns = <82>;
            gpmc,wr-cycle-ns = <82>;
            gpmc,bus-turnaround-ns = <0>;
            gpmc,cycle2cycle-delay-ns = <0>;
            gpmc,clk-activation-ns = <0>;
            gpmc,wr-access-ns = <40>;
            gpmc,wr-data-mux-bus-ns = <0>;
            /* MTD partition table */
            /* All SPL-* partitions are sized to minimal length
             * which can be independently programmable. For
             * NAND flash this is equal to size of erase-block */
            #address-cells = <1>;
            #size-cells = <1>;
            partition@0 {
                label = "NAND.SPL";
                reg = <0x00000000 0x000020000>;
            };
            partition@1 {
                label = "NAND.SPL.backup1";
                reg = <0x00020000 0x00020000>;
            };
            partition@2 {
                label = "NAND.SPL.backup2";
                reg = <0x00040000 0x00020000>;
            };
            partition@3 {
                label = "NAND.SPL.backup3";
                reg = <0x00060000 0x00020000>;
            };
            partition@4 {
                label = "NAND.u-boot-spl-os";
                reg = <0x00080000 0x00040000>;
            };
            partition@5 {
                label = "NAND.u-boot";
                reg = <0x000C0000 0x00100000>;
            };
            partition@6 {
                label = "NAND.u-boot-env";
                reg = <0x001C0000 0x00020000>;
            };
            partition@7 {
                label = "NAND.u-boot-env.backup1";
                reg = <0x001E0000 0x00020000>;
            };
            partition@8 {
                label = "NAND.kernel";
                reg = <0x00200000 0x00800000>;
            };
            partition@9 {
                label = "NAND.file-system";
                reg = <0x00A00000 0x0F600000>;
            };
        };
    };

    #include "tps65217.dtsi"

    &mcasp1 {
            pinctrl-names = "default", "sleep";
            pinctrl-0 = <&am335x_evm_audio_pins>;
            pinctrl-1 = <&am335x_evm_audio_pins_sleep>;

            status = "okay";

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

    &tps {
    /*
        vcc1-supply = <&vbat>;
        vcc2-supply = <&vbat>;
        vcc3-supply = <&vbat>;
        vcc4-supply = <&vbat>;
        vcc5-supply = <&vbat>;
        vcc6-supply = <&vbat>;
        vcc7-supply = <&vbat>;
        vccio-supply = <&vbat>;
    */
        regulators {
            dcdc1_reg: regulator@0 {
                /* +1.5V voltage with ±4% tolerance */
                regulator-min-microvolt = <900000>;
                regulator-max-microvolt = <1800000>;
                regulator-boot-on;
                regulator-always-on;
            };

            dcdc2_reg: regulator@1 {
                /* VDD_MPU voltage limits 0.95V - 1.1V with ±4% tolerance */
                regulator-name = "vdd_mpu";
                regulator-min-microvolt = <900000>;
                regulator-max-microvolt = <3300000>;
                regulator-boot-on;
                regulator-always-on;
            };

            dcdc3_reg: regulator@2 {
                /* VDD_CORE voltage limits 0.95V - 1.1V with ±4% tolerance */
                regulator-name = "vdd_core";
                regulator-min-microvolt = <900000>;
                regulator-max-microvolt = <1500000>;
                regulator-boot-on;
                regulator-always-on;
            };

            ldo1_reg: regulator@3 {
                /* +1.8V voltage with ±4% tolerance */
                regulator-min-microvolt = <1000000>;
                regulator-max-microvolt = <3300000>;
                regulator-boot-on;
                regulator-always-on;
            };

            ldo2_reg: regulator@4 {
                /* +3.3V voltage with ±4% tolerance */
                regulator-min-microvolt = <900000>;
                regulator-max-microvolt = <3300000>;
                regulator-boot-on;
                regulator-always-on;
            };

            ldo3_reg: regulator@5 {
                /* +1.8V voltage with ±4% tolerance */
                regulator-min-microvolt = <1800000>;
                regulator-max-microvolt = <3300000>;
                regulator-boot-on;
                regulator-always-on;
            };

            ldo4_reg: regulator@6 {
                /* +3.3V voltage with ±4% tolerance */
                regulator-min-microvolt = <1800000>;
                regulator-max-microvolt = <3300000>;
                regulator-boot-on;
                regulator-always-on;
            };
        };
    };

    /*
    &mac {
        pinctrl-names = "default", "sleep";
        pinctrl-0 = <&cpsw_default>;
        pinctrl-1 = <&cpsw_sleep>;
        status = "okay";
    };

    &davinci_mdio {
        pinctrl-names = "default", "sleep";
        pinctrl-0 = <&davinci_mdio_default>;
        pinctrl-1 = <&davinci_mdio_sleep>;
        status = "okay";
    };

    &cpsw_emac0 {
        phy_id = <&davinci_mdio>, <0>;
        phy-mode = "rgmii-txid";
    };

    &cpsw_emac1 {
        phy_id = <&davinci_mdio>, <1>;
        phy-mode = "rgmii-txid";
    };
    */
    &tscadc {
        status = "okay";
        tsc {
            ti,wires = <4>;
            ti,x-plate-resistance = <200>;
            ti,coordinate-readouts = <5>;
            ti,wire-config = <0x00 0x11 0x22 0x33>;
            ti,charge-delay = <0x400>;
        };

        adc {
            ti,adc-channels = <4 5 6 7>;
        };
    };

    &mmc1 {
        status = "okay";
        vmmc-supply = <&ldo4_reg>;
        bus-width = <4>;
        pinctrl-names = "default", "sleep";
        pinctrl-0 = <&mmc1_pins_default>;
        pinctrl-1 = <&mmc1_pins_sleep>;
        cd-gpios = <&gpio0 6 GPIO_ACTIVE_HIGH>;
    };

    &mmc3 {
        /* these are on the crossbar and are outlined in the
           xbar-event-map element */
        dmas = <&edma_xbar 12 0 1
            &edma_xbar 13 0 2>;
        dma-names = "tx", "rx";
        status = "okay";
        vmmc-supply = <&wlan_en_reg>;
        bus-width = <4>;
        pinctrl-names = "default";
        pinctrl-0 = <&mmc3_pins &wlan_pins>;
        ti,non-removable;
        ti,needs-special-hs-handling;
        cap-power-off-card;
        keep-power-in-suspend;

        #address-cells = <1>;
        #size-cells = <0>;
        wlcore: wlcore@2 {
            compatible = "ti,wl1835";
            reg = <2>;
            interrupt-parent = <&gpio3>;
            interrupts = <17 IRQ_TYPE_LEVEL_HIGH>;
            ref-clock-frequency = <38400000>;
        };
    };

    &sham {
        status = "okay";
    };

    &aes {
        status = "okay";
    };

    &dcan1 {
        status = "disabled";    /* Enable only if Profile 1 is selected */
        pinctrl-names = "default";
        pinctrl-0 = <&dcan1_pins_default>;
    };

    &wkup_m3_ipc {
        ti,scale-data-fw = "am335x-evm-scale-data.bin";
    };


    &rtc {
        system-power-controller;
    };

    &sgx {
        status = "okay";
    };

  • 还有没有其他办法

  • 文件系统也是官方下载的, 都是同一个版本官方配套的sdk和rootfs。

    这个rootfs用到其他3.2 3.12上面都不会有问题。