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.

66AK2G12: Booting Linux from a USB Mass Storage Device

Part Number: 66AK2G12

Hello,

I have a system with fully functioning USB hardware and a U-Boot image that can load the kernel and other necessary firmwares from a USB Drive and jump to the kernel.  Driver configuration issues aside, this wasn't too complicated to accomplish.

That being said, I have now discovered a chicken-and-egg problem.  The Linux drivers for USB are the proprietary DWC3 kernel modules, and they don't seem to want to be built into the kernel.  Since they are loadable modules, they live in the filesystem.  I am attempting to boot a system with a USB filesystem, but the drivers to mount a USB filesystem live in the filesystem.

I have two requests for information:

1) It seems that I need to add these files to the initrd, but I lack enough context/understanding to know exactly what that should contain.  I have a list of modules that need to be loaded and I have the initrd provided by the PSDK (In this case PSDK 6.3).  What's odd is that the k2-fw-initrd image provided only contains ./lib/firmware/ and a handful of IP firmwares.  I do not understand how these files are loaded or used by the kernel in the early boot.  I'm certain I could read the kernel source and figure that out, but if there are any experts out there who have a concise explanation or direction on where to look, I'd love to hear it.  

2) Additionally, we're using Yocto/Arago as our build system.  This makes the issue a little more complicated than building the initrd we need and compressing it into the correct format.  The details of how to accomplish this may be better asked on a Yocto forum, but since it pertains to a TI-provided recipe I thought I'd ask for some info here.  The recipe for k2-fw-initrd has some hacks and explanations that it's an unconventional recipe.  I'd like to write a bbappend for this recipe that adds the USB kernel modules to the image it generates.  It seems this will involve modifying the linux-ti-staging recipe as well because the generated modules are a part of the kernel recipe and need to be made available to the initrd recipe.  Can anyone offer some recommendations about how to approach adding the kernel modules to the initrd?

  • Hi Jeff,

    I don't think you need to use initrd image. I believe I have done configuring all USB modules to kernel image, not for K2G though, but a device which uses the same USB controller as on K2G, so all the kernel modules are the same.

    Can you please elaborate on the kernel build issue you have when configuring all USB kernel drivers to kernel? I don't think there is any proprietary DWC3 driver in kernel.

  • It seems my build issue was related to my machine definition in my layer.  I removed the dependencies on the kernel modules and the build completed. I take this as proof that the new configuration has been applied to the build.

    I took this image and put it on the unit, forgetting that I needed to also modify the image on the USB stick, so I spun my wheels a bit on that.

    Now I have a kernel crash, which feels like progress.

    [    1.630842] Unhandled fault: asynchronous external abort (0x211) at 0x00000000
    [    1.638051] pgd = (ptrval)
    [    1.640750] [00000000] *pgd=80000800004003, *pmd=00000000
    [    1.646144] Internal error: : 211 [#1] PREEMPT SMP ARM
    [    1.651269] Modules linked in:
    [    1.654320] CPU: 0 PID: 18 Comm: kworker/0:1 Not tainted 4.19.94-gbe5389fd85 #1
    [    1.661611] Hardware name: Keystone
    [    1.665098] Workqueue: events deferred_probe_work_func
    [    1.670229] PC is at kdwc3_probe+0x178/0x1e0
    [    1.674492] LR is at devres_add+0x54/0x5c
    [    1.678490] pc : [<c074986c>]    lr : [<c0681644>]    psr: 60000013
    [    1.684742] sp : d70e1d68  ip : d70e1d10  fp : d70e1d9c
    [    1.689954] r10: 00000027  r9 : 00000036  r8 : d76e7814
    [    1.695166] r7 : d7100210  r6 : d7100200  r5 : d6b3bf40  r4 : 00000001
    [    1.701677] r3 : e0ed0000  r2 : 00000000  r1 : 60000013  r0 : 00000000
    [    1.708191] Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
    [    1.715310] Control: 30c5387d  Table: 00003000  DAC: fffffffd
    [    1.721043] Process kworker/0:1 (pid: 18, stack limit = 0x(ptrval))
    [    1.727296] Stack: (0xd70e1d68 to 0xd70e2000)
    [    1.731643] 1d60:                   00000080 d70fe540 d6b3bf40 c0691f5c d7100210 00000000
    [    1.739805] 1d80: c102c8e4 00000000 00000000 c102c8e4 d70e1dbc d70e1da0 c067fc48 c0749700
    [    1.747966] 1da0: c10853fc d7100210 c1085400 00000000 d70e1dec d70e1dc0 c067dc98 c067fc04
    [    1.756127] 1dc0: 00000000 d7100210 c102c8e4 d7100210 c067e108 00000001 c1023214 00000000
    [    1.764288] 1de0: d70e1e24 d70e1df0 c067def8 c067daa0 c0822f90 c0820e40 d70e1e24 d70e1e08
    [    1.772448] 1e00: c102c8e4 d70e1e7c d7100210 c067e108 00000001 c1023214 d70e1e44 d70e1e28
    [    1.780608] 1e20: c067e1ac c067de9c 00000000 c1004c48 d70e1e7c c067e108 d70e1e74 d70e1e48
    [    1.788769] 1e40: c067be54 c067e114 d70e1e74 d7007f6c d699a9b8 c52211f4 d7100210 c1004c48
    [    1.796929] 1e60: d7100244 c10231f4 d70e1eac d70e1e78 c067da14 c067bdd8 00000000 d7100210
    [    1.805089] 1e80: 00000001 c52211f4 d7100210 d7100210 d7100210 c1023430 c10231f4 00000000
    [    1.813248] 1ea0: d70e1ebc d70e1eb0 c067e21c c067d948 d70e1edc d70e1ec0 c067cd80 c067e214
    [    1.821409] 1ec0: d7100210 c10231d8 c10231d8 c10231f4 d70e1efc d70e1ee0 c067d23c c067cd00
    [    1.829570] 1ee0: c1023210 d70ceb00 d76d1f80 d76d5200 d70e1f34 d70e1f00 c0237d3c c067d1e0
    [    1.837730] 1f00: 00000008 d76d1f98 c1003d00 d70ceb00 d70ceb14 d76d1f80 00000008 d76d1f98
    [    1.845890] 1f20: c1003d00 d76d1f80 d70e1f74 d70e1f38 c0238d68 c0237b54 d70c8fc0 c0ba40e4
    [    1.854050] 1f40: c104a9a0 ffffe000 c023db70 d70d2000 d70c8fc0 00000000 d70e0000 d70ceb00
    [    1.862210] 1f60: c0238ab8 d7053e74 d70e1fac d70e1f78 c023e038 c0238ac4 d70d201c d70d201c
    [    1.870371] 1f80: 00000000 d70c8fc0 c023ded8 00000000 00000000 00000000 00000000 00000000
    [    1.878531] 1fa0: 00000000 d70e1fb0 c02010d8 c023dee4 00000000 00000000 00000000 00000000
    [    1.886690] 1fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    [    1.894849] 1fe0: 00000000 00000000 00000000 00000000 00000013 00000000 00000000 00000000
    [    1.903006] Backtrace: 
    [    1.905451] [<c07496f4>] (kdwc3_probe) from [<c067fc48>] (platform_drv_probe+0x50/0xa0)
    [    1.913440]  r9:c102c8e4 r8:00000000 r7:00000000 r6:c102c8e4 r5:00000000 r4:d7100210
    [    1.921171] [<c067fbf8>] (platform_drv_probe) from [<c067dc98>] (really_probe+0x204/0x2c0)
    [    1.929417]  r7:00000000 r6:c1085400 r5:d7100210 r4:c10853fc
    [    1.935066] [<c067da94>] (really_probe) from [<c067def8>] (driver_probe_device+0x68/0x180)
    [    1.943313]  r10:00000000 r9:c1023214 r8:00000001 r7:c067e108 r6:d7100210 r5:c102c8e4
    [    1.951123]  r4:d7100210 r3:00000000
    [    1.954693] [<c067de90>] (driver_probe_device) from [<c067e1ac>] (__device_attach_driver+0xa4/0xc8)
    [    1.963720]  r9:c1023214 r8:00000001 r7:c067e108 r6:d7100210 r5:d70e1e7c r4:c102c8e4
    [    1.971449] [<c067e108>] (__device_attach_driver) from [<c067be54>] (bus_for_each_drv+0x88/0xcc)
    [    1.980215]  r7:c067e108 r6:d70e1e7c r5:c1004c48 r4:00000000
    [    1.985864] [<c067bdcc>] (bus_for_each_drv) from [<c067da14>] (__device_attach+0xd8/0x140)
    [    1.994110]  r7:c10231f4 r6:d7100244 r5:c1004c48 r4:d7100210
    [    1.999758] [<c067d93c>] (__device_attach) from [<c067e21c>] (device_initial_probe+0x14/0x18)
    [    2.008264]  r8:00000000 r7:c10231f4 r6:c1023430 r5:d7100210 r4:d7100210
    [    2.014953] [<c067e208>] (device_initial_probe) from [<c067cd80>] (bus_probe_device+0x8c/0x94)
    [    2.023548] [<c067ccf4>] (bus_probe_device) from [<c067d23c>] (deferred_probe_work_func+0x68/0x94)
    [    2.032488]  r7:c10231f4 r6:c10231d8 r5:c10231d8 r4:d7100210
    [    2.038139] [<c067d1d4>] (deferred_probe_work_func) from [<c0237d3c>] (process_one_work+0x1f4/0x404)
    [    2.047251]  r7:d76d5200 r6:d76d1f80 r5:d70ceb00 r4:c1023210
    [    2.052900] [<c0237b48>] (process_one_work) from [<c0238d68>] (worker_thread+0x2b0/0x568)
    [    2.061060]  r10:d76d1f80 r9:c1003d00 r8:d76d1f98 r7:00000008 r6:d76d1f80 r5:d70ceb14
    [    2.068870]  r4:d70ceb00
    [    2.071400] [<c0238ab8>] (worker_thread) from [<c023e038>] (kthread+0x160/0x168)
    [    2.078781]  r10:d7053e74 r9:c0238ab8 r8:d70ceb00 r7:d70e0000 r6:00000000 r5:d70c8fc0
    [    2.086591]  r4:d70d2000
    [    2.089121] [<c023ded8>] (kthread) from [<c02010d8>] (ret_from_fork+0x14/0x3c)
    [    2.096326] Exception stack(0xd70e1fb0 to 0xd70e1ff8)
    [    2.101365] 1fa0:                                     00000000 00000000 00000000 00000000
    [    2.109524] 1fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    [    2.117683] 1fe0: 00000000 00000000 00000000 00000000 00000013 00000000
    [    2.124282]  r10:00000000 r9:00000000 r8:00000000 r7:00000000 r6:00000000 r5:c023ded8
    [    2.132092]  r4:d70c8fc0
    [    2.134619] Code: e5953004 e5934028 f57ff04f e3844001 (e5956004) 
    [    2.140703] ---[ end trace 10aca7c5bb3bfca4 ]---
    

    Following Section 3.1.1.6.8 of the Processor SDK Linux guide, I have the following configs set:

    CONFIG_USB=y
    CONFIG_USB_XHCI_HCD=y
    CONFIG_USB_XHCI_PCI=y
    CONFIG_USB_XHCI_PLATFORM=y
    CONFIG_USB_STORAGE=y
    CONFIG_USB_DWC3=y
    CONFIG_USB_DWC3_HOST=y
    CONFIG_USB_DWC3_KEYSTONE=y
    CONFIG_EXTCON=y
    CONFIG_EXTCON_USB_GPIO=y
    CONFIG_SCSI_MOD=y
    CONFIG_SCSI=y
    CONFIG_BLK_DEV_SD=y

    The rest of the config with commented options deleted is shown below:

    #
    # Automatically generated file; DO NOT EDIT.
    # Linux/arm 4.19.94 Kernel Configuration
    #
    
    #
    # Compiler: arm-linux-gnueabihf-gcc (GNU Toolchain for the A-profile Architecture 8.3-2019.03 (arm-rel-8.36)) 8.3.0
    #
    CONFIG_CC_IS_GCC=y
    CONFIG_GCC_VERSION=80300
    CONFIG_CLANG_VERSION=0
    CONFIG_CC_HAS_ASM_GOTO=y
    CONFIG_IRQ_WORK=y
    CONFIG_BUILDTIME_EXTABLE_SORT=y
    
    #
    # General setup
    #
    CONFIG_INIT_ENV_ARG_LIMIT=32
    CONFIG_LOCALVERSION=""
    CONFIG_LOCALVERSION_AUTO=y
    CONFIG_BUILD_SALT=""
    CONFIG_HAVE_KERNEL_GZIP=y
    CONFIG_HAVE_KERNEL_LZMA=y
    CONFIG_HAVE_KERNEL_XZ=y
    CONFIG_HAVE_KERNEL_LZO=y
    CONFIG_HAVE_KERNEL_LZ4=y
    CONFIG_KERNEL_LZMA=y
    CONFIG_DEFAULT_HOSTNAME="(none)"
    CONFIG_SWAP=y
    CONFIG_SYSVIPC=y
    CONFIG_SYSVIPC_SYSCTL=y
    CONFIG_POSIX_MQUEUE=y
    CONFIG_POSIX_MQUEUE_SYSCTL=y
    CONFIG_CROSS_MEMORY_ATTACH=y
    CONFIG_HAVE_ARCH_AUDITSYSCALL=y
    
    #
    # IRQ subsystem
    #
    CONFIG_GENERIC_IRQ_PROBE=y
    CONFIG_GENERIC_IRQ_SHOW=y
    CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
    CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y
    CONFIG_GENERIC_IRQ_MIGRATION=y
    CONFIG_HARDIRQS_SW_RESEND=y
    CONFIG_IRQ_DOMAIN=y
    CONFIG_IRQ_DOMAIN_HIERARCHY=y
    CONFIG_GENERIC_MSI_IRQ=y
    CONFIG_GENERIC_MSI_IRQ_DOMAIN=y
    CONFIG_HANDLE_DOMAIN_IRQ=y
    CONFIG_IRQ_FORCED_THREADING=y
    CONFIG_SPARSE_IRQ=y
    CONFIG_GENERIC_IRQ_MULTI_HANDLER=y
    CONFIG_ARCH_CLOCKSOURCE_DATA=y
    CONFIG_GENERIC_TIME_VSYSCALL=y
    CONFIG_GENERIC_CLOCKEVENTS=y
    CONFIG_ARCH_HAS_TICK_BROADCAST=y
    CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
    
    #
    # Timers subsystem
    #
    CONFIG_TICK_ONESHOT=y
    CONFIG_NO_HZ_COMMON=y
    CONFIG_NO_HZ_IDLE=y
    CONFIG_NO_HZ=y
    CONFIG_HIGH_RES_TIMERS=y
    CONFIG_PREEMPT=y
    CONFIG_PREEMPT_COUNT=y
    
    #
    # CPU/Task time and stats accounting
    #
    CONFIG_TICK_CPU_ACCOUNTING=y
    CONFIG_BSD_PROCESS_ACCT=y
    CONFIG_CPU_ISOLATION=y
    
    #
    # RCU Subsystem
    #
    CONFIG_PREEMPT_RCU=y
    CONFIG_SRCU=y
    CONFIG_TREE_SRCU=y
    CONFIG_TASKS_RCU=y
    CONFIG_RCU_STALL_COMMON=y
    CONFIG_RCU_NEED_SEGCBLIST=y
    CONFIG_BUILD_BIN2C=y
    CONFIG_IKCONFIG=y
    CONFIG_IKCONFIG_PROC=y
    CONFIG_LOG_BUF_SHIFT=17
    CONFIG_LOG_CPU_MAX_BUF_SHIFT=12
    CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=13
    CONFIG_GENERIC_SCHED_CLOCK=y
    CONFIG_CGROUPS=y
    CONFIG_PAGE_COUNTER=y
    CONFIG_MEMCG=y
    CONFIG_MEMCG_SWAP=y
    CONFIG_MEMCG_SWAP_ENABLED=y
    CONFIG_MEMCG_KMEM=y
    CONFIG_BLK_CGROUP=y
    CONFIG_CGROUP_WRITEBACK=y
    CONFIG_CGROUP_SCHED=y
    CONFIG_FAIR_GROUP_SCHED=y
    CONFIG_CFS_BANDWIDTH=y
    CONFIG_CGROUP_PIDS=y
    CONFIG_CGROUP_FREEZER=y
    CONFIG_CGROUP_DEVICE=y
    CONFIG_CGROUP_CPUACCT=y
    CONFIG_CGROUP_PERF=y
    CONFIG_NAMESPACES=y
    CONFIG_UTS_NS=y
    CONFIG_IPC_NS=y
    CONFIG_USER_NS=y
    CONFIG_PID_NS=y
    CONFIG_NET_NS=y
    CONFIG_CHECKPOINT_RESTORE=y
    CONFIG_BLK_DEV_INITRD=y
    CONFIG_INITRAMFS_SOURCE=""
    CONFIG_RD_GZIP=y
    CONFIG_RD_BZIP2=y
    CONFIG_RD_LZMA=y
    CONFIG_RD_XZ=y
    CONFIG_RD_LZO=y
    CONFIG_RD_LZ4=y
    CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
    CONFIG_SYSCTL=y
    CONFIG_ANON_INODES=y
    CONFIG_HAVE_UID16=y
    CONFIG_BPF=y
    CONFIG_EXPERT=y
    CONFIG_UID16=y
    CONFIG_MULTIUSER=y
    CONFIG_SYSFS_SYSCALL=y
    CONFIG_FHANDLE=y
    CONFIG_POSIX_TIMERS=y
    CONFIG_PRINTK=y
    CONFIG_PRINTK_NMI=y
    CONFIG_BUG=y
    CONFIG_ELF_CORE=y
    CONFIG_BASE_FULL=y
    CONFIG_FUTEX=y
    CONFIG_FUTEX_PI=y
    CONFIG_EPOLL=y
    CONFIG_SIGNALFD=y
    CONFIG_TIMERFD=y
    CONFIG_EVENTFD=y
    CONFIG_SHMEM=y
    CONFIG_AIO=y
    CONFIG_ADVISE_SYSCALLS=y
    CONFIG_MEMBARRIER=y
    CONFIG_KALLSYMS=y
    CONFIG_KALLSYMS_ALL=y
    CONFIG_KALLSYMS_BASE_RELATIVE=y
    CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y
    CONFIG_RSEQ=y
    CONFIG_EMBEDDED=y
    CONFIG_HAVE_PERF_EVENTS=y
    CONFIG_PERF_USE_VMALLOC=y
    
    #
    # Kernel Performance Events And Counters
    #
    CONFIG_PERF_EVENTS=y
    CONFIG_VM_EVENT_COUNTERS=y
    CONFIG_COMPAT_BRK=y
    CONFIG_SLUB=y
    CONFIG_SLAB_MERGE_DEFAULT=y
    CONFIG_SLUB_CPU_PARTIAL=y
    CONFIG_SYSTEM_DATA_VERIFICATION=y
    CONFIG_ARM=y
    CONFIG_ARM_HAS_SG_CHAIN=y
    CONFIG_MIGHT_HAVE_PCI=y
    CONFIG_SYS_SUPPORTS_APM_EMULATION=y
    CONFIG_HAVE_PROC_CPU=y
    CONFIG_STACKTRACE_SUPPORT=y
    CONFIG_LOCKDEP_SUPPORT=y
    CONFIG_TRACE_IRQFLAGS_SUPPORT=y
    CONFIG_RWSEM_XCHGADD_ALGORITHM=y
    CONFIG_FIX_EARLYCON_MEM=y
    CONFIG_GENERIC_HWEIGHT=y
    CONFIG_GENERIC_CALIBRATE_DELAY=y
    CONFIG_ZONE_DMA=y
    CONFIG_ARCH_SUPPORTS_UPROBES=y
    CONFIG_ARM_PATCH_PHYS_VIRT=y
    CONFIG_GENERIC_BUG=y
    CONFIG_PGTABLE_LEVELS=3
    
    #
    # System Type
    #
    CONFIG_MMU=y
    CONFIG_ARCH_MMAP_RND_BITS_MIN=8
    CONFIG_ARCH_MMAP_RND_BITS_MAX=16
    CONFIG_ARCH_MULTIPLATFORM=y
    
    #
    # Multiple platform selection
    #
    
    #
    # CPU Core family selection
    #
    CONFIG_ARCH_MULTI_V7=y
    CONFIG_ARCH_MULTI_V6_V7=y
    CONFIG_ARCH_KEYSTONE=y
    CONFIG_KEYSTONE2_DMA_COHERENT=y
    
    #
    # TI OMAP/AM/DM/DRA Family
    #
    
    #
    # Processor Type
    #
    CONFIG_CPU_V7=y
    CONFIG_CPU_THUMB_CAPABLE=y
    CONFIG_CPU_32v6K=y
    CONFIG_CPU_32v7=y
    CONFIG_CPU_ABRT_EV7=y
    CONFIG_CPU_PABRT_V7=y
    CONFIG_CPU_CACHE_V7=y
    CONFIG_CPU_CACHE_VIPT=y
    CONFIG_CPU_COPY_V6=y
    CONFIG_CPU_TLB_V7=y
    CONFIG_CPU_HAS_ASID=y
    CONFIG_CPU_CP15=y
    CONFIG_CPU_CP15_MMU=y
    
    #
    # Processor Features
    #
    CONFIG_ARM_LPAE=y
    CONFIG_ARM_PV_FIXUP=y
    CONFIG_ARM_THUMB=y
    CONFIG_ARM_VIRT_EXT=y
    CONFIG_SWP_EMULATE=y
    CONFIG_CPU_SPECTRE=y
    CONFIG_HARDEN_BRANCH_PREDICTOR=y
    CONFIG_KUSER_HELPERS=y
    CONFIG_VDSO=y
    CONFIG_OUTER_CACHE=y
    CONFIG_OUTER_CACHE_SYNC=y
    CONFIG_MIGHT_HAVE_CACHE_L2X0=y
    CONFIG_CACHE_L2X0=y
    CONFIG_ARM_L1_CACHE_SHIFT_6=y
    CONFIG_ARM_L1_CACHE_SHIFT=6
    CONFIG_ARM_DMA_MEM_BUFFERABLE=y
    CONFIG_ARM_HEAVY_MB=y
    CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y
    CONFIG_DEBUG_ALIGN_RODATA=y
    CONFIG_ARM_ERRATA_643719=y
    CONFIG_ARM_ERRATA_798181=y
    
    #
    # Bus support
    #
    CONFIG_PCI=y
    CONFIG_PCI_DOMAINS=y
    CONFIG_PCI_DOMAINS_GENERIC=y
    CONFIG_PCI_SYSCALL=y
    CONFIG_PCIEPORTBUS=y
    CONFIG_PCIEAER=y
    CONFIG_PCIEASPM=y
    CONFIG_PCIEASPM_DEFAULT=y
    CONFIG_PCIE_PME=y
    CONFIG_PCI_MSI=y
    CONFIG_PCI_MSI_IRQ_DOMAIN=y
    CONFIG_PCI_QUIRKS=y
    CONFIG_PCI_ECAM=y
    CONFIG_PCI_LABEL=y
    
    #
    # PCI controller drivers
    #
    
    #
    # Cadence PCIe controllers support
    #
    CONFIG_PCI_HOST_COMMON=y
    CONFIG_PCI_HOST_GENERIC=y
    
    #
    # DesignWare PCI Core Support
    #
    CONFIG_PCIE_DW=y
    CONFIG_PCIE_DW_HOST=y
    CONFIG_PCIE_DW_EP=y
    CONFIG_PCI_KEYSTONE=y
    CONFIG_PCI_KEYSTONE_HOST=y
    CONFIG_PCI_KEYSTONE_EP=y
    
    #
    # PCI Endpoint
    #
    CONFIG_PCI_ENDPOINT=y
    CONFIG_PCI_ENDPOINT_CONFIGFS=y
    CONFIG_PCI_EPF_TEST=y
    
    #
    # PCI switch controller drivers
    #
    
    #
    # Kernel Features
    #
    CONFIG_HAVE_SMP=y
    CONFIG_SMP=y
    CONFIG_SMP_ON_UP=y
    CONFIG_ARM_CPU_TOPOLOGY=y
    CONFIG_HAVE_ARM_ARCH_TIMER=y
    CONFIG_VMSPLIT_3G=y
    CONFIG_PAGE_OFFSET=0xC0000000
    CONFIG_NR_CPUS=8
    CONFIG_HOTPLUG_CPU=y
    CONFIG_ARM_PSCI=y
    CONFIG_ARCH_NR_GPIO=512
    CONFIG_HZ_FIXED=0
    CONFIG_HZ_1000=y
    CONFIG_HZ=1000
    CONFIG_SCHED_HRTICK=y
    CONFIG_ARM_PATCH_IDIV=y
    CONFIG_AEABI=y
    CONFIG_HAVE_ARCH_PFN_VALID=y
    CONFIG_HAVE_GENERIC_GUP=y
    CONFIG_HIGHMEM=y
    CONFIG_HIGHPTE=y
    CONFIG_HW_PERF_EVENTS=y
    CONFIG_SYS_SUPPORTS_HUGETLBFS=y
    CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y
    CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
    CONFIG_FORCE_MAX_ZONEORDER=11
    CONFIG_ALIGNMENT_TRAP=y
    CONFIG_SECCOMP=y
    
    #
    # Boot options
    #
    CONFIG_USE_OF=y
    CONFIG_ATAGS=y
    CONFIG_ZBOOT_ROM_TEXT=0x0
    CONFIG_ZBOOT_ROM_BSS=0x0
    CONFIG_ARM_APPENDED_DTB=y
    CONFIG_ARM_ATAG_DTB_COMPAT=y
    CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_FROM_BOOTLOADER=y
    CONFIG_CMDLINE=""
    CONFIG_KEXEC=y
    CONFIG_ATAGS_PROC=y
    CONFIG_AUTO_ZRELADDR=y
    CONFIG_EFI_STUB=y
    CONFIG_EFI=y
    CONFIG_DMI=y
    
    #
    # CPU Power Management
    #
    
    #
    # CPU Frequency scaling
    #
    CONFIG_CPU_FREQ=y
    CONFIG_CPU_FREQ_GOV_ATTR_SET=y
    CONFIG_CPU_FREQ_GOV_COMMON=y
    CONFIG_CPU_FREQ_STAT=y
    CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
    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
    CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
    
    #
    # CPU frequency scaling drivers
    #
    CONFIG_CPUFREQ_DT=y
    CONFIG_CPUFREQ_DT_PLATDEV=y
    
    #
    # CPU Idle
    #
    CONFIG_CPU_IDLE=y
    CONFIG_CPU_IDLE_MULTIPLE_DRIVERS=y
    CONFIG_CPU_IDLE_GOV_LADDER=y
    CONFIG_CPU_IDLE_GOV_MENU=y
    CONFIG_DT_IDLE_STATES=y
    
    #
    # ARM CPU Idle Drivers
    #
    CONFIG_ARM_CPUIDLE=y
    
    #
    # Floating point emulation
    #
    
    #
    # At least one emulation must be selected
    #
    CONFIG_VFP=y
    CONFIG_VFPv3=y
    CONFIG_NEON=y
    CONFIG_KERNEL_MODE_NEON=y
    
    #
    # Power management options
    #
    CONFIG_SUSPEND=y
    CONFIG_SUSPEND_FREEZER=y
    CONFIG_PM_SLEEP=y
    CONFIG_PM_SLEEP_SMP=y
    CONFIG_PM=y
    CONFIG_PM_DEBUG=y
    CONFIG_PM_SLEEP_DEBUG=y
    CONFIG_PM_CLK=y
    CONFIG_PM_GENERIC_DOMAINS=y
    CONFIG_PM_GENERIC_DOMAINS_SLEEP=y
    CONFIG_PM_GENERIC_DOMAINS_OF=y
    CONFIG_CPU_PM=y
    CONFIG_ARCH_SUSPEND_POSSIBLE=y
    CONFIG_ARM_CPU_SUSPEND=y
    CONFIG_ARCH_HIBERNATION_POSSIBLE=y
    
    #
    # Firmware Drivers
    #
    CONFIG_ARM_PSCI_FW=y
    CONFIG_TI_SCI_PROTOCOL=y
    CONFIG_HAVE_ARM_SMCCC=y
    
    #
    # EFI (Extensible Firmware Interface) Support
    #
    CONFIG_EFI_VARS=m
    CONFIG_EFI_ESRT=y
    CONFIG_EFI_VARS_PSTORE=m
    CONFIG_EFI_PARAMS_FROM_FDT=y
    CONFIG_EFI_RUNTIME_WRAPPERS=y
    CONFIG_EFI_ARMSTUB=y
    CONFIG_EFI_ARMSTUB_DTB_LOADER=y
    CONFIG_EFI_CAPSULE_LOADER=m
    
    #
    # Tegra firmware driver
    #
    CONFIG_ARM_CRYPTO=y
    CONFIG_CRYPTO_SHA1_ARM=m
    CONFIG_CRYPTO_SHA1_ARM_NEON=m
    CONFIG_CRYPTO_SHA1_ARM_CE=m
    CONFIG_CRYPTO_SHA2_ARM_CE=m
    CONFIG_CRYPTO_SHA256_ARM=m
    CONFIG_CRYPTO_SHA512_ARM=m
    CONFIG_CRYPTO_AES_ARM=m
    CONFIG_CRYPTO_AES_ARM_BS=m
    CONFIG_CRYPTO_AES_ARM_CE=m
    CONFIG_CRYPTO_GHASH_ARM_CE=m
    CONFIG_CRYPTO_CRC32_ARM_CE=m
    CONFIG_CRYPTO_CHACHA20_NEON=m
    
    #
    # General architecture-dependent options
    #
    CONFIG_CRASH_CORE=y
    CONFIG_KEXEC_CORE=y
    CONFIG_HAVE_OPROFILE=y
    CONFIG_JUMP_LABEL=y
    CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
    CONFIG_ARCH_USE_BUILTIN_BSWAP=y
    CONFIG_HAVE_KPROBES=y
    CONFIG_HAVE_KRETPROBES=y
    CONFIG_HAVE_OPTPROBES=y
    CONFIG_HAVE_NMI=y
    CONFIG_HAVE_ARCH_TRACEHOOK=y
    CONFIG_HAVE_DMA_CONTIGUOUS=y
    CONFIG_GENERIC_SMP_IDLE_THREAD=y
    CONFIG_GENERIC_IDLE_POLL_SETUP=y
    CONFIG_ARCH_HAS_FORTIFY_SOURCE=y
    CONFIG_ARCH_HAS_SET_MEMORY=y
    CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y
    CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
    CONFIG_HAVE_RSEQ=y
    CONFIG_HAVE_CLK=y
    CONFIG_HAVE_HW_BREAKPOINT=y
    CONFIG_HAVE_PERF_REGS=y
    CONFIG_HAVE_PERF_USER_STACK_DUMP=y
    CONFIG_HAVE_ARCH_JUMP_LABEL=y
    CONFIG_HAVE_RCU_TABLE_FREE=y
    CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
    CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
    CONFIG_SECCOMP_FILTER=y
    CONFIG_HAVE_STACKPROTECTOR=y
    CONFIG_CC_HAS_STACKPROTECTOR_NONE=y
    CONFIG_STACKPROTECTOR=y
    CONFIG_STACKPROTECTOR_STRONG=y
    CONFIG_HAVE_CONTEXT_TRACKING=y
    CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
    CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
    CONFIG_HAVE_MOD_ARCH_SPECIFIC=y
    CONFIG_MODULES_USE_ELF_REL=y
    CONFIG_ARCH_HAS_ELF_RANDOMIZE=y
    CONFIG_HAVE_ARCH_MMAP_RND_BITS=y
    CONFIG_HAVE_EXIT_THREAD=y
    CONFIG_ARCH_MMAP_RND_BITS=8
    CONFIG_CLONE_BACKWARDS=y
    CONFIG_OLD_SIGSUSPEND3=y
    CONFIG_OLD_SIGACTION=y
    CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y
    CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT=y
    CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
    CONFIG_STRICT_KERNEL_RWX=y
    CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
    CONFIG_STRICT_MODULE_RWX=y
    CONFIG_ARCH_HAS_PHYS_TO_DMA=y
    CONFIG_REFCOUNT_FULL=y
    
    #
    # GCOV-based kernel profiling
    #
    CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y
    CONFIG_PLUGIN_HOSTCC=""
    CONFIG_HAVE_GCC_PLUGINS=y
    CONFIG_RT_MUTEXES=y
    CONFIG_BASE_SMALL=0
    CONFIG_MODULES=y
    CONFIG_MODULE_FORCE_LOAD=y
    CONFIG_MODULE_UNLOAD=y
    CONFIG_MODULE_FORCE_UNLOAD=y
    CONFIG_MODVERSIONS=y
    CONFIG_MODULE_SRCVERSION_ALL=y
    CONFIG_MODULES_TREE_LOOKUP=y
    CONFIG_BLOCK=y
    CONFIG_LBDAF=y
    CONFIG_BLK_SCSI_REQUEST=y
    CONFIG_BLK_DEV_BSG=y
    CONFIG_BLK_CMDLINE_PARSER=y
    CONFIG_BLK_DEBUG_FS=y
    
    #
    # Partition Types
    #
    CONFIG_PARTITION_ADVANCED=y
    CONFIG_MSDOS_PARTITION=y
    CONFIG_EFI_PARTITION=y
    CONFIG_CMDLINE_PARTITION=y
    CONFIG_BLK_MQ_PCI=y
    CONFIG_BLK_MQ_VIRTIO=y
    
    #
    # IO Schedulers
    #
    CONFIG_IOSCHED_NOOP=y
    CONFIG_IOSCHED_DEADLINE=y
    CONFIG_IOSCHED_CFQ=y
    CONFIG_DEFAULT_CFQ=y
    CONFIG_DEFAULT_IOSCHED="cfq"
    CONFIG_MQ_IOSCHED_DEADLINE=y
    CONFIG_MQ_IOSCHED_KYBER=y
    CONFIG_ASN1=y
    CONFIG_UNINLINE_SPIN_UNLOCK=y
    CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y
    CONFIG_MUTEX_SPIN_ON_OWNER=y
    CONFIG_RWSEM_SPIN_ON_OWNER=y
    CONFIG_LOCK_SPIN_ON_OWNER=y
    CONFIG_FREEZER=y
    
    #
    # Executable file formats
    #
    CONFIG_BINFMT_ELF=y
    CONFIG_ELFCORE=y
    CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
    CONFIG_BINFMT_SCRIPT=y
    CONFIG_COREDUMP=y
    
    #
    # Memory Management options
    #
    CONFIG_FLATMEM=y
    CONFIG_FLAT_NODE_MEM_MAP=y
    CONFIG_HAVE_MEMBLOCK=y
    CONFIG_NO_BOOTMEM=y
    CONFIG_MEMORY_ISOLATION=y
    CONFIG_SPLIT_PTLOCK_CPUS=4
    CONFIG_COMPACTION=y
    CONFIG_MIGRATION=y
    CONFIG_PHYS_ADDR_T_64BIT=y
    CONFIG_BOUNCE=y
    CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
    CONFIG_CMA=y
    CONFIG_CMA_AREAS=7
    CONFIG_GENERIC_EARLY_IOREMAP=y
    CONFIG_FRAME_VECTOR=y
    CONFIG_ARCH_HAS_PTE_SPECIAL=y
    CONFIG_NET=y
    CONFIG_NET_INGRESS=y
    CONFIG_NET_EGRESS=y
    
    #
    # Networking options
    #
    CONFIG_PACKET=y
    CONFIG_UNIX=y
    CONFIG_XFRM=y
    CONFIG_XFRM_ALGO=m
    CONFIG_XFRM_USER=m
    CONFIG_XFRM_IPCOMP=m
    CONFIG_NET_KEY=m
    CONFIG_INET=y
    CONFIG_IP_MULTICAST=y
    CONFIG_IP_ROUTE_CLASSID=y
    CONFIG_IP_PNP=y
    CONFIG_IP_PNP_DHCP=y
    CONFIG_IP_PNP_BOOTP=y
    CONFIG_IP_PNP_RARP=y
    CONFIG_NET_IP_TUNNEL=y
    CONFIG_INET_AH=m
    CONFIG_INET_ESP=m
    CONFIG_INET_IPCOMP=m
    CONFIG_INET_XFRM_TUNNEL=m
    CONFIG_INET_TUNNEL=y
    CONFIG_INET_XFRM_MODE_TRANSPORT=m
    CONFIG_INET_XFRM_MODE_TUNNEL=m
    CONFIG_INET_XFRM_MODE_BEET=m
    CONFIG_INET_DIAG=y
    CONFIG_INET_TCP_DIAG=y
    CONFIG_TCP_CONG_CUBIC=y
    CONFIG_DEFAULT_TCP_CONG="cubic"
    CONFIG_IPV6=y
    CONFIG_IPV6_ROUTER_PREF=y
    CONFIG_IPV6_OPTIMISTIC_DAD=y
    CONFIG_INET6_AH=m
    CONFIG_INET6_ESP=m
    CONFIG_INET6_IPCOMP=m
    CONFIG_IPV6_MIP6=m
    CONFIG_INET6_XFRM_TUNNEL=m
    CONFIG_INET6_TUNNEL=m
    CONFIG_INET6_XFRM_MODE_TRANSPORT=y
    CONFIG_INET6_XFRM_MODE_TUNNEL=y
    CONFIG_INET6_XFRM_MODE_BEET=y
    CONFIG_IPV6_SIT=y
    CONFIG_IPV6_NDISC_NODETYPE=y
    CONFIG_IPV6_TUNNEL=m
    CONFIG_IPV6_MULTIPLE_TABLES=y
    CONFIG_NET_PTP_CLASSIFY=y
    CONFIG_NETFILTER=y
    CONFIG_NETFILTER_ADVANCED=y
    CONFIG_BRIDGE_NETFILTER=m
    
    #
    # Core Netfilter Configuration
    #
    CONFIG_NETFILTER_INGRESS=y
    CONFIG_NETFILTER_FAMILY_BRIDGE=y
    CONFIG_NETFILTER_FAMILY_ARP=y
    CONFIG_NF_CONNTRACK=m
    CONFIG_NF_CONNTRACK_PROCFS=y
    CONFIG_NF_CT_PROTO_DCCP=y
    CONFIG_NF_CT_PROTO_SCTP=y
    CONFIG_NF_CT_PROTO_UDPLITE=y
    CONFIG_NF_NAT=m
    CONFIG_NF_NAT_NEEDED=y
    CONFIG_NF_NAT_PROTO_DCCP=y
    CONFIG_NF_NAT_PROTO_UDPLITE=y
    CONFIG_NF_NAT_PROTO_SCTP=y
    CONFIG_NETFILTER_XTABLES=m
    
    #
    # Xtables combined modules
    #
    CONFIG_NETFILTER_XT_MARK=m
    
    #
    # Xtables targets
    #
    CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
    CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m
    CONFIG_NETFILTER_XT_TARGET_MARK=m
    CONFIG_NETFILTER_XT_NAT=m
    
    #
    # Xtables matches
    #
    CONFIG_NETFILTER_XT_MATCH_COMMENT=m
    CONFIG_NETFILTER_XT_MATCH_CPU=m
    CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
    CONFIG_NETFILTER_XT_MATCH_LENGTH=m
    CONFIG_NETFILTER_XT_MATCH_LIMIT=m
    CONFIG_NETFILTER_XT_MATCH_MAC=m
    CONFIG_NETFILTER_XT_MATCH_MARK=m
    CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
    CONFIG_NETFILTER_XT_MATCH_POLICY=m
    CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
    CONFIG_NETFILTER_XT_MATCH_SCTP=m
    
    #
    # IP: Netfilter Configuration
    #
    CONFIG_NF_DEFRAG_IPV4=m
    CONFIG_NF_NAT_IPV4=m
    CONFIG_NF_NAT_MASQUERADE_IPV4=y
    CONFIG_IP_NF_IPTABLES=m
    CONFIG_IP_NF_FILTER=m
    CONFIG_IP_NF_NAT=m
    CONFIG_IP_NF_TARGET_MASQUERADE=m
    CONFIG_IP_NF_ARPTABLES=m
    CONFIG_IP_NF_ARPFILTER=m
    CONFIG_IP_NF_ARP_MANGLE=m
    
    #
    # IPv6: Netfilter Configuration
    #
    CONFIG_NF_DEFRAG_IPV6=m
    CONFIG_BRIDGE_NF_EBTABLES=m
    CONFIG_BRIDGE_EBT_BROUTE=m
    CONFIG_BRIDGE_EBT_T_FILTER=m
    CONFIG_BRIDGE_EBT_T_NAT=m
    CONFIG_BRIDGE_EBT_802_3=m
    CONFIG_BRIDGE_EBT_AMONG=m
    CONFIG_BRIDGE_EBT_ARP=m
    CONFIG_BRIDGE_EBT_IP=m
    CONFIG_BRIDGE_EBT_IP6=m
    CONFIG_BRIDGE_EBT_LIMIT=m
    CONFIG_BRIDGE_EBT_MARK=m
    CONFIG_BRIDGE_EBT_PKTTYPE=m
    CONFIG_BRIDGE_EBT_STP=m
    CONFIG_BRIDGE_EBT_VLAN=m
    CONFIG_BRIDGE_EBT_ARPREPLY=m
    CONFIG_BRIDGE_EBT_DNAT=m
    CONFIG_BRIDGE_EBT_MARK_T=m
    CONFIG_BRIDGE_EBT_REDIRECT=m
    CONFIG_BRIDGE_EBT_SNAT=m
    CONFIG_BRIDGE_EBT_LOG=m
    CONFIG_BRIDGE_EBT_NFLOG=m
    CONFIG_IP_SCTP=m
    CONFIG_SCTP_DEFAULT_COOKIE_HMAC_MD5=y
    CONFIG_SCTP_COOKIE_HMAC_MD5=y
    CONFIG_INET_SCTP_DIAG=m
    CONFIG_STP=m
    CONFIG_BRIDGE=m
    CONFIG_BRIDGE_IGMP_SNOOPING=y
    CONFIG_HAVE_NET_DSA=y
    CONFIG_NET_DSA=m
    CONFIG_NET_DSA_LEGACY=y
    CONFIG_VLAN_8021Q=m
    CONFIG_LLC=m
    CONFIG_NET_SCHED=y
    
    #
    # Queueing/Scheduling
    #
    CONFIG_NET_SCH_CBQ=m
    CONFIG_NET_SCH_HTB=m
    CONFIG_NET_SCH_HFSC=m
    CONFIG_NET_SCH_PRIO=m
    CONFIG_NET_SCH_MULTIQ=m
    CONFIG_NET_SCH_RED=m
    CONFIG_NET_SCH_SFB=m
    CONFIG_NET_SCH_SFQ=m
    CONFIG_NET_SCH_TEQL=m
    CONFIG_NET_SCH_TBF=m
    CONFIG_NET_SCH_GRED=m
    CONFIG_NET_SCH_DSMARK=m
    CONFIG_NET_SCH_NETEM=m
    CONFIG_NET_SCH_DRR=m
    CONFIG_NET_SCH_MQPRIO=m
    CONFIG_NET_SCH_CHOKE=m
    CONFIG_NET_SCH_QFQ=m
    CONFIG_NET_SCH_CODEL=m
    CONFIG_NET_SCH_FQ_CODEL=m
    CONFIG_NET_SCH_INGRESS=m
    
    #
    # Classification
    #
    CONFIG_NET_CLS=y
    CONFIG_NET_CLS_BASIC=m
    CONFIG_NET_CLS_TCINDEX=m
    CONFIG_NET_CLS_ROUTE4=m
    CONFIG_NET_CLS_FW=m
    CONFIG_NET_CLS_U32=m
    CONFIG_CLS_U32_MARK=y
    CONFIG_NET_CLS_RSVP=m
    CONFIG_NET_CLS_RSVP6=m
    CONFIG_NET_CLS_FLOW=m
    CONFIG_NET_EMATCH=y
    CONFIG_NET_EMATCH_STACK=32
    CONFIG_NET_EMATCH_CMP=m
    CONFIG_NET_EMATCH_NBYTE=m
    CONFIG_NET_EMATCH_U32=m
    CONFIG_NET_EMATCH_META=m
    CONFIG_NET_EMATCH_TEXT=m
    CONFIG_NET_CLS_ACT=y
    CONFIG_NET_ACT_POLICE=m
    CONFIG_NET_ACT_GACT=m
    CONFIG_GACT_PROB=y
    CONFIG_NET_ACT_MIRRED=m
    CONFIG_NET_ACT_IPT=m
    CONFIG_NET_ACT_NAT=m
    CONFIG_NET_ACT_PEDIT=m
    CONFIG_NET_ACT_SIMP=m
    CONFIG_NET_ACT_SKBEDIT=m
    CONFIG_NET_ACT_CSUM=m
    CONFIG_NET_CLS_IND=y
    CONFIG_NET_SCH_FIFO=y
    CONFIG_DNS_RESOLVER=y
    CONFIG_HSR_PRP=y
    CONFIG_NET_SWITCHDEV=y
    CONFIG_RPS=y
    CONFIG_RFS_ACCEL=y
    CONFIG_XPS=y
    CONFIG_NET_RX_BUSY_POLL=y
    CONFIG_BQL=y
    CONFIG_NET_FLOW_LIMIT=y
    
    #
    # Network testing
    #
    CONFIG_CAN=m
    CONFIG_CAN_RAW=m
    CONFIG_CAN_BCM=m
    CONFIG_CAN_GW=m
    
    #
    # CAN Device Drivers
    #
    CONFIG_CAN_DEV=m
    CONFIG_CAN_CALC_BITTIMING=y
    CONFIG_CAN_C_CAN=m
    CONFIG_CAN_C_CAN_PLATFORM=m
    CONFIG_CAN_M_CAN=m
    CONFIG_CAN_RCAR=m
    
    #
    # CAN SPI interfaces
    #
    CONFIG_CAN_MCP251X=m
    
    #
    # CAN USB interfaces
    #
    CONFIG_BT=m
    CONFIG_BT_BREDR=y
    CONFIG_BT_HS=y
    CONFIG_BT_LE=y
    CONFIG_BT_DEBUGFS=y
    
    #
    # Bluetooth device drivers
    #
    CONFIG_BT_MRVL=m
    CONFIG_BT_MRVL_SDIO=m
    CONFIG_FIB_RULES=y
    CONFIG_WIRELESS=y
    CONFIG_CFG80211=m
    CONFIG_CFG80211_REQUIRE_SIGNED_REGDB=y
    CONFIG_CFG80211_USE_KERNEL_REGDB_KEYS=y
    CONFIG_CFG80211_DEFAULT_PS=y
    CONFIG_CFG80211_CRDA_SUPPORT=y
    CONFIG_MAC80211=m
    CONFIG_MAC80211_HAS_RC=y
    CONFIG_MAC80211_RC_MINSTREL=y
    CONFIG_MAC80211_RC_MINSTREL_HT=y
    CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
    CONFIG_MAC80211_RC_DEFAULT="minstrel_ht"
    CONFIG_MAC80211_LEDS=y
    CONFIG_MAC80211_STA_HASH_MAX_SIZE=0
    CONFIG_RFKILL=y
    CONFIG_RFKILL_LEDS=y
    CONFIG_RFKILL_INPUT=y
    CONFIG_RFKILL_GPIO=y
    CONFIG_RPMSG_PROTO=m
    CONFIG_DST_CACHE=y
    CONFIG_GRO_CELLS=y
    CONFIG_MAY_USE_DEVLINK=y
    CONFIG_FAILOVER=y
    CONFIG_HAVE_EBPF_JIT=y
    
    #
    # Device Drivers
    #
    
    #
    # Generic Driver Options
    #
    CONFIG_UEVENT_HELPER=y
    CONFIG_UEVENT_HELPER_PATH=""
    CONFIG_DEVTMPFS=y
    CONFIG_DEVTMPFS_MOUNT=y
    CONFIG_STANDALONE=y
    CONFIG_PREVENT_FIRMWARE_BUILD=y
    
    #
    # Firmware loader
    #
    CONFIG_FW_LOADER=y
    CONFIG_EXTRA_FIRMWARE=""
    CONFIG_WANT_DEV_COREDUMP=y
    CONFIG_ALLOW_DEV_COREDUMP=y
    CONFIG_DEV_COREDUMP=y
    CONFIG_GENERIC_CPU_AUTOPROBE=y
    CONFIG_REGMAP=y
    CONFIG_REGMAP_I2C=y
    CONFIG_REGMAP_SPI=y
    CONFIG_REGMAP_MMIO=y
    CONFIG_REGMAP_IRQ=y
    CONFIG_DMA_SHARED_BUFFER=y
    CONFIG_DMA_CMA=y
    
    #
    # Default contiguous memory area size:
    #
    CONFIG_CMA_SIZE_MBYTES=48
    CONFIG_CMA_SIZE_SEL_MBYTES=y
    CONFIG_CMA_ALIGNMENT=8
    CONFIG_GENERIC_ARCH_TOPOLOGY=y
    
    #
    # Bus devices
    #
    CONFIG_SIMPLE_PM_BUS=y
    CONFIG_MTD=y
    CONFIG_MTD_TESTS=m
    CONFIG_MTD_CMDLINE_PARTS=y
    CONFIG_MTD_OF_PARTS=y
    
    #
    # Partition parsers
    #
    
    #
    # User Modules And Translation Layers
    #
    CONFIG_MTD_BLKDEVS=y
    CONFIG_MTD_BLOCK=y
    
    #
    # RAM/ROM/Flash chip drivers
    #
    CONFIG_MTD_MAP_BANK_WIDTH_1=y
    CONFIG_MTD_MAP_BANK_WIDTH_2=y
    CONFIG_MTD_MAP_BANK_WIDTH_4=y
    CONFIG_MTD_CFI_I1=y
    CONFIG_MTD_CFI_I2=y
    
    #
    # Mapping drivers for chip access
    #
    
    #
    # Self-contained MTD device drivers
    #
    CONFIG_MTD_M25P80=y
    
    #
    # Disk-On-Chip Device Drivers
    #
    CONFIG_MTD_NAND_ECC=y
    CONFIG_MTD_NAND=y
    CONFIG_MTD_NAND_DENALI=y
    CONFIG_MTD_NAND_DENALI_DT=y
    CONFIG_MTD_NAND_OMAP2=y
    CONFIG_MTD_NAND_OMAP_BCH=y
    CONFIG_MTD_NAND_OMAP_BCH_BUILD=y
    CONFIG_MTD_NAND_BRCMNAND=y
    CONFIG_MTD_NAND_DAVINCI=y
    
    #
    # LPDDR & LPDDR2 PCM memory drivers
    #
    CONFIG_MTD_SPI_NOR=y
    CONFIG_SPI_CADENCE_QUADSPI=y
    CONFIG_MTD_UBI=y
    CONFIG_MTD_UBI_WL_THRESHOLD=4096
    CONFIG_MTD_UBI_BEB_LIMIT=20
    CONFIG_DTC=y
    CONFIG_OF=y
    CONFIG_OF_FLATTREE=y
    CONFIG_OF_EARLY_FLATTREE=y
    CONFIG_OF_KOBJ=y
    CONFIG_OF_DYNAMIC=y
    CONFIG_OF_ADDRESS=y
    CONFIG_OF_IRQ=y
    CONFIG_OF_NET=y
    CONFIG_OF_MDIO=y
    CONFIG_OF_RESERVED_MEM=y
    CONFIG_OF_RESOLVE=y
    CONFIG_OF_OVERLAY=y
    CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
    CONFIG_BLK_DEV=y
    CONFIG_CDROM=m
    CONFIG_BLK_DEV_LOOP=y
    CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
    CONFIG_BLK_DEV_RAM=y
    CONFIG_BLK_DEV_RAM_COUNT=16
    CONFIG_BLK_DEV_RAM_SIZE=65536
    CONFIG_VIRTIO_BLK=y
    
    #
    # NVME Support
    #
    
    #
    # Misc devices
    #
    CONFIG_AD525X_DPOT=y
    CONFIG_AD525X_DPOT_I2C=y
    CONFIG_ICS932S401=y
    CONFIG_APDS9802ALS=y
    CONFIG_ISL29003=y
    CONFIG_SRAM=y
    CONFIG_SRAM_EXEC=y
    CONFIG_PCI_ENDPOINT_TEST=m
    
    #
    # EEPROM support
    #
    CONFIG_EEPROM_AT24=y
    CONFIG_EEPROM_93CX6=y
    
    #
    # Texas Instruments shared transport line discipline
    #
    
    #
    # Intel MIC & related support
    #
    
    #
    # Intel MIC Bus Driver
    #
    
    #
    # SCIF Bus Driver
    #
    
    #
    # VOP Bus Driver
    #
    
    #
    # Intel MIC Host Driver
    #
    
    #
    # Intel MIC Card Driver
    #
    
    #
    # SCIF Driver
    #
    
    #
    # Intel MIC Coprocessor State Management (COSM) Drivers
    #
    
    #
    # VOP Driver
    #
    CONFIG_HAVE_IDE=y
    
    #
    # SCSI device support
    #
    CONFIG_SCSI_MOD=y
    CONFIG_SCSI=y
    CONFIG_SCSI_DMA=y
    CONFIG_SCSI_PROC_FS=y
    
    #
    # SCSI support type (disk, tape, CD-ROM)
    #
    CONFIG_BLK_DEV_SD=y
    CONFIG_BLK_DEV_SR=m
    
    #
    # SCSI Transports
    #
    CONFIG_SCSI_LOWLEVEL=y
    CONFIG_ATA=m
    CONFIG_ATA_VERBOSE_ERROR=y
    CONFIG_SATA_PMP=y
    
    #
    # Controllers with non-SFF native interface
    #
    CONFIG_SATA_AHCI=m
    CONFIG_SATA_MOBILE_LPM_POLICY=0
    CONFIG_SATA_AHCI_PLATFORM=m
    CONFIG_ATA_SFF=y
    
    #
    # SFF controllers with custom DMA interface
    #
    CONFIG_ATA_BMDMA=y
    
    #
    # SATA SFF controllers with BMDMA
    #
    CONFIG_SATA_MV=m
    
    #
    # PATA SFF controllers with BMDMA
    #
    
    #
    # PIO-only SFF controllers
    #
    
    #
    # Generic fallback / legacy drivers
    #
    
    #
    # IEEE 1394 (FireWire) support
    #
    CONFIG_NETDEVICES=y
    CONFIG_MII=y
    CONFIG_NET_CORE=y
    CONFIG_VIRTIO_NET=y
    
    #
    # CAIF transport drivers
    #
    
    #
    # Distributed Switch Architecture drivers
    #
    CONFIG_ETHERNET=y
    CONFIG_NET_VENDOR_ALACRITECH=y
    CONFIG_NET_VENDOR_AQUANTIA=y
    CONFIG_NET_VENDOR_BROADCOM=y
    CONFIG_TIGON3=m
    CONFIG_TIGON3_HWMON=y
    CONFIG_NET_VENDOR_CADENCE=y
    CONFIG_NET_VENDOR_CORTINA=y
    CONFIG_NET_VENDOR_HUAWEI=y
    CONFIG_NET_VENDOR_INTEL=y
    CONFIG_E1000=m
    CONFIG_E1000E=m
    CONFIG_NET_VENDOR_MARVELL=y
    CONFIG_SKGE=m
    CONFIG_NET_VENDOR_MICREL=y
    CONFIG_KS8851=y
    CONFIG_NET_VENDOR_MICROSEMI=y
    CONFIG_NET_VENDOR_NETERION=y
    CONFIG_NET_VENDOR_NI=y
    CONFIG_NET_VENDOR_PACKET_ENGINES=y
    CONFIG_NET_VENDOR_SOLARFLARE=y
    CONFIG_NET_VENDOR_SMSC=y
    CONFIG_SMSC911X=y
    CONFIG_NET_VENDOR_SOCIONEXT=y
    CONFIG_NET_VENDOR_TI=y
    CONFIG_TI_DAVINCI_MDIO=y
    CONFIG_TI_CPSW_ALE=y
    CONFIG_TI_CPTS=y
    CONFIG_TI_CPTS_MOD=y
    CONFIG_TI_KEYSTONE_NETCP=y
    CONFIG_TI_KEYSTONE_NETCP_ETHSS=y
    CONFIG_MDIO_DEVICE=y
    CONFIG_MDIO_BUS=y
    CONFIG_PHYLINK=m
    CONFIG_PHYLIB=y
    CONFIG_SWPHY=y
    
    #
    # MII PHY device drivers
    #
    CONFIG_AT803X_PHY=y
    CONFIG_DP83848_PHY=y
    CONFIG_DP83867_PHY=y
    CONFIG_FIXED_PHY=y
    CONFIG_MARVELL_PHY=y
    CONFIG_MICREL_PHY=y
    CONFIG_REALTEK_PHY=y
    CONFIG_ROCKCHIP_PHY=y
    CONFIG_SMSC_PHY=y
    CONFIG_USB_NET_DRIVERS=m
    CONFIG_USB_PEGASUS=m
    CONFIG_USB_RTL8152=m
    CONFIG_USB_USBNET=m
    CONFIG_USB_NET_AX8817X=m
    CONFIG_USB_NET_AX88179_178A=m
    CONFIG_USB_NET_CDCETHER=m
    CONFIG_USB_NET_CDC_NCM=m
    CONFIG_USB_NET_SMSC75XX=m
    CONFIG_USB_NET_SMSC95XX=m
    CONFIG_USB_NET_NET1080=m
    CONFIG_USB_NET_CDC_SUBSET_ENABLE=m
    CONFIG_USB_NET_CDC_SUBSET=m
    CONFIG_USB_BELKIN=y
    CONFIG_USB_ARMLINUX=y
    CONFIG_USB_NET_ZAURUS=m
    CONFIG_WLAN=y
    CONFIG_WLAN_VENDOR_ADMTEK=y
    CONFIG_WLAN_VENDOR_ATH=y
    CONFIG_WLAN_VENDOR_ATMEL=y
    CONFIG_WLAN_VENDOR_BROADCOM=y
    CONFIG_BRCMUTIL=m
    CONFIG_BRCMFMAC=m
    CONFIG_BRCMFMAC_PROTO_BCDC=y
    CONFIG_BRCMFMAC_SDIO=y
    CONFIG_WLAN_VENDOR_CISCO=y
    CONFIG_WLAN_VENDOR_INTEL=y
    CONFIG_IWLWIFI=m
    CONFIG_IWLWIFI_LEDS=y
    CONFIG_IWLDVM=m
    CONFIG_IWLMVM=m
    CONFIG_IWLWIFI_OPMODE_MODULAR=y
    
    #
    # Debugging Options
    #
    CONFIG_WLAN_VENDOR_INTERSIL=y
    CONFIG_WLAN_VENDOR_MARVELL=y
    CONFIG_MWIFIEX=m
    CONFIG_MWIFIEX_SDIO=m
    CONFIG_WLAN_VENDOR_MEDIATEK=y
    CONFIG_WLAN_VENDOR_RALINK=y
    CONFIG_RT2X00=m
    CONFIG_RT2800USB=m
    CONFIG_RT2800USB_RT33XX=y
    CONFIG_RT2800USB_RT35XX=y
    CONFIG_RT2800_LIB=m
    CONFIG_RT2X00_LIB_USB=m
    CONFIG_RT2X00_LIB=m
    CONFIG_RT2X00_LIB_FIRMWARE=y
    CONFIG_RT2X00_LIB_CRYPTO=y
    CONFIG_RT2X00_LIB_LEDS=y
    CONFIG_WLAN_VENDOR_REALTEK=y
    CONFIG_RTL_CARDS=m
    CONFIG_WLAN_VENDOR_RSI=y
    CONFIG_WLAN_VENDOR_ST=y
    CONFIG_WLAN_VENDOR_TI=y
    CONFIG_WL18XX=m
    CONFIG_WLCORE=m
    CONFIG_WLCORE_SDIO=m
    CONFIG_WILINK_PLATFORM_DATA=y
    CONFIG_WLAN_VENDOR_ZYDAS=y
    CONFIG_WLAN_VENDOR_QUANTENNA=y
    
    #
    # Enable WiMAX (Networking options) to see the WiMAX drivers
    #
    CONFIG_NET_FAILOVER=y
    
    #
    # Input device support
    #
    CONFIG_INPUT=y
    CONFIG_INPUT_LEDS=y
    CONFIG_INPUT_POLLDEV=m
    CONFIG_INPUT_MATRIXKMAP=m
    
    #
    # Userland interfaces
    #
    CONFIG_INPUT_JOYDEV=y
    CONFIG_INPUT_EVDEV=y
    
    #
    # Input Device Drivers
    #
    CONFIG_INPUT_KEYBOARD=y
    CONFIG_KEYBOARD_ATKBD=y
    CONFIG_KEYBOARD_QT1070=m
    CONFIG_KEYBOARD_GPIO=y
    CONFIG_KEYBOARD_MATRIX=m
    CONFIG_KEYBOARD_SAMSUNG=m
    CONFIG_INPUT_MOUSE=y
    CONFIG_MOUSE_PS2=y
    CONFIG_MOUSE_PS2_ALPS=y
    CONFIG_MOUSE_PS2_BYD=y
    CONFIG_MOUSE_PS2_LOGIPS2PP=y
    CONFIG_MOUSE_PS2_SYNAPTICS=y
    CONFIG_MOUSE_PS2_SYNAPTICS_SMBUS=y
    CONFIG_MOUSE_PS2_CYPRESS=y
    CONFIG_MOUSE_PS2_TRACKPOINT=y
    CONFIG_MOUSE_PS2_ELANTECH=y
    CONFIG_MOUSE_PS2_ELANTECH_SMBUS=y
    CONFIG_MOUSE_PS2_FOCALTECH=y
    CONFIG_MOUSE_PS2_SMBUS=y
    CONFIG_MOUSE_CYAPA=m
    CONFIG_MOUSE_ELAN_I2C=y
    CONFIG_MOUSE_ELAN_I2C_I2C=y
    CONFIG_INPUT_TOUCHSCREEN=y
    CONFIG_TOUCHSCREEN_PROPERTIES=y
    CONFIG_TOUCHSCREEN_ATMEL_MXT=m
    CONFIG_TOUCHSCREEN_GOODIX=m
    CONFIG_TOUCHSCREEN_MMS114=m
    CONFIG_TOUCHSCREEN_EDT_FT5X06=m
    CONFIG_TOUCHSCREEN_TI_AM335X_TSC=m
    CONFIG_TOUCHSCREEN_PIXCIR=m
    CONFIG_TOUCHSCREEN_ST1232=m
    CONFIG_INPUT_MISC=y
    CONFIG_INPUT_GPIO_DECODER=m
    CONFIG_INPUT_ADXL34X=m
    CONFIG_INPUT_ADXL34X_I2C=m
    CONFIG_INPUT_ADXL34X_SPI=m
    
    #
    # Hardware I/O ports
    #
    CONFIG_SERIO=y
    CONFIG_SERIO_SERPORT=y
    CONFIG_SERIO_LIBPS2=y
    
    #
    # Character devices
    #
    CONFIG_TTY=y
    CONFIG_VT=y
    CONFIG_CONSOLE_TRANSLATIONS=y
    CONFIG_VT_CONSOLE=y
    CONFIG_VT_CONSOLE_SLEEP=y
    CONFIG_HW_CONSOLE=y
    CONFIG_VT_HW_CONSOLE_BINDING=y
    CONFIG_UNIX98_PTYS=y
    CONFIG_LEGACY_PTYS=y
    CONFIG_LEGACY_PTY_COUNT=256
    CONFIG_LDISC_AUTOLOAD=y
    CONFIG_DEVMEM=y
    
    #
    # Serial drivers
    #
    CONFIG_SERIAL_EARLYCON=y
    CONFIG_SERIAL_8250=y
    CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y
    CONFIG_SERIAL_8250_CONSOLE=y
    CONFIG_SERIAL_8250_DMA=y
    CONFIG_SERIAL_8250_PCI=y
    CONFIG_SERIAL_8250_EXAR=y
    CONFIG_SERIAL_8250_NR_UARTS=10
    CONFIG_SERIAL_8250_RUNTIME_UARTS=10
    CONFIG_SERIAL_8250_FSL=y
    CONFIG_SERIAL_OF_PLATFORM=y
    
    #
    # Non-8250 serial port support
    #
    CONFIG_SERIAL_CORE=y
    CONFIG_SERIAL_CORE_CONSOLE=y
    CONFIG_SERIAL_BCM63XX=y
    CONFIG_SERIAL_BCM63XX_CONSOLE=y
    CONFIG_HVC_DRIVER=y
    CONFIG_VIRTIO_CONSOLE=y
    CONFIG_HW_RANDOM=y
    CONFIG_HW_RANDOM_KEYSTONE=y
    CONFIG_DEVPORT=y
    
    #
    # I2C support
    #
    CONFIG_I2C=y
    CONFIG_I2C_BOARDINFO=y
    CONFIG_I2C_COMPAT=y
    CONFIG_I2C_CHARDEV=y
    CONFIG_I2C_MUX=y
    
    #
    # Multiplexer I2C Chip support
    #
    CONFIG_I2C_ARB_GPIO_CHALLENGE=m
    CONFIG_I2C_MUX_PCA954x=y
    CONFIG_I2C_MUX_PINCTRL=y
    CONFIG_I2C_DEMUX_PINCTRL=y
    CONFIG_I2C_HELPER_AUTO=y
    CONFIG_I2C_ALGOBIT=y
    
    #
    # I2C Hardware Bus support
    #
    
    #
    # PC SMBus host controller drivers
    #
    
    #
    # I2C system bus drivers (mostly embedded / system-on-chip)
    #
    CONFIG_I2C_DAVINCI=y
    CONFIG_I2C_EMEV2=m
    
    #
    # External I2C/SMBus adapter drivers
    #
    
    #
    # Other I2C/SMBus bus drivers
    #
    CONFIG_I2C_SLAVE=y
    CONFIG_I2C_SLAVE_EEPROM=y
    CONFIG_SPI=y
    CONFIG_SPI_MASTER=y
    CONFIG_SPI_MEM=y
    
    #
    # SPI Master Controller Drivers
    #
    CONFIG_SPI_BITBANG=y
    CONFIG_SPI_DAVINCI=y
    CONFIG_SPI_GPIO=m
    
    #
    # SPI Protocol Masters
    #
    CONFIG_SPI_SPIDEV=y
    CONFIG_SPMI=y
    CONFIG_PPS=y
    
    #
    # PPS clients support
    #
    
    #
    # PPS generators support
    #
    
    #
    # PTP clock support
    #
    CONFIG_PTP_1588_CLOCK=y
    
    #
    # Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks.
    #
    CONFIG_PINCTRL=y
    CONFIG_GENERIC_PINCTRL_GROUPS=y
    CONFIG_PINMUX=y
    CONFIG_GENERIC_PINMUX_FUNCTIONS=y
    CONFIG_PINCONF=y
    CONFIG_GENERIC_PINCONF=y
    CONFIG_PINCTRL_SINGLE=y
    CONFIG_PINCTRL_PALMAS=y
    CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y
    CONFIG_GPIOLIB=y
    CONFIG_GPIOLIB_FASTPATH_LIMIT=512
    CONFIG_OF_GPIO=y
    CONFIG_GPIOLIB_IRQCHIP=y
    CONFIG_DEBUG_GPIO=y
    CONFIG_GPIO_SYSFS=y
    
    #
    # Memory mapped GPIO drivers
    #
    CONFIG_GPIO_DAVINCI=y
    CONFIG_GPIO_SYSCON=y
    
    #
    # I2C GPIO expanders
    #
    CONFIG_GPIO_PCA953X=m
    CONFIG_GPIO_PCF857X=y
    CONFIG_GPIO_TPIC2810=m
    
    #
    # MFD GPIO expanders
    #
    CONFIG_GPIO_PALMAS=y
    CONFIG_GPIO_TPS65910=y
    
    #
    # PCI GPIO expanders
    #
    
    #
    # SPI GPIO expanders
    #
    CONFIG_GPIO_PISOSR=m
    
    #
    # USB GPIO expanders
    #
    CONFIG_W1=m
    
    #
    # 1-wire Bus Masters
    #
    
    #
    # 1-wire Slaves
    #
    CONFIG_POWER_AVS=y
    CONFIG_POWER_RESET=y
    CONFIG_POWER_RESET_GPIO=y
    CONFIG_POWER_RESET_GPIO_RESTART=y
    CONFIG_POWER_RESET_KEYSTONE=y
    CONFIG_POWER_RESET_SYSCON=y
    CONFIG_HWMON=y
    
    #
    # Native drivers
    #
    CONFIG_SENSORS_GPIO_FAN=y
    CONFIG_SENSORS_IIO_HWMON=y
    CONFIG_SENSORS_LM90=y
    CONFIG_SENSORS_LM95245=y
    CONFIG_SENSORS_NTC_THERMISTOR=m
    CONFIG_SENSORS_PWM_FAN=m
    CONFIG_SENSORS_INA2XX=m
    CONFIG_SENSORS_TMP102=y
    CONFIG_THERMAL=y
    CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0
    CONFIG_THERMAL_HWMON=y
    CONFIG_THERMAL_OF=y
    CONFIG_THERMAL_WRITABLE_TRIPS=y
    CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
    CONFIG_THERMAL_GOV_FAIR_SHARE=y
    CONFIG_THERMAL_GOV_STEP_WISE=y
    CONFIG_THERMAL_GOV_BANG_BANG=y
    CONFIG_THERMAL_GOV_USER_SPACE=y
    CONFIG_THERMAL_GOV_POWER_ALLOCATOR=y
    CONFIG_CPU_THERMAL=y
    CONFIG_THERMAL_EMULATION=y
    
    #
    # ACPI INT340X thermal drivers
    #
    CONFIG_WATCHDOG=y
    CONFIG_WATCHDOG_CORE=y
    CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y
    
    #
    # Watchdog Device Drivers
    #
    CONFIG_DAVINCI_WATCHDOG=m
    
    #
    # PCI-based Watchdog Cards
    #
    
    #
    # USB-based Watchdog Cards
    #
    
    #
    # Watchdog Pretimeout Governors
    #
    CONFIG_SSB_POSSIBLE=y
    CONFIG_BCMA_POSSIBLE=y
    CONFIG_BCMA=y
    CONFIG_BCMA_HOST_PCI_POSSIBLE=y
    CONFIG_BCMA_HOST_PCI=y
    CONFIG_BCMA_HOST_SOC=y
    CONFIG_BCMA_DRIVER_PCI=y
    CONFIG_BCMA_SFLASH=y
    CONFIG_BCMA_DRIVER_GMAC_CMN=y
    CONFIG_BCMA_DRIVER_GPIO=y
    
    #
    # Multifunction device drivers
    #
    CONFIG_MFD_CORE=y
    CONFIG_MFD_ACT8945A=y
    CONFIG_MFD_SYSCON=y
    CONFIG_MFD_TI_AM335X_TSCADC=m
    CONFIG_MFD_PALMAS=y
    CONFIG_MFD_TPS65090=y
    CONFIG_MFD_TPS65217=y
    CONFIG_MFD_TI_LP873X=y
    CONFIG_MFD_TI_LP87565=y
    CONFIG_MFD_TPS65218=y
    CONFIG_MFD_TPS6586X=y
    CONFIG_MFD_TPS65910=y
    CONFIG_TWL6040_CORE=y
    CONFIG_CEC_CORE=y
    CONFIG_RC_CORE=y
    CONFIG_RC_MAP=y
    CONFIG_RC_DECODERS=y
    CONFIG_IR_NEC_DECODER=y
    CONFIG_IR_RC5_DECODER=y
    CONFIG_IR_RC6_DECODER=y
    CONFIG_IR_JVC_DECODER=y
    CONFIG_IR_SONY_DECODER=y
    CONFIG_IR_SANYO_DECODER=y
    CONFIG_IR_SHARP_DECODER=y
    CONFIG_IR_MCE_KBD_DECODER=y
    CONFIG_IR_XMP_DECODER=y
    CONFIG_MEDIA_SUPPORT=y
    
    #
    # Multimedia core support
    #
    CONFIG_MEDIA_CAMERA_SUPPORT=y
    CONFIG_MEDIA_CONTROLLER=y
    CONFIG_VIDEO_DEV=y
    CONFIG_VIDEO_V4L2_SUBDEV_API=y
    CONFIG_VIDEO_V4L2=y
    CONFIG_V4L2_MEM2MEM_DEV=y
    CONFIG_V4L2_FWNODE=m
    
    #
    # Media drivers
    #
    CONFIG_MEDIA_USB_SUPPORT=y
    
    #
    # Webcam devices
    #
    CONFIG_USB_VIDEO_CLASS=m
    CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
    CONFIG_USB_GSPCA=m
    
    #
    # Webcam, TV (analog/digital) USB devices
    #
    CONFIG_V4L_PLATFORM_DRIVERS=y
    CONFIG_SOC_CAMERA=m
    CONFIG_SOC_CAMERA_PLATFORM=m
    CONFIG_V4L_MEM2MEM_DRIVERS=y
    CONFIG_V4L_TEST_DRIVERS=y
    CONFIG_VIDEO_VIVID=m
    CONFIG_VIDEO_VIVID_MAX_DEVS=64
    
    #
    # Supported MMC/SDIO adapters
    #
    CONFIG_VIDEOBUF2_CORE=y
    CONFIG_VIDEOBUF2_V4L2=y
    CONFIG_VIDEOBUF2_MEMOPS=y
    CONFIG_VIDEOBUF2_DMA_CONTIG=y
    CONFIG_VIDEOBUF2_VMALLOC=m
    CONFIG_VIDEO_V4L2_TPG=m
    
    #
    # Media ancillary drivers (tuners, sensors, i2c, spi, frontends)
    #
    CONFIG_VIDEO_IR_I2C=y
    
    #
    # I2C Encoders, decoders, sensors and other helper chips
    #
    
    #
    # Audio decoders, processors and mixers
    #
    
    #
    # RDS decoders
    #
    
    #
    # Video decoders
    #
    CONFIG_VIDEO_ADV7180=m
    CONFIG_VIDEO_ML86V7667=m
    
    #
    # Video and audio decoders
    #
    
    #
    # Video encoders
    #
    
    #
    # Camera sensor devices
    #
    CONFIG_VIDEO_OV2659=m
    CONFIG_VIDEO_OV1063X=m
    CONFIG_VIDEO_OV490=m
    CONFIG_VIDEO_MT9T11X=m
    
    #
    # Flash devices
    #
    
    #
    # Video improvement chips
    #
    
    #
    # Audio/Video compression chips
    #
    
    #
    # SDR tuner chips
    #
    
    #
    # Miscellaneous helper chips
    #
    
    #
    # Sensors used on soc_camera driver
    #
    
    #
    # soc_camera sensor drivers
    #
    
    #
    # SPI helper chips
    #
    
    #
    # Media SPI Adapters
    #
    
    #
    # Customise DVB Frontends
    #
    
    #
    # Tools to develop new frontends
    #
    
    #
    # Graphics support
    #
    CONFIG_DRM=y
    CONFIG_DRM_KMS_HELPER=y
    CONFIG_DRM_KMS_FB_HELPER=y
    CONFIG_DRM_FBDEV_EMULATION=y
    CONFIG_DRM_FBDEV_OVERALLOC=100
    CONFIG_DRM_GEM_CMA_HELPER=y
    CONFIG_DRM_KMS_CMA_HELPER=y
    CONFIG_DRM_VM=y
    
    #
    # I2C encoder or helper chips
    #
    CONFIG_DRM_I2C_NXP_TDA998X=y
    
    #
    # ACP (Audio CoProcessor) Configuration
    #
    
    #
    # AMD Library routines
    #
    CONFIG_DRM_OMAP=y
    CONFIG_DRM_OMAP_WB=y
    CONFIG_OMAP2_DSS_INIT=y
    CONFIG_OMAP_DSS_BASE=y
    CONFIG_OMAP2_DSS=y
    CONFIG_OMAP2_DSS_DEBUGFS=y
    CONFIG_OMAP2_DSS_DPI=y
    CONFIG_OMAP2_DSS_HDMI_COMMON=y
    CONFIG_OMAP4_DSS_HDMI=y
    CONFIG_OMAP4_DSS_HDMI_CEC=y
    CONFIG_OMAP5_DSS_HDMI=y
    CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK=0
    CONFIG_OMAP2_DSS_SLEEP_AFTER_VENC_RESET=y
    
    #
    # OMAPDRM External Display Device Drivers
    #
    CONFIG_DRM_OMAP_ENCODER_TPD12S015=y
    CONFIG_DRM_OMAP_CONNECTOR_HDMI=y
    CONFIG_DRM_TILCDC=y
    CONFIG_DRM_PANEL=y
    
    #
    # Display Panels
    #
    CONFIG_DRM_PANEL_SAMSUNG_LD9040=m
    CONFIG_DRM_BRIDGE=y
    CONFIG_DRM_PANEL_BRIDGE=y
    
    #
    # Display Interface Bridges
    #
    CONFIG_DRM_DUMB_VGA_DAC=m
    CONFIG_DRM_LEGACY=y
    CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y
    
    #
    # Frame buffer Devices
    #
    CONFIG_FB_CMDLINE=y
    CONFIG_FB_NOTIFY=y
    CONFIG_FB=y
    CONFIG_FB_CFB_FILLRECT=y
    CONFIG_FB_CFB_COPYAREA=y
    CONFIG_FB_CFB_IMAGEBLIT=y
    CONFIG_FB_SYS_FILLRECT=y
    CONFIG_FB_SYS_COPYAREA=y
    CONFIG_FB_SYS_IMAGEBLIT=y
    CONFIG_FB_SYS_FOPS=y
    CONFIG_FB_DEFERRED_IO=y
    CONFIG_FB_BACKLIGHT=y
    
    #
    # Frame buffer hardware drivers
    #
    CONFIG_FB_EFI=y
    CONFIG_FB_SIMPLE=y
    CONFIG_FB_SSD1307=y
    CONFIG_BACKLIGHT_LCD_SUPPORT=y
    CONFIG_BACKLIGHT_CLASS_DEVICE=y
    CONFIG_BACKLIGHT_GENERIC=y
    CONFIG_BACKLIGHT_PWM=y
    CONFIG_BACKLIGHT_GPIO=y
    CONFIG_BACKLIGHT_LED=y
    CONFIG_VIDEOMODE_HELPERS=y
    CONFIG_HDMI=y
    
    #
    # Console display driver support
    #
    CONFIG_DUMMY_CONSOLE=y
    CONFIG_FRAMEBUFFER_CONSOLE=y
    CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
    CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
    
    #
    # HID support
    #
    CONFIG_HID=y
    CONFIG_HID_GENERIC=y
    
    #
    # Special HID drivers
    #
    CONFIG_HID_MULTITOUCH=m
    
    #
    # USB HID support
    #
    CONFIG_USB_HID=m
    
    #
    # USB HID Boot Protocol drivers
    #
    
    #
    # I2C HID support
    #
    CONFIG_USB_OHCI_LITTLE_ENDIAN=y
    CONFIG_USB_SUPPORT=y
    CONFIG_USB_COMMON=y
    CONFIG_USB_ARCH_HAS_HCD=y
    CONFIG_USB=y
    CONFIG_USB_PCI=y
    
    #
    # Miscellaneous USB options
    #
    CONFIG_USB_DEFAULT_PERSIST=y
    
    #
    # USB Host Controller Drivers
    #
    CONFIG_USB_XHCI_HCD=y
    CONFIG_USB_XHCI_PCI=y
    CONFIG_USB_XHCI_PLATFORM=y
    CONFIG_USB_EHCI_HCD=m
    CONFIG_USB_EHCI_TT_NEWSCHED=y
    CONFIG_USB_EHCI_PCI=m
    CONFIG_USB_EHCI_HCD_PLATFORM=m
    CONFIG_USB_OHCI_HCD=m
    CONFIG_USB_OHCI_HCD_PCI=m
    CONFIG_USB_OHCI_HCD_PLATFORM=m
    CONFIG_USB_R8A66597_HCD=m
    
    #
    # USB Device Class drivers
    #
    CONFIG_USB_ACM=m
    
    #
    # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
    #
    
    #
    # also be needed; see USB_STORAGE Help for more info
    #
    CONFIG_USB_STORAGE=y
    
    #
    # USB Imaging devices
    #
    CONFIG_USB_MUSB_HDRC=m
    CONFIG_USB_MUSB_HOST=y
    
    #
    # Platform Glue Layer
    #
    
    #
    # MUSB DMA mode
    #
    CONFIG_USB_DWC3=y
    CONFIG_USB_DWC3_HOST=y
    
    #
    # Platform Glue Driver Support
    #
    CONFIG_USB_DWC3_HAPS=y
    CONFIG_USB_DWC3_KEYSTONE=y
    CONFIG_USB_DWC3_OF_SIMPLE=y
    CONFIG_USB_ISP1760=m
    CONFIG_USB_ISP1760_HCD=y
    CONFIG_USB_ISP1760_HOST_ROLE=y
    
    #
    # USB port drivers
    #
    CONFIG_USB_SERIAL=m
    
    #
    # USB Miscellaneous drivers
    #
    CONFIG_USB_TEST=m
    
    #
    # USB Physical Layer drivers
    #
    CONFIG_USB_PHY=y
    CONFIG_KEYSTONE_USB_PHY=y
    CONFIG_NOP_USB_XCEIV=y
    CONFIG_AM335X_CONTROL_USB=m
    CONFIG_AM335X_PHY_USB=m
    CONFIG_USB_GPIO_VBUS=m
    CONFIG_USB_ISP1301=m
    CONFIG_MMC=y
    CONFIG_PWRSEQ_EMMC=y
    CONFIG_PWRSEQ_SIMPLE=y
    CONFIG_MMC_BLOCK=y
    CONFIG_MMC_BLOCK_MINORS=16
    
    #
    # MMC/SD/SDIO Host Controller Drivers
    #
    CONFIG_MMC_SDHCI=y
    CONFIG_MMC_SDHCI_PLTFM=y
    CONFIG_MMC_SDHCI_OF_ARASAN=y
    CONFIG_MMC_SDHCI_OF_AT91=y
    CONFIG_MMC_OMAP_HS=y
    CONFIG_MMC_CQHCI=y
    CONFIG_MMC_SDHCI_OMAP=y
    CONFIG_NEW_LEDS=y
    CONFIG_LEDS_CLASS=y
    CONFIG_LEDS_CLASS_FLASH=m
    
    #
    # LED drivers
    #
    CONFIG_LEDS_GPIO=y
    CONFIG_LEDS_PWM=y
    CONFIG_LEDS_TLC591XX=y
    
    #
    # LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM)
    #
    
    #
    # LED Triggers
    #
    CONFIG_LEDS_TRIGGERS=y
    CONFIG_LEDS_TRIGGER_TIMER=y
    CONFIG_LEDS_TRIGGER_ONESHOT=y
    CONFIG_LEDS_TRIGGER_HEARTBEAT=y
    CONFIG_LEDS_TRIGGER_BACKLIGHT=y
    CONFIG_LEDS_TRIGGER_CPU=y
    CONFIG_LEDS_TRIGGER_GPIO=y
    CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
    
    #
    # iptables trigger is under Netfilter config (LED target)
    #
    CONFIG_LEDS_TRIGGER_TRANSIENT=y
    CONFIG_LEDS_TRIGGER_CAMERA=y
    CONFIG_EDAC_ATOMIC_SCRUB=y
    CONFIG_EDAC_SUPPORT=y
    CONFIG_EDAC=y
    CONFIG_EDAC_LEGACY_SYSFS=y
    CONFIG_EDAC_TI=m
    CONFIG_RTC_LIB=y
    CONFIG_RTC_CLASS=y
    CONFIG_RTC_HCTOSYS=y
    CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
    CONFIG_RTC_SYSTOHC=y
    CONFIG_RTC_SYSTOHC_DEVICE="rtc0"
    CONFIG_RTC_DEBUG=y
    CONFIG_RTC_NVMEM=y
    
    #
    # RTC interfaces
    #
    CONFIG_RTC_INTF_SYSFS=y
    CONFIG_RTC_INTF_PROC=y
    CONFIG_RTC_INTF_DEV=y
    
    #
    # I2C RTC drivers
    #
    CONFIG_RTC_DRV_DS1307=m
    CONFIG_RTC_DRV_PALMAS=m
    CONFIG_RTC_DRV_TPS6586X=m
    CONFIG_RTC_DRV_TPS65910=m
    
    #
    # SPI RTC drivers
    #
    CONFIG_RTC_I2C_AND_SPI=y
    
    #
    # SPI and I2C RTC drivers
    #
    
    #
    # Platform RTC drivers
    #
    CONFIG_RTC_DRV_EFI=m
    
    #
    # on-CPU RTC drivers
    #
    
    #
    # HID Sensor RTC drivers
    #
    CONFIG_DMADEVICES=y
    
    #
    # DMA Devices
    #
    CONFIG_DMA_ENGINE=y
    CONFIG_DMA_VIRTUAL_CHANNELS=y
    CONFIG_DMA_OF=y
    CONFIG_FSL_EDMA=y
    CONFIG_DW_DMAC_CORE=y
    CONFIG_DW_DMAC=y
    CONFIG_TI_EDMA=y
    
    #
    # DMA Clients
    #
    
    #
    # DMABUF options
    #
    CONFIG_SYNC_FILE=y
    CONFIG_UIO=m
    CONFIG_UIO_PDRV_GENIRQ=m
    CONFIG_UIO_DMEM_GENIRQ=m
    CONFIG_UIO_PRUSS=m
    CONFIG_VIRTIO=y
    CONFIG_VIRTIO_MENU=y
    CONFIG_VIRTIO_PCI=y
    CONFIG_VIRTIO_PCI_LEGACY=y
    CONFIG_VIRTIO_MMIO=y
    
    #
    # Microsoft Hyper-V guest support
    #
    CONFIG_CLKDEV_LOOKUP=y
    CONFIG_HAVE_CLK_PREPARE=y
    CONFIG_COMMON_CLK=y
    
    #
    # Common Clock Framework
    #
    CONFIG_COMMON_CLK_PALMAS=y
    CONFIG_COMMON_CLK_KEYSTONE=y
    CONFIG_TI_SCI_CLK=y
    CONFIG_TI_SYSCON_CLK=y
    CONFIG_HWSPINLOCK=y
    
    #
    # Clock Source drivers
    #
    CONFIG_TIMER_OF=y
    CONFIG_TIMER_PROBE=y
    CONFIG_CLKSRC_MMIO=y
    CONFIG_KEYSTONE_TIMER=y
    CONFIG_ARM_ARCH_TIMER=y
    CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y
    CONFIG_MAILBOX=y
    CONFIG_TI_MESSAGE_MANAGER=y
    CONFIG_IOMMU_SUPPORT=y
    
    #
    # Generic IOMMU Pagetable Support
    #
    
    #
    # Remoteproc drivers
    #
    CONFIG_REMOTEPROC=m
    CONFIG_KEYSTONE_REMOTEPROC=m
    
    #
    # Rpmsg drivers
    #
    CONFIG_RPMSG=m
    CONFIG_RPMSG_VIRTIO=m
    
    #
    # Rpmsg virtual device drivers
    #
    CONFIG_RPMSG_KDRV=m
    CONFIG_RPMSG_KDRV_ETH_SWITCH=m
    
    #
    # SOC (System On Chip) specific Drivers
    #
    
    #
    # Amlogic SoC drivers
    #
    
    #
    # Broadcom SoC drivers
    #
    
    #
    # NXP/Freescale QorIQ SoC drivers
    #
    
    #
    # i.MX SoC drivers
    #
    
    #
    # Qualcomm SoC drivers
    #
    CONFIG_SOC_TI=y
    CONFIG_KEYSTONE_DSP_MEM=m
    CONFIG_KEYSTONE_NAVIGATOR_QMSS=y
    CONFIG_KEYSTONE_NAVIGATOR_DMA=y
    CONFIG_TI_SCI_PM_DOMAINS=y
    
    #
    # Xilinx SoC drivers
    #
    CONFIG_EXTCON=y
    
    #
    # Extcon Device Drivers
    #
    CONFIG_EXTCON_PALMAS=m
    CONFIG_EXTCON_USB_GPIO=y
    CONFIG_MEMORY=y
    CONFIG_TI_AEMIF=y
    CONFIG_IIO=y
    CONFIG_IIO_BUFFER=y
    CONFIG_IIO_KFIFO_BUF=y
    CONFIG_IIO_TRIGGERED_BUFFER=y
    CONFIG_IIO_CONFIGFS=y
    CONFIG_IIO_TRIGGER=y
    CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
    CONFIG_IIO_SW_TRIGGER=y
    
    #
    # Accelerometers
    #
    
    #
    # Analog to digital converters
    #
    CONFIG_TI_AM335X_ADC=m
    CONFIG_VF610_ADC=m
    
    #
    # Analog Front Ends
    #
    
    #
    # Amplifiers
    #
    
    #
    # Chemical Sensors
    #
    
    #
    # Hid Sensor IIO Common
    #
    
    #
    # SSP Sensor Common
    #
    
    #
    # Counters
    #
    
    #
    # Digital to analog converters
    #
    
    #
    # IIO dummy driver
    #
    
    #
    # Frequency Synthesizers DDS/PLL
    #
    
    #
    # Clock Generator/Distribution
    #
    
    #
    # Phase-Locked Loop (PLL) frequency synthesizers
    #
    
    #
    # Digital gyroscope sensors
    #
    CONFIG_MPU3050=y
    CONFIG_MPU3050_I2C=y
    
    #
    # Health Sensors
    #
    
    #
    # Heart Rate Monitors
    #
    
    #
    # Humidity sensors
    #
    
    #
    # Inertial measurement units
    #
    
    #
    # Light sensors
    #
    CONFIG_CM36651=m
    CONFIG_SENSORS_ISL29018=y
    CONFIG_SENSORS_ISL29028=y
    
    #
    # Magnetometer sensors
    #
    CONFIG_AK8975=y
    
    #
    # Multiplexers
    #
    
    #
    # Inclinometer sensors
    #
    
    #
    # Triggers - standalone
    #
    CONFIG_IIO_HRTIMER_TRIGGER=y
    
    #
    # Digital potentiometers
    #
    
    #
    # Digital potentiostats
    #
    
    #
    # Pressure sensors
    #
    
    #
    # Lightning sensors
    #
    
    #
    # Proximity and distance sensors
    #
    
    #
    # Resolver to digital converters
    #
    
    #
    # Temperature sensors
    #
    CONFIG_PWM=y
    CONFIG_PWM_SYSFS=y
    CONFIG_PWM_FSL_FTM=m
    CONFIG_PWM_TIECAP=y
    
    #
    # IRQ chip support
    #
    CONFIG_IRQCHIP=y
    CONFIG_ARM_GIC=y
    CONFIG_ARM_GIC_MAX_NR=1
    CONFIG_KEYSTONE_IRQ=y
    CONFIG_ARCH_HAS_RESET_CONTROLLER=y
    CONFIG_RESET_CONTROLLER=y
    CONFIG_RESET_TI_SCI=y
    CONFIG_RESET_TI_SYSCON=y
    
    #
    # PHY Subsystem
    #
    CONFIG_GENERIC_PHY=y
    CONFIG_PHY_TI_KEYSTONE_SERDES=y
    
    #
    # Performance monitor support
    #
    CONFIG_ARM_PMU=y
    CONFIG_RAS=y
    
    #
    # Android
    #
    CONFIG_NVMEM=y
    
    #
    # HW tracing support
    #
    CONFIG_TEE=y
    
    #
    # TEE drivers
    #
    CONFIG_OPTEE=y
    CONFIG_OPTEE_SHM_NUM_PRIV_PAGES=1
    CONFIG_PM_OPP=y
    
    #
    # File systems
    #
    CONFIG_DCACHE_WORD_ACCESS=y
    CONFIG_FS_IOMAP=y
    CONFIG_EXT4_FS=y
    CONFIG_EXT4_USE_FOR_EXT2=y
    CONFIG_EXT4_FS_POSIX_ACL=y
    CONFIG_EXT4_FS_SECURITY=y
    CONFIG_JBD2=y
    CONFIG_FS_MBCACHE=y
    CONFIG_FS_POSIX_ACL=y
    CONFIG_EXPORTFS=y
    CONFIG_FILE_LOCKING=y
    CONFIG_MANDATORY_FILE_LOCKING=y
    CONFIG_FSNOTIFY=y
    CONFIG_DNOTIFY=y
    CONFIG_INOTIFY_USER=y
    CONFIG_AUTOFS4_FS=y
    CONFIG_AUTOFS_FS=y
    CONFIG_OVERLAY_FS=y
    CONFIG_OVERLAY_FS_REDIRECT_ALWAYS_FOLLOW=y
    
    #
    # Caches
    #
    
    #
    # CD-ROM/DVD Filesystems
    #
    
    #
    # 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=y
    
    #
    # Pseudo filesystems
    #
    CONFIG_PROC_FS=y
    CONFIG_PROC_SYSCTL=y
    CONFIG_PROC_PAGE_MONITOR=y
    CONFIG_PROC_CHILDREN=y
    CONFIG_KERNFS=y
    CONFIG_SYSFS=y
    CONFIG_TMPFS=y
    CONFIG_TMPFS_POSIX_ACL=y
    CONFIG_TMPFS_XATTR=y
    CONFIG_MEMFD_CREATE=y
    CONFIG_CONFIGFS_FS=y
    CONFIG_EFIVAR_FS=m
    CONFIG_MISC_FILESYSTEMS=y
    CONFIG_UBIFS_FS=y
    CONFIG_UBIFS_FS_LZO=y
    CONFIG_UBIFS_FS_ZLIB=y
    CONFIG_UBIFS_FS_XATTR=y
    CONFIG_UBIFS_FS_SECURITY=y
    CONFIG_SQUASHFS=y
    CONFIG_SQUASHFS_FILE_CACHE=y
    CONFIG_SQUASHFS_DECOMP_SINGLE=y
    CONFIG_SQUASHFS_ZLIB=y
    CONFIG_SQUASHFS_LZO=y
    CONFIG_SQUASHFS_XZ=y
    CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
    CONFIG_PSTORE=y
    CONFIG_PSTORE_DEFLATE_COMPRESS=y
    CONFIG_PSTORE_COMPRESS=y
    CONFIG_PSTORE_DEFLATE_COMPRESS_DEFAULT=y
    CONFIG_PSTORE_COMPRESS_DEFAULT="deflate"
    CONFIG_PSTORE_CONSOLE=y
    CONFIG_PSTORE_PMSG=y
    CONFIG_PSTORE_RAM=y
    CONFIG_NETWORK_FILESYSTEMS=y
    CONFIG_NFS_FS=y
    CONFIG_NFS_V2=y
    CONFIG_NFS_V3=y
    CONFIG_NFS_V3_ACL=y
    CONFIG_NFS_V4=y
    CONFIG_ROOT_NFS=y
    CONFIG_NFS_USE_KERNEL_DNS=y
    CONFIG_GRACE_PERIOD=y
    CONFIG_LOCKD=y
    CONFIG_LOCKD_V4=y
    CONFIG_NFS_ACL_SUPPORT=y
    CONFIG_NFS_COMMON=y
    CONFIG_SUNRPC=y
    CONFIG_SUNRPC_GSS=y
    CONFIG_CIFS=m
    CONFIG_CIFS_ALLOW_INSECURE_LEGACY=y
    CONFIG_CIFS_XATTR=y
    CONFIG_CIFS_POSIX=y
    CONFIG_CIFS_ACL=y
    CONFIG_CIFS_DEBUG=y
    CONFIG_NLS=y
    CONFIG_NLS_DEFAULT="iso8859-1"
    CONFIG_NLS_CODEPAGE_437=y
    CONFIG_NLS_ISO8859_1=y
    CONFIG_NLS_UTF8=y
    
    #
    # Security options
    #
    CONFIG_KEYS=y
    CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y
    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_AEAD=m
    CONFIG_CRYPTO_AEAD2=y
    CONFIG_CRYPTO_BLKCIPHER=m
    CONFIG_CRYPTO_BLKCIPHER2=y
    CONFIG_CRYPTO_HASH=y
    CONFIG_CRYPTO_HASH2=y
    CONFIG_CRYPTO_RNG=m
    CONFIG_CRYPTO_RNG2=y
    CONFIG_CRYPTO_RNG_DEFAULT=m
    CONFIG_CRYPTO_AKCIPHER2=y
    CONFIG_CRYPTO_AKCIPHER=y
    CONFIG_CRYPTO_KPP2=y
    CONFIG_CRYPTO_KPP=m
    CONFIG_CRYPTO_ACOMP2=y
    CONFIG_CRYPTO_RSA=y
    CONFIG_CRYPTO_ECDH=m
    CONFIG_CRYPTO_MANAGER=y
    CONFIG_CRYPTO_MANAGER2=y
    CONFIG_CRYPTO_USER=m
    CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y
    CONFIG_CRYPTO_GF128MUL=m
    CONFIG_CRYPTO_NULL=m
    CONFIG_CRYPTO_NULL2=y
    CONFIG_CRYPTO_WORKQUEUE=y
    CONFIG_CRYPTO_CRYPTD=m
    CONFIG_CRYPTO_AUTHENC=m
    CONFIG_CRYPTO_TEST=m
    CONFIG_CRYPTO_SIMD=m
    CONFIG_CRYPTO_ENGINE=m
    
    #
    # Authenticated Encryption with Associated Data
    #
    CONFIG_CRYPTO_CCM=m
    CONFIG_CRYPTO_GCM=m
    CONFIG_CRYPTO_SEQIV=m
    CONFIG_CRYPTO_ECHAINIV=m
    
    #
    # Block modes
    #
    CONFIG_CRYPTO_CBC=m
    CONFIG_CRYPTO_CTR=m
    CONFIG_CRYPTO_ECB=m
    
    #
    # Hash modes
    #
    CONFIG_CRYPTO_CMAC=m
    CONFIG_CRYPTO_HMAC=m
    
    #
    # Digest
    #
    CONFIG_CRYPTO_CRC32C=y
    CONFIG_CRYPTO_GHASH=m
    CONFIG_CRYPTO_MD4=m
    CONFIG_CRYPTO_MD5=m
    CONFIG_CRYPTO_SHA1=m
    CONFIG_CRYPTO_SHA256=m
    CONFIG_CRYPTO_SHA512=m
    
    #
    # Ciphers
    #
    CONFIG_CRYPTO_AES=y
    CONFIG_CRYPTO_ARC4=m
    CONFIG_CRYPTO_DES=m
    CONFIG_CRYPTO_CHACHA20=m
    
    #
    # Compression
    #
    CONFIG_CRYPTO_DEFLATE=y
    CONFIG_CRYPTO_LZO=y
    
    #
    # Random Number Generation
    #
    CONFIG_CRYPTO_DRBG_MENU=m
    CONFIG_CRYPTO_DRBG_HMAC=y
    CONFIG_CRYPTO_DRBG=m
    CONFIG_CRYPTO_JITTERENTROPY=m
    CONFIG_CRYPTO_USER_API=m
    CONFIG_CRYPTO_USER_API_HASH=m
    CONFIG_CRYPTO_USER_API_SKCIPHER=m
    CONFIG_CRYPTO_USER_API_RNG=m
    CONFIG_CRYPTO_USER_API_AEAD=m
    CONFIG_CRYPTO_HASH_INFO=y
    CONFIG_CRYPTO_HW=y
    CONFIG_CRYPTO_DEV_VIRTIO=m
    CONFIG_ASYMMETRIC_KEY_TYPE=y
    CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y
    CONFIG_X509_CERTIFICATE_PARSER=y
    CONFIG_PKCS7_MESSAGE_PARSER=y
    
    #
    # Certificates for signature checking
    #
    CONFIG_SYSTEM_TRUSTED_KEYRING=y
    CONFIG_SYSTEM_TRUSTED_KEYS=""
    
    #
    # Library routines
    #
    CONFIG_BITREVERSE=y
    CONFIG_HAVE_ARCH_BITREVERSE=y
    CONFIG_RATIONAL=y
    CONFIG_GENERIC_STRNCPY_FROM_USER=y
    CONFIG_GENERIC_STRNLEN_USER=y
    CONFIG_GENERIC_NET_UTILS=y
    CONFIG_GENERIC_PCI_IOMAP=y
    CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y
    CONFIG_CRC_CCITT=m
    CONFIG_CRC16=y
    CONFIG_CRC_ITU_T=m
    CONFIG_CRC32=y
    CONFIG_CRC32_SLICEBY8=y
    CONFIG_LIBCRC32C=m
    CONFIG_ZLIB_INFLATE=y
    CONFIG_ZLIB_DEFLATE=y
    CONFIG_LZO_COMPRESS=y
    CONFIG_LZO_DECOMPRESS=y
    CONFIG_LZ4_DECOMPRESS=y
    CONFIG_XZ_DEC=y
    CONFIG_XZ_DEC_X86=y
    CONFIG_XZ_DEC_POWERPC=y
    CONFIG_XZ_DEC_IA64=y
    CONFIG_XZ_DEC_ARM=y
    CONFIG_XZ_DEC_ARMTHUMB=y
    CONFIG_XZ_DEC_SPARC=y
    CONFIG_XZ_DEC_BCJ=y
    CONFIG_DECOMPRESS_GZIP=y
    CONFIG_DECOMPRESS_BZIP2=y
    CONFIG_DECOMPRESS_LZMA=y
    CONFIG_DECOMPRESS_XZ=y
    CONFIG_DECOMPRESS_LZO=y
    CONFIG_DECOMPRESS_LZ4=y
    CONFIG_GENERIC_ALLOCATOR=y
    CONFIG_REED_SOLOMON=y
    CONFIG_REED_SOLOMON_ENC8=y
    CONFIG_REED_SOLOMON_DEC8=y
    CONFIG_BCH=y
    CONFIG_TEXTSEARCH=y
    CONFIG_TEXTSEARCH_KMP=m
    CONFIG_TEXTSEARCH_BM=m
    CONFIG_TEXTSEARCH_FSM=m
    CONFIG_ASSOCIATIVE_ARRAY=y
    CONFIG_HAS_IOMEM=y
    CONFIG_HAS_IOPORT_MAP=y
    CONFIG_HAS_DMA=y
    CONFIG_NEED_DMA_MAP_STATE=y
    CONFIG_ARCH_DMA_ADDR_T_64BIT=y
    CONFIG_HAVE_GENERIC_DMA_COHERENT=y
    CONFIG_SGL_ALLOC=y
    CONFIG_CPU_RMAP=y
    CONFIG_DQL=y
    CONFIG_GLOB=y
    CONFIG_NLATTR=y
    CONFIG_CLZ_TAB=y
    CONFIG_MPILIB=y
    CONFIG_LIBFDT=y
    CONFIG_OID_REGISTRY=y
    CONFIG_UCS2_STRING=y
    CONFIG_FONT_SUPPORT=y
    CONFIG_FONT_8x8=y
    CONFIG_FONT_8x16=y
    CONFIG_SG_POOL=y
    CONFIG_ARCH_HAS_SG_CHAIN=y
    CONFIG_SBITMAP=y
    
    #
    # Kernel hacking
    #
    
    #
    # printk and dmesg options
    #
    CONFIG_PRINTK_TIME=y
    CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
    CONFIG_CONSOLE_LOGLEVEL_QUIET=4
    CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
    
    #
    # Compile-time checks and compiler options
    #
    CONFIG_ENABLE_MUST_CHECK=y
    CONFIG_FRAME_WARN=1024
    CONFIG_DEBUG_FS=y
    CONFIG_SECTION_MISMATCH_WARN_ONLY=y
    CONFIG_FRAME_POINTER=y
    CONFIG_MAGIC_SYSRQ=y
    CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1
    CONFIG_MAGIC_SYSRQ_SERIAL=y
    CONFIG_DEBUG_KERNEL=y
    
    #
    # Memory Debugging
    #
    CONFIG_HAVE_DEBUG_KMEMLEAK=y
    CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y
    CONFIG_ARCH_HAS_KCOV=y
    CONFIG_CC_HAS_SANCOV_TRACE_PC=y
    
    #
    # Debug Lockups and Hangs
    #
    CONFIG_PANIC_ON_OOPS_VALUE=0
    CONFIG_PANIC_TIMEOUT=0
    CONFIG_SCHED_DEBUG=y
    CONFIG_SCHED_INFO=y
    CONFIG_SCHEDSTATS=y
    
    #
    # Lock Debugging (spinlocks, mutexes, etc...)
    #
    CONFIG_LOCK_DEBUGGING_SUPPORT=y
    
    #
    # RCU Debugging
    #
    CONFIG_RCU_CPU_STALL_TIMEOUT=21
    CONFIG_HAVE_FUNCTION_TRACER=y
    CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
    CONFIG_HAVE_DYNAMIC_FTRACE=y
    CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y
    CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
    CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
    CONFIG_HAVE_C_RECORDMCOUNT=y
    CONFIG_TRACING_SUPPORT=y
    CONFIG_RUNTIME_TESTING_MENU=y
    CONFIG_HAVE_ARCH_KGDB=y
    CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y
    CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S"
    CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
    

  • Hi Jeff,

    > [    1.670229] PC is at kdwc3_probe+0x178/0x1e0

    Can you please check which line in the kernel source code causes this crash?

    Please let me know If you don't know how to get the source line number from this log message, I believe there is a training video on training.ti.com explains how to do it.

  • I incorrectly marked that as resolved.

    The Program counter is pointing to dcw3-keystone.c:55, which is the function kdwc3_enable_irqs.

  • The exact instruction that the PC refers to is:

    ldr r6, [r5, #4]

  • Line 55 seems to be the first time accessing the USB module (read a register) in the _probe() function, so I would think the issue is because the USB module is not clocked yet. I am not sure how to solve this, but did you build the USB PHY into kernel?

  • I have the Keystone USB PHY Driver and NOP USB Transceiver Driver built into the kernel.

    I checked the PSC Registers using the JTAG debugger at the moment the error message began to print.  The register PSC_PDSTAT14 (0x235023C) reads 0xFFFFFFFD, which I believe indicates that the PSC domain is on.

  • Jeff,

    PSC on is only for the power to USB module, it is still possible the USB module is not clocked, which would cause such type of register read failure.

  • I have solved this problem.  If someone from TI can shed some light on why this is the solution, that may prove useful to others who read this post.

    After a series of tests, I determined that the USB subsystem needs to be turned off before jumping to the Linux kernel.  I had actually read that in the U-Boot documentation, but there is no mention of this in the TI documentation. 

    In U-Boot source doc/README.usb:

    The USB (at least the USB UHCI) needs a frame list (4k), transfer
    descripor and queue headers which are all located in the main memory.
    The UHCI allocates every milisecond the PCI bus and reads the current
    frame pointer. This may cause to crash the OS during boot. So the USB
    _MUST_ be stopped during OS boot. This is the reason, why the USB is
    NOT automatically started during start-up. If someone needs the USB
    he has to start it and should therefore be aware that he had to stop
    it before booting the OS.

    I had tried adding a usb stop to the bootcmd before run_kern, but that didn't fix the issue.  I did eventually prove that USB needed to be turned off and that it needed to be turned off specifically before the PMMC firmware is loaded and run.

    For those curious, here's what it took.

    The reference deisgn has the following bootcmd:

    run findfdt;
    run envboot;
    run init_${boot};
    run get_mon_${boot} run_mon;
    run set_name_pmmc get_pmmc_${boot}; run run_pmmc;
    run get_kern_${boot};
    run init_fw_rd_${boot};
    run get_fdt_${boot};
    run run_kern


    If the user simply moves 'run run_pmmc' to just before 'run run_kern', the system will not boot.
    Since get_kern_${boot} will load the linux kernel to the same address that get_pmmc_${boot} uses, get_pmmc_${boot} needs to be modified to use a different address.  I created an environment variable called pmmcaddr to use in all of the pmmc-related commands.
    The file size will also need to be saved.  The load commands populate the variable 'filesize' at the end of every load operation.  I simply copy this value to 'pmmcsize' and use that for the pmmc operations.
    This allowed me to do load all of the necessary files from the USB drive prior to starting the pmmc, then stop USB and start the PMMC.

    These are my additions to the environment:

    args_usb=setenv bootargs console=${console} ${optargs} root=/dev/sda2 rw rootfstype=ext4 rootwait
    get_mon_usb=ext4load usb ${bootpart} ${addr_mon} ${bootdir}/${name_mon}
    init_usb=run args_all args_usb; usb start
    get_kern_usb=ext4load usb ${bootpart} ${loadaddr} ${bootdir}/${name_kern}
    init_fw_rd_usb=ext4load usb ${bootpart} ${rdaddr} ${bootdir}/${name_fw_rd}; run set_rd_spec
    get_fdt_usb=ext4load usb ${bootpart} ${fdtaddr} ${bootdir}/${name_fdt}
    bootcmd=run findfdt; run envboot; run init_${boot}; run get_mon_${boot} run_mon; run set_name_pmmc get_pmmc_${boot}; run get_kern_${boot}; run init_fw_rd_${boot}; run get_fdt_${boot}; if test ${boot} = usb; then usb stop; fi; run run_pmmc; run run_kern
    get_pmmc_usb=ext4load usb ${bootpart} ${pmmcaddr} ${bootdir}/${name_pmmc}; setenv pmmcsize ${filesize}
    run_pmmc=rproc init; rproc list; rproc load ${dev_pmmc} ${pmmcaddr} 0x${pmmcsize}; rproc start ${dev_pmmc}
    pmmcaddr=0x88100000

    With the information in this post and my other one, this should allow a customer to boot Linux from a USB flash drive.

    Much thanks to the TI folks who looked into this for me.