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.

Change uart number of console for Kernel

Other Parts Discussed in Thread: OMAPL138, OMAP-L138

Hi,

I downloaded kernel image into DDR2 at address 0xC0700000 but messages into logs stop to "Starting kernel ..."

My board is like omapl138_lcdk board excepted I have to change uart number to UART1 for kernel.

I modified these files below like described in forum but it doesn't work.

http://e2e.ti.com/cfs-file.ashx/__key/communityserver-discussions-components-files/42/7024.Archive.7z

Could you help me please?

If I put off environment variable "verify" to yes in UBOOT; I have a CRC error (it's peraps one of reason of issue)

Thanks

Sebastien

Here my logs at starting:

---------------------------------------------------------------------------------------------------------------------------------

U-Boot > setenv verify no
U-Boot > setenv bootargs console=ttyS1,115200n8 root=/dev/mmcblk0p2 rw rootwait ip=off
U-Boot > pri
baudrate=115200
bootargs=console=ttyS1,115200n8 root=/dev/mmcblk0p2 rw rootwait ip=off
bootcmd=if mmc rescan 0; then if fatload mmc 0 0xc0600000 boot.scr; then source 0xc0600000; else fatload mmc 0 0xc0700000 uImage; bootm c0700000; fi; else sf probe 0; sf read 0xc0700000 0x80000 0x220000; bootm 0xc0700000; fi
bootdelay=3
bootfile=uImage
ethact=DaVinci-EMAC
ethaddr=00:00:88:fe:fa:c3
filesize=24AAF0
stderr=serial
stdin=serial
stdout=serial
ver=U-Boot 2012.04.01 (Jun 09 2014 - 14:18:59)
verify=no

Environment size: 527/65532 bytes
U-Boot > bootm c0700000
## Booting kernel from Legacy Image at c0700000 ...
   Image Name:   Linux-3.3.0
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    2402992 Bytes = 2.3 MiB
   Load Address: c0008000
   Entry Point:  c0008000
   Loading Kernel Image ... OK
OK

Starting kernel ...

---------------------------------------------------------------------------------------------------------------------------------

  • Hi Sebastien,

    Have you enabled "Low level debugging support" (early printk) support and "Kernel debugging"  in kernel menuconfig ?

    What is your reference board?

    LCDK or SDI EVM or Logic PD EVM ?

    Your code seems to be LCDK, So please ensure that you are using TI's LCDK Linux SDK.

    ti-sdk-omapl138-lcdk-01.00.00

    http://software-dl.ti.com/dsps/dsps_public_sw/c6000/web/omapl138_lcdk_sdk/latest/index_FDS.html

    http://e2e.ti.com/support/embedded/linux/f/354/t/347095.aspx

  • Have you enabled "Low level debugging support" (early printk) support and "Kernel debugging"  in kernel menuconfig ?

    I don't see this element into menuconfig.

    What is your reference board?

    LCDK

    Your code seems to be LCDK, So please ensure that you are using TI's LCDK Linux SDK.

    yes, I use mcsdk_1_01_00_02; it's not good?

    Sebastien

  • Hi,

    Sorry, I forgot to mention about this,

    Yes, You can use "MCSDK_1.01.00.02" also and this is the latest too.

    I have check your ".config" (da850_lcdk_defconfig),

    # CONFIG_DEBUG_USER is not set
    CONFIG_DEBUG_LL=y    //SEB
    # CONFIG_DEBUG_LL is not set

    You should not edit ".config" manually and It is edited only through "make menuconfig ARCH=arm" option.

    Mean while, I will check your files and let you know.

  • I send you mu config with your requirements.

    It still doesn't work...

    http://e2e.ti.com/cfs-file.ashx/__key/communityserver-discussions-components-files/42/2570.config.7z

    thanks

  • Into menuconfig I added option "TTY driver to output user messages via printk" into item "Character devices".

    Console has added this message but nothing after :

    Uncompressing Linux... done, booting the kernel.

    It's better but anything fails. When this message appears, does that mean files uncompress.h, debug-macro.S and board-omapl138-lcdk.c are wellness configured?

    Thanks

    logs :

    --------------------------------------------------------------------------------

    Environment size: 527/65532 bytes
    U-Boot > $bootm 0xc0700000
    Unknown command '0xc0700000' - try 'help'
    U-Boot > bootm 0xc0700000
    ## Booting kernel from Legacy Image at c0700000 ...
       Image Name:   Linux-3.3.0
       Image Type:   ARM Linux Kernel Image (uncompressed)
       Data Size:    2414760 Bytes = 2.3 MiB
       Load Address: c0008000
       Entry Point:  c0008000
       Loading Kernel Image ... OK
    OK

    Starting kernel ...

    Uncompressing Linux... done, booting the kernel.

    -----------------------------------------------------------------------------------------------------------

  • Hi Sebastien,

    PFA of modified files.

    1464.ttyS1_Archive.zip

    I have modified the board files to avoid conflict between UART1, McASP and SATA.

    1) Please use these modified files and let us know the results.

    2) Still problem persists, then,

    Please Try to disable SPI, Audio, SATA and USB support in kernel through "make menuconfig"

    3) PFA of ".config" file; please use it.

    #
    # Automatically generated file; DO NOT EDIT.
    # Linux/arm 3.3.0 Kernel Configuration
    #
    CONFIG_ARM=y
    CONFIG_SYS_SUPPORTS_APM_EMULATION=y
    CONFIG_GENERIC_GPIO=y
    # CONFIG_ARCH_USES_GETTIMEOFFSET is not set
    CONFIG_GENERIC_CLOCKEVENTS=y
    CONFIG_KTIME_SCALAR=y
    CONFIG_HAVE_PROC_CPU=y
    CONFIG_STACKTRACE_SUPPORT=y
    CONFIG_HAVE_LATENCYTOP_SUPPORT=y
    CONFIG_LOCKDEP_SUPPORT=y
    CONFIG_TRACE_IRQFLAGS_SUPPORT=y
    CONFIG_HARDIRQS_SW_RESEND=y
    CONFIG_GENERIC_IRQ_PROBE=y
    CONFIG_RWSEM_GENERIC_SPINLOCK=y
    CONFIG_ARCH_HAS_CPUFREQ=y
    CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
    CONFIG_GENERIC_HWEIGHT=y
    CONFIG_GENERIC_CALIBRATE_DELAY=y
    CONFIG_ZONE_DMA=y
    CONFIG_NEED_DMA_MAP_STATE=y
    CONFIG_VECTORS_BASE=0xffff0000
    CONFIG_ARM_PATCH_PHYS_VIRT=y
    CONFIG_GENERIC_BUG=y
    CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
    CONFIG_HAVE_IRQ_WORK=y
    
    #
    # General setup
    #
    CONFIG_EXPERIMENTAL=y
    CONFIG_BROKEN_ON_SMP=y
    CONFIG_INIT_ENV_ARG_LIMIT=32
    CONFIG_CROSS_COMPILE=""
    CONFIG_LOCALVERSION=""
    # CONFIG_LOCALVERSION_AUTO is not set
    CONFIG_HAVE_KERNEL_GZIP=y
    CONFIG_HAVE_KERNEL_LZMA=y
    CONFIG_HAVE_KERNEL_LZO=y
    CONFIG_KERNEL_GZIP=y
    # CONFIG_KERNEL_LZMA is not set
    # CONFIG_KERNEL_LZO is not set
    CONFIG_DEFAULT_HOSTNAME="(none)"
    CONFIG_SWAP=y
    CONFIG_SYSVIPC=y
    CONFIG_SYSVIPC_SYSCTL=y
    CONFIG_POSIX_MQUEUE=y
    CONFIG_POSIX_MQUEUE_SYSCTL=y
    # CONFIG_BSD_PROCESS_ACCT is not set
    # CONFIG_FHANDLE is not set
    # CONFIG_TASKSTATS is not set
    # CONFIG_AUDIT is not set
    CONFIG_HAVE_GENERIC_HARDIRQS=y
    
    #
    # IRQ subsystem
    #
    CONFIG_GENERIC_HARDIRQS=y
    CONFIG_HAVE_SPARSE_IRQ=y
    CONFIG_GENERIC_IRQ_SHOW=y
    CONFIG_GENERIC_IRQ_CHIP=y
    # CONFIG_SPARSE_IRQ is not set
    
    #
    # RCU Subsystem
    #
    CONFIG_TINY_PREEMPT_RCU=y
    CONFIG_PREEMPT_RCU=y
    # CONFIG_RCU_TRACE is not set
    # CONFIG_TREE_RCU_TRACE is not set
    # CONFIG_RCU_BOOST is not set
    CONFIG_IKCONFIG=y
    CONFIG_IKCONFIG_PROC=y
    CONFIG_LOG_BUF_SHIFT=14
    # CONFIG_CGROUPS is not set
    # CONFIG_CHECKPOINT_RESTORE is not set
    # CONFIG_NAMESPACES is not set
    # CONFIG_SCHED_AUTOGROUP is not set
    # CONFIG_SYSFS_DEPRECATED is not set
    # CONFIG_RELAY is not set
    CONFIG_BLK_DEV_INITRD=y
    CONFIG_INITRAMFS_SOURCE=""
    CONFIG_RD_GZIP=y
    # CONFIG_RD_BZIP2 is not set
    # CONFIG_RD_LZMA is not set
    # CONFIG_RD_XZ is not set
    # CONFIG_RD_LZO is not set
    CONFIG_CC_OPTIMIZE_FOR_SIZE=y
    CONFIG_SYSCTL=y
    CONFIG_ANON_INODES=y
    CONFIG_EXPERT=y
    CONFIG_UID16=y
    CONFIG_SYSCTL_SYSCALL=y
    CONFIG_KALLSYMS=y
    # CONFIG_KALLSYMS_ALL is not set
    CONFIG_HOTPLUG=y
    CONFIG_PRINTK=y
    CONFIG_BUG=y
    CONFIG_ELF_CORE=y
    CONFIG_BASE_FULL=y
    CONFIG_FUTEX=y
    CONFIG_EPOLL=y
    CONFIG_SIGNALFD=y
    CONFIG_TIMERFD=y
    CONFIG_EVENTFD=y
    CONFIG_SHMEM=y
    CONFIG_AIO=y
    CONFIG_EMBEDDED=y
    CONFIG_HAVE_PERF_EVENTS=y
    CONFIG_PERF_USE_VMALLOC=y
    
    #
    # Kernel Performance Events And Counters
    #
    # CONFIG_PERF_EVENTS is not set
    # CONFIG_PERF_COUNTERS is not set
    CONFIG_VM_EVENT_COUNTERS=y
    CONFIG_SLUB_DEBUG=y
    CONFIG_COMPAT_BRK=y
    # CONFIG_SLAB is not set
    CONFIG_SLUB=y
    # CONFIG_SLOB is not set
    # CONFIG_PROFILING is not set
    CONFIG_HAVE_OPROFILE=y
    # CONFIG_KPROBES is not set
    CONFIG_HAVE_KPROBES=y
    CONFIG_HAVE_KRETPROBES=y
    CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
    CONFIG_HAVE_CLK=y
    CONFIG_HAVE_DMA_API_DEBUG=y
    
    #
    # GCOV-based kernel profiling
    #
    # CONFIG_GCOV_KERNEL is not set
    CONFIG_HAVE_GENERIC_DMA_COHERENT=y
    CONFIG_SLABINFO=y
    CONFIG_RT_MUTEXES=y
    CONFIG_BASE_SMALL=0
    CONFIG_MODULES=y
    # CONFIG_MODULE_FORCE_LOAD is not set
    CONFIG_MODULE_UNLOAD=y
    CONFIG_MODULE_FORCE_UNLOAD=y
    CONFIG_MODVERSIONS=y
    # CONFIG_MODULE_SRCVERSION_ALL is not set
    CONFIG_BLOCK=y
    CONFIG_LBDAF=y
    # CONFIG_BLK_DEV_BSG is not set
    # CONFIG_BLK_DEV_BSGLIB is not set
    # CONFIG_BLK_DEV_INTEGRITY is not set
    
    #
    # Partition Types
    #
    CONFIG_PARTITION_ADVANCED=y
    # CONFIG_ACORN_PARTITION is not set
    # CONFIG_OSF_PARTITION is not set
    # CONFIG_AMIGA_PARTITION is not set
    # CONFIG_ATARI_PARTITION is not set
    # CONFIG_MAC_PARTITION is not set
    CONFIG_MSDOS_PARTITION=y
    # CONFIG_BSD_DISKLABEL is not set
    # CONFIG_MINIX_SUBPARTITION is not set
    # CONFIG_SOLARIS_X86_PARTITION is not set
    # CONFIG_UNIXWARE_DISKLABEL is not set
    # CONFIG_LDM_PARTITION is not set
    # CONFIG_SGI_PARTITION is not set
    # CONFIG_ULTRIX_PARTITION is not set
    # CONFIG_SUN_PARTITION is not set
    # CONFIG_KARMA_PARTITION is not set
    # CONFIG_EFI_PARTITION is not set
    # CONFIG_SYSV68_PARTITION is not set
    
    #
    # IO Schedulers
    #
    CONFIG_IOSCHED_NOOP=y
    # CONFIG_IOSCHED_DEADLINE is not set
    # CONFIG_IOSCHED_CFQ is not set
    CONFIG_DEFAULT_NOOP=y
    CONFIG_DEFAULT_IOSCHED="noop"
    # CONFIG_INLINE_SPIN_TRYLOCK is not set
    # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
    # CONFIG_INLINE_SPIN_LOCK is not set
    # CONFIG_INLINE_SPIN_LOCK_BH is not set
    # CONFIG_INLINE_SPIN_LOCK_IRQ is not set
    # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
    # CONFIG_INLINE_SPIN_UNLOCK is not set
    # CONFIG_INLINE_SPIN_UNLOCK_BH is not set
    # CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set
    # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
    # CONFIG_INLINE_READ_TRYLOCK is not set
    # CONFIG_INLINE_READ_LOCK is not set
    # CONFIG_INLINE_READ_LOCK_BH is not set
    # CONFIG_INLINE_READ_LOCK_IRQ is not set
    # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
    # CONFIG_INLINE_READ_UNLOCK is not set
    # CONFIG_INLINE_READ_UNLOCK_BH is not set
    # CONFIG_INLINE_READ_UNLOCK_IRQ is not set
    # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
    # CONFIG_INLINE_WRITE_TRYLOCK is not set
    # CONFIG_INLINE_WRITE_LOCK is not set
    # CONFIG_INLINE_WRITE_LOCK_BH is not set
    # CONFIG_INLINE_WRITE_LOCK_IRQ is not set
    # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
    # CONFIG_INLINE_WRITE_UNLOCK is not set
    # CONFIG_INLINE_WRITE_UNLOCK_BH is not set
    # CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set
    # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
    # CONFIG_MUTEX_SPIN_ON_OWNER is not set
    CONFIG_FREEZER=y
    
    #
    # System Type
    #
    CONFIG_MMU=y
    # CONFIG_ARCH_INTEGRATOR is not set
    # CONFIG_ARCH_REALVIEW is not set
    # CONFIG_ARCH_VERSATILE is not set
    # CONFIG_ARCH_VEXPRESS is not set
    # CONFIG_ARCH_AT91 is not set
    # CONFIG_ARCH_BCMRING is not set
    # CONFIG_ARCH_HIGHBANK is not set
    # CONFIG_ARCH_CLPS711X is not set
    # CONFIG_ARCH_CNS3XXX is not set
    # CONFIG_ARCH_GEMINI is not set
    # CONFIG_ARCH_PRIMA2 is not set
    # CONFIG_ARCH_EBSA110 is not set
    # CONFIG_ARCH_EP93XX is not set
    # CONFIG_ARCH_FOOTBRIDGE is not set
    # CONFIG_ARCH_MXC is not set
    # CONFIG_ARCH_MXS is not set
    # CONFIG_ARCH_NETX is not set
    # CONFIG_ARCH_H720X is not set
    # CONFIG_ARCH_IOP13XX is not set
    # CONFIG_ARCH_IOP32X is not set
    # CONFIG_ARCH_IOP33X is not set
    # CONFIG_ARCH_IXP23XX is not set
    # CONFIG_ARCH_IXP2000 is not set
    # CONFIG_ARCH_IXP4XX is not set
    # CONFIG_ARCH_DOVE is not set
    # CONFIG_ARCH_KIRKWOOD is not set
    # CONFIG_ARCH_LPC32XX is not set
    # CONFIG_ARCH_MV78XX0 is not set
    # CONFIG_ARCH_ORION5X is not set
    # CONFIG_ARCH_MMP is not set
    # CONFIG_ARCH_KS8695 is not set
    # CONFIG_ARCH_W90X900 is not set
    # CONFIG_ARCH_TEGRA is not set
    # CONFIG_ARCH_PICOXCELL is not set
    # CONFIG_ARCH_PNX4008 is not set
    # CONFIG_ARCH_PXA is not set
    # CONFIG_ARCH_MSM is not set
    # CONFIG_ARCH_SHMOBILE is not set
    # CONFIG_ARCH_RPC is not set
    # CONFIG_ARCH_SA1100 is not set
    # CONFIG_ARCH_S3C2410 is not set
    # CONFIG_ARCH_S3C64XX is not set
    # CONFIG_ARCH_S5P64X0 is not set
    # CONFIG_ARCH_S5PC100 is not set
    # CONFIG_ARCH_S5PV210 is not set
    # CONFIG_ARCH_EXYNOS is not set
    # CONFIG_ARCH_SHARK is not set
    # CONFIG_ARCH_U300 is not set
    # CONFIG_ARCH_U8500 is not set
    # CONFIG_ARCH_NOMADIK is not set
    CONFIG_ARCH_DAVINCI=y
    # CONFIG_ARCH_OMAP is not set
    # CONFIG_PLAT_SPEAR is not set
    # CONFIG_ARCH_VT8500 is not set
    # CONFIG_ARCH_ZYNQ is not set
    CONFIG_CP_INTC=y
    
    #
    # TI DaVinci Implementations
    #
    
    #
    # DaVinci Core Type
    #
    # CONFIG_ARCH_DAVINCI_DM644x is not set
    # CONFIG_ARCH_DAVINCI_DM355 is not set
    # CONFIG_ARCH_DAVINCI_DM646x is not set
    # CONFIG_ARCH_DAVINCI_DA830 is not set
    CONFIG_ARCH_DAVINCI_DA850=y
    # CONFIG_DAVINCI_UART1_AFE is not set
    CONFIG_ARCH_DAVINCI_DA8XX=y
    # CONFIG_ARCH_DAVINCI_DM365 is not set
    # CONFIG_ARCH_DAVINCI_TNETV107X is not set
    
    #
    # DaVinci Board Type
    #
    # CONFIG_WIFI_CONTROL_FUNC is not set
    CONFIG_DA850_USE_MMC0=y
    # CONFIG_DA850_USE_MMC1 is not set
    CONFIG_MACH_DAVINCI_DA850_EVM=y
    CONFIG_DA850_UI_NONE=y
    # CONFIG_DA850_UI_RMII is not set
    # CONFIG_DA850_UI_CLCD is not set
    # CONFIG_DA850_UI_SD_VIDEO_PORT is not set
    # CONFIG_DA850_UI_CAMERA is not set
    CONFIG_DA850_FIX_PLL0_SYSCLK3RATE=0
    # CONFIG_DA850_WL12XX is not set
    CONFIG_GPIO_PCA953X=y
    CONFIG_KEYBOARD_GPIO_POLLED=y
    # CONFIG_MACH_MITYOMAPL138 is not set
    CONFIG_MACH_OMAPL138_LCDKBOARD=y
    CONFIG_MACH_DAVINCI_DA850_SDI=y
    CONFIG_DA850_SDI_LCDC=y
    # CONFIG_DA850_SDI_DVI_VGA is not set
    # CONFIG_DA850_SDI_DVI_480P is not set
    # CONFIG_DA850_SDI_DVI_WVGA is not set
    # CONFIG_DA850_SDI_MII is not set
    CONFIG_DA850_SDI_MAX_SPEED=456000
    CONFIG_DAVINCI_MUX=y
    # CONFIG_DAVINCI_MUX_DEBUG is not set
    # CONFIG_DAVINCI_MUX_WARNINGS is not set
    CONFIG_DAVINCI_RESET_CLOCKS=y
    
    #
    # System MMU
    #
    
    #
    # Processor Type
    #
    CONFIG_CPU_ARM926T=y
    CONFIG_CPU_32v5=y
    CONFIG_CPU_ABRT_EV5TJ=y
    CONFIG_CPU_PABRT_LEGACY=y
    CONFIG_CPU_CACHE_VIVT=y
    CONFIG_CPU_COPY_V4WB=y
    CONFIG_CPU_TLB_V4WBI=y
    CONFIG_CPU_CP15=y
    CONFIG_CPU_CP15_MMU=y
    CONFIG_CPU_USE_DOMAINS=y
    
    #
    # Processor Features
    #
    # CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set
    CONFIG_ARM_THUMB=y
    # CONFIG_CPU_ICACHE_DISABLE is not set
    # CONFIG_CPU_DCACHE_DISABLE is not set
    # CONFIG_CPU_DCACHE_WRITETHROUGH is not set
    # CONFIG_CPU_CACHE_ROUND_ROBIN is not set
    # CONFIG_CACHE_L2X0 is not set
    CONFIG_ARM_L1_CACHE_SHIFT=5
    CONFIG_ARM_NR_BANKS=8
    
    #
    # Bus support
    #
    # CONFIG_PCI_SYSCALL is not set
    # CONFIG_ARCH_SUPPORTS_MSI is not set
    # CONFIG_PCCARD is not set
    
    #
    # Kernel Features
    #
    CONFIG_TICK_ONESHOT=y
    CONFIG_NO_HZ=y
    CONFIG_HIGH_RES_TIMERS=y
    CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
    CONFIG_VMSPLIT_3G=y
    # CONFIG_VMSPLIT_2G is not set
    # CONFIG_VMSPLIT_1G is not set
    CONFIG_PAGE_OFFSET=0xC0000000
    CONFIG_ARCH_NR_GPIO=0
    # CONFIG_PREEMPT_NONE is not set
    # CONFIG_PREEMPT_VOLUNTARY is not set
    CONFIG_PREEMPT=y
    CONFIG_PREEMPT_COUNT=y
    CONFIG_HZ=100
    CONFIG_AEABI=y
    # CONFIG_OABI_COMPAT is not set
    CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y
    # CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
    # CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
    CONFIG_HAVE_ARCH_PFN_VALID=y
    # CONFIG_HIGHMEM is not set
    CONFIG_SELECT_MEMORY_MODEL=y
    CONFIG_FLATMEM_MANUAL=y
    CONFIG_FLATMEM=y
    CONFIG_FLAT_NODE_MEM_MAP=y
    CONFIG_HAVE_MEMBLOCK=y
    CONFIG_PAGEFLAGS_EXTENDED=y
    CONFIG_SPLIT_PTLOCK_CPUS=999999
    # CONFIG_COMPACTION is not set
    # CONFIG_PHYS_ADDR_T_64BIT is not set
    CONFIG_ZONE_DMA_FLAG=1
    CONFIG_BOUNCE=y
    CONFIG_VIRT_TO_BUS=y
    # CONFIG_KSM is not set
    CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
    CONFIG_NEED_PER_CPU_KM=y
    # CONFIG_CLEANCACHE is not set
    CONFIG_FORCE_MAX_ZONEORDER=11
    CONFIG_LEDS=y
    # CONFIG_LEDS_CPU is not set
    CONFIG_ALIGNMENT_TRAP=y
    # CONFIG_UACCESS_WITH_MEMCPY is not set
    # CONFIG_SECCOMP is not set
    # CONFIG_CC_STACKPROTECTOR is not set
    # CONFIG_DEPRECATED_PARAM_STRUCT is not set
    
    #
    # Boot options
    #
    # CONFIG_USE_OF is not set
    CONFIG_ZBOOT_ROM_TEXT=0x0
    CONFIG_ZBOOT_ROM_BSS=0x0
    CONFIG_CMDLINE=""
    # CONFIG_XIP_KERNEL is not set
    # CONFIG_KEXEC is not set
    # CONFIG_CRASH_DUMP is not set
    # CONFIG_AUTO_ZRELADDR is not set
    
    #
    # CPU Power Management
    #
    
    #
    # CPU Frequency scaling
    #
    CONFIG_CPU_FREQ=y
    CONFIG_CPU_FREQ_TABLE=y
    CONFIG_CPU_FREQ_STAT=y
    # CONFIG_CPU_FREQ_STAT_DETAILS is not set
    # CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
    # CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
    CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
    # CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
    # CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
    CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
    CONFIG_CPU_FREQ_GOV_POWERSAVE=y
    CONFIG_CPU_FREQ_GOV_USERSPACE=y
    CONFIG_CPU_FREQ_GOV_ONDEMAND=y
    CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
    
    #
    # ARM CPU frequency scaling drivers
    #
    # CONFIG_ARM_EXYNOS4210_CPUFREQ is not set
    CONFIG_CPU_IDLE=y
    CONFIG_CPU_IDLE_GOV_LADDER=y
    CONFIG_CPU_IDLE_GOV_MENU=y
    
    #
    # Floating point emulation
    #
    
    #
    # At least one emulation must be selected
    #
    # CONFIG_VFP is not set
    
    #
    # Userspace binary formats
    #
    CONFIG_BINFMT_ELF=y
    CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y
    # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
    CONFIG_HAVE_AOUT=y
    # CONFIG_BINFMT_AOUT is not set
    # CONFIG_BINFMT_MISC is not set
    
    #
    # Power management options
    #
    CONFIG_SUSPEND=y
    CONFIG_SUSPEND_FREEZER=y
    CONFIG_PM_SLEEP=y
    # CONFIG_PM_RUNTIME is not set
    CONFIG_PM=y
    # CONFIG_PM_DEBUG is not set
    # CONFIG_APM_EMULATION is not set
    CONFIG_PM_CLK=y
    CONFIG_CPU_PM=y
    CONFIG_ARCH_SUSPEND_POSSIBLE=y
    CONFIG_ARM_CPU_SUSPEND=y
    CONFIG_NET=y
    
    #
    # Networking options
    #
    CONFIG_PACKET=y
    CONFIG_UNIX=y
    # CONFIG_UNIX_DIAG is not set
    CONFIG_XFRM=y
    # CONFIG_XFRM_USER is not set
    # CONFIG_XFRM_SUB_POLICY is not set
    # CONFIG_XFRM_MIGRATE is not set
    # CONFIG_XFRM_STATISTICS is not set
    # CONFIG_NET_KEY is not set
    CONFIG_INET=y
    # CONFIG_IP_MULTICAST is not set
    # CONFIG_IP_ADVANCED_ROUTER is not set
    CONFIG_IP_PNP=y
    CONFIG_IP_PNP_DHCP=y
    # CONFIG_IP_PNP_BOOTP is not set
    # CONFIG_IP_PNP_RARP is not set
    # CONFIG_NET_IPIP is not set
    # CONFIG_NET_IPGRE_DEMUX is not set
    # CONFIG_ARPD is not set
    # CONFIG_SYN_COOKIES is not set
    # CONFIG_INET_AH is not set
    # CONFIG_INET_ESP is not set
    # CONFIG_INET_IPCOMP is not set
    # CONFIG_INET_XFRM_TUNNEL is not set
    CONFIG_INET_TUNNEL=m
    CONFIG_INET_XFRM_MODE_TRANSPORT=y
    CONFIG_INET_XFRM_MODE_TUNNEL=y
    CONFIG_INET_XFRM_MODE_BEET=y
    # CONFIG_INET_LRO is not set
    CONFIG_INET_DIAG=y
    CONFIG_INET_TCP_DIAG=y
    # CONFIG_INET_UDP_DIAG is not set
    # CONFIG_TCP_CONG_ADVANCED is not set
    CONFIG_TCP_CONG_CUBIC=y
    CONFIG_DEFAULT_TCP_CONG="cubic"
    # CONFIG_TCP_MD5SIG is not set
    CONFIG_IPV6=m
    # CONFIG_IPV6_PRIVACY is not set
    # CONFIG_IPV6_ROUTER_PREF is not set
    # CONFIG_IPV6_OPTIMISTIC_DAD is not set
    # CONFIG_INET6_AH is not set
    # CONFIG_INET6_ESP is not set
    # CONFIG_INET6_IPCOMP is not set
    # CONFIG_IPV6_MIP6 is not set
    # CONFIG_INET6_XFRM_TUNNEL is not set
    # CONFIG_INET6_TUNNEL is not set
    CONFIG_INET6_XFRM_MODE_TRANSPORT=m
    CONFIG_INET6_XFRM_MODE_TUNNEL=m
    CONFIG_INET6_XFRM_MODE_BEET=m
    # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
    CONFIG_IPV6_SIT=m
    # CONFIG_IPV6_SIT_6RD is not set
    CONFIG_IPV6_NDISC_NODETYPE=y
    # CONFIG_IPV6_TUNNEL is not set
    # CONFIG_IPV6_MULTIPLE_TABLES is not set
    # CONFIG_IPV6_MROUTE is not set
    # CONFIG_NETWORK_SECMARK is not set
    # CONFIG_NETWORK_PHY_TIMESTAMPING is not set
    CONFIG_NETFILTER=y
    # CONFIG_NETFILTER_DEBUG is not set
    CONFIG_NETFILTER_ADVANCED=y
    
    #
    # Core Netfilter Configuration
    #
    # CONFIG_NETFILTER_NETLINK_ACCT is not set
    # CONFIG_NETFILTER_NETLINK_QUEUE is not set
    # CONFIG_NETFILTER_NETLINK_LOG is not set
    # CONFIG_NF_CONNTRACK is not set
    # CONFIG_NETFILTER_XTABLES is not set
    # CONFIG_IP_VS is not set
    
    #
    # IP: Netfilter Configuration
    #
    # CONFIG_NF_DEFRAG_IPV4 is not set
    # CONFIG_IP_NF_QUEUE is not set
    # CONFIG_IP_NF_IPTABLES is not set
    # CONFIG_IP_NF_ARPTABLES is not set
    
    #
    # IPv6: Netfilter Configuration
    #
    # CONFIG_NF_DEFRAG_IPV6 is not set
    # CONFIG_IP6_NF_QUEUE is not set
    # CONFIG_IP6_NF_IPTABLES is not set
    # CONFIG_IP_DCCP is not set
    # CONFIG_IP_SCTP is not set
    # CONFIG_RDS is not set
    # CONFIG_TIPC is not set
    # CONFIG_ATM is not set
    # CONFIG_L2TP is not set
    # CONFIG_BRIDGE is not set
    # CONFIG_NET_DSA is not set
    # CONFIG_VLAN_8021Q is not set
    # CONFIG_DECNET is not set
    # CONFIG_LLC2 is not set
    # CONFIG_IPX is not set
    # CONFIG_ATALK is not set
    # CONFIG_X25 is not set
    # CONFIG_LAPB is not set
    # CONFIG_ECONET is not set
    # CONFIG_WAN_ROUTER is not set
    # CONFIG_PHONET is not set
    # CONFIG_IEEE802154 is not set
    # CONFIG_NET_SCHED is not set
    # CONFIG_DCB is not set
    # CONFIG_BATMAN_ADV is not set
    # CONFIG_OPENVSWITCH is not set
    CONFIG_BQL=y
    
    #
    # Network testing
    #
    # CONFIG_NET_PKTGEN is not set
    # CONFIG_HAMRADIO is not set
    # CONFIG_CAN is not set
    # CONFIG_IRDA is not set
    # CONFIG_BT is not set
    # CONFIG_AF_RXRPC is not set
    CONFIG_WIRELESS=y
    # CONFIG_CFG80211 is not set
    # CONFIG_LIB80211 is not set
    
    #
    # CFG80211 needs to be enabled for MAC80211
    #
    # CONFIG_WIMAX is not set
    # CONFIG_RFKILL is not set
    # CONFIG_RFKILL_REGULATOR is not set
    # CONFIG_NET_9P is not set
    # CONFIG_CAIF is not set
    # CONFIG_CEPH_LIB is not set
    # CONFIG_NFC is not set
    
    #
    # Device Drivers
    #
    
    #
    # Generic Driver Options
    #
    CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
    # CONFIG_DEVTMPFS is not set
    CONFIG_STANDALONE=y
    CONFIG_PREVENT_FIRMWARE_BUILD=y
    # CONFIG_FW_LOADER is not set
    # CONFIG_DEBUG_DRIVER is not set
    # CONFIG_DEBUG_DEVRES is not set
    # CONFIG_SYS_HYPERVISOR is not set
    # CONFIG_GENERIC_CPU_DEVICES is not set
    # CONFIG_DMA_SHARED_BUFFER is not set
    # CONFIG_CONNECTOR is not set
    CONFIG_MTD=y
    # CONFIG_MTD_TESTS is not set
    # CONFIG_MTD_REDBOOT_PARTS is not set
    # CONFIG_MTD_CMDLINE_PARTS is not set
    # CONFIG_MTD_AFS_PARTS is not set
    # CONFIG_MTD_AR7_PARTS is not set
    
    #
    # User Modules And Translation Layers
    #
    CONFIG_MTD_CHAR=y
    CONFIG_MTD_BLKDEVS=y
    CONFIG_MTD_BLOCK=y
    # CONFIG_FTL is not set
    # CONFIG_NFTL is not set
    # CONFIG_INFTL is not set
    # CONFIG_RFD_FTL is not set
    # CONFIG_SSFDC is not set
    # CONFIG_SM_FTL is not set
    # CONFIG_MTD_OOPS is not set
    # CONFIG_MTD_SWAP is not set
    
    #
    # RAM/ROM/Flash chip drivers
    #
    # CONFIG_MTD_CFI is not set
    # CONFIG_MTD_JEDECPROBE is not set
    CONFIG_MTD_MAP_BANK_WIDTH_1=y
    CONFIG_MTD_MAP_BANK_WIDTH_2=y
    CONFIG_MTD_MAP_BANK_WIDTH_4=y
    # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
    # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
    # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
    CONFIG_MTD_CFI_I1=y
    CONFIG_MTD_CFI_I2=y
    # CONFIG_MTD_CFI_I4 is not set
    # CONFIG_MTD_CFI_I8 is not set
    # CONFIG_MTD_RAM is not set
    # CONFIG_MTD_ROM is not set
    # CONFIG_MTD_ABSENT is not set
    
    #
    # Mapping drivers for chip access
    #
    # CONFIG_MTD_COMPLEX_MAPPINGS is not set
    # CONFIG_MTD_PLATRAM is not set
    
    #
    # Self-contained MTD device drivers
    #
    # CONFIG_MTD_SLRAM is not set
    # CONFIG_MTD_PHRAM is not set
    # CONFIG_MTD_MTDRAM is not set
    # CONFIG_MTD_BLOCK2MTD is not set
    
    #
    # Disk-On-Chip Device Drivers
    #
    # CONFIG_MTD_DOC2000 is not set
    # CONFIG_MTD_DOC2001 is not set
    # CONFIG_MTD_DOC2001PLUS is not set
    # CONFIG_MTD_DOCG3 is not set
    CONFIG_MTD_NAND_ECC=y
    # CONFIG_MTD_NAND_ECC_SMC is not set
    CONFIG_MTD_NAND=y
    # CONFIG_MTD_NAND_VERIFY_WRITE is not set
    # CONFIG_MTD_NAND_ECC_BCH is not set
    # CONFIG_MTD_SM_COMMON is not set
    # CONFIG_MTD_NAND_MUSEUM_IDS is not set
    # CONFIG_MTD_NAND_GPIO is not set
    CONFIG_MTD_NAND_IDS=y
    # CONFIG_MTD_NAND_DISKONCHIP is not set
    # CONFIG_MTD_NAND_NANDSIM is not set
    # CONFIG_MTD_NAND_PLATFORM is not set
    CONFIG_MTD_NAND_DAVINCI=y
    # CONFIG_MTD_ONENAND is not set
    
    #
    # LPDDR flash memory drivers
    #
    # CONFIG_MTD_LPDDR is not set
    CONFIG_MTD_UBI=y
    CONFIG_MTD_UBI_WL_THRESHOLD=4096
    CONFIG_MTD_UBI_BEB_RESERVE=1
    # CONFIG_MTD_UBI_GLUEBI is not set
    # CONFIG_MTD_UBI_DEBUG is not set
    # CONFIG_PARPORT is not set
    CONFIG_BLK_DEV=y
    # CONFIG_BLK_DEV_COW_COMMON is not set
    CONFIG_BLK_DEV_LOOP=m
    CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
    # CONFIG_BLK_DEV_CRYPTOLOOP is not set
    
    #
    # DRBD disabled because PROC_FS, INET or CONNECTOR not selected
    #
    # CONFIG_BLK_DEV_NBD is not set
    CONFIG_BLK_DEV_RAM=y
    CONFIG_BLK_DEV_RAM_COUNT=1
    CONFIG_BLK_DEV_RAM_SIZE=32768
    # CONFIG_BLK_DEV_XIP is not set
    # CONFIG_CDROM_PKTCDVD is not set
    # CONFIG_ATA_OVER_ETH is not set
    # CONFIG_MG_DISK is not set
    # CONFIG_BLK_DEV_RBD is not set
    
    #
    # Misc devices
    #
    # CONFIG_SENSORS_LIS3LV02D is not set
    # CONFIG_AD525X_DPOT is not set
    # CONFIG_ATMEL_PWM is not set
    # CONFIG_ICS932S401 is not set
    # CONFIG_ENCLOSURE_SERVICES is not set
    # CONFIG_APDS9802ALS is not set
    # CONFIG_ISL29003 is not set
    # CONFIG_ISL29020 is not set
    # CONFIG_SENSORS_TSL2550 is not set
    # CONFIG_SENSORS_BH1780 is not set
    # CONFIG_SENSORS_BH1770 is not set
    # CONFIG_SENSORS_APDS990X is not set
    # CONFIG_HMC6352 is not set
    # CONFIG_DS1682 is not set
    # CONFIG_BMP085 is not set
    # CONFIG_USB_SWITCH_FSA9480 is not set
    # CONFIG_C2PORT is not set
    
    #
    # EEPROM support
    #
    CONFIG_EEPROM_AT24=y
    # CONFIG_EEPROM_LEGACY is not set
    # CONFIG_EEPROM_MAX6875 is not set
    # CONFIG_EEPROM_93CX6 is not set
    # CONFIG_IWMC3200TOP is not set
    
    #
    # Texas Instruments shared transport line discipline
    #
    # CONFIG_TI_ST is not set
    # CONFIG_SENSORS_LIS3_I2C is not set
    
    #
    # Altera FPGA firmware download module
    #
    # CONFIG_ALTERA_STAPL is not set
    CONFIG_HAVE_IDE=y
    # CONFIG_IDE is not set
    
    #
    # SCSI device support
    #
    CONFIG_SCSI_MOD=y
    # CONFIG_RAID_ATTRS is not set
    CONFIG_SCSI=y
    CONFIG_SCSI_DMA=y
    # CONFIG_SCSI_TGT is not set
    # CONFIG_SCSI_NETLINK is not set
    CONFIG_SCSI_PROC_FS=y
    
    #
    # SCSI support type (disk, tape, CD-ROM)
    #
    CONFIG_BLK_DEV_SD=y
    # CONFIG_CHR_DEV_ST is not set
    # CONFIG_CHR_DEV_OSST is not set
    CONFIG_BLK_DEV_SR=y
    # CONFIG_BLK_DEV_SR_VENDOR is not set
    CONFIG_CHR_DEV_SG=y
    # CONFIG_CHR_DEV_SCH is not set
    # CONFIG_SCSI_MULTI_LUN is not set
    # CONFIG_SCSI_CONSTANTS is not set
    # CONFIG_SCSI_LOGGING is not set
    # CONFIG_SCSI_SCAN_ASYNC is not set
    CONFIG_SCSI_WAIT_SCAN=m
    
    #
    # SCSI Transports
    #
    # CONFIG_SCSI_SPI_ATTRS is not set
    # CONFIG_SCSI_FC_ATTRS is not set
    # CONFIG_SCSI_ISCSI_ATTRS is not set
    # CONFIG_SCSI_SAS_ATTRS is not set
    # CONFIG_SCSI_SAS_LIBSAS is not set
    # CONFIG_SCSI_SRP_ATTRS is not set
    CONFIG_SCSI_LOWLEVEL=y
    # CONFIG_ISCSI_TCP is not set
    # CONFIG_ISCSI_BOOT_SYSFS is not set
    # CONFIG_LIBFC is not set
    # CONFIG_LIBFCOE is not set
    # CONFIG_SCSI_DEBUG is not set
    # CONFIG_SCSI_DH is not set
    # CONFIG_SCSI_OSD_INITIATOR is not set
    # CONFIG_ATA is not set
    # CONFIG_MD is not set
    # CONFIG_TARGET_CORE is not set
    CONFIG_NETDEVICES=y
    CONFIG_NET_CORE=y
    # CONFIG_BONDING is not set
    # CONFIG_DUMMY is not set
    # CONFIG_EQUALIZER is not set
    CONFIG_MII=y
    # CONFIG_NET_TEAM is not set
    # CONFIG_MACVLAN is not set
    CONFIG_NETCONSOLE=y
    CONFIG_NETPOLL=y
    CONFIG_NETPOLL_TRAP=y
    CONFIG_NET_POLL_CONTROLLER=y
    # CONFIG_TUN is not set
    # CONFIG_VETH is not set
    
    #
    # CAIF transport drivers
    #
    CONFIG_ETHERNET=y
    CONFIG_NET_VENDOR_BROADCOM=y
    # CONFIG_B44 is not set
    # CONFIG_NET_CALXEDA_XGMAC is not set
    CONFIG_NET_VENDOR_CHELSIO=y
    # CONFIG_DM9000 is not set
    # CONFIG_DNET is not set
    CONFIG_NET_VENDOR_FARADAY=y
    # CONFIG_FTMAC100 is not set
    # CONFIG_FTGMAC100 is not set
    CONFIG_NET_VENDOR_INTEL=y
    CONFIG_NET_VENDOR_I825XX=y
    CONFIG_NET_VENDOR_MARVELL=y
    CONFIG_NET_VENDOR_MICREL=y
    # CONFIG_KS8851_MLL is not set
    CONFIG_NET_VENDOR_NATSEMI=y
    CONFIG_NET_VENDOR_8390=y
    # CONFIG_AX88796 is not set
    # CONFIG_ETHOC is not set
    CONFIG_NET_VENDOR_SEEQ=y
    # CONFIG_SEEQ8005 is not set
    CONFIG_NET_VENDOR_SMSC=y
    # CONFIG_SMC91X is not set
    # CONFIG_SMC911X is not set
    # CONFIG_SMSC911X is not set
    CONFIG_NET_VENDOR_STMICRO=y
    # CONFIG_STMMAC_ETH is not set
    CONFIG_NET_VENDOR_TI=y
    CONFIG_TI_DAVINCI_EMAC=y
    CONFIG_TI_DAVINCI_MDIO=y
    CONFIG_TI_DAVINCI_CPDMA=y
    CONFIG_PHYLIB=y
    
    #
    # MII PHY device drivers
    #
    # CONFIG_MARVELL_PHY is not set
    # CONFIG_DAVICOM_PHY is not set
    # CONFIG_QSEMI_PHY is not set
    CONFIG_LXT_PHY=y
    # CONFIG_CICADA_PHY is not set
    # CONFIG_VITESSE_PHY is not set
    CONFIG_SMSC_PHY=y
    # CONFIG_BROADCOM_PHY is not set
    # CONFIG_ICPLUS_PHY is not set
    # CONFIG_REALTEK_PHY is not set
    # CONFIG_NATIONAL_PHY is not set
    # CONFIG_STE10XP is not set
    CONFIG_LSI_ET1011C_PHY=y
    # CONFIG_MICREL_PHY is not set
    # CONFIG_FIXED_PHY is not set
    # CONFIG_MDIO_BITBANG is not set
    # CONFIG_PPP is not set
    # CONFIG_SLIP is not set
    CONFIG_WLAN=y
    # CONFIG_WL1271_WLAN is not set
    # CONFIG_HOSTAP is not set
    CONFIG_WL12XX_PLATFORM_DATA=y
    
    #
    # Enable WiMAX (Networking options) to see the WiMAX drivers
    #
    # CONFIG_WAN is not set
    # CONFIG_ISDN is not set
    # CONFIG_PHONE is not set
    
    #
    # Input device support
    #
    CONFIG_INPUT=y
    # CONFIG_INPUT_FF_MEMLESS is not set
    CONFIG_INPUT_POLLDEV=y
    # CONFIG_INPUT_SPARSEKMAP is not set
    
    #
    # Userland interfaces
    #
    # CONFIG_INPUT_MOUSEDEV is not set
    # CONFIG_INPUT_JOYDEV is not set
    CONFIG_INPUT_EVDEV=y
    # CONFIG_INPUT_EVBUG is not set
    
    #
    # Input Device Drivers
    #
    CONFIG_INPUT_KEYBOARD=y
    # CONFIG_KEYBOARD_ADP5588 is not set
    # CONFIG_KEYBOARD_ADP5589 is not set
    CONFIG_KEYBOARD_ATKBD=m
    # CONFIG_KEYBOARD_QT1070 is not set
    # CONFIG_KEYBOARD_QT2160 is not set
    # CONFIG_KEYBOARD_LKKBD is not set
    CONFIG_KEYBOARD_GPIO=y
    # CONFIG_KEYBOARD_TCA6416 is not set
    # CONFIG_KEYBOARD_TCA8418 is not set
    # CONFIG_KEYBOARD_MATRIX is not set
    # CONFIG_KEYBOARD_MAX7359 is not set
    # CONFIG_KEYBOARD_MCS is not set
    # CONFIG_KEYBOARD_MPR121 is not set
    # CONFIG_KEYBOARD_NEWTON is not set
    # CONFIG_KEYBOARD_OPENCORES is not set
    # CONFIG_KEYBOARD_SAMSUNG is not set
    # CONFIG_KEYBOARD_STOWAWAY is not set
    # CONFIG_KEYBOARD_SUNKBD is not set
    CONFIG_KEYBOARD_XTKBD=m
    # CONFIG_INPUT_MOUSE is not set
    # CONFIG_INPUT_JOYSTICK is not set
    # CONFIG_INPUT_TABLET is not set
    CONFIG_INPUT_TOUCHSCREEN=y
    # CONFIG_TOUCHSCREEN_AD7879 is not set
    # CONFIG_TOUCHSCREEN_ATMEL_MXT is not set
    # CONFIG_TOUCHSCREEN_AUO_PIXCIR is not set
    # CONFIG_TOUCHSCREEN_BU21013 is not set
    # CONFIG_TOUCHSCREEN_CY8CTMG110 is not set
    # CONFIG_TOUCHSCREEN_DYNAPRO is not set
    # CONFIG_TOUCHSCREEN_HAMPSHIRE is not set
    # CONFIG_TOUCHSCREEN_EETI is not set
    # CONFIG_TOUCHSCREEN_EGALAX is not set
    # CONFIG_TOUCHSCREEN_FUJITSU is not set
    # CONFIG_TOUCHSCREEN_GUNZE is not set
    # CONFIG_TOUCHSCREEN_ELO is not set
    # CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
    # CONFIG_TOUCHSCREEN_MAX11801 is not set
    # CONFIG_TOUCHSCREEN_MCS5000 is not set
    # CONFIG_TOUCHSCREEN_MTOUCH is not set
    # CONFIG_TOUCHSCREEN_INEXIO is not set
    # CONFIG_TOUCHSCREEN_MK712 is not set
    # CONFIG_TOUCHSCREEN_PENMOUNT is not set
    # CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
    # CONFIG_TOUCHSCREEN_TOUCHWIN is not set
    # CONFIG_TOUCHSCREEN_PIXCIR is not set
    # CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
    # CONFIG_TOUCHSCREEN_TSC_SERIO is not set
    # CONFIG_TOUCHSCREEN_TSC2007 is not set
    # CONFIG_TOUCHSCREEN_TSC2004 is not set
    # CONFIG_TOUCHSCREEN_W90X900 is not set
    # CONFIG_TOUCHSCREEN_ST1232 is not set
    # CONFIG_TOUCHSCREEN_TPS6507X is not set
    # CONFIG_INPUT_MISC is not set
    
    #
    # Hardware I/O ports
    #
    CONFIG_SERIO=y
    CONFIG_SERIO_SERPORT=y
    CONFIG_SERIO_LIBPS2=y
    # CONFIG_SERIO_RAW is not set
    # CONFIG_SERIO_ALTERA_PS2 is not set
    # CONFIG_SERIO_PS2MULT is not set
    # CONFIG_GAMEPORT is not set
    
    #
    # Character devices
    #
    CONFIG_VT=y
    CONFIG_CONSOLE_TRANSLATIONS=y
    # CONFIG_VT_CONSOLE is not set
    CONFIG_HW_CONSOLE=y
    # CONFIG_VT_HW_CONSOLE_BINDING is not set
    CONFIG_UNIX98_PTYS=y
    # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
    CONFIG_LEGACY_PTYS=y
    CONFIG_LEGACY_PTY_COUNT=8
    # CONFIG_SERIAL_NONSTANDARD is not set
    # CONFIG_N_GSM is not set
    # CONFIG_TRACE_SINK is not set
    CONFIG_DEVKMEM=y
    
    #
    # Serial drivers
    #
    CONFIG_SERIAL_8250=y
    CONFIG_SERIAL_8250_CONSOLE=y
    CONFIG_SERIAL_8250_NR_UARTS=3
    CONFIG_SERIAL_8250_RUNTIME_UARTS=3
    # CONFIG_SERIAL_8250_EXTENDED is not set
    
    #
    # Non-8250 serial port support
    #
    CONFIG_SERIAL_CORE=y
    CONFIG_SERIAL_CORE_CONSOLE=y
    # CONFIG_SERIAL_TIMBERDALE is not set
    # CONFIG_SERIAL_ALTERA_JTAGUART is not set
    # CONFIG_SERIAL_ALTERA_UART is not set
    # CONFIG_SERIAL_XILINX_PS_UART is not set
    CONFIG_TTY_PRINTK=y
    # CONFIG_HVC_DCC is not set
    # CONFIG_IPMI_HANDLER is not set
    CONFIG_HW_RANDOM=m
    # CONFIG_HW_RANDOM_TIMERIOMEM is not set
    # CONFIG_R3964 is not set
    # CONFIG_RAW_DRIVER is not set
    # CONFIG_TCG_TPM is not set
    # CONFIG_RAMOOPS is not set
    CONFIG_I2C=y
    CONFIG_I2C_BOARDINFO=y
    CONFIG_I2C_COMPAT=y
    CONFIG_I2C_CHARDEV=y
    # CONFIG_I2C_MUX is not set
    CONFIG_I2C_HELPER_AUTO=y
    CONFIG_I2C_ALGOBIT=y
    
    #
    # I2C Hardware Bus support
    #
    
    #
    # I2C system bus drivers (mostly embedded / system-on-chip)
    #
    CONFIG_I2C_DAVINCI=y
    # CONFIG_I2C_DESIGNWARE_PLATFORM is not set
    CONFIG_I2C_GPIO=y
    # CONFIG_I2C_OCORES is not set
    # CONFIG_I2C_PCA_PLATFORM is not set
    # CONFIG_I2C_PXA_PCI is not set
    # CONFIG_I2C_SIMTEC is not set
    # CONFIG_I2C_XILINX is not set
    
    #
    # External I2C/SMBus adapter drivers
    #
    # CONFIG_I2C_PARPORT_LIGHT is not set
    # CONFIG_I2C_TAOS_EVM is not set
    
    #
    # Other I2C/SMBus bus drivers
    #
    # CONFIG_I2C_STUB is not set
    # CONFIG_I2C_DEBUG_CORE is not set
    # CONFIG_I2C_DEBUG_ALGO is not set
    # CONFIG_I2C_DEBUG_BUS is not set
    # CONFIG_SPI is not set
    
    #
    # PPS support
    #
    # CONFIG_PPS is not set
    
    #
    # PPS generators support
    #
    
    #
    # PTP clock support
    #
    
    #
    # Enable Device Drivers -> PPS to see the PTP clock options.
    #
    CONFIG_ARCH_REQUIRE_GPIOLIB=y
    CONFIG_GPIOLIB=y
    # CONFIG_DEBUG_GPIO is not set
    # CONFIG_GPIO_SYSFS is not set
    
    #
    # Memory mapped GPIO drivers:
    #
    # CONFIG_GPIO_GENERIC_PLATFORM is not set
    
    #
    # I2C GPIO expanders:
    #
    # CONFIG_GPIO_MAX7300 is not set
    # CONFIG_GPIO_MAX732X is not set
    # CONFIG_GPIO_PCA953X_IRQ is not set
    CONFIG_GPIO_PCF857X=y
    # CONFIG_GPIO_SX150X is not set
    # CONFIG_GPIO_ADP5588 is not set
    
    #
    # PCI GPIO expanders:
    #
    
    #
    # SPI GPIO expanders:
    #
    # CONFIG_GPIO_MCP23S08 is not set
    
    #
    # AC97 GPIO expanders:
    #
    
    #
    # MODULbus GPIO expanders:
    #
    # CONFIG_GENERIC_PWM is not set
    # CONFIG_W1 is not set
    # CONFIG_POWER_SUPPLY is not set
    # CONFIG_HWMON is not set
    # CONFIG_THERMAL is not set
    CONFIG_WATCHDOG=y
    # CONFIG_WATCHDOG_CORE is not set
    # CONFIG_WATCHDOG_NOWAYOUT is not set
    
    #
    # Watchdog Device Drivers
    #
    # CONFIG_SOFT_WATCHDOG is not set
    # CONFIG_DW_WATCHDOG is not set
    CONFIG_DAVINCI_WATCHDOG=y
    # CONFIG_MAX63XX_WATCHDOG is not set
    CONFIG_SSB_POSSIBLE=y
    
    #
    # Sonics Silicon Backplane
    #
    # CONFIG_SSB is not set
    CONFIG_BCMA_POSSIBLE=y
    
    #
    # Broadcom specific AMBA
    #
    # CONFIG_BCMA is not set
    
    #
    # Multifunction device drivers
    #
    CONFIG_MFD_CORE=y
    # CONFIG_MFD_88PM860X is not set
    # CONFIG_MFD_SM501 is not set
    # CONFIG_MFD_ASIC3 is not set
    # CONFIG_HTC_EGPIO is not set
    # CONFIG_HTC_PASIC3 is not set
    # CONFIG_HTC_I2CPLD is not set
    # CONFIG_TPS6105X is not set
    # CONFIG_TPS65010 is not set
    # CONFIG_TPS6507X is not set
    # CONFIG_MFD_TPS6586X is not set
    # CONFIG_MFD_TPS65910 is not set
    # CONFIG_MFD_TPS65912_I2C is not set
    # CONFIG_TWL4030_CORE is not set
    # CONFIG_MFD_STMPE is not set
    # CONFIG_MFD_TC3589X is not set
    # CONFIG_MFD_TMIO is not set
    # CONFIG_MFD_T7L66XB is not set
    # CONFIG_MFD_TC6387XB is not set
    # CONFIG_MFD_TC6393XB is not set
    # CONFIG_PMIC_DA903X is not set
    # CONFIG_MFD_DA9052_I2C is not set
    # CONFIG_PMIC_ADP5520 is not set
    # CONFIG_MFD_MAX8925 is not set
    # CONFIG_MFD_MAX8997 is not set
    # CONFIG_MFD_MAX8998 is not set
    # CONFIG_MFD_S5M_CORE is not set
    # CONFIG_MFD_WM8400 is not set
    # CONFIG_MFD_WM831X_I2C is not set
    # CONFIG_MFD_WM8350_I2C is not set
    # CONFIG_MFD_WM8994 is not set
    # CONFIG_MFD_PCF50633 is not set
    # CONFIG_ABX500_CORE is not set
    # CONFIG_MFD_WL1273_CORE is not set
    # CONFIG_MFD_AAT2870_CORE is not set
    CONFIG_REGULATOR=y
    # CONFIG_REGULATOR_DEBUG is not set
    CONFIG_REGULATOR_DUMMY=y
    # CONFIG_REGULATOR_FIXED_VOLTAGE is not set
    # CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
    # CONFIG_REGULATOR_USERSPACE_CONSUMER is not set
    # CONFIG_REGULATOR_GPIO is not set
    # CONFIG_REGULATOR_BQ24022 is not set
    # CONFIG_REGULATOR_MAX1586 is not set
    # CONFIG_REGULATOR_MAX8649 is not set
    # CONFIG_REGULATOR_MAX8660 is not set
    # CONFIG_REGULATOR_MAX8952 is not set
    # CONFIG_REGULATOR_LP3971 is not set
    # CONFIG_REGULATOR_LP3972 is not set
    # CONFIG_REGULATOR_TPS65023 is not set
    CONFIG_REGULATOR_TPS6507X=y
    # CONFIG_REGULATOR_ISL6271A is not set
    # CONFIG_REGULATOR_AD5398 is not set
    # CONFIG_MEDIA_SUPPORT is not set
    
    #
    # Graphics support
    #
    # CONFIG_DRM is not set
    # CONFIG_VGASTATE is not set
    # CONFIG_VIDEO_OUTPUT_CONTROL is not set
    CONFIG_FB=y
    # CONFIG_FIRMWARE_EDID is not set
    # CONFIG_FB_DDC is not set
    # CONFIG_FB_BOOT_VESA_SUPPORT is not set
    CONFIG_FB_CFB_FILLRECT=y
    CONFIG_FB_CFB_COPYAREA=y
    CONFIG_FB_CFB_IMAGEBLIT=y
    # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
    # CONFIG_FB_SYS_FILLRECT is not set
    # CONFIG_FB_SYS_COPYAREA is not set
    # CONFIG_FB_SYS_IMAGEBLIT is not set
    # CONFIG_FB_FOREIGN_ENDIAN is not set
    # CONFIG_FB_SYS_FOPS is not set
    # CONFIG_FB_WMT_GE_ROPS is not set
    # CONFIG_FB_SVGALIB is not set
    # CONFIG_FB_MACMODES is not set
    # CONFIG_FB_BACKLIGHT is not set
    # CONFIG_FB_MODE_HELPERS is not set
    # CONFIG_FB_TILEBLITTING is not set
    
    #
    # Frame buffer hardware drivers
    #
    # CONFIG_FB_S1D13XXX is not set
    # CONFIG_FB_TMIO is not set
    # CONFIG_FB_DAVINCI is not set
    # CONFIG_FB_VIRTUAL is not set
    CONFIG_FB_DA8XX=y
    # CONFIG_FB_METRONOME is not set
    # CONFIG_FB_BROADSHEET is not set
    # CONFIG_BACKLIGHT_LCD_SUPPORT is not set
    
    #
    # Console display driver support
    #
    CONFIG_DUMMY_CONSOLE=y
    CONFIG_FRAMEBUFFER_CONSOLE=y
    # CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
    # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
    # CONFIG_FONTS is not set
    CONFIG_FONT_8x8=y
    CONFIG_FONT_8x16=y
    CONFIG_LOGO=y
    CONFIG_LOGO_LINUX_MONO=y
    CONFIG_LOGO_LINUX_VGA16=y
    CONFIG_LOGO_LINUX_CLUT224=y
    # CONFIG_SOUND is not set
    CONFIG_HID_SUPPORT=y
    CONFIG_HID=y
    # CONFIG_HIDRAW is not set
    # CONFIG_HID_PID is not set
    
    #
    # Special HID drivers
    #
    # CONFIG_USB_SUPPORT is not set
    # CONFIG_USB_TI_CPPI41_DMA_HW is not set
    # CONFIG_USB_FUSB300 is not set
    # CONFIG_USB_R8A66597 is not set
    # CONFIG_USB_MV_UDC is not set
    # CONFIG_USB_GADGET_MUSB_HDRC is not set
    # CONFIG_USB_M66592 is not set
    # CONFIG_USB_NET2272 is not set
    # CONFIG_USB_DUMMY_HCD is not set
    # CONFIG_USB_ZERO is not set
    # CONFIG_USB_AUDIO is not set
    # CONFIG_USB_ETH is not set
    # CONFIG_USB_G_NCM is not set
    # CONFIG_USB_GADGETFS is not set
    # CONFIG_USB_FUNCTIONFS is not set
    # CONFIG_USB_FILE_STORAGE is not set
    # CONFIG_USB_MASS_STORAGE is not set
    # CONFIG_USB_G_SERIAL is not set
    # CONFIG_USB_MIDI_GADGET is not set
    # CONFIG_USB_G_PRINTER is not set
    # CONFIG_USB_CDC_COMPOSITE is not set
    # CONFIG_USB_G_ACM_MS is not set
    # CONFIG_USB_G_MULTI is not set
    # CONFIG_USB_G_HID is not set
    # CONFIG_USB_G_DBGP is not set
    CONFIG_MMC=y
    # CONFIG_MMC_DEBUG is not set
    CONFIG_MMC_UNSAFE_RESUME=y
    # CONFIG_MMC_CLKGATE is not set
    
    #
    # MMC/SD/SDIO Card Drivers
    #
    CONFIG_MMC_BLOCK=y
    CONFIG_MMC_BLOCK_MINORS=8
    CONFIG_MMC_BLOCK_BOUNCE=y
    # CONFIG_SDIO_UART is not set
    # CONFIG_MMC_TEST is not set
    
    #
    # MMC/SD/SDIO Host Controller Drivers
    #
    # CONFIG_MMC_SDHCI is not set
    # CONFIG_MMC_SDHCI_PXAV3 is not set
    # CONFIG_MMC_SDHCI_PXAV2 is not set
    CONFIG_MMC_DAVINCI=y
    # CONFIG_MMC_DW is not set
    # CONFIG_MEMSTICK is not set
    # CONFIG_NEW_LEDS is not set
    # CONFIG_ACCESSIBILITY is not set
    CONFIG_RTC_LIB=y
    CONFIG_RTC_CLASS=y
    CONFIG_RTC_HCTOSYS=y
    CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
    # CONFIG_RTC_DEBUG is not set
    
    #
    # RTC interfaces
    #
    CONFIG_RTC_INTF_SYSFS=y
    CONFIG_RTC_INTF_PROC=y
    CONFIG_RTC_INTF_DEV=y
    # CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
    # CONFIG_RTC_DRV_TEST is not set
    
    #
    # I2C RTC drivers
    #
    # CONFIG_RTC_DRV_DS1307 is not set
    # CONFIG_RTC_DRV_DS1374 is not set
    # CONFIG_RTC_DRV_DS1672 is not set
    # CONFIG_RTC_DRV_DS3232 is not set
    # CONFIG_RTC_DRV_MAX6900 is not set
    # CONFIG_RTC_DRV_RS5C372 is not set
    # CONFIG_RTC_DRV_ISL1208 is not set
    # CONFIG_RTC_DRV_ISL12022 is not set
    # CONFIG_RTC_DRV_X1205 is not set
    # CONFIG_RTC_DRV_PCF8563 is not set
    # CONFIG_RTC_DRV_PCF8583 is not set
    # CONFIG_RTC_DRV_M41T80 is not set
    # CONFIG_RTC_DRV_BQ32K is not set
    # CONFIG_RTC_DRV_S35390A is not set
    # CONFIG_RTC_DRV_FM3130 is not set
    # CONFIG_RTC_DRV_RX8581 is not set
    # CONFIG_RTC_DRV_RX8025 is not set
    # CONFIG_RTC_DRV_EM3027 is not set
    # CONFIG_RTC_DRV_RV3029C2 is not set
    
    #
    # SPI RTC drivers
    #
    
    #
    # Platform RTC drivers
    #
    # CONFIG_RTC_DRV_CMOS is not set
    # CONFIG_RTC_DRV_DS1286 is not set
    # CONFIG_RTC_DRV_DS1511 is not set
    # CONFIG_RTC_DRV_DS1553 is not set
    # CONFIG_RTC_DRV_DS1742 is not set
    # CONFIG_RTC_DRV_STK17TA8 is not set
    # CONFIG_RTC_DRV_M48T86 is not set
    # CONFIG_RTC_DRV_M48T35 is not set
    # CONFIG_RTC_DRV_M48T59 is not set
    # CONFIG_RTC_DRV_MSM6242 is not set
    # CONFIG_RTC_DRV_BQ4802 is not set
    # CONFIG_RTC_DRV_RP5C01 is not set
    # CONFIG_RTC_DRV_V3020 is not set
    
    #
    # on-CPU RTC drivers
    #
    CONFIG_RTC_DRV_OMAP=y
    # CONFIG_DMADEVICES is not set
    # CONFIG_AUXDISPLAY is not set
    # CONFIG_UIO is not set
    
    #
    # Virtio drivers
    #
    # CONFIG_VIRTIO_BALLOON is not set
    # CONFIG_VIRTIO_MMIO is not set
    
    #
    # Microsoft Hyper-V guest support
    #
    # CONFIG_STAGING is not set
    CONFIG_CLKDEV_LOOKUP=y
    
    #
    # Hardware Spinlock drivers
    #
    CONFIG_IOMMU_SUPPORT=y
    # CONFIG_VIRT_DRIVERS is not set
    # CONFIG_PM_DEVFREQ is not set
    
    #
    # File systems
    #
    CONFIG_EXT2_FS=y
    # CONFIG_EXT2_FS_XATTR is not set
    # CONFIG_EXT2_FS_XIP is not set
    CONFIG_EXT3_FS=y
    # CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
    CONFIG_EXT3_FS_XATTR=y
    # CONFIG_EXT3_FS_POSIX_ACL is not set
    # CONFIG_EXT3_FS_SECURITY is not set
    # CONFIG_EXT4_FS is not set
    CONFIG_JBD=y
    # CONFIG_JBD_DEBUG is not set
    CONFIG_FS_MBCACHE=y
    # CONFIG_REISERFS_FS is not set
    # CONFIG_JFS_FS is not set
    # CONFIG_XFS_FS is not set
    # CONFIG_GFS2_FS is not set
    # CONFIG_BTRFS_FS is not set
    # CONFIG_NILFS2_FS is not set
    # CONFIG_FS_POSIX_ACL is not set
    CONFIG_EXPORTFS=m
    CONFIG_FILE_LOCKING=y
    CONFIG_FSNOTIFY=y
    CONFIG_DNOTIFY=y
    CONFIG_INOTIFY_USER=y
    # CONFIG_FANOTIFY is not set
    # CONFIG_QUOTA is not set
    # CONFIG_QUOTACTL is not set
    CONFIG_AUTOFS4_FS=m
    # CONFIG_FUSE_FS is not set
    
    #
    # Caches
    #
    # CONFIG_FSCACHE is not set
    
    #
    # CD-ROM/DVD Filesystems
    #
    CONFIG_ISO9660_FS=y
    # CONFIG_JOLIET is not set
    # CONFIG_ZISOFS is not set
    # CONFIG_UDF_FS is not set
    
    #
    # DOS/FAT/NT Filesystems
    #
    CONFIG_FAT_FS=y
    CONFIG_MSDOS_FS=y
    CONFIG_VFAT_FS=y
    CONFIG_FAT_DEFAULT_CODEPAGE=437
    CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
    # CONFIG_NTFS_FS is not set
    
    #
    # Pseudo filesystems
    #
    CONFIG_PROC_FS=y
    CONFIG_PROC_SYSCTL=y
    CONFIG_PROC_PAGE_MONITOR=y
    CONFIG_SYSFS=y
    CONFIG_TMPFS=y
    # CONFIG_TMPFS_POSIX_ACL is not set
    # CONFIG_TMPFS_XATTR is not set
    # CONFIG_HUGETLB_PAGE is not set
    # CONFIG_CONFIGFS_FS is not set
    CONFIG_MISC_FILESYSTEMS=y
    # CONFIG_ADFS_FS is not set
    # CONFIG_AFFS_FS is not set
    # CONFIG_HFS_FS is not set
    # CONFIG_HFSPLUS_FS is not set
    # CONFIG_BEFS_FS is not set
    # CONFIG_BFS_FS is not set
    # CONFIG_EFS_FS is not set
    CONFIG_JFFS2_FS=y
    CONFIG_JFFS2_FS_DEBUG=0
    CONFIG_JFFS2_FS_WRITEBUFFER=y
    # CONFIG_JFFS2_FS_WBUF_VERIFY is not set
    # CONFIG_JFFS2_SUMMARY is not set
    # CONFIG_JFFS2_FS_XATTR is not set
    # CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
    CONFIG_JFFS2_ZLIB=y
    # CONFIG_JFFS2_LZO is not set
    CONFIG_JFFS2_RTIME=y
    # CONFIG_JFFS2_RUBIN is not set
    CONFIG_UBIFS_FS=y
    # CONFIG_UBIFS_FS_XATTR is not set
    # CONFIG_UBIFS_FS_ADVANCED_COMPR is not set
    CONFIG_UBIFS_FS_LZO=y
    CONFIG_UBIFS_FS_ZLIB=y
    # CONFIG_UBIFS_FS_DEBUG is not set
    # CONFIG_LOGFS is not set
    CONFIG_CRAMFS=y
    # CONFIG_SQUASHFS is not set
    # CONFIG_VXFS_FS is not set
    CONFIG_MINIX_FS=m
    # CONFIG_OMFS_FS is not set
    # CONFIG_HPFS_FS is not set
    # CONFIG_QNX4FS_FS is not set
    # CONFIG_ROMFS_FS is not set
    # CONFIG_PSTORE is not set
    # CONFIG_SYSV_FS is not set
    # CONFIG_UFS_FS is not set
    CONFIG_NETWORK_FILESYSTEMS=y
    CONFIG_NFS_FS=y
    CONFIG_NFS_V3=y
    # CONFIG_NFS_V3_ACL is not set
    # CONFIG_NFS_V4 is not set
    CONFIG_ROOT_NFS=y
    CONFIG_NFSD=m
    CONFIG_NFSD_V3=y
    # CONFIG_NFSD_V3_ACL is not set
    # CONFIG_NFSD_V4 is not set
    CONFIG_LOCKD=y
    CONFIG_LOCKD_V4=y
    CONFIG_NFS_COMMON=y
    CONFIG_SUNRPC=y
    # CONFIG_CEPH_FS is not set
    # CONFIG_CIFS is not set
    # CONFIG_NCP_FS is not set
    # CONFIG_CODA_FS is not set
    # CONFIG_AFS_FS is not set
    CONFIG_NLS=y
    CONFIG_NLS_DEFAULT="iso8859-1"
    CONFIG_NLS_CODEPAGE_437=y
    # CONFIG_NLS_CODEPAGE_737 is not set
    # CONFIG_NLS_CODEPAGE_775 is not set
    # CONFIG_NLS_CODEPAGE_850 is not set
    # CONFIG_NLS_CODEPAGE_852 is not set
    # CONFIG_NLS_CODEPAGE_855 is not set
    # CONFIG_NLS_CODEPAGE_857 is not set
    # CONFIG_NLS_CODEPAGE_860 is not set
    # CONFIG_NLS_CODEPAGE_861 is not set
    # CONFIG_NLS_CODEPAGE_862 is not set
    # CONFIG_NLS_CODEPAGE_863 is not set
    # CONFIG_NLS_CODEPAGE_864 is not set
    # CONFIG_NLS_CODEPAGE_865 is not set
    # CONFIG_NLS_CODEPAGE_866 is not set
    # CONFIG_NLS_CODEPAGE_869 is not set
    # CONFIG_NLS_CODEPAGE_936 is not set
    # CONFIG_NLS_CODEPAGE_950 is not set
    # CONFIG_NLS_CODEPAGE_932 is not set
    # CONFIG_NLS_CODEPAGE_949 is not set
    # CONFIG_NLS_CODEPAGE_874 is not set
    # CONFIG_NLS_ISO8859_8 is not set
    # CONFIG_NLS_CODEPAGE_1250 is not set
    # CONFIG_NLS_CODEPAGE_1251 is not set
    CONFIG_NLS_ASCII=m
    CONFIG_NLS_ISO8859_1=y
    # CONFIG_NLS_ISO8859_2 is not set
    # CONFIG_NLS_ISO8859_3 is not set
    # CONFIG_NLS_ISO8859_4 is not set
    # CONFIG_NLS_ISO8859_5 is not set
    # CONFIG_NLS_ISO8859_6 is not set
    # CONFIG_NLS_ISO8859_7 is not set
    # CONFIG_NLS_ISO8859_9 is not set
    # CONFIG_NLS_ISO8859_13 is not set
    # CONFIG_NLS_ISO8859_14 is not set
    # CONFIG_NLS_ISO8859_15 is not set
    # CONFIG_NLS_KOI8_R is not set
    # CONFIG_NLS_KOI8_U is not set
    CONFIG_NLS_UTF8=m
    
    #
    # Kernel hacking
    #
    # CONFIG_PRINTK_TIME is not set
    CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
    # CONFIG_ENABLE_WARN_DEPRECATED is not set
    # CONFIG_ENABLE_MUST_CHECK is not set
    CONFIG_FRAME_WARN=1024
    # CONFIG_MAGIC_SYSRQ is not set
    # CONFIG_STRIP_ASM_SYMS is not set
    # CONFIG_UNUSED_SYMBOLS is not set
    CONFIG_DEBUG_FS=y
    # CONFIG_HEADERS_CHECK is not set
    # CONFIG_DEBUG_SECTION_MISMATCH is not set
    CONFIG_DEBUG_KERNEL=y
    # CONFIG_DEBUG_SHIRQ is not set
    # CONFIG_LOCKUP_DETECTOR is not set
    # CONFIG_HARDLOCKUP_DETECTOR is not set
    # CONFIG_DETECT_HUNG_TASK is not set
    CONFIG_SCHED_DEBUG=y
    # CONFIG_SCHEDSTATS is not set
    # CONFIG_TIMER_STATS is not set
    # CONFIG_DEBUG_OBJECTS is not set
    # CONFIG_SLUB_DEBUG_ON is not set
    # CONFIG_SLUB_STATS is not set
    # CONFIG_DEBUG_KMEMLEAK is not set
    # CONFIG_DEBUG_PREEMPT is not set
    # CONFIG_DEBUG_RT_MUTEXES is not set
    # CONFIG_RT_MUTEX_TESTER is not set
    # CONFIG_DEBUG_SPINLOCK is not set
    # CONFIG_DEBUG_MUTEXES is not set
    # CONFIG_DEBUG_LOCK_ALLOC is not set
    # CONFIG_PROVE_LOCKING is not set
    # CONFIG_SPARSE_RCU_POINTER is not set
    # CONFIG_LOCK_STAT is not set
    # CONFIG_DEBUG_ATOMIC_SLEEP is not set
    # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
    # CONFIG_DEBUG_STACK_USAGE is not set
    # CONFIG_DEBUG_KOBJECT is not set
    CONFIG_DEBUG_BUGVERBOSE=y
    # CONFIG_DEBUG_INFO is not set
    # CONFIG_DEBUG_VM is not set
    # CONFIG_DEBUG_WRITECOUNT is not set
    # CONFIG_DEBUG_MEMORY_INIT is not set
    # CONFIG_DEBUG_LIST is not set
    # CONFIG_TEST_LIST_SORT is not set
    # CONFIG_DEBUG_SG is not set
    # CONFIG_DEBUG_NOTIFIERS is not set
    # CONFIG_DEBUG_CREDENTIALS is not set
    CONFIG_FRAME_POINTER=y
    # CONFIG_BOOT_PRINTK_DELAY is not set
    # CONFIG_RCU_TORTURE_TEST is not set
    # CONFIG_BACKTRACE_SELF_TEST is not set
    # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
    # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
    # CONFIG_LKDTM is not set
    # CONFIG_FAULT_INJECTION is not set
    # CONFIG_LATENCYTOP is not set
    # CONFIG_SYSCTL_SYSCALL_CHECK is not set
    # CONFIG_DEBUG_PAGEALLOC is not set
    CONFIG_HAVE_FUNCTION_TRACER=y
    CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
    CONFIG_HAVE_DYNAMIC_FTRACE=y
    CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
    CONFIG_HAVE_C_RECORDMCOUNT=y
    CONFIG_TRACING_SUPPORT=y
    # CONFIG_FTRACE is not set
    CONFIG_DYNAMIC_DEBUG=y
    # CONFIG_DMA_API_DEBUG is not set
    # CONFIG_ATOMIC64_SELFTEST is not set
    # CONFIG_SAMPLES is not set
    CONFIG_HAVE_ARCH_KGDB=y
    # CONFIG_KGDB is not set
    # CONFIG_TEST_KSTRTOX is not set
    # CONFIG_STRICT_DEVMEM is not set
    # CONFIG_ARM_UNWIND is not set
    CONFIG_DEBUG_USER=y
    CONFIG_DEBUG_LL=y
    CONFIG_DEBUG_LL_UART_NONE=y
    # CONFIG_DEBUG_ICEDCC is not set
    CONFIG_EARLY_PRINTK=y
    
    #
    # Security options
    #
    # CONFIG_KEYS is not set
    # CONFIG_SECURITY_DMESG_RESTRICT is not set
    # CONFIG_SECURITY is not set
    # CONFIG_SECURITYFS is not set
    CONFIG_DEFAULT_SECURITY_DAC=y
    CONFIG_DEFAULT_SECURITY=""
    CONFIG_CRYPTO=y
    
    #
    # Crypto core or helper
    #
    CONFIG_CRYPTO_ALGAPI=y
    CONFIG_CRYPTO_ALGAPI2=y
    # CONFIG_CRYPTO_MANAGER is not set
    # CONFIG_CRYPTO_MANAGER2 is not set
    # CONFIG_CRYPTO_USER is not set
    # CONFIG_CRYPTO_GF128MUL is not set
    # CONFIG_CRYPTO_NULL is not set
    # CONFIG_CRYPTO_CRYPTD is not set
    # CONFIG_CRYPTO_AUTHENC is not set
    # CONFIG_CRYPTO_TEST is not set
    
    #
    # Authenticated Encryption with Associated Data
    #
    # CONFIG_CRYPTO_CCM is not set
    # CONFIG_CRYPTO_GCM is not set
    # CONFIG_CRYPTO_SEQIV is not set
    
    #
    # Block modes
    #
    # CONFIG_CRYPTO_CBC is not set
    # CONFIG_CRYPTO_CTR is not set
    # CONFIG_CRYPTO_CTS is not set
    # CONFIG_CRYPTO_ECB is not set
    # CONFIG_CRYPTO_LRW is not set
    # CONFIG_CRYPTO_PCBC is not set
    # CONFIG_CRYPTO_XTS is not set
    
    #
    # Hash modes
    #
    # CONFIG_CRYPTO_HMAC is not set
    # CONFIG_CRYPTO_XCBC is not set
    # CONFIG_CRYPTO_VMAC is not set
    
    #
    # Digest
    #
    # CONFIG_CRYPTO_CRC32C is not set
    # CONFIG_CRYPTO_GHASH is not set
    # CONFIG_CRYPTO_MD4 is not set
    # CONFIG_CRYPTO_MD5 is not set
    # CONFIG_CRYPTO_MICHAEL_MIC is not set
    # CONFIG_CRYPTO_RMD128 is not set
    # CONFIG_CRYPTO_RMD160 is not set
    # CONFIG_CRYPTO_RMD256 is not set
    # CONFIG_CRYPTO_RMD320 is not set
    # CONFIG_CRYPTO_SHA1 is not set
    # CONFIG_CRYPTO_SHA256 is not set
    # CONFIG_CRYPTO_SHA512 is not set
    # CONFIG_CRYPTO_TGR192 is not set
    # CONFIG_CRYPTO_WP512 is not set
    
    #
    # Ciphers
    #
    # CONFIG_CRYPTO_AES is not set
    # CONFIG_CRYPTO_ANUBIS is not set
    # CONFIG_CRYPTO_ARC4 is not set
    # CONFIG_CRYPTO_BLOWFISH is not set
    # CONFIG_CRYPTO_CAMELLIA is not set
    # CONFIG_CRYPTO_CAST5 is not set
    # CONFIG_CRYPTO_CAST6 is not set
    # CONFIG_CRYPTO_DES is not set
    # CONFIG_CRYPTO_FCRYPT is not set
    # CONFIG_CRYPTO_KHAZAD is not set
    # CONFIG_CRYPTO_SALSA20 is not set
    # CONFIG_CRYPTO_SEED is not set
    # CONFIG_CRYPTO_SERPENT is not set
    # CONFIG_CRYPTO_TEA is not set
    # CONFIG_CRYPTO_TWOFISH is not set
    
    #
    # Compression
    #
    CONFIG_CRYPTO_DEFLATE=y
    # CONFIG_CRYPTO_ZLIB is not set
    CONFIG_CRYPTO_LZO=y
    
    #
    # Random Number Generation
    #
    # CONFIG_CRYPTO_ANSI_CPRNG is not set
    # CONFIG_CRYPTO_USER_API_HASH is not set
    # CONFIG_CRYPTO_USER_API_SKCIPHER is not set
    # CONFIG_CRYPTO_HW is not set
    # CONFIG_BINARY_PRINTF is not set
    
    #
    # Library routines
    #
    CONFIG_BITREVERSE=y
    CONFIG_GENERIC_PCI_IOMAP=y
    CONFIG_CRC_CCITT=m
    CONFIG_CRC16=y
    CONFIG_CRC_T10DIF=m
    # CONFIG_CRC_ITU_T is not set
    CONFIG_CRC32=y
    # CONFIG_CRC7 is not set
    # CONFIG_LIBCRC32C is not set
    # CONFIG_CRC8 is not set
    CONFIG_ZLIB_INFLATE=y
    CONFIG_ZLIB_DEFLATE=y
    CONFIG_LZO_COMPRESS=y
    CONFIG_LZO_DECOMPRESS=y
    # CONFIG_XZ_DEC is not set
    # CONFIG_XZ_DEC_BCJ is not set
    CONFIG_DECOMPRESS_GZIP=y
    CONFIG_GENERIC_ALLOCATOR=y
    CONFIG_HAS_IOMEM=y
    CONFIG_HAS_IOPORT=y
    CONFIG_HAS_DMA=y
    CONFIG_DQL=y
    CONFIG_NLATTR=y
    CONFIG_GENERIC_ATOMIC64=y
    # CONFIG_AVERAGE is not set
    # CONFIG_CORDIC is not set
    

    Rename "dot_config_lcdk.txt" to ".config" in linux source folder.

    Ex:

    cd linux-3.3-psp03.22.00.06.sdk/

    mv  dot_config_lcdk.txt     .config

    make uImage ARCH=arm CROSS_COMPILE=arm-arago-linux-gnueabi-


    4. Use the below bootargs to check where kernel get hangs.

    setenv bootargs console=uart,io,0xe1020000,115200n8 root=/dev/mmcblk0p2 rw rootwait ip=off

    Please refer the below TI wiki.

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

  • Hi,

    I did all you had said but it doesn't work even if I disable USB,AUDIO,SPI & SATA.

    Into setenv bootargs console=uart,io,0xe1020000,115200n8 root=/dev/mmcblk0p2 rw rootwait ip=off

    what does "0xe1020000" mean?

    the address must not be 0x01c20400 or 0xe1020400 for UART1?

    Why do I have a bad CRC when I launch bootm 0xc0700000? may be the problem comes of there!

    Thanks

    Sebastien

  • Sorry but I didn't say how I do to load image.

    Under Ubuntu I build image uImage of kernel and after I copy it to USB key and then I download this file under windows via Ymodem or kermit.

    May be the problem is that! Going from ubuntu to windows can cause issues with this image (different FAT)

    Sebastien

  • The line "Uncompressing Linux... done, booting the kernel." comes from the mini-bootloader inside the kernel. This does not mean the kernel itself has it's console configured as desired but it is a good sign.

    Are you booting from SPI flash? The bootcmd suggests this memory map:
    uImage_sz  ram_addr    sf_offset  sf_size
    0x0024AAB0 0xc07000000 0x00080000 0x00220000

    Your SPI flash allocation is too small to hold the kernel. That is probably why you are getting a CRC error. The last 0x2AAB0 bytes will be undefined. Random code will get executed and you'll get exceptioned to nowhere.

  • Hi,

    I boot directly from DDR2 at 0xc0700000 because I downloaded Image of kernel at this address by Ymodem (UART1). For the moment I don't have neither UART2 port nor TCP/IP. I didn't still save kernel into flash.

    And it's after to have written "bootm 0xc0700000" command I have a error CRC. CRC control is done into DDR.

    This message "Uncompressing Linux... done, booting the kernel."  doesn't appear in console.

    I don't find any solutions

    Thanks

    Best Regards

    Sebastien

  • Hi,

    Please find the attached LCDK board file.

    I have added UART1 PM settings, So now try and let us know the status.

    /*
     * TI's OMAP-L138 LCDK Development Board
     *
     * Initial code: Syed Mohammed Khasim
     *
     * Copyright (C) 2009 Texas Instruments Incorporated - http://www.ti.com
     *
     * This file is licensed under the terms of the GNU General Public License
     * version 2. This program is licensed "as is" without any warranty of
     * any kind, whether express or implied.
     */
    #include <linux/kernel.h>
    #include <linux/init.h>
    #include <linux/console.h>
    #include <linux/gpio.h>
    #include <linux/i2c.h>
    #include <linux/i2c-gpio.h>
    #include <linux/leds.h>
    #include <linux/gpio_keys.h>
    #include <linux/input.h>
    #include <linux/platform_device.h>
    #include <linux/mtd/mtd.h>
    #include <linux/mtd/nand.h>
    #include <linux/mtd/partitions.h>
    #include <linux/mfd/davinci_aemif.h>
    
    #include <asm/mach-types.h>
    #include <asm/mach/arch.h>
    
    #include <mach/cp_intc.h>
    #include <mach/da8xx.h>
    #include <mach/mux.h>
    #include <mach/nand.h>
    
    #define LCDKBOARD_PHY_ID		"davinci_mdio-0:07"
    #define DA850_LCDK_MMCSD_CD_PIN		GPIO_TO_PIN(4, 0)
    
    #define DA850_USB1_VBUS_PIN		GPIO_TO_PIN(2, 4)
    #define DA850_USB1_OC_PIN		GPIO_TO_PIN(6, 13)
    
    #define LCDKBOARD_SATA_REFCLKPN_RATE   (100 * 1000 * 1000)
    
    #define DA850_LCDK_USER_LED0		GPIO_TO_PIN(6, 12)
    #define DA850_LCDK_USER_LED1		GPIO_TO_PIN(6, 13)
    #define DA850_LCDK_USER_LED2		GPIO_TO_PIN(2, 12)
    #define DA850_LCDK_USER_LED3		GPIO_TO_PIN(0, 9)
    
    #define	DA850_LCDK_USER_KEY0            GPIO_TO_PIN(2, 4)
    #define	DA850_LCDK_USER_KEY1            GPIO_TO_PIN(2, 5)
    
    #if defined(CONFIG_USB_OHCI_HCD)
    #define HAS_OHCI               1
    #else
    #define HAS_OHCI               0
    #endif
    
    #define        DA850_LCDK_KEYS_DEBOUNCE_MS     10
    #define        DA850_LCDK_GPIO_KEYS_POLL_MS    200
    
    #define DA850_LCD_PWR_PIN              GPIO_TO_PIN(2, 8)
    #define DA850_LCD_BL_PIN               GPIO_TO_PIN(2, 15)
    
    #if defined(CONFIG_MTD_NAND_DAVINCI) || \
    	defined(CONFIG_MTD_NAND_DAVINCI_MODULE)
    struct mtd_partition omapl138_lcdk_nandflash_partition[] = {
    	{
    		.name           = "u-boot env",
    		.offset         = 0,
    		.size           = SZ_128K,
    		.mask_flags     = MTD_WRITEABLE,
    	},
    	{
    		.name           = "u-boot",
    		.offset         = MTDPART_OFS_APPEND,
    		.size           = SZ_512K,
    		.mask_flags     = MTD_WRITEABLE,
    	},
    	{
    		.name           = "kernel",
    		.offset         = MTDPART_OFS_APPEND,
    		.size           = SZ_2M,
    		.mask_flags     = 0,
    	},
    	{
    		.name           = "filesystem",
    		.offset         = MTDPART_OFS_APPEND,
    		.size           = MTDPART_SIZ_FULL,
    		.mask_flags     = 0,
    	},
    };
    
    static struct davinci_nand_pdata omapl138_lcdk_nandflash_data = {
    	.parts          = omapl138_lcdk_nandflash_partition,
    	.nr_parts       = ARRAY_SIZE(omapl138_lcdk_nandflash_partition),
    	.ecc_mode       = NAND_ECC_HW,
    	.options        = NAND_BUSWIDTH_16,
    	.ecc_bits       = 1, /* 4 bit mode is not
    			      * supported with 16 bit NAND */
    	.bbt_options    = NAND_BBT_USE_FLASH,
    };
    
    static const short omapl138_lcdk_nand_pins[] = {
    	DA850_EMA_D_0, DA850_EMA_D_1, DA850_EMA_D_2, DA850_EMA_D_3,
    	DA850_EMA_D_4, DA850_EMA_D_5, DA850_EMA_D_6, DA850_EMA_D_7,
    	DA850_EMA_D_8, DA850_EMA_D_9, DA850_EMA_D_10, DA850_EMA_D_11,
    	DA850_EMA_D_12, DA850_EMA_D_13, DA850_EMA_D_14, DA850_EMA_D_15,
    	DA850_EMA_A_1, DA850_EMA_A_2, DA850_NEMA_CS_3, DA850_NEMA_CS_4,
    	DA850_NEMA_WE, DA850_NEMA_OE,
    	-1
    };
    
    static struct resource omapl138_lcdk_nandflash_resource[] = {
    	{
    		.start  = DA8XX_AEMIF_CS3_BASE,
    		.end    = DA8XX_AEMIF_CS3_BASE + SZ_512K + 2 * SZ_1K - 1,
    		.flags  = IORESOURCE_MEM,
    	},
    	{
    		.start  = DA8XX_AEMIF_CTL_BASE,
    		.end    = DA8XX_AEMIF_CTL_BASE + SZ_32K - 1,
    		.flags  = IORESOURCE_MEM,
    	},
    };
    
    static struct platform_device omapl138_lcdk_nandflash_device = {
    	.name           = "davinci_nand",
    	.id             = 1,
    	.dev            = {
    		.platform_data  = &omapl138_lcdk_nandflash_data,
    	},
    	.resource       = omapl138_lcdk_nandflash_resource,
    	.num_resources  = ARRAY_SIZE(omapl138_lcdk_nandflash_resource),
    };
    
    static __init void omapl138_lcdk_nand_init(void)
    {
    	int ret;
    
    	ret = davinci_cfg_reg_list(omapl138_lcdk_nand_pins);
    	if (ret) {
    		pr_warn("da850_lcdk_init:"
    				"nand mux setup failed: %d\n", ret);
    		return;
    	}
    	platform_device_register(&omapl138_lcdk_nandflash_device);
    }
    #else
    static void omapl138_lcdk_nand_init(void) { }
    #endif
    
    
    static short omapl138_lcdk_mii_pins[] __initdata = {
    	DA850_MII_TXEN, DA850_MII_TXCLK, DA850_MII_COL, DA850_MII_TXD_3,
    	DA850_MII_TXD_2, DA850_MII_TXD_1, DA850_MII_TXD_0, DA850_MII_RXER,
    	DA850_MII_CRS, DA850_MII_RXCLK, DA850_MII_RXDV, DA850_MII_RXD_3,
    	DA850_MII_RXD_2, DA850_MII_RXD_1, DA850_MII_RXD_0, DA850_MDIO_CLK,
    	DA850_MDIO_D,
    	-1
    };
    
    static __init void omapl138_lcdk_config_emac(void)
    {
    	void __iomem *cfgchip3 = DA8XX_SYSCFG0_VIRT(DA8XX_CFGCHIP3_REG);
    	int ret;
    	u32 val;
    	struct davinci_soc_info *soc_info = &davinci_soc_info;
    
    	val = __raw_readl(cfgchip3);
    	val &= ~BIT(8);
    	ret = davinci_cfg_reg_list(omapl138_lcdk_mii_pins);
    	if (ret) {
    		pr_warning("%s: cpgmac/mii mux setup failed: %d\n",
    			__func__, ret);
    		return;
    	}
    
    	/* configure the CFGCHIP3 register for MII */
    	__raw_writel(val, cfgchip3);
    	pr_info("EMAC: MII PHY configured\n");
    
    	soc_info->emac_pdata->phy_id = LCDKBOARD_PHY_ID;
    
    	ret = da8xx_register_emac();
    	if (ret)
    		pr_warning("%s: emac registration failed: %d\n",
    			__func__, ret);
    }
    
    /*
     * The following EDMA channels/slots are not being used by drivers (for
     * example: Timer, GPIO, UART events etc) on da850/omap-l138 LCDK EVM,
     * hence they are being reserved for codecs on the DSP side.
     */
    static const s16 da850_dma0_rsv_chans[][2] = {
    	/* (offset, number) */
    	{ 8,  6},
    	{24,  4},
    	{30,  2},
    	{-1, -1}
    };
    
    static const s16 da850_dma0_rsv_slots[][2] = {
    	/* (offset, number) */
    	{ 8,  6},
    	{24,  4},
    	{30, 50},
    	{-1, -1}
    };
    
    static const s16 da850_dma1_rsv_chans[][2] = {
    	/* (offset, number) */
    	{ 0, 28},
    	{30,  2},
    	{-1, -1}
    };
    
    static const s16 da850_dma1_rsv_slots[][2] = {
    	/* (offset, number) */
    	{ 0, 28},
    	{30, 90},
    	{-1, -1}
    };
    
    static struct edma_rsv_info da850_edma_cc0_rsv = {
    	.rsv_chans	= da850_dma0_rsv_chans,
    	.rsv_slots	= da850_dma0_rsv_slots,
    };
    
    static struct edma_rsv_info da850_edma_cc1_rsv = {
    	.rsv_chans	= da850_dma1_rsv_chans,
    	.rsv_slots	= da850_dma1_rsv_slots,
    };
    
    static struct edma_rsv_info *da850_edma_rsv[2] = {
    	&da850_edma_cc0_rsv,
    	&da850_edma_cc1_rsv,
    };
    
    static const short lcdk_mmcsd0_pins[] = {
    	DA850_MMCSD0_DAT_0, DA850_MMCSD0_DAT_1, DA850_MMCSD0_DAT_2,
    	DA850_MMCSD0_DAT_3, DA850_MMCSD0_CLK, DA850_MMCSD0_CMD,
    	DA850_GPIO3_12, DA850_GPIO3_13,
    	-1
    };
    
    static int da850_lcdk_mmc_get_ro(int index)
    {
    	return 0;
    }
    
    static int da850_lcdk_mmc_get_cd(int index)
    {
    	return !gpio_get_value(DA850_LCDK_MMCSD_CD_PIN);
    }
    
    static struct davinci_mmc_config da850_mmc_config = {
    	.get_ro		= da850_lcdk_mmc_get_ro,
    	.get_cd		= da850_lcdk_mmc_get_cd,
    	.wires		= 4,
    	.max_freq	= 50000000,
    	.caps		= MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED,
    	.version	= MMC_CTLR_VERSION_2,
    };
    
    static __init void omapl138_lcdk_mmc_init(void)
    {
    	int ret;
    
    	ret = davinci_cfg_reg_list(lcdk_mmcsd0_pins);
    	if (ret) {
    		pr_warning("%s: MMC/SD0 mux setup failed: %d\n",
    			__func__, ret);
    		return;
    	}
    
    	ret = gpio_request_one(DA850_LCDK_MMCSD_CD_PIN,
    			GPIOF_DIR_IN, "MMC CD");
    	if (ret < 0) {
    		pr_warning("%s: can not open GPIO %d\n",
    			__func__, DA850_LCDK_MMCSD_CD_PIN);
    		return;
    	}
    
    	ret = da8xx_register_mmcsd0(&da850_mmc_config);
    	if (ret) {
    		pr_warning("%s: MMC/SD0 registration failed: %d\n",
    			__func__, ret);
    		goto mmc_setup_mmcsd_fail;
    	}
    
    	return;
    
    mmc_setup_mmcsd_fail:
    	gpio_free(DA850_LCDK_MMCSD_CD_PIN);
    }
    
    static irqreturn_t omapl138_lcdk_usb_ocic_irq(int irq, void *dev_id);
    
    static const short da850_lcdk_usb11_pins[] = {
    	DA850_GPIO2_4, DA850_GPIO6_13,
    	-1
    };
    
    static struct da8xx_ohci_root_hub omapl138_lcdk_usb11_pdata = {
    	.type	= GPIO_BASED,
    	.method	= {
    		.gpio_method = {
    			.power_control_pin	= DA850_USB1_VBUS_PIN,
    			.over_current_indicator = DA850_USB1_OC_PIN,
    		},
    	},
    	.board_ocic_handler	= omapl138_lcdk_usb_ocic_irq,
    };
    
    static irqreturn_t omapl138_lcdk_usb_ocic_irq(int irq, void *handler)
    {
    	if (handler != NULL)
    		((da8xx_ocic_handler_t)handler)(&omapl138_lcdk_usb11_pdata, 1);
    	return IRQ_HANDLED;
    }
    
    /* VGA */
    static const short omapl138_lcdk_lcdc_pins[] = {
    	DA850_GPIO2_8, DA850_GPIO2_15,
    	-1
    };
    
    /* Backlight and power is for use with LCD expansion header only */
    static void da850_panel_power_ctrl(int val)
    {
    	/* lcd backlight */
    	gpio_set_value(DA850_LCD_BL_PIN, val);
    	/* lcd power */
    	gpio_set_value(DA850_LCD_PWR_PIN, val);
    }
    
    static int da850_lcd_hw_init(void)
    {
    	void __iomem *cfg_mstpri1_base;
    	void __iomem *cfg_mstpri2_base;
    	void __iomem *emifb;
    	void __iomem *myptr;
    	int status;
    	u32 val;
    
    	/*
    	 * Default master priorities in reg 0 are all lower by default than LCD
    	 * which is set below to 0. Hence don't need to change here.
    	 */
    
    	/* set EDMA30TC0 and TC1 to lower than LCDC (4 < 0) */
    	cfg_mstpri1_base = DA8XX_SYSCFG0_VIRT(DA8XX_MSTPRI1_REG);
    	val = __raw_readl(cfg_mstpri1_base);
    	val &= 0xFFFF00FF;
    	val |= 4 << 8;             /* 0-high, 7-low priority*/
    	val |= 4 << 12;            /* 0-high, 7-low priority*/
    	__raw_writel(val, cfg_mstpri1_base);
    
    	/*
    	 * Reconfigure the LCDC priority to the highest to ensure that
    	 * the throughput/latency requirements for the LCDC are met.
    	 */
    	cfg_mstpri2_base = DA8XX_SYSCFG0_VIRT(DA8XX_MSTPRI2_REG);
    
    	val = __raw_readl(cfg_mstpri2_base);
    	val &= 0x0fffffff;
    	__raw_writel(val, cfg_mstpri2_base);
    
    	/* set BPRIO */
    #define DA8XX_EMIF30_CONTROL_BASE               0xB0000000
    #define DA8XX_EMIF30_BPRIO_OFFSET               0x20
    #define DA8XX_EMIFB_VIRT(x)     (emifb + (x))
    	emifb = ioremap(DA8XX_EMIF30_CONTROL_BASE, SZ_4K);
    	myptr = DA8XX_EMIFB_VIRT(0x20);
    	__raw_writel(0x20, myptr);
    
    	status = gpio_request(DA850_LCD_BL_PIN, "lcd bl\n");
    	if (status < 0)
    		return status;
    
    	status = gpio_request(DA850_LCD_PWR_PIN, "lcd pwr\n");
    	if (status < 0) {
    		gpio_free(DA850_LCD_BL_PIN);
    		return status;
    	}
    
    	gpio_direction_output(DA850_LCD_BL_PIN, 0);
    	gpio_direction_output(DA850_LCD_PWR_PIN, 0);
    
    	/* Switch off panel power and backlight */
    	da850_panel_power_ctrl(0);
    
    	/* Switch on panel power and backlight */
    	da850_panel_power_ctrl(1);
    
    	return 0;
    }
    
    static void omapl138_lcdk_display_init(void)
    {
    	int ret;
    
    	ret = davinci_cfg_reg_list(da850_lcdcntl_pins);
    	if (ret)
    		pr_warn("omapl138_lcdk_init: lcdcntl mux setup failed:%d\n",
    				ret);
    
    	ret = davinci_cfg_reg_list(omapl138_lcdk_lcdc_pins);
    	if (ret)
    		pr_warn("omapl138_lcdk_init: evm specific lcd mux setup "
    				"failed: %d\n", ret);
    
    	da850_lcd_hw_init();
    
    	ret = da8xx_register_lcdc(&vga_monitor_pdata);
    	if (ret)
    		pr_warn("omapl138_lcdk_init: lcdc registration failed: %d\n",
    				ret);
    }
    
    static __init void omapl138_lcdk_usb_init(void)
    {
    	u32 cfgchip2;
    	int ret;
    
    	/* Setup the Ref. clock frequency for the LCDK at 24 MHz. */
    
    	cfgchip2 = __raw_readl(DA8XX_SYSCFG0_VIRT(DA8XX_CFGCHIP2_REG));
    	cfgchip2 &= ~CFGCHIP2_REFFREQ;
    	cfgchip2 |=  CFGCHIP2_REFFREQ_24MHZ;
    
    	/*
    	 * Select internal reference clock for USB 2.0 PHY
    	 * and use it as a clock source for USB 1.1 PHY
    	 * (this is the default setting anyway).
    	 */
    	cfgchip2 &= ~CFGCHIP2_USB1PHYCLKMUX;
    	cfgchip2 |=  CFGCHIP2_USB2PHYCLKMUX;
    
    	/*
    	 * We have to override VBUS/ID signals when MUSB is configured into the
    	 * host-only mode -- ID pin will float if no cable is connected, so the
    	 * controller won't be able to drive VBUS thinking that it's a B-device.
    	 * Otherwise, we want to use the OTG mode and enable VBUS comparators.
    	 */
    	cfgchip2 &= ~CFGCHIP2_OTGMODE;
    	cfgchip2 |=  CFGCHIP2_SESENDEN | CFGCHIP2_VBDTCTEN;
    
    	/*
    	 * TPS2065 switch @ 5V supplies 1 A (sustains 1.5 A),
    	 * with the power on to power good time of 3 ms.
    	 */
    	ret = da8xx_register_usb20(1000, 3);
    	if (ret)
    		pr_warn("%s: USB 2.0 registration failed: %d\n",
    				__func__, ret);
    
    	__raw_writel(cfgchip2, DA8XX_SYSCFG0_VIRT(DA8XX_CFGCHIP2_REG));
    
    	if (HAS_OHCI)
    		da8xx_board_usb_init(da850_lcdk_usb11_pins,
    				     &omapl138_lcdk_usb11_pdata);
    
    	return;
    }
    
    static struct davinci_uart_config omapl138_lcdk_uart_config __initdata = {
    	.enabled_uarts = 0x7,
    };
    
    /* I2C */
    static struct i2c_board_info __initdata omapl138_lcdk_i2c_devices[] = {
    	{
    		I2C_BOARD_INFO("tlv320aic3x", 0x18),
    	},
    };
    
    static struct i2c_gpio_platform_data da850_gpio_i2c_pdata = {
    	.sda_pin        = GPIO_TO_PIN(1, 4),
    	.scl_pin        = GPIO_TO_PIN(1, 5),
    	.udelay         = 2,                    /* 250 KHz */
    };
    
    static struct platform_device da850_gpio_i2c = {
    	.name           = "i2c-gpio",
    	.id             = 1,
    	.dev            = {
    		.platform_data  = &da850_gpio_i2c_pdata,
    	},
    };
    
    static void omapl138_lcdk_i2c_init(void)
    {
    	int ret;
    	ret = davinci_cfg_reg_list(da850_i2c0_pins);
    	if (ret)
    		pr_warn("omapl138_lcdk_init: i2c0 mux setup failed: %d\n",
    				ret);
    
    	platform_device_register(&da850_gpio_i2c);
    
    	if (ret)
    		pr_warn("omapl138_lcdk_init: i2c0 registration failed: %d\n",
    				ret);
    	i2c_register_board_info(1, omapl138_lcdk_i2c_devices,
    			ARRAY_SIZE(omapl138_lcdk_i2c_devices));
    }
    
    /* Set up OMAP-L138 LCDK low-level McASP driver */
    static u8 da850_iis_serializer_direction[] = {
    	INACTIVE_MODE,  INACTIVE_MODE,  INACTIVE_MODE,  INACTIVE_MODE,
    	INACTIVE_MODE,  INACTIVE_MODE,  INACTIVE_MODE,  INACTIVE_MODE,
    	INACTIVE_MODE,  INACTIVE_MODE,  INACTIVE_MODE,  INACTIVE_MODE,
    	INACTIVE_MODE,  TX_MODE,        RX_MODE,        INACTIVE_MODE,
    };
    
    static struct snd_platform_data omapl138_lcdk_snd_data = {
    	.tx_dma_offset  = 0x2000,
    	.rx_dma_offset  = 0x2000,
    	.op_mode        = DAVINCI_MCASP_IIS_MODE,
    	.num_serializer = ARRAY_SIZE(da850_iis_serializer_direction),
    	.tdm_slots      = 2,
    	.serial_dir     = da850_iis_serializer_direction,
    	.asp_chan_q     = EVENTQ_0,
    	.version        = MCASP_VERSION_2,
    	.txnumevt       = 1,
    	.rxnumevt       = 1,
    };
    
    static const short omapl138_lcdk_mcasp_pins[] __initconst = {
    	DA850_AHCLKX,   DA850_ACLKX,    DA850_AFSX,
    	DA850_AHCLKR,   DA850_ACLKR,    DA850_AFSR,     DA850_AMUTE,
    	DA850_AXR_13,   DA850_AXR_14,
    	-1
    };
    
    static void omapl138_lcdk_sound_init(void)
    {
    	int ret;
    	ret = davinci_cfg_reg_list(omapl138_lcdk_mcasp_pins);
    	if (ret)
    		pr_warn("omapl138_lcdk_init: mcasp mux setup failed: %d\n",
    				ret);
    
    	da8xx_register_mcasp(0, &omapl138_lcdk_snd_data);
    }
    
    static const short omapl138_lcdk_led_pin_mux[] __initconst = {
    	DA850_GPIO6_12,
    #if !HAS_OHCI
    	DA850_GPIO6_13,
    #endif
    	DA850_GPIO2_12,
    	DA850_GPIO0_9,
    	-1
    };
    
    static struct gpio_led gpio_leds[] = {
    	{
    		.active_low = 1,
    		.gpio = DA850_LCDK_USER_LED0,
    		.name = "user_led0",
    	},
    #if !HAS_OHCI
    	{
    		.active_low = 1,
    		.gpio   = DA850_LCDK_USER_LED1,
    		.name   = "user_led1",
    	},
    #endif
    	{
    		.active_low = 1,
    		.gpio = DA850_LCDK_USER_LED2,
    		.name = "user_led2",
    	},
    	{
    		.active_low = 1,
    		.gpio   = DA850_LCDK_USER_LED3,
    		.name   = "user_led3",
    	},
    };
    
    static struct gpio_led_platform_data gpio_led_info = {
    	.leds           = gpio_leds,
    	.num_leds       = ARRAY_SIZE(gpio_leds),
    };
    
    static struct platform_device leds_gpio = {
    	.name   = "leds-gpio",
    	.id     = -1,
    	.dev    = {
    		.platform_data  = &gpio_led_info,
    	},
    };
    
    static  __init void omapl138_lcdk_led_init(void)
    {
    	int err;
    
    	davinci_cfg_reg_list(omapl138_lcdk_led_pin_mux);
    	err = platform_device_register(&leds_gpio);
    	if (err)
    		pr_err("failed to register leds_gpio device\n");
    	return;
    };
    
    static const short omapl138_lcdk_keys_pin_mux[] __initconst = {
    #if !HAS_OHCI
    	DA850_GPIO2_4,
    #endif
    	DA850_GPIO2_5,
    	-1
    };
    
    static struct gpio_keys_button omapl138_lcdk_evm_keys[] = {
    #if !HAS_OHCI
    	{
    		.type                   = EV_KEY,
    		.active_low             = 1,
    		.wakeup                 = 0,
    		.debounce_interval      = DA850_LCDK_KEYS_DEBOUNCE_MS,
    		.code                   = KEY_F8,
    		.gpio                   = DA850_LCDK_USER_KEY0,
    		.desc                   = "pb1",
    	},
    #endif
    	{
    		.type                   = EV_KEY,
    		.active_low             = 1,
    		.wakeup                 = 0,
    		.debounce_interval      = DA850_LCDK_KEYS_DEBOUNCE_MS,
    		.code                   = KEY_F7,
    		.gpio                   = DA850_LCDK_USER_KEY1,
    		.desc                   = "pb2",
    	},
    };
    
    static struct gpio_keys_platform_data omapl138_lcdk_evm_keys_pdata = {
    	.buttons = omapl138_lcdk_evm_keys,
    	.nbuttons = ARRAY_SIZE(omapl138_lcdk_evm_keys),
    	.poll_interval = DA850_LCDK_GPIO_KEYS_POLL_MS,
    };
    
    static struct platform_device omapl138_lcdk_evm_keys_device = {
    	.name = "gpio-keys-polled",
    	.id = 0,
    	.dev = {
    		.platform_data = &omapl138_lcdk_evm_keys_pdata
    	},
    };
    
    static  __init void omapl138_lcdk_keys_init(void)
    {
    	int err;
    
    	davinci_cfg_reg_list(omapl138_lcdk_keys_pin_mux);
    	err = platform_device_register(&omapl138_lcdk_evm_keys_device);
    	if (err)
    		pr_err("failed to register omapl138_lcdk_evm_keys_device\n");
    	return;
    };
    
    static struct davinci_pm_config da850_pm_pdata = {
    	.sleepcount = 128,
    };
    
    static struct platform_device da850_pm_device = {
    	.name           = "pm-davinci",
    	.dev = {
    		.platform_data  = &da850_pm_pdata,
    	},
    	.id             = -1,
    };
    
    static __init void omapl138_lcdk_init(void)
    {
    	int ret;
    
    	davinci_serial_init(&omapl138_lcdk_uart_config);
    
    	/*
    	 * shut down uart 0 and 2; they are not used on this board and
    	 * accessing them causes endless "too much work in irq53" messages
    	 * with arago fs
    	 */
    
    /* Titus Debug : Disable UART0 & UART2 */
    
    	__raw_writel(0, IO_ADDRESS(DA8XX_UART2_BASE) + 0x30);
    	__raw_writel(0, IO_ADDRESS(DA8XX_UART0_BASE) + 0x30);
    
    	omapl138_lcdk_config_emac();
    
    	ret = da850_register_edma(da850_edma_rsv);
    	if (ret)
    		pr_warning("%s: EDMA registration failed: %d\n",
    			__func__, ret);
    
    	omapl138_lcdk_mmc_init();
    
    	omapl138_lcdk_usb_init();
    
    	ret = da8xx_register_watchdog();
    	if (ret)
    		pr_warning("omapl138_lcdk_init: "
    			"watchdog registration failed: %d\n",
    			ret);
    
    	ret = da8xx_register_rtc();
    	if (ret)
    		pr_warning("omapl138_lcdk_init: rtc setup failed: %d\n", ret);
    
    	omapl138_lcdk_i2c_init();
    	omapl138_lcdk_sound_init();
    
    	ret = da850_register_sata(LCDKBOARD_SATA_REFCLKPN_RATE);
    	if (ret)
    		pr_warning("omapl138_lcdk_init: sata registration failed: %d\n",
    				ret);
    
    	ret = da850_register_pm(&da850_pm_device);
    	if (ret)
    		pr_warning("da850_evm_init: suspend registration failed: %d\n",
    				ret);
    
    	omapl138_lcdk_led_init();
    	omapl138_lcdk_keys_init();
    	omapl138_lcdk_nand_init();
    	omapl138_lcdk_display_init();
    
    /* Titus Debug : Enable UART1 PM Register PWREMU_MGMT;  Check out the SPUFM6.pdf at page no : 38 */
    
    	__raw_writel( (0x01 | (0x03 << 13)), DA8XX_UART1_BASE + 0x30 ); 
    
    }
    
    #ifdef CONFIG_SERIAL_8250_CONSOLE
    static int __init omapl138_lcdk_console_init(void)
    {
    	if (!machine_is_omapl138_lcdkboard())
    		return 0;
    
    	return add_preferred_console("ttyS", 2, "115200");
    }
    console_initcall(omapl138_lcdk_console_init);
    #endif
    
    static void __init omapl138_lcdk_map_io(void)
    {
    	da850_init();
    }
    
    MACHINE_START(OMAPL138_LCDKBOARD, "AM18x/OMAP-L138 lcdk board")
    	.atag_offset	= 0x100,
    	.map_io		= omapl138_lcdk_map_io,
    	.init_irq	= cp_intc_init,
    	.timer		= &davinci_timer,
    	.init_machine	= omapl138_lcdk_init,
    	.dma_zone_size	= SZ_128M,
    	.restart	= da8xx_restart,
    MACHINE_END
    

  • Hi,

    It doesn't work.

    It's normal to keep "return add_preferred_console("ttyS", 2, "115200");"?

    thanks

  • Hi Sebastien,

    I'm sorry, I forgot to change that you mentioned.

    It's normal to keep "return add_preferred_console("ttyS", 2, "115200");"?

    Yes, Changes required.

    return add_preferred_console("ttyS", 1, "115200");

  • I tried with changes but nothing more.

    Here my environment variable :

    OMAP-L138 LCDK initialization passed!
    Booting TI User Boot Loader
            UBL Version: 1.65
            UBL Flashtype: NAND
    Starting NAND Copy...
    Valid magicnum, 0x55424CBB, found in block 0x00000006.
       DONE
    Jumping to entry point at 0xC1080000.
    NAND:  128 MiB
    MMC:   davinci: 0
    Bad block table found at page 65472, version 0x01
    Bad block table found at page 65408, version 0x01
    In:    serial
    Out:   serial
    Err:   serial
    Net:   No ETH PHY detected!!!
    Error: Ethernet init failed!
    Board Net Initialization Failed
    DaVinci-EMAC
    Hit any key to stop autoboot:  0
    U-Boot > pri
    baudrate=115200
    bootargs=console=ttyS1,115200n8 root=/dev/mmcblk0p2 rw rootwait ip=off
    bootcmd=bootm 0xc0700000
    bootdelay=3
    bootfile=uImage
    ethact=DaVinci-EMAC
    ethaddr=00:00:88:fe:fa:c3
    filesize=1F9030
    stderr=serial
    stdin=serial
    stdout=serial
    ver=U-Boot 2012.04.01 (Jun 09 2014 - 14:18:59)
    verify=no

  • Hi,

    Ok I do it...

    I have another question; building kernel add 64 bytes information into uImage.

    Im my logs I have :

    ------------------------------------

    U-Boot > bootm c0700000
    ## Booting kernel from Legacy Image at c0700000 ...
       Image Name:   Linux-3.3.0
       Image Type:   ARM Linux Kernel Image (uncompressed)
       Data Size:    2068464 Bytes = 2 MiB
       Load Address: c0008000
       Entry Point:  c0008000
       Loading Kernel Image ... OK
    OK

    Starting kernel ...

    ------------------------------------

    It'll be not necessary to change these address c0008000 to c0708000? if yes how to do it.

    I tried to download kernel to c0000000 and apply command "bootm c0000000". But it doesn't work!

    Thanks

  • Hi,

    It'll be not necessary to change these address c0008000 to c0708000? if yes how to do it.

    No, You don't need to change it.

  • At starting, when bootloader of kernel copies image kernel from 0xc0700040 to C0008000; datas from 0xc0008000 to 0xc000c1bf are the same like image downloaded but after datas are differents.

    Could that be the problem? or is it the kernel which is unziped?

    Thanks

  • Here's a rough idea of what I think is happening:

    1) Compile kernel source to "Image". Not sure if this has the mini-bootloader.

    2) Compress "Image" to "zImage". Has the mini-bootloader.

    3) Add 64 byte u-boot header to "zImage" to create "uImage". Header contains entry point of c0008000. As far as u-boot is concerned this is an uncompressed image.

    4) Boot up.

    5) Use "loady" to download "uImage" into DRAM at 0xc0700000. This memory is usually initialized from SPI Flash or MMC, etc.

    6a) Invoke "bootm c0700000".

    6b) u-Boot Header is parsed at c07000000. If env var "verify" is set then data is check for CRC.

    6c) Use the header value of c0008000 as a destination in copying zImage from 0xc0700000+64 to 0xc0008000. The 64 byte offset is the u-boot header.

    6d) Jump to 0xc0008000

    7a) Kernel mini-bootloader runs. Config of serial port is bit blurry to me here. In early kernels, I remember I had to have special function to dump output directly into the UART. Later kernels seem share the kernel serial port driver with the miin-bootloader.

    7b)Print "Uncompressing Linux."

    7c) The compressed kernel is immediately after the mini-bootloader. The mini-bootloader will uncompress the image to memory immediately after the compressed kernel.
    mini-bootloader/compressed kernel/uncompressed kernel

    7d) Print "done, booting the kernel.". uncompressed kernel.

    8) Kernel boots.

  • Hi,

    Thank you for your explanations.

    It seems that all process is running but I can't see it because I don't able to change UART2 console to UART1 and I don't understand why CRC is bad.

    For UART it seems to me the problem is into mini-bootloader for accessing UART1

    Best regards

    Sébastien

  • The CRC failure is worrisome. Simple test in u-boot

    mtest c0700000 c0A00000

    The uImage file should be okay is unless you transfered somewhere along the line with ftp ascii mode or kermit text mode.

  • Hi,

    I understood why I had a bad CRC : my uImage file was corrupted by my failure USB key.

    Now it remains to resolve why I don't have anymore logs after messages

    ------------------------------------------------------------------------------

    ## Booting kernel from Legacy Image at c0700000 ...
       Image Name:   Linux-3.3.0
       Image Type:   ARM Linux Kernel Image (uncompressed)
       Data Size:    2112248 Bytes = 2 MiB
       Load Address: c0008000
       Entry Point:  c0008000
       Verifying Checksum ... OK
       Loading Kernel Image ... OK
    OK

    Starting kernel ...

    Uncompressing Linux... done, booting the kernel."

    <nothing, no output>

    ------------------------------------------------------------------------------

    I tried to change kernel configuration as you had said in the past and too change uboot arguments into bootargs (console=uart,io,0xe1020400,115200n8 ...) but nothing is working!

    Could you help me please?

    Thanks

    Sébastien

  • In kernel configuration I have item "Kernel low-level debugging por (No low-level debugging UART)"

    Why can I not choose an uart number?

    Why don't these define "DEBUG_DAVINCI_DAXX_UARTx" exist?

    Seb

  • Hi Sebastien,

    Please enable the CRC check in u-boot if disabled.

    Try to enable CRC and check for the uImage corruption.

    u-boot# setenv verify yes

  • Hi,

    CRC is enabled and uImage is good.

    Why don't I have anymore logs messages after :

    ------------------------------------------------------------------------------

    ## Booting kernel from Legacy Image at c0700000 ...
       Image Name:   Linux-3.3.0
       Image Type:   ARM Linux Kernel Image (uncompressed)
       Data Size:    2112248 Bytes = 2 MiB
       Load Address: c0008000
       Entry Point:  c0008000
       Verifying Checksum ... OK
       Loading Kernel Image ... OK
    OK

    Starting kernel ...

    Uncompressing Linux... done, booting the kernel."

    <nothing, no output>

    ------------------------------------------------------------------------------

    I tried to change kernel configuration as you had said in the past and too change uboot arguments into bootargs (console=uart,io,0xe1020400,115200n8 ...) but nothing is working!

    And then, in kernel configuration I have item "Kernel low-level debugging por (No low-level debugging UART)"

    Why can I not choose an uart number?

    Why don't these define "DEBUG_DAVINCI_DAXX_UARTx" exist?

    Could you help me please?


    I use mcsdk_1_01_00_02 with linux-3.3-psp03.22.00.06.sdk with architecture TI Davinci (on Custom board based to omapl138-lcdk board)

    Thanks

    Sébastien

  • I found what it missed to get kernel logs messages  onto UART1 with omapl138_lcdk :

    We have to add this :

      ret = davinci_cfg_reg_list(da850_uart1_pins);
        if (ret)
            pr_warning("da850_evm_init: UART 1 mux setup failed:"
                            " %d\n", ret);

    before

    davinci_serial_init(&omapl138_lcdk_uart_config) function

    into omapl138_lcdk_init function()

    into board-omapl138-lcdk.c

    See that :

    /*
     * TI's OMAP-L138 LCDK Development Board
     *
     * Initial code: Syed Mohammed Khasim
     *
     * Copyright (C) 2009 Texas Instruments Incorporated - http://www.ti.com
     *
     * This file is licensed under the terms of the GNU General Public License
     * version 2. This program is licensed "as is" without any warranty of
     * any kind, whether express or implied.
     */
    #include <linux/kernel.h>
    #include <linux/init.h>
    #include <linux/console.h>
    #include <linux/gpio.h>
    #include <linux/i2c.h>
    #include <linux/i2c-gpio.h>
    #include <linux/leds.h>
    #include <linux/gpio_keys.h>
    #include <linux/input.h>
    #include <linux/platform_device.h>
    #include <linux/mtd/mtd.h>
    #include <linux/mtd/nand.h>
    #include <linux/mtd/partitions.h>
    #include <linux/mfd/davinci_aemif.h>
    
    #include <asm/mach-types.h>
    #include <asm/mach/arch.h>
    
    #include <mach/cp_intc.h>
    #include <mach/da8xx.h>
    #include <mach/mux.h>
    #include <mach/nand.h>
    
    #define LCDKBOARD_PHY_ID		"davinci_mdio-0:07"
    #define DA850_LCDK_MMCSD_CD_PIN		GPIO_TO_PIN(4, 0)
    
    #define DA850_USB1_VBUS_PIN		GPIO_TO_PIN(2, 4)
    #define DA850_USB1_OC_PIN		GPIO_TO_PIN(6, 13)
    
    #define LCDKBOARD_SATA_REFCLKPN_RATE   (100 * 1000 * 1000)
    
    #define DA850_LCDK_USER_LED0		GPIO_TO_PIN(6, 12)
    #define DA850_LCDK_USER_LED1		GPIO_TO_PIN(6, 13)
    #define DA850_LCDK_USER_LED2		GPIO_TO_PIN(2, 12)
    #define DA850_LCDK_USER_LED3		GPIO_TO_PIN(0, 9)
    
    #define	DA850_LCDK_USER_KEY0            GPIO_TO_PIN(2, 4)
    #define	DA850_LCDK_USER_KEY1            GPIO_TO_PIN(2, 5)
    
    #if defined(CONFIG_USB_OHCI_HCD)
    #define HAS_OHCI               1
    #else
    #define HAS_OHCI               0
    #endif
    
    #define        DA850_LCDK_KEYS_DEBOUNCE_MS     10
    #define        DA850_LCDK_GPIO_KEYS_POLL_MS    200
    
    #define DA850_LCD_PWR_PIN              GPIO_TO_PIN(2, 8)
    #define DA850_LCD_BL_PIN               GPIO_TO_PIN(2, 15)
    
    #if defined(CONFIG_MTD_NAND_DAVINCI) || \
    	defined(CONFIG_MTD_NAND_DAVINCI_MODULE)
    struct mtd_partition omapl138_lcdk_nandflash_partition[] = {
    	{
    		.name           = "u-boot env",
    		.offset         = 0,
    		.size           = SZ_128K,
    		.mask_flags     = MTD_WRITEABLE,
    	},
    	{
    		.name           = "u-boot",
    		.offset         = MTDPART_OFS_APPEND,
    		.size           = SZ_512K,
    		.mask_flags     = MTD_WRITEABLE,
    	},
    	{
    		.name           = "kernel",
    		.offset         = MTDPART_OFS_APPEND,
    		.size           = SZ_2M,
    		.mask_flags     = 0,
    	},
    	{
    		.name           = "filesystem",
    		.offset         = MTDPART_OFS_APPEND,
    		.size           = MTDPART_SIZ_FULL,
    		.mask_flags     = 0,
    	},
    };
    
    static struct davinci_nand_pdata omapl138_lcdk_nandflash_data = {
    	.parts          = omapl138_lcdk_nandflash_partition,
    	.nr_parts       = ARRAY_SIZE(omapl138_lcdk_nandflash_partition),
    	.ecc_mode       = NAND_ECC_HW,
    	.options        = NAND_BUSWIDTH_16,
    	.ecc_bits       = 1, /* 4 bit mode is not
    			      * supported with 16 bit NAND */
    	.bbt_options    = NAND_BBT_USE_FLASH,
    };
    
    static const short omapl138_lcdk_nand_pins[] = {
    	DA850_EMA_D_0, DA850_EMA_D_1, DA850_EMA_D_2, DA850_EMA_D_3,
    	DA850_EMA_D_4, DA850_EMA_D_5, DA850_EMA_D_6, DA850_EMA_D_7,
    	DA850_EMA_D_8, DA850_EMA_D_9, DA850_EMA_D_10, DA850_EMA_D_11,
    	DA850_EMA_D_12, DA850_EMA_D_13, DA850_EMA_D_14, DA850_EMA_D_15,
    	DA850_EMA_A_1, DA850_EMA_A_2, DA850_NEMA_CS_3, DA850_NEMA_CS_4,
    	DA850_NEMA_WE, DA850_NEMA_OE,
    	-1
    };
    
    static struct resource omapl138_lcdk_nandflash_resource[] = {
    	{
    		.start  = DA8XX_AEMIF_CS3_BASE,
    		.end    = DA8XX_AEMIF_CS3_BASE + SZ_512K + 2 * SZ_1K - 1,
    		.flags  = IORESOURCE_MEM,
    	},
    	{
    		.start  = DA8XX_AEMIF_CTL_BASE,
    		.end    = DA8XX_AEMIF_CTL_BASE + SZ_32K - 1,
    		.flags  = IORESOURCE_MEM,
    	},
    };
    
    static struct platform_device omapl138_lcdk_nandflash_device = {
    	.name           = "davinci_nand",
    	.id             = 1,
    	.dev            = {
    		.platform_data  = &omapl138_lcdk_nandflash_data,
    	},
    	.resource       = omapl138_lcdk_nandflash_resource,
    	.num_resources  = ARRAY_SIZE(omapl138_lcdk_nandflash_resource),
    };
    
    static __init void omapl138_lcdk_nand_init(void)
    {
    	int ret;
    
    	ret = davinci_cfg_reg_list(omapl138_lcdk_nand_pins);
    	if (ret) {
    		pr_warn("da850_lcdk_init:"
    				"nand mux setup failed: %d\n", ret);
    		return;
    	}
    	platform_device_register(&omapl138_lcdk_nandflash_device);
    }
    #else
    static void omapl138_lcdk_nand_init(void) { }
    #endif
    
    
    static short omapl138_lcdk_mii_pins[] __initdata = {
    	DA850_MII_TXEN, DA850_MII_TXCLK, DA850_MII_COL, DA850_MII_TXD_3,
    	DA850_MII_TXD_2, DA850_MII_TXD_1, DA850_MII_TXD_0, DA850_MII_RXER,
    	DA850_MII_CRS, DA850_MII_RXCLK, DA850_MII_RXDV, DA850_MII_RXD_3,
    	DA850_MII_RXD_2, DA850_MII_RXD_1, DA850_MII_RXD_0, DA850_MDIO_CLK,
    	DA850_MDIO_D,
    	-1
    };
    
    static __init void omapl138_lcdk_config_emac(void)
    {
    	void __iomem *cfgchip3 = DA8XX_SYSCFG0_VIRT(DA8XX_CFGCHIP3_REG);
    	int ret;
    	u32 val;
    	struct davinci_soc_info *soc_info = &davinci_soc_info;
    
    	val = __raw_readl(cfgchip3);
    	val &= ~BIT(8);
    	ret = davinci_cfg_reg_list(omapl138_lcdk_mii_pins);
    	if (ret) {
    		pr_warning("%s: cpgmac/mii mux setup failed: %d\n",
    			__func__, ret);
    		return;
    	}
    
    	/* configure the CFGCHIP3 register for MII */
    	__raw_writel(val, cfgchip3);
    	pr_info("EMAC: MII PHY configured\n");
    
    	soc_info->emac_pdata->phy_id = LCDKBOARD_PHY_ID;
    
    	ret = da8xx_register_emac();
    	if (ret)
    		pr_warning("%s: emac registration failed: %d\n",
    			__func__, ret);
    }
    
    /*
     * The following EDMA channels/slots are not being used by drivers (for
     * example: Timer, GPIO, UART events etc) on da850/omap-l138 LCDK EVM,
     * hence they are being reserved for codecs on the DSP side.
     */
    static const s16 da850_dma0_rsv_chans[][2] = {
    	/* (offset, number) */
    	{ 8,  6},
    	{24,  4},
    	{30,  2},
    	{-1, -1}
    };
    
    static const s16 da850_dma0_rsv_slots[][2] = {
    	/* (offset, number) */
    	{ 8,  6},
    	{24,  4},
    	{30, 50},
    	{-1, -1}
    };
    
    static const s16 da850_dma1_rsv_chans[][2] = {
    	/* (offset, number) */
    	{ 0, 28},
    	{30,  2},
    	{-1, -1}
    };
    
    static const s16 da850_dma1_rsv_slots[][2] = {
    	/* (offset, number) */
    	{ 0, 28},
    	{30, 90},
    	{-1, -1}
    };
    
    static struct edma_rsv_info da850_edma_cc0_rsv = {
    	.rsv_chans	= da850_dma0_rsv_chans,
    	.rsv_slots	= da850_dma0_rsv_slots,
    };
    
    static struct edma_rsv_info da850_edma_cc1_rsv = {
    	.rsv_chans	= da850_dma1_rsv_chans,
    	.rsv_slots	= da850_dma1_rsv_slots,
    };
    
    static struct edma_rsv_info *da850_edma_rsv[2] = {
    	&da850_edma_cc0_rsv,
    	&da850_edma_cc1_rsv,
    };
    
    static const short lcdk_mmcsd0_pins[] = {
    	DA850_MMCSD0_DAT_0, DA850_MMCSD0_DAT_1, DA850_MMCSD0_DAT_2,
    	DA850_MMCSD0_DAT_3, DA850_MMCSD0_CLK, DA850_MMCSD0_CMD,
    	DA850_GPIO3_12, DA850_GPIO3_13,
    	-1
    };
    
    static int da850_lcdk_mmc_get_ro(int index)
    {
    	return 0;
    }
    
    static int da850_lcdk_mmc_get_cd(int index)
    {
    	return !gpio_get_value(DA850_LCDK_MMCSD_CD_PIN);
    }
    
    static struct davinci_mmc_config da850_mmc_config = {
    	.get_ro		= da850_lcdk_mmc_get_ro,
    	.get_cd		= da850_lcdk_mmc_get_cd,
    	.wires		= 4,
    	.max_freq	= 50000000,
    	.caps		= MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED,
    	.version	= MMC_CTLR_VERSION_2,
    };
    
    static __init void omapl138_lcdk_mmc_init(void)
    {
    	int ret;
    
    	ret = davinci_cfg_reg_list(lcdk_mmcsd0_pins);
    	if (ret) {
    		pr_warning("%s: MMC/SD0 mux setup failed: %d\n",
    			__func__, ret);
    		return;
    	}
    
    	ret = gpio_request_one(DA850_LCDK_MMCSD_CD_PIN,
    			GPIOF_DIR_IN, "MMC CD");
    	if (ret < 0) {
    		pr_warning("%s: can not open GPIO %d\n",
    			__func__, DA850_LCDK_MMCSD_CD_PIN);
    		return;
    	}
    
    	ret = da8xx_register_mmcsd0(&da850_mmc_config);
    	if (ret) {
    		pr_warning("%s: MMC/SD0 registration failed: %d\n",
    			__func__, ret);
    		goto mmc_setup_mmcsd_fail;
    	}
    
    	return;
    
    mmc_setup_mmcsd_fail:
    	gpio_free(DA850_LCDK_MMCSD_CD_PIN);
    }
    
    static irqreturn_t omapl138_lcdk_usb_ocic_irq(int irq, void *dev_id);
    
    static const short da850_lcdk_usb11_pins[] = {
    	DA850_GPIO2_4, DA850_GPIO6_13,
    	-1
    };
    
    static struct da8xx_ohci_root_hub omapl138_lcdk_usb11_pdata = {
    	.type	= GPIO_BASED,
    	.method	= {
    		.gpio_method = {
    			.power_control_pin	= DA850_USB1_VBUS_PIN,
    			.over_current_indicator = DA850_USB1_OC_PIN,
    		},
    	},
    	.board_ocic_handler	= omapl138_lcdk_usb_ocic_irq,
    };
    
    static irqreturn_t omapl138_lcdk_usb_ocic_irq(int irq, void *handler)
    {
    	if (handler != NULL)
    		((da8xx_ocic_handler_t)handler)(&omapl138_lcdk_usb11_pdata, 1);
    	return IRQ_HANDLED;
    }
    
    /* VGA */
    static const short omapl138_lcdk_lcdc_pins[] = {
    	DA850_GPIO2_8, DA850_GPIO2_15,
    	-1
    };
    
    /* Backlight and power is for use with LCD expansion header only */
    static void da850_panel_power_ctrl(int val)
    {
    	/* lcd backlight */
    	gpio_set_value(DA850_LCD_BL_PIN, val);
    	/* lcd power */
    	gpio_set_value(DA850_LCD_PWR_PIN, val);
    }
    
    static int da850_lcd_hw_init(void)
    {
    	void __iomem *cfg_mstpri1_base;
    	void __iomem *cfg_mstpri2_base;
    	void __iomem *emifb;
    	void __iomem *myptr;
    	int status;
    	u32 val;
    
    	/*
    	 * Default master priorities in reg 0 are all lower by default than LCD
    	 * which is set below to 0. Hence don't need to change here.
    	 */
    
    	/* set EDMA30TC0 and TC1 to lower than LCDC (4 < 0) */
    	cfg_mstpri1_base = DA8XX_SYSCFG0_VIRT(DA8XX_MSTPRI1_REG);
    	val = __raw_readl(cfg_mstpri1_base);
    	val &= 0xFFFF00FF;
    	val |= 4 << 8;             /* 0-high, 7-low priority*/
    	val |= 4 << 12;            /* 0-high, 7-low priority*/
    	__raw_writel(val, cfg_mstpri1_base);
    
    	/*
    	 * Reconfigure the LCDC priority to the highest to ensure that
    	 * the throughput/latency requirements for the LCDC are met.
    	 */
    	cfg_mstpri2_base = DA8XX_SYSCFG0_VIRT(DA8XX_MSTPRI2_REG);
    
    	val = __raw_readl(cfg_mstpri2_base);
    	val &= 0x0fffffff;
    	__raw_writel(val, cfg_mstpri2_base);
    
    	/* set BPRIO */
    #define DA8XX_EMIF30_CONTROL_BASE               0xB0000000
    #define DA8XX_EMIF30_BPRIO_OFFSET               0x20
    #define DA8XX_EMIFB_VIRT(x)     (emifb + (x))
    	emifb = ioremap(DA8XX_EMIF30_CONTROL_BASE, SZ_4K);
    	myptr = DA8XX_EMIFB_VIRT(0x20);
    	__raw_writel(0x20, myptr);
    
    	status = gpio_request(DA850_LCD_BL_PIN, "lcd bl\n");
    	if (status < 0)
    		return status;
    
    	status = gpio_request(DA850_LCD_PWR_PIN, "lcd pwr\n");
    	if (status < 0) {
    		gpio_free(DA850_LCD_BL_PIN);
    		return status;
    	}
    
    	gpio_direction_output(DA850_LCD_BL_PIN, 0);
    	gpio_direction_output(DA850_LCD_PWR_PIN, 0);
    
    	/* Switch off panel power and backlight */
    	da850_panel_power_ctrl(0);
    
    	/* Switch on panel power and backlight */
    	da850_panel_power_ctrl(1);
    
    	return 0;
    }
    
    static void omapl138_lcdk_display_init(void)
    {
    	int ret;
    
    	ret = davinci_cfg_reg_list(da850_lcdcntl_pins);
    	if (ret)
    		pr_warn("omapl138_lcdk_init: lcdcntl mux setup failed:%d\n",
    				ret);
    
    	ret = davinci_cfg_reg_list(omapl138_lcdk_lcdc_pins);
    	if (ret)
    		pr_warn("omapl138_lcdk_init: evm specific lcd mux setup "
    				"failed: %d\n", ret);
    
    	da850_lcd_hw_init();
    
    	ret = da8xx_register_lcdc(&vga_monitor_pdata);
    	if (ret)
    		pr_warn("omapl138_lcdk_init: lcdc registration failed: %d\n",
    				ret);
    }
    
    static __init void omapl138_lcdk_usb_init(void)
    {
    	u32 cfgchip2;
    	int ret;
    
    	/* Setup the Ref. clock frequency for the LCDK at 24 MHz. */
    
    	cfgchip2 = __raw_readl(DA8XX_SYSCFG0_VIRT(DA8XX_CFGCHIP2_REG));
    	cfgchip2 &= ~CFGCHIP2_REFFREQ;
    	cfgchip2 |=  CFGCHIP2_REFFREQ_24MHZ;
    
    	/*
    	 * Select internal reference clock for USB 2.0 PHY
    	 * and use it as a clock source for USB 1.1 PHY
    	 * (this is the default setting anyway).
    	 */
    	cfgchip2 &= ~CFGCHIP2_USB1PHYCLKMUX;
    	cfgchip2 |=  CFGCHIP2_USB2PHYCLKMUX;
    
    	/*
    	 * We have to override VBUS/ID signals when MUSB is configured into the
    	 * host-only mode -- ID pin will float if no cable is connected, so the
    	 * controller won't be able to drive VBUS thinking that it's a B-device.
    	 * Otherwise, we want to use the OTG mode and enable VBUS comparators.
    	 */
    	cfgchip2 &= ~CFGCHIP2_OTGMODE;
    	cfgchip2 |=  CFGCHIP2_SESENDEN | CFGCHIP2_VBDTCTEN;
    
    	/*
    	 * TPS2065 switch @ 5V supplies 1 A (sustains 1.5 A),
    	 * with the power on to power good time of 3 ms.
    	 */
    	ret = da8xx_register_usb20(1000, 3);
    	if (ret)
    		pr_warn("%s: USB 2.0 registration failed: %d\n",
    				__func__, ret);
    
    	__raw_writel(cfgchip2, DA8XX_SYSCFG0_VIRT(DA8XX_CFGCHIP2_REG));
    
    	if (HAS_OHCI)
    		da8xx_board_usb_init(da850_lcdk_usb11_pins,
    				     &omapl138_lcdk_usb11_pdata);
    
    	return;
    }
    
    static struct davinci_uart_config omapl138_lcdk_uart_config __initdata = {
    	.enabled_uarts = 0x7,
    };
    
    /* I2C */
    static struct i2c_board_info __initdata omapl138_lcdk_i2c_devices[] = {
    	{
    		I2C_BOARD_INFO("tlv320aic3x", 0x18),
    	},
    };
    
    static struct i2c_gpio_platform_data da850_gpio_i2c_pdata = {
    	.sda_pin        = GPIO_TO_PIN(1, 4),
    	.scl_pin        = GPIO_TO_PIN(1, 5),
    	.udelay         = 2,                    /* 250 KHz */
    };
    
    static struct platform_device da850_gpio_i2c = {
    	.name           = "i2c-gpio",
    	.id             = 1,
    	.dev            = {
    		.platform_data  = &da850_gpio_i2c_pdata,
    	},
    };
    
    static void omapl138_lcdk_i2c_init(void)
    {
    	int ret;
    	ret = davinci_cfg_reg_list(da850_i2c0_pins);
    	if (ret)
    		pr_warn("omapl138_lcdk_init: i2c0 mux setup failed: %d\n",
    				ret);
    
    	platform_device_register(&da850_gpio_i2c);
    
    	if (ret)
    		pr_warn("omapl138_lcdk_init: i2c0 registration failed: %d\n",
    				ret);
    	i2c_register_board_info(1, omapl138_lcdk_i2c_devices,
    			ARRAY_SIZE(omapl138_lcdk_i2c_devices));
    }
    
    /* Set up OMAP-L138 LCDK low-level McASP driver */
    static u8 da850_iis_serializer_direction[] = {
    	INACTIVE_MODE,  INACTIVE_MODE,  INACTIVE_MODE,  INACTIVE_MODE,
    	INACTIVE_MODE,  INACTIVE_MODE,  INACTIVE_MODE,  INACTIVE_MODE,
    	INACTIVE_MODE,  INACTIVE_MODE,  INACTIVE_MODE,  INACTIVE_MODE,
    	INACTIVE_MODE,  TX_MODE,        RX_MODE,        INACTIVE_MODE,
    };
    
    static struct snd_platform_data omapl138_lcdk_snd_data = {
    	.tx_dma_offset  = 0x2000,
    	.rx_dma_offset  = 0x2000,
    	.op_mode        = DAVINCI_MCASP_IIS_MODE,
    	.num_serializer = ARRAY_SIZE(da850_iis_serializer_direction),
    	.tdm_slots      = 2,
    	.serial_dir     = da850_iis_serializer_direction,
    	.asp_chan_q     = EVENTQ_0,
    	.version        = MCASP_VERSION_2,
    	.txnumevt       = 1,
    	.rxnumevt       = 1,
    };
    
    static const short omapl138_lcdk_mcasp_pins[] __initconst = {
    	DA850_AHCLKX,   DA850_ACLKX,    DA850_AFSX,
    	DA850_AHCLKR,   DA850_ACLKR,    DA850_AFSR,     DA850_AMUTE,
    	DA850_AXR_13,   DA850_AXR_14,
    	-1
    };
    
    static void omapl138_lcdk_sound_init(void)
    {
    	int ret;
    	ret = davinci_cfg_reg_list(omapl138_lcdk_mcasp_pins);
    	if (ret)
    		pr_warn("omapl138_lcdk_init: mcasp mux setup failed: %d\n",
    				ret);
    
    	da8xx_register_mcasp(0, &omapl138_lcdk_snd_data);
    }
    
    static const short omapl138_lcdk_led_pin_mux[] __initconst = {
    	DA850_GPIO6_12,
    #if !HAS_OHCI
    	DA850_GPIO6_13,
    #endif
    	DA850_GPIO2_12,
    	DA850_GPIO0_9,
    	-1
    };
    
    static struct gpio_led gpio_leds[] = {
    	{
    		.active_low = 1,
    		.gpio = DA850_LCDK_USER_LED0,
    		.name = "user_led0",
    	},
    #if !HAS_OHCI
    	{
    		.active_low = 1,
    		.gpio   = DA850_LCDK_USER_LED1,
    		.name   = "user_led1",
    	},
    #endif
    	{
    		.active_low = 1,
    		.gpio = DA850_LCDK_USER_LED2,
    		.name = "user_led2",
    	},
    	{
    		.active_low = 1,
    		.gpio   = DA850_LCDK_USER_LED3,
    		.name   = "user_led3",
    	},
    };
    
    static struct gpio_led_platform_data gpio_led_info = {
    	.leds           = gpio_leds,
    	.num_leds       = ARRAY_SIZE(gpio_leds),
    };
    
    static struct platform_device leds_gpio = {
    	.name   = "leds-gpio",
    	.id     = -1,
    	.dev    = {
    		.platform_data  = &gpio_led_info,
    	},
    };
    
    static  __init void omapl138_lcdk_led_init(void)
    {
    	int err;
    
    	davinci_cfg_reg_list(omapl138_lcdk_led_pin_mux);
    	err = platform_device_register(&leds_gpio);
    	if (err)
    		pr_err("failed to register leds_gpio device\n");
    	return;
    };
    
    static const short omapl138_lcdk_keys_pin_mux[] __initconst = {
    #if !HAS_OHCI
    	DA850_GPIO2_4,
    #endif
    	DA850_GPIO2_5,
    	-1
    };
    
    static struct gpio_keys_button omapl138_lcdk_evm_keys[] = {
    #if !HAS_OHCI
    	{
    		.type                   = EV_KEY,
    		.active_low             = 1,
    		.wakeup                 = 0,
    		.debounce_interval      = DA850_LCDK_KEYS_DEBOUNCE_MS,
    		.code                   = KEY_F8,
    		.gpio                   = DA850_LCDK_USER_KEY0,
    		.desc                   = "pb1",
    	},
    #endif
    	{
    		.type                   = EV_KEY,
    		.active_low             = 1,
    		.wakeup                 = 0,
    		.debounce_interval      = DA850_LCDK_KEYS_DEBOUNCE_MS,
    		.code                   = KEY_F7,
    		.gpio                   = DA850_LCDK_USER_KEY1,
    		.desc                   = "pb2",
    	},
    };
    
    static struct gpio_keys_platform_data omapl138_lcdk_evm_keys_pdata = {
    	.buttons = omapl138_lcdk_evm_keys,
    	.nbuttons = ARRAY_SIZE(omapl138_lcdk_evm_keys),
    	.poll_interval = DA850_LCDK_GPIO_KEYS_POLL_MS,
    };
    
    static struct platform_device omapl138_lcdk_evm_keys_device = {
    	.name = "gpio-keys-polled",
    	.id = 0,
    	.dev = {
    		.platform_data = &omapl138_lcdk_evm_keys_pdata
    	},
    };
    
    static  __init void omapl138_lcdk_keys_init(void)
    {
    	int err;
    
    	davinci_cfg_reg_list(omapl138_lcdk_keys_pin_mux);
    	err = platform_device_register(&omapl138_lcdk_evm_keys_device);
    	if (err)
    		pr_err("failed to register omapl138_lcdk_evm_keys_device\n");
    	return;
    };
    
    static struct davinci_pm_config da850_pm_pdata = {
    	.sleepcount = 128,
    };
    
    static struct platform_device da850_pm_device = {
    	.name           = "pm-davinci",
    	.dev = {
    		.platform_data  = &da850_pm_pdata,
    	},
    	.id             = -1,
    };
    
    static __init void omapl138_lcdk_init(void)
    {
    	int ret;
    
    /* Seb Debug */
    	/* Support for UART 1 */
    	ret = davinci_cfg_reg_list(da850_uart1_pins);
    	if (ret)
    		pr_warning("da850_evm_init: UART 1 mux setup failed:"
    						" %d\n", ret);
    
    
    	davinci_serial_init(&omapl138_lcdk_uart_config);
    
    	/*
    	 * shut down uart 0 and 1; they are not used on this board and
    	 * accessing them causes endless "too much work in irq53" messages
    	 * with arago fs
    	 */
    
    /* Titus Debug : Disable UART0 & UART2 */
    
    	__raw_writel(0, IO_ADDRESS(DA8XX_UART2_BASE) + 0x30);
    	__raw_writel(0, IO_ADDRESS(DA8XX_UART0_BASE) + 0x30);
    	//__raw_writel(0, IO_ADDRESS(DA8XX_UART1_BASE) + 0x30);
    
    	omapl138_lcdk_config_emac();
    
    	ret = da850_register_edma(da850_edma_rsv);
    	if (ret)
    		pr_warning("%s: EDMA registration failed: %d\n",
    			__func__, ret);
    
    	omapl138_lcdk_mmc_init();
    
    	//omapl138_lcdk_usb_init();
    
    	ret = da8xx_register_watchdog();
    	if (ret)
    		pr_warning("omapl138_lcdk_init: "
    			"watchdog registration failed: %d\n",
    			ret);
    
    	ret = da8xx_register_rtc();
    	if (ret)
    		pr_warning("omapl138_lcdk_init: rtc setup failed: %d\n", ret);
    
    	omapl138_lcdk_i2c_init();
    	//omapl138_lcdk_sound_init();
    
    	/*ret = da850_register_sata(LCDKBOARD_SATA_REFCLKPN_RATE);
    	if (ret)
    		pr_warning("omapl138_lcdk_init: sata registration failed: %d\n",
    				ret);*/
    
    	ret = da850_register_pm(&da850_pm_device);
    	if (ret)
    		pr_warning("da850_evm_init: suspend registration failed: %d\n",
    				ret);
    
    	omapl138_lcdk_led_init();
    	omapl138_lcdk_keys_init();
    	omapl138_lcdk_nand_init();
    	omapl138_lcdk_display_init();
    
    /* Titus Debug : Enable UART1 PM Register PWREMU_MGMT;  Check out the SPUFM6.pdf at page no : 38 */
    
    	//__raw_writel( (0x01 | (0x03 << 13)), DA8XX_UART1_BASE + 0x30 ); 
    
    	
    }
    
    #ifdef CONFIG_SERIAL_8250_CONSOLE
    static int __init omapl138_lcdk_console_init(void)
    {
    	if (!machine_is_omapl138_lcdkboard())
    		return 0;
    
    	return add_preferred_console("ttyS", /*2*/1, "115200");
    }
    console_initcall(omapl138_lcdk_console_init);
    #endif
    
    static void __init omapl138_lcdk_map_io(void)
    {
    	da850_init();
    }
    
    MACHINE_START(OMAPL138_LCDKBOARD, "AM18x/OMAP-L138 lcdk board")
    	.atag_offset	= 0x100,
    	.map_io		= omapl138_lcdk_map_io,
    	.init_irq	= cp_intc_init,
    	.timer		= &davinci_timer,
    	.init_machine	= omapl138_lcdk_init,
    	.dma_zone_size	= SZ_128M,
    	.restart	= da8xx_restart,
    MACHINE_END
    


       

  • That is odd that pinmux of UART1 pins is required. U-boot will have already muxed in UART1 TXD and RXD as it is already using UART1. The original board-omapl138-lcdk.c did not mux in UART2 because u-boot had already done so. Perhaps your prior changes never made all the way to the board till now.

  • May be that is due to kernel config because into System Type->TI DaVinci Implementation, item " DAVINCI multiplexing support is enabled.

    When I go to help It says that "if your bootloader sets the multiplexing correctly, say N".

    Tomorrow I 'll try by removingoff this one.

  • Yes it'is that :

    I disabled item " DAVINCI multiplexing and removed davinci_cfg_reg_list(da850_uart1_pins) function in board_omapl138_lcdk.c support and it works

    thanks

  • I would leave "DAVINCI multiplexing support" enabled. Disabling this would mess with the mux settings for other peripherals. U-boot has to mux the console UART because it is using it. It does not configure the mux for peripherals it does not use. The kernel expects the console to muxed in. The mini-bootloader uncompress and the early printk both use the console before the board files has a chance to mux anything. The key is all the changes that Titus has indicated in his archive 1464.ttyS1_Archive.zip.

  • Hi Sebastien,

    Sounds good.

    Thanks for your update.

    Hi Norman,

    Thank very much for your support on e2e forums.