diff --git a/LICENSES/GPL-2.0-only.txt b/LICENSES/GPL-2.0-only.txt new file mode 100644 index 000000000..0f3d6411d --- /dev/null +++ b/LICENSES/GPL-2.0-only.txt @@ -0,0 +1,319 @@ +GNU GENERAL PUBLIC LICENSE + +Version 2, June 1991 + +Copyright (C) 1989, 1991 Free Software Foundation, Inc. + +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + +Everyone is permitted to copy and distribute verbatim copies of this license +document, but changing it is not allowed. + +Preamble + +The licenses for most software are designed to take away your freedom to share +and change it. By contrast, the GNU General Public License is intended to +guarantee your freedom to share and change free software--to make sure the +software is free for all its users. This General Public License applies to +most of the Free Software Foundation's software and to any other program whose +authors commit to using it. (Some other Free Software Foundation software +is covered by the GNU Lesser General Public License instead.) You can apply +it to your programs, too. + +When we speak of free software, we are referring to freedom, not price. Our +General Public Licenses are designed to make sure that you have the freedom +to distribute copies of free software (and charge for this service if you +wish), that you receive source code or can get it if you want it, that you +can change the software or use pieces of it in new free programs; and that +you know you can do these things. + +To protect your rights, we need to make restrictions that forbid anyone to +deny you these rights or to ask you to surrender the rights. These restrictions +translate to certain responsibilities for you if you distribute copies of +the software, or if you modify it. + +For example, if you distribute copies of such a program, whether gratis or +for a fee, you must give the recipients all the rights that you have. You +must make sure that they, too, receive or can get the source code. And you +must show them these terms so they know their rights. + +We protect your rights with two steps: (1) copyright the software, and (2) +offer you this license which gives you legal permission to copy, distribute +and/or modify the software. + +Also, for each author's protection and ours, we want to make certain that +everyone understands that there is no warranty for this free software. If +the software is modified by someone else and passed on, we want its recipients +to know that what they have is not the original, so that any problems introduced +by others will not reflect on the original authors' reputations. + +Finally, any free program is threatened constantly by software patents. We +wish to avoid the danger that redistributors of a free program will individually +obtain patent licenses, in effect making the program proprietary. To prevent +this, we have made it clear that any patent must be licensed for everyone's +free use or not licensed at all. + +The precise terms and conditions for copying, distribution and modification +follow. + +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + +0. This License applies to any program or other work which contains a notice +placed by the copyright holder saying it may be distributed under the terms +of this General Public License. The "Program", below, refers to any such program +or work, and a "work based on the Program" means either the Program or any +derivative work under copyright law: that is to say, a work containing the +Program or a portion of it, either verbatim or with modifications and/or translated +into another language. (Hereinafter, translation is included without limitation +in the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not covered +by this License; they are outside its scope. The act of running the Program +is not restricted, and the output from the Program is covered only if its +contents constitute a work based on the Program (independent of having been +made by running the Program). Whether that is true depends on what the Program +does. + +1. You may copy and distribute verbatim copies of the Program's source code +as you receive it, in any medium, provided that you conspicuously and appropriately +publish on each copy an appropriate copyright notice and disclaimer of warranty; +keep intact all the notices that refer to this License and to the absence +of any warranty; and give any other recipients of the Program a copy of this +License along with the Program. + +You may charge a fee for the physical act of transferring a copy, and you +may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Program or any portion of it, +thus forming a work based on the Program, and copy and distribute such modifications +or work under the terms of Section 1 above, provided that you also meet all +of these conditions: + +a) You must cause the modified files to carry prominent notices stating that +you changed the files and the date of any change. + +b) You must cause any work that you distribute or publish, that in whole or +in part contains or is derived from the Program or any part thereof, to be +licensed as a whole at no charge to all third parties under the terms of this +License. + +c) If the modified program normally reads commands interactively when run, +you must cause it, when started running for such interactive use in the most +ordinary way, to print or display an announcement including an appropriate +copyright notice and a notice that there is no warranty (or else, saying that +you provide a warranty) and that users may redistribute the program under +these conditions, and telling the user how to view a copy of this License. +(Exception: if the Program itself is interactive but does not normally print +such an announcement, your work based on the Program is not required to print +an announcement.) + +These requirements apply to the modified work as a whole. If identifiable +sections of that work are not derived from the Program, and can be reasonably +considered independent and separate works in themselves, then this License, +and its terms, do not apply to those sections when you distribute them as +separate works. But when you distribute the same sections as part of a whole +which is a work based on the Program, the distribution of the whole must be +on the terms of this License, whose permissions for other licensees extend +to the entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest your +rights to work written entirely by you; rather, the intent is to exercise +the right to control the distribution of derivative or collective works based +on the Program. + +In addition, mere aggregation of another work not based on the Program with +the Program (or with a work based on the Program) on a volume of a storage +or distribution medium does not bring the other work under the scope of this +License. + +3. You may copy and distribute the Program (or a work based on it, under Section +2) in object code or executable form under the terms of Sections 1 and 2 above +provided that you also do one of the following: + +a) Accompany it with the complete corresponding machine-readable source code, +which must be distributed under the terms of Sections 1 and 2 above on a medium +customarily used for software interchange; or, + +b) Accompany it with a written offer, valid for at least three years, to give +any third party, for a charge no more than your cost of physically performing +source distribution, a complete machine-readable copy of the corresponding +source code, to be distributed under the terms of Sections 1 and 2 above on +a medium customarily used for software interchange; or, + +c) Accompany it with the information you received as to the offer to distribute +corresponding source code. (This alternative is allowed only for noncommercial +distribution and only if you received the program in object code or executable +form with such an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for making +modifications to it. For an executable work, complete source code means all +the source code for all modules it contains, plus any associated interface +definition files, plus the scripts used to control compilation and installation +of the executable. However, as a special exception, the source code distributed +need not include anything that is normally distributed (in either source or +binary form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component itself +accompanies the executable. + +If distribution of executable or object code is made by offering access to +copy from a designated place, then offering equivalent access to copy the +source code from the same place counts as distribution of the source code, +even though third parties are not compelled to copy the source along with +the object code. + +4. You may not copy, modify, sublicense, or distribute the Program except +as expressly provided under this License. Any attempt otherwise to copy, modify, +sublicense or distribute the Program is void, and will automatically terminate +your rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses terminated +so long as such parties remain in full compliance. + +5. You are not required to accept this License, since you have not signed +it. However, nothing else grants you permission to modify or distribute the +Program or its derivative works. These actions are prohibited by law if you +do not accept this License. Therefore, by modifying or distributing the Program +(or any work based on the Program), you indicate your acceptance of this License +to do so, and all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + +6. Each time you redistribute the Program (or any work based on the Program), +the recipient automatically receives a license from the original licensor +to copy, distribute or modify the Program subject to these terms and conditions. +You may not impose any further restrictions on the recipients' exercise of +the rights granted herein. You are not responsible for enforcing compliance +by third parties to this License. + +7. If, as a consequence of a court judgment or allegation of patent infringement +or for any other reason (not limited to patent issues), conditions are imposed +on you (whether by court order, agreement or otherwise) that contradict the +conditions of this License, they do not excuse you from the conditions of +this License. If you cannot distribute so as to satisfy simultaneously your +obligations under this License and any other pertinent obligations, then as +a consequence you may not distribute the Program at all. For example, if a +patent license would not permit royalty-free redistribution of the Program +by all those who receive copies directly or indirectly through you, then the +only way you could satisfy both it and this License would be to refrain entirely +from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply and +the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any patents +or other property right claims or to contest validity of any such claims; +this section has the sole purpose of protecting the integrity of the free +software distribution system, which is implemented by public license practices. +Many people have made generous contributions to the wide range of software +distributed through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing to +distribute software through any other system and a licensee cannot impose +that choice. + +This section is intended to make thoroughly clear what is believed to be a +consequence of the rest of this License. + +8. If the distribution and/or use of the Program is restricted in certain +countries either by patents or by copyrighted interfaces, the original copyright +holder who places the Program under this License may add an explicit geographical +distribution limitation excluding those countries, so that distribution is +permitted only in or among countries not thus excluded. In such case, this +License incorporates the limitation as if written in the body of this License. + +9. The Free Software Foundation may publish revised and/or new versions of +the General Public License from time to time. Such new versions will be similar +in spirit to the present version, but may differ in detail to address new +problems or concerns. + +Each version is given a distinguishing version number. If the Program specifies +a version number of this License which applies to it and "any later version", +you have the option of following the terms and conditions either of that version +or of any later version published by the Free Software Foundation. If the +Program does not specify a version number of this License, you may choose +any version ever published by the Free Software Foundation. + +10. If you wish to incorporate parts of the Program into other free programs +whose distribution conditions are different, write to the author to ask for +permission. For software which is copyrighted by the Free Software Foundation, +write to the Free Software Foundation; we sometimes make exceptions for this. +Our decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing and reuse +of software generally. + + NO WARRANTY + +11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR +THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE +STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM +"AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, +BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE +OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE +OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA +OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES +OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH +HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. +END OF TERMS AND CONDITIONS + +How to Apply These Terms to Your New Programs + +If you develop a new program, and you want it to be of the greatest possible +use to the public, the best way to achieve this is to make it free software +which everyone can redistribute and change under these terms. + +To do so, attach the following notices to the program. It is safest to attach +them to the start of each source file to most effectively convey the exclusion +of warranty; and each file should have at least the "copyright" line and a +pointer to where the full notice is found. + + + +Copyright (C)< yyyy> + +This program is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free Software +Foundation; either version 2 of the License, or (at your option) any later +version. + +This program is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program; if not, write to the Free Software Foundation, Inc., 51 Franklin +Street, Fifth Floor, Boston, MA 02110-1301, USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this when +it starts in an interactive mode: + +Gnomovision version 69, Copyright (C) year name of author Gnomovision comes +with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, +and you are welcome to redistribute it under certain conditions; type `show +c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may be +called something other than `show w' and `show c'; they could even be mouse-clicks +or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your school, +if any, to sign a "copyright disclaimer" for the program, if necessary. Here +is a sample; alter the names: + +Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' +(which makes passes at compilers) written by James Hacker. + +, 1 April 1989 Ty Coon, President of Vice This General +Public License does not permit incorporating your program into proprietary +programs. If your program is a subroutine library, you may consider it more +useful to permit linking proprietary applications with the library. If this +is what you want to do, use the GNU Lesser General Public License instead +of this License. diff --git a/build.zig b/build.zig index 69ff541c7..c3ea5c648 100644 --- a/build.zig +++ b/build.zig @@ -6,6 +6,10 @@ const LazyPath = std.Build.LazyPath; const src = [_][]const u8{ "src/guest.c", + "src/fault.c", + "src/linux.c", + "src/dtb.c", + "src/virq.c", "src/util/util.c", "src/util/printf.c", "src/virtio/mmio.c", @@ -34,6 +38,16 @@ const src_aarch64 = [_][]const u8{ "src/arch/aarch64/vcpu.c", }; +const src_riscv = [_][]const u8{ + "src/arch/riscv/fault.c", + "src/arch/riscv/sbi.c", + "src/arch/riscv/linux.c", + "src/arch/riscv/tcb.c", + "src/arch/riscv/vcpu.c", + "src/arch/riscv/virq.c", + "src/arch/riscv/plic.c", +}; + /// Convert the target for Microkit (e.g freestanding AArch64 or RISC-V) to the Linux /// equivalent. Assumes musllibc will be used. fn linuxTarget(b: *std.Build, target: std.Build.ResolvedTarget) std.Build.ResolvedTarget { @@ -44,7 +58,7 @@ fn linuxTarget(b: *std.Build, target: std.Build.ResolvedTarget) std.Build.Resolv return b.resolveTargetQuery(query); } -pub fn build(b: *std.Build) void { +pub fn build(b: *std.Build) !void { const optimize = b.standardOptimizeOption(.{}); const target = b.standardTargetOptions(.{}); @@ -69,23 +83,29 @@ pub fn build(b: *std.Build) void { .microkit_board_dir = microkit_board_dir }); - const src_arch = switch (target.result.cpu.arch) { - .aarch64 => blk: { + var srcs = std.ArrayList([]const u8){}; + defer srcs.deinit(b.allocator); + + try srcs.appendSlice(b.allocator, &src); + + switch (target.result.cpu.arch) { + .aarch64 => { const vgic_src = switch (arm_vgic_version.?) { 2 => src_aarch64_vgic_v2, 3 => src_aarch64_vgic_v3, else => @panic("Unsupported vGIC version given"), }; - - break :blk src_aarch64 ++ vgic_src; + try srcs.appendSlice(b.allocator, &src_aarch64); + try srcs.appendSlice(b.allocator, &vgic_src); }, + .riscv64 => try srcs.appendSlice(b.allocator, &src_riscv), else => { std.log.err("Unsupported libvmm architecture given '{s}'", .{ @tagName(target.result.cpu.arch) }); std.posix.exit(1); } - }; + } libvmm.addCSourceFiles(.{ - .files = &(src ++ src_arch), + .files = srcs.items, .flags = &.{ "-Wall", "-Werror", diff --git a/dep/sddf b/dep/sddf index 5febd61c5..e145d311d 160000 --- a/dep/sddf +++ b/dep/sddf @@ -1 +1 @@ -Subproject commit 5febd61c5be1e719d3c51bddba63e258a433ac05 +Subproject commit e145d311d08a6f16c3e8cbf6791ae1acd7ae26d9 diff --git a/examples/rust/src/vmm.rs b/examples/rust/src/vmm.rs index 00f9d8ad2..dc684f3d1 100644 --- a/examples/rust/src/vmm.rs +++ b/examples/rust/src/vmm.rs @@ -11,6 +11,7 @@ use core::ffi::{c_void}; use sel4_microkit::{protection_domain, MessageInfo, Channel, Child, Handler, debug_println}; const GUEST_RAM_VADDR: usize = 0x40000000; +const GUEST_RAM_SIZE: usize = 0x10000000; const GUEST_DTB_VADDR: usize = 0x4f000000; const GUEST_INIT_RAM_DISK_VADDR: usize = 0x4d700000; const GUEST_VCPU_ID: usize = 0; @@ -33,7 +34,7 @@ const UART_CH: Channel = Channel::new(1); #[link(name = "vmm", kind = "static")] #[link(name = "microkit", kind = "static")] extern "C" { - fn linux_setup_images(ram_start: usize, + fn linux_setup_images(ram_start: usize, ram_size: usize, kernel: usize, kernel_size: usize, dtb_src: usize, dtb_dest: usize, dtb_size: usize, initrd_src: usize, initrd_dest: usize, initrd_size: usize) -> usize; @@ -70,7 +71,7 @@ fn init() -> VmmHandler { let initrd_addr = initrd.as_ptr() as usize; unsafe { - let guest_pc = linux_setup_images(GUEST_RAM_VADDR, + let guest_pc = linux_setup_images(GUEST_RAM_VADDR, GUEST_RAM_SIZE, linux_addr, linux.len(), dtb_addr, GUEST_DTB_VADDR, dtb.len(), initrd_addr, GUEST_INIT_RAM_DISK_VADDR, initrd.len() diff --git a/examples/simple/board/hifive_p550/linux.dts b/examples/simple/board/hifive_p550/linux.dts new file mode 100644 index 000000000..81bc8e193 --- /dev/null +++ b/examples/simple/board/hifive_p550/linux.dts @@ -0,0 +1,5362 @@ +// SPDX-License-Identifier: GPL-2.0-only +// Copyright 2024, Beijing ESWIN Computing Technology Co., Ltd.. All rights reserved. +/dts-v1/; + +/ { + #address-cells = <0x02>; + #size-cells = <0x02>; + compatible = "sifive,hifive-premier-p550", "eswin,eic7700"; + model = "SiFive HiFive Premier P550"; + + cpus { + #address-cells = <0x01>; + #size-cells = <0x00>; + timebase-frequency = <0xf4240>; + + cpu@0 { + clock-frequency = <0x00>; + compatible = "eswin,eic770x", "riscv"; + d-cache-block-size = <0x40>; + d-cache-sets = <0x80>; + d-cache-size = <0x8000>; + d-tlb-sets = <0x01>; + d-tlb-size = <0x20>; + device_type = "cpu"; + hardware-exec-breakpoint-count = <0x04>; + hwpf-distanceBits = <0x06>; + hwpf-hitCacheThrdBits = <0x05>; + hwpf-hitMSHRThrdBits = <0x04>; + hwpf-l2pfPoolSize = <0x0a>; + hwpf-nIssQEnt = <0x06>; + hwpf-nPrefetchQueueEntries = <0x08>; + hwpf-nStreams = <0x10>; + hwpf-qFullnessThrdBits = <0x04>; + hwpf-windowBits = <0x06>; + i-cache-block-size = <0x40>; + i-cache-sets = <0x80>; + i-cache-size = <0x8000>; + i-tlb-sets = <0x01>; + i-tlb-size = <0x20>; + mmu-type = "riscv,sv48"; + next-level-cache = <0x01>; + reg = <0x00>; + riscv,isa-base = "rv64i"; + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "h", "zicsr", "zifencei", "zba", "zbb", "sscofpmf"; + riscv,pmpgranularity = <0x1000>; + riscv,pmpregions = <0x08>; + sifive,buserror = <0x02>; + status = "okay"; + timebase-frequency = <0xf4240>; + tlb-split; + clocks = <0x03 0x1f4>; + operating-points-v2 = <0x04>; + + interrupt-controller { + #interrupt-cells = <0x01>; + compatible = "riscv,cpu-intc"; + interrupt-controller; + phandle = <0x05>; + }; + + pmu { + riscv,raw-event-to-mhpmcounters = <0x00 0x00 0xffffffff 0xff 0x78 0x00 0x01 0xffffffff 0xfffe07ff 0x78 0x00 0x02 0xffffffff 0xfffe00ff 0x78 0x00 0x03 0xfffffffc 0xff 0x78 0x00 0x04 0xffffffc0 0xff 0x78 0x00 0x05 0xffffffff 0xfffffdff 0x78 0x00 0x06 0xfffffe00 0x110204ff 0x78 0x00 0x07 0xffffffff 0xf00000ff 0x78 0x00 0x08 0xfffffe04 0xff 0x78 0x00 0x09 0xffffffff 0xffffc0ff 0x78 0x00 0x0a 0xffffffff 0xf00000ff 0x78 0x00 0x0b 0xffffffff 0xfffffcff 0x78 0x00 0x0c 0xfffffff0 0xff 0x78 0x00 0x0d 0xffffffff 0x800000ff 0x78 0x00 0x0e 0xffffffff 0xf80000ff 0x78 0x00 0x0f 0xfffffffc 0xff 0x78>; + riscv,event-to-mhpmcounters = <0x01 0x01 0x01 0x02 0x02 0x02 0x04 0x06 0x78 0x10009 0x10009 0x78 0x10019 0x10019 0x78 0x10021 0x10021 0x78>; + riscv,event-to-mhpmevent = <0x04 0x00 0x202 0x05 0x00 0x4000 0x06 0x00 0x2001 0x10009 0x00 0x102 0x10019 0x00 0x1002 0x10021 0x00 0x802>; + compatible = "riscv,pmu0", "riscv,pmu"; + interrupts-extended = <0x05 0x0d>; + }; + }; + + cpu@1 { + clock-frequency = <0x00>; + compatible = "eswin,eic770x", "riscv"; + d-cache-block-size = <0x40>; + d-cache-sets = <0x80>; + d-cache-size = <0x8000>; + d-tlb-sets = <0x01>; + d-tlb-size = <0x20>; + device_type = "cpu"; + hardware-exec-breakpoint-count = <0x04>; + hwpf-distanceBits = <0x06>; + hwpf-hitCacheThrdBits = <0x05>; + hwpf-hitMSHRThrdBits = <0x04>; + hwpf-l2pfPoolSize = <0x0a>; + hwpf-nIssQEnt = <0x06>; + hwpf-nPrefetchQueueEntries = <0x08>; + hwpf-nStreams = <0x10>; + hwpf-qFullnessThrdBits = <0x04>; + hwpf-windowBits = <0x06>; + i-cache-block-size = <0x40>; + i-cache-sets = <0x80>; + i-cache-size = <0x8000>; + i-tlb-sets = <0x01>; + i-tlb-size = <0x20>; + mmu-type = "riscv,sv48"; + next-level-cache = <0x06>; + reg = <0x01>; + riscv,isa-base = "rv64i"; + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "h", "zicsr", "zifencei", "zba", "zbb", "sscofpmf"; + riscv,pmpgranularity = <0x1000>; + riscv,pmpregions = <0x08>; + sifive,buserror = <0x07>; + status = "okay"; + timebase-frequency = <0xf4240>; + tlb-split; + clocks = <0x03 0x1f5>; + operating-points-v2 = <0x04>; + + interrupt-controller { + #interrupt-cells = <0x01>; + compatible = "riscv,cpu-intc"; + interrupt-controller; + phandle = <0x08>; + }; + + pmu { + riscv,raw-event-to-mhpmcounters = <0x00 0x00 0xffffffff 0xff 0x78 0x00 0x01 0xffffffff 0xfffe07ff 0x78 0x00 0x02 0xffffffff 0xfffe00ff 0x78 0x00 0x03 0xfffffffc 0xff 0x78 0x00 0x04 0xffffffc0 0xff 0x78 0x00 0x05 0xffffffff 0xfffffdff 0x78 0x00 0x06 0xfffffe00 0x110204ff 0x78 0x00 0x07 0xffffffff 0xf00000ff 0x78 0x00 0x08 0xfffffe04 0xff 0x78 0x00 0x09 0xffffffff 0xffffc0ff 0x78 0x00 0x0a 0xffffffff 0xf00000ff 0x78 0x00 0x0b 0xffffffff 0xfffffcff 0x78 0x00 0x0c 0xfffffff0 0xff 0x78 0x00 0x0d 0xffffffff 0x800000ff 0x78 0x00 0x0e 0xffffffff 0xf80000ff 0x78 0x00 0x0f 0xfffffffc 0xff 0x78>; + riscv,event-to-mhpmcounters = <0x01 0x01 0x01 0x02 0x02 0x02 0x04 0x06 0x78 0x10009 0x10009 0x78 0x10019 0x10019 0x78 0x10021 0x10021 0x78>; + riscv,event-to-mhpmevent = <0x04 0x00 0x202 0x05 0x00 0x4000 0x06 0x00 0x2001 0x10009 0x00 0x102 0x10019 0x00 0x1002 0x10021 0x00 0x802>; + compatible = "riscv,pmu0", "riscv,pmu"; + interrupts-extended = <0x08 0x0d>; + }; + }; + + cpu@2 { + clock-frequency = <0x00>; + compatible = "eswin,eic770x", "riscv"; + d-cache-block-size = <0x40>; + d-cache-sets = <0x80>; + d-cache-size = <0x8000>; + d-tlb-sets = <0x01>; + d-tlb-size = <0x20>; + device_type = "cpu"; + hardware-exec-breakpoint-count = <0x04>; + hwpf-distanceBits = <0x06>; + hwpf-hitCacheThrdBits = <0x05>; + hwpf-hitMSHRThrdBits = <0x04>; + hwpf-l2pfPoolSize = <0x0a>; + hwpf-nIssQEnt = <0x06>; + hwpf-nPrefetchQueueEntries = <0x08>; + hwpf-nStreams = <0x10>; + hwpf-qFullnessThrdBits = <0x04>; + hwpf-windowBits = <0x06>; + i-cache-block-size = <0x40>; + i-cache-sets = <0x80>; + i-cache-size = <0x8000>; + i-tlb-sets = <0x01>; + i-tlb-size = <0x20>; + mmu-type = "riscv,sv48"; + next-level-cache = <0x09>; + reg = <0x02>; + riscv,isa-base = "rv64i"; + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "h", "zicsr", "zifencei", "zba", "zbb", "sscofpmf"; + riscv,pmpgranularity = <0x1000>; + riscv,pmpregions = <0x08>; + sifive,buserror = <0x0a>; + status = "okay"; + timebase-frequency = <0xf4240>; + tlb-split; + clocks = <0x03 0x1f6>; + operating-points-v2 = <0x04>; + + interrupt-controller { + #interrupt-cells = <0x01>; + compatible = "riscv,cpu-intc"; + interrupt-controller; + phandle = <0x0b>; + }; + + pmu { + riscv,raw-event-to-mhpmcounters = <0x00 0x00 0xffffffff 0xff 0x78 0x00 0x01 0xffffffff 0xfffe07ff 0x78 0x00 0x02 0xffffffff 0xfffe00ff 0x78 0x00 0x03 0xfffffffc 0xff 0x78 0x00 0x04 0xffffffc0 0xff 0x78 0x00 0x05 0xffffffff 0xfffffdff 0x78 0x00 0x06 0xfffffe00 0x110204ff 0x78 0x00 0x07 0xffffffff 0xf00000ff 0x78 0x00 0x08 0xfffffe04 0xff 0x78 0x00 0x09 0xffffffff 0xffffc0ff 0x78 0x00 0x0a 0xffffffff 0xf00000ff 0x78 0x00 0x0b 0xffffffff 0xfffffcff 0x78 0x00 0x0c 0xfffffff0 0xff 0x78 0x00 0x0d 0xffffffff 0x800000ff 0x78 0x00 0x0e 0xffffffff 0xf80000ff 0x78 0x00 0x0f 0xfffffffc 0xff 0x78>; + riscv,event-to-mhpmcounters = <0x01 0x01 0x01 0x02 0x02 0x02 0x04 0x06 0x78 0x10009 0x10009 0x78 0x10019 0x10019 0x78 0x10021 0x10021 0x78>; + riscv,event-to-mhpmevent = <0x04 0x00 0x202 0x05 0x00 0x4000 0x06 0x00 0x2001 0x10009 0x00 0x102 0x10019 0x00 0x1002 0x10021 0x00 0x802>; + compatible = "riscv,pmu0", "riscv,pmu"; + interrupts-extended = <0x0b 0x0d>; + }; + }; + + cpu@3 { + clock-frequency = <0x00>; + compatible = "eswin,eic770x", "riscv"; + d-cache-block-size = <0x40>; + d-cache-sets = <0x80>; + d-cache-size = <0x8000>; + d-tlb-sets = <0x01>; + d-tlb-size = <0x20>; + device_type = "cpu"; + hardware-exec-breakpoint-count = <0x04>; + hwpf-distanceBits = <0x06>; + hwpf-hitCacheThrdBits = <0x05>; + hwpf-hitMSHRThrdBits = <0x04>; + hwpf-l2pfPoolSize = <0x0a>; + hwpf-nIssQEnt = <0x06>; + hwpf-nPrefetchQueueEntries = <0x08>; + hwpf-nStreams = <0x10>; + hwpf-qFullnessThrdBits = <0x04>; + hwpf-windowBits = <0x06>; + i-cache-block-size = <0x40>; + i-cache-sets = <0x80>; + i-cache-size = <0x8000>; + i-tlb-sets = <0x01>; + i-tlb-size = <0x20>; + mmu-type = "riscv,sv48"; + next-level-cache = <0x0c>; + reg = <0x03>; + riscv,isa-base = "rv64i"; + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "h", "zicsr", "zifencei", "zba", "zbb", "sscofpmf"; + riscv,pmpgranularity = <0x1000>; + riscv,pmpregions = <0x08>; + sifive,buserror = <0x0d>; + status = "okay"; + timebase-frequency = <0xf4240>; + tlb-split; + clocks = <0x03 0x1f7>; + operating-points-v2 = <0x04>; + + interrupt-controller { + #interrupt-cells = <0x01>; + compatible = "riscv,cpu-intc"; + interrupt-controller; + phandle = <0x0e>; + }; + + pmu { + riscv,raw-event-to-mhpmcounters = <0x00 0x00 0xffffffff 0xff 0x78 0x00 0x01 0xffffffff 0xfffe07ff 0x78 0x00 0x02 0xffffffff 0xfffe00ff 0x78 0x00 0x03 0xfffffffc 0xff 0x78 0x00 0x04 0xffffffc0 0xff 0x78 0x00 0x05 0xffffffff 0xfffffdff 0x78 0x00 0x06 0xfffffe00 0x110204ff 0x78 0x00 0x07 0xffffffff 0xf00000ff 0x78 0x00 0x08 0xfffffe04 0xff 0x78 0x00 0x09 0xffffffff 0xffffc0ff 0x78 0x00 0x0a 0xffffffff 0xf00000ff 0x78 0x00 0x0b 0xffffffff 0xfffffcff 0x78 0x00 0x0c 0xfffffff0 0xff 0x78 0x00 0x0d 0xffffffff 0x800000ff 0x78 0x00 0x0e 0xffffffff 0xf80000ff 0x78 0x00 0x0f 0xfffffffc 0xff 0x78>; + riscv,event-to-mhpmcounters = <0x01 0x01 0x01 0x02 0x02 0x02 0x04 0x06 0x78 0x10009 0x10009 0x78 0x10019 0x10019 0x78 0x10021 0x10021 0x78>; + riscv,event-to-mhpmevent = <0x04 0x00 0x202 0x05 0x00 0x4000 0x06 0x00 0x2001 0x10009 0x00 0x102 0x10019 0x00 0x1002 0x10021 0x00 0x802>; + compatible = "riscv,pmu0", "riscv,pmu"; + interrupts-extended = <0x0e 0x0d>; + }; + }; + }; + + memory@80000000 { + compatible = "sifive,axi4-mem-port", "sifive,axi4-port", "sifive,mem-port"; + device_type = "memory"; + reg = <0x00 0x80000000 0x7f 0x80000000>; + sifive,port-width-bytes = <0x20>; + phandle = <0x13>; + }; + + soc { + #address-cells = <0x02>; + #size-cells = <0x02>; + compatible = "SiFive,FU800-soc", "fu800-soc", "sifive-soc", "simple-bus"; + ranges; + + authentication-controller { + compatible = "sifive,authentication0"; + sifive,auth-types = "fuse"; + }; + + axi4-sys-port@40000000 { + #address-cells = <0x01>; + #size-cells = <0x01>; + compatible = "sifive,axi4-sys-port", "sifive,axi4-port", "sifive,sys-port", "simple-external-bus", "simple-bus"; + ranges = <0x40000000 0x00 0x40000000 0x40000000>; + sifive,port-width-bytes = <0x10>; + }; + + axi4-sys-port@8000000000 { + #address-cells = <0x02>; + #size-cells = <0x02>; + compatible = "sifive,axi4-sys-port", "sifive,axi4-port", "sifive,sys-port", "simple-external-bus", "simple-bus"; + ranges = <0x80 0x00 0x80 0x00 0x180 0x00>; + sifive,port-width-bytes = <0x10>; + }; + + basic-bus-blocker@200000 { + compatible = "sifive,basic-bus-blocker1"; + reg = <0x00 0x200000 0x00 0x1000>; + reg-names = "control"; + }; + + basic-bus-blocker@202000 { + compatible = "sifive,basic-bus-blocker1"; + reg = <0x00 0x202000 0x00 0x1000>; + reg-names = "control"; + }; + + basic-bus-blocker@204000 { + compatible = "sifive,basic-bus-blocker1"; + reg = <0x00 0x204000 0x00 0x1000>; + reg-names = "control"; + }; + + burst-bundler@10010000 { + compatible = "sifive,burst-bundler0"; + reg = <0x00 0x10010000 0x00 0x1000>; + reg-names = "control"; + }; + + bus-error-unit@hart0 { + compatible = "sifive,buserror"; + interrupt-parent = <0x0f>; + interrupts = <0x205>; + reg = <0x00 0x1700000 0x00 0x1000>; + reg-names = "control"; + phandle = <0x02>; + }; + + bus-error-unit@hart1 { + compatible = "sifive,buserror"; + interrupt-parent = <0x0f>; + interrupts = <0x206>; + reg = <0x00 0x1701000 0x00 0x1000>; + reg-names = "control"; + phandle = <0x07>; + }; + + bus-error-unit@hart2 { + compatible = "sifive,buserror"; + interrupt-parent = <0x0f>; + interrupts = <0x207>; + reg = <0x00 0x1702000 0x00 0x1000>; + reg-names = "control"; + phandle = <0x0a>; + }; + + bus-error-unit@hart3 { + compatible = "sifive,buserror"; + interrupt-parent = <0x0f>; + interrupts = <0x208>; + reg = <0x00 0x1703000 0x00 0x1000>; + reg-names = "control"; + phandle = <0x0d>; + }; + + cache-controller@2010000 { + cache-block-size = <0x40>; + cache-level = <0x03>; + cache-sets = <0x1000>; + cache-size = <0x400000>; + cache-unified; + compatible = "sifive,eic7700"; + interrupt-parent = <0x0f>; + interrupts = <0x01 0x03 0x04 0x02>; + next-level-cache = <0x10 0x11 0x12 0x13>; + reg = <0x00 0x2010000 0x00 0x4000 0x00 0x8000000 0x00 0x400000>; + reg-names = "control", "sideband"; + sifive,a-mshr-count = <0x3c>; + sifive,bank-count = <0x04>; + sifive,ecc-granularity = <0x08>; + sifive,max-master-id = <0x0d>; + sifive,perfmon-counters = <0x06>; + numa-node-id = <0x00>; + phandle = <0x14>; + }; + + debug-controller@0 { + compatible = "sifive,debug-100", "riscv,debug-100"; + debug-attach = "jtag"; + reg = <0x00 0x00 0x00 0x1000>; + reg-names = "control"; + }; + + error-device@1000 { + compatible = "sifive,error0"; + reg = <0x00 0x1000 0x00 0x3000 0x00 0x5000 0x00 0x13000 0x00 0x19000 0x00 0xe7000 0x00 0x114000 0x00 0xec000 0x00 0x201000 0x00 0x1000 0x00 0x203000 0x00 0x1000 0x00 0x205000 0x00 0x14fb000 0x00 0x1704000 0x00 0x8fc000 0x00 0x2014000 0x00 0x5fec000 0x00 0x8400000 0x00 0x3c00000 0x00 0x10000000 0x00 0x3000 0x00 0x10004000 0x00 0xc000 0x00 0x10011000 0x00 0x1f000 0x00 0x10034000 0x00 0x9fcc000 0x00 0x1a400000 0x00 0x5c00000>; + }; + + error-device@10003000 { + compatible = "sifive,error0"; + reg = <0x00 0x10003000 0x00 0x1000>; + phandle = <0x10>; + }; + + interrupt-controller@c000000 { + #interrupt-cells = <0x01>; + compatible = "sifive,plic-1.0.0"; + interrupt-controller; + interrupts-extended = <0x05 0xffffffff 0x05 0x09 0x08 0xffffffff 0x08 0x09 0x0b 0xffffffff 0x0b 0x09 0x0e 0xffffffff 0x0e 0x09>; + reg = <0x00 0xc000000 0x00 0x4000000>; + reg-names = "control"; + riscv,max-priority = <0x07>; + riscv,ndev = <0x208>; + phandle = <0x0f>; + }; + + order-obliterator@10030000 { + compatible = "sifive,order-obliterator0"; + interrupt-parent = <0x0f>; + interrupts = <0x204>; + reg = <0x00 0x10030000 0x00 0x4000>; + reg-names = "control"; + }; + + pl2@104000 { + cache-block-size = <0x40>; + cache-level = <0x02>; + cache-sets = <0x200>; + cache-size = <0x40000>; + cache-unified; + compatible = "sifive,pL2Cache0", "cache"; + next-level-cache = <0x14>; + reg = <0x00 0x104000 0x00 0x4000>; + reg-names = "control"; + sifive,ecc-granularity = <0x10>; + sifive,perfmon-counters = <0x06>; + phandle = <0x01>; + }; + + pl2@108000 { + cache-block-size = <0x40>; + cache-level = <0x02>; + cache-sets = <0x200>; + cache-size = <0x40000>; + cache-unified; + compatible = "sifive,pL2Cache0", "cache"; + next-level-cache = <0x14>; + reg = <0x00 0x108000 0x00 0x4000>; + reg-names = "control"; + sifive,ecc-granularity = <0x10>; + sifive,perfmon-counters = <0x06>; + phandle = <0x06>; + }; + + pl2@10c000 { + cache-block-size = <0x40>; + cache-level = <0x02>; + cache-sets = <0x200>; + cache-size = <0x40000>; + cache-unified; + compatible = "sifive,pL2Cache0", "cache"; + next-level-cache = <0x14>; + reg = <0x00 0x10c000 0x00 0x4000>; + reg-names = "control"; + sifive,ecc-granularity = <0x10>; + sifive,perfmon-counters = <0x06>; + phandle = <0x09>; + }; + + pl2@110000 { + cache-block-size = <0x40>; + cache-level = <0x02>; + cache-sets = <0x200>; + cache-size = <0x40000>; + cache-unified; + compatible = "sifive,pL2Cache0", "cache"; + next-level-cache = <0x14>; + reg = <0x00 0x110000 0x00 0x4000>; + reg-names = "control"; + sifive,ecc-granularity = <0x10>; + sifive,perfmon-counters = <0x06>; + phandle = <0x0c>; + }; + + rom@1a000000 { + compatible = "ucbbar,cacheable-zero0"; + reg = <0x00 0x1a000000 0x00 0x400000>; + phandle = <0x11>; + }; + + rom@3a000000 { + compatible = "ucbbar,cacheable-zero0"; + reg = <0x00 0x3a000000 0x00 0x400000>; + phandle = <0x12>; + }; + + subsystem_pbus_clock { + #clock-cells = <0x00>; + clock-frequency = <0x989680>; + clock-output-names = "subsystem_pbus_clock"; + compatible = "fixed-clock"; + }; + + teststatus@4000 { + compatible = "sifive,test0"; + reg = <0x00 0x4000 0x00 0x1000>; + reg-names = "control"; + }; + + tl-address-adjuster@20000000 { + #address-cells = <0x01>; + #size-cells = <0x01>; + compatible = "sifive,tl-inter-sys-port", "sifive,tl-port", "simple-external-bus", "simple-bus"; + ranges = <0x20000000 0x00 0x20000000 0x1a000000 0x3a400000 0x00 0x3a400000 0x5c00000>; + sifive,port-width-bytes = <0x08>; + }; + + tl-inter-mem-master-port@80000000 { + #address-cells = <0x02>; + #size-cells = <0x02>; + compatible = "sifive,tl-inter-mem-master-port", "sifive,tl-port", "sifive,inter-mem-master-port", "simple-external-bus", "simple-bus"; + ranges = <0x00 0x80000000 0x00 0x80000000 0x7f 0x80000000>; + sifive,port-width-bytes = <0x20>; + }; + + trace-encoder-0@100000 { + compatible = "sifive,trace0"; + reg = <0x00 0x100000 0x00 0x1000>; + reg-names = "control"; + }; + + trace-encoder-1@101000 { + compatible = "sifive,trace0"; + reg = <0x00 0x101000 0x00 0x1000>; + reg-names = "control"; + }; + + trace-encoder-2@102000 { + compatible = "sifive,trace0"; + reg = <0x00 0x102000 0x00 0x1000>; + reg-names = "control"; + }; + + trace-encoder-3@103000 { + compatible = "sifive,trace0"; + reg = <0x00 0x103000 0x00 0x1000>; + reg-names = "control"; + }; + + trace-funnel-0@18000 { + compatible = "sifive,trace0"; + reg = <0x00 0x18000 0x00 0x1000>; + reg-names = "control"; + }; + + serial@0x50900000 { + compatible = "snps,dw-apb-uart"; + reg = <0x00 0x50900000 0x00 0x10000>; + clock-frequency = <0xbebc200>; + interrupt-parent = <0x0f>; + interrupts = <0x64>; + reg-shift = <0x02>; + reg-io-width = <0x04>; + numa-node-id = <0x00>; + status = "okay"; + }; + + serial@0x50910000 { + compatible = "snps,dw-apb-uart"; + reg = <0x00 0x50910000 0x00 0x10000>; + clock-frequency = <0xbebc200>; + interrupt-parent = <0x0f>; + interrupts = <0x65>; + reg-shift = <0x02>; + reg-io-width = <0x04>; + numa-node-id = <0x00>; + status = "okay"; + }; + + serial@0x50920000 { + compatible = "snps,dw-apb-uart"; + reg = <0x00 0x50920000 0x00 0x10000>; + clock-frequency = <0xbebc200>; + interrupt-parent = <0x0f>; + interrupts = <0x66>; + reg-shift = <0x02>; + reg-io-width = <0x04>; + numa-node-id = <0x00>; + status = "okay"; + }; + + serial@0x50930000 { + compatible = "snps,dw-apb-uart"; + reg = <0x00 0x50930000 0x00 0x10000>; + clock-frequency = <0xbebc200>; + interrupt-parent = <0x0f>; + interrupts = <0x67>; + reg-shift = <0x02>; + reg-io-width = <0x04>; + numa-node-id = <0x00>; + status = "disabled"; + }; + + serial@0x50940000 { + compatible = "snps,dw-apb-uart"; + reg = <0x00 0x50940000 0x00 0x10000>; + clock-frequency = <0xbebc200>; + interrupt-parent = <0x0f>; + interrupts = <0x68>; + reg-shift = <0x02>; + reg-io-width = <0x04>; + numa-node-id = <0x00>; + status = "disabled"; + }; + + scu_sys_con@0x51810000 { + compatible = "eswin,eic7700-scu-sys-con", "syscon", "simple-mfd"; + #syscon-cells = <0x02>; + #size-cells = <0x02>; + reg = <0x00 0x51810000 0x00 0x8000>; + numa-node-id = <0x00>; + phandle = <0x16>; + + noc@51810324 { + compatible = "eswin,eic7700-noc-wdt"; + interrupt-parent = <0x0f>; + interrupts = <0x188 0x189 0x18a 0x18b 0x18c 0x18d 0x18e 0x18f 0x190 0x191 0x192 0x193 0x194 0x195 0x196 0x197 0x198 0x199 0x19a 0x19b 0x19c 0x19d 0x19e 0x19f 0x1a0 0x1a1 0x1a2 0x1a3 0x1a4 0x1a5 0x1a6 0x1a7 0x1a8 0x1a9 0x1aa>; + eswin,syscrg_csr = <0x15 0x100 0xffff>; + status = "okay"; + }; + }; + + sys-crg@51828000 { + compatible = "eswin,eic7700-sys-crg", "syscon", "simple-mfd"; + reg = <0x00 0x51828000 0x00 0x80000>; + numa-node-id = <0x00>; + phandle = <0x15>; + + reset-controller { + compatible = "eswin,eic7700-reset"; + #reset-cells = <0x02>; + status = "okay"; + phandle = <0x17>; + }; + + clock-controller { + compatible = "eswin,eic7700-clock"; + #clock-cells = <0x01>; + status = "okay"; + phandle = <0x03>; + }; + }; + + hfclk { + #clock-cells = <0x00>; + compatible = "fixed-clock"; + clock-frequency = <0xbebc200>; + clock-output-names = "hfclk"; + }; + + hsp_sp_top_csr@0x50440000 { + compatible = "eswin,eic7700-hsp-sp-csr", "syscon"; + #size-cells = <0x02>; + reg = <0x00 0x50440000 0x00 0x2000>; + phandle = <0x19>; + }; + + iommu@50c00000 { + compatible = "arm,smmu-v3"; + reg = <0x00 0x50c00000 0x00 0x100000>; + eswin,syscfg = <0x16 0x3fc>; + interrupt-parent = <0x0f>; + interrupts = <0x164 0x168 0x165 0x166>; + interrupt-names = "eventq", "gerror", "priq", "cmdq-sync"; + #iommu-cells = <0x01>; + resets = <0x17 0x05 0x01 0x17 0x05 0x02 0x17 0x05 0x10 0x17 0x05 0x20 0x17 0x05 0x40 0x17 0x05 0x80 0x17 0x05 0x100 0x17 0x05 0x200 0x17 0x05 0x400 0x17 0x05 0x800>; + reset-names = "axi_rst", "cfg_rst", "tbu0_rst", "tbu1_rst", "tbu2_rst", "tbu3_rst", "tbu4_rst", "tbu5_rst", "tbu6_rst", "tbu7_rst"; + status = "okay"; + numa-node-id = <0x00>; + phandle = <0x18>; + }; + + pmu@50c02000 { + compatible = "arm,smmu-v3-pmcg"; + reg = <0x00 0x50c02000 0x00 0x1000 0x00 0x50c22000 0x00 0x1000>; + eswin,syscfg = <0x16 0x3fc>; + interrupt-parent = <0x0f>; + interrupts = <0x16b>; + status = "disabled"; + numa-node-id = <0x00>; + }; + + power-controller@51808000 { + #address-cells = <0x01>; + #size-cells = <0x00>; + compatible = "eswin,eic7700-pmu-controller"; + reg = <0x00 0x51808000 0x00 0x8000>; + numa-node-id = <0x00>; + status = "okay"; + + eic7700-pmu-controller-port@0 { + compatible = "eswin,eic7700-pmu-controller-port"; + reg_base = <0x00>; + power_status = <0x01>; + power_delay = <0x06 0x06 0x03 0x03>; + clock_delay = <0x04 0x02 0x02 0x02>; + reset_delay = <0x02 0x04 0x02 0x02>; + clamp_delay = <0x03 0x03 0x02 0x02>; + label = "D0_PCIE"; + tbus = <0x03>; + }; + + eic7700-pmu-controller-port@40 { + compatible = "eswin,eic7700-pmu-controller-port"; + reg_base = <0x40>; + power_status = <0x01>; + power_delay = <0x06 0x06 0x03 0x03>; + clock_delay = <0x04 0x02 0x02 0x02>; + reset_delay = <0x02 0x04 0x02 0x02>; + clamp_delay = <0x03 0x03 0x02 0x02>; + tbus = <0x71>; + label = "D0_DSP1"; + }; + + eic7700-pmu-controller-port@80 { + compatible = "eswin,eic7700-pmu-controller-port"; + reg_base = <0x80>; + power_status = <0x01>; + power_delay = <0x06 0x06 0x03 0x03>; + clock_delay = <0x04 0x02 0x02 0x02>; + reset_delay = <0x02 0x04 0x02 0x02>; + clamp_delay = <0x03 0x03 0x02 0x02>; + tbus = <0x00 0x00>; + label = "D0_VI"; + }; + + eic7700-pmu-controller-port@c0 { + compatible = "eswin,eic7700-pmu-controller-port"; + reg_base = <0xc0>; + power_status = <0x01>; + power_delay = <0x06 0x06 0x03 0x03>; + clock_delay = <0x04 0x02 0x02 0x02>; + reset_delay = <0x02 0x04 0x02 0x02>; + clamp_delay = <0x03 0x03 0x02 0x02>; + label = "D0_VO"; + }; + + eic7700-pmu-controller-port@140 { + compatible = "eswin,eic7700-pmu-controller-port"; + reg_base = <0x140>; + power_status = <0x01>; + power_delay = <0x06 0x06 0x03 0x03>; + clock_delay = <0x04 0x02 0x02 0x02>; + reset_delay = <0x02 0x04 0x02 0x02>; + clamp_delay = <0x03 0x03 0x02 0x02>; + tbus = <0x10 0x13 0x11 0x12>; + label = "D0_CODEC"; + }; + + eic7700-pmu-controller-port@200 { + compatible = "eswin,eic7700-pmu-controller-port"; + reg_base = <0x200>; + power_status = <0x01>; + power_delay = <0x06 0x06 0x03 0x03>; + clock_delay = <0x04 0x02 0x02 0x02>; + reset_delay = <0x02 0x04 0x02 0x02>; + clamp_delay = <0x03 0x03 0x02 0x02>; + tbus = <0x72>; + label = "D0_DSP2"; + }; + + eic7700-pmu-controller-port@240 { + compatible = "eswin,eic7700-pmu-controller-port"; + reg_base = <0x240>; + power_status = <0x01>; + power_delay = <0x06 0x06 0x03 0x03>; + clock_delay = <0x04 0x02 0x02 0x02>; + reset_delay = <0x02 0x04 0x02 0x02>; + clamp_delay = <0x03 0x03 0x02 0x02>; + tbus = <0x73>; + label = "D0_DSP3"; + }; + }; + + dma-controller-hsp@0x50430000 { + compatible = "snps,axi-dma-1.01a"; + reg = <0x00 0x50430000 0x00 0x10000>; + interrupt-parent = <0x0f>; + interrupts = <0x39>; + #dma-cells = <0x02>; + clocks = <0x03 0x2b2>; + clock-names = "core-clk"; + resets = <0x17 0x07 0x4000 0x17 0x07 0x100000>; + reset-names = "arst", "prst"; + dma-channels = <0x0c>; + snps,dma-masters = <0x01>; + snps,priority = <0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b>; + snps,data-width = <0x02>; + snps,block-size = <0x80000 0x80000 0x80000 0x80000 0x80000 0x80000 0x80000 0x80000 0x80000 0x80000 0x80000 0x80000>; + snps,axi-max-burst-len = <0x10>; + snps,max-msize = <0x40>; + iommus = <0x18 0x01>; + tbus = <0x02>; + eswin,hsp_sp_csr = <0x19 0x104c>; + eswin,syscfg = <0x16 0x3004 0x370>; + numa-node-id = <0x00>; + status = "okay"; + }; + + dma-controller-aon@0x518c0000 { + compatible = "snps,axi-dma-1.01a"; + reg = <0x00 0x518c0000 0x00 0x10000>; + interrupt-parent = <0x0f>; + interrupts = <0x121>; + #dma-cells = <0x02>; + clocks = <0x03 0x266>; + clock-names = "core-clk"; + resets = <0x17 0x27 0x01 0x17 0x27 0x02>; + reset-names = "arst", "prst"; + dma-channels = <0x10>; + snps,dma-masters = <0x02>; + snps,priority = <0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f>; + snps,data-width = <0x03>; + snps,block-size = <0x80000 0x80000 0x80000 0x80000 0x80000 0x80000 0x80000 0x80000 0x80000 0x80000 0x80000 0x80000 0x80000 0x80000 0x80000 0x80000>; + snps,axi-max-burst-len = <0x20>; + snps,max-msize = <0x40>; + #size-cells = <0x02>; + #address-cells = <0x02>; + dma-ranges = <0x00 0x80000000 0x00 0x80000000 0x100 0x00>; + iommus = <0x18 0x1a>; + tbus = <0x04>; + eswin,syscfg = <0x16 0x3004 0x370>; + numa-node-id = <0x00>; + status = "okay"; + phandle = <0x27>; + }; + + ethernet@50400000 { + compatible = "eswin,eic7700-qos-eth"; + reg = <0x00 0x50400000 0x00 0x10000>; + interrupt-parent = <0x0f>; + interrupt-names = "macirq"; + interrupts = <0x3d>; + phy-mode = "rgmii"; + numa-node-id = <0x00>; + id = <0x00>; + status = "okay"; + clocks = <0x03 0x226 0x03 0x227 0x03 0x228>; + clock-names = "app", "stmmaceth", "tx"; + resets = <0x17 0x07 0x4000000>; + reset-names = "ethrst"; + tbus = <0x02>; + eswin,hsp_sp_csr = <0x19 0x1030 0x100 0x108>; + eswin,syscrg_csr = <0x15 0x148 0x14c>; + snps,axi-config = <0x1a>; + pinctrl-names = "default"; + pinctrl-0 = <0x1b>; + rst-gpios = <0x1c 0x0a 0x01>; + eswin,rgmiisel = <0x1d 0x290 0x03>; + eswin,led-cfgs = <0x6100 0xa40 0x420>; + + stmmac-axi-config { + snps,blen = <0x00 0x00 0x00 0x00 0x10 0x08 0x04>; + snps,rd_osr_lmt = <0x02>; + snps,wr_osr_lmt = <0x02>; + snps,lpi_en = <0x00>; + phandle = <0x1a>; + }; + }; + + ethernet@50410000 { + compatible = "eswin,eic7700-qos-eth"; + reg = <0x00 0x50410000 0x00 0x10000>; + interrupt-parent = <0x0f>; + interrupt-names = "macirq"; + interrupts = <0x46>; + phy-mode = "rgmii"; + numa-node-id = <0x00>; + id = <0x01>; + status = "okay"; + clocks = <0x03 0x226 0x03 0x227 0x03 0x229>; + clock-names = "app", "stmmaceth", "tx"; + resets = <0x17 0x07 0x2000000>; + reset-names = "ethrst"; + tbus = <0x02>; + eswin,hsp_sp_csr = <0x19 0x1034 0x200 0x208>; + eswin,syscrg_csr = <0x15 0x148 0x14c>; + snps,axi-config = <0x1e>; + pinctrl-names = "default"; + pinctrl-0 = <0x1f>; + rst-gpios = <0x1c 0x0f 0x01>; + eswin,rgmiisel = <0x1d 0x294 0x03>; + eswin,led-cfgs = <0x6100 0xa40 0x420>; + + stmmac-axi-config { + snps,blen = <0x00 0x00 0x00 0x00 0x10 0x08 0x04>; + snps,rd_osr_lmt = <0x02>; + snps,wr_osr_lmt = <0x02>; + snps,lpi_en = <0x00>; + phandle = <0x1e>; + }; + }; + + noc { + compatible = "eswin,noc", "simple-bus"; + #address-cells = <0x02>; + #size-cells = <0x02>; + ranges; + + d0_cfg_noc { + compatible = "eswin,eic7700-noc"; + #address-cells = <0x02>; + #size-cells = <0x02>; + ranges; + reg = <0x00 0x52060000 0x00 0x4000>; + interrupts = <0x1be>; + interrupt-names = "error"; + interrupt-parent = <0x0f>; + errlogger,idx = <0x00 0x01 0x03 0x05>; + status = "okay"; + + sideband_manager@52061000 { + compatible = "eswin,win2xxx-noc-sideband-manager"; + reg = <0x00 0x52061000 0x00 0x10>; + SenseIn0 = <0x1e 0x00 0x1f 0x01 0x20 0x02 0x21 0x03 0x22 0x04 0x23 0x05 0x24 0x06 0x25 0x07 0x26 0x08 0x27 0x09 0x28 0x0a 0x29 0x0b 0x2a 0x0c 0x2b 0x0d 0x2c 0x0e 0x2d 0x0f 0x2e 0x10 0x2f 0x11 0x30 0x12 0x31 0x13 0x32 0x14>; + bf-name = "SBM_CLMM", "SBM_CNOC_AON", "SBM_CNOC_DDRT0_CTRL", "SBM_CNOC_DDRT0_PHY ", "SBM_CNOC_DDRT1_CTRL", "SBM_CNOC_DDRT1_PHY", "SBM_CNOC_DSPT", "SBM_CNOC_GPU", "SBM_CNOC_HSP", "SBM_CNOC_LSP_APB2", "SBM_CNOC_LSP_APB3", "SBM_CNOC_LSP_APB4", "SBM_CNOC_LSP_APB6", "SBM_CNOC_MCPUT_D2D", "SBM_CNOC_NPU", "SBM_CNOC_PCIET_P", "SBM_CNOC_PCIET_X", "SBM_CNOC_TCU", "SBM_CNOC_VC", "SBM_CNOC_VI", "SBM_CNOC_VO"; + }; + + ErrorLogger0 { + compatible = "eswin,eic7700,register"; + offset,length = <0x14 0x20>; + description = "Register 0 to log errors"; + + lock { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x00 0x01>; + lut = "Not Locked", "Locked"; + }; + + OpCode { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x01 0x04>; + lut = "RD: data read with incrementing address", "RDW: data read with wrapping address", "RDL: allocates monitor in the Target with incrementing address", "RDX: exclusive read with incrementing address", "WR: data write with incrementing address", "WRW: data write with wrapping address", "WRC: conditional write if matching monitor in Target is found", "RSV: reserved", "PRE: preamble packet of linked sequence (locked sequence)", "URG: urgency packet used for QoS (status must be REQ)"; + }; + + ErrCode { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x08 0x03>; + lut = "SLV (error source: Target): error detected by the Slave without any information or no Error", "DEC (error source: Initiator NIU): decode error", "UNS (error source: Target NIU): unsupported access type", "DISC (error source: Power Disconnect): disconnected Target or NoC domain", "SEC (error source: Initiator NIU or Firewall): security error", "HIDE (error source: Firewall): hidden security error. Will be reported as OK to the initiator", "TMO (error source: Target NIU): time-out", "RSV: reserved"; + }; + + Len1 { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x10 0x0c>; + }; + + Format { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x1f 0x01>; + lut = "NTTP v3.0 (Invalid)", "NTTP v3.5 (Ok)"; + }; + }; + + ErrorLogger1 { + compatible = "eswin,eic7700,register", "eswin,eic7700,noc,filter,routeid"; + offset,length = <0x18 0x20>; + description = "Register 1 to log errors"; + + InitFlow { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x0f 0x01>; + lut = "snoc_cnoc/I/0"; + }; + + TargetFlow { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x0a 0x05>; + lut = "clmm/T/0", "cnoc_aon/T/0", "cnoc_ddrt0_ctrl/T/0", "cnoc_ddrt0_phy/T/0", "cnoc_ddrt1_ctrl/T/0", "cnoc_ddrt1_phy/T/0", "cnoc_dspt/T/0", "cnoc_gpu/T/0", "cnoc_hsp/T/0", "cnoc_lsp_apb2/T/0", "cnoc_lsp_apb3/T/0", "cnoc_lsp_apb4/T/0", "cnoc_lsp_apb6/T/0", "cnoc_mcput_d2d/T/0", "cnoc_npu/T/0", "cnoc_pciet_p/T/0", "cnoc_pciet_x/T/0", "cnoc_service/T/0", "cnoc_tcu/T/0", "cnoc_vc/T/0", "cnoc_vi/T/0", "cnoc_vo/T/0", "RESERVED", "RESERVED", "RESERVED", "RESERVED", "RESERVED", "RESERVED", "RESERVED", "RESERVED", "RESERVED", "RESERVED"; + }; + + TargetSubRange { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x08 0x02>; + }; + + SeqId { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x00 0x08>; + }; + }; + + ErrorLogger3 { + compatible = "eswin,eic7700,register"; + offset,length = <0x20 0x20>; + description = "Register 3 to log errors"; + aperture-link = <0x01>; + + AbsoluteAddress { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x08 0x08>; + aperture-size = <0x2e>; + aperture-idx,aperture-base = <0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x51600000 0x00 0x00 0x00 0x00 0x00 0x01 0x00 0x71600000 0x00 0x00 0x00 0x01 0x00 0x00 0x00 0x51800000 0x00 0x00 0x00 0x01 0x00 0x01 0x00 0x71800000 0x00 0x00 0x00 0x01 0x00 0x02 0x00 0x00 0x00 0x00 0x00 0x01 0x00 0x03 0x00 0x00 0x00 0x00 0x00 0x02 0x00 0x00 0x00 0x52300000 0x00 0x00 0x00 0x02 0x00 0x01 0x00 0x72300000 0x00 0x00 0x00 0x03 0x00 0x00 0x00 0x53000000 0x00 0x00 0x00 0x03 0x00 0x01 0x00 0x73000000 0x00 0x00 0x00 0x04 0x00 0x00 0x00 0x52380000 0x00 0x00 0x00 0x04 0x00 0x01 0x00 0x72380000 0x00 0x00 0x00 0x05 0x00 0x00 0x00 0x53800000 0x00 0x00 0x00 0x05 0x00 0x01 0x00 0x73800000 0x00 0x00 0x00 0x06 0x00 0x00 0x00 0x52200000 0x00 0x00 0x00 0x06 0x00 0x01 0x00 0x72200000 0x00 0x00 0x00 0x07 0x00 0x00 0x00 0x51400000 0x00 0x00 0x00 0x07 0x00 0x01 0x00 0x71400000 0x00 0x00 0x00 0x08 0x00 0x00 0x00 0x50400000 0x00 0x00 0x00 0x08 0x00 0x01 0x00 0x70400000 0x00 0x00 0x00 0x09 0x00 0x00 0x00 0x50800000 0x00 0x00 0x00 0x09 0x00 0x01 0x00 0x70800000 0x00 0x00 0x00 0x0a 0x00 0x00 0x00 0x50900000 0x00 0x00 0x00 0x0a 0x00 0x01 0x00 0x70900000 0x00 0x00 0x00 0x0b 0x00 0x00 0x00 0x50a00000 0x00 0x00 0x00 0x0b 0x00 0x01 0x00 0x70a00000 0x00 0x00 0x00 0x0c 0x00 0x00 0x00 0x50b00000 0x00 0x00 0x00 0x0c 0x00 0x01 0x00 0x70b00000 0x00 0x00 0x00 0x0d 0x00 0x00 0x00 0x52100000 0x00 0x00 0x00 0x0d 0x00 0x01 0x00 0x72100000 0x00 0x00 0x00 0x0e 0x00 0x00 0x00 0x51c00000 0x00 0x00 0x00 0x0e 0x00 0x01 0x00 0x71c00000 0x00 0x00 0x00 0x0f 0x00 0x00 0x00 0x50000000 0x00 0x00 0x00 0x0f 0x00 0x01 0x00 0x70000000 0x00 0x00 0x00 0x10 0x00 0x00 0x00 0x54000000 0x00 0x00 0x00 0x10 0x00 0x01 0x00 0x74000000 0x00 0x00 0x00 0x11 0x00 0x00 0x00 0x52060000 0x00 0x00 0x00 0x11 0x00 0x01 0x00 0x72060000 0x00 0x00 0x00 0x12 0x00 0x00 0x00 0x50c00000 0x00 0x00 0x00 0x12 0x00 0x01 0x00 0x70c00000 0x00 0x00 0x00 0x13 0x00 0x00 0x00 0x50100000 0x00 0x00 0x00 0x13 0x00 0x01 0x00 0x70100000 0x00 0x00 0x00 0x14 0x00 0x00 0x00 0x51000000 0x00 0x00 0x00 0x14 0x00 0x01 0x00 0x71000000 0x00 0x00 0x00 0x15 0x00 0x00 0x00 0x50200000 0x00 0x00 0x00 0x15 0x00 0x01 0x00 0x70200000>; + }; + }; + + ErrorLogger5 { + compatible = "eswin,eic7700,register"; + offset,length = <0x28 0x20>; + description = "Register 5 to log errors"; + + User_flag { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x00 0x07>; + lut = "Cache_0", "Cache_1", "Cache_2", "Cache_3", "Prot_0", "Prot_1", "Prot_2"; + }; + }; + }; + + d0_llc_noc@52081400 { + compatible = "eswin,eic7700-noc"; + #address-cells = <0x02>; + #size-cells = <0x02>; + ranges; + reg = <0x00 0x52081400 0x00 0x4000>; + interrupts = <0x1b9>; + interrupt-names = "error"; + interrupt-parent = <0x0f>; + errlogger,idx = <0x00 0x01 0x03 0x04 0x05>; + status = "okay"; + stat,0 = "TracePort:ddr0_p0_req"; + stat,1 = "TracePort:ddr1_p0_req"; + + sideband_manager@52082000 { + compatible = "eswin,win2xxx-noc-sideband-manager"; + reg = <0x00 0x52082000 0x00 0x10>; + SenseIn0 = <0x3c 0x00 0x3d 0x01 0x3e 0x02 0x3f 0x03>; + bf-name = "SBM_LNOC_NPU_LLC0", "SBM_LNOC_NPU_LLC1", "SBM_LNOC_DDRT0_P0", "SBM_LNOC_DDRT1_P0"; + }; + + llcnoc_packet_ddr0_p0_req_probe@52080000 { + compatible = "eswin,win2xxx-noc-packet-probe"; + reg = <0x00 0x52080000 0x00 0x4000>; + clocks = <0x03 0x217>; + clock-names = "clk"; + interrupts = <0x1bd>; + interrupt-names = "stat"; + interrupt-parent = <0x0f>; + filter,nr = <0x01>; + counter,nr = <0x02>; + portsel = "ddr0_p0_req"; + }; + + llcnoc_packet_ddr1_p0_req_probe@52080800 { + compatible = "eswin,win2xxx-noc-packet-probe"; + reg = <0x00 0x52080800 0x00 0x4000>; + clocks = <0x03 0x21c>; + clock-names = "clk"; + interrupts = <0x1bb>; + interrupt-names = "stat"; + interrupt-parent = <0x0f>; + filter,nr = <0x01>; + counter,nr = <0x02>; + portsel = "ddr1_p0_req"; + }; + + llcnoc_trans_probe@52081000 { + #address-cells = <0x02>; + #size-cells = <0x02>; + ranges; + compatible = "eswin,win2xxx-noc-trans-probe"; + reg = <0x00 0x52081000 0x00 0x4000>; + clocks = <0x03 0x203>; + clock-names = "clk"; + interrupts = <0x1b9>; + interrupt-names = "stat"; + interrupt-parent = <0x0f>; + filter,nr = <0x02>; + counter,nr = <0x08>; + profiler,nr = <0x01>; + portsel = "npu_llc0", "npu_llc1"; + + llcnoc_trans_npu_llc0_filter@52081480 { + status = "disabled"; + compatible = "eswin,win2xxx-noc-trans-filter"; + reg = <0x00 0x52081480 0x00 0x80>; + }; + + llcnoc_trans_npu_llc1_filter@52081500 { + status = "disabled"; + compatible = "eswin,win2xxx-noc-trans-filter"; + reg = <0x00 0x52081500 0x00 0x80>; + }; + + llcnoc_trans_profiler@52081580 { + compatible = "eswin,win2xxx-noc-trans-profiler"; + reg = <0x00 0x52081580 0x00 0x80>; + }; + }; + + ErrorLogger0 { + compatible = "eswin,eic7700,register"; + offset,length = <0x14 0x20>; + description = "Register 0 to log errors"; + + lock { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x00 0x01>; + lut = "Not Locked", "Locked"; + }; + + OpCode { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x01 0x04>; + lut = "RD: data read with incrementing address", "RDW: data read with wrapping address", "RDL: allocates monitor in the Target with incrementing address", "RDX: exclusive read with incrementing address", "WR: data write with incrementing address", "WRW: data write with wrapping address", "WRC: conditional write if matching monitor in Target is found", "RSV: reserved", "PRE: preamble packet of linked sequence (locked sequence)", "URG: urgency packet used for QoS (status must be REQ)"; + }; + + ErrCode { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x08 0x03>; + lut = "SLV (error source: Target): error detected by the Slave without any information or no Error", "DEC (error source: Initiator NIU): decode error", "UNS (error source: Target NIU): unsupported access type", "DISC (error source: Power Disconnect): disconnected Target or NoC domain", "SEC (error source: Initiator NIU or Firewall): security error", "HIDE (error source: Firewall): hidden security error. Will be reported as OK to the initiator", "TMO (error source: Target NIU): time-out", "RSV: reserved"; + }; + + Len1 { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x10 0x0c>; + }; + + Format { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x1f 0x01>; + lut = "NTTP v3.0 (Invalid)", "NTTP v3.5 (Ok)"; + }; + }; + + ErrorLogger1 { + compatible = "eswin,eic7700,register", "eswin,eic7700,noc,filter,routeid"; + offset,length = <0x18 0x20>; + description = "Register 1 to log errors"; + + InitFlow { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x0e 0x02>; + lut = "npu_lnoc_llc0/I/0", "npu_lnoc_llc1/I/0", "snoc_lnoc/I/0", "RESERVED"; + }; + + TargetFlow { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x0c 0x02>; + lut = "lnoc_ddrt0_p0/T/0", "lnoc_ddrt1_p0/T/0", "lnoc_service/T/0", "RESERVED"; + }; + + TargetSubRange { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x08 0x04>; + }; + + SeqId { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x00 0x08>; + }; + }; + + ErrorLogger3 { + compatible = "eswin,eic7700,register"; + offset,length = <0x20 0x20>; + description = "Register 3 to log errors"; + aperture-link = <0x01>; + msb-link = <0x04>; + + AbsoluteAddress { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x08 0x08>; + aperture-size = <0x35>; + aperture-idx,aperture-base = <0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x80000000 0x00 0x00 0x00 0x00 0x00 0x01 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x02 0x02 0x00 0x00 0x00 0x00 0x00 0x00 0x03 0x04 0x00 0x00 0x00 0x00 0x00 0x00 0x04 0x08 0x00 0x00 0x00 0x00 0x00 0x00 0x05 0x20 0x00 0x00 0x00 0x00 0x00 0x00 0x06 0xc0 0x00 0x00 0x00 0x00 0x00 0x00 0x07 0xe0 0x00 0x00 0x00 0x00 0x00 0x00 0x08 0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x09 0x40 0x100 0x00 0x00 0x00 0x00 0x00 0x0a 0x100 0x00 0x00 0x00 0x00 0x00 0x00 0x0b 0x100 0x100 0x00 0x00 0x00 0x00 0x00 0x0c 0x00 0x00 0x00 0x00 0x00 0x01 0x00 0x00 0x00 0x80000080 0x00 0x00 0x00 0x01 0x00 0x01 0x01 0x80 0x00 0x00 0x00 0x01 0x00 0x02 0x02 0x80 0x00 0x00 0x00 0x01 0x00 0x03 0x04 0x80 0x00 0x00 0x00 0x01 0x00 0x04 0x08 0x80 0x00 0x00 0x00 0x01 0x00 0x05 0x20 0x80 0x00 0x00 0x00 0x01 0x00 0x06 0xc0 0x80 0x00 0x00 0x00 0x01 0x00 0x07 0xe0 0x80 0x00 0x00 0x00 0x01 0x00 0x08 0x40 0x80 0x00 0x00 0x00 0x01 0x00 0x09 0x40 0x180 0x00 0x00 0x00 0x01 0x00 0x0a 0x100 0x80 0x00 0x00 0x00 0x01 0x00 0x0b 0x100 0x180 0x00 0x01 0x00 0x00 0x00 0x00 0x00 0x80000000 0x00 0x01 0x00 0x00 0x00 0x01 0x01 0x00 0x00 0x01 0x00 0x00 0x00 0x02 0x02 0x00 0x00 0x01 0x00 0x00 0x00 0x03 0x04 0x00 0x00 0x01 0x00 0x00 0x00 0x04 0x08 0x00 0x00 0x01 0x00 0x00 0x00 0x05 0x20 0x00 0x00 0x01 0x00 0x00 0x00 0x06 0xc0 0x00 0x00 0x01 0x00 0x00 0x00 0x07 0xe0 0x00 0x00 0x01 0x00 0x00 0x00 0x08 0x40 0x00 0x00 0x01 0x00 0x00 0x00 0x09 0x40 0x100 0x00 0x01 0x00 0x00 0x00 0x0a 0x100 0x00 0x00 0x01 0x00 0x00 0x00 0x0b 0x100 0x100 0x00 0x01 0x00 0x00 0x00 0x0c 0x00 0x00 0x00 0x01 0x00 0x01 0x00 0x00 0x00 0x80000080 0x00 0x01 0x00 0x01 0x00 0x01 0x01 0x80 0x00 0x01 0x00 0x01 0x00 0x02 0x02 0x80 0x00 0x01 0x00 0x01 0x00 0x03 0x04 0x80 0x00 0x01 0x00 0x01 0x00 0x04 0x08 0x80 0x00 0x01 0x00 0x01 0x00 0x05 0x20 0x80 0x00 0x01 0x00 0x01 0x00 0x06 0xc0 0x80 0x00 0x01 0x00 0x01 0x00 0x07 0xe0 0x80 0x00 0x01 0x00 0x01 0x00 0x08 0x40 0x80 0x00 0x01 0x00 0x01 0x00 0x09 0x40 0x180 0x00 0x01 0x00 0x01 0x00 0x0a 0x100 0x80 0x00 0x01 0x00 0x01 0x00 0x0b 0x100 0x180 0x00 0x02 0x00 0x02 0x00 0x00 0x00 0x52080000 0x00 0x02 0x00 0x02 0x00 0x01 0x00 0x72080000 0x00 0x02 0x00 0x02 0x00 0x02 0x00 0x00>; + }; + }; + + ErrorLogger4 { + compatible = "eswin,eic7700,register"; + offset,length = <0x24 0x20>; + description = "Register 4 to log errors"; + + addr_msb { + compatible = "eswin,eic7700,bitfield"; + description = "Stores NTTP packet header field Addr (MSBs) of the logged error"; + offset,length = <0x00 0x09>; + }; + }; + + ErrorLogger5 { + compatible = "eswin,eic7700,register"; + offset,length = <0x28 0x20>; + description = "Register 5 to log errors"; + + User_flag { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x00 0x10>; + lut = "Cache_0", "Cache_1", "Cache_2", "Cache_3", "Prot_0", "Prot_1", "Prot_2", "Qos_0", "Qos_1", "Qos_2", "Qos_3", "User_0", "User_1", "User_2", "User_3", "User_4"; + }; + }; + }; + + d0_sys_noc@52002C00 { + compatible = "eswin,eic7700-noc"; + #address-cells = <0x02>; + #size-cells = <0x02>; + ranges; + reg = <0x00 0x52002c00 0x00 0x4000>; + interrupts = <0x1af>; + interrupt-names = "error"; + interrupt-parent = <0x0f>; + errlogger,idx = <0x00 0x01 0x03 0x04 0x05>; + eswin,qos-configs = "DSPT", "NPU", "SPISLV_TBU3"; + eswin,DSPT-qos-base = <0x52002c80>; + eswin,DSPT-qos-settings = <0x08 0x04 0x0c 0x02 0x10 0x03 0x14 0x01 0x18 0x01>; + eswin,NPU-qos-base = "R", "-"; + eswin,NPU-qos-settings = <0x08 0x04 0x0c 0x02 0x10 0x18 0x14 0x10 0x18 0x01>; + eswin,SPISLV_TBU3-qos-base = <0x52002d80>; + eswin,SPISLV_TBU3-qos-settings = <0x08 0x04 0x0c 0x02 0x10 0x18 0x14 0x10 0x18 0x01>; + status = "okay"; + stat,0 = "TracePort:ddr0_p1_req", "InitFlow:mcput_snoc_mp/I/0"; + stat,1 = "TracePort:ddr0_p2_req", "InitFlow:dspt_snoc/I/0", "AddrBase:0x81000000", "AddrSize:0x30", "Opcode:RdWrLockUrg", "Status:ReqRsp", "Length:0x8000", "Urgency:0x0"; + stat,2 = "TracePort:ddr1_p1_req", "Status:Req", "AddrSize:0x28"; + stat,3 = "TracePort:ddr1_p2_req"; + latency,0 = "TracePort:sysnoc_trans_probe_0", "AddrSize:0x0"; + latency,1 = "TracePort:sysnoc_trans_probe_1", "Mode:latency", "AddrBase:0x82000000", "AddrSize:0x28", "Opcode:RdWr"; + pending,0 = "TracePort:sysnoc_trans_probe_2", "AddrSize:0x3"; + + sideband_manager@52004000 { + compatible = "eswin,win2xxx-noc-sideband-manager"; + reg = <0x00 0x52004000 0x00 0x10>; + SenseIn0 = <0x00 0x00 0x01 0x01 0x02 0x02 0x03 0x03 0x04 0x04 0x05 0x05 0x06 0x06 0x07 0x07 0x08 0x08 0x09 0x09 0x0a 0x0a 0x0b 0x0b 0x0c 0x0c 0x0d 0x0d 0x0e 0x0e 0x0f 0x0f 0x10 0x10 0x11 0x11 0x12 0x12 0x13 0x13 0x14 0x14 0x15 0x15>; + bf-name = "SBM_AON_SNOC_SP0", "SBM_DSPT_SNOC", "SBM_JTAG_SNOC", "SBM_MCPUT_SNOC_D2D ", "SBM_MCPUT_SNOC_MP", "SBM_MCPUT_SNOC_SP0", "SBM_MCPUT_SNOC_SP1", "SBM_NPU_SNOC_SP0", "SBM_NPU_SNOC_SP1", "SBM_PCIET_SNOC_P", "SBM_SPISLV_PCIET_SNOC", "SBM_TBU4_SNOC", "SBM_TCU_SNOC", "SBM_SNOC_AON", "SBM_SNOC_DDR0_P1", "SBM_SNOC_DDR0_P2", "SBM_SNOC_DDR1_P1", "SBM_SNOC_DDR1_P2", "SBM_SNOC_DSPT", "SBM_SNOC_MCPUT_D2D", "SBM_SNOC_NPU", "SBM_SNOC_PCIET"; + }; + + sysnoc_packet_ddr0_p1_req_probe@52000000 { + compatible = "eswin,win2xxx-noc-packet-probe"; + reg = <0x00 0x52000000 0x00 0x4000>; + clocks = <0x03 0x218>; + clock-names = "clk"; + interrupts = <0x1b7>; + interrupt-names = "stat"; + interrupt-parent = <0x0f>; + filter,nr = <0x01>; + counter,nr = <0x02>; + portsel = "ddr0_p1_req"; + }; + + sysnoc_packet_ddr0_p2_req_probe@52000800 { + compatible = "eswin,win2xxx-noc-packet-probe"; + reg = <0x00 0x52000800 0x00 0x4000>; + clocks = <0x03 0x219>; + clock-names = "clk"; + interrupts = <0x1b5>; + interrupt-names = "stat"; + interrupt-parent = <0x0f>; + filter,nr = <0x01>; + counter,nr = <0x02>; + portsel = "ddr0_p2_req"; + }; + + sysnoc_packet_ddr1_p1_req_probe@52001000 { + compatible = "eswin,win2xxx-noc-packet-probe"; + reg = <0x00 0x52001000 0x00 0x4000>; + clocks = <0x03 0x21d>; + clock-names = "clk"; + interrupts = <0x1b3>; + interrupt-names = "stat"; + interrupt-parent = <0x0f>; + filter,nr = <0x01>; + counter,nr = <0x02>; + portsel = "ddr1_p1_req"; + }; + + sysnoc_packet_ddr1_p2_req_probe@52001800 { + compatible = "eswin,win2xxx-noc-packet-probe"; + reg = <0x00 0x52001800 0x00 0x4000>; + clocks = <0x03 0x21e>; + clock-names = "clk"; + interrupts = <0x1b1>; + interrupt-names = "stat"; + interrupt-parent = <0x0f>; + filter,nr = <0x01>; + counter,nr = <0x02>; + portsel = "ddr1_p2_req"; + }; + + sysnoc_trans_probe_0@52002000 { + #address-cells = <0x02>; + #size-cells = <0x02>; + ranges; + compatible = "eswin,win2xxx-noc-trans-probe"; + reg = <0x00 0x52002000 0x00 0x4000>; + clocks = <0x03 0x203>; + clock-names = "clk"; + interrupts = <0x1ae>; + interrupt-names = "stat"; + interrupt-parent = <0x0f>; + filter,nr = <0x02>; + counter,nr = <0x08>; + profiler,nr = <0x01>; + portsel = "dspt_snoc", "npu_sp1"; + + sysnoc_trans_dspt_filter@52002E00 { + status = "disabled"; + compatible = "eswin,win2xxx-noc-trans-filter"; + reg = <0x00 0x52002e00 0x00 0x80>; + }; + + sysnoc_trans_npu_sp1_filter@52002F80 { + status = "disabled"; + compatible = "eswin,win2xxx-noc-trans-filter"; + reg = <0x00 0x52002f80 0x00 0x80>; + }; + + sysnoc_trans_profiler@52003180 { + compatible = "eswin,win2xxx-noc-trans-profiler"; + reg = <0x00 0x52003180 0x00 0x80>; + }; + }; + + sysnoc_trans_probe_1@52002400 { + #address-cells = <0x02>; + #size-cells = <0x02>; + ranges; + compatible = "eswin,win2xxx-noc-trans-probe"; + reg = <0x00 0x52002400 0x00 0x4000>; + clocks = <0x03 0x203>; + clock-names = "clk"; + interrupts = <0x1ad>; + interrupt-names = "stat"; + interrupt-parent = <0x0f>; + filter,nr = <0x03>; + counter,nr = <0x0c>; + profiler,nr = <0x01>; + portsel = "mcput_mp", "mcput_sp1", "tcu"; + + sysnoc_trans_mcput_mp_filter@52002E80 { + status = "okay"; + compatible = "eswin,win2xxx-noc-trans-filter"; + reg = <0x00 0x52002e80 0x00 0x80>; + }; + + sysnoc_trans_mcput_sp1_filter@52002F00 { + status = "okay"; + compatible = "eswin,win2xxx-noc-trans-filter"; + reg = <0x00 0x52002f00 0x00 0x80>; + }; + + sysnoc_trans_tcu_filter@52003100 { + status = "okay"; + compatible = "eswin,win2xxx-noc-trans-filter"; + reg = <0x00 0x52003100 0x00 0x80>; + }; + + sysnoc_trans_profiler@52003200 { + compatible = "eswin,win2xxx-noc-trans-profiler"; + reg = <0x00 0x52003200 0x00 0x80>; + }; + }; + + sysnoc_trans_probe_2@52002800 { + #address-cells = <0x02>; + #size-cells = <0x02>; + ranges; + compatible = "eswin,win2xxx-noc-trans-probe"; + reg = <0x00 0x52002800 0x00 0x4000>; + clocks = <0x03 0x203>; + clock-names = "clk"; + interrupts = <0x1ac>; + interrupt-names = "stat"; + interrupt-parent = <0x0f>; + filter,nr = <0x02>; + counter,nr = <0x08>; + profiler,nr = <0x01>; + portsel = "spislv_tbu3", "tbu4_snoc"; + + sysnoc_trans_spislv_tbu3_filter@52003000 { + status = "disabled"; + compatible = "eswin,win2xxx-noc-trans-filter"; + reg = <0x00 0x52003000 0x00 0x80>; + }; + + sysnoc_trans_tbu4_filter@52003080 { + status = "disabled"; + compatible = "eswin,win2xxx-noc-trans-filter"; + reg = <0x00 0x52003080 0x00 0x80>; + }; + + sysnoc_trans_profiler@52003280 { + compatible = "eswin,win2xxx-noc-trans-profiler"; + reg = <0x00 0x52003280 0x00 0x80>; + }; + }; + + ErrorLogger0 { + compatible = "eswin,eic7700,register"; + offset,length = <0x14 0x20>; + description = "Register 0 to log errors"; + + lock { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x00 0x01>; + lut = "Not Locked", "Locked"; + }; + + OpCode { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x01 0x04>; + lut = "RD: data read with incrementing address", "RDW: data read with wrapping address", "RDL: allocates monitor in the Target with incrementing address", "RDX: exclusive read with incrementing address", "WR: data write with incrementing address", "WRW: data write with wrapping address", "WRC: conditional write if matching monitor in Target is found", "RSV: reserved", "PRE: preamble packet of linked sequence (locked sequence)", "URG: urgency packet used for QoS (status must be REQ)"; + }; + + ErrCode { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x08 0x03>; + lut = "SLV (error source: Target): error detected by the Slave without any information or no Error", "DEC (error source: Initiator NIU): decode error", "UNS (error source: Target NIU): unsupported access type", "DISC (error source: Power Disconnect): disconnected Target or NoC domain", "SEC (error source: Initiator NIU or Firewall): security error", "HIDE (error source: Firewall): hidden security error. Will be reported as OK to the initiator", "TMO (error source: Target NIU): time-out", "RSV: reserved"; + }; + + Len1 { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x10 0x0c>; + }; + + Format { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x1f 0x01>; + lut = "NTTP v3.0 (Invalid)", "NTTP v3.5 (Ok)"; + }; + }; + + ErrorLogger1 { + compatible = "eswin,eic7700,register", "eswin,eic7700,noc,filter,routeid"; + offset,length = <0x18 0x20>; + description = "Register 1 to log errors"; + + InitFlow { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x13 0x04>; + lut = "aon_snoc_sp0/I/0", "dspt_snoc/I/0", "jtag_snoc/I/0", "mcput_snoc_d2d/I/0", "mcput_snoc_mp/I/0", "mcput_snoc_sp0/I/0", "mcput_snoc_sp1/I/0", "mnoc_snoc/I/0", "npu_snoc_sp0/I/0", "npu_snoc_sp1/I/0", "pciet_snoc_p/I/0", "rnoc_snoc/I/0", "spislv_tbu3_snoc/I/0", "tbu4_snoc/I/0", "tcu_snoc/I/0", "RESERVED0"; + }; + + TargetFlow { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x0f 0x04>; + lut = "snoc_aon/T/0", "snoc_cnoc/T/0", "snoc_ddrt0_p1/T/0", "snoc_ddrt0_p2/T/0", "snoc_ddrt1_p1/T/0", "snoc_ddrt1_p2/T/0", "snoc_dspt/T/0", "snoc_lnoc/T/0", "snoc_mcput_d2d/T/0", "snoc_mnoc/T/0", "snoc_npu/T/0", "snoc_pciet/T/0", "snoc_rnoc/T/0", "snoc_service/T/0", "RESERVED1", "RESERVED2"; + }; + + TargetSubRange { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x09 0x06>; + }; + + SeqId { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x00 0x09>; + }; + }; + + ErrorLogger3 { + compatible = "eswin,eic7700,register"; + offset,length = <0x20 0x20>; + description = "Register 3 to log errors"; + aperture-link = <0x01>; + msb-link = <0x04>; + + AbsoluteAddress { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x09 0x0e>; + aperture-size = <0x49d>; + aperture-idx,aperture-base = <0x00 0x00 0x00 0x01 0x00 0x00 0x00 0x52060000 0x00 0x00 0x00 0x01 0x00 0x01 0x00 0x72060000 0x00 0x00 0x00 0x01 0x00 0x02 0x00 0x52100000 0x00 0x00 0x00 0x01 0x00 0x03 0x00 0x52200000 0x00 0x00 0x00 0x01 0x00 0x04 0x00 0x52300000 0x00 0x00 0x00 0x01 0x00 0x05 0x00 0x72100000 0x00 0x00 0x00 0x01 0x00 0x06 0x00 0x72200000 0x00 0x00 0x00 0x01 0x00 0x07 0x00 0x72300000 0x00 0x00 0x00 0x01 0x00 0x08 0x00 0x53000000 0x00 0x00 0x00 0x01 0x00 0x09 0x00 0x73000000 0x00 0x00 0x00 0x01 0x00 0x0a 0x00 0x50000000 0x00 0x00 0x00 0x01 0x00 0x0b 0x00 0x70000000 0x00 0x00 0x00 0x01 0x00 0x0c 0x00 0x54000000 0x00 0x00 0x00 0x01 0x00 0x0d 0x00 0x74000000 0x00 0x00 0x00 0x01 0x00 0x0e 0x00 0x00 0x00 0x00 0x00 0x01 0x00 0x0f 0x00 0x00 0x00 0x00 0x00 0x01 0x00 0x10 0x00 0x00 0x00 0x00 0x00 0x06 0x00 0x00 0x00 0x520e0000 0x00 0x00 0x00 0x06 0x00 0x01 0x00 0x720e0000 0x00 0x00 0x00 0x06 0x00 0x02 0x00 0x5b000000 0x00 0x00 0x00 0x06 0x00 0x03 0x00 0x7b000000 0x00 0x00 0x00 0x07 0x00 0x00 0x00 0x52080000 0x00 0x00 0x00 0x07 0x00 0x01 0x00 0x72080000 0x00 0x00 0x00 0x08 0x00 0x00 0x00 0x58400000 0x00 0x00 0x00 0x08 0x00 0x01 0x00 0x78400000 0x00 0x00 0x00 0x08 0x00 0x02 0x00 0x58800000 0x00 0x00 0x00 0x08 0x00 0x03 0x00 0x78800000 0x00 0x00 0x00 0x08 0x00 0x04 0x00 0x59000000 0x00 0x00 0x00 0x08 0x00 0x05 0x00 0x5a000000 0x00 0x00 0x00 0x08 0x00 0x06 0x00 0x5b000000 0x00 0x00 0x00 0x08 0x00 0x07 0x00 0x79000000 0x00 0x00 0x00 0x08 0x00 0x08 0x00 0x7a000000 0x00 0x00 0x00 0x08 0x00 0x09 0x00 0x7b000000 0x00 0x00 0x00 0x08 0x00 0x0a 0x00 0x50000000 0x00 0x00 0x00 0x08 0x00 0x0b 0x00 0x70000000 0x00 0x00 0x00 0x08 0x00 0x0c 0x00 0x40000000 0x00 0x00 0x00 0x08 0x00 0x0d 0x00 0x60000000 0x00 0x00 0x00 0x09 0x00 0x00 0x00 0x52020000 0x00 0x00 0x00 0x09 0x00 0x01 0x00 0x72020000 0x00 0x00 0x00 0x0a 0x00 0x00 0x00 0x52080000 0x00 0x00 0x00 0x0a 0x00 0x01 0x00 0x72080000 0x00 0x00 0x00 0x0a 0x00 0x02 0x00 0x59000000 0x00 0x00 0x00 0x0a 0x00 0x03 0x00 0x5a000000 0x00 0x00 0x00 0x0a 0x00 0x04 0x00 0x79000000 0x00 0x00 0x00 0x0a 0x00 0x05 0x00 0x7a000000 0x00 0x00 0x00 0x0b 0x00 0x00 0x00 0x40000000 0x00 0x00 0x00 0x0b 0x00 0x01 0x00 0x60000000 0x00 0x00 0x00 0x0c 0x00 0x00 0x00 0x52040000 0x00 0x00 0x00 0x0c 0x00 0x01 0x00 0x72040000 0x00 0x00 0x00 0x0d 0x00 0x00 0x00 0x52000000 0x00 0x00 0x00 0x0d 0x00 0x01 0x00 0x72000000 0x00 0x01 0x00 0x00 0x00 0x00 0x00 0x520c0000 0x00 0x01 0x00 0x00 0x00 0x01 0x00 0x720c0000 0x00 0x01 0x00 0x00 0x00 0x02 0x00 0x58400000 0x00 0x01 0x00 0x00 0x00 0x03 0x00 0x78400000 0x00 0x01 0x00 0x00 0x00 0x04 0x140 0x400000 0x00 0x01 0x00 0x00 0x00 0x05 0x140 0x8400000 0x00 0x01 0x00 0x00 0x00 0x06 0x00 0x58800000 0x00 0x01 0x00 0x00 0x00 0x07 0x00 0x78800000 0x00 0x01 0x00 0x00 0x00 0x08 0x140 0x800000 0x00 0x01 0x00 0x00 0x00 0x09 0x140 0x8800000 0x00 0x01 0x00 0x00 0x00 0x0a 0x00 0x5c000000 0x00 0x01 0x00 0x00 0x00 0x0b 0x00 0x7c000000 0x00 0x01 0x00 0x00 0x00 0x0c 0x140 0x4000000 0x00 0x01 0x00 0x00 0x00 0x0d 0x140 0xc000000 0x00 0x01 0x00 0x01 0x00 0x00 0x00 0x52060000 0x00 0x01 0x00 0x01 0x00 0x01 0x00 0x72060000 0x00 0x01 0x00 0x01 0x00 0x02 0x00 0x52100000 0x00 0x01 0x00 0x01 0x00 0x03 0x00 0x52200000 0x00 0x01 0x00 0x01 0x00 0x04 0x00 0x52300000 0x00 0x01 0x00 0x01 0x00 0x05 0x00 0x72100000 0x00 0x01 0x00 0x01 0x00 0x06 0x00 0x72200000 0x00 0x01 0x00 0x01 0x00 0x07 0x00 0x72300000 0x00 0x01 0x00 0x01 0x00 0x08 0x00 0x53000000 0x00 0x01 0x00 0x01 0x00 0x09 0x00 0x73000000 0x00 0x01 0x00 0x01 0x00 0x0a 0x00 0x50000000 0x00 0x01 0x00 0x01 0x00 0x0b 0x00 0x70000000 0x00 0x01 0x00 0x01 0x00 0x0c 0x00 0x54000000 0x00 0x01 0x00 0x01 0x00 0x0d 0x00 0x74000000 0x00 0x01 0x00 0x01 0x00 0x0e 0x00 0x00 0x00 0x01 0x00 0x03 0x00 0x00 0x00 0x80000000 0x00 0x01 0x00 0x03 0x00 0x01 0x01 0x00 0x00 0x01 0x00 0x03 0x00 0x02 0x02 0x00 0x00 0x01 0x00 0x03 0x00 0x03 0x04 0x00 0x00 0x01 0x00 0x03 0x00 0x04 0x08 0x00 0x00 0x01 0x00 0x03 0x00 0x05 0x20 0x00 0x00 0x01 0x00 0x03 0x00 0x06 0xc0 0x00 0x00 0x01 0x00 0x03 0x00 0x07 0xe0 0x00 0x00 0x01 0x00 0x03 0x00 0x08 0x40 0x00 0x00 0x01 0x00 0x03 0x00 0x09 0x40 0x100 0x00 0x01 0x00 0x03 0x00 0x0a 0x100 0x00 0x00 0x01 0x00 0x03 0x00 0x0b 0x100 0x100 0x00 0x01 0x00 0x05 0x00 0x00 0x00 0x80000080 0x00 0x01 0x00 0x05 0x00 0x01 0x01 0x80 0x00 0x01 0x00 0x05 0x00 0x02 0x02 0x80 0x00 0x01 0x00 0x05 0x00 0x03 0x04 0x80 0x00 0x01 0x00 0x05 0x00 0x04 0x08 0x80 0x00 0x01 0x00 0x05 0x00 0x05 0x20 0x80 0x00 0x01 0x00 0x05 0x00 0x06 0xc0 0x80 0x00 0x01 0x00 0x05 0x00 0x07 0xe0 0x80 0x00 0x01 0x00 0x05 0x00 0x08 0x40 0x80 0x00 0x01 0x00 0x05 0x00 0x09 0x40 0x180 0x00 0x01 0x00 0x05 0x00 0x0a 0x100 0x80 0x00 0x01 0x00 0x05 0x00 0x0b 0x100 0x180 0x00 0x01 0x00 0x08 0x00 0x00 0x00 0x58400000 0x00 0x01 0x00 0x08 0x00 0x01 0x00 0x78400000 0x00 0x01 0x00 0x08 0x00 0x02 0x140 0x400000 0x00 0x01 0x00 0x08 0x00 0x03 0x140 0x8400000 0x00 0x01 0x00 0x08 0x00 0x04 0x00 0x58800000 0x00 0x01 0x00 0x08 0x00 0x05 0x00 0x78800000 0x00 0x01 0x00 0x08 0x00 0x06 0x140 0x800000 0x00 0x01 0x00 0x08 0x00 0x07 0x140 0x8800000 0x00 0x01 0x00 0x08 0x00 0x08 0x00 0x59000000 0x00 0x01 0x00 0x08 0x00 0x09 0x00 0x5a000000 0x00 0x01 0x00 0x08 0x00 0x0a 0x00 0x5b000000 0x00 0x01 0x00 0x08 0x00 0x0b 0x00 0x79000000 0x00 0x01 0x00 0x08 0x00 0x0c 0x00 0x7a000000 0x00 0x01 0x00 0x08 0x00 0x0d 0x00 0x7b000000 0x00 0x01 0x00 0x08 0x00 0x0e 0x140 0x1000000 0x00 0x01 0x00 0x08 0x00 0x0f 0x140 0x2000000 0x00 0x01 0x00 0x08 0x00 0x10 0x140 0x3000000 0x00 0x01 0x00 0x08 0x00 0x11 0x140 0x9000000 0x00 0x01 0x00 0x08 0x00 0x12 0x140 0xa000000 0x00 0x01 0x00 0x08 0x00 0x13 0x140 0xb000000 0x00 0x01 0x00 0x08 0x00 0x14 0x00 0x50000000 0x00 0x01 0x00 0x08 0x00 0x15 0x00 0x70000000 0x00 0x01 0x00 0x08 0x00 0x16 0x00 0x40000000 0x00 0x01 0x00 0x08 0x00 0x17 0x00 0x60000000 0x00 0x01 0x00 0x08 0x00 0x18 0x00 0x80000000 0x00 0x01 0x00 0x08 0x00 0x19 0x01 0x00 0x00 0x01 0x00 0x08 0x00 0x1a 0x02 0x00 0x00 0x01 0x00 0x08 0x00 0x1b 0x04 0x00 0x00 0x01 0x00 0x08 0x00 0x1c 0x08 0x00 0x00 0x01 0x00 0x08 0x00 0x1d 0x18 0x00 0x00 0x01 0x00 0x08 0x00 0x1e 0x38 0x00 0x00 0x01 0x00 0x08 0x00 0x1f 0xd8 0x00 0x00 0x01 0x00 0x08 0x00 0x20 0xf8 0x00 0x00 0x01 0x00 0x08 0x00 0x21 0x20 0x00 0x00 0x01 0x00 0x08 0x00 0x22 0x70 0x00 0x00 0x01 0x00 0x08 0x00 0x23 0x70 0x100 0x00 0x01 0x00 0x08 0x00 0x24 0xc0 0x00 0x00 0x01 0x00 0x08 0x00 0x25 0xe0 0x00 0x00 0x01 0x00 0x08 0x00 0x26 0x130 0x00 0x00 0x01 0x00 0x08 0x00 0x27 0x130 0x100 0x00 0x01 0x00 0x08 0x00 0x28 0x40 0x00 0x00 0x01 0x00 0x08 0x00 0x29 0x40 0x100 0x00 0x01 0x00 0x08 0x00 0x2a 0x80 0x00 0x00 0x01 0x00 0x08 0x00 0x2b 0xa0 0x00 0x00 0x01 0x00 0x08 0x00 0x2c 0x100 0x00 0x00 0x01 0x00 0x08 0x00 0x2d 0x100 0x100 0x00 0x01 0x00 0x0a 0x00 0x00 0x00 0x52080000 0x00 0x01 0x00 0x0a 0x00 0x01 0x00 0x72080000 0x00 0x01 0x00 0x0a 0x00 0x02 0x00 0x59000000 0x00 0x01 0x00 0x0a 0x00 0x03 0x00 0x5a000000 0x00 0x01 0x00 0x0a 0x00 0x04 0x00 0x79000000 0x00 0x01 0x00 0x0a 0x00 0x05 0x00 0x7a000000 0x00 0x01 0x00 0x0a 0x00 0x06 0x140 0x1000000 0x00 0x01 0x00 0x0a 0x00 0x07 0x140 0x2000000 0x00 0x01 0x00 0x0a 0x00 0x08 0x140 0x9000000 0x00 0x01 0x00 0x0a 0x00 0x09 0x140 0xa000000 0x00 0x01 0x00 0x0a 0x00 0x0a 0x18 0x00 0x00 0x01 0x00 0x0a 0x00 0x0b 0x38 0x00 0x00 0x01 0x00 0x0a 0x00 0x0c 0xd8 0x00 0x00 0x01 0x00 0x0a 0x00 0x0d 0xf8 0x00 0x00 0x01 0x00 0x0a 0x00 0x0e 0x70 0x00 0x00 0x01 0x00 0x0a 0x00 0x0f 0x70 0x100 0x00 0x01 0x00 0x0a 0x00 0x10 0x130 0x00 0x00 0x01 0x00 0x0a 0x00 0x11 0x130 0x100 0x00 0x01 0x00 0x0b 0x00 0x00 0x00 0x40000000 0x00 0x01 0x00 0x0b 0x00 0x01 0x00 0x60000000 0x00 0x01 0x00 0x0b 0x00 0x02 0x80 0x00 0x00 0x01 0x00 0x0b 0x00 0x03 0xa0 0x00 0x00 0x02 0x00 0x01 0x00 0x00 0x00 0x52060000 0x00 0x02 0x00 0x01 0x00 0x01 0x00 0x72060000 0x00 0x02 0x00 0x01 0x00 0x02 0x00 0x52100000 0x00 0x02 0x00 0x01 0x00 0x03 0x00 0x52200000 0x00 0x02 0x00 0x01 0x00 0x04 0x00 0x52300000 0x00 0x02 0x00 0x01 0x00 0x05 0x00 0x72100000 0x00 0x02 0x00 0x01 0x00 0x06 0x00 0x72200000 0x00 0x02 0x00 0x01 0x00 0x07 0x00 0x72300000 0x00 0x02 0x00 0x01 0x00 0x08 0x00 0x53000000 0x00 0x02 0x00 0x01 0x00 0x09 0x00 0x73000000 0x00 0x02 0x00 0x01 0x00 0x0a 0x00 0x50000000 0x00 0x02 0x00 0x01 0x00 0x0b 0x00 0x70000000 0x00 0x02 0x00 0x01 0x00 0x0c 0x00 0x54000000 0x00 0x02 0x00 0x01 0x00 0x0d 0x00 0x74000000 0x00 0x02 0x00 0x01 0x00 0x0e 0x00 0x00 0x00 0x02 0x00 0x01 0x00 0x0f 0x00 0x00 0x00 0x02 0x00 0x01 0x00 0x10 0x00 0x00 0x00 0x02 0x00 0x07 0x00 0x00 0x00 0x52080000 0x00 0x02 0x00 0x07 0x00 0x01 0x00 0x72080000 0x00 0x02 0x00 0x09 0x00 0x00 0x00 0x52020000 0x00 0x02 0x00 0x09 0x00 0x01 0x00 0x72020000 0x00 0x02 0x00 0x0c 0x00 0x00 0x00 0x52040000 0x00 0x02 0x00 0x0c 0x00 0x01 0x00 0x72040000 0x00 0x02 0x00 0x0d 0x00 0x00 0x00 0x52000000 0x00 0x02 0x00 0x0d 0x00 0x01 0x00 0x72000000 0x00 0x03 0x00 0x00 0x00 0x00 0x00 0x520c0000 0x00 0x03 0x00 0x00 0x00 0x01 0x00 0x720c0000 0x00 0x03 0x00 0x00 0x00 0x02 0x00 0x58400000 0x00 0x03 0x00 0x00 0x00 0x03 0x00 0x78400000 0x00 0x03 0x00 0x00 0x00 0x04 0x140 0x400000 0x00 0x03 0x00 0x00 0x00 0x05 0x140 0x8400000 0x00 0x03 0x00 0x00 0x00 0x06 0x00 0x58800000 0x00 0x03 0x00 0x00 0x00 0x07 0x00 0x78800000 0x00 0x03 0x00 0x00 0x00 0x08 0x140 0x800000 0x00 0x03 0x00 0x00 0x00 0x09 0x140 0x8800000 0x00 0x03 0x00 0x00 0x00 0x0a 0x00 0x5c000000 0x00 0x03 0x00 0x00 0x00 0x0b 0x00 0x7c000000 0x00 0x03 0x00 0x00 0x00 0x0c 0x140 0x4000000 0x00 0x03 0x00 0x00 0x00 0x0d 0x140 0xc000000 0x00 0x03 0x00 0x01 0x00 0x00 0x00 0x52060000 0x00 0x03 0x00 0x01 0x00 0x01 0x00 0x72060000 0x00 0x03 0x00 0x01 0x00 0x02 0x00 0x52100000 0x00 0x03 0x00 0x01 0x00 0x03 0x00 0x52200000 0x00 0x03 0x00 0x01 0x00 0x04 0x00 0x52300000 0x00 0x03 0x00 0x01 0x00 0x05 0x00 0x72100000 0x00 0x03 0x00 0x01 0x00 0x06 0x00 0x72200000 0x00 0x03 0x00 0x01 0x00 0x07 0x00 0x72300000 0x00 0x03 0x00 0x01 0x00 0x08 0x00 0x53000000 0x00 0x03 0x00 0x01 0x00 0x09 0x00 0x73000000 0x00 0x03 0x00 0x01 0x00 0x0a 0x00 0x50000000 0x00 0x03 0x00 0x01 0x00 0x0b 0x00 0x70000000 0x00 0x03 0x00 0x01 0x00 0x0c 0x00 0x54000000 0x00 0x03 0x00 0x01 0x00 0x0d 0x00 0x74000000 0x00 0x03 0x00 0x01 0x00 0x0e 0x00 0x00 0x00 0x03 0x00 0x03 0x00 0x00 0x00 0x80000000 0x00 0x03 0x00 0x03 0x00 0x01 0x01 0x00 0x00 0x03 0x00 0x03 0x00 0x02 0x02 0x00 0x00 0x03 0x00 0x03 0x00 0x03 0x04 0x00 0x00 0x03 0x00 0x03 0x00 0x04 0x08 0x00 0x00 0x03 0x00 0x03 0x00 0x05 0x20 0x00 0x00 0x03 0x00 0x03 0x00 0x06 0xc0 0x00 0x00 0x03 0x00 0x03 0x00 0x07 0xe0 0x00 0x00 0x03 0x00 0x03 0x00 0x08 0x40 0x00 0x00 0x03 0x00 0x03 0x00 0x09 0x40 0x100 0x00 0x03 0x00 0x03 0x00 0x0a 0x100 0x00 0x00 0x03 0x00 0x03 0x00 0x0b 0x100 0x100 0x00 0x03 0x00 0x05 0x00 0x00 0x00 0x80000080 0x00 0x03 0x00 0x05 0x00 0x01 0x01 0x80 0x00 0x03 0x00 0x05 0x00 0x02 0x02 0x80 0x00 0x03 0x00 0x05 0x00 0x03 0x04 0x80 0x00 0x03 0x00 0x05 0x00 0x04 0x08 0x80 0x00 0x03 0x00 0x05 0x00 0x05 0x20 0x80 0x00 0x03 0x00 0x05 0x00 0x06 0xc0 0x80 0x00 0x03 0x00 0x05 0x00 0x07 0xe0 0x80 0x00 0x03 0x00 0x05 0x00 0x08 0x40 0x80 0x00 0x03 0x00 0x05 0x00 0x09 0x40 0x180 0x00 0x03 0x00 0x05 0x00 0x0a 0x100 0x80 0x00 0x03 0x00 0x05 0x00 0x0b 0x100 0x180 0x00 0x03 0x00 0x06 0x00 0x00 0x00 0x520e0000 0x00 0x03 0x00 0x06 0x00 0x01 0x00 0x720e0000 0x00 0x03 0x00 0x06 0x00 0x02 0x00 0x5b000000 0x00 0x03 0x00 0x06 0x00 0x03 0x00 0x7b000000 0x00 0x03 0x00 0x06 0x00 0x04 0x140 0x3000000 0x00 0x03 0x00 0x06 0x00 0x05 0x140 0xb000000 0x00 0x03 0x00 0x07 0x00 0x00 0x00 0x52080000 0x00 0x03 0x00 0x07 0x00 0x01 0x00 0x72080000 0x00 0x03 0x00 0x09 0x00 0x00 0x00 0x52020000 0x00 0x03 0x00 0x09 0x00 0x01 0x00 0x72020000 0x00 0x03 0x00 0x0a 0x00 0x00 0x00 0x52080000 0x00 0x03 0x00 0x0a 0x00 0x01 0x00 0x72080000 0x00 0x03 0x00 0x0a 0x00 0x02 0x00 0x59000000 0x00 0x03 0x00 0x0a 0x00 0x03 0x00 0x5a000000 0x00 0x03 0x00 0x0a 0x00 0x04 0x00 0x79000000 0x00 0x03 0x00 0x0a 0x00 0x05 0x00 0x7a000000 0x00 0x03 0x00 0x0a 0x00 0x06 0x140 0x1000000 0x00 0x03 0x00 0x0a 0x00 0x07 0x140 0x2000000 0x00 0x03 0x00 0x0a 0x00 0x08 0x140 0x9000000 0x00 0x03 0x00 0x0a 0x00 0x09 0x140 0xa000000 0x00 0x03 0x00 0x0a 0x00 0x0a 0x18 0x00 0x00 0x03 0x00 0x0a 0x00 0x0b 0x38 0x00 0x00 0x03 0x00 0x0a 0x00 0x0c 0xd8 0x00 0x00 0x03 0x00 0x0a 0x00 0x0d 0xf8 0x00 0x00 0x03 0x00 0x0a 0x00 0x0e 0x70 0x00 0x00 0x03 0x00 0x0a 0x00 0x0f 0x70 0x100 0x00 0x03 0x00 0x0a 0x00 0x10 0x130 0x00 0x00 0x03 0x00 0x0a 0x00 0x11 0x130 0x100 0x00 0x03 0x00 0x0b 0x00 0x00 0x00 0x40000000 0x00 0x03 0x00 0x0b 0x00 0x01 0x00 0x60000000 0x00 0x03 0x00 0x0b 0x00 0x02 0x80 0x00 0x00 0x03 0x00 0x0b 0x00 0x03 0xa0 0x00 0x00 0x03 0x00 0x0c 0x00 0x00 0x00 0x52040000 0x00 0x03 0x00 0x0c 0x00 0x01 0x00 0x72040000 0x00 0x03 0x00 0x0d 0x00 0x00 0x00 0x52000000 0x00 0x03 0x00 0x0d 0x00 0x01 0x00 0x72000000 0x00 0x04 0x00 0x02 0x00 0x00 0x00 0x80000000 0x00 0x04 0x00 0x02 0x00 0x01 0x01 0x00 0x00 0x04 0x00 0x02 0x00 0x02 0x02 0x00 0x00 0x04 0x00 0x02 0x00 0x03 0x04 0x00 0x00 0x04 0x00 0x02 0x00 0x04 0x08 0x00 0x00 0x04 0x00 0x02 0x00 0x05 0x20 0x00 0x00 0x04 0x00 0x02 0x00 0x06 0x40 0x00 0x00 0x04 0x00 0x02 0x00 0x07 0x40 0x100 0x00 0x04 0x00 0x04 0x00 0x00 0x00 0x80000080 0x00 0x04 0x00 0x04 0x00 0x01 0x01 0x80 0x00 0x04 0x00 0x04 0x00 0x02 0x02 0x80 0x00 0x04 0x00 0x04 0x00 0x03 0x04 0x80 0x00 0x04 0x00 0x04 0x00 0x04 0x08 0x80 0x00 0x04 0x00 0x04 0x00 0x05 0x20 0x80 0x00 0x04 0x00 0x04 0x00 0x06 0x40 0x80 0x00 0x04 0x00 0x04 0x00 0x07 0x40 0x180 0x00 0x04 0x00 0x0a 0x00 0x00 0x00 0x52080000 0x00 0x04 0x00 0x0a 0x00 0x01 0x00 0x72080000 0x00 0x04 0x00 0x0a 0x00 0x02 0x00 0x59000000 0x00 0x04 0x00 0x0a 0x00 0x03 0x00 0x5a000000 0x00 0x04 0x00 0x0a 0x00 0x04 0x00 0x79000000 0x00 0x04 0x00 0x0a 0x00 0x05 0x00 0x7a000000 0x00 0x04 0x00 0x0a 0x00 0x06 0x18 0x00 0x00 0x04 0x00 0x0a 0x00 0x07 0x38 0x00 0x00 0x04 0x00 0x0a 0x00 0x08 0x70 0x00 0x00 0x04 0x00 0x0a 0x00 0x09 0x70 0x100 0x00 0x04 0x00 0x0a 0x00 0x0a 0x00 0x00 0x00 0x04 0x00 0x0a 0x00 0x0b 0x00 0x00 0x00 0x05 0x00 0x00 0x00 0x00 0x00 0x520c0000 0x00 0x05 0x00 0x00 0x00 0x01 0x00 0x720c0000 0x00 0x05 0x00 0x00 0x00 0x02 0x00 0x58400000 0x00 0x05 0x00 0x00 0x00 0x03 0x00 0x78400000 0x00 0x05 0x00 0x00 0x00 0x04 0x00 0x58800000 0x00 0x05 0x00 0x00 0x00 0x05 0x00 0x78800000 0x00 0x05 0x00 0x00 0x00 0x06 0x00 0x5c000000 0x00 0x05 0x00 0x00 0x00 0x07 0x00 0x7c000000 0x00 0x05 0x00 0x01 0x00 0x00 0x00 0x52060000 0x00 0x05 0x00 0x01 0x00 0x01 0x00 0x72060000 0x00 0x05 0x00 0x01 0x00 0x02 0x00 0x52100000 0x00 0x05 0x00 0x01 0x00 0x03 0x00 0x52200000 0x00 0x05 0x00 0x01 0x00 0x04 0x00 0x52300000 0x00 0x05 0x00 0x01 0x00 0x05 0x00 0x72100000 0x00 0x05 0x00 0x01 0x00 0x06 0x00 0x72200000 0x00 0x05 0x00 0x01 0x00 0x07 0x00 0x72300000 0x00 0x05 0x00 0x01 0x00 0x08 0x00 0x53000000 0x00 0x05 0x00 0x01 0x00 0x09 0x00 0x73000000 0x00 0x05 0x00 0x01 0x00 0x0a 0x00 0x50000000 0x00 0x05 0x00 0x01 0x00 0x0b 0x00 0x70000000 0x00 0x05 0x00 0x01 0x00 0x0c 0x00 0x54000000 0x00 0x05 0x00 0x01 0x00 0x0d 0x00 0x74000000 0x00 0x05 0x00 0x01 0x00 0x0e 0x00 0x00 0x00 0x05 0x00 0x06 0x00 0x00 0x00 0x520e0000 0x00 0x05 0x00 0x06 0x00 0x01 0x00 0x720e0000 0x00 0x05 0x00 0x06 0x00 0x02 0x00 0x5b000000 0x00 0x05 0x00 0x06 0x00 0x03 0x00 0x7b000000 0x00 0x05 0x00 0x07 0x00 0x00 0x00 0x52080000 0x00 0x05 0x00 0x07 0x00 0x01 0x00 0x72080000 0x00 0x05 0x00 0x08 0x00 0x00 0x00 0x58400000 0x00 0x05 0x00 0x08 0x00 0x01 0x00 0x78400000 0x00 0x05 0x00 0x08 0x00 0x02 0x00 0x58800000 0x00 0x05 0x00 0x08 0x00 0x03 0x00 0x78800000 0x00 0x05 0x00 0x08 0x00 0x04 0x00 0x59000000 0x00 0x05 0x00 0x08 0x00 0x05 0x00 0x5a000000 0x00 0x05 0x00 0x08 0x00 0x06 0x00 0x5b000000 0x00 0x05 0x00 0x08 0x00 0x07 0x00 0x79000000 0x00 0x05 0x00 0x08 0x00 0x08 0x00 0x7a000000 0x00 0x05 0x00 0x08 0x00 0x09 0x00 0x7b000000 0x00 0x05 0x00 0x08 0x00 0x0a 0x00 0x50000000 0x00 0x05 0x00 0x08 0x00 0x0b 0x00 0x70000000 0x00 0x05 0x00 0x08 0x00 0x0c 0x00 0x40000000 0x00 0x05 0x00 0x08 0x00 0x0d 0x00 0x60000000 0x00 0x05 0x00 0x09 0x00 0x00 0x00 0x52020000 0x00 0x05 0x00 0x09 0x00 0x01 0x00 0x72020000 0x00 0x05 0x00 0x0a 0x00 0x00 0x00 0x52080000 0x00 0x05 0x00 0x0a 0x00 0x01 0x00 0x72080000 0x00 0x05 0x00 0x0a 0x00 0x02 0x00 0x59000000 0x00 0x05 0x00 0x0a 0x00 0x03 0x00 0x5a000000 0x00 0x05 0x00 0x0a 0x00 0x04 0x00 0x79000000 0x00 0x05 0x00 0x0a 0x00 0x05 0x00 0x7a000000 0x00 0x05 0x00 0x0b 0x00 0x00 0x00 0x40000000 0x00 0x05 0x00 0x0b 0x00 0x01 0x00 0x60000000 0x00 0x05 0x00 0x0c 0x00 0x00 0x00 0x52040000 0x00 0x05 0x00 0x0c 0x00 0x01 0x00 0x72040000 0x00 0x05 0x00 0x0d 0x00 0x00 0x00 0x52000000 0x00 0x05 0x00 0x0d 0x00 0x01 0x00 0x72000000 0x00 0x06 0x00 0x00 0x00 0x00 0x00 0x520c0000 0x00 0x06 0x00 0x00 0x00 0x01 0x00 0x720c0000 0x00 0x06 0x00 0x00 0x00 0x02 0x00 0x58400000 0x00 0x06 0x00 0x00 0x00 0x03 0x00 0x78400000 0x00 0x06 0x00 0x00 0x00 0x04 0x140 0x400000 0x00 0x06 0x00 0x00 0x00 0x05 0x140 0x8400000 0x00 0x06 0x00 0x00 0x00 0x06 0x00 0x58800000 0x00 0x06 0x00 0x00 0x00 0x07 0x00 0x78800000 0x00 0x06 0x00 0x00 0x00 0x08 0x140 0x800000 0x00 0x06 0x00 0x00 0x00 0x09 0x140 0x8800000 0x00 0x06 0x00 0x00 0x00 0x0a 0x00 0x5c000000 0x00 0x06 0x00 0x00 0x00 0x0b 0x00 0x7c000000 0x00 0x06 0x00 0x00 0x00 0x0c 0x140 0x4000000 0x00 0x06 0x00 0x00 0x00 0x0d 0x140 0xc000000 0x00 0x06 0x00 0x00 0x00 0x0e 0x00 0x00 0x00 0x06 0x00 0x00 0x00 0x0f 0x00 0x00 0x00 0x06 0x00 0x03 0x00 0x00 0x00 0x80000000 0x00 0x06 0x00 0x03 0x00 0x01 0x01 0x00 0x00 0x06 0x00 0x03 0x00 0x02 0x02 0x00 0x00 0x06 0x00 0x03 0x00 0x03 0x04 0x00 0x00 0x06 0x00 0x03 0x00 0x04 0x08 0x00 0x00 0x06 0x00 0x03 0x00 0x05 0x20 0x00 0x00 0x06 0x00 0x03 0x00 0x06 0xc0 0x00 0x00 0x06 0x00 0x03 0x00 0x07 0xe0 0x00 0x00 0x06 0x00 0x03 0x00 0x08 0x40 0x00 0x00 0x06 0x00 0x03 0x00 0x09 0x40 0x100 0x00 0x06 0x00 0x03 0x00 0x0a 0x100 0x00 0x00 0x06 0x00 0x03 0x00 0x0b 0x100 0x100 0x00 0x06 0x00 0x05 0x00 0x00 0x00 0x80000080 0x00 0x06 0x00 0x05 0x00 0x01 0x01 0x80 0x00 0x06 0x00 0x05 0x00 0x02 0x02 0x80 0x00 0x06 0x00 0x05 0x00 0x03 0x04 0x80 0x00 0x06 0x00 0x05 0x00 0x04 0x08 0x80 0x00 0x06 0x00 0x05 0x00 0x05 0x20 0x80 0x00 0x06 0x00 0x05 0x00 0x06 0xc0 0x80 0x00 0x06 0x00 0x05 0x00 0x07 0xe0 0x80 0x00 0x06 0x00 0x05 0x00 0x08 0x40 0x80 0x00 0x06 0x00 0x05 0x00 0x09 0x40 0x180 0x00 0x06 0x00 0x05 0x00 0x0a 0x100 0x80 0x00 0x06 0x00 0x05 0x00 0x0b 0x100 0x180 0x00 0x06 0x00 0x06 0x00 0x00 0x00 0x520e0000 0x00 0x06 0x00 0x06 0x00 0x01 0x00 0x720e0000 0x00 0x06 0x00 0x06 0x00 0x02 0x00 0x5b000000 0x00 0x06 0x00 0x06 0x00 0x03 0x00 0x7b000000 0x00 0x06 0x00 0x06 0x00 0x04 0x140 0x3000000 0x00 0x06 0x00 0x06 0x00 0x05 0x140 0xb000000 0x00 0x06 0x00 0x08 0x00 0x00 0x00 0x58400000 0x00 0x06 0x00 0x08 0x00 0x01 0x00 0x78400000 0x00 0x06 0x00 0x08 0x00 0x02 0x140 0x400000 0x00 0x06 0x00 0x08 0x00 0x03 0x140 0x8400000 0x00 0x06 0x00 0x08 0x00 0x04 0x00 0x58800000 0x00 0x06 0x00 0x08 0x00 0x05 0x00 0x78800000 0x00 0x06 0x00 0x08 0x00 0x06 0x140 0x800000 0x00 0x06 0x00 0x08 0x00 0x07 0x140 0x8800000 0x00 0x06 0x00 0x08 0x00 0x08 0x00 0x59000000 0x00 0x06 0x00 0x08 0x00 0x09 0x00 0x5a000000 0x00 0x06 0x00 0x08 0x00 0x0a 0x00 0x5b000000 0x00 0x06 0x00 0x08 0x00 0x0b 0x00 0x79000000 0x00 0x06 0x00 0x08 0x00 0x0c 0x00 0x7a000000 0x00 0x06 0x00 0x08 0x00 0x0d 0x00 0x7b000000 0x00 0x06 0x00 0x08 0x00 0x0e 0x140 0x1000000 0x00 0x06 0x00 0x08 0x00 0x0f 0x140 0x2000000 0x00 0x06 0x00 0x08 0x00 0x10 0x140 0x3000000 0x00 0x06 0x00 0x08 0x00 0x11 0x140 0x9000000 0x00 0x06 0x00 0x08 0x00 0x12 0x140 0xa000000 0x00 0x06 0x00 0x08 0x00 0x13 0x140 0xb000000 0x00 0x06 0x00 0x08 0x00 0x14 0x00 0x50000000 0x00 0x06 0x00 0x08 0x00 0x15 0x00 0x70000000 0x00 0x06 0x00 0x08 0x00 0x16 0x00 0x40000000 0x00 0x06 0x00 0x08 0x00 0x17 0x00 0x60000000 0x00 0x06 0x00 0x08 0x00 0x18 0x00 0x80000000 0x00 0x06 0x00 0x08 0x00 0x19 0x01 0x00 0x00 0x06 0x00 0x08 0x00 0x1a 0x02 0x00 0x00 0x06 0x00 0x08 0x00 0x1b 0x04 0x00 0x00 0x06 0x00 0x08 0x00 0x1c 0x08 0x00 0x00 0x06 0x00 0x08 0x00 0x1d 0x18 0x00 0x00 0x06 0x00 0x08 0x00 0x1e 0x38 0x00 0x00 0x06 0x00 0x08 0x00 0x1f 0xd8 0x00 0x00 0x06 0x00 0x08 0x00 0x20 0xf8 0x00 0x00 0x06 0x00 0x08 0x00 0x21 0x20 0x00 0x00 0x06 0x00 0x08 0x00 0x22 0x70 0x00 0x00 0x06 0x00 0x08 0x00 0x23 0x70 0x100 0x00 0x06 0x00 0x08 0x00 0x24 0xc0 0x00 0x00 0x06 0x00 0x08 0x00 0x25 0xe0 0x00 0x00 0x06 0x00 0x08 0x00 0x26 0x130 0x00 0x00 0x06 0x00 0x08 0x00 0x27 0x130 0x100 0x00 0x06 0x00 0x08 0x00 0x28 0x40 0x00 0x00 0x06 0x00 0x08 0x00 0x29 0x40 0x100 0x00 0x06 0x00 0x08 0x00 0x2a 0x80 0x00 0x00 0x06 0x00 0x08 0x00 0x2b 0xa0 0x00 0x00 0x06 0x00 0x08 0x00 0x2c 0x100 0x00 0x00 0x06 0x00 0x08 0x00 0x2d 0x100 0x100 0x00 0x06 0x00 0x0a 0x00 0x00 0x00 0x52080000 0x00 0x06 0x00 0x0a 0x00 0x01 0x00 0x72080000 0x00 0x06 0x00 0x0a 0x00 0x02 0x00 0x59000000 0x00 0x06 0x00 0x0a 0x00 0x03 0x00 0x5a000000 0x00 0x06 0x00 0x0a 0x00 0x04 0x00 0x79000000 0x00 0x06 0x00 0x0a 0x00 0x05 0x00 0x7a000000 0x00 0x06 0x00 0x0a 0x00 0x06 0x140 0x1000000 0x00 0x06 0x00 0x0a 0x00 0x07 0x140 0x2000000 0x00 0x06 0x00 0x0a 0x00 0x08 0x140 0x9000000 0x00 0x06 0x00 0x0a 0x00 0x09 0x140 0xa000000 0x00 0x06 0x00 0x0a 0x00 0x0a 0x18 0x00 0x00 0x06 0x00 0x0a 0x00 0x0b 0x38 0x00 0x00 0x06 0x00 0x0a 0x00 0x0c 0xd8 0x00 0x00 0x06 0x00 0x0a 0x00 0x0d 0xf8 0x00 0x00 0x06 0x00 0x0a 0x00 0x0e 0x70 0x00 0x00 0x06 0x00 0x0a 0x00 0x0f 0x70 0x100 0x00 0x06 0x00 0x0a 0x00 0x10 0x130 0x00 0x00 0x06 0x00 0x0a 0x00 0x11 0x130 0x100 0x00 0x06 0x00 0x0b 0x00 0x00 0x00 0x40000000 0x00 0x06 0x00 0x0b 0x00 0x01 0x00 0x60000000 0x00 0x06 0x00 0x0b 0x00 0x02 0x80 0x00 0x00 0x06 0x00 0x0b 0x00 0x03 0xa0 0x00 0x00 0x07 0x00 0x01 0x00 0x00 0x00 0x52060000 0x00 0x07 0x00 0x01 0x00 0x01 0x00 0x72060000 0x00 0x07 0x00 0x01 0x00 0x02 0x00 0x52100000 0x00 0x07 0x00 0x01 0x00 0x03 0x00 0x52200000 0x00 0x07 0x00 0x01 0x00 0x04 0x00 0x52300000 0x00 0x07 0x00 0x01 0x00 0x05 0x00 0x72100000 0x00 0x07 0x00 0x01 0x00 0x06 0x00 0x72200000 0x00 0x07 0x00 0x01 0x00 0x07 0x00 0x72300000 0x00 0x07 0x00 0x01 0x00 0x08 0x00 0x53000000 0x00 0x07 0x00 0x01 0x00 0x09 0x00 0x73000000 0x00 0x07 0x00 0x01 0x00 0x0a 0x00 0x50000000 0x00 0x07 0x00 0x01 0x00 0x0b 0x00 0x70000000 0x00 0x07 0x00 0x01 0x00 0x0c 0x00 0x54000000 0x00 0x07 0x00 0x01 0x00 0x0d 0x00 0x74000000 0x00 0x07 0x00 0x01 0x00 0x0e 0x00 0x00 0x00 0x07 0x00 0x06 0x00 0x00 0x00 0x520e0000 0x00 0x07 0x00 0x06 0x00 0x01 0x00 0x720e0000 0x00 0x07 0x00 0x06 0x00 0x02 0x00 0x5b000000 0x00 0x07 0x00 0x06 0x00 0x03 0x00 0x7b000000 0x00 0x07 0x00 0x06 0x00 0x04 0x140 0x3000000 0x00 0x07 0x00 0x06 0x00 0x05 0x140 0xb000000 0x00 0x07 0x00 0x08 0x00 0x00 0x00 0x58400000 0x00 0x07 0x00 0x08 0x00 0x01 0x00 0x78400000 0x00 0x07 0x00 0x08 0x00 0x02 0x140 0x400000 0x00 0x07 0x00 0x08 0x00 0x03 0x140 0x8400000 0x00 0x07 0x00 0x08 0x00 0x04 0x00 0x58800000 0x00 0x07 0x00 0x08 0x00 0x05 0x00 0x78800000 0x00 0x07 0x00 0x08 0x00 0x06 0x140 0x800000 0x00 0x07 0x00 0x08 0x00 0x07 0x140 0x8800000 0x00 0x07 0x00 0x08 0x00 0x08 0x00 0x59000000 0x00 0x07 0x00 0x08 0x00 0x09 0x00 0x5a000000 0x00 0x07 0x00 0x08 0x00 0x0a 0x00 0x5b000000 0x00 0x07 0x00 0x08 0x00 0x0b 0x00 0x79000000 0x00 0x07 0x00 0x08 0x00 0x0c 0x00 0x7a000000 0x00 0x07 0x00 0x08 0x00 0x0d 0x00 0x7b000000 0x00 0x07 0x00 0x08 0x00 0x0e 0x140 0x1000000 0x00 0x07 0x00 0x08 0x00 0x0f 0x140 0x2000000 0x00 0x07 0x00 0x08 0x00 0x10 0x140 0x3000000 0x00 0x07 0x00 0x08 0x00 0x11 0x140 0x9000000 0x00 0x07 0x00 0x08 0x00 0x12 0x140 0xa000000 0x00 0x07 0x00 0x08 0x00 0x13 0x140 0xb000000 0x00 0x07 0x00 0x08 0x00 0x14 0x00 0x50000000 0x00 0x07 0x00 0x08 0x00 0x15 0x00 0x70000000 0x00 0x07 0x00 0x08 0x00 0x16 0x00 0x40000000 0x00 0x07 0x00 0x08 0x00 0x17 0x00 0x60000000 0x00 0x07 0x00 0x08 0x00 0x18 0x00 0x80000000 0x00 0x07 0x00 0x08 0x00 0x19 0x01 0x00 0x00 0x07 0x00 0x08 0x00 0x1a 0x02 0x00 0x00 0x07 0x00 0x08 0x00 0x1b 0x04 0x00 0x00 0x07 0x00 0x08 0x00 0x1c 0x08 0x00 0x00 0x07 0x00 0x08 0x00 0x1d 0x18 0x00 0x00 0x07 0x00 0x08 0x00 0x1e 0x38 0x00 0x00 0x07 0x00 0x08 0x00 0x1f 0xd8 0x00 0x00 0x07 0x00 0x08 0x00 0x20 0xf8 0x00 0x00 0x07 0x00 0x08 0x00 0x21 0x20 0x00 0x00 0x07 0x00 0x08 0x00 0x22 0x70 0x00 0x00 0x07 0x00 0x08 0x00 0x23 0x70 0x100 0x00 0x07 0x00 0x08 0x00 0x24 0xc0 0x00 0x00 0x07 0x00 0x08 0x00 0x25 0xe0 0x00 0x00 0x07 0x00 0x08 0x00 0x26 0x130 0x00 0x00 0x07 0x00 0x08 0x00 0x27 0x130 0x100 0x00 0x07 0x00 0x08 0x00 0x28 0x40 0x00 0x00 0x07 0x00 0x08 0x00 0x29 0x40 0x100 0x00 0x07 0x00 0x08 0x00 0x2a 0x80 0x00 0x00 0x07 0x00 0x08 0x00 0x2b 0xa0 0x00 0x00 0x07 0x00 0x08 0x00 0x2c 0x100 0x00 0x00 0x07 0x00 0x08 0x00 0x2d 0x100 0x100 0x00 0x07 0x00 0x0a 0x00 0x00 0x00 0x52080000 0x00 0x07 0x00 0x0a 0x00 0x01 0x00 0x72080000 0x00 0x07 0x00 0x0a 0x00 0x02 0x00 0x59000000 0x00 0x07 0x00 0x0a 0x00 0x03 0x00 0x5a000000 0x00 0x07 0x00 0x0a 0x00 0x04 0x00 0x79000000 0x00 0x07 0x00 0x0a 0x00 0x05 0x00 0x7a000000 0x00 0x07 0x00 0x0a 0x00 0x06 0x140 0x1000000 0x00 0x07 0x00 0x0a 0x00 0x07 0x140 0x2000000 0x00 0x07 0x00 0x0a 0x00 0x08 0x140 0x9000000 0x00 0x07 0x00 0x0a 0x00 0x09 0x140 0xa000000 0x00 0x07 0x00 0x0a 0x00 0x0a 0x18 0x00 0x00 0x07 0x00 0x0a 0x00 0x0b 0x38 0x00 0x00 0x07 0x00 0x0a 0x00 0x0c 0xd8 0x00 0x00 0x07 0x00 0x0a 0x00 0x0d 0xf8 0x00 0x00 0x07 0x00 0x0a 0x00 0x0e 0x70 0x00 0x00 0x07 0x00 0x0a 0x00 0x0f 0x70 0x100 0x00 0x07 0x00 0x0a 0x00 0x10 0x130 0x00 0x00 0x07 0x00 0x0a 0x00 0x11 0x130 0x100 0x00 0x07 0x00 0x0b 0x00 0x00 0x00 0x40000000 0x00 0x07 0x00 0x0b 0x00 0x01 0x00 0x60000000 0x00 0x07 0x00 0x0b 0x00 0x02 0x80 0x00 0x00 0x07 0x00 0x0b 0x00 0x03 0xa0 0x00 0x00 0x08 0x00 0x00 0x00 0x00 0x00 0x520c0000 0x00 0x08 0x00 0x00 0x00 0x01 0x00 0x720c0000 0x00 0x08 0x00 0x00 0x00 0x02 0x00 0x58400000 0x00 0x08 0x00 0x00 0x00 0x03 0x00 0x78400000 0x00 0x08 0x00 0x00 0x00 0x04 0x00 0x58800000 0x00 0x08 0x00 0x00 0x00 0x05 0x00 0x78800000 0x00 0x08 0x00 0x00 0x00 0x06 0x00 0x5c000000 0x00 0x08 0x00 0x00 0x00 0x07 0x00 0x7c000000 0x00 0x08 0x00 0x01 0x00 0x00 0x00 0x52060000 0x00 0x08 0x00 0x01 0x00 0x01 0x00 0x72060000 0x00 0x08 0x00 0x01 0x00 0x02 0x00 0x52100000 0x00 0x08 0x00 0x01 0x00 0x03 0x00 0x52200000 0x00 0x08 0x00 0x01 0x00 0x04 0x00 0x52300000 0x00 0x08 0x00 0x01 0x00 0x05 0x00 0x72100000 0x00 0x08 0x00 0x01 0x00 0x06 0x00 0x72200000 0x00 0x08 0x00 0x01 0x00 0x07 0x00 0x72300000 0x00 0x08 0x00 0x01 0x00 0x08 0x00 0x53000000 0x00 0x08 0x00 0x01 0x00 0x09 0x00 0x73000000 0x00 0x08 0x00 0x01 0x00 0x0a 0x00 0x50000000 0x00 0x08 0x00 0x01 0x00 0x0b 0x00 0x70000000 0x00 0x08 0x00 0x01 0x00 0x0c 0x00 0x54000000 0x00 0x08 0x00 0x01 0x00 0x0d 0x00 0x74000000 0x00 0x08 0x00 0x01 0x00 0x0e 0x00 0x00 0x00 0x08 0x00 0x01 0x00 0x0f 0x00 0x00 0x00 0x08 0x00 0x01 0x00 0x10 0x00 0x00 0x00 0x08 0x00 0x06 0x00 0x00 0x00 0x520e0000 0x00 0x08 0x00 0x06 0x00 0x01 0x00 0x720e0000 0x00 0x08 0x00 0x06 0x00 0x02 0x00 0x5b000000 0x00 0x08 0x00 0x06 0x00 0x03 0x00 0x7b000000 0x00 0x08 0x00 0x07 0x00 0x00 0x00 0x52080000 0x00 0x08 0x00 0x07 0x00 0x01 0x00 0x72080000 0x00 0x08 0x00 0x08 0x00 0x00 0x00 0x58400000 0x00 0x08 0x00 0x08 0x00 0x01 0x00 0x78400000 0x00 0x08 0x00 0x08 0x00 0x02 0x00 0x58800000 0x00 0x08 0x00 0x08 0x00 0x03 0x00 0x78800000 0x00 0x08 0x00 0x08 0x00 0x04 0x00 0x59000000 0x00 0x08 0x00 0x08 0x00 0x05 0x00 0x5a000000 0x00 0x08 0x00 0x08 0x00 0x06 0x00 0x5b000000 0x00 0x08 0x00 0x08 0x00 0x07 0x00 0x79000000 0x00 0x08 0x00 0x08 0x00 0x08 0x00 0x7a000000 0x00 0x08 0x00 0x08 0x00 0x09 0x00 0x7b000000 0x00 0x08 0x00 0x08 0x00 0x0a 0x00 0x50000000 0x00 0x08 0x00 0x08 0x00 0x0b 0x00 0x70000000 0x00 0x08 0x00 0x08 0x00 0x0c 0x00 0x40000000 0x00 0x08 0x00 0x08 0x00 0x0d 0x00 0x60000000 0x00 0x08 0x00 0x09 0x00 0x00 0x00 0x52020000 0x00 0x08 0x00 0x09 0x00 0x01 0x00 0x72020000 0x00 0x08 0x00 0x0b 0x00 0x00 0x00 0x40000000 0x00 0x08 0x00 0x0b 0x00 0x01 0x00 0x60000000 0x00 0x08 0x00 0x0c 0x00 0x00 0x00 0x52040000 0x00 0x08 0x00 0x0c 0x00 0x01 0x00 0x72040000 0x00 0x08 0x00 0x0d 0x00 0x00 0x00 0x52000000 0x00 0x08 0x00 0x0d 0x00 0x01 0x00 0x72000000 0x00 0x09 0x00 0x00 0x00 0x00 0x00 0x520c0000 0x00 0x09 0x00 0x00 0x00 0x01 0x00 0x720c0000 0x00 0x09 0x00 0x00 0x00 0x02 0x00 0x58400000 0x00 0x09 0x00 0x00 0x00 0x03 0x00 0x78400000 0x00 0x09 0x00 0x00 0x00 0x04 0x140 0x400000 0x00 0x09 0x00 0x00 0x00 0x05 0x140 0x8400000 0x00 0x09 0x00 0x00 0x00 0x06 0x00 0x58800000 0x00 0x09 0x00 0x00 0x00 0x07 0x00 0x78800000 0x00 0x09 0x00 0x00 0x00 0x08 0x140 0x800000 0x00 0x09 0x00 0x00 0x00 0x09 0x140 0x8800000 0x00 0x09 0x00 0x00 0x00 0x0a 0x00 0x5c000000 0x00 0x09 0x00 0x00 0x00 0x0b 0x00 0x7c000000 0x00 0x09 0x00 0x00 0x00 0x0c 0x140 0x4000000 0x00 0x09 0x00 0x00 0x00 0x0d 0x140 0xc000000 0x00 0x09 0x00 0x00 0x00 0x0e 0x00 0x00 0x00 0x09 0x00 0x00 0x00 0x0f 0x00 0x00 0x00 0x09 0x00 0x03 0x00 0x00 0x00 0x80000000 0x00 0x09 0x00 0x03 0x00 0x01 0x01 0x00 0x00 0x09 0x00 0x03 0x00 0x02 0x02 0x00 0x00 0x09 0x00 0x03 0x00 0x03 0x04 0x00 0x00 0x09 0x00 0x03 0x00 0x04 0x08 0x00 0x00 0x09 0x00 0x03 0x00 0x05 0x20 0x00 0x00 0x09 0x00 0x03 0x00 0x06 0xc0 0x00 0x00 0x09 0x00 0x03 0x00 0x07 0xe0 0x00 0x00 0x09 0x00 0x03 0x00 0x08 0x40 0x00 0x00 0x09 0x00 0x03 0x00 0x09 0x40 0x100 0x00 0x09 0x00 0x03 0x00 0x0a 0x100 0x00 0x00 0x09 0x00 0x03 0x00 0x0b 0x100 0x100 0x00 0x09 0x00 0x05 0x00 0x00 0x00 0x80000080 0x00 0x09 0x00 0x05 0x00 0x01 0x01 0x80 0x00 0x09 0x00 0x05 0x00 0x02 0x02 0x80 0x00 0x09 0x00 0x05 0x00 0x03 0x04 0x80 0x00 0x09 0x00 0x05 0x00 0x04 0x08 0x80 0x00 0x09 0x00 0x05 0x00 0x05 0x20 0x80 0x00 0x09 0x00 0x05 0x00 0x06 0xc0 0x80 0x00 0x09 0x00 0x05 0x00 0x07 0xe0 0x80 0x00 0x09 0x00 0x05 0x00 0x08 0x40 0x80 0x00 0x09 0x00 0x05 0x00 0x09 0x40 0x180 0x00 0x09 0x00 0x05 0x00 0x0a 0x100 0x80 0x00 0x09 0x00 0x05 0x00 0x0b 0x100 0x180 0x00 0x09 0x00 0x06 0x00 0x00 0x00 0x520e0000 0x00 0x09 0x00 0x06 0x00 0x01 0x00 0x720e0000 0x00 0x09 0x00 0x06 0x00 0x02 0x00 0x5b000000 0x00 0x09 0x00 0x06 0x00 0x03 0x00 0x7b000000 0x00 0x09 0x00 0x06 0x00 0x04 0x140 0x3000000 0x00 0x09 0x00 0x06 0x00 0x05 0x140 0xb000000 0x00 0x09 0x00 0x08 0x00 0x00 0x00 0x58400000 0x00 0x09 0x00 0x08 0x00 0x01 0x00 0x78400000 0x00 0x09 0x00 0x08 0x00 0x02 0x140 0x400000 0x00 0x09 0x00 0x08 0x00 0x03 0x140 0x8400000 0x00 0x09 0x00 0x08 0x00 0x04 0x00 0x58800000 0x00 0x09 0x00 0x08 0x00 0x05 0x00 0x78800000 0x00 0x09 0x00 0x08 0x00 0x06 0x140 0x800000 0x00 0x09 0x00 0x08 0x00 0x07 0x140 0x8800000 0x00 0x09 0x00 0x08 0x00 0x08 0x00 0x59000000 0x00 0x09 0x00 0x08 0x00 0x09 0x00 0x5a000000 0x00 0x09 0x00 0x08 0x00 0x0a 0x00 0x5b000000 0x00 0x09 0x00 0x08 0x00 0x0b 0x00 0x79000000 0x00 0x09 0x00 0x08 0x00 0x0c 0x00 0x7a000000 0x00 0x09 0x00 0x08 0x00 0x0d 0x00 0x7b000000 0x00 0x09 0x00 0x08 0x00 0x0e 0x140 0x1000000 0x00 0x09 0x00 0x08 0x00 0x0f 0x140 0x2000000 0x00 0x09 0x00 0x08 0x00 0x10 0x140 0x3000000 0x00 0x09 0x00 0x08 0x00 0x11 0x140 0x9000000 0x00 0x09 0x00 0x08 0x00 0x12 0x140 0xa000000 0x00 0x09 0x00 0x08 0x00 0x13 0x140 0xb000000 0x00 0x09 0x00 0x08 0x00 0x14 0x00 0x50000000 0x00 0x09 0x00 0x08 0x00 0x15 0x00 0x70000000 0x00 0x09 0x00 0x08 0x00 0x16 0x00 0x40000000 0x00 0x09 0x00 0x08 0x00 0x17 0x00 0x60000000 0x00 0x09 0x00 0x08 0x00 0x18 0x00 0x80000000 0x00 0x09 0x00 0x08 0x00 0x19 0x01 0x00 0x00 0x09 0x00 0x08 0x00 0x1a 0x02 0x00 0x00 0x09 0x00 0x08 0x00 0x1b 0x04 0x00 0x00 0x09 0x00 0x08 0x00 0x1c 0x08 0x00 0x00 0x09 0x00 0x08 0x00 0x1d 0x18 0x00 0x00 0x09 0x00 0x08 0x00 0x1e 0x38 0x00 0x00 0x09 0x00 0x08 0x00 0x1f 0xd8 0x00 0x00 0x09 0x00 0x08 0x00 0x20 0xf8 0x00 0x00 0x09 0x00 0x08 0x00 0x21 0x20 0x00 0x00 0x09 0x00 0x08 0x00 0x22 0x70 0x00 0x00 0x09 0x00 0x08 0x00 0x23 0x70 0x100 0x00 0x09 0x00 0x08 0x00 0x24 0xc0 0x00 0x00 0x09 0x00 0x08 0x00 0x25 0xe0 0x00 0x00 0x09 0x00 0x08 0x00 0x26 0x130 0x00 0x00 0x09 0x00 0x08 0x00 0x27 0x130 0x100 0x00 0x09 0x00 0x08 0x00 0x28 0x40 0x00 0x00 0x09 0x00 0x08 0x00 0x29 0x40 0x100 0x00 0x09 0x00 0x08 0x00 0x2a 0x80 0x00 0x00 0x09 0x00 0x08 0x00 0x2b 0xa0 0x00 0x00 0x09 0x00 0x08 0x00 0x2c 0x100 0x00 0x00 0x09 0x00 0x08 0x00 0x2d 0x100 0x100 0x00 0x09 0x00 0x0b 0x00 0x00 0x00 0x40000000 0x00 0x09 0x00 0x0b 0x00 0x01 0x00 0x60000000 0x00 0x09 0x00 0x0b 0x00 0x02 0x80 0x00 0x00 0x09 0x00 0x0b 0x00 0x03 0xa0 0x00 0x00 0x0a 0x00 0x01 0x00 0x00 0x00 0x52060000 0x00 0x0a 0x00 0x01 0x00 0x01 0x00 0x72060000 0x00 0x0a 0x00 0x01 0x00 0x02 0x00 0x52100000 0x00 0x0a 0x00 0x01 0x00 0x03 0x00 0x52200000 0x00 0x0a 0x00 0x01 0x00 0x04 0x00 0x52300000 0x00 0x0a 0x00 0x01 0x00 0x05 0x00 0x72100000 0x00 0x0a 0x00 0x01 0x00 0x06 0x00 0x72200000 0x00 0x0a 0x00 0x01 0x00 0x07 0x00 0x72300000 0x00 0x0a 0x00 0x01 0x00 0x08 0x00 0x53000000 0x00 0x0a 0x00 0x01 0x00 0x09 0x00 0x73000000 0x00 0x0a 0x00 0x01 0x00 0x0a 0x00 0x50000000 0x00 0x0a 0x00 0x01 0x00 0x0b 0x00 0x70000000 0x00 0x0a 0x00 0x01 0x00 0x0c 0x00 0x54000000 0x00 0x0a 0x00 0x01 0x00 0x0d 0x00 0x74000000 0x00 0x0a 0x00 0x01 0x00 0x0e 0x00 0x00 0x00 0x0a 0x00 0x01 0x00 0x0f 0x00 0x00 0x00 0x0a 0x00 0x01 0x00 0x10 0x00 0x00 0x00 0x0a 0x00 0x07 0x00 0x00 0x00 0x52080000 0x00 0x0a 0x00 0x07 0x00 0x01 0x00 0x72080000 0x00 0x0a 0x00 0x09 0x00 0x00 0x00 0x52020000 0x00 0x0a 0x00 0x09 0x00 0x01 0x00 0x72020000 0x00 0x0a 0x00 0x0c 0x00 0x00 0x00 0x52040000 0x00 0x0a 0x00 0x0c 0x00 0x01 0x00 0x72040000 0x00 0x0a 0x00 0x0d 0x00 0x00 0x00 0x52000000 0x00 0x0a 0x00 0x0d 0x00 0x01 0x00 0x72000000 0x00 0x0b 0x00 0x0a 0x00 0x00 0x00 0x52080000 0x00 0x0b 0x00 0x0a 0x00 0x01 0x00 0x72080000 0x00 0x0b 0x00 0x0a 0x00 0x02 0x00 0x59000000 0x00 0x0b 0x00 0x0a 0x00 0x03 0x00 0x5a000000 0x00 0x0b 0x00 0x0a 0x00 0x04 0x00 0x79000000 0x00 0x0b 0x00 0x0a 0x00 0x05 0x00 0x7a000000 0x00 0x0b 0x00 0x0a 0x00 0x06 0x140 0x1000000 0x00 0x0b 0x00 0x0a 0x00 0x07 0x140 0x2000000 0x00 0x0b 0x00 0x0a 0x00 0x08 0x140 0x9000000 0x00 0x0b 0x00 0x0a 0x00 0x09 0x140 0xa000000 0x00 0x0b 0x00 0x0a 0x00 0x0a 0x18 0x00 0x00 0x0b 0x00 0x0a 0x00 0x0b 0x38 0x00 0x00 0x0b 0x00 0x0a 0x00 0x0c 0xd8 0x00 0x00 0x0b 0x00 0x0a 0x00 0x0d 0xf8 0x00 0x00 0x0b 0x00 0x0a 0x00 0x0e 0x70 0x00 0x00 0x0b 0x00 0x0a 0x00 0x0f 0x70 0x100 0x00 0x0b 0x00 0x0a 0x00 0x10 0x130 0x00 0x00 0x0b 0x00 0x0a 0x00 0x11 0x130 0x100 0x00 0x0b 0x00 0x0a 0x00 0x12 0x00 0x00 0x00 0x0b 0x00 0x0a 0x00 0x13 0x00 0x00 0x00 0x0c 0x00 0x00 0x00 0x00 0x00 0x520c0000 0x00 0x0c 0x00 0x00 0x00 0x01 0x00 0x720c0000 0x00 0x0c 0x00 0x00 0x00 0x02 0x00 0x58400000 0x00 0x0c 0x00 0x00 0x00 0x03 0x00 0x78400000 0x00 0x0c 0x00 0x00 0x00 0x04 0x140 0x400000 0x00 0x0c 0x00 0x00 0x00 0x05 0x140 0x8400000 0x00 0x0c 0x00 0x00 0x00 0x06 0x00 0x58800000 0x00 0x0c 0x00 0x00 0x00 0x07 0x00 0x78800000 0x00 0x0c 0x00 0x00 0x00 0x08 0x140 0x800000 0x00 0x0c 0x00 0x00 0x00 0x09 0x140 0x8800000 0x00 0x0c 0x00 0x00 0x00 0x0a 0x00 0x5c000000 0x00 0x0c 0x00 0x00 0x00 0x0b 0x00 0x7c000000 0x00 0x0c 0x00 0x00 0x00 0x0c 0x140 0x4000000 0x00 0x0c 0x00 0x00 0x00 0x0d 0x140 0xc000000 0x00 0x0c 0x00 0x01 0x00 0x00 0x00 0x52060000 0x00 0x0c 0x00 0x01 0x00 0x01 0x00 0x72060000 0x00 0x0c 0x00 0x01 0x00 0x02 0x00 0x52100000 0x00 0x0c 0x00 0x01 0x00 0x03 0x00 0x52200000 0x00 0x0c 0x00 0x01 0x00 0x04 0x00 0x52300000 0x00 0x0c 0x00 0x01 0x00 0x05 0x00 0x72100000 0x00 0x0c 0x00 0x01 0x00 0x06 0x00 0x72200000 0x00 0x0c 0x00 0x01 0x00 0x07 0x00 0x72300000 0x00 0x0c 0x00 0x01 0x00 0x08 0x00 0x53000000 0x00 0x0c 0x00 0x01 0x00 0x09 0x00 0x73000000 0x00 0x0c 0x00 0x01 0x00 0x0a 0x00 0x50000000 0x00 0x0c 0x00 0x01 0x00 0x0b 0x00 0x70000000 0x00 0x0c 0x00 0x01 0x00 0x0c 0x00 0x54000000 0x00 0x0c 0x00 0x01 0x00 0x0d 0x00 0x74000000 0x00 0x0c 0x00 0x01 0x00 0x0e 0x00 0x00 0x00 0x0c 0x00 0x03 0x00 0x00 0x00 0x80000000 0x00 0x0c 0x00 0x03 0x00 0x01 0x01 0x00 0x00 0x0c 0x00 0x03 0x00 0x02 0x02 0x00 0x00 0x0c 0x00 0x03 0x00 0x03 0x04 0x00 0x00 0x0c 0x00 0x03 0x00 0x04 0x08 0x00 0x00 0x0c 0x00 0x03 0x00 0x05 0x20 0x00 0x00 0x0c 0x00 0x03 0x00 0x06 0xc0 0x00 0x00 0x0c 0x00 0x03 0x00 0x07 0xe0 0x00 0x00 0x0c 0x00 0x03 0x00 0x08 0x40 0x00 0x00 0x0c 0x00 0x03 0x00 0x09 0x40 0x100 0x00 0x0c 0x00 0x03 0x00 0x0a 0x100 0x00 0x00 0x0c 0x00 0x03 0x00 0x0b 0x100 0x100 0x00 0x0c 0x00 0x05 0x00 0x00 0x00 0x80000080 0x00 0x0c 0x00 0x05 0x00 0x01 0x01 0x80 0x00 0x0c 0x00 0x05 0x00 0x02 0x02 0x80 0x00 0x0c 0x00 0x05 0x00 0x03 0x04 0x80 0x00 0x0c 0x00 0x05 0x00 0x04 0x08 0x80 0x00 0x0c 0x00 0x05 0x00 0x05 0x20 0x80 0x00 0x0c 0x00 0x05 0x00 0x06 0xc0 0x80 0x00 0x0c 0x00 0x05 0x00 0x07 0xe0 0x80 0x00 0x0c 0x00 0x05 0x00 0x08 0x40 0x80 0x00 0x0c 0x00 0x05 0x00 0x09 0x40 0x180 0x00 0x0c 0x00 0x05 0x00 0x0a 0x100 0x80 0x00 0x0c 0x00 0x05 0x00 0x0b 0x100 0x180 0x00 0x0c 0x00 0x06 0x00 0x00 0x00 0x520e0000 0x00 0x0c 0x00 0x06 0x00 0x01 0x00 0x720e0000 0x00 0x0c 0x00 0x06 0x00 0x02 0x00 0x5b000000 0x00 0x0c 0x00 0x06 0x00 0x03 0x00 0x7b000000 0x00 0x0c 0x00 0x06 0x00 0x04 0x140 0x3000000 0x00 0x0c 0x00 0x06 0x00 0x05 0x140 0xb000000 0x00 0x0c 0x00 0x07 0x00 0x00 0x00 0x52080000 0x00 0x0c 0x00 0x07 0x00 0x01 0x00 0x72080000 0x00 0x0c 0x00 0x08 0x00 0x00 0x00 0x58400000 0x00 0x0c 0x00 0x08 0x00 0x01 0x00 0x78400000 0x00 0x0c 0x00 0x08 0x00 0x02 0x140 0x400000 0x00 0x0c 0x00 0x08 0x00 0x03 0x140 0x8400000 0x00 0x0c 0x00 0x08 0x00 0x04 0x00 0x58800000 0x00 0x0c 0x00 0x08 0x00 0x05 0x00 0x78800000 0x00 0x0c 0x00 0x08 0x00 0x06 0x140 0x800000 0x00 0x0c 0x00 0x08 0x00 0x07 0x140 0x8800000 0x00 0x0c 0x00 0x08 0x00 0x08 0x00 0x59000000 0x00 0x0c 0x00 0x08 0x00 0x09 0x00 0x5a000000 0x00 0x0c 0x00 0x08 0x00 0x0a 0x00 0x5b000000 0x00 0x0c 0x00 0x08 0x00 0x0b 0x00 0x79000000 0x00 0x0c 0x00 0x08 0x00 0x0c 0x00 0x7a000000 0x00 0x0c 0x00 0x08 0x00 0x0d 0x00 0x7b000000 0x00 0x0c 0x00 0x08 0x00 0x0e 0x140 0x1000000 0x00 0x0c 0x00 0x08 0x00 0x0f 0x140 0x2000000 0x00 0x0c 0x00 0x08 0x00 0x10 0x140 0x3000000 0x00 0x0c 0x00 0x08 0x00 0x11 0x140 0x9000000 0x00 0x0c 0x00 0x08 0x00 0x12 0x140 0xa000000 0x00 0x0c 0x00 0x08 0x00 0x13 0x140 0xb000000 0x00 0x0c 0x00 0x08 0x00 0x14 0x00 0x50000000 0x00 0x0c 0x00 0x08 0x00 0x15 0x00 0x70000000 0x00 0x0c 0x00 0x08 0x00 0x16 0x00 0x40000000 0x00 0x0c 0x00 0x08 0x00 0x17 0x00 0x60000000 0x00 0x0c 0x00 0x08 0x00 0x18 0x00 0x80000000 0x00 0x0c 0x00 0x08 0x00 0x19 0x01 0x00 0x00 0x0c 0x00 0x08 0x00 0x1a 0x02 0x00 0x00 0x0c 0x00 0x08 0x00 0x1b 0x04 0x00 0x00 0x0c 0x00 0x08 0x00 0x1c 0x08 0x00 0x00 0x0c 0x00 0x08 0x00 0x1d 0x18 0x00 0x00 0x0c 0x00 0x08 0x00 0x1e 0x38 0x00 0x00 0x0c 0x00 0x08 0x00 0x1f 0xd8 0x00 0x00 0x0c 0x00 0x08 0x00 0x20 0xf8 0x00 0x00 0x0c 0x00 0x08 0x00 0x21 0x20 0x00 0x00 0x0c 0x00 0x08 0x00 0x22 0x70 0x00 0x00 0x0c 0x00 0x08 0x00 0x23 0x70 0x100 0x00 0x0c 0x00 0x08 0x00 0x24 0xc0 0x00 0x00 0x0c 0x00 0x08 0x00 0x25 0xe0 0x00 0x00 0x0c 0x00 0x08 0x00 0x26 0x130 0x00 0x00 0x0c 0x00 0x08 0x00 0x27 0x130 0x100 0x00 0x0c 0x00 0x08 0x00 0x28 0x40 0x00 0x00 0x0c 0x00 0x08 0x00 0x29 0x40 0x100 0x00 0x0c 0x00 0x08 0x00 0x2a 0x80 0x00 0x00 0x0c 0x00 0x08 0x00 0x2b 0xa0 0x00 0x00 0x0c 0x00 0x08 0x00 0x2c 0x100 0x00 0x00 0x0c 0x00 0x08 0x00 0x2d 0x100 0x100 0x00 0x0c 0x00 0x09 0x00 0x00 0x00 0x52020000 0x00 0x0c 0x00 0x09 0x00 0x01 0x00 0x72020000 0x00 0x0c 0x00 0x0a 0x00 0x00 0x00 0x52080000 0x00 0x0c 0x00 0x0a 0x00 0x01 0x00 0x72080000 0x00 0x0c 0x00 0x0a 0x00 0x02 0x00 0x59000000 0x00 0x0c 0x00 0x0a 0x00 0x03 0x00 0x5a000000 0x00 0x0c 0x00 0x0a 0x00 0x04 0x00 0x79000000 0x00 0x0c 0x00 0x0a 0x00 0x05 0x00 0x7a000000 0x00 0x0c 0x00 0x0a 0x00 0x06 0x140 0x1000000 0x00 0x0c 0x00 0x0a 0x00 0x07 0x140 0x2000000 0x00 0x0c 0x00 0x0a 0x00 0x08 0x140 0x9000000 0x00 0x0c 0x00 0x0a 0x00 0x09 0x140 0xa000000 0x00 0x0c 0x00 0x0a 0x00 0x0a 0x18 0x00 0x00 0x0c 0x00 0x0a 0x00 0x0b 0x38 0x00 0x00 0x0c 0x00 0x0a 0x00 0x0c 0xd8 0x00 0x00 0x0c 0x00 0x0a 0x00 0x0d 0xf8 0x00 0x00 0x0c 0x00 0x0a 0x00 0x0e 0x70 0x00 0x00 0x0c 0x00 0x0a 0x00 0x0f 0x70 0x100 0x00 0x0c 0x00 0x0a 0x00 0x10 0x130 0x00 0x00 0x0c 0x00 0x0a 0x00 0x11 0x130 0x100 0x00 0x0c 0x00 0x0c 0x00 0x00 0x00 0x52040000 0x00 0x0c 0x00 0x0c 0x00 0x01 0x00 0x72040000 0x00 0x0c 0x00 0x0d 0x00 0x00 0x00 0x52000000 0x00 0x0c 0x00 0x0d 0x00 0x01 0x00 0x72000000 0x00 0x0d 0x00 0x03 0x00 0x00 0x00 0x80000000 0x00 0x0d 0x00 0x03 0x00 0x01 0x01 0x00 0x00 0x0d 0x00 0x03 0x00 0x02 0x02 0x00 0x00 0x0d 0x00 0x03 0x00 0x03 0x04 0x00 0x00 0x0d 0x00 0x03 0x00 0x04 0x08 0x00 0x00 0x0d 0x00 0x03 0x00 0x05 0x20 0x00 0x00 0x0d 0x00 0x03 0x00 0x06 0xc0 0x00 0x00 0x0d 0x00 0x03 0x00 0x07 0xe0 0x00 0x00 0x0d 0x00 0x03 0x00 0x08 0x40 0x00 0x00 0x0d 0x00 0x03 0x00 0x09 0x40 0x100 0x00 0x0d 0x00 0x03 0x00 0x0a 0x100 0x00 0x00 0x0d 0x00 0x03 0x00 0x0b 0x100 0x100 0x00 0x0d 0x00 0x05 0x00 0x00 0x00 0x80000080 0x00 0x0d 0x00 0x05 0x00 0x01 0x01 0x80 0x00 0x0d 0x00 0x05 0x00 0x02 0x02 0x80 0x00 0x0d 0x00 0x05 0x00 0x03 0x04 0x80 0x00 0x0d 0x00 0x05 0x00 0x04 0x08 0x80 0x00 0x0d 0x00 0x05 0x00 0x05 0x20 0x80 0x00 0x0d 0x00 0x05 0x00 0x06 0xc0 0x80 0x00 0x0d 0x00 0x05 0x00 0x07 0xe0 0x80 0x00 0x0d 0x00 0x05 0x00 0x08 0x40 0x80 0x00 0x0d 0x00 0x05 0x00 0x09 0x40 0x180 0x00 0x0d 0x00 0x05 0x00 0x0a 0x100 0x80 0x00 0x0d 0x00 0x05 0x00 0x0b 0x100 0x180 0x00 0x0d 0x00 0x06 0x00 0x00 0x00 0x520e0000 0x00 0x0d 0x00 0x06 0x00 0x01 0x00 0x720e0000 0x00 0x0d 0x00 0x06 0x00 0x02 0x00 0x5b000000 0x00 0x0d 0x00 0x06 0x00 0x03 0x00 0x7b000000 0x00 0x0d 0x00 0x06 0x00 0x04 0x140 0x3000000 0x00 0x0d 0x00 0x06 0x00 0x05 0x140 0xb000000 0x00 0x0d 0x00 0x08 0x00 0x00 0x00 0x58400000 0x00 0x0d 0x00 0x08 0x00 0x01 0x00 0x78400000 0x00 0x0d 0x00 0x08 0x00 0x02 0x140 0x400000 0x00 0x0d 0x00 0x08 0x00 0x03 0x140 0x8400000 0x00 0x0d 0x00 0x08 0x00 0x04 0x00 0x58800000 0x00 0x0d 0x00 0x08 0x00 0x05 0x00 0x78800000 0x00 0x0d 0x00 0x08 0x00 0x06 0x140 0x800000 0x00 0x0d 0x00 0x08 0x00 0x07 0x140 0x8800000 0x00 0x0d 0x00 0x08 0x00 0x08 0x00 0x59000000 0x00 0x0d 0x00 0x08 0x00 0x09 0x00 0x5a000000 0x00 0x0d 0x00 0x08 0x00 0x0a 0x00 0x5b000000 0x00 0x0d 0x00 0x08 0x00 0x0b 0x00 0x79000000 0x00 0x0d 0x00 0x08 0x00 0x0c 0x00 0x7a000000 0x00 0x0d 0x00 0x08 0x00 0x0d 0x00 0x7b000000 0x00 0x0d 0x00 0x08 0x00 0x0e 0x140 0x1000000 0x00 0x0d 0x00 0x08 0x00 0x0f 0x140 0x2000000 0x00 0x0d 0x00 0x08 0x00 0x10 0x140 0x3000000 0x00 0x0d 0x00 0x08 0x00 0x11 0x140 0x9000000 0x00 0x0d 0x00 0x08 0x00 0x12 0x140 0xa000000 0x00 0x0d 0x00 0x08 0x00 0x13 0x140 0xb000000 0x00 0x0d 0x00 0x08 0x00 0x14 0x00 0x50000000 0x00 0x0d 0x00 0x08 0x00 0x15 0x00 0x70000000 0x00 0x0d 0x00 0x08 0x00 0x16 0x00 0x40000000 0x00 0x0d 0x00 0x08 0x00 0x17 0x00 0x60000000 0x00 0x0d 0x00 0x08 0x00 0x18 0x00 0x80000000 0x00 0x0d 0x00 0x08 0x00 0x19 0x01 0x00 0x00 0x0d 0x00 0x08 0x00 0x1a 0x02 0x00 0x00 0x0d 0x00 0x08 0x00 0x1b 0x04 0x00 0x00 0x0d 0x00 0x08 0x00 0x1c 0x08 0x00 0x00 0x0d 0x00 0x08 0x00 0x1d 0x18 0x00 0x00 0x0d 0x00 0x08 0x00 0x1e 0x38 0x00 0x00 0x0d 0x00 0x08 0x00 0x1f 0xd8 0x00 0x00 0x0d 0x00 0x08 0x00 0x20 0xf8 0x00 0x00 0x0d 0x00 0x08 0x00 0x21 0x20 0x00 0x00 0x0d 0x00 0x08 0x00 0x22 0x70 0x00 0x00 0x0d 0x00 0x08 0x00 0x23 0x70 0x100 0x00 0x0d 0x00 0x08 0x00 0x24 0xc0 0x00 0x00 0x0d 0x00 0x08 0x00 0x25 0xe0 0x00 0x00 0x0d 0x00 0x08 0x00 0x26 0x130 0x00 0x00 0x0d 0x00 0x08 0x00 0x27 0x130 0x100 0x00 0x0d 0x00 0x08 0x00 0x28 0x40 0x00 0x00 0x0d 0x00 0x08 0x00 0x29 0x40 0x100 0x00 0x0d 0x00 0x08 0x00 0x2a 0x80 0x00 0x00 0x0d 0x00 0x08 0x00 0x2b 0xa0 0x00 0x00 0x0d 0x00 0x08 0x00 0x2c 0x100 0x00 0x00 0x0d 0x00 0x08 0x00 0x2d 0x100 0x100 0x00 0x0d 0x00 0x0a 0x00 0x00 0x00 0x52080000 0x00 0x0d 0x00 0x0a 0x00 0x01 0x00 0x72080000 0x00 0x0d 0x00 0x0a 0x00 0x02 0x00 0x59000000 0x00 0x0d 0x00 0x0a 0x00 0x03 0x00 0x5a000000 0x00 0x0d 0x00 0x0a 0x00 0x04 0x00 0x79000000 0x00 0x0d 0x00 0x0a 0x00 0x05 0x00 0x7a000000 0x00 0x0d 0x00 0x0a 0x00 0x06 0x140 0x1000000 0x00 0x0d 0x00 0x0a 0x00 0x07 0x140 0x2000000 0x00 0x0d 0x00 0x0a 0x00 0x08 0x140 0x9000000 0x00 0x0d 0x00 0x0a 0x00 0x09 0x140 0xa000000 0x00 0x0d 0x00 0x0a 0x00 0x0a 0x18 0x00 0x00 0x0d 0x00 0x0a 0x00 0x0b 0x38 0x00 0x00 0x0d 0x00 0x0a 0x00 0x0c 0xd8 0x00 0x00 0x0d 0x00 0x0a 0x00 0x0d 0xf8 0x00 0x00 0x0d 0x00 0x0a 0x00 0x0e 0x70 0x00 0x00 0x0d 0x00 0x0a 0x00 0x0f 0x70 0x100 0x00 0x0d 0x00 0x0a 0x00 0x10 0x130 0x00 0x00 0x0d 0x00 0x0a 0x00 0x11 0x130 0x100 0x00 0x0d 0x00 0x0a 0x00 0x12 0x00 0x00 0x00 0x0d 0x00 0x0a 0x00 0x13 0x00 0x00 0x00 0x0d 0x00 0x0b 0x00 0x00 0x00 0x40000000 0x00 0x0d 0x00 0x0b 0x00 0x01 0x00 0x60000000 0x00 0x0d 0x00 0x0b 0x00 0x02 0x80 0x00 0x00 0x0d 0x00 0x0b 0x00 0x03 0xa0 0x00 0x00 0x0e 0x00 0x03 0x00 0x00 0x00 0x80000000 0x00 0x0e 0x00 0x03 0x00 0x01 0x01 0x00 0x00 0x0e 0x00 0x03 0x00 0x02 0x02 0x00 0x00 0x0e 0x00 0x03 0x00 0x03 0x04 0x00 0x00 0x0e 0x00 0x03 0x00 0x04 0x08 0x00 0x00 0x0e 0x00 0x03 0x00 0x05 0x20 0x00 0x00 0x0e 0x00 0x03 0x00 0x06 0xc0 0x00 0x00 0x0e 0x00 0x03 0x00 0x07 0xe0 0x00 0x00 0x0e 0x00 0x03 0x00 0x08 0x40 0x00 0x00 0x0e 0x00 0x03 0x00 0x09 0x40 0x100 0x00 0x0e 0x00 0x03 0x00 0x0a 0x100 0x00 0x00 0x0e 0x00 0x03 0x00 0x0b 0x100 0x100 0x00 0x0e 0x00 0x05 0x00 0x00 0x00 0x80000080 0x00 0x0e 0x00 0x05 0x00 0x01 0x01 0x80 0x00 0x0e 0x00 0x05 0x00 0x02 0x02 0x80 0x00 0x0e 0x00 0x05 0x00 0x03 0x04 0x80 0x00 0x0e 0x00 0x05 0x00 0x04 0x08 0x80 0x00 0x0e 0x00 0x05 0x00 0x05 0x20 0x80 0x00 0x0e 0x00 0x05 0x00 0x06 0xc0 0x80 0x00 0x0e 0x00 0x05 0x00 0x07 0xe0 0x80 0x00 0x0e 0x00 0x05 0x00 0x08 0x40 0x80 0x00 0x0e 0x00 0x05 0x00 0x09 0x40 0x180 0x00 0x0e 0x00 0x05 0x00 0x0a 0x100 0x80 0x00 0x0e 0x00 0x05 0x00 0x0b 0x100 0x180 0x00 0x0e 0x00 0x06 0x00 0x00 0x00 0x520e0000 0x00 0x0e 0x00 0x06 0x00 0x01 0x00 0x720e0000 0x00 0x0e 0x00 0x06 0x00 0x02 0x00 0x5b000000 0x00 0x0e 0x00 0x06 0x00 0x03 0x00 0x7b000000 0x00 0x0e 0x00 0x06 0x00 0x04 0x140 0x3000000 0x00 0x0e 0x00 0x06 0x00 0x05 0x140 0xb000000 0x00 0x0e 0x00 0x08 0x00 0x00 0x00 0x58400000 0x00 0x0e 0x00 0x08 0x00 0x01 0x00 0x78400000 0x00 0x0e 0x00 0x08 0x00 0x02 0x140 0x400000 0x00 0x0e 0x00 0x08 0x00 0x03 0x140 0x8400000 0x00 0x0e 0x00 0x08 0x00 0x04 0x00 0x58800000 0x00 0x0e 0x00 0x08 0x00 0x05 0x00 0x78800000 0x00 0x0e 0x00 0x08 0x00 0x06 0x140 0x800000 0x00 0x0e 0x00 0x08 0x00 0x07 0x140 0x8800000 0x00 0x0e 0x00 0x08 0x00 0x08 0x00 0x59000000 0x00 0x0e 0x00 0x08 0x00 0x09 0x00 0x5a000000 0x00 0x0e 0x00 0x08 0x00 0x0a 0x00 0x5b000000 0x00 0x0e 0x00 0x08 0x00 0x0b 0x00 0x79000000 0x00 0x0e 0x00 0x08 0x00 0x0c 0x00 0x7a000000 0x00 0x0e 0x00 0x08 0x00 0x0d 0x00 0x7b000000 0x00 0x0e 0x00 0x08 0x00 0x0e 0x140 0x1000000 0x00 0x0e 0x00 0x08 0x00 0x0f 0x140 0x2000000 0x00 0x0e 0x00 0x08 0x00 0x10 0x140 0x3000000 0x00 0x0e 0x00 0x08 0x00 0x11 0x140 0x9000000 0x00 0x0e 0x00 0x08 0x00 0x12 0x140 0xa000000 0x00 0x0e 0x00 0x08 0x00 0x13 0x140 0xb000000 0x00 0x0e 0x00 0x08 0x00 0x14 0x00 0x50000000 0x00 0x0e 0x00 0x08 0x00 0x15 0x00 0x70000000 0x00 0x0e 0x00 0x08 0x00 0x16 0x00 0x40000000 0x00 0x0e 0x00 0x08 0x00 0x17 0x00 0x60000000 0x00 0x0e 0x00 0x08 0x00 0x18 0x00 0x80000000 0x00 0x0e 0x00 0x08 0x00 0x19 0x01 0x00 0x00 0x0e 0x00 0x08 0x00 0x1a 0x02 0x00 0x00 0x0e 0x00 0x08 0x00 0x1b 0x04 0x00 0x00 0x0e 0x00 0x08 0x00 0x1c 0x08 0x00 0x00 0x0e 0x00 0x08 0x00 0x1d 0x18 0x00 0x00 0x0e 0x00 0x08 0x00 0x1e 0x38 0x00 0x00 0x0e 0x00 0x08 0x00 0x1f 0xd8 0x00 0x00 0x0e 0x00 0x08 0x00 0x20 0xf8 0x00 0x00 0x0e 0x00 0x08 0x00 0x21 0x20 0x00 0x00 0x0e 0x00 0x08 0x00 0x22 0x70 0x00 0x00 0x0e 0x00 0x08 0x00 0x23 0x70 0x100 0x00 0x0e 0x00 0x08 0x00 0x24 0xc0 0x00 0x00 0x0e 0x00 0x08 0x00 0x25 0xe0 0x00 0x00 0x0e 0x00 0x08 0x00 0x26 0x130 0x00 0x00 0x0e 0x00 0x08 0x00 0x27 0x130 0x100 0x00 0x0e 0x00 0x08 0x00 0x28 0x40 0x00 0x00 0x0e 0x00 0x08 0x00 0x29 0x40 0x100 0x00 0x0e 0x00 0x08 0x00 0x2a 0x80 0x00 0x00 0x0e 0x00 0x08 0x00 0x2b 0xa0 0x00 0x00 0x0e 0x00 0x08 0x00 0x2c 0x100 0x00 0x00 0x0e 0x00 0x08 0x00 0x2d 0x100 0x100 0x00 0x0e 0x00 0x0a 0x00 0x00 0x00 0x52080000 0x00 0x0e 0x00 0x0a 0x00 0x01 0x00 0x72080000 0x00 0x0e 0x00 0x0a 0x00 0x02 0x00 0x59000000 0x00 0x0e 0x00 0x0a 0x00 0x03 0x00 0x5a000000 0x00 0x0e 0x00 0x0a 0x00 0x04 0x00 0x79000000 0x00 0x0e 0x00 0x0a 0x00 0x05 0x00 0x7a000000 0x00 0x0e 0x00 0x0a 0x00 0x06 0x140 0x1000000 0x00 0x0e 0x00 0x0a 0x00 0x07 0x140 0x2000000 0x00 0x0e 0x00 0x0a 0x00 0x08 0x140 0x9000000 0x00 0x0e 0x00 0x0a 0x00 0x09 0x140 0xa000000 0x00 0x0e 0x00 0x0a 0x00 0x0a 0x18 0x00 0x00 0x0e 0x00 0x0a 0x00 0x0b 0x38 0x00 0x00 0x0e 0x00 0x0a 0x00 0x0c 0xd8 0x00 0x00 0x0e 0x00 0x0a 0x00 0x0d 0xf8 0x00 0x00 0x0e 0x00 0x0a 0x00 0x0e 0x70 0x00 0x00 0x0e 0x00 0x0a 0x00 0x0f 0x70 0x100 0x00 0x0e 0x00 0x0a 0x00 0x10 0x130 0x00 0x00 0x0e 0x00 0x0a 0x00 0x11 0x130 0x100 0x00 0x0e 0x00 0x0a 0x00 0x12 0x00 0x00 0x00 0x0e 0x00 0x0a 0x00 0x13 0x00 0x00>; + }; + }; + + ErrorLogger4 { + compatible = "eswin,eic7700,register"; + offset,length = <0x24 0x20>; + description = "Register 4 to log errors"; + + addr_msb { + compatible = "eswin,eic7700,bitfield"; + description = "Stores NTTP packet header field Addr (MSBs) of the logged error"; + offset,length = <0x00 0x09>; + }; + }; + + ErrorLogger5 { + compatible = "eswin,eic7700,register"; + offset,length = <0x28 0x20>; + description = "Register 5 to log errors"; + + User_flag { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x00 0x12>; + lut = "Cache_0", "Cache_1", "Cache_2", "Cache_3", "Prot_0 ", "Prot_1 ", "Prot_2 ", "User_0 ", "User_1 ", "User_2 ", "User_3 ", "User_4 ", "User_5 ", "User_6 ", "qos0", "qos1", "qos2", "qos3"; + }; + }; + }; + + d0_media_noc@52021400 { + compatible = "eswin,eic7700-noc"; + #address-cells = <0x02>; + #size-cells = <0x02>; + ranges; + reg = <0x00 0x52021400 0x00 0x4000>; + interrupts = <0x1c6>; + interrupt-names = "error"; + interrupt-parent = <0x0f>; + errlogger,idx = <0x00 0x01 0x03 0x04 0x05>; + eswin,qos-configs = "GPU", "TBU2", "VC"; + eswin,GPU-qos-base = <0x52021480>; + eswin,GPU-qos-settings = <0x08 0x04 0x0c 0x02 0x10 0x1e0 0x14 0x01 0x18 0x01>; + eswin,TBU2-qos-base = <0x52021500>; + eswin,TBU2-qos-settings = <0x08 0x04 0x0c 0x02 0x10 0x18 0x14 0x10 0x18 0x01>; + eswin,VC-qos-base = <0x52021580>; + eswin,VC-qos-settings = <0x08 0x04 0x0c 0x02 0x10 0x18 0x14 0x10 0x18 0x01>; + status = "okay"; + stat,0 = "TracePort:ddr0_p3_req"; + stat,1 = "TracePort:ddr1_p3_req"; + + sideband_manager@52022000 { + compatible = "eswin,win2xxx-noc-sideband-manager"; + reg = <0x00 0x52022000 0x00 0x10>; + SenseIn0 = <0x46 0x00 0x47 0x01 0x48 0x02 0x49 0x03 0x4a 0x04>; + bf-name = "SBM_MNOC_GPU", "SBM_MNOC_TBU2", "SBM_MNOC_VC", "SBM_MNOC_DDRT0_P3", "SBM_MNOC_DDRT1_P3"; + }; + + mnoc_packet_ddr0_p3_req_probe@52020000 { + compatible = "eswin,win2xxx-noc-packet-probe"; + reg = <0x00 0x52020000 0x00 0x4000>; + clocks = <0x03 0x21a>; + clock-names = "clk"; + interrupts = <0x1ca>; + interrupt-names = "stat"; + interrupt-parent = <0x0f>; + filter,nr = <0x01>; + counter,nr = <0x02>; + portsel = "ddr0_p3_req"; + }; + + mnoc_packet_ddr1_p3_req_probe@52020800 { + compatible = "eswin,win2xxx-noc-packet-probe"; + reg = <0x00 0x52020800 0x00 0x4000>; + clocks = <0x03 0x21f>; + clock-names = "clk"; + interrupts = <0x1c8>; + interrupt-names = "stat"; + interrupt-parent = <0x0f>; + filter,nr = <0x01>; + counter,nr = <0x02>; + portsel = "ddr1_p3_req"; + }; + + mnoc_trans_probe@52021000 { + #address-cells = <0x02>; + #size-cells = <0x02>; + ranges; + compatible = "eswin,win2xxx-noc-trans-probe"; + reg = <0x00 0x52021000 0x00 0x4000>; + clocks = <0x03 0x203>; + clock-names = "clk"; + interrupts = <0x1c5>; + interrupt-names = "stat"; + interrupt-parent = <0x0f>; + filter,nr = <0x03>; + counter,nr = <0x0c>; + profiler,nr = <0x01>; + portsel = "gpu", "tbu2", "vc"; + + mnoc_trans_gpu_filter@52021600 { + status = "disabled"; + compatible = "eswin,win2xxx-noc-trans-filter"; + reg = <0x00 0x52021600 0x00 0x80>; + }; + + mnoc_trans_tbu2_filter@52021680 { + status = "disabled"; + compatible = "eswin,win2xxx-noc-trans-filter"; + reg = <0x00 0x52021680 0x00 0x80>; + }; + + mnoc_trans_vc_filter@52021700 { + status = "disabled"; + compatible = "eswin,win2xxx-noc-trans-filter"; + reg = <0x00 0x52021700 0x00 0x80>; + }; + + mnoc_trans_profiler@52021780 { + compatible = "eswin,win2xxx-noc-trans-profiler"; + reg = <0x00 0x52021780 0x00 0x80>; + }; + }; + + ErrorLogger0 { + compatible = "eswin,eic7700,register"; + offset,length = <0x14 0x20>; + description = "Register 0 to log errors"; + + lock { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x00 0x01>; + lut = "Not Locked", "Locked"; + }; + + OpCode { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x01 0x04>; + lut = "RD: data read with incrementing address", "RDW: data read with wrapping address", "RDL: allocates monitor in the Target with incrementing address", "RDX: exclusive read with incrementing address", "WR: data write with incrementing address", "WRW: data write with wrapping address", "WRC: conditional write if matching monitor in Target is found", "RSV: reserved", "PRE: preamble packet of linked sequence (locked sequence)", "URG: urgency packet used for QoS (status must be REQ)"; + }; + + ErrCode { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x08 0x03>; + lut = "SLV (error source: Target): error detected by the Slave without any information or no Error", "DEC (error source: Initiator NIU): decode error", "UNS (error source: Target NIU): unsupported access type", "DISC (error source: Power Disconnect): disconnected Target or NoC domain", "SEC (error source: Initiator NIU or Firewall): security error", "HIDE (error source: Firewall): hidden security error. Will be reported as OK to the initiator", "TMO (error source: Target NIU): time-out", "RSV: reserved"; + }; + + Len1 { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x10 0x0c>; + }; + + Format { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x1f 0x01>; + lut = "NTTP v3.0 (Invalid)", "NTTP v3.5 (Ok)"; + }; + }; + + ErrorLogger1 { + compatible = "eswin,eic7700,register", "eswin,eic7700,noc,filter,routeid"; + offset,length = <0x18 0x20>; + description = "Register 1 to log errors"; + + InitFlow { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x0e 0x02>; + lut = "gpu_mnoc/I/0", "snoc_mnoc/I/0", "tbu2_mnoc/I/0", "vc_mnoc/I/0"; + }; + + TargetFlow { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x0c 0x02>; + lut = "mnoc_ddrt0_p3/T/0", "mnoc_ddrt1_p3/T/0", "mnoc_service/T/0", "mnoc_snoc/T/0"; + }; + + TargetSubRange { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x09 0x03>; + }; + + SeqId { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x00 0x09>; + }; + }; + + ErrorLogger3 { + compatible = "eswin,eic7700,register"; + offset,length = <0x20 0x20>; + description = "Register 3 to log errors"; + aperture-link = <0x01>; + msb-link = <0x04>; + + AbsoluteAddress { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x09 0x07>; + aperture-size = <0x37>; + aperture-idx,aperture-base = <0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x80000000 0x00 0x00 0x00 0x00 0x00 0x01 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x02 0x02 0x00 0x00 0x00 0x00 0x00 0x00 0x03 0x04 0x00 0x00 0x00 0x00 0x00 0x00 0x04 0x08 0x00 0x00 0x00 0x00 0x00 0x00 0x05 0x20 0x00 0x00 0x00 0x00 0x00 0x00 0x06 0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x07 0x40 0x100 0x00 0x00 0x00 0x01 0x00 0x00 0x00 0x80000080 0x00 0x00 0x00 0x01 0x00 0x01 0x01 0x80 0x00 0x00 0x00 0x01 0x00 0x02 0x02 0x80 0x00 0x00 0x00 0x01 0x00 0x03 0x04 0x80 0x00 0x00 0x00 0x01 0x00 0x04 0x08 0x80 0x00 0x00 0x00 0x01 0x00 0x05 0x20 0x80 0x00 0x00 0x00 0x01 0x00 0x06 0x40 0x80 0x00 0x00 0x00 0x01 0x00 0x07 0x40 0x180 0x00 0x00 0x00 0x03 0x00 0x00 0x00 0x00 0x00 0x01 0x00 0x02 0x00 0x00 0x00 0x52020000 0x00 0x01 0x00 0x02 0x00 0x01 0x00 0x72020000 0x00 0x01 0x00 0x02 0x00 0x02 0x00 0x00 0x00 0x01 0x00 0x02 0x00 0x03 0x00 0x00 0x00 0x02 0x00 0x00 0x00 0x00 0x00 0x80000000 0x00 0x02 0x00 0x00 0x00 0x01 0x01 0x00 0x00 0x02 0x00 0x00 0x00 0x02 0x02 0x00 0x00 0x02 0x00 0x00 0x00 0x03 0x04 0x00 0x00 0x02 0x00 0x00 0x00 0x04 0x08 0x00 0x00 0x02 0x00 0x00 0x00 0x05 0x20 0x00 0x00 0x02 0x00 0x00 0x00 0x06 0x40 0x00 0x00 0x02 0x00 0x00 0x00 0x07 0x40 0x100 0x00 0x02 0x00 0x01 0x00 0x00 0x00 0x80000080 0x00 0x02 0x00 0x01 0x00 0x01 0x01 0x80 0x00 0x02 0x00 0x01 0x00 0x02 0x02 0x80 0x00 0x02 0x00 0x01 0x00 0x03 0x04 0x80 0x00 0x02 0x00 0x01 0x00 0x04 0x08 0x80 0x00 0x02 0x00 0x01 0x00 0x05 0x20 0x80 0x00 0x02 0x00 0x01 0x00 0x06 0x40 0x80 0x00 0x02 0x00 0x01 0x00 0x07 0x40 0x180 0x00 0x02 0x00 0x03 0x00 0x00 0x00 0x00 0x00 0x03 0x00 0x00 0x00 0x00 0x00 0x80000000 0x00 0x03 0x00 0x00 0x00 0x01 0x01 0x00 0x00 0x03 0x00 0x00 0x00 0x02 0x02 0x00 0x00 0x03 0x00 0x00 0x00 0x03 0x04 0x00 0x00 0x03 0x00 0x00 0x00 0x04 0x08 0x00 0x00 0x03 0x00 0x00 0x00 0x05 0x20 0x00 0x00 0x03 0x00 0x00 0x00 0x06 0x40 0x00 0x00 0x03 0x00 0x00 0x00 0x07 0x40 0x100 0x00 0x03 0x00 0x01 0x00 0x00 0x00 0x80000080 0x00 0x03 0x00 0x01 0x00 0x01 0x01 0x80 0x00 0x03 0x00 0x01 0x00 0x02 0x02 0x80 0x00 0x03 0x00 0x01 0x00 0x03 0x04 0x80 0x00 0x03 0x00 0x01 0x00 0x04 0x08 0x80 0x00 0x03 0x00 0x01 0x00 0x05 0x20 0x80 0x00 0x03 0x00 0x01 0x00 0x06 0x40 0x80 0x00 0x03 0x00 0x01 0x00 0x07 0x40 0x180 0x00 0x03 0x00 0x03 0x00 0x00 0x00 0x00>; + }; + }; + + ErrorLogger4 { + compatible = "eswin,eic7700,register"; + offset,length = <0x24 0x20>; + description = "Register 4 to log errors"; + + addr_msb { + compatible = "eswin,eic7700,bitfield"; + description = "Stores NTTP packet header field Addr (MSBs) of the logged error"; + offset,length = <0x00 0x09>; + }; + }; + + ErrorLogger5 { + compatible = "eswin,eic7700,register"; + offset,length = <0x28 0x20>; + description = "Register 5 to log errors"; + + User_flag { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x00 0x12>; + lut = "Cache_0", "Cache_1", "Cache_2", "Cache_3", "Prot_0 ", "Prot_1 ", "Prot_2 ", "User_0 ", "User_1 ", "User_2 ", "User_3 ", "User_4 ", "User_5 ", "User_6 ", "qos0", "qos1", "qos2", "qos3"; + }; + }; + }; + + d0_realtime_noc@52041400 { + compatible = "eswin,eic7700-noc"; + #address-cells = <0x02>; + #size-cells = <0x02>; + ranges; + reg = <0x00 0x52041400 0x00 0x4000>; + interrupts = <0x1c0>; + interrupt-names = "error"; + interrupt-parent = <0x0f>; + errlogger,idx = <0x00 0x01 0x03 0x04 0x05>; + eswin,qos-configs = "TBU0", "VO"; + eswin,TBU0-qos-base = <0x52041480>; + eswin,TBU0-qos-settings = <0x08 0x04 0x0c 0x02 0x10 0x1e0 0x14 0x01 0x18 0x01>; + eswin,VO-qos-base = <0x52041500>; + eswin,VO-qos-settings = <0x08 0x04 0x0c 0x02 0x10 0x18 0x14 0x10 0x18 0x01>; + status = "okay"; + stat,0 = "TracePort:ddr0_p4_req"; + stat,1 = "TracePort:ddr1_p4_req"; + + sideband_manager@52042000 { + compatible = "eswin,win2xxx-noc-sideband-manager"; + reg = <0x00 0x52042000 0x00 0x10>; + SenseIn0 = <0x50 0x00 0x51 0x01 0x52 0x02 0x53 0x03>; + bf-name = "SBM_RNOC_TBU0", "SBM_RNOC_VO", "SBM_RNOC_DDRT0_P4", "SBM_RNOC_DDRT1_P4"; + }; + + rnoc_packet_ddr0_p4_req_probe@52040000 { + compatible = "eswin,win2xxx-noc-packet-probe"; + reg = <0x00 0x52040000 0x00 0x4000>; + clocks = <0x03 0x21b>; + clock-names = "clk"; + interrupts = <0x1c4>; + interrupt-names = "stat"; + interrupt-parent = <0x0f>; + filter,nr = <0x01>; + counter,nr = <0x02>; + portsel = "ddr0_p4_req"; + }; + + rnoc_packet_ddr1_p4_req_probe@52040800 { + compatible = "eswin,win2xxx-noc-packet-probe"; + reg = <0x00 0x52040800 0x00 0x4000>; + clocks = <0x03 0x220>; + clock-names = "clk"; + interrupts = <0x1c2>; + interrupt-names = "stat"; + interrupt-parent = <0x0f>; + filter,nr = <0x01>; + counter,nr = <0x02>; + portsel = "ddr1_p4_req"; + }; + + rnoc_trans_probe@52041000 { + #address-cells = <0x02>; + #size-cells = <0x02>; + ranges; + compatible = "eswin,win2xxx-noc-trans-probe"; + reg = <0x00 0x52041000 0x00 0x4000>; + clocks = <0x03 0x203>; + clock-names = "clk"; + interrupts = <0x1bf>; + interrupt-names = "stat"; + interrupt-parent = <0x0f>; + filter,nr = <0x02>; + counter,nr = <0x08>; + profiler,nr = <0x01>; + portsel = "tbu0", "vo"; + + rnoc_trans_tbu0_filter@52041580 { + status = "disabled"; + compatible = "eswin,win2xxx-noc-trans-filter"; + reg = <0x00 0x52041580 0x00 0x80>; + }; + + rnoc_trans_vo_filter@52041600 { + status = "disabled"; + compatible = "eswin,win2xxx-noc-trans-filter"; + reg = <0x00 0x52041600 0x00 0x80>; + }; + + rnoc_trans_profiler@52041680 { + compatible = "eswin,win2xxx-noc-trans-profiler"; + reg = <0x00 0x52041680 0x00 0x80>; + }; + }; + + ErrorLogger0 { + compatible = "eswin,eic7700,register"; + offset,length = <0x14 0x20>; + description = "Register 0 to log errors"; + + lock { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x00 0x01>; + lut = "Not Locked", "Locked"; + }; + + OpCode { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x01 0x04>; + lut = "RD: data read with incrementing address", "RDW: data read with wrapping address", "RDL: allocates monitor in the Target with incrementing address", "RDX: exclusive read with incrementing address", "WR: data write with incrementing address", "WRW: data write with wrapping address", "WRC: conditional write if matching monitor in Target is found", "RSV: reserved", "PRE: preamble packet of linked sequence (locked sequence)", "URG: urgency packet used for QoS (status must be REQ)"; + }; + + ErrCode { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x08 0x03>; + lut = "SLV (error source: Target): error detected by the Slave without any information or no Error", "DEC (error source: Initiator NIU): decode error", "UNS (error source: Target NIU): unsupported access type", "DISC (error source: Power Disconnect): disconnected Target or NoC domain", "SEC (error source: Initiator NIU or Firewall): security error", "HIDE (error source: Firewall): hidden security error. Will be reported as OK to the initiator", "TMO (error source: Target NIU): time-out", "RSV: reserved"; + }; + + Len1 { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x10 0x0c>; + }; + + Format { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x1f 0x01>; + lut = "NTTP v3.0 (Invalid)", "NTTP v3.5 (Ok)"; + }; + }; + + ErrorLogger1 { + compatible = "eswin,eic7700,register", "eswin,eic7700,noc,filter,routeid"; + offset,length = <0x18 0x20>; + description = "Register 1 to log errors"; + + InitFlow { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x0e 0x02>; + lut = "snoc_rnoc/I/0", "tbu0_rnoc/I/0", "vo_rnoc/I/0", "RESERVED0"; + }; + + TargetFlow { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x0c 0x02>; + lut = "rnoc_ddrt0_p4/T/0", "rnoc_ddrt1_p4/T/0", "rnoc_service/T/0", "rnoc_snoc/T/0"; + }; + + TargetSubRange { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x09 0x03>; + }; + + SeqId { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x00 0x09>; + }; + }; + + ErrorLogger3 { + compatible = "eswin,eic7700,register"; + offset,length = <0x20 0x20>; + description = "Register 3 to log errors"; + aperture-link = <0x01>; + msb-link = <0x04>; + + AbsoluteAddress { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x09 0x07>; + aperture-size = <0x28>; + aperture-idx,aperture-base = <0x00 0x00 0x00 0x02 0x00 0x00 0x00 0x52040000 0x00 0x00 0x00 0x02 0x00 0x01 0x00 0x72040000 0x00 0x00 0x00 0x02 0x00 0x02 0x00 0x00 0x00 0x00 0x00 0x02 0x00 0x03 0x00 0x00 0x00 0x01 0x00 0x00 0x00 0x00 0x00 0x80000000 0x00 0x01 0x00 0x00 0x00 0x01 0x01 0x00 0x00 0x01 0x00 0x00 0x00 0x02 0x02 0x00 0x00 0x01 0x00 0x00 0x00 0x03 0x04 0x00 0x00 0x01 0x00 0x00 0x00 0x04 0x08 0x00 0x00 0x01 0x00 0x00 0x00 0x05 0x20 0x00 0x00 0x01 0x00 0x01 0x00 0x00 0x00 0x80000080 0x00 0x01 0x00 0x01 0x00 0x01 0x01 0x80 0x00 0x01 0x00 0x01 0x00 0x02 0x02 0x80 0x00 0x01 0x00 0x01 0x00 0x03 0x04 0x80 0x00 0x01 0x00 0x01 0x00 0x04 0x08 0x80 0x00 0x01 0x00 0x01 0x00 0x05 0x20 0x80 0x00 0x01 0x00 0x03 0x00 0x00 0x00 0x59000000 0x00 0x01 0x00 0x03 0x00 0x01 0x00 0x79000000 0x00 0x01 0x00 0x03 0x00 0x02 0x140 0x1000000 0x00 0x01 0x00 0x03 0x00 0x03 0x140 0x9000000 0x00 0x01 0x00 0x03 0x00 0x04 0x00 0x00 0x00 0x01 0x00 0x03 0x00 0x05 0x00 0x00 0x00 0x02 0x00 0x00 0x00 0x00 0x00 0x80000000 0x00 0x02 0x00 0x00 0x00 0x01 0x01 0x00 0x00 0x02 0x00 0x00 0x00 0x02 0x02 0x00 0x00 0x02 0x00 0x00 0x00 0x03 0x04 0x00 0x00 0x02 0x00 0x00 0x00 0x04 0x08 0x00 0x00 0x02 0x00 0x00 0x00 0x05 0x20 0x00 0x00 0x02 0x00 0x01 0x00 0x00 0x00 0x80000080 0x00 0x02 0x00 0x01 0x00 0x01 0x01 0x80 0x00 0x02 0x00 0x01 0x00 0x02 0x02 0x80 0x00 0x02 0x00 0x01 0x00 0x03 0x04 0x80 0x00 0x02 0x00 0x01 0x00 0x04 0x08 0x80 0x00 0x02 0x00 0x01 0x00 0x05 0x20 0x80 0x00 0x02 0x00 0x03 0x00 0x00 0x00 0x59000000 0x00 0x02 0x00 0x03 0x00 0x01 0x00 0x79000000 0x00 0x02 0x00 0x03 0x00 0x02 0x140 0x1000000 0x00 0x02 0x00 0x03 0x00 0x03 0x140 0x9000000 0x00 0x02 0x00 0x03 0x00 0x04 0x00 0x00 0x00 0x02 0x00 0x03 0x00 0x05 0x00 0x00>; + }; + }; + + ErrorLogger4 { + compatible = "eswin,eic7700,register"; + offset,length = <0x24 0x20>; + description = "Register 4 to log errors"; + + addr_msb { + compatible = "eswin,eic7700,bitfield"; + description = "Stores NTTP packet header field Addr (MSBs) of the logged error"; + offset,length = <0x00 0x09>; + }; + }; + + ErrorLogger5 { + compatible = "eswin,eic7700,register"; + offset,length = <0x28 0x20>; + description = "Register 5 to log errors"; + + User_flag { + compatible = "eswin,eic7700,bitfield"; + offset,length = <0x00 0x10>; + lut = "Cache_0", "Cache_1", "Cache_2", "Cache_3", "Prot_0 ", "Prot_1 ", "Prot_2 ", "User_0 ", "User_1 ", "User_2 ", "User_3 ", "User_4 ", "qos0", "qos1", "qos2", "qos3"; + }; + }; + }; + }; + + eswin-npu@51c00000 { + compatible = "eswin,npu0"; + reg = <0x00 0x51c00000 0x00 0x400000>; + interrupt-parent = <0x0f>; + interrupts = <0x183 0x10>; + #size-cells = <0x02>; + dma-ranges = <0x01 0x00 0x00 0xc0000000 0x1ff 0x00>; + iommus = <0x18 0x04>; + tbus = <0x05>; + dsp-avail-num = <0x01>; + spram-size = <0x400000>; + npu_mbox = <0x20>; + resets = <0x17 0x06 0x08>; + reset-names = "e31_core"; + numa-node-id = <0x00>; + status = "okay"; + }; + + llc@51c00000 { + compatible = "eswin,llc"; + reg = <0x00 0x51c00000 0x00 0x400000>; + eswin,syscfg = <0x16 0x324>; + eswin,syscrg_csr = <0x15>; + clocks = <0x03 0x236 0x03 0x237 0x03 0x23a 0x03 0x23c 0x03 0x26 0x03 0x0b>; + clock-names = "aclk", "cfg_clk", "llc_clk", "core_clk", "mux_u_npu_core_3mux1_gfree", "fixed_rate_clk_spll2_fout2", "fixed_rate_clk_spll1_fout1"; + resets = <0x17 0x06 0x01 0x17 0x06 0x02 0x17 0x06 0x04 0x17 0x06 0x40>; + reset-names = "axi", "cfg", "core", "llc"; + numa-node-id = <0x00>; + spram-region = <0x21>; + }; + + dsp_subsys@52280400 { + #address-cells = <0x02>; + #size-cells = <0x02>; + reg = <0x00 0x52280400 0x00 0x10000 0x00 0x51810000 0x00 0x8000>; + ranges; + compatible = "es-dsp-subsys", "simple-bus"; + clocks = <0x03 0x210>; + clock-names = "cfg_clk"; + resets = <0x17 0x02 0x01 0x17 0x02 0x02 0x17 0x02 0x04 0x17 0x02 0x10 0x17 0x02 0x20 0x17 0x02 0x40 0x17 0x02 0x80>; + reset-names = "axi", "cfg", "div4", "div_0", "div_1", "div_2", "div_3"; + status = "okay"; + + es_dsp@0 { + #address-cells = <0x01>; + #size-cells = <0x01>; + compatible = "eswin-dsp", "cdns,xrp-hw-eswin"; + ranges = <0x28000000 0x00 0x5b000000 0x8000 0x28100000 0x00 0x5b100000 0x20000 0x28120000 0x00 0x5b120000 0x20000>; + clocks = <0x03 0x2a8>; + clock-names = "aclk"; + dsp_mbox = <0x22>; + device-irq = <0x0b 0x50a90000 0x20 0x50a80000 0x01 0x50a40000>; + device-uart = <0x50900000>; + device-irq-mode = <0x01>; + host-irq-mode = <0x01>; + firmware-name = "eic7700_dsp_fw"; + process-id = <0x00>; + dma-ranges = <0x30000000 0x00 0xc0000000 0xce000000>; + iommus = <0x18 0x12>; + tbus = <0x70>; + numa-node-id = <0x00>; + aux-e31-dtim = <0x5a110000>; + status = "okay"; + + dsp@0 { + }; + }; + + es_dsp@1 { + #address-cells = <0x01>; + #size-cells = <0x01>; + compatible = "eswin-dsp", "cdns,xrp-hw-eswin"; + ranges = <0x28000000 0x00 0x5b008000 0x8000 0x28100000 0x00 0x5b140000 0x20000 0x28120000 0x00 0x5b160000 0x20000>; + clocks = <0x03 0x2a9>; + clock-names = "aclk"; + dsp_mbox = <0x23>; + device-irq = <0x0d 0x50ab0000 0x40 0x50aa0000 0x01 0x50a40000>; + device-uart = <0x50900000>; + device-irq-mode = <0x01>; + host-irq-mode = <0x01>; + firmware-name = "eic7700_dsp_fw"; + process-id = <0x01>; + dma-ranges = <0x30000000 0x00 0xc0000000 0xce000000>; + iommus = <0x18 0x13>; + tbus = <0x71>; + numa-node-id = <0x00>; + aux-e31-dtim = <0x5a110000>; + status = "okay"; + + dsp@0 { + }; + }; + + es_dsp@2 { + #address-cells = <0x01>; + #size-cells = <0x01>; + compatible = "eswin-dsp", "cdns,xrp-hw-eswin"; + ranges = <0x28000000 0x00 0x5b010000 0x8000 0x28100000 0x00 0x5b180000 0x20000 0x28120000 0x00 0x5b1a0000 0x20000>; + clocks = <0x03 0x2aa>; + clock-names = "aclk"; + dsp_mbox = <0x24>; + device-irq = <0x0f 0x50ad0000 0x80 0x50ac0000 0x01 0x50a40000>; + device-uart = <0x50900000>; + device-irq-mode = <0x01>; + host-irq-mode = <0x01>; + firmware-name = "eic7700_dsp_fw"; + process-id = <0x02>; + dma-ranges = <0x30000000 0x00 0xc0000000 0xce000000>; + iommus = <0x18 0x14>; + tbus = <0x72>; + numa-node-id = <0x00>; + aux-e31-dtim = <0x5a110000>; + status = "okay"; + + dsp@0 { + }; + }; + + es_dsp@3 { + #address-cells = <0x01>; + #size-cells = <0x01>; + compatible = "eswin-dsp", "cdns,xrp-hw-eswin"; + ranges = <0x28000000 0x00 0x5b018000 0x8000 0x28100000 0x00 0x5b1c0000 0x20000 0x28120000 0x00 0x5b1e0000 0x20000>; + clocks = <0x03 0x2ab>; + clock-names = "aclk"; + dsp_mbox = <0x25>; + device-irq = <0x11 0x50af0000 0x100 0x50ae0000 0x01 0x50a40000>; + device-uart = <0x50900000>; + device-irq-mode = <0x01>; + host-irq-mode = <0x01>; + firmware-name = "eic7700_dsp_fw"; + process-id = <0x03>; + dma-ranges = <0x30000000 0x00 0xc0000000 0xce000000>; + iommus = <0x18 0x15>; + tbus = <0x73>; + numa-node-id = <0x00>; + aux-e31-dtim = <0x5a110000>; + status = "okay"; + + dsp@0 { + }; + }; + }; + + g2d@50140000 { + compatible = "eswin,galcore_d0"; + clocks = <0x03 0x254 0x03 0x255 0x03 0x25a 0x03 0x25b 0x03 0x25c 0x03 0x25d 0x03 0x2b1>; + clock-names = "vc_aclk", "vc_cfg", "g2d_cfg", "g2d_st2", "g2d_clk", "g2d_aclk", "mon_pclk"; + resets = <0x17 0x16 0x02 0x17 0x16 0x01 0x17 0x16 0x04 0x17 0x1b 0x01 0x17 0x1b 0x02 0x17 0x1b 0x04>; + reset-names = "axi", "cfg", "moncfg", "g2d_core", "g2d_cfg", "g2d_axi"; + reg = <0x00 0x50140000 0x00 0x40000 0x00 0x50180000 0x00 0x40000>; + reg-names = "core_2d", "core_2d1"; + fe-apb-offset = <0x800>; + interrupt-parent = <0x0f>; + interrupts = <0x31 0x32>; + interrupt-names = "core_2d", "core_2d1"; + enable-mmu = <0x01>; + contiguous-size = <0xa00000>; + recovery = <0x00>; + status = "okay"; + }; + + gpu@51400000 { + compatible = "img,gpu"; + #address-cells = <0x02>; + #size-cells = <0x02>; + reg = <0x00 0x51400000 0x00 0xfffff>; + clocks = <0x03 0x20b 0x03 0x20c 0x03 0x20d>; + clock-names = "aclk", "gray_clk", "cfg_clk"; + resets = <0x17 0x01 0x01 0x17 0x01 0x02 0x17 0x01 0x04 0x17 0x01 0x08 0x17 0x01 0x10>; + reset-names = "axi", "cfg", "gray", "jones", "spu"; + interrupt-parent = <0x0f>; + interrupts = <0x0f>; + status = "okay"; + }; + + sata@0x50420000 { + compatible = "snps,eswin-ahci"; + reg = <0x00 0x50420000 0x00 0x10000>; + interrupt-parent = <0x0f>; + interrupt-names = "intrq", "msi", "pme"; + interrupts = <0x3a 0x3b 0x3c>; + ports-implemented = <0x01>; + resets = <0x17 0x07 0x200 0x17 0x07 0x400 0x17 0x07 0x800 0x17 0x07 0x1000 0x17 0x07 0x8000000>; + reset-names = "asic0", "oob", "pmalive", "rbc", "apb"; + #size-cells = <0x02>; + iommus = <0x18 0x0e>; + tbus = <0x02>; + dma-ranges = <0x00 0x00 0x00 0xc0000000 0x200 0x00>; + eswin,hsp_sp_csr = <0x19 0x1050>; + eswin,syscrg_csr = <0x15 0x41c>; + numa-node-id = <0x00>; + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <0x26>; + }; + + pcie@0x54000000 { + compatible = "eswin,eic7700-pcie"; + clocks = <0x03 0x232 0x03 0x233 0x03 0x234 0x03 0x235>; + clock-names = "pcie_aclk", "pcie_cfg_clk", "pcie_cr_clk", "pcie_aux_clk"; + reset-names = "pcie_cfg", "pcie_powerup", "pcie_pwren"; + resets = <0x17 0x08 0x01 0x17 0x08 0x02 0x17 0x08 0x04>; + #address-cells = <0x03>; + #size-cells = <0x02>; + #interrupt-cells = <0x01>; + reg = <0x00 0x54000000 0x00 0x4000000 0x00 0x40000000 0x00 0x800000 0x00 0x50000000 0x00 0x100000>; + reg-names = "dbi", "config", "mgmt"; + device_type = "pci"; + bus-range = <0x00 0xff>; + ranges = <0x81000000 0x00 0x40800000 0x00 0x40800000 0x00 0x800000 0x82000000 0x00 0x41000000 0x00 0x41000000 0x00 0xf000000 0xc3000000 0x80 0x00 0x80 0x00 0x02 0x00>; + interrupts = <0xdc>; + interrupt-names = "msi"; + interrupt-parent = <0x0f>; + iommus = <0x18 0xfe0000>; + iommu-map = <0x00 0x18 0xff0000 0xffffff>; + gen-x = <0x03>; + lane-x = <0x04>; + tbus = <0x03>; + status = "okay"; + numa-node-id = <0x00>; + }; + + spi@50810000 { + compatible = "snps,eic7700-spi"; + #address-cells = <0x01>; + #size-cells = <0x00>; + reg = <0x00 0x50810000 0x00 0x4000>; + spi-max-frequency = "", "I>"; + clocks = <0x03 0x29c>; + clock-names = "clk"; + interrupt-parent = <0x0f>; + interrupts = <0x5b>; + resets = <0x17 0x10 0x01>; + reset-names = "spi"; + eswin,spi_dma = <0x27>; + dmas = <0x27 0x26 0x03 0x27 0x27 0x03>; + dma-names = "rx", "tx"; + numa-node-id = <0x00>; + status = "disabled"; + }; + + spi@50814000 { + compatible = "snps,eic7700-spi"; + #address-cells = <0x01>; + #size-cells = <0x00>; + reg = <0x00 0x50814000 0x00 0x4000>; + spi-max-frequency = "", "I>"; + clocks = <0x03 0x29d>; + clock-names = "clk"; + interrupt-parent = <0x0f>; + interrupts = <0x5c>; + resets = <0x17 0x10 0x02>; + reset-names = "spi"; + eswin,spi_dma = <0x27>; + dmas = <0x27 0x24 0x04 0x27 0x25 0x04>; + dma-names = "rx", "tx"; + numa-node-id = <0x00>; + status = "disabled"; + }; + + spi@51800000 { + compatible = "eswin,bootspi"; + reg = <0x00 0x51800000 0x00 0x8000 0x00 0x51828000 0x00 0x8000 0x00 0x5c000000 0x00 0x8000>; + #address-cells = <0x01>; + #size-cells = <0x00>; + clocks = <0x03 0x205 0x03 0x204>; + clock-names = "cfg_clk", "clk"; + resets = <0x17 0x24 0x02>; + reset-names = "rst"; + spi-max-frequency = "", "I>"; + reg-io-width = <0x04>; + status = "okay"; + num-cs = <0x01>; + cs-gpios = <0x1c 0x00 0x01>; + + spi-flash@0 { + compatible = "winbond,w25q128jw", "jedec,spi-nor"; + reg = <0x00>; + #address-cells = <0x01>; + #size-cells = <0x01>; + spi-max-frequency = "", "I>"; + rx-sample-delay-ns = <0x0a>; + }; + }; + + mmc@50450000 { + compatible = "eswin,emmc-sdhci-5.1"; + reg = <0x00 0x50450000 0x00 0x10000>; + interrupt-parent = <0x0f>; + interrupts = <0x4f>; + assigned-clocks = <0x03 0x22a>; + assigned-clock-rates = <0xbebc200>; + clocks = <0x03 0x22a 0x03 0x222>; + clock-names = "clk_xin", "clk_ahb"; + clock-output-names = "emmc_cardclock"; + #clock-cells = <0x00>; + resets = <0x17 0x07 0x40 0x17 0x07 0x08 0x17 0x07 0x80000 0x17 0x07 0x800000>; + reset-names = "txrx_rst", "phy_rst", "prstn", "arstn"; + disable-cqe-dcmd; + bus-width = <0x08>; + non-removable; + mmc-hs400-1_8v; + max-frequency = <0xbebc200>; + #size-cells = <0x02>; + iommus = <0x18 0x0f>; + tbus = <0x02>; + dma-ranges = <0x00 0x00 0x00 0xc0000000 0x01 0x00>; + eswin,hsp_sp_csr = <0x19 0x1038>; + status = "okay"; + numa-node-id = <0x00>; + delay_code = <0x17>; + drive-impedance-ohm = <0x32>; + enable-cmd-pullup; + enable-data-pullup; + pinctrl-names = "default"; + pinctrl-0 = <0x28>; + }; + + mmc@0x50460000 { + compatible = "eswin,sdhci-sdio"; + reg = <0x00 0x50460000 0x00 0x10000>; + interrupt-parent = <0x0f>; + interrupts = <0x51>; + clocks = <0x03 0x22b 0x03 0x222 0x03 0x0c 0x03 0x23>; + clock-names = "clk_xin", "clk_ahb", "clk_spll2_fout3", "clk_mux1_1"; + clock-output-names = "sdio0_cardclock"; + #clock-cells = <0x00>; + resets = <0x17 0x07 0x80 0x17 0x07 0x10 0x17 0x07 0x40000 0x17 0x07 0x400000>; + reset-names = "txrx_rst", "phy_rst", "prstn", "arstn"; + core-clk-reg = <0x51828164>; + clock-frequency = <0xc65d400>; + max-frequency = <0xc65d400>; + #size-cells = <0x02>; + dma-ranges = <0x00 0x20000000 0x00 0xc0000000 0x00 0x40000000>; + iommus = <0x18 0x10>; + tbus = <0x02>; + eswin,hsp_sp_csr = <0x19 0x103c>; + bus-width = <0x04>; + sdio-id = <0x00>; + numa-node-id = <0x00>; + status = "okay"; + delay_code = <0x29>; + drive-impedance-ohm = <0x21>; + enable-cmd-pullup; + enable-data-pullup; + no-sdio; + no-mmc; + }; + + mmc@0x50470000 { + compatible = "eswin,sdhci-sdio"; + reg = <0x00 0x50470000 0x00 0x10000>; + interrupt-parent = <0x0f>; + interrupts = <0x53>; + clocks = <0x03 0x22c 0x03 0x222 0x03 0x0c 0x03 0x23>; + clock-names = "clk_xin", "clk_ahb", "clk_spll2_fout3", "clk_mux1_1"; + clock-output-names = "sdio1_cardclock"; + #clock-cells = <0x00>; + resets = <0x17 0x07 0x100 0x17 0x07 0x20 0x17 0x07 0x20000 0x17 0x07 0x200000>; + reset-names = "txrx_rst", "phy_rst", "prstn", "arstn"; + core-clk-reg = <0x51828168>; + clock-frequency = <0xc65d400>; + max-frequency = <0xc65d400>; + #size-cells = <0x02>; + dma-ranges = <0x00 0x20000000 0x00 0xc0000000 0x00 0x40000000>; + iommus = <0x18 0x11>; + tbus = <0x02>; + eswin,hsp_sp_csr = <0x19 0x1040>; + bus-width = <0x04>; + sdio-id = <0x01>; + numa-node-id = <0x00>; + status = "okay"; + delay_code = <0x29>; + drive-impedance-ohm = <0x21>; + enable-cmd-pullup; + enable-data-pullup; + non-removable; + no-sd; + no-mmc; + }; + + video-decoder0@50100000 { + compatible = "eswin,video-decoder0"; + clocks = <0x03 0x254 0x03 0x255 0x03 0x257 0x03 0x259 0x03 0x2e 0x03 0x04 0x03 0x0a 0x03 0x2ae 0x03 0x2b0 0x03 0x2b1>; + clock-names = "aclk", "cfg_clk", "jd_clk", "vd_clk", "vc_mux", "spll0_fout1", "spll2_fout1", "jd_pclk", "vd_pclk", "mon_pclk"; + resets = <0x17 0x16 0x02 0x17 0x16 0x01 0x17 0x16 0x04 0x17 0x17 0x01 0x17 0x17 0x02 0x17 0x19 0x01 0x17 0x19 0x02>; + reset-names = "axi", "cfg", "moncfg", "jd_cfg", "jd_axi", "vd_cfg", "vd_axi"; + eswin,syscfg = <0x16 0x00 0x04>; + vcmd-core = <0x00 0x6c>; + axife-core = <0x200 0x100>; + vdec-core = <0x800 0xc00>; + interrupt-parent = <0x0f>; + #size-cells = <0x02>; + dma-ranges = <0x00 0x00 0x00 0x80000000 0x200 0x00>; + vccsr-reg = <0x00 0x501c0000 0x00 0x1000>; + numa-node-id = <0x00>; + tbus = <0x10 0x13>; + status = "okay"; + + vdec0@50100000 { + core-name = "video-dec0"; + base-addr = <0x50100000>; + interrupts = <0xec>; + }; + + jdec0@50120000 { + core-name = "jpeg-dec0"; + base-addr = <0x50120000>; + interrupts = <0xed>; + }; + }; + + video-encoder@50110000 { + compatible = "eswin,video-encoder0"; + clocks = <0x03 0x254 0x03 0x255 0x03 0x256 0x03 0x258 0x03 0x2e 0x03 0x04 0x03 0x0a 0x03 0x2ad 0x03 0x2af 0x03 0x2b1>; + clock-names = "aclk", "cfg_clk", "je_clk", "ve_clk", "vc_mux", "spll0_fout1", "spll2_fout1", "je_pclk", "ve_pclk", "mon_pclk"; + resets = <0x17 0x16 0x02 0x17 0x16 0x01 0x17 0x16 0x04 0x17 0x18 0x01 0x17 0x18 0x02 0x17 0x1a 0x02 0x17 0x1a 0x01>; + reset-names = "axi", "cfg", "moncfg", "je_cfg", "je_axi", "ve_cfg", "ve_axi"; + eswin,syscfg = <0x16 0x00 0x04>; + vcmd-core = <0x00 0x6c>; + axife-core = <0x2000 0x7d0>; + venc-core = <0x1000 0x87c>; + interrupt-parent = <0x0f>; + #size-cells = <0x02>; + dma-ranges = <0x00 0x00 0x00 0x80000000 0x200 0x00>; + vccsr-reg = <0x00 0x501c0000 0x00 0x1000>; + numa-node-id = <0x00>; + tbus = <0x11 0x12>; + status = "okay"; + + venc0@50110000 { + core-name = "video-enc0"; + base-addr = <0x50110000>; + interrupts = <0xe5>; + }; + + jenc0@50130000 { + core-name = "jpeg-enc0"; + base-addr = <0x50130000>; + interrupts = <0xe8>; + }; + }; + + mbox@50a00000 { + compatible = "eswin,eic7700-mailbox"; + reg = <0x00 0x50a00000 0x00 0x10000 0x00 0x50a10000 0x00 0x10000>; + interrupt-parent = <0x0f>; + interrupts = <0x75>; + #mbox-cells = <0x01>; + clocks = <0x03 0x27e 0x03 0x27f>; + clock-names = "pclk_mailbox_host", "pclk_mailbox_device"; + resets = <0x17 0x0c 0x01 0x17 0x0c 0x02>; + reset-names = "rst", "rst_device"; + lock-bit = <0x01>; + irq-bit = <0x02>; + status = "okay"; + phandle = <0x29>; + }; + + mbox@50a20000 { + compatible = "eswin,eic7700-mailbox"; + reg = <0x00 0x50a20000 0x00 0x10000 0x00 0x50a30000 0x00 0x10000>; + interrupt-parent = <0x0f>; + interrupts = <0x77>; + #mbox-cells = <0x01>; + clocks = <0x03 0x280 0x03 0x281>; + clock-names = "pclk_mailbox_host", "pclk_mailbox_device"; + resets = <0x17 0x0c 0x04 0x17 0x0c 0x08>; + reset-names = "rst", "rst_device"; + lock-bit = <0x01>; + irq-bit = <0x04>; + status = "okay"; + phandle = <0x2b>; + }; + + mbox@50a40000 { + compatible = "eswin,npu0-mailbox"; + reg = <0x00 0x50a40000 0x00 0x10000 0x00 0x50a50000 0x00 0x10000>; + interrupt-parent = <0x0f>; + interrupts = <0x79>; + #mbox-cells = <0x01>; + clocks = <0x03 0x282 0x03 0x283>; + clock-names = "pclk_mailbox_host", "pclk_mailbox_device"; + resets = <0x17 0x0c 0x10 0x17 0x0c 0x20>; + reset-names = "rst", "rst_device"; + lock-bit = <0x01>; + irq-bit = <0x08>; + status = "okay"; + phandle = <0x20>; + }; + + mbox@50a60000 { + compatible = "eswin,eic7700-mailbox"; + reg = <0x00 0x50a60000 0x00 0x10000 0x00 0x50a70000 0x00 0x10000>; + interrupt-parent = <0x0f>; + interrupts = <0x7b>; + #mbox-cells = <0x01>; + clocks = <0x03 0x284 0x03 0x285>; + clock-names = "pclk_mailbox_host", "pclk_mailbox_device"; + resets = <0x17 0x0c 0x40 0x17 0x0c 0x80>; + reset-names = "rst", "rst_device"; + lock-bit = <0x01>; + irq-bit = <0x10>; + status = "okay"; + }; + + mbox@50a80000 { + compatible = "eswin,dsp0-mailbox"; + reg = <0x00 0x50a80000 0x00 0x10000 0x00 0x50a90000 0x00 0x10000>; + interrupt-parent = <0x0f>; + interrupts = <0x7d>; + #mbox-cells = <0x01>; + clocks = <0x03 0x286 0x03 0x287>; + clock-names = "pclk_mailbox_host", "pclk_mailbox_device"; + resets = <0x17 0x0c 0x100 0x17 0x0c 0x200>; + reset-names = "rst", "rst_device"; + lock-bit = <0x01>; + irq-bit = <0x20>; + status = "okay"; + phandle = <0x22>; + }; + + mbox@50aa0000 { + compatible = "eswin,dsp1-mailbox"; + reg = <0x00 0x50aa0000 0x00 0x10000 0x00 0x50ab0000 0x00 0x10000>; + interrupt-parent = <0x0f>; + interrupts = <0x7f>; + #mbox-cells = <0x01>; + clocks = <0x03 0x288 0x03 0x289>; + clock-names = "pclk_mailbox_host", "pclk_mailbox_device"; + resets = <0x17 0x0c 0x400 0x17 0x0c 0x800>; + reset-names = "rst", "rst_device"; + lock-bit = <0x01>; + irq-bit = <0x40>; + status = "okay"; + phandle = <0x23>; + }; + + mbox@50ac0000 { + compatible = "eswin,dsp2-mailbox"; + reg = <0x00 0x50ac0000 0x00 0x10000 0x00 0x50ad0000 0x00 0x10000>; + interrupt-parent = <0x0f>; + interrupts = <0x81>; + #mbox-cells = <0x01>; + clocks = <0x03 0x28a 0x03 0x28b>; + clock-names = "pclk_mailbox_host", "pclk_mailbox_device"; + resets = <0x17 0x0c 0x1000 0x17 0x0c 0x2000>; + reset-names = "rst", "rst_device"; + lock-bit = <0x01>; + irq-bit = <0x80>; + status = "okay"; + phandle = <0x24>; + }; + + mbox@50ae0000 { + compatible = "eswin,dsp3-mailbox"; + reg = <0x00 0x50ae0000 0x00 0x10000 0x00 0x50af0000 0x00 0x10000>; + interrupt-parent = <0x0f>; + interrupts = <0x83>; + #mbox-cells = <0x01>; + clocks = <0x03 0x28c 0x03 0x28d>; + clock-names = "pclk_mailbox_host", "pclk_mailbox_device"; + resets = <0x17 0x0c 0x4000 0x17 0x0c 0x8000>; + reset-names = "rst", "rst_device"; + lock-bit = <0x01>; + irq-bit = <0x100>; + status = "okay"; + phandle = <0x25>; + }; + + ipc@0 { + compatible = "eswin,eic7700-ipc"; + #size-cells = <0x02>; + dma-ranges = <0x00 0x80000000 0x00 0xc0000000 0x00 0x80000000>; + iommus = <0x18 0x18>; + tbus = <0x04>; + eswin,syscfg = <0x16 0x1004 0x00 0x16 0x4004 0x00>; + mboxes = <0x29 0x00>; + mbox-names = "u84_scpu"; + numa-node-id = <0x00>; + status = "okay"; + }; + + lpcpu@0 { + compatible = "eswin,eic7700-lpcpu"; + fw-region = <0x2a>; + clocks = <0x03 0x209 0x03 0x20a>; + clock-names = "core_clk", "bus_clk"; + reset-names = "core_rst", "bus_rst", "dbg_rst"; + resets = <0x17 0x15 0x01 0x17 0x15 0x02 0x17 0x15 0x04>; + #size-cells = <0x02>; + dma-ranges = <0x00 0xb0000000 0x00 0xc0000000 0x00 0x50000000>; + iommus = <0x18 0x19>; + eswin,syscfg = <0x16 0x2004 0x00>; + tbus = <0x04>; + mboxes = <0x2b 0x00>; + mbox-names = "u84_lpcpu"; + numa-node-id = <0x00>; + status = "disabled"; + }; + + pvt@0x50b00000 { + compatible = "eswin,eswin-pvt"; + clocks = <0x03 0x25f>; + clock-names = "pvt_clk"; + resets = <0x17 0x0b 0x01>; + reset-names = "pvt_rst"; + #address-cells = <0x01>; + #size-cells = <0x00>; + reg = <0x00 0x50b00000 0x00 0x10000>; + interrupts = <0x15d>; + interrupt-parent = <0x0f>; + status = "okay"; + }; + + pvt@0x52360000 { + compatible = "eswin,eswin-pvt"; + clocks = <0x03 0x260>; + clock-names = "pvt_clk"; + resets = <0x17 0x0b 0x02>; + reset-names = "pvt_rst"; + #address-cells = <0x01>; + #size-cells = <0x00>; + reg = <0x00 0x52360000 0x00 0x20000>; + interrupts = <0x15e>; + interrupt-parent = <0x0f>; + status = "okay"; + }; + + fan_control@50b50000 { + compatible = "eswin-fan-control"; + reg = <0x00 0x50b50000 0x00 0x10000>; + clocks = <0x03 0x2a7>; + clock-names = "pclk"; + resets = <0x17 0x0a 0x01>; + reset-names = "fan_rst"; + interrupt-parent = <0x0f>; + interrupt-names = "fanirq"; + interrupts = <0x162>; + pulses-per-revolution = <0x02>; + pwm-minimum-period = <0x3e8>; + pwms = <0x2c 0x00 0x186a0>; + pinctrl-names = "default"; + pinctrl-0 = <0x2d>; + status = "okay"; + }; + + i2c@50950000 { + compatible = "snps,designware-i2c"; + clock-frequency = <0x186a0>; + clocks = <0x03 0x28e>; + clock-names = "pclk"; + resets = <0x17 0x09 0x01>; + reset-names = "rst"; + #address-cells = <0x01>; + #size-cells = <0x00>; + reg = <0x00 0x50950000 0x00 0x8000>; + interrupts = <0x69>; + interrupt-parent = <0x0f>; + status = "okay"; + + es8388-0@11 { + compatible = "eswin,es8388"; + reg = <0x11>; + #sound-dai-cells = <0x00>; + eswin-plat = <0x02>; + pinctrl-names = "default"; + pinctrl-0 = <0x2e 0x2f>; + front-jack-gpios = <0x30 0x00 0x00>; + back-jack-gpios = <0x30 0x1c 0x00>; + + port { + + endpoint { + system-clock-frequency = <0xbb8000>; + remote-endpoint = <0x31>; + phandle = <0x50>; + }; + }; + }; + }; + + i2c@50960000 { + compatible = "snps,designware-i2c"; + clock-frequency = <0x186a0>; + clocks = <0x03 0x28f>; + clock-names = "pclk"; + resets = <0x17 0x09 0x02>; + reset-names = "rst"; + #address-cells = <0x01>; + #size-cells = <0x00>; + reg = <0x00 0x50960000 0x00 0x10000>; + interrupts = <0x6a>; + interrupt-parent = <0x0f>; + status = "disabled"; + }; + + i2c@50970000 { + compatible = "snps,designware-i2c"; + clock-frequency = <0x186a0>; + clocks = <0x03 0x290>; + clock-names = "pclk"; + resets = <0x17 0x09 0x04>; + reset-names = "rst"; + #address-cells = <0x01>; + #size-cells = <0x00>; + reg = <0x00 0x50970000 0x00 0x8000>; + interrupts = <0x6b>; + interrupt-parent = <0x0f>; + status = "disabled"; + }; + + i2c@50980000 { + compatible = "snps,designware-i2c"; + clock-frequency = <0x186a0>; + clocks = <0x03 0x291>; + clock-names = "pclk"; + resets = <0x17 0x09 0x08>; + reset-names = "rst"; + #address-cells = <0x01>; + #size-cells = <0x00>; + reg = <0x00 0x50980000 0x00 0x8000>; + interrupts = <0x6c>; + interrupt-parent = <0x0f>; + status = "okay"; + + fusb303b@21 { + compatible = "fcs,fusb303b"; + status = "okay"; + reg = <0x21>; + eswin,syscfg = <0x16 0x3c0 0x0c>; + pinctrl-names = "default"; + pinctrl-0 = <0x32>; + int-gpios = <0x30 0x05 0x00>; + + connector { + compatible = "usb-c-connector"; + label = "USB-C"; + data-role = "host"; + }; + }; + }; + + i2c@50990000 { + compatible = "snps,designware-i2c"; + clock-frequency = <0x186a0>; + clocks = <0x03 0x292>; + clock-names = "pclk"; + resets = <0x17 0x09 0x10>; + reset-names = "rst"; + #address-cells = <0x01>; + #size-cells = <0x00>; + reg = <0x00 0x50990000 0x00 0x8000>; + interrupts = <0x6d>; + interrupt-parent = <0x0f>; + status = "disabled"; + }; + + i2c@509a0000 { + compatible = "snps,designware-i2c"; + clock-frequency = <0x186a0>; + clocks = <0x03 0x293>; + clock-names = "pclk"; + resets = <0x17 0x09 0x20>; + reset-names = "rst"; + #address-cells = <0x01>; + #size-cells = <0x00>; + reg = <0x00 0x509a0000 0x00 0x8000>; + interrupts = <0x6e>; + interrupt-parent = <0x0f>; + status = "okay"; + }; + + i2c@509b0000 { + compatible = "snps,designware-i2c"; + clock-frequency = <0x186a0>; + clocks = <0x03 0x294>; + clock-names = "pclk"; + resets = <0x17 0x09 0x40>; + reset-names = "rst"; + #address-cells = <0x01>; + #size-cells = <0x00>; + reg = <0x00 0x509b0000 0x00 0x8000>; + interrupts = <0x6f>; + interrupt-parent = <0x0f>; + status = "disabled"; + }; + + i2c@509c0000 { + compatible = "snps,designware-i2c"; + clock-frequency = <0x186a0>; + clocks = <0x03 0x295>; + clock-names = "pclk"; + resets = <0x17 0x09 0x80>; + reset-names = "rst"; + #address-cells = <0x01>; + #size-cells = <0x00>; + reg = <0x00 0x509c0000 0x00 0x8000>; + interrupts = <0x70>; + interrupt-parent = <0x0f>; + status = "disabled"; + }; + + i2c@509d0000 { + compatible = "snps,designware-i2c"; + clock-frequency = <0x186a0>; + clocks = <0x03 0x296>; + clock-names = "pclk"; + resets = <0x17 0x09 0x100>; + reset-names = "rst"; + #address-cells = <0x01>; + #size-cells = <0x00>; + reg = <0x00 0x509d0000 0x00 0x8000>; + interrupts = <0x71>; + interrupt-parent = <0x0f>; + status = "disabled"; + }; + + i2c@509e0000 { + compatible = "snps,designware-i2c"; + clock-frequency = <0x186a0>; + clocks = <0x03 0x297>; + clock-names = "pclk"; + resets = <0x17 0x09 0x200>; + reset-names = "rst"; + #address-cells = <0x01>; + #size-cells = <0x00>; + reg = <0x00 0x509e0000 0x00 0x8000>; + interrupts = <0x72>; + interrupt-parent = <0x0f>; + status = "disabled"; + }; + + i2c@51830000 { + compatible = "snps,designware-i2c"; + clock-frequency = <0x186a0>; + clocks = <0x03 0x29f>; + clock-names = "pclk"; + resets = <0x17 0x26 0x01>; + reset-names = "rst"; + #address-cells = <0x01>; + #size-cells = <0x00>; + reg = <0x00 0x51830000 0x00 0x8000>; + interrupts = <0x122>; + interrupt-parent = <0x0f>; + eswin,i2c_dma = <0x27>; + dma-names = "rx", "tx"; + dmas = <0x27 0x29 0xff 0x27 0x2a 0xff>; + status = "okay"; + eswin,syscfg = <0x16 0x3c0 0x10>; + + aon_eeprom@50 { + compatible = "atmel,24c02"; + reg = <0x50>; + }; + }; + + i2c@51838000 { + compatible = "snps,designware-i2c"; + clock-frequency = <0x186a0>; + clocks = <0x03 0x2a0>; + clock-names = "pclk"; + resets = <0x17 0x25 0x01>; + reset-names = "rst"; + #address-cells = <0x01>; + #size-cells = <0x00>; + reg = <0x00 0x51838000 0x00 0x8000>; + interrupts = <0x123>; + interrupt-parent = <0x0f>; + status = "okay"; + eswin,syscfg = <0x16 0x3c0 0x0f>; + iic_hold_time = <0x40>; + + pac1934@10 { + compatible = "microchip,pac1934"; + update_time_ms = <0x3e8>; + eswin,chan_label = "som vdd", "soc vdd", "cpu vdd", "ddr lpvdd"; + label = "som_info"; + energy_acc_count = <0x00>; + shunt_resistors = <0x01 0x01 0x01 0x01>; + reg = <0x10>; + }; + + ina226@44 { + compatible = "ti,ina226"; + #io-channel-cells = <0x01>; + label = "sys_power"; + reg = <0x44>; + shunt-resistor = <0x3e8>; + }; + }; + + pinctrl@0x51600080 { + compatible = "eswin,eic7700-pinctrl", "syscon"; + reg = <0x00 0x51600080 0x00 0x1fff80>; + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d>; + phandle = <0x1d>; + + sdio0-default { + + mux { + groups = "sdio0_group"; + function = "sdio0_func"; + }; + }; + + sdio1-default { + + mux { + groups = "sdio1_group"; + function = "sdio1_func"; + }; + }; + + por_sel-default { + + mux { + groups = "por_sel_group"; + function = "por_sel_func"; + }; + }; + + jtag0-default { + + mux { + groups = "jtag0_group"; + function = "jtag0_func"; + }; + }; + + jtag1-default { + + mux { + groups = "jtag1_group"; + function = "jtag1_func"; + }; + }; + + jtag2-default { + + mux { + groups = "jtag2_group"; + function = "jtag2_func"; + }; + }; + + pcie-default { + + mux { + groups = "pcie_group"; + function = "pcie_func"; + }; + }; + + hdmi-default { + + mux { + groups = "hdmi_group"; + function = "hdmi_func"; + }; + }; + + rgmii0-default { + + mux { + groups = "rgmii0_group"; + function = "rgmii0_func"; + }; + }; + + rgmii1-default { + + mux { + groups = "rgmii1_group"; + function = "rgmii1_func"; + }; + }; + + spi0-default { + + mux { + groups = "spi0_group"; + function = "spi0_func"; + }; + }; + + spi1-default { + + mux { + groups = "spi1_group"; + function = "spi1_func"; + }; + }; + + spi3-default { + + mux { + groups = "spi3_group"; + function = "spi3_func"; + }; + }; + + por_time_sel0-default { + + mux { + groups = "por_time_sel0_group"; + function = "por_time_sel0_func"; + }; + }; + + por_time_sel1-default { + + mux { + groups = "por_time_sel1_group"; + function = "por_time_sel1_func"; + }; + }; + + i2s0-default { + + mux { + groups = "i2s0_group"; + function = "i2s0_func"; + }; + }; + + i2s1-default { + + mux { + groups = "i2s1_group"; + function = "i2s1_func"; + }; + }; + + i2s2-default { + + mux { + groups = "i2s2_group"; + function = "i2s2_func"; + }; + }; + + usb0_pwren-default { + + mux { + groups = "usb0_pwren_group"; + function = "usb0_pwren_func"; + }; + }; + + usb1_pwren-default { + + mux { + groups = "usb1_pwren_group"; + function = "usb1_pwren_func"; + }; + }; + + i2c0-default { + + mux { + groups = "i2c0_group"; + function = "i2c0_func"; + }; + }; + + i2c1-default { + + mux { + groups = "i2c1_group"; + function = "i2c1_func"; + }; + }; + + i2c2-default { + + mux { + groups = "i2c2_group"; + function = "i2c2_func"; + }; + }; + + i2c3-default { + + mux { + groups = "i2c3_group"; + function = "i2c3_func"; + }; + }; + + i2c4-default { + + mux { + groups = "i2c4_group"; + function = "i2c4_func"; + }; + }; + + i2c5-default { + + mux { + groups = "i2c5_group"; + function = "i2c5_func"; + }; + }; + + i2c8-default { + + mux { + groups = "i2c8_group"; + function = "i2c8_func"; + }; + }; + + i2c10-default { + + mux { + groups = "i2c10_group"; + function = "i2c10_func"; + }; + }; + + i2c11-default { + + mux { + groups = "i2c11_group"; + function = "i2c11_func"; + }; + }; + + uart0-default { + + mux { + groups = "uart0_group"; + function = "uart0_func"; + }; + }; + + uart1-default { + + mux { + groups = "uart1_group"; + function = "uart1_func"; + }; + }; + + uart2-default { + + mux { + groups = "uart2_group"; + function = "uart2_func"; + }; + }; + + pwm0-default { + phandle = <0x4e>; + + mux { + groups = "pwm0_group"; + function = "pwm0_func"; + }; + }; + + fan_tach-default { + phandle = <0x2d>; + + mux { + groups = "fan_tach_group"; + function = "fan_tach_func"; + }; + }; + + mipi_csi0-default { + + mux { + groups = "mipi_csi0_group"; + function = "mipi_csi0_func"; + }; + }; + + mipi_csi1-default { + + mux { + groups = "mipi_csi1_group"; + function = "mipi_csi1_func"; + }; + }; + + mipi_csi2-default { + + mux { + groups = "mipi_csi2_group"; + function = "mipi_csi2_func"; + }; + }; + + mipi_csi3-default { + + mux { + groups = "mipi_csi3_group"; + function = "mipi_csi3_func"; + }; + }; + + mipi_csi4-default { + + mux { + groups = "mipi_csi4_group"; + function = "mipi_csi4_func"; + }; + }; + + mipi_csi5-default { + + mux { + groups = "mipi_csi5_group"; + function = "mipi_csi5_func"; + }; + }; + + s_mode-default { + + mux { + groups = "s_mode_group"; + function = "s_mode_func"; + }; + }; + + pinmux_ddr_refclk_sel-default { + + mux { + groups = "pinmux_ddr_refclk_sel_group"; + function = "pinmux_ddr_refclk_sel_func"; + }; + }; + + boot_sel-default { + + mux { + groups = "boot_sel_group"; + function = "boot_sel_func"; + }; + }; + + lpddr_ref_clk-default { + + mux { + groups = "lpddr_ref_clk_group"; + function = "lpddr_ref_clk_func"; + }; + }; + + spi2-default { + + mux1 { + groups = "spi2_clk_group"; + function = "spi2_clk_func"; + }; + + conf1 { + groups = "spi2_clk_group"; + input-enable = <0x01>; + bias-pull-up = <0x01>; + bias-pull-down = <0x00>; + }; + + mux2 { + groups = "spi2_d0_group"; + function = "spi2_d0_func"; + }; + + conf2 { + groups = "spi2_d0_group"; + input-enable = <0x01>; + bias-pull-up = <0x01>; + bias-pull-down = <0x00>; + }; + + mux3 { + groups = "spi2_d1_d2_d3_group"; + function = "spi2_d1_d2_d3_func"; + }; + + conf3 { + groups = "spi2_d1_d2_d3_group"; + input-enable = <0x01>; + bias-pull-up = <0x01>; + bias-pull-down = <0x00>; + }; + + mux4 { + groups = "spi2_cs_group"; + function = "spi2_cs_func"; + }; + }; + + sata_act_led-default { + phandle = <0x26>; + + mux { + groups = "sata_act_led_group"; + function = "sata_act_led_func"; + }; + + conf { + groups = "sata_act_led_group"; + input-enable = <0x00>; + bias-pull-down = <0x01>; + }; + }; + + emmc_led_control-default { + phandle = <0x28>; + + mux { + groups = "emmc_led_control_group"; + function = "emmc_led_control_func"; + }; + + conf { + groups = "emmc_led_control_group"; + input-enable = <0x00>; + bias-pull-down = <0x01>; + }; + }; + + sd0_led_control-default { + + mux { + groups = "sd0_led_control_group"; + function = "sd0_led_control_func"; + }; + }; + + sd1_led_control-default { + + mux { + groups = "sd1_led_control_group"; + function = "sd1_led_control_func"; + }; + }; + + i2c6-default { + + mux { + groups = "i2c6_group"; + function = "i2c6_func"; + }; + }; + + i2c7-default { + + mux { + groups = "i2c7_group"; + function = "i2c7_func"; + }; + }; + + i2c9-default { + + mux { + groups = "i2c9_group"; + function = "i2c9_func"; + }; + }; + + pwm1-default { + + mux { + groups = "pwm1_group"; + function = "pwm1_func"; + }; + }; + + pwm2-default { + + mux { + groups = "pwm2_group"; + function = "pwm2_func"; + }; + }; + + mipi_csi_xtrig-default { + + mux { + groups = "mipi_csi_xtrig_group"; + function = "mipi_csi_xtrig_func"; + }; + }; + + uart3-default { + + mux { + groups = "uart3_group"; + function = "uart3_func"; + }; + }; + + uart4-default { + + mux { + groups = "uart4_group"; + function = "uart4_func"; + }; + }; + + gpio0-default { + phandle = <0x2e>; + + mux { + groups = "gpio0_group"; + function = "gpio0_func"; + }; + + conf { + groups = "gpio0_group"; + input-enable = <0x01>; + bias-pull-up = <0x01>; + }; + }; + + gpio1-default { + + mux { + groups = "gpio1_group"; + function = "gpio1_func"; + }; + }; + + gpio2-default { + + mux { + groups = "gpio2_group"; + function = "gpio2_func"; + }; + }; + + gpio3-default { + + mux { + groups = "gpio3_group"; + function = "gpio3_func"; + }; + }; + + gpio4-default { + + mux { + groups = "gpio4_group"; + function = "gpio4_func"; + }; + }; + + gpio5-default { + phandle = <0x32>; + + mux { + groups = "gpio5_group"; + function = "gpio5_func"; + }; + + conf { + groups = "gpio5_group"; + input-enable = <0x01>; + bias-pull-up = <0x01>; + }; + }; + + gpio6-default { + phandle = <0x33>; + + mux { + groups = "gpio6_group"; + function = "gpio6_func"; + }; + + conf { + groups = "gpio6_group"; + input-enable = <0x01>; + bias-pull-down = <0x01>; + }; + }; + + gpio7-default { + phandle = <0x34>; + + mux { + groups = "gpio7_group"; + function = "gpio7_func"; + }; + + conf { + groups = "gpio7_group"; + input-enable = <0x01>; + bias-pull-down = <0x01>; + }; + }; + + gpio8-default { + phandle = <0x35>; + + mux { + groups = "gpio8_group"; + function = "gpio8_func"; + }; + + conf { + groups = "gpio8_group"; + input-enable = <0x01>; + bias-pull-up = <0x01>; + }; + }; + + gpio9-default { + phandle = <0x36>; + + mux { + groups = "gpio9_group"; + function = "gpio9_func"; + }; + + conf { + groups = "gpio9_group"; + input-enable = <0x01>; + bias-pull-up = <0x01>; + }; + }; + + gpio10-default { + phandle = <0x37>; + + mux { + groups = "gpio10_group"; + function = "gpio10_func"; + }; + + conf { + groups = "gpio10_group"; + input-enable = <0x01>; + bias-pull-up = <0x01>; + }; + }; + + gpio11-default { + + mux { + groups = "gpio11_group"; + function = "gpio11_func"; + }; + + conf { + groups = "gpio11_group"; + input-enable = <0x01>; + bias-pull-up = <0x01>; + }; + }; + + gpio12-default { + + mux { + groups = "gpio12_group"; + function = "gpio12_func"; + }; + }; + + gpio13-default { + + mux { + groups = "gpio13_group"; + function = "gpio13_func"; + }; + }; + + gpio14-default { + + mux { + groups = "gpio14_group"; + function = "gpio14_func"; + }; + }; + + gpio15-default { + + mux { + groups = "gpio15_group"; + function = "gpio15_func"; + }; + }; + + gpio16-default { + + mux { + groups = "gpio16_group"; + function = "gpio16_func"; + }; + + conf { + groups = "gpio16_group"; + input-enable = <0x00>; + bias-pull-down = <0x01>; + }; + }; + + gpio17-default { + phandle = <0x38>; + + mux { + groups = "gpio17_group"; + function = "gpio17_func"; + }; + + conf { + groups = "gpio17_group"; + input-enable = <0x01>; + bias-pull-down = <0x01>; + }; + }; + + gpio18-default { + + mux { + groups = "gpio18_group"; + function = "gpio18_func"; + }; + + conf { + groups = "gpio18_group"; + input-enable = <0x01>; + bias-pull-down = <0x01>; + }; + }; + + gpio19-default { + + mux { + groups = "gpio19_group"; + function = "gpio19_func"; + }; + + conf { + groups = "gpio19_group"; + input-enable = <0x01>; + bias-pull-down = <0x01>; + }; + }; + + gpio20-default { + + mux { + groups = "gpio20_group"; + function = "gpio20_func"; + }; + + conf { + groups = "gpio20_group"; + input-enable = <0x01>; + bias-pull-down = <0x01>; + }; + }; + + gpio21-default { + + mux { + groups = "gpio21_group"; + function = "gpio21_func"; + }; + + conf { + groups = "gpio21_group"; + input-enable = <0x01>; + bias-pull-down = <0x01>; + }; + }; + + gpio22-default { + + mux { + groups = "gpio22_group"; + function = "gpio22_func"; + }; + }; + + gpio23-default { + + mux { + groups = "gpio23_group"; + function = "gpio23_func"; + }; + }; + + gpio24-default { + + mux { + groups = "gpio24_group"; + function = "gpio24_func"; + }; + }; + + gpio25-default { + + mux { + groups = "gpio25_group"; + function = "gpio25_func"; + }; + }; + + gpio26-default { + + mux { + groups = "gpio26_group"; + function = "gpio26_func"; + }; + }; + + gpio27-default { + + mux { + groups = "gpio27_group"; + function = "gpio27_func"; + }; + }; + + gpio28-default { + phandle = <0x2f>; + + mux { + groups = "gpio28_group"; + function = "gpio28_func"; + }; + + conf { + groups = "gpio28_group"; + input-enable = <0x01>; + bias-pull-up = <0x01>; + }; + }; + + gpio29-default { + + mux { + groups = "gpio29_group"; + function = "gpio29_func"; + }; + }; + + gpio30-default { + + mux { + groups = "gpio30_group"; + function = "gpio30_func"; + }; + }; + + gpio31-default { + + mux { + groups = "gpio31_group"; + function = "gpio31_func"; + }; + }; + + gpio32-default { + + mux { + groups = "gpio32_group"; + function = "gpio32_func"; + }; + }; + + gpio33-default { + + mux { + groups = "gpio33_group"; + function = "gpio33_func"; + }; + }; + + gpio34-default { + + mux { + groups = "gpio34_group"; + function = "gpio34_func"; + }; + }; + + gpio35-default { + phandle = <0x39>; + + mux { + groups = "gpio35_group"; + function = "gpio35_func"; + }; + + conf { + groups = "gpio35_group"; + input-enable = <0x01>; + bias-pull-down = <0x01>; + }; + }; + + gpio36-default { + phandle = <0x3a>; + + mux { + groups = "gpio36_group"; + function = "gpio36_func"; + }; + + conf { + groups = "gpio36_group"; + input-enable = <0x01>; + bias-pull-down = <0x01>; + }; + }; + + gpio37-default { + phandle = <0x3b>; + + mux { + groups = "gpio37_group"; + function = "gpio37_func"; + }; + + conf { + groups = "gpio37_group"; + input-enable = <0x01>; + bias-pull-down = <0x01>; + }; + }; + + gpio38-default { + phandle = <0x3c>; + + mux { + groups = "gpio38_group"; + function = "gpio38_func"; + }; + + conf { + groups = "gpio38_group"; + input-enable = <0x01>; + bias-pull-down = <0x01>; + }; + }; + + gpio39-default { + phandle = <0x3d>; + + mux { + groups = "gpio39_group"; + function = "gpio39_func"; + }; + + conf { + groups = "gpio39_group"; + input-enable = <0x01>; + bias-pull-down = <0x01>; + }; + }; + + gpio40-default { + phandle = <0x3e>; + + mux { + groups = "gpio40_group"; + function = "gpio40_func"; + }; + + conf { + groups = "gpio40_group"; + input-enable = <0x01>; + bias-pull-down = <0x01>; + }; + }; + + gpio41-default { + phandle = <0x3f>; + + mux { + groups = "gpio41_group"; + function = "gpio41_func"; + }; + }; + + gpio42-default { + + mux { + groups = "gpio42_group"; + function = "gpio42_func"; + }; + + conf { + groups = "gpio42_group"; + input-enable = <0x01>; + bias-pull-down = <0x01>; + }; + }; + + gpio43-default { + phandle = <0x60>; + + mux { + groups = "gpio43_group"; + function = "gpio43_func"; + }; + }; + + gpio44-default { + + mux { + groups = "gpio44_group"; + function = "gpio44_func"; + }; + }; + + gpio45-default { + + mux { + groups = "gpio45_group"; + function = "gpio45_func"; + }; + }; + + gpio46-default { + phandle = <0x40>; + + mux { + groups = "gpio46_group"; + function = "gpio46_func"; + }; + + conf { + groups = "gpio46_group"; + input-enable = <0x01>; + bias-pull-down = <0x01>; + }; + }; + + gpio47-default { + + mux { + groups = "gpio47_group"; + function = "gpio47_func"; + }; + + conf { + groups = "gpio47_group"; + input-enable = <0x01>; + bias-pull-down = <0x01>; + }; + }; + + gpio48-default { + + mux { + groups = "gpio48_group"; + function = "gpio48_func"; + }; + }; + + gpio49-default { + + mux { + groups = "gpio49_group"; + function = "gpio49_func"; + }; + }; + + gpio50-default { + + mux { + groups = "gpio50_group"; + function = "gpio50_func"; + }; + }; + + gpio51-default { + + mux { + groups = "gpio51_group"; + function = "gpio51_func"; + }; + }; + + gpio52-default { + phandle = <0x41>; + + mux { + groups = "gpio52_group"; + function = "gpio52_func"; + }; + + conf { + groups = "gpio52_group"; + input-enable = <0x01>; + bias-pull-down = <0x01>; + }; + }; + + gpio53-default { + phandle = <0x42>; + + mux { + groups = "gpio53_group"; + function = "gpio53_func"; + }; + + conf { + groups = "gpio53_group"; + input-enable = <0x01>; + bias-pull-down = <0x01>; + }; + }; + + gpio54-default { + + mux { + groups = "gpio54_group"; + function = "gpio54_func"; + }; + }; + + gpio55-default { + + mux { + groups = "gpio55_group"; + function = "gpio55_func"; + }; + }; + + gpio56-default { + + mux { + groups = "gpio56_group"; + function = "gpio56_func"; + }; + }; + + gpio57-default { + + mux { + groups = "gpio57_group"; + function = "gpio57_func"; + }; + }; + + gpio58-default { + + mux { + groups = "gpio58_group"; + function = "gpio58_func"; + }; + }; + + gpio59-default { + + mux { + groups = "gpio59_group"; + function = "gpio59_func"; + }; + }; + + gpio60-default { + + mux { + groups = "gpio60_group"; + function = "gpio60_func"; + }; + }; + + gpio61-default { + + mux { + groups = "gpio61_group"; + function = "gpio61_func"; + }; + }; + + gpio62-default { + + mux { + groups = "gpio62_group"; + function = "gpio62_func"; + }; + }; + + gpio63-default { + + mux { + groups = "gpio63_group"; + function = "gpio63_func"; + }; + }; + + gpio64-default { + phandle = <0x43>; + + mux { + groups = "gpio64_group"; + function = "gpio64_func"; + }; + + conf { + groups = "gpio64_group"; + input-enable = <0x01>; + bias-pull-down = <0x01>; + }; + }; + + gpio65-default { + phandle = <0x44>; + + mux { + groups = "gpio65_group"; + function = "gpio65_func"; + }; + + conf { + groups = "gpio65_group"; + input-enable = <0x01>; + bias-pull-down = <0x01>; + }; + }; + + gpio66-default { + phandle = <0x45>; + + mux { + groups = "gpio66_group"; + function = "gpio66_func"; + }; + + conf { + groups = "gpio66_group"; + input-enable = <0x01>; + bias-pull-down = <0x01>; + }; + }; + + gpio67-default { + phandle = <0x46>; + + mux { + groups = "gpio67_group"; + function = "gpio67_func"; + }; + + conf { + groups = "gpio67_group"; + input-enable = <0x01>; + bias-pull-down = <0x01>; + }; + }; + + gpio68-default { + + mux { + groups = "gpio68_group"; + function = "gpio68_func"; + }; + }; + + gpio69-default { + + mux { + groups = "gpio69_group"; + function = "gpio69_func"; + }; + }; + + gpio70-default { + phandle = <0x47>; + + mux { + groups = "gpio70_group"; + function = "gpio70_func"; + }; + }; + + gpio71-default { + + mux { + groups = "gpio71_group"; + function = "gpio71_func"; + }; + }; + + gpio72-default { + + mux { + groups = "gpio72_group"; + function = "gpio72_func"; + }; + }; + + gpio73-default { + phandle = <0x48>; + + mux { + groups = "gpio73_group"; + function = "gpio73_func"; + }; + }; + + gpio74-default { + + mux { + groups = "gpio74_group"; + function = "gpio74_func"; + }; + }; + + gpio75-default { + + mux { + groups = "gpio75_group"; + function = "gpio75_func"; + }; + }; + + gpio76-default { + + mux { + groups = "gpio76_group"; + function = "gpio76_func"; + }; + }; + + gpio77-default { + + mux { + groups = "gpio77_group"; + function = "gpio77_func"; + }; + }; + + gpio78-default { + + mux { + groups = "gpio78_group"; + function = "gpio78_func"; + }; + }; + + gpio79-default { + + mux { + groups = "gpio79_group"; + function = "gpio79_func"; + }; + }; + + gpio80-default { + + mux { + groups = "gpio80_group"; + function = "gpio80_func"; + }; + }; + + gpio81-default { + + mux { + groups = "gpio81_group"; + function = "gpio81_func"; + }; + }; + + gpio82-default { + phandle = <0x5a>; + + mux { + groups = "gpio82_group"; + function = "gpio82_func"; + }; + }; + + gpio83-default { + phandle = <0x49>; + + mux { + groups = "gpio83_group"; + function = "gpio83_func"; + }; + }; + + gpio84-default { + + mux { + groups = "gpio84_group"; + function = "gpio84_func"; + }; + }; + + gpio85-default { + phandle = <0x5b>; + + mux { + groups = "gpio85_group"; + function = "gpio85_func"; + }; + }; + + gpio86-default { + phandle = <0x4a>; + + mux { + groups = "gpio86_group"; + function = "gpio86_func"; + }; + }; + + gpio87-default { + phandle = <0x4b>; + + mux { + groups = "gpio87_group"; + function = "gpio87_func"; + }; + }; + + gpio88-default { + + mux { + groups = "gpio88_group"; + function = "gpio88_func"; + }; + }; + + gpio89-default { + + mux { + groups = "gpio89_group"; + function = "gpio89_func"; + }; + }; + + gpio90-default { + + mux { + groups = "gpio90_group"; + function = "gpio90_func"; + }; + }; + + gpio91-default { + + mux { + groups = "gpio91_group"; + function = "gpio91_func"; + }; + }; + + gpio92-default { + phandle = <0x4c>; + + mux { + groups = "gpio92_group"; + function = "gpio92_func"; + }; + + conf { + groups = "gpio92_group"; + input-enable = <0x01>; + bias-pull-down = <0x01>; + }; + }; + + gpio93-default { + phandle = <0x4d>; + + mux { + groups = "gpio93_group"; + function = "gpio93_func"; + }; + + conf { + groups = "gpio93_group"; + input-enable = <0x01>; + bias-pull-down = <0x01>; + }; + }; + + gpio94-default { + + mux { + groups = "gpio94_group"; + function = "gpio94_func"; + }; + + conf { + groups = "gpio94_group"; + input-enable = <0x00>; + bias-pull-down = <0x01>; + }; + }; + + gpio95-default { + + mux { + groups = "gpio95_group"; + function = "gpio95_func"; + }; + }; + + gpio96-default { + + mux { + groups = "gpio96_group"; + function = "gpio96_func"; + }; + }; + + gpio97-default { + + mux { + groups = "gpio97_group"; + function = "gpio97_func"; + }; + }; + + gpio98-default { + + mux { + groups = "gpio98_group"; + function = "gpio98_func"; + }; + }; + + gpio99-default { + + mux { + groups = "gpio99_group"; + function = "gpio99_func"; + }; + }; + + gpio100-default { + + mux { + groups = "gpio100_group"; + function = "gpio100_func"; + }; + }; + + gpio101-default { + + mux { + groups = "gpio101_group"; + function = "gpio101_func"; + }; + }; + + gpio102-default { + + mux { + groups = "gpio102_group"; + function = "gpio102_func"; + }; + }; + + gpio103-default { + + mux { + groups = "gpio103_group"; + function = "gpio103_func"; + }; + }; + + gpio104-default { + + mux { + groups = "gpio104_group"; + function = "gpio104_func"; + }; + }; + + gpio105-default { + + mux { + groups = "gpio105_group"; + function = "gpio105_func"; + }; + }; + + gpio106-default { + phandle = <0x1b>; + + mux { + groups = "gpio106_group"; + function = "gpio106_func"; + }; + + conf { + groups = "gpio106_group"; + input-enable = <0x00>; + bias-pull-down = <0x01>; + }; + }; + + gpio107-default { + + mux { + groups = "gpio107_group"; + function = "gpio107_func"; + }; + + conf { + groups = "gpio107_group"; + input-enable = <0x01>; + bias-pull-down = <0x01>; + }; + }; + + gpio108-default { + + mux { + groups = "gpio108_group"; + function = "gpio108_func"; + }; + + conf { + groups = "gpio108_group"; + input-enable = <0x01>; + bias-pull-down = <0x01>; + }; + }; + + gpio109-default { + + mux { + groups = "gpio109_group"; + function = "gpio109_func"; + }; + + conf { + groups = "gpio109_group"; + input-enable = <0x01>; + bias-pull-down = <0x01>; + }; + }; + + gpio110-default { + + mux { + groups = "gpio110_group"; + function = "gpio110_func"; + }; + + conf { + groups = "gpio110_group"; + input-enable = <0x01>; + bias-pull-down = <0x01>; + }; + }; + + gpio111-default { + phandle = <0x1f>; + + mux { + groups = "gpio111_group"; + function = "gpio111_func"; + }; + + conf { + groups = "gpio111_group"; + input-enable = <0x00>; + bias-pull-up = <0x01>; + }; + }; + + csi_mon_out-default { + + mux { + groups = "csi_mon_out_group"; + function = "csi_mon_out_func"; + }; + }; + + csi_ocla_clk-default { + + mux { + groups = "csi_ocla_clk_group"; + function = "csi_ocla_clk_func"; + }; + }; + + csi_mon_out_valid-default { + + mux { + groups = "csi_mon_out_valid_group"; + function = "csi_mon_out_valid_func"; + }; + }; + + csi_parity_error-default { + + mux { + groups = "csi_parity_error_group"; + function = "csi_parity_error_func"; + }; + }; + + csi_dtb_out-default { + + mux { + groups = "csi_dtb_out_group"; + function = "csi_dtb_out_func"; + }; + }; + + csi_phy_sel-default { + + mux { + groups = "csi_phy_sel_group"; + function = "csi_phy_sel_func"; + }; + }; + + vc_g2d0_debug_out-default { + + mux { + groups = "vc_g2d0_debug_out_group"; + function = "vc_g2d0_debug_out_func"; + }; + }; + + vc_g2d1_debug_out-default { + + mux { + groups = "vc_g2d1_debug_out_group"; + function = "vc_g2d1_debug_out_func"; + }; + }; + + sata_mpll_clk-default { + + mux { + groups = "sata_mpll_clk_group"; + function = "sata_mpll_clk_func"; + }; + }; + + sata_ref_repeat_clk_m-default { + + mux { + groups = "sata_ref_repeat_clk_m_group"; + function = "sata_ref_repeat_clk_m_func"; + }; + }; + + sata_ref_repeat_clk_p-default { + + mux { + groups = "sata_ref_repeat_clk_p_group"; + function = "sata_ref_repeat_clk_p_func"; + }; + }; + }; + + gpio@51600000 { + #address-cells = <0x01>; + #size-cells = <0x00>; + compatible = "snps,dw-apb-gpio"; + reg = <0x00 0x51600000 0x00 0x80>; + status = "okay"; + + gpio-port@0 { + compatible = "snps,dw-apb-gpio-port"; + gpio-controller; + #gpio-cells = <0x02>; + ngpios = <0x20>; + reg = <0x00>; + interrupt-parent = <0x0f>; + interrupts = <0x12f 0x130 0x131 0x132 0x133 0x134 0x135 0x136 0x137 0x138 0x139 0x13a 0x13b 0x13c 0x13d 0x13e 0x13f 0x140 0x141 0x142 0x143 0x144 0x145 0x146 0x147 0x148 0x149 0x14a 0x14b 0x14c 0x14d 0x14e>; + phandle = <0x30>; + }; + + gpio-port@1 { + compatible = "snps,dw-apb-gpio-port"; + gpio-controller; + #gpio-cells = <0x02>; + ngpios = <0x20>; + reg = <0x01>; + phandle = <0x61>; + }; + + gpio-port@2 { + compatible = "snps,dw-apb-gpio-port"; + gpio-controller; + #gpio-cells = <0x02>; + ngpios = <0x20>; + reg = <0x02>; + phandle = <0x5c>; + }; + + gpio-port@3 { + compatible = "snps,dw-apb-gpio-port"; + gpio-controller; + #gpio-cells = <0x02>; + ngpios = <0x10>; + reg = <0x03>; + phandle = <0x1c>; + }; + }; + + pwm@0x50818000 { + compatible = "eswin,pwm-eswin"; + #pwm-cells = <0x02>; + reg = <0x00 0x50818000 0x00 0x4000>; + clock-names = "pwm", "pclk"; + clocks = <0x03 0x2a6>; + clock-frequency = <0xbebc200>; + resets = <0x17 0x0f 0x01>; + reset-names = "pwmrst"; + pinctrl-names = "default"; + pinctrl-0 = <0x4e>; + status = "okay"; + phandle = <0x2c>; + }; + + watchdog@0x50800000 { + compatible = "snps,dw-wdt"; + reg = <0x00 0x50800000 0x00 0x4000>; + clocks = <0x03 0x298>; + clock-names = "pclk"; + resets = <0x17 0x11 0x01>; + reset-names = "rst"; + interrupts = <0x57>; + interrupt-parent = <0x0f>; + status = "okay"; + }; + + watchdog@0x50804000 { + compatible = "snps,dw-wdt"; + reg = <0x00 0x50804000 0x00 0x4000>; + clocks = <0x03 0x299>; + clock-names = "pclk"; + resets = <0x17 0x11 0x02>; + reset-names = "rst"; + interrupts = <0x58>; + interrupt-parent = <0x0f>; + status = "okay"; + }; + + watchdog@0x50808000 { + compatible = "snps,dw-wdt"; + reg = <0x00 0x50808000 0x00 0x4000>; + clocks = <0x03 0x29a>; + clock-names = "pclk"; + resets = <0x17 0x11 0x04>; + reset-names = "rst"; + interrupts = <0x59>; + interrupt-parent = <0x0f>; + status = "okay"; + }; + + watchdog@0x5080c000 { + compatible = "snps,dw-wdt"; + reg = <0x00 0x5080c000 0x00 0x4000>; + clocks = <0x03 0x29b>; + clock-names = "pclk"; + resets = <0x17 0x11 0x08>; + reset-names = "rst"; + interrupts = <0x5a>; + interrupt-parent = <0x0f>; + status = "okay"; + }; + + timer@0x51840000 { + compatible = "eswin,eswin-timer"; + #address-cells = <0x02>; + #size-cells = <0x02>; + reg = <0x00 0x51840000 0x00 0x8000>; + perf_count = <0x07>; + interrupt-parent = <0x0f>; + interrupts = <0x159>; + clock-names = "pclk", "timer_aclk"; + clocks = <0x03 0x26c 0x03 0x268>; + resets = <0x17 0x30 0x01 0x17 0x30 0x02 0x17 0x30 0x04 0x17 0x30 0x08 0x17 0x30 0x10 0x17 0x30 0x20 0x17 0x30 0x40 0x17 0x30 0x80 0x17 0x30 0x100>; + reset-names = "trst0", "trst1", "trst2", "trst3", "trst4", "trst5", "trst6", "trst7", "prst"; + status = "okay"; + }; + + timer@0x51848000 { + compatible = "eswin,eswin-timer"; + #address-cells = <0x02>; + #size-cells = <0x02>; + reg = <0x00 0x51848000 0x00 0x8000>; + interrupt-parent = <0x0f>; + interrupts = <0x15a>; + clock-names = "pclk", "timer_aclk"; + clocks = <0x03 0x26d 0x03 0x269>; + resets = <0x17 0x31 0x01 0x17 0x31 0x02 0x17 0x31 0x04 0x17 0x31 0x08 0x17 0x31 0x10 0x17 0x31 0x20 0x17 0x31 0x40 0x17 0x31 0x80 0x17 0x31 0x100>; + reset-names = "trst0", "trst1", "trst2", "trst3", "trst4", "trst5", "trst6", "trst7", "prst"; + status = "okay"; + }; + + timer@0x51850000 { + compatible = "eswin,eswin-timer"; + #address-cells = <0x02>; + #size-cells = <0x02>; + reg = <0x00 0x51850000 0x00 0x8000>; + interrupt-parent = <0x0f>; + interrupts = <0x15b>; + clock-names = "pclk", "timer_aclk"; + clocks = <0x03 0x26e 0x03 0x26a>; + resets = <0x17 0x32 0x01 0x17 0x32 0x02 0x17 0x32 0x04 0x17 0x32 0x08 0x17 0x32 0x10 0x17 0x32 0x20 0x17 0x32 0x40 0x17 0x32 0x80 0x17 0x32 0x100>; + reset-names = "trst0", "trst1", "trst2", "trst3", "trst4", "trst5", "trst6", "trst7", "prst"; + status = "okay"; + }; + + timer@0x51858000 { + compatible = "eswin,eswin-timer"; + #address-cells = <0x02>; + #size-cells = <0x02>; + reg = <0x00 0x51858000 0x00 0x8000>; + interrupt-parent = <0x0f>; + interrupts = <0x15c>; + clock-names = "pclk", "timer_aclk", "timer3_clk8"; + clocks = <0x03 0x26f 0x03 0x26b 0x03 0x270>; + resets = <0x17 0x33 0x01 0x17 0x33 0x02 0x17 0x33 0x04 0x17 0x33 0x08 0x17 0x33 0x10 0x17 0x33 0x20 0x17 0x33 0x40 0x17 0x33 0x80 0x17 0x33 0x100>; + reset-names = "trst0", "trst1", "trst2", "trst3", "trst4", "trst5", "trst6", "trst7", "prst"; + status = "okay"; + }; + + rtc@51818000 { + compatible = "eswin,eic7700-rtc"; + reg = <0x00 0x51818000 0x00 0x400>; + eswin,syscfg = <0x16 0x3c0>; + interrupt-parent = <0x0f>; + interrupts = <0x124>; + clocks = <0x03 0x272>; + clock-names = "rtcclk"; + clock-frequency = <0x3d09>; + resets = <0x17 0x34 0x01>; + reset-names = "rtcrst"; + status = "okay"; + }; + + i2s0@50200000 { + compatible = "snps,i2s"; + clocks = <0x03 0x250>; + clock-names = "mclk"; + #address-cells = <0x01>; + #size-cells = <0x00>; + #sound-dai-cells = <0x00>; + reg = <0x00 0x50200000 0x00 0x10000>; + dma-names = "rx", "tx"; + dmas = <0x27 0x04 0x00 0x27 0x05 0x00>; + vo_mclk_sel,syscrg = <0x15 0x1bc>; + resets = <0x17 0x22 0x01 0x17 0x22 0x02 0x17 0x21 0x02>; + reset-names = "i2srst", "i2sprst", "voprst"; + status = "okay"; + + port { + phandle = <0x52>; + + endpoint { + remote-endpoint = <0x4f>; + dai-format = "i2s"; + phandle = <0x5f>; + }; + }; + }; + + i2s1@50210000 { + compatible = "snps,i2s"; + clocks = <0x03 0x250>; + clock-names = "mclk"; + #address-cells = <0x01>; + #size-cells = <0x00>; + #sound-dai-cells = <0x00>; + reg = <0x00 0x50210000 0x00 0x10000>; + dma-names = "rx", "tx"; + dmas = <0x27 0x02 0x01 0x27 0x03 0x01>; + vo_mclk_sel,syscrg = <0x15 0x1bc>; + resets = <0x17 0x22 0x01 0x17 0x22 0x02 0x17 0x21 0x02>; + reset-names = "i2srst", "i2sprst", "voprst"; + status = "okay"; + + port { + phandle = <0x51>; + + endpoint { + remote-endpoint = <0x50>; + dai-format = "i2s"; + phandle = <0x31>; + }; + }; + }; + + i2s2@50220000 { + compatible = "snps,i2s"; + clocks = <0x03 0x250>; + clock-names = "mclk"; + #address-cells = <0x01>; + #size-cells = <0x00>; + #sound-dai-cells = <0x00>; + reg = <0x00 0x50220000 0x00 0x10000>; + dma-names = "rx", "tx"; + dmas = <0x27 0x00 0x02 0x27 0x01 0x02>; + vo_mclk_sel,syscrg = <0x15 0x1bc>; + resets = <0x17 0x22 0x01 0x17 0x22 0x02 0x17 0x21 0x02>; + reset-names = "i2srst", "i2sprst", "voprst"; + status = "disabled"; + }; + + graphcard0 { + compatible = "audio-graph-card"; + status = "okay"; + dais = <0x51>; + }; + + graphcard1 { + compatible = "audio-graph-card"; + status = "okay"; + dais = <0x52>; + }; + + graphcard2 { + compatible = "audio-graph-card"; + status = "disabled"; + }; + + display-subsystem { + compatible = "eswin,display-subsystem"; + ports = <0x53>; + status = "okay"; + }; + + dvb-subsystem { + compatible = "amlogic,dvb_widgets"; + status = "disabled"; + }; + + display_control@502c0000 { + compatible = "eswin,dc"; + reg = <0x00 0x502c0000 0x00 0x100 0x00 0x502c0180 0x00 0x700 0x00 0x502c1400 0x00 0x1400>; + interrupt-parent = <0x0f>; + interrupts = <0xee>; + clocks = <0x03 0x24d 0x03 0x24f 0x03 0x24c 0x03 0x04 0x03 0x2a>; + clock-names = "cfg_clk", "pix_clk", "axi_clk", "spll0_fout1", "vo_mux"; + resets = <0x17 0x23 0x01 0x17 0x23 0x02 0x17 0x23 0x04 0x17 0x23 0x08>; + reset-names = "vo_arst", "vo_prst", "dc_arst", "dc_prst"; + status = "okay"; + + port { + #address-cells = <0x01>; + #size-cells = <0x00>; + phandle = <0x53>; + + endpoint@0 { + reg = <0x00>; + remote-endpoint = <0x54>; + phandle = <0x58>; + }; + + endpoint@1 { + reg = <0x01>; + remote-endpoint = <0x55>; + phandle = <0x57>; + }; + + endpoint@2 { + reg = <0x02>; + remote-endpoint = <0x56>; + phandle = <0x5e>; + }; + }; + }; + + es_wb { + compatible = "eswin,virtual_display"; + bpp = [08]; + status = "disabled"; + + port { + + endpoint { + remote-endpoint = <0x57>; + phandle = <0x55>; + }; + }; + }; + + dsi-output { + compatible = "eswin,dsi-encoder"; + status = "okay"; + }; + + mipi_dsi@50270000 { + #address-cells = <0x01>; + #size-cells = <0x00>; + compatible = "eswin,dsi"; + reg = <0x00 0x50270000 0x00 0x10000>; + clocks = <0x03 0x201>; + clock-names = "pclk"; + resets = <0x17 0x21 0x01>; + reset-names = "phyrstn"; + status = "okay"; + + ports { + #address-cells = <0x01>; + #size-cells = <0x00>; + + port@0 { + #address-cells = <0x01>; + #size-cells = <0x00>; + reg = <0x00>; + + endpoint { + remote-endpoint = <0x58>; + phandle = <0x54>; + }; + }; + + port@1 { + #address-cells = <0x01>; + #size-cells = <0x00>; + reg = <0x01>; + + endpoint { + remote-endpoint = <0x59>; + phandle = <0x5d>; + }; + }; + }; + + dsi_panel@0 { + compatible = "eswin,generic-panel"; + reg = <0x00>; + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <0x5a 0x5b>; + backlight0-gpios = <0x5c 0x12 0x00>; + rst-gpios = <0x5c 0x15 0x00>; + + port { + + endpoint { + remote-endpoint = <0x5d>; + phandle = <0x59>; + }; + }; + }; + }; + + dctest@502c0000 { + compatible = "eswin,dc"; + reg = <0x00 0x502c0000 0x00 0x10000>; + interrupt-parent = <0x0f>; + interrupts = <0xee>; + status = "disabled"; + }; + + hdmi@502a0000 { + compatible = "eswin,eswin-dw-hdmi"; + reg = <0x00 0x502a0000 0x00 0x20000>; + pinctrl-names = "default"; + interrupt-parent = <0x0f>; + interrupts = <0x112>; + clocks = <0x03 0x24d 0x03 0x252 0x03 0x251>; + clock-names = "iahb", "cec", "isfr"; + reg-io-width = <0x04>; + ddc-i2c-scl-high-time-ns = <0x1264>; + ddc-i2c-scl-low-time-ns = <0x1334>; + #sound-dai-cells = <0x00>; + resets = <0x17 0x21 0x08 0x17 0x21 0x10 0x17 0x21 0x20>; + reset-names = "prstn", "phyrstn", "rstn"; + status = "okay"; + + ports { + #address-cells = <0x01>; + #size-cells = <0x00>; + + port@0 { + reg = <0x00>; + + endpoint@0 { + remote-endpoint = <0x5e>; + phandle = <0x56>; + }; + }; + + port@2 { + reg = <0x02>; + + endpoint@1 { + system-clock-frequency = <0xbb8000>; + remote-endpoint = <0x5f>; + phandle = <0x4f>; + }; + }; + }; + }; + + hdmi-hdcp2@50290000 { + compatible = "eswin,dw-hdmi-hdcp2"; + reg = <0x00 0x50290000 0x00 0x10000>; + interrupt-parent = <0x0f>; + interrupts = <0x113>; + clocks = <0x03 0x24d 0x03 0x24e>; + clock-names = "pclk_hdcp2", "hdcp2_clk_hdmi"; + dma-noncoherent; + status = "okay"; + }; + + usb0@50480000 { + compatible = "eswin,eic7700-dwc3"; + #address-cells = <0x02>; + #size-cells = <0x02>; + clocks = <0x03 0x10e>; + clock-names = "suspend"; + eswin,hsp_sp_csr = <0x19 0x800 0x808 0x83c 0x840>; + resets = <0x17 0x07 0x8000>; + reset-names = "vaux"; + ranges; + status = "okay"; + + dwc3@50480000 { + compatible = "snps,dwc3"; + reg = <0x00 0x50480000 0x00 0x10000>; + #address-cells = <0x02>; + #size-cells = <0x02>; + interrupt-parent = <0x0f>; + interrupts = <0x55>; + interrupt-names = "peripheral"; + dr_mode = "host"; + phy_type = "utmi"; + maximum-speed = "super-speed"; + iommus = <0x18 0x0a>; + eswin,hsp_sp_csr = <0x19 0x1044>; + dma-ranges = <0x00 0x00 0x00 0xc0000000 0x200 0x00>; + snps,dis_enblslpm_quirk; + snps,dis-u2-freeclk-exists-quirk; + snps,dis_u2_susphy_quirk; + snps,dis-del-phy-power-chg-quirk; + snps,parkmode-disable-ss-quirk; + status = "okay"; + numa-node-id = <0x00>; + tbus = <0x02>; + }; + }; + + usb1@50490000 { + compatible = "eswin,eic7700-dwc3"; + #address-cells = <0x02>; + #size-cells = <0x02>; + clocks = <0x03 0x10f>; + clock-names = "suspend"; + eswin,hsp_sp_csr = <0x19 0x900 0x908 0x93c 0x940>; + resets = <0x17 0x07 0x10000>; + reset-names = "vaux"; + ranges; + status = "okay"; + + dwc3@50490000 { + compatible = "snps,dwc3"; + reg = <0x00 0x50490000 0x00 0x10000>; + #address-cells = <0x02>; + #size-cells = <0x02>; + interrupt-parent = <0x0f>; + interrupts = <0x56>; + interrupt-names = "host"; + dr_mode = "host"; + phy_type = "utmi"; + maximum-speed = "super-speed"; + iommus = <0x18 0x0b>; + eswin,hsp_sp_csr = <0x19 0x1048>; + dma-ranges = <0x00 0x00 0x00 0xc0000000 0x200 0x00>; + snps,dis_enblslpm_quirk; + snps,dis-u2-freeclk-exists-quirk; + snps,dis_u2_susphy_quirk; + snps,dis-del-phy-power-chg-quirk; + snps,parkmode-disable-ss-quirk; + status = "okay"; + numa-node-id = <0x00>; + tbus = <0x02>; + + usb-hub { + gpio-hog; + pinctrl-names = "default"; + pinctrl-0 = <0x60>; + gpios = <0x61 0x0b 0x00>; + output-low; + line-name = "usb-hub-reset"; + }; + }; + }; + + vi_common_top_csr@0x51030000 { + compatible = "esw,vi-common-csr", "syscon"; + clocks = <0x03 0x23f 0x03 0x241 0x03 0x243 0x03 0x240 0x03 0x24b 0x03 0x24a 0x03 0x244 0x03 0x245 0x03 0x246 0x03 0x247 0x03 0x248 0x03 0x249 0x03 0x27 0x03 0x28 0x03 0x29 0x03 0x04 0x03 0x0d>; + clock-names = "aclk", "cfg_clk", "isp_aclk", "dvp_clk", "phy_cfg", "phy_escclk", "sht0", "sht1", "sht2", "sht3", "sht4", "sht5", "aclk_mux", "dvp_mux", "isp_mux", "spll0_fout1", "vpll_fout1"; + resets = <0x17 0x1c 0x01 0x17 0x1c 0x02 0x17 0x1e 0x01 0x17 0x1f 0x01 0x17 0x1d 0x01 0x17 0x20 0x01 0x17 0x20 0x02 0x17 0x20 0x04 0x17 0x20 0x08 0x17 0x20 0x10 0x17 0x20 0x20>; + reset-names = "axi", "cfg", "isp0", "isp1", "dvp", "sht0", "sht1", "sht2", "sht3", "sht4", "sht5"; + id = <0x00>; + #size-cells = <0x02>; + reg = <0x00 0x51030000 0x00 0x10000>; + phandle = <0x62>; + }; + + isp@0x51000000 { + compatible = "esw,eic7700-isp"; + reg = <0x00 0x51000000 0x00 0x10000>; + interrupts = <0x15 0x13 0x14>; + interrupt-parent = <0x0f>; + id = <0x00>; + #size-cells = <0x02>; + dma-ranges = <0x00 0x20000000 0x00 0x80000000 0x00 0x40000000>; + iommus = <0x18 0x06>; + tbus = <0x00>; + eswin,vi_top_csr = <0x62 0x1000>; + numa-node-id = <0x00>; + status = "disabled"; + }; + + isp@0x51010000 { + compatible = "esw,eic7700-isp"; + reg = <0x00 0x51010000 0x00 0x10000>; + interrupts = <0x18 0x16 0x17>; + interrupt-parent = <0x0f>; + id = <0x01>; + #size-cells = <0x02>; + dma-ranges = <0x00 0x20000000 0x00 0x80000000 0x00 0x40000000>; + tbus = <0x00>; + eswin,vi_top_csr = <0x62 0x1004>; + numa-node-id = <0x00>; + status = "disabled"; + }; + + dewarp@51020000 { + compatible = "eswin,dewarp"; + clocks = <0x03 0x23f 0x03 0x241 0x03 0x242 0x03 0x27 0x03 0x54 0x03 0x04 0x03 0x0d>; + clock-names = "aclk", "cfg_clk", "dw_aclk", "aclk_mux", "dw_mux", "spll0_fout1", "vpll_fout1"; + resets = <0x17 0x1c 0x01 0x17 0x1c 0x02 0x17 0x1c 0x04>; + reset-names = "axi", "cfg", "dwe"; + interrupt-parent = <0x0f>; + interrupts = <0x1a 0x19>; + #size-cells = <0x02>; + dma-ranges = <0x00 0x20000000 0x00 0x80000000 0x00 0x40000000>; + iommus = <0x18 0x08>; + tbus = <0x00>; + eswin,vi_top_csr = <0x62 0x1008>; + reg = <0x00 0x51020000 0x00 0xc00 0x00 0x51020c00 0x00 0x120>; + numa-node-id = <0x00>; + status = "okay"; + }; + + dphy@510c0000 { + compatible = "snps,dw-dphy-rx"; + #phy-cells = <0x01>; + bus-width = <0x08>; + snps,dphy-frequency = <0x493e0>; + snps,phy_type = <0x08>; + reg = <0x00 0x510c0000 0x00 0x20000>; + numa-node-id = <0x00>; + status = "disabled"; + }; + + csidma@0x52048000 { + compatible = "eswin,csi-video"; + interrupt-parent = <0x0f>; + interrupts = <0x1d>; + reg = <0x00 0x52048000 0x00 0x1000>; + numa-node-id = <0x00>; + status = "disabled"; + + port { + #address-cells = <0x01>; + #size-cells = <0x00>; + + endpoint@0 { + reg = <0x00>; + bus-type = <0x04>; + remote-endpoint = <0x63>; + phandle = <0x65>; + }; + }; + }; + + csidma@0x52058000 { + compatible = "eswin,csi-video"; + interrupt-parent = <0x0f>; + interrupts = <0x1e>; + reg = <0x00 0x52058000 0x00 0x1000>; + numa-node-id = <0x00>; + status = "disabled"; + + port { + #address-cells = <0x01>; + #size-cells = <0x00>; + + endpoint@0 { + reg = <0x00>; + bus-type = <0x04>; + remote-endpoint = <0x64>; + phandle = <0x66>; + }; + }; + }; + + csi2@51050000 { + compatible = "snps,dw-csi"; + #address-cells = <0x01>; + #size-cells = <0x00>; + interrupt-parent = <0x0f>; + interrupts = <0x1d>; + snps,output-type = <0x00>; + reg = <0x00 0x51050000 0x00 0x1000>; + numa-node-id = <0x00>; + snps,en-ppi-width = <0x00>; + snps,en-phy-mode = <0x00>; + ipi2_en = <0x00>; + ipi2_vcid = <0x00>; + ipi3_en = <0x00>; + ipi3_vcid = <0x00>; + status = "disabled"; + + port@2 { + reg = <0x02>; + + endpoint { + bus-type = <0x05>; + remote-endpoint = <0x65>; + phandle = <0x63>; + }; + }; + }; + + csi2@51060000 { + compatible = "snps,dw-csi"; + #address-cells = <0x01>; + #size-cells = <0x00>; + interrupt-parent = <0x0f>; + interrupts = <0x1e>; + snps,output-type = <0x00>; + reg = <0x00 0x51060000 0x00 0x1000>; + numa-node-id = <0x00>; + snps,en-ppi-width = <0x00>; + snps,en-phy-mode = <0x00>; + ipi2_en = <0x00>; + ipi2_vcid = <0x00>; + ipi3_en = <0x00>; + ipi3_vcid = <0x00>; + status = "disabled"; + + port@2 { + reg = <0x02>; + + endpoint { + bus-type = <0x05>; + remote-endpoint = <0x66>; + phandle = <0x64>; + }; + }; + }; + + ddr-controller@0 { + compatible = "eswin,ddrc-1.20a"; + interrupt-parent = <0x0f>; + interrupts = <0x0a>; + interrupt-names = "ddr-ecc"; + reg = <0x00 0x52300000 0x00 0x40000>; + ctrl-id = <0x00>; + status = "okay"; + }; + + ddr-controller@1 { + compatible = "eswin,ddrc-1.20a"; + interrupt-parent = <0x0f>; + interrupts = <0x12b>; + interrupt-names = "ddr-ecc"; + reg = <0x00 0x52380000 0x00 0x40000>; + ctrl-id = <0x01>; + status = "okay"; + }; + + reset_test@1e00e000 { + compatible = "reset_test"; + resets = <0x17 0x14 0x02 0x17 0x14 0x01 0x17 0x14 0x04>; + reset-names = "bus", "core", "dbg"; + }; + }; + + opp-table0 { + compatible = "operating-points-v2"; + opp-shared; + phandle = <0x04>; + + opp-24000000 { + opp-hz = <0x00 0x16e3600>; + opp-microvolt = "", "\f5"; + clock-latency-ns = <0x11170>; + }; + + opp-100000000 { + opp-hz = <0x00 0x5f5e100>; + opp-microvolt = "", "\f5"; + clock-latency-ns = <0x11170>; + }; + + opp-200000000 { + opp-hz = <0x00 0xbebc200>; + opp-microvolt = "", "\f5"; + clock-latency-ns = <0x11170>; + }; + + opp-400000000 { + opp-hz = <0x00 0x17d78400>; + opp-microvolt = "", "\f5"; + clock-latency-ns = <0x11170>; + }; + + opp-500000000 { + opp-hz = <0x00 0x1dcd6500>; + opp-microvolt = "", "\f5"; + clock-latency-ns = <0x11170>; + }; + + opp-600000000 { + opp-hz = <0x00 0x23c34600>; + opp-microvolt = "", "\f5"; + clock-latency-ns = <0x11170>; + }; + + opp-700000000 { + opp-hz = <0x00 0x29b92700>; + opp-microvolt = "", "\f5"; + clock-latency-ns = <0x11170>; + }; + + opp-800000000 { + opp-hz = <0x00 0x2faf0800>; + opp-microvolt = "", "\f5"; + clock-latency-ns = <0x11170>; + }; + + opp-900000000 { + opp-hz = <0x00 0x35a4e900>; + opp-microvolt = "", "\f5"; + clock-latency-ns = <0x11170>; + }; + + opp-1000000000 { + opp-hz = <0x00 0x3b9aca00>; + opp-microvolt = "", "\f5"; + clock-latency-ns = <0x11170>; + }; + + opp-1200000000 { + opp-hz = <0x00 0x47868c00>; + opp-microvolt = "", "\f5"; + clock-latency-ns = <0x11170>; + }; + + opp-1300000000 { + opp-hz = <0x00 0x4d7c6d00>; + opp-microvolt = "", "\f5"; + clock-latency-ns = <0x11170>; + }; + + opp-1400000000 { + opp-hz = <0x00 0x53724e00>; + opp-microvolt = "", "\f5"; + clock-latency-ns = <0x11170>; + }; + }; + + aliases { + serial0 = "/soc/serial@0x50900000"; + ethernet0 = "/soc/ethernet@50400000"; + ethernet1 = "/soc/ethernet@50410000"; + }; + + chosen { + stdout-path = "serial0:115200n8"; + }; + + reserved-memory { + #address-cells = <0x02>; + #size-cells = <0x02>; + ranges; + + linux,cma { + compatible = "shared-dma-pool"; + reusable; + size = <0x00 0x20000000>; + alignment = <0x00 0x1000>; + alloc-ranges = <0x00 0x80000000 0x04 0x00>; + linux,cma-default; + }; + + sprammemory@59000000 { + no-map; + reg = <0x00 0x59000000 0x00 0x400000>; + phandle = <0x21>; + }; + + lpcpu@a0000000 { + no-map; + reg = <0x00 0xa0000000 0x00 0x100000>; + phandle = <0x2a>; + }; + + g2d_4GB_boundary_reserved_4k { + no-map; + reg = <0x00 0xfffff000 0x00 0x1000>; + }; + }; +}; diff --git a/examples/simple/board/hifive_p550/overlay.dts b/examples/simple/board/hifive_p550/overlay.dts new file mode 100644 index 000000000..e458ad666 --- /dev/null +++ b/examples/simple/board/hifive_p550/overlay.dts @@ -0,0 +1,33 @@ +/* + * Copyright 2024, UNSW + * + * SPDX-License-Identifier: BSD-2-Clause + */ +/ { + /* Need to specify how much RAM the guest will have */ + memory@80000000 { + device_type = "memory"; + reg = <0x0 0x80000000 0x0 0x10000000>; + }; + + soc { + gpio@51600000 { + status = "disabled"; + }; + + serial@0x50910000 { + status = "disabled"; + }; + + serial@0x50920000 { + status = "disabled"; + }; + }; + + chosen { + bootargs = "earlycon=sbi console=ttyS0 loglevel=8 maxcpus=1"; + stdout-path = "/soc/serial@0x50900000"; + linux,initrd-start = <0x8c000000>; + linux,initrd-end = <0x8e000000>; + }; +}; diff --git a/examples/simple/board/hifive_p550/simple.system b/examples/simple/board/hifive_p550/simple.system new file mode 100644 index 000000000..9709b139a --- /dev/null +++ b/examples/simple/board/hifive_p550/simple.system @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/simple/board/qemu_virt_riscv64/README.md b/examples/simple/board/qemu_virt_riscv64/README.md new file mode 100644 index 000000000..21983e56a --- /dev/null +++ b/examples/simple/board/qemu_virt_riscv64/README.md @@ -0,0 +1,6 @@ + + +TODO diff --git a/examples/simple/board/qemu_virt_riscv64/buildroot_config b/examples/simple/board/qemu_virt_riscv64/buildroot_config new file mode 100644 index 000000000..99792a3b8 --- /dev/null +++ b/examples/simple/board/qemu_virt_riscv64/buildroot_config @@ -0,0 +1,4785 @@ +# +# Automatically generated file; DO NOT EDIT. +# Buildroot 2025.02.4 Configuration +# +BR2_HAVE_DOT_CONFIG=y +BR2_HOST_GCC_AT_LEAST_4_9=y +BR2_HOST_GCC_AT_LEAST_5=y +BR2_HOST_GCC_AT_LEAST_6=y +BR2_HOST_GCC_AT_LEAST_7=y +BR2_HOST_GCC_AT_LEAST_8=y +BR2_HOST_GCC_AT_LEAST_9=y +BR2_HOST_GCC_AT_LEAST_10=y +BR2_HOST_GCC_AT_LEAST_11=y +BR2_HOST_GCC_AT_LEAST_12=y + +# +# Target options +# +BR2_ARCH_IS_64=y +BR2_USE_MMU=y +# BR2_arcle is not set +# BR2_arceb is not set +# BR2_arm is not set +# BR2_armeb is not set +# BR2_aarch64 is not set +# BR2_aarch64_be is not set +# BR2_i386 is not set +# BR2_m68k is not set +# BR2_microblazeel is not set +# BR2_microblazebe is not set +# BR2_mips is not set +# BR2_mipsel is not set +# BR2_mips64 is not set +# BR2_mips64el is not set +# BR2_or1k is not set +# BR2_powerpc is not set +# BR2_powerpc64 is not set +# BR2_powerpc64le is not set +BR2_riscv=y +# BR2_s390x is not set +# BR2_sh is not set +# BR2_sparc is not set +# BR2_sparc64 is not set +# BR2_x86_64 is not set +# BR2_xtensa is not set +BR2_ARCH_HAS_TOOLCHAIN_BUILDROOT=y +BR2_ARCH_NEEDS_GCC_AT_LEAST_4_8=y +BR2_ARCH_NEEDS_GCC_AT_LEAST_4_9=y +BR2_ARCH_NEEDS_GCC_AT_LEAST_5=y +BR2_ARCH_NEEDS_GCC_AT_LEAST_6=y +BR2_ARCH_NEEDS_GCC_AT_LEAST_7=y +BR2_ARCH="riscv64" +BR2_NORMALIZED_ARCH="riscv" +BR2_ENDIAN="LITTLE" +BR2_GCC_TARGET_ABI="lp64d" +BR2_BINFMT_SUPPORTS_SHARED=y +BR2_READELF_ARCH_NAME="RISC-V" +BR2_riscv_g=y +# BR2_riscv_custom is not set + +# +# Instruction Set Extensions +# +BR2_RISCV_ISA_RVI=y +BR2_RISCV_ISA_RVM=y +BR2_RISCV_ISA_RVA=y +BR2_RISCV_ISA_RVF=y +BR2_RISCV_ISA_RVD=y +# BR2_RISCV_ISA_RVC is not set +# BR2_RISCV_ISA_RVV is not set +# BR2_RISCV_32 is not set +BR2_RISCV_64=y +BR2_RISCV_USE_MMU=y +# BR2_RISCV_ABI_LP64 is not set +# BR2_RISCV_ABI_LP64F is not set +BR2_RISCV_ABI_LP64D=y +BR2_BINFMT_ELF=y + +# +# Toolchain +# +BR2_TOOLCHAIN=y +BR2_TOOLCHAIN_USES_GLIBC=y +BR2_TOOLCHAIN_BUILDROOT=y +# BR2_TOOLCHAIN_EXTERNAL is not set + +# +# Toolchain Buildroot Options +# +BR2_TOOLCHAIN_BUILDROOT_VENDOR="buildroot" +# BR2_TOOLCHAIN_BUILDROOT_UCLIBC is not set +BR2_TOOLCHAIN_BUILDROOT_GLIBC=y +# BR2_TOOLCHAIN_BUILDROOT_MUSL is not set +BR2_TOOLCHAIN_BUILDROOT_LIBC="glibc" + +# +# Kernel Header Options +# +# BR2_KERNEL_HEADERS_5_4 is not set +# BR2_KERNEL_HEADERS_5_10 is not set +# BR2_KERNEL_HEADERS_5_15 is not set +# BR2_KERNEL_HEADERS_6_1 is not set +# BR2_KERNEL_HEADERS_6_6 is not set +BR2_KERNEL_HEADERS_6_12=y +# BR2_KERNEL_HEADERS_VERSION is not set +# BR2_KERNEL_HEADERS_CUSTOM_TARBALL is not set +# BR2_KERNEL_HEADERS_CUSTOM_GIT is not set +BR2_KERNEL_HEADERS_LATEST=y +BR2_DEFAULT_KERNEL_HEADERS="6.12.33" +BR2_PACKAGE_LINUX_HEADERS=y +BR2_PACKAGE_MUSL_ARCH_SUPPORTS=y +BR2_PACKAGE_MUSL_SUPPORTS=y +BR2_PACKAGE_UCLIBC_ARCH_SUPPORTS=y +BR2_PACKAGE_UCLIBC_SUPPORTS=y +BR2_PACKAGE_GLIBC_ARCH_SUPPORTS=y +BR2_PACKAGE_GLIBC_SUPPORTS=y + +# +# Glibc Options +# +BR2_PACKAGE_GLIBC=y +# BR2_PACKAGE_GLIBC_KERNEL_COMPAT is not set +# BR2_PACKAGE_GLIBC_UTILS is not set + +# +# Binutils Options +# +BR2_PACKAGE_HOST_BINUTILS_SUPPORTS_CFI=y +# BR2_BINUTILS_VERSION_2_42_X is not set +BR2_BINUTILS_VERSION_2_43_X=y +# BR2_BINUTILS_VERSION_2_44_X is not set +BR2_BINUTILS_VERSION="2.43.1" +# BR2_BINUTILS_GPROFNG is not set +BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="" + +# +# GCC Options +# +# BR2_GCC_VERSION_12_X is not set +BR2_GCC_VERSION_13_X=y +# BR2_GCC_VERSION_14_X is not set +BR2_GCC_VERSION="13.3.0" +BR2_EXTRA_GCC_CONFIG_OPTIONS="" +# BR2_TOOLCHAIN_BUILDROOT_CXX is not set +# BR2_TOOLCHAIN_BUILDROOT_FORTRAN is not set +# BR2_GCC_ENABLE_OPENMP is not set +# BR2_GCC_ENABLE_GRAPHITE is not set +BR2_PACKAGE_GCC_FINAL=y +BR2_PACKAGE_HOST_GDB_ARCH_SUPPORTS=y + +# +# Host GDB Options +# +# BR2_PACKAGE_HOST_GDB is not set + +# +# Toolchain Generic Options +# +BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS=y +BR2_TOOLCHAIN_SUPPORTS_VARIADIC_MI_THUNK=y +BR2_USE_WCHAR=y +BR2_ENABLE_LOCALE=y +BR2_TOOLCHAIN_HAS_THREADS=y +BR2_TOOLCHAIN_HAS_THREADS_DEBUG=y +BR2_TOOLCHAIN_HAS_THREADS_NPTL=y +BR2_TOOLCHAIN_HAS_SSP=y +BR2_TOOLCHAIN_HAS_SSP_STRONG=y +BR2_TOOLCHAIN_HAS_UCONTEXT=y +BR2_TOOLCHAIN_SUPPORTS_PIE=y +# BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY is not set +BR2_TOOLCHAIN_EXTRA_LIBS="" +BR2_TOOLCHAIN_HAS_FULL_GETTEXT=y +BR2_TARGET_OPTIMIZATION="" +BR2_TARGET_LDFLAGS="" +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_16=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_17=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_18=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_20=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_1=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_2=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_3=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_5=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_6=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_7=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_8=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_9=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_10=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_11=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_12=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_13=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_14=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_16=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_17=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_18=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_19=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_0=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_1=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_2=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_3=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_4=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_5=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_6=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_7=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_8=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_9=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_10=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_11=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_12=y +BR2_TOOLCHAIN_HEADERS_LATEST=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST="6.12" +BR2_TOOLCHAIN_GCC_AT_LEAST_4_3=y +BR2_TOOLCHAIN_GCC_AT_LEAST_4_4=y +BR2_TOOLCHAIN_GCC_AT_LEAST_4_5=y +BR2_TOOLCHAIN_GCC_AT_LEAST_4_6=y +BR2_TOOLCHAIN_GCC_AT_LEAST_4_7=y +BR2_TOOLCHAIN_GCC_AT_LEAST_4_8=y +BR2_TOOLCHAIN_GCC_AT_LEAST_4_9=y +BR2_TOOLCHAIN_GCC_AT_LEAST_5=y +BR2_TOOLCHAIN_GCC_AT_LEAST_6=y +BR2_TOOLCHAIN_GCC_AT_LEAST_7=y +BR2_TOOLCHAIN_GCC_AT_LEAST_8=y +BR2_TOOLCHAIN_GCC_AT_LEAST_9=y +BR2_TOOLCHAIN_GCC_AT_LEAST_10=y +BR2_TOOLCHAIN_GCC_AT_LEAST_11=y +BR2_TOOLCHAIN_GCC_AT_LEAST_12=y +BR2_TOOLCHAIN_GCC_AT_LEAST_13=y +BR2_TOOLCHAIN_GCC_AT_LEAST="13" +BR2_TOOLCHAIN_HAS_MNAN_OPTION=y +BR2_TOOLCHAIN_HAS_SYNC_1=y +BR2_TOOLCHAIN_HAS_SYNC_2=y +BR2_TOOLCHAIN_HAS_SYNC_4=y +BR2_TOOLCHAIN_HAS_SYNC_8=y +BR2_TOOLCHAIN_HAS_LIBATOMIC=y +BR2_TOOLCHAIN_HAS_ATOMIC=y + +# +# Bare metal toolchain +# +# BR2_TOOLCHAIN_BARE_METAL_BUILDROOT is not set + +# +# Build options +# + +# +# Commands +# +BR2_CURL="curl -q --ftp-pasv --retry 3 --connect-timeout 10" +BR2_WGET="wget -nd -t 3 --connect-timeout=10" +BR2_SVN="svn --non-interactive --config-option servers:global:http-timeout=10" +BR2_BZR="bzr" +BR2_GIT="git" +BR2_CVS="cvs" +BR2_LOCALFILES="cp" +BR2_SCP="scp -o ConnectTimeout=10" +BR2_SFTP="sftp -o ConnectTimeout=10" +BR2_HG="hg" +BR2_ZCAT="gzip -d -c" +BR2_BZCAT="bzcat" +BR2_XZCAT="xzcat" +BR2_LZCAT="lzip -d -c" +BR2_ZSTDCAT="zstdcat" +BR2_TAR_OPTIONS="" +BR2_DEFCONFIG="/home/ivanv/ts/buildroot-2025.02.4/configs/qemu_riscv64_virt_defconfig" +BR2_DL_DIR="$(TOPDIR)/dl" +BR2_HOST_DIR="$(BASE_DIR)/host" + +# +# Mirrors and Download locations +# +BR2_PRIMARY_SITE="" +BR2_BACKUP_SITE="https://sources.buildroot.net" +BR2_KERNEL_MIRROR="https://cdn.kernel.org/pub" +BR2_GNU_MIRROR="https://ftpmirror.gnu.org" +BR2_LUAROCKS_MIRROR="http://rocks.moonscript.org" +BR2_CPAN_MIRROR="https://cpan.metacpan.org" +BR2_JLEVEL=0 +# BR2_CCACHE is not set +# BR2_ENABLE_DEBUG is not set +# BR2_ENABLE_RUNTIME_DEBUG is not set +BR2_STRIP_strip=y +BR2_STRIP_EXCLUDE_FILES="" +BR2_STRIP_EXCLUDE_DIRS="" +# BR2_OPTIMIZE_0 is not set +# BR2_OPTIMIZE_1 is not set +BR2_OPTIMIZE_2=y +# BR2_OPTIMIZE_3 is not set +# BR2_OPTIMIZE_G is not set +# BR2_OPTIMIZE_S is not set +# BR2_OPTIMIZE_FAST is not set +# BR2_ENABLE_LTO is not set + +# +# static only needs a toolchain w/ uclibc or musl +# +BR2_SHARED_LIBS=y +# BR2_SHARED_STATIC_LIBS is not set +BR2_PACKAGE_OVERRIDE_FILE="$(CONFIG_DIR)/local.mk" +BR2_GLOBAL_PATCH_DIR="board/qemu/patches" + +# +# Advanced +# +# BR2_FORCE_HOST_BUILD is not set +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +# BR2_REPRODUCIBLE is not set +# BR2_PER_PACKAGE_DIRECTORIES is not set + +# +# Security Hardening Options +# +BR2_PIC_PIE_ARCH_SUPPORTS=y +BR2_PIC_PIE=y +# BR2_SSP_NONE is not set +# BR2_SSP_REGULAR is not set +BR2_SSP_STRONG=y +# BR2_SSP_ALL is not set +BR2_SSP_OPTION="-fstack-protector-strong" +# BR2_RELRO_NONE is not set +# BR2_RELRO_PARTIAL is not set +BR2_RELRO_FULL=y +BR2_FORTIFY_SOURCE_ARCH_SUPPORTS=y +# BR2_FORTIFY_SOURCE_NONE is not set +BR2_FORTIFY_SOURCE_1=y +# BR2_FORTIFY_SOURCE_2 is not set +# BR2_FORTIFY_SOURCE_3 is not set + +# +# System configuration +# +BR2_ROOTFS_SKELETON_DEFAULT=y +# BR2_ROOTFS_SKELETON_CUSTOM is not set +BR2_TARGET_GENERIC_HOSTNAME="buildroot" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot" +BR2_TARGET_GENERIC_PASSWD_SHA256=y +# BR2_TARGET_GENERIC_PASSWD_SHA512 is not set +BR2_TARGET_GENERIC_PASSWD_METHOD="sha-256" + +# +# General purpose +# +BR2_INIT_BUSYBOX=y +# BR2_INIT_SYSV is not set +# BR2_INIT_OPENRC is not set +# BR2_INIT_SYSTEMD is not set + +# +# Special purpose (read help) +# +# BR2_INIT_TINI is not set +# BR2_INIT_TINYINIT is not set +# BR2_INIT_NONE is not set +# BR2_ROOTFS_DEVICE_CREATION_STATIC is not set +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS=y +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV is not set +BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt" +# BR2_ROOTFS_DEVICE_TABLE_SUPPORTS_EXTENDED_ATTRIBUTES is not set +# BR2_ROOTFS_MERGED_USR is not set +BR2_TARGET_ENABLE_ROOT_LOGIN=y +BR2_TARGET_GENERIC_ROOT_PASSWD="" +BR2_SYSTEM_BIN_SH_BUSYBOX=y + +# +# bash, dash, mksh, zsh need BR2_PACKAGE_BUSYBOX_SHOW_OTHERS +# +# BR2_SYSTEM_BIN_SH_NONE is not set +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="console" +BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP=y +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_9600 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_19200 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_38400 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_57600 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200 is not set +BR2_TARGET_GENERIC_GETTY_BAUDRATE="0" +BR2_TARGET_GENERIC_GETTY_TERM="vt100" +BR2_TARGET_GENERIC_GETTY_OPTIONS="" +BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW=y +BR2_SYSTEM_DHCP="" +BR2_SYSTEM_DEFAULT_PATH="/bin:/sbin:/usr/bin:/usr/sbin" +BR2_ENABLE_LOCALE_PURGE=y +BR2_ENABLE_LOCALE_WHITELIST="C en_US" +BR2_GENERATE_LOCALE="" +# BR2_SYSTEM_ENABLE_NLS is not set +# BR2_TARGET_TZ_INFO is not set +BR2_ROOTFS_USERS_TABLES="" +BR2_ROOTFS_OVERLAY="" +BR2_ROOTFS_PRE_BUILD_SCRIPT="" +BR2_ROOTFS_POST_BUILD_SCRIPT="" +BR2_ROOTFS_POST_FAKEROOT_SCRIPT="" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)" +BR2_ROOTFS_POST_IMAGE_SCRIPT_ARGS="" + +# +# Kernel +# +# BR2_LINUX_KERNEL is not set + +# +# Target packages +# +BR2_PACKAGE_BUSYBOX=y +BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox.config" +BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="" +# BR2_PACKAGE_BUSYBOX_SHOW_OTHERS is not set +# BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES is not set +# BR2_PACKAGE_BUSYBOX_WATCHDOG is not set +BR2_PACKAGE_SKELETON=y +BR2_PACKAGE_HAS_SKELETON=y +BR2_PACKAGE_PROVIDES_SKELETON="skeleton-init-sysv" +BR2_PACKAGE_SKELETON_INIT_COMMON=y +BR2_PACKAGE_SKELETON_INIT_SYSV=y + +# +# Audio and video applications +# +# BR2_PACKAGE_ALSA_UTILS is not set +# BR2_PACKAGE_ATEST is not set +# BR2_PACKAGE_AUMIX is not set +# BR2_PACKAGE_BLUEZ_ALSA is not set +# BR2_PACKAGE_DVBLAST is not set +# BR2_PACKAGE_DVDAUTHOR is not set + +# +# dvdrw-tools needs a toolchain w/ threads, C++, wchar +# + +# +# espeak needs a toolchain w/ C++, wchar, threads, dynamic library +# +# BR2_PACKAGE_FAAD2 is not set +BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS=y +# BR2_PACKAGE_FFMPEG is not set +# BR2_PACKAGE_FLAC is not set +# BR2_PACKAGE_FLITE is not set +# BR2_PACKAGE_FLUID_SOUNDFONT is not set + +# +# fluidsynth needs a toolchain w/ threads, wchar, dynamic library, C++ +# +# BR2_PACKAGE_GMRENDER_RESURRECT is not set +# BR2_PACKAGE_GSTREAMER1 is not set +# BR2_PACKAGE_JACK1 is not set + +# +# jack2 needs a toolchain w/ threads, C++, dynamic library +# +BR2_PACKAGE_KODI_ARCH_SUPPORTS=y + +# +# kodi needs python3 w/ .py modules, a uClibc or glibc toolchain w/ C++, threads, wchar, dynamic library, gcc >= 9.x, host gcc >= 9.x +# + +# +# kodi needs udev support for gbm +# + +# +# kodi needs an OpenGL EGL backend with OpenGL or GLES support +# +# BR2_PACKAGE_LAME is not set +# BR2_PACKAGE_MADPLAY is not set +# BR2_PACKAGE_MINIMODEM is not set + +# +# miraclecast needs systemd and a glibc toolchain w/ threads and wchar +# + +# +# mjpegtools needs a toolchain w/ C++, threads +# + +# +# modplugtools needs a toolchain w/ C++ +# +# BR2_PACKAGE_MOTION is not set + +# +# mpd needs a toolchain w/ C++, threads, wchar, gcc >= 8, host gcc >= 8 +# +# BR2_PACKAGE_MPD_MPC is not set +# BR2_PACKAGE_MPG123 is not set + +# +# mpv needs a toolchain w/ C++, NPTL, gcc >= 4.9 +# +# BR2_PACKAGE_MULTICAT is not set +# BR2_PACKAGE_MUSEPACK is not set + +# +# ncmpc needs a toolchain w/ C++, wchar, threads, gcc >= 10 +# +# BR2_PACKAGE_OPUS_TOOLS is not set +# BR2_PACKAGE_PIPEWIRE is not set +BR2_PACKAGE_PULSEAUDIO_HAS_ATOMIC=y +# BR2_PACKAGE_PULSEAUDIO is not set +# BR2_PACKAGE_SOX is not set +# BR2_PACKAGE_SPEECHD is not set +# BR2_PACKAGE_SQUEEZELITE is not set +# BR2_PACKAGE_TINYCOMPRESS is not set +# BR2_PACKAGE_TSTOOLS is not set +# BR2_PACKAGE_TWOLAME is not set +# BR2_PACKAGE_UDPXY is not set + +# +# upmpdcli needs a toolchain w/ C++, NPTL, gcc >= 4.9 +# + +# +# v4l2grab needs a toolchain w/ threads, dynamic library, C++ and headers >= 3.0 +# + +# +# v4l2loopback needs a Linux kernel to be built +# + +# +# vlc needs a toolchain w/ C++, dynamic library, wchar, threads, gcc >= 4.9, headers >= 3.7 +# +# BR2_PACKAGE_VORBIS_TOOLS is not set +# BR2_PACKAGE_WAVPACK is not set +# BR2_PACKAGE_YAVTA is not set +# BR2_PACKAGE_YMPD is not set + +# +# zynaddsubfx needs a toolchain w/ C++11 and threads +# + +# +# Compressors and decompressors +# +# BR2_PACKAGE_BROTLI is not set +# BR2_PACKAGE_BZIP2 is not set + +# +# lrzip needs a toolchain w/ wchar, threads, C++ +# + +# +# lzip needs a toolchain w/ C++ +# +# BR2_PACKAGE_LZOP is not set + +# +# p7zip needs a toolchain w/ threads, wchar, C++ +# +# BR2_PACKAGE_PIGZ is not set +# BR2_PACKAGE_PIXZ is not set + +# +# unrar needs a toolchain w/ C++, wchar, threads, gcc >= 4.8 +# +# BR2_PACKAGE_XZ is not set +# BR2_PACKAGE_ZIP is not set +# BR2_PACKAGE_ZSTD is not set + +# +# Debugging, profiling and benchmark +# +# BR2_PACKAGE_BABELTRACE2 is not set + +# +# bcc needs a glibc toolchain, C++, wchar, threads, dynamic libs, gcc >= 7, host gcc >= 7 +# +# BR2_PACKAGE_BLKTRACE is not set + +# +# bonnie++ needs a toolchain w/ C++ +# +BR2_PACKAGE_BPFTOOL_ARCH_SUPPORTS=y +# BR2_PACKAGE_BPFTOOL is not set +# BR2_PACKAGE_CACHE_CALIBRATOR is not set + +# +# clinfo needs an OpenCL provider +# + +# +# clpeak needs an OpenCL provider, a toolchain w/ C++, gcc >= 4.8 +# +# BR2_PACKAGE_COREMARK is not set +# BR2_PACKAGE_COREMARK_PRO is not set + +# +# dacapo needs OpenJDK +# +# BR2_PACKAGE_DHRYSTONE is not set +# BR2_PACKAGE_DIEHARDER is not set +# BR2_PACKAGE_DMALLOC is not set +# BR2_PACKAGE_DROPWATCH is not set +# BR2_PACKAGE_DSTAT is not set +# BR2_PACKAGE_DT is not set + +# +# duma needs a toolchain w/ C++, threads, dynamic library +# +# BR2_PACKAGE_FIO is not set +BR2_PACKAGE_FWTS_ARCH_SUPPORTS=y +# BR2_PACKAGE_FWTS is not set +BR2_PACKAGE_GDB_ARCH_SUPPORTS=y + +# +# gdb/gdbserver >= 8.x needs a toolchain w/ C++, gcc >= 4.8 +# +# BR2_PACKAGE_IOZONE is not set +# BR2_PACKAGE_KMEMD is not set +# BR2_PACKAGE_LIBBPF is not set +# BR2_PACKAGE_LIBTRACEEVENT is not set +# BR2_PACKAGE_LIBTRACEFS is not set +# BR2_PACKAGE_LMBENCH is not set +BR2_PACKAGE_LTP_TESTSUITE_ARCH_SUPPORTS=y +# BR2_PACKAGE_LTP_TESTSUITE is not set +# BR2_PACKAGE_LTTNG_BABELTRACE is not set + +# +# lttng-modules needs a Linux kernel to be built +# + +# +# lttng-tools needs a toolchain w/ threads, dynamic library, C++ +# +# BR2_PACKAGE_MBPOLL is not set +# BR2_PACKAGE_MBW is not set +# BR2_PACKAGE_MEMSTAT is not set +# BR2_PACKAGE_NETPERF is not set + +# +# netsniff-ng needs a toolchain w/ NPTL, C++, headers >= 3.0 +# +# BR2_PACKAGE_NMON is not set +# BR2_PACKAGE_PAX_UTILS is not set +BR2_PACKAGE_PERFTEST_ARCH_SUPPORTS=y +# BR2_PACKAGE_PERFTEST is not set + +# +# piglit needs a glibc or musl toolchain w/ C++, gcc >= 9, host gcc >= 9 +# +# BR2_PACKAGE_POKE is not set +# BR2_PACKAGE_PV is not set +# BR2_PACKAGE_RAMSPEED is not set +# BR2_PACKAGE_RT_TESTS is not set + +# +# rwmem needs a toolchain w/ C++, wchar, gcc >= 10 +# + +# +# signal-estimator needs a toochain w/ C++, threads, gcc >= 7 +# +# BR2_PACKAGE_SPIDEV_TEST is not set +# BR2_PACKAGE_STRACE is not set +# BR2_PACKAGE_STRESS is not set +# BR2_PACKAGE_STRESS_NG is not set + +# +# sysdig needs a glibc toolchain w/ C++, threads, gcc >= 8, dynamic library, a Linux kernel, and luajit or lua 5.1 to be built +# +# BR2_PACKAGE_TRACE_CMD is not set +# BR2_PACKAGE_UCLIBC_NG_TEST is not set +# BR2_PACKAGE_VMTOUCH is not set +# BR2_PACKAGE_WHETSTONE is not set + +# +# Development tools +# +# BR2_PACKAGE_AVOCADO is not set +# BR2_PACKAGE_BINUTILS is not set +# BR2_PACKAGE_BITWISE is not set +# BR2_PACKAGE_CHECK is not set +BR2_PACKAGE_CMAKE_ARCH_SUPPORTS=y + +# +# ctest needs a toolchain w/ C++, wchar, dynamic library, gcc >= 4.9, NPTL +# + +# +# cppunit needs a toolchain w/ C++, dynamic library +# +# BR2_PACKAGE_CUKINIA is not set +# BR2_PACKAGE_CUNIT is not set +# BR2_PACKAGE_CVS is not set + +# +# cxxtest needs a toolchain w/ C++ support +# +# BR2_PACKAGE_FLEX is not set +# BR2_PACKAGE_GETTEXT is not set +BR2_PACKAGE_PROVIDES_HOST_GETTEXT="host-gettext-tiny" +# BR2_PACKAGE_GIT is not set + +# +# git-crypt needs a toolchain w/ C++, gcc >= 4.9 +# + +# +# gperf needs a toolchain w/ C++ +# +# BR2_PACKAGE_JO is not set +# BR2_PACKAGE_JQ is not set +# BR2_PACKAGE_LIBTOOL is not set +# BR2_PACKAGE_MAKE is not set +# BR2_PACKAGE_MAWK is not set +# BR2_PACKAGE_PKGCONF is not set +# BR2_PACKAGE_SUBVERSION is not set +# BR2_PACKAGE_TIG is not set +# BR2_PACKAGE_TREE is not set +# BR2_PACKAGE_UNIFDEF is not set + +# +# Filesystem and flash utilities +# +# BR2_PACKAGE_ABOOTIMG is not set + +# +# aufs-util needs a linux kernel and a toolchain w/ threads +# +# BR2_PACKAGE_AUTOFS is not set + +# +# bmap-writer needs a toolchain w/ C++, wchar +# +# BR2_PACKAGE_BTRFS_PROGS is not set +# BR2_PACKAGE_CIFS_UTILS is not set +# BR2_PACKAGE_CPIO is not set +# BR2_PACKAGE_CRAMFS is not set +# BR2_PACKAGE_CURLFTPFS is not set +# BR2_PACKAGE_DAVFS2 is not set +# BR2_PACKAGE_DOSFSTOOLS is not set +# BR2_PACKAGE_E2FSPROGS is not set +# BR2_PACKAGE_E2TOOLS is not set +# BR2_PACKAGE_ECRYPTFS_UTILS is not set +# BR2_PACKAGE_EROFS_UTILS is not set +# BR2_PACKAGE_EXFAT is not set +# BR2_PACKAGE_EXFAT_UTILS is not set +# BR2_PACKAGE_EXFATPROGS is not set +# BR2_PACKAGE_F2FS_TOOLS is not set +# BR2_PACKAGE_FIRMWARE_UTILS is not set +# BR2_PACKAGE_FLASHBENCH is not set +# BR2_PACKAGE_FSCRYPTCTL is not set +# BR2_PACKAGE_FUSE_OVERLAYFS is not set +# BR2_PACKAGE_FWUP is not set +# BR2_PACKAGE_GENEXT2FS is not set +# BR2_PACKAGE_GENPART is not set +# BR2_PACKAGE_GOCRYPTFS is not set +# BR2_PACKAGE_IMX_USB_LOADER is not set +# BR2_PACKAGE_MMC_UTILS is not set +# BR2_PACKAGE_MTD is not set +# BR2_PACKAGE_MTOOLS is not set +# BR2_PACKAGE_NFS_UTILS is not set +# BR2_PACKAGE_NILFS_UTILS is not set +# BR2_PACKAGE_NTFS_3G is not set +# BR2_PACKAGE_SP_OOPS_EXTRACT is not set +# BR2_PACKAGE_SQUASHFS is not set +# BR2_PACKAGE_SSHFS is not set +# BR2_PACKAGE_UDFTOOLS is not set +# BR2_PACKAGE_UNIONFS is not set + +# +# xfsprogs needs a toolchain w/ threads, C++ +# +# BR2_PACKAGE_ZEROFREE is not set + +# +# zfs needs a Linux kernel to be built +# + +# +# Fonts, cursors, icons, sounds and themes +# + +# +# Cursors +# +# BR2_PACKAGE_COMIX_CURSORS is not set + +# +# Fonts +# +# BR2_PACKAGE_BITSTREAM_VERA is not set +# BR2_PACKAGE_CANTARELL is not set +# BR2_PACKAGE_DEJAVU is not set +# BR2_PACKAGE_FONT_AWESOME is not set +# BR2_PACKAGE_GHOSTSCRIPT_FONTS is not set +# BR2_PACKAGE_INCONSOLATA is not set +# BR2_PACKAGE_LIBERATION is not set +# BR2_PACKAGE_WQY_ZENHEI is not set + +# +# Icons +# +# BR2_PACKAGE_HICOLOR_ICON_THEME is not set + +# +# Sounds +# +# BR2_PACKAGE_SOUND_THEME_BOREALIS is not set +# BR2_PACKAGE_SOUND_THEME_FREEDESKTOP is not set + +# +# Themes +# + +# +# Games +# +# BR2_PACKAGE_ASCII_INVADERS is not set +# BR2_PACKAGE_CHOCOLATE_DOOM is not set + +# +# flare-engine needs a toolchain w/ C++, dynamic library +# + +# +# gnuchess needs a toolchain w/ C++, threads +# +# BR2_PACKAGE_LBREAKOUT2 is not set +# BR2_PACKAGE_LTRIS is not set +# BR2_PACKAGE_OPENTYRIAN is not set +# BR2_PACKAGE_PRBOOM is not set +# BR2_PACKAGE_SL is not set + +# +# solarus needs OpenGL and a toolchain w/ C++, gcc >= 4.9, NPTL, dynamic library, and luajit or lua 5.1 +# + +# +# stella needs a toolchain w/ dynamic library, C++, threads, gcc >= 7 +# +# BR2_PACKAGE_XORCURSES is not set + +# +# Graphic libraries and applications (graphic/text) +# + +# +# Graphic applications +# + +# +# cage needs udev, EGL and OpenGL ES support +# + +# +# cog needs wpewebkit and a toolchain w/ threads +# + +# +# dmenu-wayland needs a toolchain w/ wchar, threads, C++, dynamic library, gcc >= 4.9 +# + +# +# flutter packages need flutter-engine +# + +# +# flutter-pi needs GBM, systemd, and udev +# +# BR2_PACKAGE_FOOT is not set +# BR2_PACKAGE_FSWEBCAM is not set +# BR2_PACKAGE_GHOSTSCRIPT is not set + +# +# glmark2 needs a toolchain w/ C++, gcc >= 4.9 +# + +# +# glslsandbox-player needs openGL ES and EGL driver +# +# BR2_PACKAGE_GNUPLOT is not set + +# +# igt-gpu-tools needs udev /dev management and toolchain w/ NPTL, wchar, dynamic library, locale, headers >= 4.11 +# +# BR2_PACKAGE_JHEAD is not set + +# +# kmscube needs EGL, GBM and OpenGL ES, and a toolchain w/ thread support +# + +# +# libva-utils needs a toolchain w/ C++, threads, dynamic library +# +BR2_PACKAGE_NETSURF_ARCH_SUPPORTS=y +# BR2_PACKAGE_NETSURF is not set +# BR2_PACKAGE_PNGQUANT is not set +# BR2_PACKAGE_RRDTOOL is not set + +# +# spirv-tools needs a toolchain w/ C++, dynamic library, gcc >= 8 +# + +# +# stellarium needs Qt5 and an OpenGL provider +# + +# +# sway needs systemd, udev, EGL and OpenGL ES support +# + +# +# sway needs a toolchain w/ wchar, threads, C++, dynamic library, gcc >= 4.9 +# +# BR2_PACKAGE_SWAYBG is not set + +# +# tesseract-ocr needs a toolchain w/ threads, C++, gcc >= 8, dynamic library, wchar +# +# BR2_PACKAGE_TINIFIER is not set + +# +# Graphic libraries +# + +# +# cegui needs a toolchain w/ C++, threads, dynamic library, wchar, gcc >= 5 +# + +# +# efl needs a toolchain w/ C++, dynamic library, gcc >= 4.9, host gcc >= 4.9, threads, wchar +# +# BR2_PACKAGE_FB_TEST_APP is not set +# BR2_PACKAGE_FBDUMP is not set +# BR2_PACKAGE_FBGRAB is not set + +# +# fbterm needs a toolchain w/ C++, wchar, locale +# +# BR2_PACKAGE_FBV is not set + +# +# freerdp needs a toolchain w/ wchar, dynamic library, threads, C++ +# +# BR2_PACKAGE_GRAPHICSMAGICK is not set +# BR2_PACKAGE_IMAGEMAGICK is not set +# BR2_PACKAGE_LIBGLVND is not set + +# +# mesa3d needs a toolchain w/ gcc >=8, C++, NPTL, dynamic library +# + +# +# ocrad needs a toolchain w/ C++ +# + +# +# ogre needs a toolchain w/ C++, dynamic library, gcc >= 4.8, threads, wchar +# +# BR2_PACKAGE_PSPLASH is not set +# BR2_PACKAGE_SDL is not set +# BR2_PACKAGE_SDL2 is not set + +# +# spirv-headers needs a toolchain w/ C++ +# +# BR2_PACKAGE_VULKAN_HEADERS is not set + +# +# vulkan-loader needs a toolchain w/ C++, dynamic library, threads +# + +# +# vulkan-tools needs a toolchain w/ C++, dynamic library, threads, gcc >= 4.9 +# + +# +# Other GUIs +# + +# +# Qt5 needs host g++ >= 5.0, and a toolchain w/ gcc >= 5.0, wchar, NPTL, C++, dynamic library +# + +# +# tekui needs a Lua interpreter and a toolchain w/ threads, dynamic library +# + +# +# weston needs udev and a toolchain w/ locale, threads, dynamic library, headers >= 3.0 +# +# BR2_PACKAGE_XORG7 is not set + +# +# apitrace needs a toolchain w/ C++, wchar, dynamic library, threads, gcc >= 7 +# + +# +# mupdf needs a toolchain w/ C++, gcc >= 4.9 +# + +# +# vte needs a uClibc or glibc toolchain w/ wchar, threads, C++, gcc >= 10 +# + +# +# vte needs an OpenGL or an OpenGL-EGL backend +# +# BR2_PACKAGE_XKEYBOARD_CONFIG is not set + +# +# Hardware handling +# + +# +# Firmware +# +# BR2_PACKAGE_ARMBIAN_FIRMWARE is not set +# BR2_PACKAGE_B43_FIRMWARE is not set +# BR2_PACKAGE_BRCMFMAC_SDIO_FIRMWARE_RPI is not set +# BR2_PACKAGE_LINUX_FIRMWARE is not set +# BR2_PACKAGE_MURATA_CYW_FW is not set +# BR2_PACKAGE_NXP_BT_WIFI_FIRMWARE is not set +# BR2_PACKAGE_ODROIDC2_FIRMWARE is not set +# BR2_PACKAGE_PANEL_MIPI_DBI_FIRMWARE is not set +# BR2_PACKAGE_QCOM_DB410C_FIRMWARE is not set +# BR2_PACKAGE_QORIQ_FM_UCODE is not set +# BR2_PACKAGE_RCW_SMARC_SAL28 is not set +# BR2_PACKAGE_UX500_FIRMWARE is not set +# BR2_PACKAGE_WILC1000_FIRMWARE is not set +# BR2_PACKAGE_WILC3000_FIRMWARE is not set +# BR2_PACKAGE_WILINK_BT_FIRMWARE is not set +# BR2_PACKAGE_ZD1211_FIRMWARE is not set +# BR2_PACKAGE_18XX_TI_UTILS is not set +# BR2_PACKAGE_ACPICA is not set +# BR2_PACKAGE_ACPID is not set + +# +# acpitool needs a toolchain w/ threads, C++, dynamic library +# +# BR2_PACKAGE_AER_INJECT is not set +# BR2_PACKAGE_ALTERA_STAPL is not set + +# +# apcupsd needs a toolchain w/ C++, threads +# +# BR2_PACKAGE_AVRDUDE is not set + +# +# bcache-tools needs udev /dev management +# +# BR2_PACKAGE_BFSCRIPTS is not set + +# +# brickd needs udev /dev management, a toolchain w/ threads, wchar +# +# BR2_PACKAGE_BRLTTY is not set + +# +# cc-tool needs a toolchain w/ C++, threads, wchar, gcc >= 4.9 +# +# BR2_PACKAGE_CDRKIT is not set +# BR2_PACKAGE_CRUCIBLE is not set +# BR2_PACKAGE_CRYPTSETUP is not set +# BR2_PACKAGE_CWIID is not set + +# +# dahdi-linux needs a Linux kernel to be built +# + +# +# dahdi-tools needs a toolchain w/ threads and a Linux kernel to be built +# +# BR2_PACKAGE_DBUS is not set + +# +# dbusbroker needs systemd and a toolchain w/ threads +# + +# +# dbus-cxx needs a toolchain w/ C++, threads, gcc >= 7 and dynamic library support +# +# BR2_PACKAGE_DFU_PROGRAMMER is not set +# BR2_PACKAGE_DFU_UTIL is not set +# BR2_PACKAGE_DMRAID is not set + +# +# dt-utils needs udev /dev management +# + +# +# dtbocfg needs a Linux kernel to be built +# +# BR2_PACKAGE_DTV_SCAN_TABLES is not set +# BR2_PACKAGE_DUMP1090 is not set +# BR2_PACKAGE_DVBSNOOP is not set + +# +# edid-decode needs a toolchain w/ C++, gcc >= 4.7 +# + +# +# esp-hosted needs a Linux kernel to be built +# + +# +# eudev needs eudev /dev management +# +# BR2_PACKAGE_EVEMU is not set +# BR2_PACKAGE_EVTEST is not set +BR2_PACKAGE_FLASHROM_ARCH_SUPPORTS=y +# BR2_PACKAGE_FLASHROM is not set +# BR2_PACKAGE_FMTOOLS is not set +# BR2_PACKAGE_FREEIPMI is not set +# BR2_PACKAGE_FWUPD is not set +# BR2_PACKAGE_FWUPD_EFI is not set +# BR2_PACKAGE_FXLOAD is not set +# BR2_PACKAGE_GPM is not set +# BR2_PACKAGE_GPSD is not set + +# +# gptfdisk needs a toolchain w/ C++ +# +# BR2_PACKAGE_GVFS is not set +# BR2_PACKAGE_HDDTEMP is not set +# BR2_PACKAGE_HWDATA is not set +# BR2_PACKAGE_HWLOC is not set +# BR2_PACKAGE_INPUT_EVENT_DAEMON is not set +# BR2_PACKAGE_IOTOOLS is not set +# BR2_PACKAGE_IPMITOOL is not set +# BR2_PACKAGE_IRDA_UTILS is not set +# BR2_PACKAGE_KBD is not set +# BR2_PACKAGE_LCDPROC is not set + +# +# ledmon needs udev and a toolchain w/ threads +# + +# +# libiec61850 needs a toolchain w/ C++, threads, dynamic library +# +# BR2_PACKAGE_LIBMANETTE is not set +# BR2_PACKAGE_LIBUBOOTENV is not set +# BR2_PACKAGE_LIBUIO is not set + +# +# linux-backports needs a Linux kernel to be built +# +# BR2_PACKAGE_LINUX_SERIAL_TEST is not set +# BR2_PACKAGE_LINUXCONSOLETOOLS is not set + +# +# lirc-tools needs a toolchain w/ threads, dynamic library, C++ +# +# BR2_PACKAGE_LM_SENSORS is not set + +# +# lshw needs a toolchain w/ C++, wchar +# +# BR2_PACKAGE_LSSCSI is not set +# BR2_PACKAGE_LSUIO is not set +# BR2_PACKAGE_LUKSMETA is not set +# BR2_PACKAGE_LVM2 is not set + +# +# mali-driver needs a Linux kernel to be built +# +# BR2_PACKAGE_MBPFAN is not set +# BR2_PACKAGE_MDADM is not set +# BR2_PACKAGE_MDEVD is not set + +# +# mdio-tools needs a Linux kernel to be built +# +# BR2_PACKAGE_MEMTESTER is not set +# BR2_PACKAGE_MEMTOOL is not set +# BR2_PACKAGE_MHZ is not set +# BR2_PACKAGE_MINICOM is not set +# BR2_PACKAGE_MXT_APP is not set +# BR2_PACKAGE_NANOCOM is not set +# BR2_PACKAGE_NEARD is not set +# BR2_PACKAGE_NVIDIA_MODPROBE is not set +# BR2_PACKAGE_NVIDIA_PERSISTENCED is not set +# BR2_PACKAGE_NVME is not set + +# +# nxp-mwifiex needs a Linux kernel to be built +# +# BR2_PACKAGE_OFONO is not set + +# +# ola needs a toolchain w/ C++, threads, dynamic library, gcc >= 4.8 +# +# BR2_PACKAGE_OPEN2300 is not set + +# +# openfpgaloader needs a toolchain w/ threads, C++, gcc >= 4.9 +# +# BR2_PACKAGE_OPENIPMI is not set +# BR2_PACKAGE_OPENOCD is not set +# BR2_PACKAGE_PARTED is not set +# BR2_PACKAGE_PCIUTILS is not set +# BR2_PACKAGE_PDBG is not set +# BR2_PACKAGE_PICOCOM is not set + +# +# picotool needs a toolchain w/ C++, threads, gcc >= 4.9 +# + +# +# powertop needs a toolchain w/ C++, threads, wchar +# +# BR2_PACKAGE_PPS_TOOLS is not set + +# +# pulseview needs a toolchain w/ locale, wchar, threads, dynamic library, C++, gcc >= 7, host gcc >= 5 +# +# BR2_PACKAGE_QORIQ_CADENCE_DP_FIRMWARE is not set +# BR2_PACKAGE_RASPI_GPIO is not set +# BR2_PACKAGE_RDMA_CORE is not set +# BR2_PACKAGE_READ_EDID is not set +# BR2_PACKAGE_RNG_TOOLS is not set +# BR2_PACKAGE_RS485CONF is not set +# BR2_PACKAGE_RTC_TOOLS is not set + +# +# rtl8188eu needs a Linux kernel to be built +# + +# +# rtl8189es needs a Linux kernel to be built +# + +# +# rtl8189fs needs a Linux kernel to be built +# + +# +# rtl8192eu needs a Linux kernel to be built +# + +# +# rtl8723bu needs a Linux kernel to be built +# + +# +# rtl8723ds needs a Linux kernel to be built +# +# BR2_PACKAGE_RTL8723DS_BT is not set + +# +# rtl8812au-aircrack-ng needs a Linux kernel to be built +# + +# +# rtl8821au needs a Linux kernel to be built +# + +# +# rtl8821cu needs a Linux kernel to be built +# + +# +# rl8822cs needs a Linux kernel to be built +# +# BR2_PACKAGE_SANE_BACKENDS is not set +# BR2_PACKAGE_SDPARM is not set +# BR2_PACKAGE_SETSERIAL is not set +# BR2_PACKAGE_SG3_UTILS is not set +# BR2_PACKAGE_SIGROK_CLI is not set +# BR2_PACKAGE_SISPMCTL is not set + +# +# smartmontools needs a toolchain w/ C++ +# +# BR2_PACKAGE_SMSTOOLS3 is not set +# BR2_PACKAGE_SPI_TOOLS is not set +# BR2_PACKAGE_SREDIRD is not set +# BR2_PACKAGE_STATSERIAL is not set +# BR2_PACKAGE_STM32FLASH is not set +# BR2_PACKAGE_SYSSTAT is not set +# BR2_PACKAGE_TI_UIM is not set +# BR2_PACKAGE_TI_UTILS is not set + +# +# tio needs lua (but not luajit) +# +# BR2_PACKAGE_TRIGGERHAPPY is not set +# BR2_PACKAGE_UBOOT_BOOTCOUNT is not set +# BR2_PACKAGE_UBOOT_TOOLS is not set +# BR2_PACKAGE_UBUS is not set + +# +# udisks needs udev /dev management +# +# BR2_PACKAGE_UHUBCTL is not set +# BR2_PACKAGE_UMTPRD is not set + +# +# upower needs udev /dev management +# +# BR2_PACKAGE_USB_MODESWITCH is not set +# BR2_PACKAGE_USB_MODESWITCH_DATA is not set + +# +# usbguard needs a toolchain w/ C++, threads, dynamic library, gcc >= 8 +# + +# +# usbip needs udev /dev management +# + +# +# usbmount requires udev to be enabled +# + +# +# usbutils needs udev /dev management and toolchain w/ threads, gcc >= 4.9 +# + +# +# wilc kernel module needs a Linux kernel to be built +# +# BR2_PACKAGE_WIPE is not set +# BR2_PACKAGE_XORRISO is not set + +# +# xr819-xradio driver needs a Linux kernel to be built +# + +# +# Interpreter languages and scripting +# +# BR2_PACKAGE_4TH is not set +# BR2_PACKAGE_CHICKEN is not set +# BR2_PACKAGE_ENSCRIPT is not set +BR2_PACKAGE_HOST_ERLANG_ARCH_SUPPORTS=y +BR2_PACKAGE_ERLANG_ARCH_SUPPORTS=y +# BR2_PACKAGE_ERLANG is not set +# BR2_PACKAGE_EXECLINE is not set +# BR2_PACKAGE_FICL is not set +# BR2_PACKAGE_GUILE is not set +# BR2_PACKAGE_HASERL is not set +# BR2_PACKAGE_JANET is not set +# BR2_PACKAGE_JIMTCL is not set +# BR2_PACKAGE_LUA is not set +BR2_PACKAGE_PROVIDES_HOST_LUAINTERPRETER="host-lua" +# BR2_PACKAGE_MICROPYTHON is not set +# BR2_PACKAGE_MOARVM is not set +BR2_PACKAGE_HOST_MONO_ARCH_SUPPORTS=y +BR2_PACKAGE_PROVIDES_NODEJS="nodejs-src" + +# +# octave needs a toolchain w/ C++ and fortran, gcc >= 4.8 +# +BR2_PACKAGE_HOST_OPENJDK_BIN_ARCH_SUPPORTS=y +# BR2_PACKAGE_PERL is not set +BR2_PACKAGE_PHP_ARCH_SUPPORTS=y +# BR2_PACKAGE_PHP is not set +# BR2_PACKAGE_PYTHON3 is not set +# BR2_PACKAGE_QUICKJS is not set +# BR2_PACKAGE_RUBY is not set +BR2_PACKAGE_SWIPL_ARCH_SUPPORTS=y +# BR2_PACKAGE_SWIPL is not set +# BR2_PACKAGE_TCL is not set + +# +# Libraries +# + +# +# Audio/Sound +# +# BR2_PACKAGE_ALSA_LIB is not set + +# +# alure needs a toolchain w/ C++, gcc >= 4.9, NPTL, wchar +# +# BR2_PACKAGE_AUBIO is not set +# BR2_PACKAGE_BCG729 is not set + +# +# caps needs a toolchain w/ C++, dynamic library +# +BR2_PACKAGE_GTKIOSTREAM_ARCH_SUPPORTS=y + +# +# gtkiostream needs a toolchain w/ C++, threads +# +# BR2_PACKAGE_LIBAO is not set +# BR2_PACKAGE_LIBBROADVOICE is not set +# BR2_PACKAGE_LIBCANBERRA is not set +# BR2_PACKAGE_LIBCDAUDIO is not set +# BR2_PACKAGE_LIBCDDB is not set +# BR2_PACKAGE_LIBCDIO is not set +# BR2_PACKAGE_LIBCDIO_PARANOIA is not set +# BR2_PACKAGE_LIBCODEC2 is not set +# BR2_PACKAGE_LIBCUE is not set +# BR2_PACKAGE_LIBCUEFILE is not set +# BR2_PACKAGE_LIBG7221 is not set +# BR2_PACKAGE_LIBGSM is not set +# BR2_PACKAGE_LIBID3TAG is not set +# BR2_PACKAGE_LIBILBC is not set +# BR2_PACKAGE_LIBLO is not set +# BR2_PACKAGE_LIBMAD is not set + +# +# libmodplug needs a toolchain w/ C++ +# +# BR2_PACKAGE_LIBMPDCLIENT is not set + +# +# libopenmpt needs a toolchain w/ threads, C++, gcc >= 7 +# +# BR2_PACKAGE_LIBREPLAYGAIN is not set +# BR2_PACKAGE_LIBSAMPLERATE is not set + +# +# libsidplay2 needs a toolchain w/ C++ +# +# BR2_PACKAGE_LIBSILK is not set +# BR2_PACKAGE_LIBSNDFILE is not set + +# +# libsoundtouch needs a toolchain w/ C++ +# +# BR2_PACKAGE_LIBSOXR is not set +# BR2_PACKAGE_LIBVORBIS is not set +# BR2_PACKAGE_LILV is not set +# BR2_PACKAGE_LV2 is not set + +# +# mp4v2 needs a toolchain w/ C++ +# +BR2_PACKAGE_OPENAL_ARCH_SUPPORTS=y + +# +# openal needs a toolchain w/ NPTL, C++, gcc >= 4.9 +# + +# +# opencore-amr needs a toolchain w/ C++ +# +# BR2_PACKAGE_OPUS is not set +# BR2_PACKAGE_OPUSFILE is not set +# BR2_PACKAGE_PORTAUDIO is not set +# BR2_PACKAGE_RNNOISE is not set +# BR2_PACKAGE_SBC is not set +# BR2_PACKAGE_SPANDSP is not set +# BR2_PACKAGE_SPEEX is not set +# BR2_PACKAGE_SPEEXDSP is not set +# BR2_PACKAGE_SRATOM is not set + +# +# taglib needs a toolchain w/ C++, wchar +# +# BR2_PACKAGE_TINYALSA is not set +# BR2_PACKAGE_TREMOR is not set +# BR2_PACKAGE_VO_AACENC is not set + +# +# Compression and decompression +# +# BR2_PACKAGE_LIBARCHIVE is not set +# BR2_PACKAGE_LIBDEFLATE is not set +# BR2_PACKAGE_LIBJCAT is not set +# BR2_PACKAGE_LIBMSPACK is not set + +# +# libsquish needs a toolchain w/ C++ +# +# BR2_PACKAGE_LIBZIP is not set +# BR2_PACKAGE_LZ4 is not set +# BR2_PACKAGE_LZO is not set +# BR2_PACKAGE_MINIZIP is not set +# BR2_PACKAGE_MINIZIP_ZLIB is not set + +# +# snappy needs a toolchain w/ C++ +# +# BR2_PACKAGE_SZIP is not set +# BR2_PACKAGE_ZCHUNK is not set +BR2_PACKAGE_ZLIB_NG_ARCH_SUPPORTS=y +# BR2_PACKAGE_ZLIB is not set +BR2_PACKAGE_PROVIDES_HOST_ZLIB="host-libzlib" +# BR2_PACKAGE_ZZIPLIB is not set + +# +# Crypto +# +# BR2_PACKAGE_BEARSSL is not set +BR2_PACKAGE_BOTAN_ARCH_SUPPORTS=y + +# +# botan needs a toolchain w/ threads, C++, gcc >= 11 +# +# BR2_PACKAGE_CA_CERTIFICATES is not set + +# +# cryptodev-linux needs a Linux kernel to be built +# + +# +# cryptopp needs a toolchain w/ C++, dynamic library, wchar +# +# BR2_PACKAGE_GCR is not set +# BR2_PACKAGE_GNUTLS is not set +# BR2_PACKAGE_LIBARGON2 is not set +# BR2_PACKAGE_LIBASSUAN is not set +# BR2_PACKAGE_LIBB2 is not set +# BR2_PACKAGE_LIBGCRYPT is not set +BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBGPG_ERROR is not set +BR2_PACKAGE_LIBGPG_ERROR_SYSCFG="riscv64-unknown-linux-gnu" +# BR2_PACKAGE_LIBGPGME is not set +# BR2_PACKAGE_LIBKCAPI is not set +# BR2_PACKAGE_LIBKSBA is not set +# BR2_PACKAGE_LIBMD is not set +# BR2_PACKAGE_LIBMHASH is not set +# BR2_PACKAGE_LIBNSS is not set + +# +# libolm needs a toolchain w/ C++, gcc >= 4.8 +# +# BR2_PACKAGE_LIBP11 is not set +# BR2_PACKAGE_LIBSCRYPT is not set +# BR2_PACKAGE_LIBSECRET is not set +# BR2_PACKAGE_LIBSHA1 is not set +# BR2_PACKAGE_LIBSODIUM is not set +# BR2_PACKAGE_LIBSSH is not set +# BR2_PACKAGE_LIBSSH2 is not set +# BR2_PACKAGE_LIBTOMCRYPT is not set +# BR2_PACKAGE_LIBUECC is not set +# BR2_PACKAGE_LIBXCRYPT is not set +# BR2_PACKAGE_MBEDTLS is not set +# BR2_PACKAGE_NETTLE is not set +# BR2_PACKAGE_OATH_TOOLKIT is not set +BR2_PACKAGE_LIBRESSL_ARCH_SUPPORTS=y +# BR2_PACKAGE_OPENSSL is not set +BR2_PACKAGE_PROVIDES_HOST_OPENSSL="host-libopenssl" +# BR2_PACKAGE_PKCS11_HELPER is not set +# BR2_PACKAGE_RHASH is not set +# BR2_PACKAGE_TINYDTLS is not set +# BR2_PACKAGE_TPM2_OPENSSL is not set +# BR2_PACKAGE_TPM2_PKCS11 is not set +# BR2_PACKAGE_TPM2_TSS is not set +# BR2_PACKAGE_TROUSERS is not set +# BR2_PACKAGE_USTREAM_SSL is not set +BR2_PACKAGE_WOLFSSL_ASM_SUPPORTS=y +# BR2_PACKAGE_WOLFSSL is not set +# BR2_PACKAGE_WOLFTPM is not set + +# +# Database +# +# BR2_PACKAGE_BERKELEYDB is not set +# BR2_PACKAGE_GDBM is not set +# BR2_PACKAGE_HIREDIS is not set + +# +# kompexsqlite needs a toolchain w/ C++, wchar, threads, dynamic library +# + +# +# leveldb needs a toolchain w/ C++, threads, gcc >= 4.8 +# +# BR2_PACKAGE_LIBDBI is not set +# BR2_PACKAGE_LIBDBI_DRIVERS is not set +# BR2_PACKAGE_LIBGIT2 is not set +# BR2_PACKAGE_LIBMDBX is not set + +# +# libodb needs a toolchain w/ C++, threads +# +# BR2_PACKAGE_LMDB is not set + +# +# mariadb needs a toolchain w/ dynamic library, C++, threads, wchar +# +# BR2_PACKAGE_POSTGRESQL is not set +# BR2_PACKAGE_REDIS is not set + +# +# redis-plus-plus needs a toolchain w/ C++, threads +# +# BR2_PACKAGE_SQLCIPHER is not set +# BR2_PACKAGE_SQLITE is not set + +# +# sqlitecpp needs a toolchain w/ C++11, gcc >= 4.9 +# +# BR2_PACKAGE_UNIXODBC is not set + +# +# Filesystem +# +# BR2_PACKAGE_LIBCONFIG is not set +# BR2_PACKAGE_LIBCONFUSE is not set +# BR2_PACKAGE_LIBFUSE is not set +# BR2_PACKAGE_LIBFUSE3 is not set +# BR2_PACKAGE_LIBLOCKFILE is not set +# BR2_PACKAGE_LIBNFS is not set +# BR2_PACKAGE_LIBSYSFS is not set +# BR2_PACKAGE_LOCKDEV is not set + +# +# physfs needs a toolchain w/ C++, threads +# + +# +# Graphics +# + +# +# assimp needs a toolchain w/ C++, wchar, gcc >= 7 +# +# BR2_PACKAGE_AT_SPI2_CORE is not set + +# +# atkmm needs a toolchain w/ C++, wchar, threads, gcc >= 7, dynamic library +# + +# +# atkmm (2.28.x) needs a toolchain w/ C++, wchar, threads, gcc >= 4.9, dynamic library +# + +# +# bullet needs a toolchain w/ C++, dynamic library, threads, wchar +# +# BR2_PACKAGE_CAIRO is not set + +# +# cairomm needs a toolchain w/ C++, wchar, threads, gcc >= 7 +# + +# +# cairomm (1.14.x) needs a toolchain w/ C++, wchar, threads, gcc >= 4.9 +# + +# +# chipmunk needs an OpenGL backend +# + +# +# exempi needs a toolchain w/ C++, dynamic library, threads, wchar +# + +# +# exiv2 needs a uClibc or glibc toolchain w/ C++, wchar, dynamic library, threads +# +# BR2_PACKAGE_FONTCONFIG is not set +# BR2_PACKAGE_FREETYPE is not set +# BR2_PACKAGE_GD is not set +# BR2_PACKAGE_GDK_PIXBUF is not set +# BR2_PACKAGE_GIFLIB is not set + +# +# granite needs libgtk3 and a toolchain w/ wchar, threads, gcc >= 4.9 +# +# BR2_PACKAGE_GRAPHENE is not set + +# +# graphite2 needs a toolchain w/ C++ +# + +# +# gtkmm3 needs libgtk3 and a toolchain w/ C++, wchar, threads, gcc >= 4.9, dynamic library +# + +# +# harfbuzz needs a toolchain w/ C++, gcc >= 4.9 +# +# BR2_PACKAGE_IJS is not set +# BR2_PACKAGE_IMLIB2 is not set + +# +# intel-gmmlib needs a toolchain w/ dynamic library, C++, threads +# + +# +# irrlicht needs a toolchain w/ C++ +# +# BR2_PACKAGE_JASPER is not set +# BR2_PACKAGE_JBIG2DEC is not set +# BR2_PACKAGE_JPEG is not set + +# +# kms++ needs a toolchain w/ threads, C++, gcc >= 4.8, headers >= 4.11, wchar +# +# BR2_PACKAGE_LCMS2 is not set + +# +# lensfun needs a toolchain w/ C++, threads, wchar +# +# BR2_PACKAGE_LEPTONICA is not set +# BR2_PACKAGE_LIBART is not set +# BR2_PACKAGE_LIBAVIF is not set + +# +# libdecor needs a toolchain w/ wchar, threads, C++, gcc >= 4.9 +# +# BR2_PACKAGE_LIBDMTX is not set +# BR2_PACKAGE_LIBDRM is not set + +# +# libepoxy needs an OpenGL and/or OpenGL EGL backend +# +# BR2_PACKAGE_LIBEXIF is not set + +# +# libfm needs X.org and a toolchain w/ wchar, threads, C++, gcc >= 4.9 +# +# BR2_PACKAGE_LIBFM_EXTRA is not set + +# +# libfreeglut depends on X.org and needs an OpenGL backend +# + +# +# libfreeimage needs a toolchain w/ C++, dynamic library, wchar +# + +# +# libgeotiff needs a toolchain w/ C++, gcc >= 4.7, NPTL, wchar +# + +# +# libglew depends on X.org and needs an OpenGL backend +# + +# +# libglfw depends on X.org or Wayland and an OpenGL or GLES backend +# + +# +# libglu needs an OpenGL backend +# +# BR2_PACKAGE_LIBGTA is not set + +# +# libgtk3 needs a toolchain w/ wchar, threads, C++, gcc >= 4.9 +# + +# +# libgtk3 needs an OpenGL or an OpenGL-EGL backend +# + +# +# libgtk4 needs a toolchain w/ wchar, threads, C++, gcc >= 4.9 +# + +# +# libgtk4 needs an OpenGL(ES) EGL backend +# + +# +# libjxl needs a toolchain with C++, threads, gcc >= 7, dynamic library +# +# BR2_PACKAGE_LIBMEDIAART is not set +# BR2_PACKAGE_LIBMNG is not set +# BR2_PACKAGE_LIBPNG is not set +# BR2_PACKAGE_LIBQRENCODE is not set + +# +# libraw needs a toolchain w/ C++ +# +# BR2_PACKAGE_LIBSVG is not set +# BR2_PACKAGE_LIBSVG_CAIRO is not set +# BR2_PACKAGE_LIBSVGTINY is not set +# BR2_PACKAGE_LIBVA is not set + +# +# libvips needs a toolchain w/ wchar, threads, C++ +# +BR2_PACKAGE_LIBVPL_ARCH_SUPPORTS=y + +# +# libvpl needs a toolchain w/ dynamic library, gcc >= 7, C++, threads +# + +# +# libwpe needs a toolchain w/ C++, dynamic library and an OpenEGL-capable backend +# +# BR2_PACKAGE_MENU_CACHE is not set + +# +# opencv3 needs a toolchain w/ C++, NPTL, wchar, dynamic library +# + +# +# opencv4 needs a toolchain w/ C++, NPTL, wchar, dynamic library, gcc >= 4.8 +# +# BR2_PACKAGE_OPENJPEG is not set + +# +# pango needs a toolchain w/ wchar, threads, C++, gcc >= 4.9 +# + +# +# pangomm needs a toolchain w/ C++, wchar, threads, gcc >= 7 +# + +# +# pangomm (2.46.x) needs a toolchain w/ C++, wchar, threads, gcc >= 4.9 +# +# BR2_PACKAGE_PIXMAN is not set + +# +# poppler needs a toolchain w/ wchar, C++, threads, dynamic library, gcc >= 7 +# +# BR2_PACKAGE_STB is not set +# BR2_PACKAGE_TIFF is not set +# BR2_PACKAGE_WAYLAND is not set +BR2_PACKAGE_WEBKITGTK_ARCH_SUPPORTS=y + +# +# webkitgtk needs libgtk3 or libgtk4 and a toolchain w/ C++, wchar, NPTL, dynamic library, gcc >= 11, host gcc >= 4.9 +# +# BR2_PACKAGE_WEBP is not set + +# +# wlroots needs udev, EGL and OpenGL ES support +# + +# +# woff2 needs a toolchain w/ C++ +# + +# +# wpebackend-fdo needs a toolchain w/ C++, wchar, threads, dynamic library and EGL support +# +BR2_PACKAGE_WPEWEBKIT_ARCH_SUPPORTS=y + +# +# wpewebkit needs a toolchain w/ C++, wchar, NPTL, dynamic library, gcc >= 10, host gcc >= 4.9 +# + +# +# wpewebkit needs an OpenGL ES w/ EGL-capable Wayland backend +# + +# +# zbar needs a toolchain w/ threads, C++ and headers >= 3.0 +# + +# +# zxing-cpp needs a toolchain w/ C++, wchar, dynamic library, threads +# + +# +# Hardware handling +# +# BR2_PACKAGE_ACSCCID is not set +# BR2_PACKAGE_C_PERIPHERY is not set +# BR2_PACKAGE_CCID is not set +# BR2_PACKAGE_DTC is not set +BR2_PACKAGE_GNU_EFI_ARCH_SUPPORTS=y +# BR2_PACKAGE_GNU_EFI is not set +# BR2_PACKAGE_HACKRF is not set + +# +# hidapi needs udev /dev management and a toolchain w/ NPTL, gcc >= 4.9 +# +# BR2_PACKAGE_JITTERENTROPY_LIBRARY is not set + +# +# lcdapi needs a toolchain w/ C++, threads +# + +# +# let-me-create needs a toolchain w/ C++, threads, dynamic library +# +# BR2_PACKAGE_LIBAIO is not set + +# +# libatasmart requires udev to be enabled +# + +# +# libblockdev needs udev /dev management and a toolchain w/ wchar, threads, dynamic library, locale +# + +# +# libcec needs a toolchain w/ C++, wchar, threads, dynamic library, gcc >= 4.7 +# +# BR2_PACKAGE_LIBDISPLAY_INFO is not set +# BR2_PACKAGE_LIBFREEFARE is not set +# BR2_PACKAGE_LIBFTDI is not set +# BR2_PACKAGE_LIBFTDI1 is not set +# BR2_PACKAGE_LIBGPHOTO2 is not set +# BR2_PACKAGE_LIBGPIOD is not set +# BR2_PACKAGE_LIBGPIOD2 is not set + +# +# libgudev needs udev /dev handling and a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBIIO is not set + +# +# libinput needs udev /dev management +# +# BR2_PACKAGE_LIBIQRF is not set +# BR2_PACKAGE_LIBLLCP is not set +# BR2_PACKAGE_LIBMBIM is not set +# BR2_PACKAGE_LIBNFC is not set +# BR2_PACKAGE_LIBNVME is not set +# BR2_PACKAGE_LIBPCIACCESS is not set +# BR2_PACKAGE_LIBPHIDGET is not set + +# +# libpri needs a Linux kernel to be built +# +# BR2_PACKAGE_LIBQMI is not set +# BR2_PACKAGE_LIBQRTR_GLIB is not set +# BR2_PACKAGE_LIBRAW1394 is not set +# BR2_PACKAGE_LIBRTLSDR is not set + +# +# libserial needs a toolchain w/ C++, gcc >= 5, threads, wchar +# +# BR2_PACKAGE_LIBSERIALPORT is not set +# BR2_PACKAGE_LIBSIGROK is not set +# BR2_PACKAGE_LIBSIGROKDECODE is not set +# BR2_PACKAGE_LIBSOC is not set + +# +# libss7 needs a Linux kernel to be built +# +# BR2_PACKAGE_LIBUSB is not set +# BR2_PACKAGE_LIBUSBGX is not set + +# +# libv4l needs a toolchain w/ threads, C++ and headers >= 3.0 +# +# BR2_PACKAGE_LIBXKBCOMMON is not set +# BR2_PACKAGE_MTDEV is not set +# BR2_PACKAGE_NEARDAL is not set +# BR2_PACKAGE_OPENSC is not set +# BR2_PACKAGE_OWFS is not set +# BR2_PACKAGE_PCSC_LITE is not set +# BR2_PACKAGE_PICO_SDK is not set +# BR2_PACKAGE_TSLIB is not set + +# +# uhd needs a toolchain w/ C++, NPTL, wchar, dynamic library, gcc >= 7 +# + +# +# urg needs a toolchain w/ C++ +# + +# +# Javascript +# +# BR2_PACKAGE_BOOTSTRAP is not set +# BR2_PACKAGE_CHARTJS is not set +# BR2_PACKAGE_DATATABLES is not set +# BR2_PACKAGE_DUKTAPE is not set +# BR2_PACKAGE_EXPLORERCANVAS is not set +# BR2_PACKAGE_FLOT is not set +# BR2_PACKAGE_FORGE is not set +# BR2_PACKAGE_JQUERY is not set +# BR2_PACKAGE_JSMIN is not set +# BR2_PACKAGE_JSON_JAVASCRIPT is not set +# BR2_PACKAGE_JSZIP is not set +# BR2_PACKAGE_OPENLAYERS is not set +# BR2_PACKAGE_VIS_NETWORK is not set +# BR2_PACKAGE_VUEJS is not set + +# +# JSON/XML +# + +# +# benejson needs a toolchain w/ C++ +# +# BR2_PACKAGE_CJSON is not set +# BR2_PACKAGE_EXPAT is not set +# BR2_PACKAGE_JANSSON is not set +# BR2_PACKAGE_JOSE is not set +# BR2_PACKAGE_JSMN is not set +# BR2_PACKAGE_JSON_C is not set + +# +# json-for-modern-cpp needs a toolchain w/ C++, gcc >= 4.9 +# +# BR2_PACKAGE_JSON_GLIB is not set + +# +# jsoncpp needs a toolchain w/ C++, gcc >= 4.7 +# +# BR2_PACKAGE_LIBBSON is not set +# BR2_PACKAGE_LIBFASTJSON is not set + +# +# libjson needs a toolchain w/ C++ +# +# BR2_PACKAGE_LIBJWT is not set +# BR2_PACKAGE_LIBROXML is not set +# BR2_PACKAGE_LIBUCL is not set +# BR2_PACKAGE_LIBXML2 is not set +# BR2_PACKAGE_LIBXMLB is not set + +# +# libxml++ needs a toolchain w/ C++, wchar, threads, gcc >= 7 +# +# BR2_PACKAGE_LIBXMLRPC is not set +# BR2_PACKAGE_LIBXSLT is not set +# BR2_PACKAGE_LIBYAML is not set +# BR2_PACKAGE_MXML is not set + +# +# pugixml needs a toolchain w/ C++ +# + +# +# rapidjson needs a toolchain w/ C++ +# +# BR2_PACKAGE_RAPIDXML is not set +# BR2_PACKAGE_RAPTOR is not set +# BR2_PACKAGE_SERD is not set +# BR2_PACKAGE_SORD is not set + +# +# tinyxml needs a toolchain w/ C++ +# + +# +# tinyxml2 needs a toolchain w/ C++ +# + +# +# valijson needs a toolchain w/ C++ +# + +# +# xerces-c++ needs a toolchain w/ C++, dynamic library, wchar +# + +# +# xml-security-c needs a toolchain w/ C++, wchar, dynamic library, threads, gcc >= 4.7 +# +# BR2_PACKAGE_YAJL is not set + +# +# yaml-cpp needs a toolchain w/ C++, gcc >= 4.7 +# + +# +# Logging +# + +# +# glog needs a toolchain w/ C++, threads, gcc >= 6 +# + +# +# hawktracer needs a toolchain w/ C++, gcc >= 4.8 +# +# BR2_PACKAGE_LIBLOG4C_LOCALTIME is not set +# BR2_PACKAGE_LIBLOGGING is not set + +# +# log4cplus needs a toolchain w/ C++, wchar, threads, gcc >= 4.8 +# + +# +# log4cpp needs a toolchain w/ C++, threads +# + +# +# log4cxx needs a toolchain w/ C++, threads, dynamic library, wchar +# + +# +# log4qt needs qt5 +# + +# +# opentracing-cpp needs a toolchain w/ C++, threads, dynamic library, gcc >= 4.8 +# + +# +# spdlog needs a toolchain w/ C++, threads, wchar +# + +# +# ulog needs a toolchain w/ C++, threads +# +# BR2_PACKAGE_ZLOG is not set + +# +# Multimedia +# + +# +# bento4 support needs a toolchain with C++ +# +# BR2_PACKAGE_BITSTREAM is not set +# BR2_PACKAGE_DAV1D is not set + +# +# kvazaar needs a toolchain w/ C++, threads +# +# BR2_PACKAGE_LIBAACS is not set + +# +# libass needs a toolchain w/ C++, gcc >= 4.9 +# +# BR2_PACKAGE_LIBBDPLUS is not set +# BR2_PACKAGE_LIBBLURAY is not set +BR2_PACKAGE_LIBCAMERA_ARCH_SUPPORTS=y + +# +# libcamera needs a toolchain w/ C++, threads, wchar, dynamic library, gcc >= 8 +# + +# +# libcamera-apps needs a toolchain w/ C++, threads, wchar, dynamic library, gcc >= 8, headers >= 5.5 +# + +# +# libde265 needs a toolchain w/ threads, C++ +# +# BR2_PACKAGE_LIBDVBCSA is not set +# BR2_PACKAGE_LIBDVBPSI is not set + +# +# libdvbsi++ needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_LIBDVDCSS is not set +# BR2_PACKAGE_LIBDVDNAV is not set +# BR2_PACKAGE_LIBDVDREAD is not set + +# +# libebml needs a toolchain w/ C++, wchar, gcc >= 4.9 +# +# BR2_PACKAGE_LIBHDHOMERUN is not set + +# +# libheif needs a toolchain w/ C++, gcc >= 4.8 +# + +# +# libmatroska needs a toolchain w/ C++, wchar, gcc >= 4.9 +# +# BR2_PACKAGE_LIBMMS is not set +# BR2_PACKAGE_LIBMPEG2 is not set +# BR2_PACKAGE_LIBOGG is not set +# BR2_PACKAGE_LIBOPENAPTX is not set +# BR2_PACKAGE_LIBOPUSENC is not set +# BR2_PACKAGE_LIBTHEORA is not set +# BR2_PACKAGE_LIBUDFREAD is not set +# BR2_PACKAGE_LIBVPX is not set + +# +# libyuv needs a toolchain w/ C++, dynamic library +# + +# +# live555 needs a toolchain w/ C++ +# + +# +# mediastreamer needs a toolchain w/ threads, C++, dynamic library, gcc >= 5 +# +# BR2_PACKAGE_X264 is not set + +# +# x265 needs a toolchain w/ C++, threads, dynamic library +# + +# +# Networking +# + +# +# agent++ needs a toolchain w/ threads, C++, dynamic library +# + +# +# azmq needs a toolchain w/ C++11, wchar and threads +# + +# +# azure-iot-sdk-c needs a toolchain w/ C++, NPTL and wchar +# + +# +# batman-adv needs a Linux kernel to be built +# + +# +# belle-sip needs a toolchain w/ threads, C++, dynamic library, wchar +# +# BR2_PACKAGE_C_ARES is not set +# BR2_PACKAGE_CNI_PLUGINS is not set + +# +# cpp-httplib needs a toolchain w/ C++, wchar, threads +# + +# +# cppzmq needs a toolchain w/ C++, threads +# + +# +# curlpp needs a toolchain w/ C++, dynamic library +# + +# +# czmq needs a toolchain w/ C++, threads +# +# BR2_PACKAGE_DAQ is not set +# BR2_PACKAGE_DAQ3 is not set +# BR2_PACKAGE_DAVICI is not set +# BR2_PACKAGE_DHT is not set +# BR2_PACKAGE_ENET is not set + +# +# filemq needs a toolchain w/ C++, threads +# +# BR2_PACKAGE_FREERADIUS_CLIENT is not set +# BR2_PACKAGE_GENSIO is not set +# BR2_PACKAGE_GEOIP is not set +# BR2_PACKAGE_GLIB_NETWORKING is not set + +# +# grpc needs a toolchain w/ C++, threads, dynamic library, gcc >= 8 +# +# BR2_PACKAGE_GSSDP is not set +# BR2_PACKAGE_GUPNP is not set +# BR2_PACKAGE_GUPNP_AV is not set +# BR2_PACKAGE_GUPNP_DLNA is not set + +# +# ibrcommon needs a toolchain w/ C++, threads +# + +# +# ibrdtn needs a toolchain w/ C++, threads +# +# BR2_PACKAGE_LIBCGI is not set + +# +# libcgicc needs a toolchain w/ C++ +# +# BR2_PACKAGE_LIBCOAP is not set + +# +# libcpprestsdk needs a toolchain w/ NPTL, C++, wchar, locale +# +# BR2_PACKAGE_LIBCURL is not set +# BR2_PACKAGE_LIBDNET is not set +# BR2_PACKAGE_LIBEXOSIP2 is not set +# BR2_PACKAGE_LIBEST is not set +# BR2_PACKAGE_LIBFCGI is not set +# BR2_PACKAGE_LIBGSASL is not set +# BR2_PACKAGE_LIBHTP is not set +# BR2_PACKAGE_LIBHTTPPARSER is not set + +# +# libhttpserver needs a toolchain w/ C++, threads, gcc >= 7 +# +# BR2_PACKAGE_LIBIDN is not set +# BR2_PACKAGE_LIBIDN2 is not set +# BR2_PACKAGE_LIBISCSI is not set +# BR2_PACKAGE_LIBKRB5 is not set +# BR2_PACKAGE_LIBLDNS is not set +# BR2_PACKAGE_LIBMAXMINDDB is not set +# BR2_PACKAGE_LIBMBUS is not set + +# +# libmemcached needs a toolchain w/ C++, threads +# +# BR2_PACKAGE_LIBMICROHTTPD is not set +# BR2_PACKAGE_LIBMINIUPNPC is not set +# BR2_PACKAGE_LIBMNL is not set +# BR2_PACKAGE_LIBMODBUS is not set + +# +# libmodsecurity needs a toolchain w/ C++, threads, dynamic library +# +# BR2_PACKAGE_LIBNATPMP is not set +# BR2_PACKAGE_LIBNDP is not set +# BR2_PACKAGE_LIBNET is not set +# BR2_PACKAGE_LIBNETCONF2 is not set +# BR2_PACKAGE_LIBNETFILTER_ACCT is not set +# BR2_PACKAGE_LIBNETFILTER_CONNTRACK is not set +# BR2_PACKAGE_LIBNETFILTER_CTHELPER is not set +# BR2_PACKAGE_LIBNETFILTER_CTTIMEOUT is not set +# BR2_PACKAGE_LIBNETFILTER_LOG is not set +# BR2_PACKAGE_LIBNETFILTER_QUEUE is not set +# BR2_PACKAGE_LIBNFNETLINK is not set +# BR2_PACKAGE_LIBNFTNL is not set +# BR2_PACKAGE_LIBNICE is not set +# BR2_PACKAGE_LIBNIDS is not set +# BR2_PACKAGE_LIBNL is not set + +# +# libnpupnp needs a toolchain w/ C++, threads, gcc >= 4.9 +# +# BR2_PACKAGE_LIBOAUTH is not set +# BR2_PACKAGE_LIBOPING is not set +# BR2_PACKAGE_LIBOSIP2 is not set +# BR2_PACKAGE_LIBPAGEKITE is not set +# BR2_PACKAGE_LIBPCAP is not set + +# +# libpjsip needs a toolchain w/ C++, threads +# +# BR2_PACKAGE_LIBPSL is not set +# BR2_PACKAGE_LIBRELP is not set +# BR2_PACKAGE_LIBRSYNC is not set +# BR2_PACKAGE_LIBSHAIRPLAY is not set +# BR2_PACKAGE_LIBSHOUT is not set +# BR2_PACKAGE_LIBSOCKETCAN is not set +# BR2_PACKAGE_LIBSOUP is not set +# BR2_PACKAGE_LIBSOUP3 is not set +# BR2_PACKAGE_LIBSRTP is not set +# BR2_PACKAGE_LIBSTROPHE is not set +# BR2_PACKAGE_LIBTEAM is not set +# BR2_PACKAGE_LIBTELNET is not set +# BR2_PACKAGE_LIBTIRPC is not set + +# +# libtorrent needs a toolchain w/ C++, threads +# + +# +# libtorrent-rasterbar needs a toolchain w/ C++, threads, wchar, gcc >= 4.9 +# +# BR2_PACKAGE_LIBUEV is not set +# BR2_PACKAGE_LIBUHTTPD is not set +# BR2_PACKAGE_LIBUPNP is not set + +# +# libupnpp needs a toolchain w/ C++, threads, gcc >= 4.9 +# +# BR2_PACKAGE_LIBURIPARSER is not set + +# +# libutp support needs a toolchain with C++ +# +# BR2_PACKAGE_LIBUWSC is not set +# BR2_PACKAGE_LIBVNCSERVER is not set +# BR2_PACKAGE_LIBWEBSOCK is not set +# BR2_PACKAGE_LIBWEBSOCKETS is not set +# BR2_PACKAGE_LIBYANG is not set +# BR2_PACKAGE_LIBZENOH_PICO is not set +# BR2_PACKAGE_LKSCTP_TOOLS is not set +# BR2_PACKAGE_MBUFFER is not set +# BR2_PACKAGE_MDNSD is not set +# BR2_PACKAGE_MONGOOSE is not set +# BR2_PACKAGE_NANOMSG is not set +# BR2_PACKAGE_NEON is not set + +# +# netopeer2 needs a toolchain w/ gcc >= 4.8, C++, threads, dynamic library +# +# BR2_PACKAGE_NGHTTP2 is not set + +# +# norm needs a toolchain w/ C++, threads, dynamic library +# +# BR2_PACKAGE_NSS_MYHOSTNAME is not set +# BR2_PACKAGE_NSS_PAM_LDAPD is not set + +# +# oatpp needs a toolchain w/ C++, threads +# + +# +# omniORB needs a toolchain w/ C++, threads +# +# BR2_PACKAGE_OPEN_ISNS is not set +# BR2_PACKAGE_OPEN62541 is not set +# BR2_PACKAGE_OPENLDAP is not set + +# +# openmpi needs a toolchain w/ dynamic library, NPTL, wchar, C++ +# +# BR2_PACKAGE_OPENPGM is not set + +# +# openzwave needs a toolchain w/ C++, dynamic library, NPTL, wchar +# + +# +# ortp needs a toolchain w/ C++, threads +# +# BR2_PACKAGE_PAHO_MQTT_C is not set + +# +# paho-mqtt-cpp needs a toolchain w/ threads, C++ +# + +# +# pistache needs a toolchain w/ C++, gcc >= 7, NPTL, wchar +# +# BR2_PACKAGE_QDECODER is not set + +# +# qpid-proton needs a toolchain w/ C++, dynamic library, threads +# +# BR2_PACKAGE_RABBITMQ_C is not set + +# +# resiprocate needs a toolchain w/ C++, threads, wchar +# + +# +# restclient-cpp needs a toolchain w/ C++, gcc >= 4.8 +# +# BR2_PACKAGE_RTMPDUMP is not set +# BR2_PACKAGE_SIPROXD is not set +# BR2_PACKAGE_SLIRP is not set +# BR2_PACKAGE_SLIRP4NETNS is not set + +# +# snmp++ needs a toolchain w/ threads, C++, dynamic library +# +# BR2_PACKAGE_SOFIA_SIP is not set +# BR2_PACKAGE_SSCEP is not set + +# +# sysrepo needs a toolchain w/ C++, NPTL, dynamic library, gcc >= 4.8 +# + +# +# thrift needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_USBREDIR is not set + +# +# wampcc needs a toolchain w/ C++, NPTL, dynamic library, gcc >= 4.9 +# + +# +# websocketpp needs a toolchain w/ C++ and gcc >= 4.8 +# + +# +# zeromq needs a toolchain w/ C++, threads +# + +# +# zmqpp needs a toolchain w/ C++, threads, gcc >= 4.7 +# + +# +# zyre needs a toolchain w/ C++, threads +# + +# +# Other +# + +# +# ACE needs a glibc toolchain, dynamic library, C++, gcc >= 4.9 +# +# BR2_PACKAGE_APR is not set +# BR2_PACKAGE_APR_UTIL is not set + +# +# armadillo needs a toolchain w/ C++ +# + +# +# atf needs a toolchain w/ C++ +# +# BR2_PACKAGE_AVRO_C is not set +# BR2_PACKAGE_BASU is not set + +# +# bctoolbox needs a toolchain w/ C++, threads +# +# BR2_PACKAGE_BDWGC is not set + +# +# belr needs a toolchain w/ threads, C++ +# + +# +# boost needs a toolchain w/ C++, threads, wchar +# + +# +# c-capnproto needs host and target gcc >= 5 w/ C++14, threads, atomic, ucontext and not gcc bug 64735 +# + +# +# capnproto needs host and target gcc >= 5 w/ C++14, threads, atomic, ucontext and not gcc bug 64735 +# + +# +# catch2 needs a toolchain w/ C++, wchar, threads, gcc >= 5 +# + +# +# cctz needs a toolchain w/ C++, threads, gcc >= 4.8 +# + +# +# cereal needs a toolchain w/ C++, gcc >= 4.7, threads, wchar +# + +# +# clang needs a toolchain w/ wchar, threads, C++, gcc >= 7, dynamic library, host gcc >= 7 +# +# BR2_PACKAGE_CMOCKA is not set + +# +# cppcms needs a toolchain w/ C++, NPTL, wchar, dynamic library +# +# BR2_PACKAGE_CRACKLIB is not set + +# +# dawgdic needs a toolchain w/ C++, gcc >= 4.6 +# +# BR2_PACKAGE_DING_LIBS is not set + +# +# dlib needs a toolchain w/ C++, threads, wchar +# +# BR2_PACKAGE_DOTCONF is not set + +# +# double-conversion needs a toolchain w/ C++ +# + +# +# eigen needs a toolchain w/ C++ +# +# BR2_PACKAGE_ELFUTILS is not set +# BR2_PACKAGE_ELL is not set + +# +# farmhash needs a toolchain w/ C++11 +# +# BR2_PACKAGE_FFT2D is not set +# BR2_PACKAGE_FFTW is not set + +# +# flann needs a toolchain w/ C++, dynamic library, gcc >= 4.7 +# + +# +# flatbuffers needs a toolchain w/ C++, gcc >= 4.7 +# +# BR2_PACKAGE_FLATCC is not set +# BR2_PACKAGE_FP16 is not set +# BR2_PACKAGE_FXDIV is not set +# BR2_PACKAGE_GCONF is not set + +# +# gdal needs a toolchain w/ C++, dynamic library, gcc >= 4.7, NPTL, wchar +# + +# +# gemmlowp needs a toolchain w/ C++11 +# + +# +# gflags needs a toolchain w/ C++ +# + +# +# gli needs a toolchain w/ C++ +# + +# +# glibmm needs a toolchain w/ C++, wchar, threads, gcc >= 7 +# + +# +# glibmm (2.66.x) needs a toolchain w/ C++, wchar, threads, gcc >= 4.9 +# + +# +# glm needs a toolchain w/ C++ +# +# BR2_PACKAGE_GMP is not set +BR2_PACKAGE_GOBJECT_INTROSPECTION_ARCH_SUPPORTS=y + +# +# gobject-introspection needs python3 +# +# BR2_PACKAGE_GSL is not set + +# +# gtest needs a toolchain w/ C++, wchar, threads, gcc >= 5 +# +# BR2_PACKAGE_GUMBO_PARSER is not set + +# +# highway needs a toolchain w/ C++, gcc >= 7 +# +BR2_PACKAGE_JEMALLOC_ARCH_SUPPORTS=y +# BR2_PACKAGE_JEMALLOC is not set +BR2_PACKAGE_LAPACK_ARCH_SUPPORTS=y + +# +# lapack/blas needs a toolchain w/ fortran +# +BR2_PACKAGE_LIBABSEIL_CPP_ARCH_SUPPORTS=y + +# +# libabseil-cpp needs a toolchain w/ gcc >= 8, C++, threads, dynamic library +# +# BR2_PACKAGE_LIBARGTABLE2 is not set +BR2_PACKAGE_LIBATOMIC_OPS_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBATOMIC_OPS is not set +# BR2_PACKAGE_LIBAVL is not set +# BR2_PACKAGE_LIBB64 is not set +# BR2_PACKAGE_LIBBACKTRACE is not set +BR2_PACKAGE_LIBBSD_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBBSD is not set +# BR2_PACKAGE_LIBBYTESIZE is not set +# BR2_PACKAGE_LIBCAP is not set +# BR2_PACKAGE_LIBCAP_NG is not set + +# +# libcgroup needs a toolchain w/ C++, threads +# +# BR2_PACKAGE_LIBCLC is not set +# BR2_PACKAGE_LIBCORRECT is not set + +# +# libcrossguid needs a toolchain w/ C++, gcc >= 4.7 +# +# BR2_PACKAGE_LIBCSV is not set +# BR2_PACKAGE_LIBDAEMON is not set +# BR2_PACKAGE_LIBDEX is not set +# BR2_PACKAGE_LIBDILL is not set +# BR2_PACKAGE_LIBEE is not set +# BR2_PACKAGE_LIBEV is not set +# BR2_PACKAGE_LIBEVDEV is not set +# BR2_PACKAGE_LIBEVENT is not set + +# +# libexecinfo needs a musl or uclibc toolchain w/ dynamic library +# +# BR2_PACKAGE_LIBFFI is not set + +# +# libfutils needs a toolchain w/ C++, threads +# +# BR2_PACKAGE_LIBGEE is not set + +# +# libgeos needs a toolchain w/ C++, wchar, gcc >= 4.9, threads +# +# BR2_PACKAGE_LIBGLIB2 is not set +# BR2_PACKAGE_LIBGLOB is not set + +# +# libical needs a toolchain w/ C++, dynamic library, wchar +# +# BR2_PACKAGE_LIBITE is not set + +# +# libks needs a toolchain w/ C++, NPTL, dynamic library +# + +# +# liblinear needs a toolchain w/ C++ +# + +# +# libloki needs a toolchain w/ C++, threads +# +# BR2_PACKAGE_LIBNPTH is not set +BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT=y +# BR2_PACKAGE_LIBNSPR is not set + +# +# libosmium needs a toolchain w/ C++, wchar, threads, gcc >= 5 +# + +# +# libpeas needs python3 +# +# BR2_PACKAGE_LIBPFM4 is not set + +# +# libplist needs a toolchain w/ C++, threads +# +# BR2_PACKAGE_LIBPTHREAD_STUBS is not set +# BR2_PACKAGE_LIBPTHSEM is not set +# BR2_PACKAGE_LIBPWQUALITY is not set +# BR2_PACKAGE_LIBQB is not set +BR2_PACKAGE_LIBSECCOMP_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBSECCOMP is not set + +# +# libshdata needs a toolchain w/ C++, threads +# + +# +# libsigc++ needs a toolchain w/ C++, gcc >= 7 +# + +# +# libsigc++ (2.x.x) needs a toolchain w/ C++, gcc >= 4.9 +# +BR2_PACKAGE_LIBSIGSEGV_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBSIGSEGV is not set +# BR2_PACKAGE_LIBSOLV is not set + +# +# libspatialindex needs a toolchain w/ C++, gcc >= 4.7 +# +# BR2_PACKAGE_LIBTALLOC is not set +# BR2_PACKAGE_LIBTASN1 is not set +# BR2_PACKAGE_LIBTOMMATH is not set +# BR2_PACKAGE_LIBTPL is not set +# BR2_PACKAGE_LIBUBOX is not set +# BR2_PACKAGE_LIBUCI is not set +BR2_PACKAGE_LIBURCU_ARCH_SUPPORTS=y + +# +# liburcu needs a toolchain w/ threads, C++ +# +# BR2_PACKAGE_LIBURING is not set +# BR2_PACKAGE_LIBUTEMPTER is not set +# BR2_PACKAGE_LIBUV is not set +# BR2_PACKAGE_LIGHTNING is not set +# BR2_PACKAGE_LINUX_PAM is not set +# BR2_PACKAGE_LIQUID_DSP is not set +BR2_PACKAGE_LLVM_ARCH_SUPPORTS=y +BR2_PACKAGE_LLVM_TARGET_ARCH="riscv64" + +# +# llvm needs a toolchain w/ wchar, threads, C++, gcc >= 7, dynamic library, host gcc >= 7 +# + +# +# lttng-libust needs a toolchain w/ dynamic library, wchar, threads, C++ +# +# BR2_PACKAGE_MATIO is not set +# BR2_PACKAGE_MPC is not set +# BR2_PACKAGE_MPDECIMAL is not set +# BR2_PACKAGE_MPFR is not set +# BR2_PACKAGE_MPIR is not set + +# +# msgpack needs a toolchain w/ C++ +# +# BR2_PACKAGE_NEON_2_SSE is not set +BR2_PACKAGE_OPENBLAS_DEFAULT_TARGET="RISCV64_GENERIC" +BR2_PACKAGE_OPENBLAS_ARCH_SUPPORTS=y +# BR2_PACKAGE_OPENBLAS is not set +# BR2_PACKAGE_ORC is not set +# BR2_PACKAGE_P11_KIT is not set +BR2_PACKAGE_POCO_ARCH_SUPPORTS=y + +# +# poco needs a toolchain w/ wchar, NPTL, C++, dynamic library, gcc >= 8 +# +BR2_PACKAGE_HOST_PROTOBUF_ARCH_SUPPORTS=y +BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS=y + +# +# protobuf needs a toolchain w/ C++, threads, dynamic library, gcc >= 8 +# + +# +# protobuf-c needs a toolchain w/ C++, threads, host gcc >= 7 +# + +# +# protozero needs a toolchain w/ C++, gcc >= 4.7 +# +# BR2_PACKAGE_PSIMD is not set +# BR2_PACKAGE_PTHREADPOOL is not set + +# +# qhull needs a toolchain w/ C++, gcc >= 4.4 +# +# BR2_PACKAGE_QLIBC is not set +# BR2_PACKAGE_REPROC is not set + +# +# riemann-c-client needs a toolchain w/ C++, threads, host gcc >= 7 +# + +# +# ruy needs a toolchain w/ C++14, threads +# + +# +# shapelib needs a toolchain w/ C++, threads +# +# BR2_PACKAGE_SKALIBS is not set +# BR2_PACKAGE_SPHINXBASE is not set + +# +# tbb needs a glibc or musl toolchain w/ dynamic library, threads, C++ +# + +# +# tensorflow-lite needs a toolchain w/ gcc >= 8, C++, threads +# +# BR2_PACKAGE_TINYCBOR is not set + +# +# tl-expected needs a toolchain w/ C++, gcc >= 4.8 +# +# BR2_PACKAGE_TLLIST is not set + +# +# uvw needs a toolchain w/ NPTL, dynamic library, C++, gcc >= 7 +# + +# +# volk needs a toolchain w/ C++, NPTL, wchar, dynamic library +# + +# +# xapian needs a toolchain w/ C++ +# + +# +# xnnpack needs a toolchain w/ C++14, threads +# + +# +# Security +# +# BR2_PACKAGE_LIBAPPARMOR is not set +# BR2_PACKAGE_LIBSELINUX is not set +# BR2_PACKAGE_LIBSEPOL is not set +# BR2_PACKAGE_SAFECLIB is not set + +# +# softhsm2 needs a toolchain w/ C++, threads, gcc >= 4.8 and dynamic library support +# + +# +# Text and terminal handling +# +# BR2_PACKAGE_AUGEAS is not set + +# +# cli11 needs a toolchain w/ C++, gcc >= 4.8 +# + +# +# docopt-cpp needs a toolchain w/ C++, gcc >= 4.7 +# + +# +# enchant needs a toolchain w/ C++, threads, wchar +# +# BR2_PACKAGE_FCFT is not set + +# +# fmt needs a toolchain w/ C++, wchar +# +# BR2_PACKAGE_FSTRCMP is not set + +# +# icu needs a toolchain w/ C++, wchar, threads, gcc >= 4.9, host gcc >= 4.9 +# +# BR2_PACKAGE_INIH is not set +# BR2_PACKAGE_LIBCLI is not set +# BR2_PACKAGE_LIBECOLI is not set +# BR2_PACKAGE_LIBEDIT is not set +# BR2_PACKAGE_LIBENCA is not set +# BR2_PACKAGE_LIBESTR is not set +# BR2_PACKAGE_LIBFRIBIDI is not set +# BR2_PACKAGE_LIBUNIBREAK is not set +# BR2_PACKAGE_LIBUNISTRING is not set +# BR2_PACKAGE_LINENOISE is not set +# BR2_PACKAGE_NCURSES is not set +# BR2_PACKAGE_NEWT is not set +# BR2_PACKAGE_ONIGURUMA is not set +# BR2_PACKAGE_PCRE is not set +# BR2_PACKAGE_PCRE2 is not set +# BR2_PACKAGE_POPT is not set + +# +# re2 needs a toolchain w/ C++, threads, dynamic library, gcc >= 8 +# +# BR2_PACKAGE_READLINE is not set +# BR2_PACKAGE_SLANG is not set + +# +# tclap needs a toolchain w/ C++ +# + +# +# termcolor needs a toolchain w/ C++, gcc >= 4.8 +# +# BR2_PACKAGE_UTF8PROC is not set + +# +# taglib needs a toolchain w/ C++ +# + +# +# Mail +# +# BR2_PACKAGE_DOVECOT is not set +# BR2_PACKAGE_EXIM is not set +# BR2_PACKAGE_FETCHMAIL is not set +# BR2_PACKAGE_HEIRLOOM_MAILX is not set +# BR2_PACKAGE_LIBESMTP is not set +# BR2_PACKAGE_MSMTP is not set +# BR2_PACKAGE_MUTT is not set + +# +# Miscellaneous +# +# BR2_PACKAGE_AESPIPE is not set +# BR2_PACKAGE_BC is not set +BR2_PACKAGE_BITCOIN_ARCH_SUPPORTS=y + +# +# bitcoin needs a toolchain w/ C++, threads, wchar, gcc >= 11 +# +# BR2_PACKAGE_COLLECTD is not set +# BR2_PACKAGE_COLLECTL is not set + +# +# domoticz needs lua 5.3 and a toolchain w/ C++, gcc >= 6, NPTL, wchar, dynamic library +# +# BR2_PACKAGE_EMPTY is not set +# BR2_PACKAGE_FFT_EVAL is not set +# BR2_PACKAGE_GITLAB_RUNNER is not set + +# +# gnuradio needs a toolchain w/ C++, NPTL, wchar, dynamic library, gcc >= 8 +# +# BR2_PACKAGE_GOOGLEFONTDIRECTORY is not set + +# +# gqrx needs a toolchain w/ C++, threads, wchar, dynamic library, gcc >= 8 +# + +# +# gqrx needs qt5 +# +# BR2_PACKAGE_GSETTINGS_DESKTOP_SCHEMAS is not set +# BR2_PACKAGE_HAVEGED is not set +# BR2_PACKAGE_LINUX_SYSCALL_SUPPORT is not set +# BR2_PACKAGE_MOBILE_BROADBAND_PROVIDER_INFO is not set +# BR2_PACKAGE_NETDATA is not set + +# +# proj needs a toolchain w/ C++, gcc >= 4.7, NPTL, wchar +# +BR2_PACKAGE_QEMU_ARCH_SUPPORTS_TARGET=y +# BR2_PACKAGE_QEMU is not set + +# +# qpdf needs a toolchain w/ C++, gcc >= 5 +# +# BR2_PACKAGE_RTL_433 is not set +# BR2_PACKAGE_SHARED_MIME_INFO is not set +# BR2_PACKAGE_SNOOZE is not set + +# +# sunwait needs a toolchain w/ C++ +# + +# +# taskd needs a toolchain w/ C++, wchar, dynamic library +# +# BR2_PACKAGE_XUTIL_UTIL_MACROS is not set +BR2_PACKAGE_Z3_ARCH_SUPPORTS=y + +# +# Networking applications +# + +# +# aircrack-ng needs a toolchain w/ dynamic library, threads, C++ +# +# BR2_PACKAGE_ALFRED is not set +# BR2_PACKAGE_AOETOOLS is not set +# BR2_PACKAGE_APACHE is not set +# BR2_PACKAGE_ARGUS is not set +# BR2_PACKAGE_ARP_SCAN is not set +# BR2_PACKAGE_ARPTABLES is not set + +# +# asterisk needs a glibc or uClibc toolchain w/ C++, dynamic library, threads, wchar +# +# BR2_PACKAGE_ATFTP is not set +# BR2_PACKAGE_AVAHI is not set +# BR2_PACKAGE_AXEL is not set +# BR2_PACKAGE_BABELD is not set +# BR2_PACKAGE_BANDWIDTHD is not set +# BR2_PACKAGE_BATCTL is not set + +# +# bcusdk needs a toolchain w/ C++ +# +# BR2_PACKAGE_BIND is not set +# BR2_PACKAGE_BIRD is not set +# BR2_PACKAGE_BLUEZ5_UTILS is not set +# BR2_PACKAGE_BMON is not set +# BR2_PACKAGE_BMX7 is not set + +# +# boinc needs a toolchain w/ dynamic library, C++, threads, gcc >= 4.8 +# +# BR2_PACKAGE_BRCM_PATCHRAM_PLUS is not set +# BR2_PACKAGE_BRIDGE_UTILS is not set +# BR2_PACKAGE_BWM_NG is not set +# BR2_PACKAGE_C_ICAP is not set +# BR2_PACKAGE_CAN_UTILS is not set + +# +# cannelloni needs a toolchain w/ C++, threads, dynamic library, gcc >= 4.8 +# +# BR2_PACKAGE_CASYNC is not set +# BR2_PACKAGE_CFM is not set +# BR2_PACKAGE_CHRONY is not set +# BR2_PACKAGE_CIVETWEB is not set +# BR2_PACKAGE_CLOUDFLARED is not set +# BR2_PACKAGE_CONNMAN is not set + +# +# connman-gtk needs libgtk3 and a glibc or uClibc toolchain w/ wchar, threads, resolver, dynamic library +# +# BR2_PACKAGE_CONNTRACK_TOOLS is not set +# BR2_PACKAGE_CORKSCREW is not set +# BR2_PACKAGE_CRDA is not set + +# +# ctorrent needs a toolchain w/ C++ +# + +# +# cups needs a toolchain w/ C++, threads +# + +# +# cups-filters needs a toolchain w/ wchar, C++, threads and dynamic library, gcc >= 5 +# +# BR2_PACKAGE_DANTE is not set +# BR2_PACKAGE_DARKHTTPD is not set +# BR2_PACKAGE_DEHYDRATED is not set +# BR2_PACKAGE_DHCPCD is not set +# BR2_PACKAGE_DHCPDUMP is not set +# BR2_PACKAGE_DNSMASQ is not set +# BR2_PACKAGE_DRBD_UTILS is not set +# BR2_PACKAGE_DROPBEAR is not set +# BR2_PACKAGE_EASYFRAMES is not set +# BR2_PACKAGE_EBTABLES is not set + +# +# ejabberd needs erlang, toolchain w/ C++ +# +# BR2_PACKAGE_ETHTOOL is not set +# BR2_PACKAGE_FAIFA is not set +# BR2_PACKAGE_FASTD is not set +# BR2_PACKAGE_FCGIWRAP is not set +# BR2_PACKAGE_FIREWALLD is not set +# BR2_PACKAGE_FLANNEL is not set +# BR2_PACKAGE_FPING is not set +# BR2_PACKAGE_FREERADIUS_SERVER is not set + +# +# freeswitch needs a toolchain w/ C++, dynamic library, threads, wchar +# + +# +# frr needs a toolchain w/ threads, dynamic library, C++, host gcc >= 7 +# + +# +# gerbera needs a toolchain w/ C++, dynamic library, threads, wchar, gcc >= 8 +# +# BR2_PACKAGE_GESFTPSERVER is not set + +# +# gloox needs a toolchain w/ C++ +# +# BR2_PACKAGE_GLORYTUN is not set + +# +# gupnp-tools needs libgtk3 +# + +# +# hans needs a toolchain w/ C++ +# +BR2_PACKAGE_HAPROXY_ARCH_SUPPORTS=y +# BR2_PACKAGE_HAPROXY is not set +# BR2_PACKAGE_HOSTAPD is not set +# BR2_PACKAGE_HTPDATE is not set +# BR2_PACKAGE_HTTPING is not set + +# +# i2pd needs a toolchain w/ C++, NPTL, wchar +# +# BR2_PACKAGE_IANA_ASSIGNMENTS is not set + +# +# ibrdtn-tools needs a toolchain w/ C++, threads +# + +# +# ibrdtnd needs a toolchain w/ C++, threads +# +# BR2_PACKAGE_IFMETRIC is not set +# BR2_PACKAGE_IFTOP is not set +BR2_PACKAGE_IFUPDOWN_SCRIPTS=y +# BR2_PACKAGE_IGD2_FOR_LINUX is not set + +# +# igh-ethercat needs a Linux kernel to be built +# +# BR2_PACKAGE_IGMPPROXY is not set +# BR2_PACKAGE_INADYN is not set +# BR2_PACKAGE_IODINE is not set + +# +# iperf needs a toolchain w/ C++ +# +# BR2_PACKAGE_IPERF3 is not set +# BR2_PACKAGE_IPROUTE2 is not set +# BR2_PACKAGE_IPSET is not set +# BR2_PACKAGE_IPTABLES is not set +# BR2_PACKAGE_IPTRAF_NG is not set +# BR2_PACKAGE_IPUTILS is not set +# BR2_PACKAGE_IRSSI is not set +# BR2_PACKAGE_IW is not set +# BR2_PACKAGE_IWD is not set +# BR2_PACKAGE_JANUS_GATEWAY is not set +# BR2_PACKAGE_KEEPALIVED is not set + +# +# kismet needs a toolchain w/ threads, C++, gcc >= 5, host gcc >= 7 +# +# BR2_PACKAGE_KNOCK is not set +# BR2_PACKAGE_KSMBD_TOOLS is not set +# BR2_PACKAGE_LEAFNODE2 is not set +# BR2_PACKAGE_LFT is not set + +# +# lftp requires a toolchain w/ C++, wchar +# +# BR2_PACKAGE_LIGHTTPD is not set + +# +# linknx needs a toolchain w/ C++ +# +# BR2_PACKAGE_LINKS is not set + +# +# linphone needs a toolchain w/ threads, C++, dynamic library, wchar, gcc >= 5 +# +# BR2_PACKAGE_LINUX_ZIGBEE is not set +# BR2_PACKAGE_LINUXPTP is not set +# BR2_PACKAGE_LLDPD is not set +# BR2_PACKAGE_LRZSZ is not set +# BR2_PACKAGE_LYNX is not set +# BR2_PACKAGE_MACCHANGER is not set +# BR2_PACKAGE_MEMCACHED is not set +# BR2_PACKAGE_MII_DIAG is not set +# BR2_PACKAGE_MINI_SNMPD is not set +# BR2_PACKAGE_MINIDLNA is not set +# BR2_PACKAGE_MINISSDPD is not set +# BR2_PACKAGE_MJPG_STREAMER is not set +# BR2_PACKAGE_MODEM_MANAGER is not set +BR2_PACKAGE_MONGREL2_LIBC_SUPPORTS=y + +# +# mongrel2 needs a uClibc or glibc toolchain w/ C++, threads, dynamic library +# + +# +# mosh needs a toolchain w/ C++, threads, dynamic library, wchar, gcc >= 8 +# +# BR2_PACKAGE_MOSQUITTO is not set +# BR2_PACKAGE_MROUTED is not set +# BR2_PACKAGE_MRP is not set +# BR2_PACKAGE_MSTPD is not set +# BR2_PACKAGE_MTR is not set +# BR2_PACKAGE_NBD is not set +# BR2_PACKAGE_NCFTP is not set +# BR2_PACKAGE_NDISC6 is not set +# BR2_PACKAGE_NETATALK is not set +# BR2_PACKAGE_NETCALC is not set + +# +# nethogs needs a toolchain w/ C++ +# +# BR2_PACKAGE_NETPLUG is not set +# BR2_PACKAGE_NETSNMP is not set +# BR2_PACKAGE_NETSTAT_NAT is not set + +# +# NetworkManager needs udev /dev management and a glibc or musl toolchain w/ headers >= 4.20, dynamic library, wchar, threads, gcc >= 4.9 +# +# BR2_PACKAGE_NFACCT is not set +# BR2_PACKAGE_NFTABLES is not set +# BR2_PACKAGE_NGINX is not set +# BR2_PACKAGE_NGIRCD is not set +# BR2_PACKAGE_NGREP is not set + +# +# nload needs a toolchain w/ C++ +# + +# +# nmap-nmap needs a toolchain w/ C++, threads +# +# BR2_PACKAGE_NOIP is not set +# BR2_PACKAGE_NTP is not set +# BR2_PACKAGE_NTPSEC is not set +# BR2_PACKAGE_NUTTCP is not set +# BR2_PACKAGE_ODHCP6C is not set +# BR2_PACKAGE_ODHCPLOC is not set +# BR2_PACKAGE_OLSR is not set +# BR2_PACKAGE_OPEN_ISCSI is not set +# BR2_PACKAGE_OPEN_LLDP is not set +# BR2_PACKAGE_OPEN_PLC_UTILS is not set +# BR2_PACKAGE_OPENCONNECT is not set +# BR2_PACKAGE_OPENNTPD is not set +# BR2_PACKAGE_OPENOBEX is not set +# BR2_PACKAGE_OPENRESOLV is not set +# BR2_PACKAGE_OPENSSH is not set +# BR2_PACKAGE_OPENSWAN is not set +# BR2_PACKAGE_OPENVPN is not set +# BR2_PACKAGE_P910ND is not set +# BR2_PACKAGE_PARPROUTED is not set +# BR2_PACKAGE_PHIDGETWEBSERVICE is not set +# BR2_PACKAGE_PHYTOOL is not set +# BR2_PACKAGE_PIMD is not set +# BR2_PACKAGE_PIXIEWPS is not set +# BR2_PACKAGE_POUND is not set +# BR2_PACKAGE_PPPD is not set +# BR2_PACKAGE_PPTP_LINUX is not set +# BR2_PACKAGE_PRIVOXY is not set +# BR2_PACKAGE_PROFTPD is not set + +# +# prosody needs the lua interpreter, dynamic library +# +# BR2_PACKAGE_PROXYCHAINS_NG is not set +# BR2_PACKAGE_PTPD is not set +# BR2_PACKAGE_PTPD2 is not set +# BR2_PACKAGE_PURE_FTPD is not set +# BR2_PACKAGE_PUTTY is not set +# BR2_PACKAGE_RADVD is not set +# BR2_PACKAGE_REAVER is not set +# BR2_PACKAGE_REDIR is not set +# BR2_PACKAGE_RP_PPPOE is not set +# BR2_PACKAGE_RPCBIND is not set +# BR2_PACKAGE_RSH_REDONE is not set +# BR2_PACKAGE_RSYNC is not set + +# +# rtorrent needs a toolchain w/ C++, threads, wchar, gcc >= 4.9 +# +# BR2_PACKAGE_RTPTOOLS is not set +# BR2_PACKAGE_S6_DNS is not set +# BR2_PACKAGE_S6_NETWORKING is not set +# BR2_PACKAGE_SAMBA4 is not set + +# +# sconeserver needs a toolchain with dynamic library, C++, NPTL +# +# BR2_PACKAGE_SER2NET is not set +# BR2_PACKAGE_SHADOWSOCKS_LIBEV is not set + +# +# shairport-sync needs a toolchain w/ C++, NPTL +# +# BR2_PACKAGE_SHELLINABOX is not set +# BR2_PACKAGE_SMCROUTE is not set +# BR2_PACKAGE_SNGREP is not set +# BR2_PACKAGE_SNORT is not set +# BR2_PACKAGE_SOCAT is not set +# BR2_PACKAGE_SOCKETCAND is not set +# BR2_PACKAGE_SOFTETHER is not set +# BR2_PACKAGE_SPAWN_FCGI is not set +# BR2_PACKAGE_SPICE_PROTOCOL is not set + +# +# squid needs a toolchain w/ C++, threads, gcc >= 8, host gcc >= 8 +# +# BR2_PACKAGE_SSDP_RESPONDER is not set +# BR2_PACKAGE_SSHGUARD is not set +# BR2_PACKAGE_SSHPASS is not set +# BR2_PACKAGE_SSLH is not set +# BR2_PACKAGE_STRONGSWAN is not set +# BR2_PACKAGE_STUNNEL is not set +# BR2_PACKAGE_TAILSCALE is not set +# BR2_PACKAGE_TCPDUMP is not set +# BR2_PACKAGE_TCPING is not set +# BR2_PACKAGE_TCPREPLAY is not set +# BR2_PACKAGE_THTTPD is not set +# BR2_PACKAGE_TINC is not set +# BR2_PACKAGE_TINYPROXY is not set +# BR2_PACKAGE_TINYSSH is not set +# BR2_PACKAGE_TIPIDEE is not set +# BR2_PACKAGE_TOR is not set +# BR2_PACKAGE_TRACEROUTE is not set + +# +# transmission needs a toolchain w/ dynamic library, threads, C++, gcc >= 7 +# +# BR2_PACKAGE_TUNCTL is not set +# BR2_PACKAGE_TVHEADEND is not set +# BR2_PACKAGE_UACME is not set +# BR2_PACKAGE_UDPCAST is not set +# BR2_PACKAGE_UFTP is not set +# BR2_PACKAGE_UHTTPD is not set +# BR2_PACKAGE_ULOGD is not set +# BR2_PACKAGE_UNBOUND is not set +# BR2_PACKAGE_UQMI is not set +# BR2_PACKAGE_UREDIR is not set +# BR2_PACKAGE_USHARE is not set +# BR2_PACKAGE_USSP_PUSH is not set +# BR2_PACKAGE_USTREAMER is not set +# BR2_PACKAGE_VDE2 is not set + +# +# vdr needs a toolchain w/ C++, dynamic library, NPTL, wchar, headers >= 3.9 +# +# BR2_PACKAGE_VNSTAT is not set +# BR2_PACKAGE_VPNC is not set +# BR2_PACKAGE_VSFTPD is not set +# BR2_PACKAGE_VTUN is not set +# BR2_PACKAGE_WAVEMON is not set + +# +# wireguard-linux-compat needs a Linux kernel to be built +# +# BR2_PACKAGE_WIREGUARD_TOOLS is not set +# BR2_PACKAGE_WIRELESS_REGDB is not set +# BR2_PACKAGE_WIRELESS_TOOLS is not set + +# +# wireshark needs a toolchain w/ wchar, threads, dynamic library, C++ +# +# BR2_PACKAGE_WPA_SUPPLICANT is not set +# BR2_PACKAGE_WPAN_TOOLS is not set +# BR2_PACKAGE_XINETD is not set +# BR2_PACKAGE_XL2TP is not set + +# +# xtables-addons needs a Linux kernel to be built +# +# BR2_PACKAGE_ZABBIX is not set + +# +# zeek needs a toolchain w/ C++, wchar, threads, dynamic library, gcc >= 7, host gcc >= 7 +# + +# +# znc needs a toolchain w/ C++, dynamic library, gcc >= 8, threads +# + +# +# Package managers +# + +# +# ------------------------------------------------------- +# + +# +# Please note: +# + +# +# - Buildroot does *not* generate binary packages, +# + +# +# - Buildroot does *not* install any package database. +# + +# +# * +# + +# +# It is up to you to provide those by yourself if you +# + +# +# want to use any of those package managers. +# + +# +# * +# + +# +# See the manual: +# + +# +# http://buildroot.org/manual.html#faq-no-binary-packages +# + +# +# ------------------------------------------------------- +# +# BR2_PACKAGE_OPKG is not set +# BR2_PACKAGE_OPKG_UTILS is not set + +# +# Real-Time +# +# BR2_PACKAGE_XENOMAI is not set + +# +# Security +# + +# +# apparmor needs a toolchain w/ headers >= 3.16, threads, C++ +# +# BR2_PACKAGE_CHECKPOLICY is not set +# BR2_PACKAGE_IMA_EVM_UTILS is not set +# BR2_PACKAGE_LYNIS is not set +# BR2_PACKAGE_OPTEE_CLIENT is not set +# BR2_PACKAGE_PAXTEST is not set +# BR2_PACKAGE_REFPOLICY is not set +# BR2_PACKAGE_RESTORECOND is not set +# BR2_PACKAGE_SELINUX_PYTHON is not set +# BR2_PACKAGE_SEMODULE_UTILS is not set + +# +# setools needs python3 +# +BR2_PACKAGE_URANDOM_SCRIPTS=y + +# +# Shell and utilities +# + +# +# Shells +# +# BR2_PACKAGE_MKSH is not set +# BR2_PACKAGE_ZSH is not set + +# +# Utilities +# +# BR2_PACKAGE_APG is not set +# BR2_PACKAGE_AT is not set +# BR2_PACKAGE_CATATONIT is not set +# BR2_PACKAGE_CCRYPT is not set +# BR2_PACKAGE_DIALOG is not set +# BR2_PACKAGE_DTACH is not set +# BR2_PACKAGE_EASY_RSA is not set +# BR2_PACKAGE_FILE is not set +# BR2_PACKAGE_GNUPG is not set +BR2_PACKAGE_GNUPG2_DEPENDS=y +# BR2_PACKAGE_GNUPG2 is not set +# BR2_PACKAGE_INOTIFY_TOOLS is not set +# BR2_PACKAGE_LOCKFILE_PROGS is not set +# BR2_PACKAGE_LOGROTATE is not set +# BR2_PACKAGE_LOGSURFER is not set +# BR2_PACKAGE_MINISIGN is not set +# BR2_PACKAGE_PDMENU is not set +# BR2_PACKAGE_PINENTRY is not set +# BR2_PACKAGE_QPRINT is not set +# BR2_PACKAGE_RANGER is not set +# BR2_PACKAGE_RLWRAP is not set +# BR2_PACKAGE_RTTY is not set +# BR2_PACKAGE_SCREEN is not set +# BR2_PACKAGE_SEXPECT is not set +# BR2_PACKAGE_SUDO is not set +# BR2_PACKAGE_TINI is not set +# BR2_PACKAGE_TMUX is not set +# BR2_PACKAGE_TTYD is not set +# BR2_PACKAGE_WTFUTIL is not set +# BR2_PACKAGE_XMLSTARLET is not set +# BR2_PACKAGE_XXHASH is not set +# BR2_PACKAGE_YTREE is not set + +# +# System tools +# +# BR2_PACKAGE_ACL is not set +# BR2_PACKAGE_ANDROID_TOOLS is not set +# BR2_PACKAGE_ATOP is not set +# BR2_PACKAGE_ATTR is not set +# BR2_PACKAGE_BALENA_ENGINE is not set +# BR2_PACKAGE_BUBBLEWRAP is not set +# BR2_PACKAGE_CGROUPFS_MOUNT is not set + +# +# circus needs Python 3 and a toolchain w/ C++, threads +# +# BR2_PACKAGE_CONMON is not set +# BR2_PACKAGE_CONTAINERD is not set +# BR2_PACKAGE_CPULIMIT is not set +# BR2_PACKAGE_CPULOAD is not set +# BR2_PACKAGE_CRUN is not set +# BR2_PACKAGE_DAEMON is not set +# BR2_PACKAGE_DC3DD is not set + +# +# ddrescue needs a toolchain w/ C++ +# +# BR2_PACKAGE_DOCKER_CLI is not set +# BR2_PACKAGE_DOCKER_CLI_BUILDX is not set + +# +# docker-compose needs docker-cli and a toolchain w/ threads +# +# BR2_PACKAGE_DOCKER_ENGINE is not set +# BR2_PACKAGE_EARLYOOM is not set +# BR2_PACKAGE_EFIBOOTMGR is not set +BR2_PACKAGE_EFIVAR_ARCH_SUPPORTS=y +# BR2_PACKAGE_EFIVAR is not set +# BR2_PACKAGE_EMBIGGEN_DISK is not set + +# +# emlog needs a Linux kernel to be built +# +# BR2_PACKAGE_FLUENT_BIT is not set +# BR2_PACKAGE_FTOP is not set +# BR2_PACKAGE_GETENT is not set +# BR2_PACKAGE_GKRELLM is not set +# BR2_PACKAGE_HTOP is not set +# BR2_PACKAGE_IBM_SW_TPM2 is not set +BR2_PACKAGE_INITSCRIPTS=y + +# +# iotop depends on python3 +# +# BR2_PACKAGE_IPRUTILS is not set +# BR2_PACKAGE_IRQBALANCE is not set +# BR2_PACKAGE_KEYUTILS is not set +# BR2_PACKAGE_KMOD is not set +# BR2_PACKAGE_KVMTOOL is not set +# BR2_PACKAGE_LIBOSTREE is not set +# BR2_PACKAGE_LXC is not set +# BR2_PACKAGE_MENDER is not set +# BR2_PACKAGE_MENDER_CONNECT is not set +# BR2_PACKAGE_MFOC is not set +# BR2_PACKAGE_MOBY_BUILDKIT is not set +# BR2_PACKAGE_MONIT is not set + +# +# multipath-tools needs udev and a toolchain w/ threads, dynamic library, C++ +# +# BR2_PACKAGE_NCDU is not set +# BR2_PACKAGE_NERDCTL is not set + +# +# netifrc needs openrc as init system +# +# BR2_PACKAGE_NUMACTL is not set + +# +# nut needs a toolchain w/ C++, threads +# + +# +# pamtester depends on linux-pam +# +# BR2_PACKAGE_POLKIT is not set +# BR2_PACKAGE_PROCRANK_LINUX is not set +# BR2_PACKAGE_PWGEN is not set +# BR2_PACKAGE_QBEE_AGENT is not set +# BR2_PACKAGE_QUOTA is not set +# BR2_PACKAGE_QUOTATOOL is not set +# BR2_PACKAGE_RAUC is not set +# BR2_PACKAGE_RAUC_HAWKBIT_UPDATER is not set +# BR2_PACKAGE_RUNC is not set +# BR2_PACKAGE_S6 is not set +# BR2_PACKAGE_S6_LINUX_INIT is not set +# BR2_PACKAGE_S6_LINUX_UTILS is not set +# BR2_PACKAGE_S6_PORTABLE_UTILS is not set +# BR2_PACKAGE_S6_RC is not set +# BR2_PACKAGE_SCRUB is not set +# BR2_PACKAGE_SCRYPT is not set + +# +# sdbus-c++ needs systemd and a toolchain w/ C++, gcc >= 8 +# + +# +# sdbusplus needs systemd and a toolchain w/ C++, gcc >= 7 +# +# BR2_PACKAGE_SEATD is not set +# BR2_PACKAGE_SHADOW is not set +# BR2_PACKAGE_SMACK is not set + +# +# supervisor needs a python interpreter +# +# BR2_PACKAGE_SWUPDATE is not set +BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS=y +# BR2_PACKAGE_TPM_TOOLS is not set +# BR2_PACKAGE_TPM2_ABRMD is not set +# BR2_PACKAGE_TPM2_TOOLS is not set +# BR2_PACKAGE_TPM2_TOTP is not set +# BR2_PACKAGE_UNSCD is not set +# BR2_PACKAGE_UTIL_LINUX is not set +# BR2_PACKAGE_WATCHDOG is not set +# BR2_PACKAGE_WATCHDOGD is not set +# BR2_PACKAGE_XDG_DBUS_PROXY is not set +BR2_PACKAGE_XVISOR_ARCH_SUPPORTS=y +# BR2_PACKAGE_XVISOR is not set + +# +# Text editors and viewers +# +# BR2_PACKAGE_ED is not set +# BR2_PACKAGE_JOE is not set +# BR2_PACKAGE_MC is not set +# BR2_PACKAGE_MG is not set +# BR2_PACKAGE_MOST is not set +# BR2_PACKAGE_NANO is not set +# BR2_PACKAGE_UEMACS is not set + +# +# Filesystem images +# +# BR2_TARGET_ROOTFS_AXFS is not set +# BR2_TARGET_ROOTFS_BTRFS is not set +# BR2_TARGET_ROOTFS_CLOOP is not set +BR2_TARGET_ROOTFS_CPIO=y +BR2_TARGET_ROOTFS_CPIO_FULL=y +# BR2_TARGET_ROOTFS_CPIO_DRACUT is not set +# BR2_TARGET_ROOTFS_CPIO_NONE is not set +BR2_TARGET_ROOTFS_CPIO_GZIP=y +# BR2_TARGET_ROOTFS_CPIO_BZIP2 is not set +# BR2_TARGET_ROOTFS_CPIO_LZ4 is not set +# BR2_TARGET_ROOTFS_CPIO_LZMA is not set +# BR2_TARGET_ROOTFS_CPIO_LZO is not set +# BR2_TARGET_ROOTFS_CPIO_XZ is not set +# BR2_TARGET_ROOTFS_CPIO_ZSTD is not set +# BR2_TARGET_ROOTFS_CPIO_UIMAGE is not set +# BR2_TARGET_ROOTFS_CRAMFS is not set +# BR2_TARGET_ROOTFS_EROFS is not set +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_2=y +BR2_TARGET_ROOTFS_EXT2_2r1=y +# BR2_TARGET_ROOTFS_EXT2_3 is not set +# BR2_TARGET_ROOTFS_EXT2_4 is not set +BR2_TARGET_ROOTFS_EXT2_GEN=2 +BR2_TARGET_ROOTFS_EXT2_LABEL="rootfs" +BR2_TARGET_ROOTFS_EXT2_SIZE="60M" +BR2_TARGET_ROOTFS_EXT2_INODES=0 +BR2_TARGET_ROOTFS_EXT2_INODE_SIZE=256 +BR2_TARGET_ROOTFS_EXT2_RESBLKS=5 +BR2_TARGET_ROOTFS_EXT2_MKFS_OPTIONS="-O ^64bit" +BR2_TARGET_ROOTFS_EXT2_NONE=y +# BR2_TARGET_ROOTFS_EXT2_GZIP is not set +# BR2_TARGET_ROOTFS_EXT2_BZIP2 is not set +# BR2_TARGET_ROOTFS_EXT2_LZ4 is not set +# BR2_TARGET_ROOTFS_EXT2_LZMA is not set +# BR2_TARGET_ROOTFS_EXT2_LZO is not set +# BR2_TARGET_ROOTFS_EXT2_XZ is not set +# BR2_TARGET_ROOTFS_EXT2_ZSTD is not set +# BR2_TARGET_ROOTFS_F2FS is not set + +# +# initramfs needs a Linux kernel to be built +# +# BR2_TARGET_ROOTFS_JFFS2 is not set +# BR2_TARGET_ROOTFS_OCI is not set +# BR2_TARGET_ROOTFS_SQUASHFS is not set +BR2_TARGET_ROOTFS_TAR=y +BR2_TARGET_ROOTFS_TAR_NONE=y +# BR2_TARGET_ROOTFS_TAR_GZIP is not set +# BR2_TARGET_ROOTFS_TAR_BZIP2 is not set +# BR2_TARGET_ROOTFS_TAR_LZ4 is not set +# BR2_TARGET_ROOTFS_TAR_LZMA is not set +# BR2_TARGET_ROOTFS_TAR_LZO is not set +# BR2_TARGET_ROOTFS_TAR_XZ is not set +# BR2_TARGET_ROOTFS_TAR_ZSTD is not set +BR2_TARGET_ROOTFS_TAR_OPTIONS="" +# BR2_TARGET_ROOTFS_UBI is not set +# BR2_TARGET_ROOTFS_UBIFS is not set +# BR2_TARGET_ROOTFS_YAFFS2 is not set + +# +# Bootloaders +# +# BR2_TARGET_BAREBOX is not set +BR2_TARGET_EDK2_ARCH_SUPPORTS=y +# BR2_TARGET_EDK2 is not set +BR2_TARGET_GRUB2_ARCH_SUPPORTS=y +# BR2_TARGET_GRUB2 is not set +# BR2_TARGET_OPTEE_OS is not set +# BR2_TARGET_OPENSBI is not set +# BR2_TARGET_UBOOT is not set + +# +# xilinx-embeddedsw needs a bare metal toolchain for tuple microblazeel-xilinx-elf +# + +# +# Host utilities +# +# BR2_PACKAGE_HOST_ABOOTIMG is not set +# BR2_PACKAGE_HOST_AESPIPE is not set +# BR2_PACKAGE_HOST_AGENT_PROXY is not set +# BR2_PACKAGE_HOST_AMLOGIC_BOOT_FIP is not set +# BR2_PACKAGE_HOST_ANDES_SPI_BURN is not set +# BR2_PACKAGE_HOST_ANDROID_TOOLS is not set +BR2_PACKAGE_HOST_ARM_GNU_TOOLCHAIN_SUPPORTS=y +# BR2_PACKAGE_HOST_ASN1C is not set +# BR2_PACKAGE_HOST_BABELTRACE2 is not set +# BR2_PACKAGE_HOST_BMAP_TOOLS is not set +# BR2_PACKAGE_HOST_BMAP_WRITER is not set +# BR2_PACKAGE_HOST_BOOTGEN is not set +# BR2_PACKAGE_HOST_BTRFS_PROGS is not set +# BR2_PACKAGE_HOST_CHECKPOLICY is not set +# BR2_PACKAGE_HOST_CHECKSEC is not set +# BR2_PACKAGE_HOST_CMAKE is not set +BR2_HOST_CMAKE_AT_LEAST="3.18" +# BR2_PACKAGE_HOST_COMPOSER is not set +# BR2_PACKAGE_HOST_CRAMFS is not set +# BR2_PACKAGE_HOST_CRUDINI is not set +# BR2_PACKAGE_HOST_CRYPTSETUP is not set +# BR2_PACKAGE_HOST_DBUS_PYTHON is not set +# BR2_PACKAGE_HOST_DELVE is not set +# BR2_PACKAGE_HOST_DEPOT_TOOLS is not set +# BR2_PACKAGE_HOST_DFU_UTIL is not set +# BR2_PACKAGE_HOST_DOS2UNIX is not set +# BR2_PACKAGE_HOST_DOSFSTOOLS is not set +# BR2_PACKAGE_HOST_DOXYGEN is not set +# BR2_PACKAGE_HOST_DTC is not set +BR2_PACKAGE_HOST_E2FSPROGS=y +# BR2_PACKAGE_HOST_E2TOOLS is not set +# BR2_PACKAGE_HOST_ENVIRONMENT_SETUP is not set +# BR2_PACKAGE_HOST_EROFS_UTILS is not set +# BR2_PACKAGE_HOST_EXFATPROGS is not set +# BR2_PACKAGE_HOST_F2FS_TOOLS is not set +# BR2_PACKAGE_HOST_FAKETIME is not set +# BR2_PACKAGE_HOST_FATCAT is not set +# BR2_PACKAGE_HOST_FIRMWARE_UTILS is not set +BR2_PACKAGE_HOST_FLUTTER_SDK_BIN_ARCH_SUPPORTS=y +# BR2_PACKAGE_HOST_FLUTTER_SDK_BIN is not set +# BR2_PACKAGE_HOST_FWUP is not set +# BR2_PACKAGE_HOST_GENEXT2FS is not set +# BR2_PACKAGE_HOST_GENIMAGE is not set +# BR2_PACKAGE_HOST_GENPART is not set +# BR2_PACKAGE_HOST_GNUPG is not set +# BR2_PACKAGE_HOST_GNUPG2 is not set +BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS=y +BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS=y +BR2_PACKAGE_HOST_GO_HOST_ARCH_SUPPORTS=y +BR2_PACKAGE_HOST_GO_HOST_CGO_LINKING_SUPPORTS=y +# BR2_PACKAGE_HOST_GO is not set +BR2_PACKAGE_PROVIDES_HOST_GO="host-go-bin" +BR2_PACKAGE_HOST_GO_BIN_HOST_ARCH="amd64" +BR2_PACKAGE_HOST_GO_BIN_HOST_ARCH_SUPPORTS=y +BR2_PACKAGE_HOST_GO_BOOTSTRAP_STAGE1_ARCH_SUPPORTS=y +BR2_PACKAGE_HOST_GO_BOOTSTRAP_STAGE2_ARCH_SUPPORTS=y +BR2_PACKAGE_HOST_GO_BOOTSTRAP_STAGE3_ARCH_SUPPORTS=y +BR2_PACKAGE_HOST_GOOGLE_BREAKPAD_ARCH_SUPPORTS=y +# BR2_PACKAGE_HOST_GPTFDISK is not set +# BR2_PACKAGE_HOST_IMAGEMAGICK is not set +# BR2_PACKAGE_HOST_IMX_MKIMAGE is not set +# BR2_PACKAGE_HOST_JH71XX_TOOLS is not set +# BR2_PACKAGE_HOST_JQ is not set +# BR2_PACKAGE_HOST_JSMIN is not set +BR2_PACKAGE_HOST_KMOD=y +# BR2_PACKAGE_HOST_KMOD_GZ is not set +# BR2_PACKAGE_HOST_KMOD_ZSTD is not set +# BR2_PACKAGE_HOST_KMOD_XZ is not set +# BR2_PACKAGE_HOST_LIBP11 is not set +# BR2_PACKAGE_HOST_LLD is not set +# BR2_PACKAGE_HOST_LPC3250LOADER is not set +# BR2_PACKAGE_HOST_LTTNG_BABELTRACE is not set +# BR2_PACKAGE_HOST_LZMA_ALONE is not set +# BR2_PACKAGE_HOST_MENDER_ARTIFACT is not set +# BR2_PACKAGE_HOST_MESON_TOOLS is not set +# BR2_PACKAGE_HOST_MICROCHIP_HSS_PAYLOAD_GENERATOR is not set +# BR2_PACKAGE_HOST_MINISIGN is not set +# BR2_PACKAGE_HOST_MKPASSWD is not set +# BR2_PACKAGE_HOST_MOBY_BUILDKIT is not set +# BR2_PACKAGE_HOST_MOSQUITTO is not set +# BR2_PACKAGE_HOST_MTD is not set +# BR2_PACKAGE_HOST_MTOOLS is not set +BR2_PACKAGE_HOST_NODEJS_BIN_ARCH_SUPPORTS=y +# BR2_PACKAGE_HOST_NODEJS is not set +BR2_PACKAGE_PROVIDES_HOST_NODEJS="host-nodejs-bin" +# BR2_PACKAGE_HOST_ODB is not set +# BR2_PACKAGE_HOST_OPENOCD is not set +# BR2_PACKAGE_HOST_OPKG_UTILS is not set +# BR2_PACKAGE_HOST_PAHOLE is not set +# BR2_PACKAGE_HOST_PARTED is not set +BR2_PACKAGE_HOST_PATCHELF=y +# BR2_PACKAGE_HOST_PIGZ is not set +# BR2_PACKAGE_HOST_PKGCONF is not set +# BR2_PACKAGE_HOST_PWGEN is not set +# BR2_PACKAGE_HOST_PYTHON_CYTHON is not set +# BR2_PACKAGE_HOST_PYTHON_GREENLET is not set +# BR2_PACKAGE_HOST_PYTHON_INIPARSE is not set +# BR2_PACKAGE_HOST_PYTHON_LXML is not set +# BR2_PACKAGE_HOST_PYTHON_PYYAML is not set +# BR2_PACKAGE_HOST_PYTHON_SIX is not set +# BR2_PACKAGE_HOST_PYTHON_USWID is not set +# BR2_PACKAGE_HOST_PYTHON_XLRD is not set +# BR2_PACKAGE_HOST_PYTHON3 is not set +BR2_PACKAGE_HOST_QEMU_ARCH_SUPPORTS=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_ARCH_SUPPORTS=y +BR2_PACKAGE_HOST_QEMU_USER_ARCH_SUPPORTS=y +BR2_PACKAGE_HOST_QEMU=y + +# +# Emulators selection +# +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y +# BR2_PACKAGE_HOST_QEMU_LINUX_USER_MODE is not set +# BR2_PACKAGE_HOST_QEMU_VDE2 is not set +# BR2_PACKAGE_HOST_QEMU_VIRTFS is not set +# BR2_PACKAGE_HOST_QEMU_USB is not set +# BR2_PACKAGE_HOST_QORIQ_RCW is not set +# BR2_PACKAGE_HOST_RAUC is not set +# BR2_PACKAGE_HOST_RISCV_ISA_SIM is not set +# BR2_PACKAGE_HOST_RUNC is not set +BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS=y +BR2_PACKAGE_HOST_RUSTC_ARCH="riscv64gc" +# BR2_PACKAGE_HOST_RUSTC is not set +BR2_PACKAGE_PROVIDES_HOST_RUSTC="host-rust-bin" +# BR2_PACKAGE_HOST_SAM_BA is not set +# BR2_PACKAGE_HOST_SDBUS_CPP is not set +# BR2_PACKAGE_HOST_SDBUSPLUS is not set +# BR2_PACKAGE_HOST_SENTRY_CLI is not set +# BR2_PACKAGE_HOST_SKOPEO is not set +# BR2_PACKAGE_HOST_SLOCI_IMAGE is not set +# BR2_PACKAGE_HOST_SQUASHFS is not set +# BR2_PACKAGE_HOST_STARFIVE_SPLTOOL is not set +# BR2_PACKAGE_HOST_SWIG is not set +# BR2_PACKAGE_HOST_SWTPM is not set +# BR2_PACKAGE_HOST_SWUGENERATOR is not set +# BR2_PACKAGE_HOST_TIPIDEE is not set +# BR2_PACKAGE_HOST_UBOOT_TOOLS is not set +BR2_PACKAGE_HOST_UTIL_LINUX=y +# BR2_PACKAGE_HOST_UTP_COM is not set +# BR2_PACKAGE_HOST_UUU is not set +# BR2_PACKAGE_HOST_VBOOT_UTILS is not set +# BR2_PACKAGE_HOST_XORRISO is not set +# BR2_PACKAGE_HOST_ZIP is not set +# BR2_PACKAGE_HOST_ZSTD is not set + +# +# Legacy config options +# + +# +# Legacy options removed in 2025.02.4 +# +# BR2_PACKAGE_LIBEBUR128 is not set + +# +# Legacy options removed in 2025.02 +# +# BR2_PACKAGE_SQLITE_ENABLE_JSON1 is not set +# BR2_PACKAGE_ANGULARJS is not set +# BR2_PACKAGE_ANGULAR_WEBSOCKET is not set +# BR2_PACKAGE_LATENCYTOP is not set +# BR2_PACKAGE_OBSIDIAN_CURSORS is not set +# BR2_PACKAGE_W_SCAN is not set +# BR2_PACKAGE_GENROMFS is not set +# BR2_TARGET_ROOTFS_ROMFS is not set +# BR2_BINUTILS_VERSION_2_41_X is not set +# BR2_TARGET_ROOTFS_EXT2_2r0 is not set +# BR2_GDB_VERSION_13 is not set +# BR2_nios2 is not set +# BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_NIOS2_GLIBC_BLEEDING_EDGE is not set +# BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_NIOS2_GLIBC_STABLE is not set +# BR2_PACKAGE_DIRECTFB is not set +# BR2_PACKAGE_GST_OMX is not set +# BR2_PACKAGE_MIMIC is not set +# BR2_PACKAGE_SDL2_DIRECTFB is not set +# BR2_PACKAGE_SDL_DIRECTFB is not set +# BR2_PACKAGE_QT5BASE_DIRECTFB is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DIRECTFB is not set +# BR2_PACKAGE_LITE is not set +# BR2_PACKAGE_LINUX_FUSION is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES is not set +# BR2_PACKAGE_HIAWATHA is not set +# BR2_PACKAGE_MONGODB is not set +# BR2_PACKAGE_PYTHON_M2CRYPTO is not set +# BR2_KERNEL_HEADERS_4_19 is not set +# BR2_KERNEL_HEADERS_6_11 is not set +# BR2_PACKAGE_GIBLIB is not set +# BR2_PACKAGE_FCONFIG is not set +# BR2_PACKAGE_LIBHID is not set +# BR2_PACKAGE_QUAGGA is not set +# BR2_PACKAGE_RAMSMP is not set + +# +# Legacy options removed in 2024.11 +# +# BR2_PACKAGE_BSDIFF is not set +# BR2_PACKAGE_PROCPS_NS_ORIGINAL_TOP is not set +# BR2_PACKAGE_QEMU_TARGET_NIOS2 is not set +# BR2_PACKAGE_POPPERJS is not set +# BR2_KERNEL_HEADERS_6_10 is not set +BR2_PACKAGE_IPMITOOL_PEN_REG_URI="" +# BR2_PACKAGE_ERLANG_P1_YAML is not set +# BR2_PACKAGE_ERLANG_P1_XMPP is not set +# BR2_PACKAGE_ERLANG_P1_XML is not set +# BR2_PACKAGE_ERLANG_P1_STUN is not set +# BR2_PACKAGE_FBV_GIF is not set +# BR2_BINUTILS_VERSION_2_40_X is not set + +# +# Legacy options removed in 2024.08 +# +# BR2_PACKAGE_MIDORI is not set +# BR2_PACKAGE_FROTZ is not set +# BR2_PACKAGE_FAN_CTRL is not set +# BR2_PACKAGE_FLUTTER_DYNAMIC_LAYOUTS_EXAMPLE is not set +# BR2_KERNEL_HEADERS_6_9 is not set +# BR2_x86_knightslanding is not set +# BR2_x86_knightsmill is not set +# BR2_PACKAGE_DVB_APPS is not set +# BR2_PACKAGE_GAMIN is not set +# BR2_PACKAGE_CAIRO_SVG is not set +# BR2_PACKAGE_CAIRO_SCRIPT is not set +# BR2_PACKAGE_CAIRO_PS is not set +# BR2_PACKAGE_CAIRO_PDF is not set +# BR2_PACKAGE_CAIRO_XML is not set +# BR2_GDB_VERSION_12 is not set +# BR2_TARGET_BEAGLEV_DDRINIT is not set +# BR2_TARGET_BEAGLEV_SECONDBOOT is not set +# BR2_PACKAGE_ONEVPL_INTEL_GPU is not set +# BR2_PACKAGE_CGIC is not set +# BR2_PACKAGE_BEECRYPT is not set +# BR2_PACKAGE_VERSAL_FIRMWARE is not set +# BR2_KERNEL_HEADERS_6_8 is not set +# BR2_TARGET_AT91BOOTSTRAP is not set +# BR2_TARGET_AT91DATAFLASHBOOT is not set +# BR2_PACKAGE_ON2_8170_MODULES is not set +# BR2_PACKAGE_ON2_8170_LIBS is not set +# BR2_GCC_VERSION_11_X is not set +# BR2_BINFMT_FLAT_SHARED is not set +# BR2_PACKAGE_OMXPLAYER is not set +# BR2_KERNEL_HEADERS_6_7 is not set +# BR2_TARGET_TI_K3_IMAGE_GEN is not set +# BR2_TARGET_UBOOT_NEEDS_TI_K3_DM is not set +# BR2_PACKAGE_FLUTTER_GALLERY is not set +# BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS is not set +# BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS is not set +# BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64 is not set +# BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM is not set +# BR2_BINUTILS_VERSION_2_39_X is not set + +# +# Legacy options removed in 2024.02 +# +# BR2_PACKAGE_MYSQL is not set +# BR2_PACKAGE_ORACLE_MYSQL is not set +# BR2_PACKAGE_STRONGSWAN_SCEP is not set +# BR2_PACKAGE_SHADOW_UTMPX is not set +# BR2_PACKAGE_TINYMEMBENCH is not set +# BR2_PACKAGE_DAVINCI_BOOTCOUNT is not set +# BR2_PACKAGE_PYTHON_CROSSBAR is not set +# BR2_PACKAGE_PYTHON_PYGAME is not set +# BR2_KERNEL_HEADERS_4_14 is not set +# BR2_GDB_VERSION_11 is not set +# BR2_PACKAGE_LIBMPD is not set +# BR2_PACKAGE_GMPC is not set +# BR2_PACKAGE_FLICKCURL is not set +# BR2_PACKAGE_ONEVPL is not set +# BR2_KERNEL_HEADERS_6_5 is not set +BR2_PACKAGE_WATCHDOGD_GENERIC_POLL=0 +BR2_PACKAGE_WATCHDOGD_LOADAVG_POLL=0 +BR2_PACKAGE_WATCHDOGD_FILENR_POLL=0 +BR2_PACKAGE_WATCHDOGD_MEMINFO_POLL=0 + +# +# Legacy options removed in 2023.11 +# +# BR2_PACKAGE_PYTHON_PYXB is not set +# BR2_PACKAGE_OPENJDK_VERSION_11 is not set +# BR2_KERNEL_HEADERS_6_4 is not set +# BR2_PACKAGE_GOOGLE_MATERIAL_DESIGN_ICONS is not set +# BR2_GDB_VERSION_10 is not set + +# +# Legacy options removed in 2023.08 +# +# BR2_TARGET_LPC32XXCDL is not set +# BR2_BINUTILS_VERSION_2_38_X is not set +# BR2_GCC_VERSION_10_X is not set +# BR2_KERNEL_HEADERS_6_3 is not set +# BR2_PACKAGE_TOVID is not set +# BR2_PACKAGE_LIBASPLIB is not set +# BR2_PACKAGE_OCF_LINUX is not set +# BR2_BINUTILS_VERSION_2_37_X is not set + +# +# Legacy options removed in 2023.05 +# +# BR2_KERNEL_HEADERS_6_2 is not set +# BR2_PACKAGE_ATK is not set +# BR2_PACKAGE_AT_SPI2_ATK is not set +# BR2_PACKAGE_OPTEE_BENCHMARK is not set +# BR2_PACAKGE_OPENFPGALOADER_CMSIS is not set + +# +# Legacy options removed in 2023.02 +# +# BR2_PACKAGE_PUGIXML_HEADER_ONLY is not set +# BR2_PACKAGE_UCCP420WLAN is not set +# BR2_PACKAGE_IMX_GPU_G2D_EXAMPLES is not set +# BR2_KERNEL_HEADERS_6_0 is not set +# BR2_KERNEL_HEADERS_4_9 is not set +# BR2_PACKAGE_DOCKER_PROXY is not set +# BR2_PACKAGE_PYTHON_BUNCH is not set +# BR2_TARGET_GUMMIBOOT is not set +# BR2_PACKAGE_IPUTILS_NINFOD is not set +# BR2_PACKAGE_IPUTILS_RARPD is not set +# BR2_PACKAGE_IPUTILS_RDISC is not set +# BR2_PACKAGE_IPUTILS_RDISC_SERVER is not set +# BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_XINGMUX is not set +# BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOSCALE is not set +# BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOCONVERT is not set +# BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_X11 is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_IMX_VIV is not set +BR2_PACKAGE_QEMU_CUSTOM_TARGETS="" +# BR2_PACKAGE_XDRIVER_XF86_INPUT_KEYBOARD is not set +# BR2_TARGET_SUN20I_D1_SPL is not set +# BR2_PACKAGE_PYTHON_M2R is not set +# BR2_PACKAGE_MESA3D_XVMC is not set +# BR2_KERNEL_HEADERS_5_19 is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_TGA is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_GLINT is not set +# BR2_PACKAGE_USBREDIR_SERVER is not set + +# +# Legacy options removed in 2022.11 +# +# BR2_BINUTILS_VERSION_2_36_X is not set +# BR2_PACKAGE_RABBITMQ_SERVER is not set +# BR2_PACKAGE_LIBOPENSSL_ENABLE_RC5 is not set +# BR2_PACKAGE_LIBDCADEC is not set +# BR2_KERNEL_HEADERS_5_17 is not set +# BR2_iwmmxt is not set +# BR2_PACKAGE_UHD_N230 is not set +# BR2_PACKAGE_UHD_RFNOC is not set +# BR2_PACKAGE_GPSD_OLDSTYLE is not set +# BR2_GDB_VERSION_9_2 is not set + +# +# Legacy options removed in 2022.08 +# +# BR2_ECLIPSE_REGISTER is not set +# BR2_csky is not set +# BR2_PACKAGE_MESA3D_DRI_DRIVER_I915 is not set +# BR2_PACKAGE_MESA3D_DRI_DRIVER_I965 is not set +# BR2_PACKAGE_MESA3D_DRI_DRIVER_NOUVEAU is not set +# BR2_PACKAGE_MESA3D_DRI_DRIVER_RADEON is not set +# BR2_GCC_VERSION_9_X is not set +# BR2_PACKAGE_PHP_EXT_WDDX is not set +# BR2_nds32 is not set +# BR2_PACKAGE_RTL8723BS is not set + +# +# Legacy options removed in 2022.05 +# +# BR2_PACKAGE_KTAP is not set +# BR2_KERNEL_HEADERS_5_16 is not set +# BR2_KERNEL_HEADERS_4_4 is not set +# BR2_BINUTILS_VERSION_2_32_X is not set +# BR2_sh2a is not set +# BR2_BINUTILS_VERSION_2_35_X is not set +# BR2_PACKAGE_BOOST_LAYOUT_TAGGED is not set +# BR2_PACKAGE_BOOST_LAYOUT_VERSIONED is not set + +# +# Legacy options removed in 2022.02 +# +BR2_TARGET_ROOTFS_OCI_ENTRYPOINT_ARGS="" +# BR2_PACKAGE_LIBCURL_LIBNSS is not set +# BR2_PACKAGE_WESTON_DEFAULT_FBDEV is not set +# BR2_PACKAGE_WESTON_FBDEV is not set +# BR2_PACKAGE_PYTHON_PYCLI is not set +# BR2_PACKAGE_LINUX_TOOLS_BPFTOOL is not set +# BR2_TARGET_UBOOT_NEEDS_PYTHON2 is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_LIBMMS is not set +# BR2_PACKAGE_PYTHON_FUNCTOOLS32 is not set +# BR2_PACKAGE_PYTHON_ENUM34 is not set +# BR2_PACKAGE_PYTHON_ENUM is not set +# BR2_PACKAGE_PYTHON_DIALOG is not set +# BR2_PACKAGE_PYTHON_YIELDFROM is not set +# BR2_PACKAGE_PYTHON_TYPING is not set +# BR2_PACKAGE_PYTHON_SUBPROCESS32 is not set +# BR2_PACKAGE_PYTHON_SINGLEDISPATCH is not set +# BR2_PACKAGE_PYTHON_PYRO is not set +# BR2_PACKAGE_PYTHON_PYPCAP is not set +# BR2_PACKAGE_PYTHON_PATHLIB2 is not set +# BR2_PACKAGE_PYTHON_PAM is not set +# BR2_PACKAGE_PYTHON_NFC is not set +# BR2_PACKAGE_PYTHON_MAD is not set +# BR2_PACKAGE_PYTHON_IPADDRESS is not set +# BR2_PACKAGE_PYTHON_IPADDR is not set +# BR2_PACKAGE_PYTHON_ID3 is not set +# BR2_PACKAGE_PYTHON_FUTURES is not set +# BR2_PACKAGE_PYTHON_BACKPORTS_SSL_MATCH_HOSTNAME is not set +# BR2_PACKAGE_PYTHON_BACKPORTS_SHUTIL_GET_TERMINAL_SIZE is not set +# BR2_PACKAGE_PYTHON_BACKPORTS_ABC is not set +# BR2_PACKAGE_PYTHON is not set +# BR2_TARGET_UBOOT_ZYNQ_IMAGE is not set +# BR2_PACKAGE_HOST_GDB_PYTHON is not set +# BR2_PACKAGE_GSTREAMER1_MM is not set +# BR2_KERNEL_HEADERS_5_14 is not set +# BR2_PACKAGE_PYTHON_BACKPORTS_FUNCTOOLS_LRU_CACHE is not set +# BR2_PACKAGE_CIVETWEB_WITH_LUA is not set +# BR2_PACKAGE_SUNXI_MALI_MAINLINE_DRIVER is not set +# BR2_PACKAGE_SUNXI_MALI_MAINLINE is not set +# BR2_PACKAGE_SUNXI_MALI_MAINLINE_R6P2 is not set +# BR2_PACKAGE_SUNXI_MALI_MAINLINE_R8P1 is not set +# BR2_PACKAGE_QT5WEBKIT_EXAMPLES is not set +# BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV64_GLIBC_BLEEDING_EDGE is not set +# BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV64_MUSL_BLEEDING_EDGE is not set +# BR2_PACKAGE_IPUTILS_TFTPD is not set +# BR2_PACKAGE_IPUTILS_TRACEROUTE6 is not set +# BR2_PACKAGE_LIBMEDIAART_BACKEND_NONE is not set +# BR2_PACKAGE_MPD_UPNP is not set + +# +# Legacy options removed in 2021.11 +# +# BR2_OPENJDK_VERSION_LTS is not set +# BR2_OPENJDK_VERSION_LATEST is not set +# BR2_PACKAGE_MPD_TIDAL is not set +# BR2_PACKAGE_MROUTED_RSRR is not set +# BR2_BINUTILS_VERSION_CSKY is not set +# BR2_GCC_VERSION_CSKY is not set +# BR2_PACKAGE_CANFESTIVAL is not set +# BR2_PACKAGE_NMAP_NDIFF is not set +# BR2_GDB_VERSION_8_3 is not set +# BR2_PACKAGE_PYTHON_MELD3 is not set +# BR2_PACKAGE_STRONGSWAN_EAP is not set +# BR2_PACKAGE_GNURADIO_PAGER is not set +# BR2_KERNEL_HEADERS_5_11 is not set +# BR2_KERNEL_HEADERS_5_12 is not set +# BR2_KERNEL_HEADERS_5_13 is not set + +# +# Legacy options removed in 2021.08 +# +BR2_TARGET_GRUB2_BUILTIN_MODULES="" +BR2_TARGET_GRUB2_BUILTIN_CONFIG="" +# BR2_PACKAGE_LIBMCRYPT is not set +# BR2_PACKAGE_MCRYPT is not set +# BR2_PACKAGE_PHP_EXT_MCRYPT is not set +# BR2_BINUTILS_VERSION_2_34_X is not set +# BR2_PACKAGE_LIBSOIL is not set +# BR2_PACKAGE_CLAPACK is not set +# BR2_PACKAGE_SPIDERMONKEY is not set +# BR2_PACKAGE_KODI_LIBVA is not set +# BR2_PACKAGE_PYTHON_COHERENCE is not set +# BR2_PACKAGE_PHP_EXT_XMLRPC is not set +# BR2_GCC_VERSION_8_X is not set + +# +# Legacy options removed in 2021.05 +# +# BR2_PACKAGE_UDISKS_LVM2 is not set +# BR2_PACKAGE_LVM2_APP_LIBRARY is not set +# BR2_PACKAGE_LVM2_LVMETAD is not set +# BR2_PACKAGE_MONKEY is not set +# BR2_PACKAGE_DOCKER_CONTAINERD is not set +# BR2_PACKAGE_IOSTAT is not set +# BR2_PACKAGE_SCONESERVER_HTTP_SCONESITE_IMAGE is not set +# BR2_PACKAGE_XSERVER_XORG_SERVER_KDRIVE_EVDEV is not set +# BR2_PACKAGE_XSERVER_XORG_SERVER_KDRIVE_KBD is not set +# BR2_PACKAGE_XSERVER_XORG_SERVER_KDRIVE_MOUSE is not set +# BR2_PACKAGE_MESA3D_OSMESA_CLASSIC is not set +# BR2_PACKAGE_MESA3D_DRI_DRIVER_SWRAST is not set +# BR2_PACKAGE_KODI_SCREENSAVER_CRYSTALMORPH is not set + +# +# Legacy options removed in 2021.02 +# +# BR2_PACKAGE_MPD_AUDIOFILE is not set +# BR2_PACKAGE_AUDIOFILE is not set +# BR2_BINUTILS_VERSION_2_33_X is not set +# BR2_PACKAGE_LIBUPNP18 is not set +# BR2_PACKAGE_BOA is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IMX_SDMA is not set +# BR2_GDB_VERSION_8_2 is not set +# BR2_PACKAGE_HOST_RCW is not set +# BR2_KERNEL_HEADERS_5_9 is not set +# BR2_KERNEL_HEADERS_5_8 is not set +# BR2_powerpc_601 is not set +# BR2_PACKAGE_TI_SGX_LIBGBM is not set +# BR2_PACKAGE_IPSEC_TOOLS is not set + +# +# Legacy options removed in 2020.11 +# +# BR2_PACKAGE_GPSD_FIXED_PORT_SPEED is not set +# BR2_PACKAGE_GPSD_RECONFIGURE is not set +# BR2_PACKAGE_GPSD_CONTROLSEND is not set +# BR2_PACKAGE_OPENCV is not set +# BR2_PACKAGE_LIBCROCO is not set +# BR2_PACKAGE_BELLAGIO is not set +# BR2_PACKAGE_SYSTEMD_JOURNAL_GATEWAY is not set +# BR2_TARGET_UBOOT_BOOT_SCRIPT is not set +# BR2_TARGET_UBOOT_ENVIMAGE is not set +# BR2_PACKAGE_KISMET_CLIENT is not set +# BR2_PACKAGE_KISMET_DRONE is not set +# BR2_GCC_VERSION_7_X is not set +# BR2_PACKAGE_GST1_VALIDATE is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_YADIF is not set +# BR2_PACKAGE_GQVIEW is not set +# BR2_PACKAGE_WESTON_IMX is not set +# BR2_KERNEL_HEADERS_5_7 is not set +# BR2_PACKAGE_TINYHTTPD is not set +# BR2_PACKAGE_XSERVER_XORG_SERVER_AIGLX is not set +# BR2_PACKAGE_AMD_CATALYST is not set +# BR2_PACKAGE_NVIDIA_TEGRA23 is not set +# BR2_GDB_VERSION_8_1 is not set + +# +# Legacy options removed in 2020.08 +# +# BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AMD64 is not set +# BR2_KERNEL_HEADERS_5_6 is not set +# BR2_KERNEL_HEADERS_5_5 is not set +# BR2_BINUTILS_VERSION_2_31_X is not set +# BR2_PACKAGE_KODI_PERIPHERAL_STEAMCONTROLLER is not set + +# +# Legacy options removed in 2020.05 +# +# BR2_PACKAGE_WIRINGPI is not set +# BR2_PACKAGE_PYTHON_PYCRYPTO is not set +# BR2_PACKAGE_MTDEV2TUIO is not set +# BR2_PACKAGE_EZXML is not set +# BR2_PACKAGE_COLLECTD_LVM is not set +# BR2_PACKAGE_PYTHON_PYASN is not set +# BR2_PACKAGE_PYTHON_PYASN_MODULES is not set +# BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_10K_QCA6174 is not set +# BR2_PACKAGE_QT5CANVAS3D is not set +# BR2_PACKAGE_KODI_LIBTHEORA is not set +# BR2_PACKAGE_CEGUI06 is not set +# BR2_GCC_VERSION_5_X is not set + +# +# Legacy options removed in 2020.02 +# +# BR2_PACKAGE_JAMVM is not set +# BR2_PACKAGE_CLASSPATH is not set +# BR2_PACKAGE_QT5_VERSION_5_6 is not set +# BR2_PACKAGE_CURL is not set +# BR2_PACKAGE_GSTREAMER is not set +# BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES_GSTREAMER_PLUGINS is not set +# BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES_NV_SAMPLE_APPS is not set +# BR2_PACKAGE_FREERDP_GSTREAMER is not set +# BR2_PACKAGE_OPENCV3_WITH_GSTREAMER is not set +# BR2_PACKAGE_OPENCV_WITH_GSTREAMER is not set +# BR2_PACKAGE_LIBPLAYER is not set +# BR2_GCC_VERSION_OR1K is not set +# BR2_PACKAGE_BLUEZ_UTILS is not set +# BR2_PACKAGE_GADGETFS_TEST is not set +# BR2_PACKAGE_FIS is not set +BR2_PACKAGE_REFPOLICY_POLICY_VERSION="" +# BR2_PACKAGE_CELT051 is not set +# BR2_PACKAGE_WIREGUARD is not set +# BR2_PACKAGE_PERL_NET_PING is not set +# BR2_PACKAGE_PERL_MIME_BASE64 is not set +# BR2_PACKAGE_PERL_DIGEST_MD5 is not set +# BR2_PACKAGE_ERLANG_P1_ICONV is not set +# BR2_KERNEL_HEADERS_5_3 is not set +# BR2_PACKAGE_PYTHON_SCAPY3K is not set +# BR2_BINUTILS_VERSION_2_30_X is not set +# BR2_PACKAGE_RPI_USERLAND_START_VCFILED is not set +# BR2_PACKAGE_TI_SGX_KM_AM335X is not set +# BR2_PACKAGE_TI_SGX_KM_AM437X is not set +# BR2_PACKAGE_TI_SGX_KM_AM4430 is not set +# BR2_PACKAGE_TI_SGX_KM_AM5430 is not set + +# +# Legacy options removed in 2019.11 +# +# BR2_PACKAGE_OPENVMTOOLS_PROCPS is not set +# BR2_PACKAGE_ALLJOYN is not set +# BR2_PACKAGE_ALLJOYN_BASE is not set +# BR2_PACKAGE_ALLJOYN_BASE_CONTROLPANEL is not set +# BR2_PACKAGE_ALLJOYN_BASE_NOTIFICATION is not set +# BR2_PACKAGE_ALLJOYN_BASE_ONBOARDING is not set +# BR2_PACKAGE_ALLJOYN_TCL_BASE is not set +# BR2_PACKAGE_ALLJOYN_TCL is not set +BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS="" +# BR2_PACKAGE_PYTHON_PYSNMP_APPS is not set +# BR2_KERNEL_HEADERS_5_2 is not set +# BR2_TARGET_RISCV_PK is not set +# BR2_PACKAGE_SQLITE_STAT3 is not set +# BR2_KERNEL_HEADERS_5_1 is not set +# BR2_PACKAGE_DEVMEM2 is not set +# BR2_PACKAGE_USTR is not set +# BR2_PACKAGE_KODI_SCREENSAVER_PLANESTATE is not set +# BR2_PACKAGE_KODI_VISUALISATION_WAVEFORHUE is not set +# BR2_PACKAGE_KODI_AUDIODECODER_OPUS is not set +# BR2_PACKAGE_MESA3D_OSMESA is not set +# BR2_PACKAGE_HOSTAPD_DRIVER_RTW is not set +# BR2_PACKAGE_WPA_SUPPLICANT_DBUS_NEW is not set +# BR2_PACKAGE_WPA_SUPPLICANT_DBUS_OLD is not set + +# +# Legacy options removed in 2019.08 +# +# BR2_TARGET_TS4800_MBRBOOT is not set +# BR2_PACKAGE_LIBAMCODEC is not set +# BR2_PACKAGE_ODROID_SCRIPTS is not set +# BR2_PACKAGE_ODROID_MALI is not set +# BR2_PACKAGE_KODI_PLATFORM_AML is not set +# BR2_GCC_VERSION_6_X is not set +# BR2_GCC_VERSION_4_9_X is not set +# BR2_GDB_VERSION_7_12 is not set +# BR2_PACKAGE_XAPP_MKFONTDIR is not set +# BR2_GDB_VERSION_8_0 is not set +# BR2_KERNEL_HEADERS_4_20 is not set +# BR2_KERNEL_HEADERS_5_0 is not set + +# +# Legacy options removed in 2019.05 +# +# BR2_CSKY_DSP is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_COMPOSITOR is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_IQA is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_OPENCV is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_STEREO is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VCD is not set +# BR2_PACKAGE_LUNIT is not set +# BR2_PACKAGE_FFMPEG_FFSERVER is not set +# BR2_PACKAGE_LIBUMP is not set +# BR2_PACKAGE_SUNXI_MALI is not set +# BR2_BINUTILS_VERSION_2_29_X is not set +# BR2_BINUTILS_VERSION_2_28_X is not set +# BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_APEXSINK is not set + +# +# Legacy options removed in 2019.02 +# +# BR2_PACKAGE_QT is not set +# BR2_PACKAGE_QTUIO is not set +# BR2_PACKAGE_PINENTRY_QT4 is not set +# BR2_PACKAGE_POPPLER_QT is not set +# BR2_PACKAGE_OPENCV3_WITH_QT is not set +# BR2_PACKAGE_OPENCV_WITH_QT is not set +# BR2_PACKAGE_AMD_CATALYST_CCCLE is not set +# BR2_PACKAGE_SDL_QTOPIA is not set +# BR2_PACKAGE_PYTHON_PYQT is not set +# BR2_PACKAGE_LUACRYPTO is not set +# BR2_PACKAGE_TN5250 is not set +# BR2_PACKAGE_BOOST_SIGNALS is not set +# BR2_PACKAGE_FFTW_PRECISION_SINGLE is not set +# BR2_PACKAGE_FFTW_PRECISION_DOUBLE is not set +# BR2_PACKAGE_FFTW_PRECISION_LONG_DOUBLE is not set +# BR2_PACKAGE_LUA_5_2 is not set +# BR2_TARGET_GENERIC_PASSWD_MD5 is not set + +# +# Legacy options removed in 2018.11 +# +# BR2_TARGET_XLOADER is not set +# BR2_PACKAGE_TIDSP_BINARIES is not set +# BR2_PACKAGE_DSP_TOOLS is not set +# BR2_PACKAGE_GST_DSP is not set +# BR2_PACKAGE_BOOTUTILS is not set +# BR2_PACKAGE_EXPEDITE is not set +# BR2_PACKAGE_MESA3D_OPENGL_TEXTURE_FLOAT is not set +# BR2_KERNEL_HEADERS_4_10 is not set +# BR2_KERNEL_HEADERS_4_11 is not set +# BR2_KERNEL_HEADERS_4_12 is not set +# BR2_KERNEL_HEADERS_4_13 is not set +# BR2_KERNEL_HEADERS_4_15 is not set +# BR2_KERNEL_HEADERS_4_17 is not set +# BR2_PACKAGE_LIBNFTNL_XML is not set +# BR2_KERNEL_HEADERS_3_2 is not set +# BR2_KERNEL_HEADERS_4_1 is not set +# BR2_KERNEL_HEADERS_4_16 is not set +# BR2_KERNEL_HEADERS_4_18 is not set + +# +# Legacy options removed in 2018.08 +# +# BR2_PACKAGE_DOCKER_ENGINE_STATIC_CLIENT is not set +# BR2_PACKAGE_XPROTO_APPLEWMPROTO is not set +# BR2_PACKAGE_XPROTO_BIGREQSPROTO is not set +# BR2_PACKAGE_XPROTO_COMPOSITEPROTO is not set +# BR2_PACKAGE_XPROTO_DAMAGEPROTO is not set +# BR2_PACKAGE_XPROTO_DMXPROTO is not set +# BR2_PACKAGE_XPROTO_DRI2PROTO is not set +# BR2_PACKAGE_XPROTO_DRI3PROTO is not set +# BR2_PACKAGE_XPROTO_FIXESPROTO is not set +# BR2_PACKAGE_XPROTO_FONTCACHEPROTO is not set +# BR2_PACKAGE_XPROTO_FONTSPROTO is not set +# BR2_PACKAGE_XPROTO_GLPROTO is not set +# BR2_PACKAGE_XPROTO_INPUTPROTO is not set +# BR2_PACKAGE_XPROTO_KBPROTO is not set +# BR2_PACKAGE_XPROTO_PRESENTPROTO is not set +# BR2_PACKAGE_XPROTO_RANDRPROTO is not set +# BR2_PACKAGE_XPROTO_RECORDPROTO is not set +# BR2_PACKAGE_XPROTO_RENDERPROTO is not set +# BR2_PACKAGE_XPROTO_RESOURCEPROTO is not set +# BR2_PACKAGE_XPROTO_SCRNSAVERPROTO is not set +# BR2_PACKAGE_XPROTO_VIDEOPROTO is not set +# BR2_PACKAGE_XPROTO_WINDOWSWMPROTO is not set +# BR2_PACKAGE_XPROTO_XCMISCPROTO is not set +# BR2_PACKAGE_XPROTO_XEXTPROTO is not set +# BR2_PACKAGE_XPROTO_XF86BIGFONTPROTO is not set +# BR2_PACKAGE_XPROTO_XF86DGAPROTO is not set +# BR2_PACKAGE_XPROTO_XF86DRIPROTO is not set +# BR2_PACKAGE_XPROTO_XF86VIDMODEPROTO is not set +# BR2_PACKAGE_XPROTO_XINERAMAPROTO is not set +# BR2_PACKAGE_XPROTO_XPROTO is not set +# BR2_PACKAGE_XPROTO_XPROXYMANAGEMENTPROTOCOL is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_OPENGL is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_GLES2 is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_GLX is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_EGL is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_X11 is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_WAYLAND is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_DISPMANX is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUDIOMIXER is not set +# BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_LAME is not set +# BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_MPG123 is not set +# BR2_GDB_VERSION_7_11 is not set +# BR2_GDB_VERSION_7_10 is not set + +# +# Legacy options removed in 2018.05 +# +# BR2_PACKAGE_MEDIAART_BACKEND_NONE is not set +# BR2_PACKAGE_MEDIAART_BACKEND_GDK_PIXBUF is not set +# BR2_PACKAGE_MEDIAART_BACKEND_QT is not set +# BR2_PACKAGE_TI_SGX_AM335X is not set +# BR2_PACKAGE_TI_SGX_AM437X is not set +# BR2_PACKAGE_TI_SGX_AM4430 is not set +# BR2_PACKAGE_TI_SGX_AM5430 is not set +# BR2_PACKAGE_JANUS_AUDIO_BRIDGE is not set +# BR2_PACKAGE_JANUS_ECHO_TEST is not set +# BR2_PACKAGE_JANUS_RECORDPLAY is not set +# BR2_PACKAGE_JANUS_SIP_GATEWAY is not set +# BR2_PACKAGE_JANUS_STREAMING is not set +# BR2_PACKAGE_JANUS_TEXT_ROOM is not set +# BR2_PACKAGE_JANUS_VIDEO_CALL is not set +# BR2_PACKAGE_JANUS_VIDEO_ROOM is not set +# BR2_PACKAGE_JANUS_MQTT is not set +# BR2_PACKAGE_JANUS_RABBITMQ is not set +# BR2_PACKAGE_JANUS_REST is not set +# BR2_PACKAGE_JANUS_UNIX_SOCKETS is not set +# BR2_PACKAGE_JANUS_WEBSOCKETS is not set +# BR2_PACKAGE_IPSEC_SECCTX_DISABLE is not set +# BR2_PACKAGE_IPSEC_SECCTX_ENABLE is not set +# BR2_PACKAGE_IPSEC_SECCTX_KERNEL is not set +# BR2_PACKAGE_LIBTFDI_CPP is not set +# BR2_PACKAGE_JQUERY_UI_THEME_BLACK_TIE is not set +# BR2_PACKAGE_JQUERY_UI_THEME_BLITZER is not set +# BR2_PACKAGE_JQUERY_UI_THEME_CUPERTINO is not set +# BR2_PACKAGE_JQUERY_UI_THEME_DARK_HIVE is not set +# BR2_PACKAGE_JQUERY_UI_THEME_DOT_LUV is not set +# BR2_PACKAGE_JQUERY_UI_THEME_EGGPLANT is not set +# BR2_PACKAGE_JQUERY_UI_THEME_EXCITE_BIKE is not set +# BR2_PACKAGE_JQUERY_UI_THEME_FLICK is not set +# BR2_PACKAGE_JQUERY_UI_THEME_HOT_SNEAKS is not set +# BR2_PACKAGE_JQUERY_UI_THEME_HUMANITY is not set +# BR2_PACKAGE_JQUERY_UI_THEME_LE_FROG is not set +# BR2_PACKAGE_JQUERY_UI_THEME_MINT_CHOC is not set +# BR2_PACKAGE_JQUERY_UI_THEME_OVERCAST is not set +# BR2_PACKAGE_JQUERY_UI_THEME_PEPPER_GRINDER is not set +# BR2_PACKAGE_JQUERY_UI_THEME_REDMOND is not set +# BR2_PACKAGE_JQUERY_UI_THEME_SMOOTHNESS is not set +# BR2_PACKAGE_JQUERY_UI_THEME_SOUTH_STREET is not set +# BR2_PACKAGE_JQUERY_UI_THEME_START is not set +# BR2_PACKAGE_JQUERY_UI_THEME_SUNNY is not set +# BR2_PACKAGE_JQUERY_UI_THEME_SWANKY_PURSE is not set +# BR2_PACKAGE_JQUERY_UI_THEME_TRONTASTIC is not set +# BR2_PACKAGE_JQUERY_UI_THEME_UI_DARKNESS is not set +# BR2_PACKAGE_JQUERY_UI_THEME_UI_LIGHTNESS is not set +# BR2_PACKAGE_JQUERY_UI_THEME_VADER is not set +# BR2_PACKAGE_BLUEZ5_PLUGINS_HEALTH is not set +# BR2_PACKAGE_BLUEZ5_PLUGINS_MIDI is not set +# BR2_PACKAGE_BLUEZ5_PLUGINS_NFC is not set +# BR2_PACKAGE_BLUEZ5_PLUGINS_SAP is not set +# BR2_PACKAGE_BLUEZ5_PLUGINS_SIXAXIS is not set +# BR2_PACKAGE_TRANSMISSION_REMOTE is not set +# BR2_PACKAGE_LIBKCAPI_APPS is not set +# BR2_PACKAGE_MPLAYER is not set +# BR2_PACKAGE_MPLAYER_MPLAYER is not set +# BR2_PACKAGE_MPLAYER_MENCODER is not set +# BR2_PACKAGE_LIBPLAYER_MPLAYER is not set +# BR2_PACKAGE_IQVLINUX is not set +# BR2_BINFMT_FLAT_SEP_DATA is not set +# BR2_bfin is not set +# BR2_PACKAGE_KODI_ADSP_BASIC is not set +# BR2_PACKAGE_KODI_ADSP_FREESURROUND is not set + +# +# Legacy options removed in 2018.02 +# +# BR2_KERNEL_HEADERS_3_4 is not set +# BR2_KERNEL_HEADERS_3_10 is not set +# BR2_KERNEL_HEADERS_3_12 is not set +# BR2_BINUTILS_VERSION_2_27_X is not set +# BR2_PACKAGE_EEPROG is not set +# BR2_PACKAGE_GNUPG2_GPGV2 is not set +# BR2_PACKAGE_IMX_GPU_VIV_APITRACE is not set +# BR2_PACKAGE_IMX_GPU_VIV_G2D is not set + +# +# Legacy options removed in 2017.11 +# +# BR2_PACKAGE_RFKILL is not set +# BR2_PACKAGE_UTIL_LINUX_RESET is not set +# BR2_PACKAGE_POLICYCOREUTILS_AUDIT2ALLOW is not set +# BR2_PACKAGE_POLICYCOREUTILS_RESTORECOND is not set +# BR2_PACKAGE_SEPOLGEN is not set +# BR2_PACKAGE_OPENOBEX_BLUEZ is not set +# BR2_PACKAGE_OPENOBEX_LIBUSB is not set +# BR2_PACKAGE_OPENOBEX_APPS is not set +# BR2_PACKAGE_OPENOBEX_SYSLOG is not set +# BR2_PACKAGE_OPENOBEX_DUMP is not set +# BR2_PACKAGE_AICCU is not set +# BR2_PACKAGE_UTIL_LINUX_LOGIN_UTILS is not set + +# +# Legacy options removed in 2017.08 +# +# BR2_TARGET_GRUB is not set +# BR2_PACKAGE_SIMICSFS is not set +# BR2_BINUTILS_VERSION_2_26_X is not set +BR2_XTENSA_OVERLAY_DIR="" +BR2_XTENSA_CUSTOM_NAME="" +# BR2_PACKAGE_HOST_MKE2IMG is not set +BR2_TARGET_ROOTFS_EXT2_BLOCKS=0 +BR2_TARGET_ROOTFS_EXT2_EXTRA_INODES=0 +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_CDXAPARSE is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DATAURISRC is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DCCP is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_HDVPARSE is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MVE is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_NUVDEMUX is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_PATCHDETECT is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SDI is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_TTA is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VIDEOMEASURE is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_APEXSINK is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SDL is not set +# BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_MAD is not set +# BR2_STRIP_none is not set +# BR2_PACKAGE_BEECRYPT_CPP is not set +# BR2_PACKAGE_SPICE_CLIENT is not set +# BR2_PACKAGE_SPICE_GUI is not set +# BR2_PACKAGE_SPICE_TUNNEL is not set +# BR2_PACKAGE_INPUT_TOOLS is not set +# BR2_PACKAGE_INPUT_TOOLS_INPUTATTACH is not set +# BR2_PACKAGE_INPUT_TOOLS_JSCAL is not set +# BR2_PACKAGE_INPUT_TOOLS_JSTEST is not set +# BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH is not set +# BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86 is not set +# BR2_GCC_VERSION_4_8_X is not set + +# +# Legacy options removed in 2017.05 +# +# BR2_PACKAGE_SUNXI_MALI_R2P4 is not set +# BR2_PACKAGE_NODEJS_MODULES_COFFEESCRIPT is not set +# BR2_PACKAGE_NODEJS_MODULES_EXPRESS is not set +# BR2_PACKAGE_BLUEZ5_UTILS_GATTTOOL is not set +# BR2_PACKAGE_OPENOCD_FT2XXX is not set +# BR2_PACKAGE_KODI_RTMPDUMP is not set +# BR2_PACKAGE_KODI_VISUALISATION_FOUNTAIN is not set +# BR2_PACKAGE_PORTMAP is not set +# BR2_BINUTILS_VERSION_2_25_X is not set +# BR2_TOOLCHAIN_BUILDROOT_INET_RPC is not set +BR2_TARGET_ROOTFS_EXT2_EXTRA_BLOCKS=0 +# BR2_PACKAGE_SYSTEMD_KDBUS is not set +# BR2_PACKAGE_POLARSSL is not set +# BR2_NBD_CLIENT is not set +# BR2_NBD_SERVER is not set +# BR2_PACKAGE_GMOCK is not set +# BR2_KERNEL_HEADERS_4_8 is not set +# BR2_KERNEL_HEADERS_3_18 is not set +# BR2_GLIBC_VERSION_2_22 is not set + +# +# Legacy options removed in 2017.02 +# +# BR2_PACKAGE_PERL_DB_FILE is not set +# BR2_KERNEL_HEADERS_4_7 is not set +# BR2_KERNEL_HEADERS_4_6 is not set +# BR2_KERNEL_HEADERS_4_5 is not set +# BR2_KERNEL_HEADERS_3_14 is not set +# BR2_TOOLCHAIN_EXTERNAL_MUSL_CROSS is not set +# BR2_UCLIBC_INSTALL_TEST_SUITE is not set +# BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX is not set +# BR2_PACKAGE_MAKEDEVS is not set +# BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV7A is not set +# BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV5TE is not set +# BR2_PACKAGE_SNOWBALL_HDMISERVICE is not set +# BR2_PACKAGE_SNOWBALL_INIT is not set +# BR2_GDB_VERSION_7_9 is not set + +# +# Legacy options removed in 2016.11 +# +# BR2_PACKAGE_PHP_SAPI_CLI_CGI is not set +# BR2_PACKAGE_PHP_SAPI_CLI_FPM is not set +# BR2_PACKAGE_WVSTREAMS is not set +# BR2_PACKAGE_WVDIAL is not set +# BR2_PACKAGE_WEBKITGTK24 is not set +# BR2_PACKAGE_TORSMO is not set +# BR2_PACKAGE_SSTRIP is not set +# BR2_KERNEL_HEADERS_4_3 is not set +# BR2_KERNEL_HEADERS_4_2 is not set +# BR2_PACKAGE_KODI_ADDON_XVDR is not set +# BR2_PACKAGE_IPKG is not set +# BR2_GCC_VERSION_4_7_X is not set +# BR2_BINUTILS_VERSION_2_24_X is not set +# BR2_PACKAGE_WESTON_RPI is not set +# BR2_GCC_VERSION_4_8_ARC is not set +# BR2_KERNEL_HEADERS_4_0 is not set +# BR2_KERNEL_HEADERS_3_19 is not set +# BR2_PACKAGE_LIBEVAS_GENERIC_LOADERS is not set +# BR2_PACKAGE_ELEMENTARY is not set +# BR2_LINUX_KERNEL_CUSTOM_LOCAL is not set + +# +# Legacy options removed in 2016.08 +# +# BR2_PACKAGE_EFL_JP2K is not set +# BR2_PACKAGE_SYSTEMD_COMPAT is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_LIVEADDER is not set +# BR2_PACKAGE_LIBFSLVPUWRAP is not set +# BR2_PACKAGE_LIBFSLPARSER is not set +# BR2_PACKAGE_LIBFSLCODEC is not set +# BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE_FIT_SIGNATURE_SUPPORT is not set +# BR2_PTHREADS_OLD is not set +# BR2_BINUTILS_VERSION_2_23_X is not set +# BR2_TOOLCHAIN_BUILDROOT_EGLIBC is not set +# BR2_GDB_VERSION_7_8 is not set + +# +# Legacy options removed in 2016.05 +# +# BR2_PACKAGE_OPENVPN_CRYPTO_POLARSSL is not set +# BR2_PACKAGE_NGINX_HTTP_SPDY_MODULE is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_RTP is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPG123 is not set +# BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_POWERPC is not set +# BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_POWERPC_E500V2 is not set +# BR2_x86_i386 is not set +# BR2_PACKAGE_QT5QUICK1 is not set +BR2_TARGET_UBOOT_CUSTOM_PATCH_DIR="" +# BR2_PACKAGE_XDRIVER_XF86_INPUT_VOID is not set +# BR2_KERNEL_HEADERS_3_17 is not set +# BR2_GDB_VERSION_7_7 is not set +# BR2_PACKAGE_FOOMATIC_FILTERS is not set +# BR2_PACKAGE_SAMBA is not set +# BR2_PACKAGE_KODI_WAVPACK is not set +# BR2_PACKAGE_KODI_RSXS is not set +# BR2_PACKAGE_KODI_GOOM is not set +# BR2_PACKAGE_SYSTEMD_ALL_EXTRAS is not set +# BR2_GCC_VERSION_4_5_X is not set +# BR2_PACKAGE_SQLITE_READLINE is not set + +# +# Legacy options removed in 2016.02 +# +# BR2_PACKAGE_DOVECOT_BZIP2 is not set +# BR2_PACKAGE_DOVECOT_ZLIB is not set +# BR2_PACKAGE_E2FSPROGS_FINDFS is not set +# BR2_PACKAGE_OPENPOWERLINK_DEBUG_LEVEL is not set +# BR2_PACKAGE_OPENPOWERLINK_KERNEL_MODULE is not set +# BR2_PACKAGE_OPENPOWERLINK_LIBPCAP is not set +# BR2_LINUX_KERNEL_SAME_AS_HEADERS is not set +# BR2_PACKAGE_CUPS_PDFTOPS is not set +# BR2_KERNEL_HEADERS_3_16 is not set +# BR2_PACKAGE_PYTHON_PYXML is not set +# BR2_ENABLE_SSP is not set +# BR2_PACKAGE_DIRECTFB_CLE266 is not set +# BR2_PACKAGE_DIRECTFB_UNICHROME is not set +# BR2_PACKAGE_LIBELEMENTARY is not set +# BR2_PACKAGE_LIBEINA is not set +# BR2_PACKAGE_LIBEET is not set +# BR2_PACKAGE_LIBEVAS is not set +# BR2_PACKAGE_LIBECORE is not set +# BR2_PACKAGE_LIBEDBUS is not set +# BR2_PACKAGE_LIBEFREET is not set +# BR2_PACKAGE_LIBEIO is not set +# BR2_PACKAGE_LIBEMBRYO is not set +# BR2_PACKAGE_LIBEDJE is not set +# BR2_PACKAGE_LIBETHUMB is not set +# BR2_PACKAGE_INFOZIP is not set +# BR2_BR2_PACKAGE_NODEJS_0_10_X is not set +# BR2_BR2_PACKAGE_NODEJS_0_12_X is not set +# BR2_BR2_PACKAGE_NODEJS_4_X is not set + +# +# Legacy options removed in 2015.11 +# +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_REAL is not set +# BR2_PACKAGE_MEDIA_CTL is not set +# BR2_PACKAGE_SCHIFRA is not set +# BR2_PACKAGE_ZXING is not set +# BR2_PACKAGE_BLACKBOX is not set +# BR2_KERNEL_HEADERS_3_0 is not set +# BR2_KERNEL_HEADERS_3_11 is not set +# BR2_KERNEL_HEADERS_3_13 is not set +# BR2_KERNEL_HEADERS_3_15 is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_ANDI is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_BLTLOAD is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_CPULOAD is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_DATABUFFER is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_DIOLOAD is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_DOK is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_DRIVERTEST is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_FIRE is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_FLIP is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_FONTS is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_INPUT is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_JOYSTICK is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_KNUCKLES is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_LAYER is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_MATRIX is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_MATRIX_WATER is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_NEO is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_NETLOAD is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_PALETTE is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_PARTICLE is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_PORTER is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_STRESS is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_TEXTURE is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_VIDEO is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_VIDEO_PARTICLE is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_WINDOW is not set +# BR2_PACKAGE_KOBS_NG is not set +# BR2_PACKAGE_SAWMAN is not set +# BR2_PACKAGE_DIVINE is not set + +# +# Legacy options removed in 2015.08 +# +# BR2_PACKAGE_KODI_PVR_ADDONS is not set +# BR2_BINUTILS_VERSION_2_23_2 is not set +# BR2_BINUTILS_VERSION_2_24 is not set +# BR2_BINUTILS_VERSION_2_25 is not set +# BR2_PACKAGE_PERF is not set +# BR2_BINUTILS_VERSION_2_22 is not set +# BR2_PACKAGE_GPU_VIV_BIN_MX6Q is not set +# BR2_TARGET_UBOOT_NETWORK is not set diff --git a/examples/simple/board/qemu_virt_riscv64/linux b/examples/simple/board/qemu_virt_riscv64/linux new file mode 100755 index 000000000..b87534c27 Binary files /dev/null and b/examples/simple/board/qemu_virt_riscv64/linux differ diff --git a/examples/simple/board/qemu_virt_riscv64/linux.dts b/examples/simple/board/qemu_virt_riscv64/linux.dts new file mode 100644 index 000000000..ab4833b8e --- /dev/null +++ b/examples/simple/board/qemu_virt_riscv64/linux.dts @@ -0,0 +1,220 @@ +/* + * Copyright QEMU team + * + * SPDX-License-Identifier: GPL-2.0-only + * + * This file is derived from an intermediate build stage of the + * Linux kernel. The licenses of all input files to this process + * are compatible with GPL-2.0-only. + */ +/dts-v1/; + +/ { + #address-cells = <0x02>; + #size-cells = <0x02>; + compatible = "riscv-virtio"; + model = "riscv-virtio,qemu"; + + poweroff { + value = <0x5555>; + offset = <0x00>; + regmap = <0x04>; + compatible = "syscon-poweroff"; + }; + + reboot { + value = <0x7777>; + offset = <0x00>; + regmap = <0x04>; + compatible = "syscon-reboot"; + }; + + platform-bus@4000000 { + interrupt-parent = <0x03>; + ranges = <0x00 0x00 0x4000000 0x2000000>; + #address-cells = <0x01>; + #size-cells = <0x01>; + compatible = "qemu,platform", "simple-bus"; + }; + + memory@80000000 { + device_type = "memory"; + reg = <0x00 0x80000000 0x00 0x80000000>; + }; + + cpus { + #address-cells = <0x01>; + #size-cells = <0x00>; + timebase-frequency = <0x989680>; + + cpu@0 { + phandle = <0x01>; + device_type = "cpu"; + reg = <0x00>; + status = "okay"; + compatible = "riscv"; + riscv,cbop-block-size = <0x40>; + riscv,cboz-block-size = <0x40>; + riscv,cbom-block-size = <0x40>; + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "h", "zic64b", "zicbom", "zicbop", "zicboz", "ziccamoa", "ziccif", "zicclsm", "ziccrse", "zicntr", "zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", "zmmul", "za64rs", "zaamo", "zalrsc", "zawrs", "zfa", "zca", "zcd", "zba", "zbb", "zbc", "zbs", "ssccptr", "sscounterenw", "sstc", "sstvala", "sstvecd", "svadu", "svvptc"; + riscv,isa-base = "rv64i"; + riscv,isa = "rv64imafdch_zic64b_zicbom_zicbop_zicboz_ziccamoa_ziccif_zicclsm_ziccrse_zicntr_zicsr_zifencei_zihintntl_zihintpause_zihpm_zmmul_za64rs_zaamo_zalrsc_zawrs_zfa_zca_zcd_zba_zbb_zbc_zbs_ssccptr_sscounterenw_sstc_sstvala_sstvecd_svadu_svvptc"; + mmu-type = "riscv,sv57"; + + interrupt-controller { + #interrupt-cells = <0x01>; + interrupt-controller; + compatible = "riscv,cpu-intc"; + phandle = <0x02>; + }; + }; + + cpu-map { + + cluster0 { + + core0 { + cpu = <0x01>; + }; + }; + }; + }; + + pmu { + riscv,event-to-mhpmcounters = <0x01 0x01 0x7fff9 0x02 0x02 0x7fffc 0x10019 0x10019 0x7fff8 0x1001b 0x1001b 0x7fff8 0x10021 0x10021 0x7fff8>; + compatible = "riscv,pmu"; + }; + + fw-cfg@10100000 { + dma-coherent; + reg = <0x00 0x10100000 0x00 0x18>; + compatible = "qemu,fw-cfg-mmio"; + }; + + flash@20000000 { + bank-width = <0x04>; + reg = <0x00 0x20000000 0x00 0x2000000 0x00 0x22000000 0x00 0x2000000>; + compatible = "cfi-flash"; + }; + + chosen { + stdout-path = "/soc/serial@10000000"; + rng-seed = <0xd6509725 0x1e6d2cd8 0xe4659edc 0xd15896d7 0xf38c9c53 0x10918950 0xb1cfa2f5 0xbe144889>; + }; + + soc { + #address-cells = <0x02>; + #size-cells = <0x02>; + compatible = "simple-bus"; + ranges; + + rtc@101000 { + interrupts = <0x0b>; + interrupt-parent = <0x03>; + reg = <0x00 0x101000 0x00 0x1000>; + compatible = "google,goldfish-rtc"; + }; + + serial@10000000 { + interrupts = <0x0a>; + interrupt-parent = <0x03>; + clock-frequency = "", "8@"; + reg = <0x00 0x10000000 0x00 0x100>; + compatible = "ns16550a"; + }; + + test@100000 { + phandle = <0x04>; + reg = <0x00 0x100000 0x00 0x1000>; + compatible = "sifive,test1", "sifive,test0", "syscon"; + }; + + virtio_mmio@10008000 { + interrupts = <0x08>; + interrupt-parent = <0x03>; + reg = <0x00 0x10008000 0x00 0x1000>; + compatible = "virtio,mmio"; + }; + + virtio_mmio@10007000 { + interrupts = <0x07>; + interrupt-parent = <0x03>; + reg = <0x00 0x10007000 0x00 0x1000>; + compatible = "virtio,mmio"; + }; + + virtio_mmio@10006000 { + interrupts = <0x06>; + interrupt-parent = <0x03>; + reg = <0x00 0x10006000 0x00 0x1000>; + compatible = "virtio,mmio"; + }; + + virtio_mmio@10005000 { + interrupts = <0x05>; + interrupt-parent = <0x03>; + reg = <0x00 0x10005000 0x00 0x1000>; + compatible = "virtio,mmio"; + }; + + virtio_mmio@10004000 { + interrupts = <0x04>; + interrupt-parent = <0x03>; + reg = <0x00 0x10004000 0x00 0x1000>; + compatible = "virtio,mmio"; + }; + + virtio_mmio@10003000 { + interrupts = <0x03>; + interrupt-parent = <0x03>; + reg = <0x00 0x10003000 0x00 0x1000>; + compatible = "virtio,mmio"; + }; + + virtio_mmio@10002000 { + interrupts = <0x02>; + interrupt-parent = <0x03>; + reg = <0x00 0x10002000 0x00 0x1000>; + compatible = "virtio,mmio"; + }; + + virtio_mmio@10001000 { + interrupts = <0x01>; + interrupt-parent = <0x03>; + reg = <0x00 0x10001000 0x00 0x1000>; + compatible = "virtio,mmio"; + }; + + plic@c000000 { + phandle = <0x03>; + riscv,ndev = <0x5f>; + reg = <0x00 0xc000000 0x00 0x600000>; + interrupts-extended = <0x02 0x0b 0x02 0x09>; + interrupt-controller; + compatible = "sifive,plic-1.0.0", "riscv,plic0"; + #address-cells = <0x00>; + #interrupt-cells = <0x01>; + }; + + clint@2000000 { + interrupts-extended = <0x02 0x03 0x02 0x07>; + reg = <0x00 0x2000000 0x00 0x10000>; + compatible = "sifive,clint0", "riscv,clint0"; + }; + + pci@30000000 { + interrupt-map-mask = <0x1800 0x00 0x00 0x07>; + interrupt-map = <0x00 0x00 0x00 0x01 0x03 0x20 0x00 0x00 0x00 0x02 0x03 0x21 0x00 0x00 0x00 0x03 0x03 0x22 0x00 0x00 0x00 0x04 0x03 0x23 0x800 0x00 0x00 0x01 0x03 0x21 0x800 0x00 0x00 0x02 0x03 0x22 0x800 0x00 0x00 0x03 0x03 0x23 0x800 0x00 0x00 0x04 0x03 0x20 0x1000 0x00 0x00 0x01 0x03 0x22 0x1000 0x00 0x00 0x02 0x03 0x23 0x1000 0x00 0x00 0x03 0x03 0x20 0x1000 0x00 0x00 0x04 0x03 0x21 0x1800 0x00 0x00 0x01 0x03 0x23 0x1800 0x00 0x00 0x02 0x03 0x20 0x1800 0x00 0x00 0x03 0x03 0x21 0x1800 0x00 0x00 0x04 0x03 0x22>; + ranges = <0x1000000 0x00 0x00 0x00 0x3000000 0x00 0x10000 0x2000000 0x00 0x40000000 0x00 0x40000000 0x00 0x40000000 0x3000000 0x04 0x00 0x04 0x00 0x04 0x00>; + reg = <0x00 0x30000000 0x00 0x10000000>; + dma-coherent; + bus-range = <0x00 0xff>; + linux,pci-domain = <0x00>; + device_type = "pci"; + compatible = "pci-host-ecam-generic"; + #size-cells = <0x02>; + #interrupt-cells = <0x01>; + #address-cells = <0x03>; + }; + }; +}; diff --git a/examples/simple/board/qemu_virt_riscv64/linux_config b/examples/simple/board/qemu_virt_riscv64/linux_config new file mode 100644 index 000000000..caa2ffb00 --- /dev/null +++ b/examples/simple/board/qemu_virt_riscv64/linux_config @@ -0,0 +1,7161 @@ +# +# Automatically generated file; DO NOT EDIT. +# Linux/riscv 6.15.0 Kernel Configuration +# +CONFIG_CC_VERSION_TEXT="riscv64-linux-gnu-gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0" +CONFIG_CC_IS_GCC=y +CONFIG_GCC_VERSION=110400 +CONFIG_CLANG_VERSION=0 +CONFIG_AS_IS_GNU=y +CONFIG_AS_VERSION=23800 +CONFIG_LD_IS_BFD=y +CONFIG_LD_VERSION=23800 +CONFIG_LLD_VERSION=0 +CONFIG_RUSTC_VERSION=108500 +CONFIG_RUSTC_LLVM_VERSION=190107 +CONFIG_CC_CAN_LINK=y +CONFIG_GCC_ASM_GOTO_OUTPUT_BROKEN=y +CONFIG_CC_HAS_ASM_INLINE=y +CONFIG_CC_HAS_NO_PROFILE_FN_ATTR=y +CONFIG_LD_CAN_USE_KEEP_IN_OVERLAY=y +CONFIG_RUSTC_HAS_COERCE_POINTEE=y +CONFIG_PAHOLE_VERSION=0 +CONFIG_IRQ_WORK=y +CONFIG_BUILDTIME_TABLE_SORT=y +CONFIG_THREAD_INFO_IN_TASK=y + +# +# General setup +# +CONFIG_INIT_ENV_ARG_LIMIT=32 +# CONFIG_COMPILE_TEST is not set +# CONFIG_WERROR is not set +CONFIG_LOCALVERSION="" +CONFIG_LOCALVERSION_AUTO=y +CONFIG_BUILD_SALT="" +CONFIG_HAVE_KERNEL_GZIP=y +CONFIG_HAVE_KERNEL_BZIP2=y +CONFIG_HAVE_KERNEL_LZMA=y +CONFIG_HAVE_KERNEL_XZ=y +CONFIG_HAVE_KERNEL_LZO=y +CONFIG_HAVE_KERNEL_LZ4=y +CONFIG_HAVE_KERNEL_ZSTD=y +CONFIG_HAVE_KERNEL_UNCOMPRESSED=y +CONFIG_KERNEL_GZIP=y +# CONFIG_KERNEL_BZIP2 is not set +# CONFIG_KERNEL_LZMA is not set +# CONFIG_KERNEL_XZ is not set +# CONFIG_KERNEL_LZO is not set +# CONFIG_KERNEL_LZ4 is not set +# CONFIG_KERNEL_ZSTD is not set +# CONFIG_KERNEL_UNCOMPRESSED is not set +CONFIG_DEFAULT_INIT="" +CONFIG_DEFAULT_HOSTNAME="(none)" +CONFIG_SYSVIPC=y +CONFIG_SYSVIPC_SYSCTL=y +CONFIG_SYSVIPC_COMPAT=y +CONFIG_POSIX_MQUEUE=y +CONFIG_POSIX_MQUEUE_SYSCTL=y +# CONFIG_WATCH_QUEUE is not set +CONFIG_CROSS_MEMORY_ATTACH=y +# CONFIG_USELIB is not set +CONFIG_AUDIT=y +CONFIG_HAVE_ARCH_AUDITSYSCALL=y +CONFIG_AUDITSYSCALL=y + +# +# IRQ subsystem +# +CONFIG_GENERIC_IRQ_SHOW=y +CONFIG_GENERIC_IRQ_SHOW_LEVEL=y +CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y +CONFIG_GENERIC_PENDING_IRQ=y +CONFIG_GENERIC_IRQ_MIGRATION=y +CONFIG_HARDIRQS_SW_RESEND=y +CONFIG_IRQ_DOMAIN=y +CONFIG_IRQ_DOMAIN_HIERARCHY=y +CONFIG_GENERIC_IRQ_IPI=y +CONFIG_GENERIC_IRQ_IPI_MUX=y +CONFIG_GENERIC_MSI_IRQ=y +CONFIG_GENERIC_IRQ_MATRIX_ALLOCATOR=y +CONFIG_IRQ_FORCED_THREADING=y +CONFIG_SPARSE_IRQ=y +# CONFIG_GENERIC_IRQ_DEBUGFS is not set +# end of IRQ subsystem + +CONFIG_GENERIC_IRQ_MULTI_HANDLER=y +CONFIG_GENERIC_TIME_VSYSCALL=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_ARCH_HAS_TICK_BROADCAST=y +CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y +CONFIG_HAVE_POSIX_CPU_TIMERS_TASK_WORK=y +CONFIG_POSIX_CPU_TIMERS_TASK_WORK=y +CONFIG_CONTEXT_TRACKING=y +CONFIG_CONTEXT_TRACKING_IDLE=y + +# +# Timers subsystem +# +CONFIG_TICK_ONESHOT=y +CONFIG_NO_HZ_COMMON=y +# CONFIG_HZ_PERIODIC is not set +CONFIG_NO_HZ_IDLE=y +# CONFIG_NO_HZ_FULL is not set +# CONFIG_NO_HZ is not set +CONFIG_HIGH_RES_TIMERS=y +# end of Timers subsystem + +CONFIG_BPF=y +CONFIG_HAVE_EBPF_JIT=y + +# +# BPF subsystem +# +CONFIG_BPF_SYSCALL=y +# CONFIG_BPF_JIT is not set +CONFIG_BPF_UNPRIV_DEFAULT_OFF=y +# CONFIG_BPF_PRELOAD is not set +# end of BPF subsystem + +CONFIG_PREEMPT_NONE_BUILD=y +CONFIG_ARCH_HAS_PREEMPT_LAZY=y +CONFIG_PREEMPT_NONE=y +# CONFIG_PREEMPT_VOLUNTARY is not set +# CONFIG_PREEMPT is not set +# CONFIG_PREEMPT_LAZY is not set +# CONFIG_PREEMPT_RT is not set +CONFIG_PREEMPT_COUNT=y +# CONFIG_PREEMPT_DYNAMIC is not set + +# +# CPU/Task time and stats accounting +# +CONFIG_TICK_CPU_ACCOUNTING=y +# CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set +# CONFIG_IRQ_TIME_ACCOUNTING is not set +# CONFIG_BSD_PROCESS_ACCT is not set +# CONFIG_TASKSTATS is not set +# CONFIG_PSI is not set +# end of CPU/Task time and stats accounting + +CONFIG_CPU_ISOLATION=y + +# +# RCU Subsystem +# +CONFIG_TREE_RCU=y +# CONFIG_RCU_EXPERT is not set +CONFIG_TREE_SRCU=y +CONFIG_TASKS_RCU_GENERIC=y +CONFIG_NEED_TASKS_RCU=y +CONFIG_TASKS_TRACE_RCU=y +CONFIG_RCU_STALL_COMMON=y +CONFIG_RCU_NEED_SEGCBLIST=y +# end of RCU Subsystem + +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +# CONFIG_IKHEADERS is not set +CONFIG_LOG_BUF_SHIFT=17 +CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 +# CONFIG_PRINTK_INDEX is not set +CONFIG_GENERIC_SCHED_CLOCK=y + +# +# Scheduler features +# +# end of Scheduler features + +CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y +CONFIG_CC_HAS_INT128=y +CONFIG_CC_IMPLICIT_FALLTHROUGH="-Wimplicit-fallthrough=5" +CONFIG_GCC10_NO_ARRAY_BOUNDS=y +CONFIG_CC_NO_ARRAY_BOUNDS=y +CONFIG_GCC_NO_STRINGOP_OVERFLOW=y +CONFIG_CC_NO_STRINGOP_OVERFLOW=y +CONFIG_ARCH_SUPPORTS_INT128=y +CONFIG_SLAB_OBJ_EXT=y +CONFIG_CGROUPS=y +CONFIG_PAGE_COUNTER=y +# CONFIG_CGROUP_FAVOR_DYNMODS is not set +CONFIG_MEMCG=y +# CONFIG_MEMCG_V1 is not set +CONFIG_BLK_CGROUP=y +CONFIG_CGROUP_WRITEBACK=y +CONFIG_CGROUP_SCHED=y +CONFIG_GROUP_SCHED_WEIGHT=y +CONFIG_FAIR_GROUP_SCHED=y +CONFIG_CFS_BANDWIDTH=y +# CONFIG_RT_GROUP_SCHED is not set +CONFIG_SCHED_MM_CID=y +CONFIG_CGROUP_PIDS=y +# CONFIG_CGROUP_RDMA is not set +# CONFIG_CGROUP_DMEM is not set +CONFIG_CGROUP_FREEZER=y +CONFIG_CGROUP_HUGETLB=y +CONFIG_CPUSETS=y +# CONFIG_CPUSETS_V1 is not set +CONFIG_CGROUP_DEVICE=y +CONFIG_CGROUP_CPUACCT=y +CONFIG_CGROUP_PERF=y +CONFIG_CGROUP_BPF=y +# CONFIG_CGROUP_MISC is not set +# CONFIG_CGROUP_DEBUG is not set +CONFIG_SOCK_CGROUP_DATA=y +CONFIG_NAMESPACES=y +CONFIG_UTS_NS=y +CONFIG_TIME_NS=y +CONFIG_IPC_NS=y +CONFIG_USER_NS=y +CONFIG_PID_NS=y +CONFIG_NET_NS=y +CONFIG_CHECKPOINT_RESTORE=y +# CONFIG_SCHED_AUTOGROUP is not set +# CONFIG_RELAY is not set +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_RD_ZSTD=y +# CONFIG_BOOT_CONFIG is not set +CONFIG_INITRAMFS_PRESERVE_MTIME=y +CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set +CONFIG_HAVE_LD_DEAD_CODE_DATA_ELIMINATION=y +# CONFIG_LD_DEAD_CODE_DATA_ELIMINATION is not set +CONFIG_LD_ORPHAN_WARN=y +CONFIG_LD_ORPHAN_WARN_LEVEL="warn" +CONFIG_SYSCTL=y +CONFIG_SYSCTL_EXCEPTION_TRACE=y +CONFIG_SYSCTL_ARCH_UNALIGN_ALLOW=y +# CONFIG_SYSFS_SYSCALL is not set +CONFIG_EXPERT=y +CONFIG_MULTIUSER=y +# CONFIG_SGETMASK_SYSCALL is not set +CONFIG_FHANDLE=y +CONFIG_POSIX_TIMERS=y +CONFIG_PRINTK=y +CONFIG_BUG=y +CONFIG_ELF_CORE=y +# CONFIG_BASE_SMALL is not set +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_IO_URING=y +CONFIG_ADVISE_SYSCALLS=y +CONFIG_MEMBARRIER=y +CONFIG_KCMP=y +CONFIG_RSEQ=y +# CONFIG_DEBUG_RSEQ is not set +CONFIG_CACHESTAT_SYSCALL=y +# CONFIG_PC104 is not set +CONFIG_KALLSYMS=y +# CONFIG_KALLSYMS_SELFTEST is not set +# CONFIG_KALLSYMS_ALL is not set +CONFIG_ARCH_HAS_MEMBARRIER_CALLBACKS=y +CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y +CONFIG_HAVE_PERF_EVENTS=y +CONFIG_GUEST_PERF_EVENTS=y + +# +# Kernel Performance Events And Counters +# +CONFIG_PERF_EVENTS=y +# CONFIG_DEBUG_PERF_USE_VMALLOC is not set +# end of Kernel Performance Events And Counters + +CONFIG_PROFILING=y + +# +# Kexec and crash features +# +# CONFIG_KEXEC is not set +# CONFIG_KEXEC_FILE is not set +# end of Kexec and crash features +# end of General setup + +CONFIG_64BIT=y +CONFIG_RISCV=y +CONFIG_RUSTC_SUPPORTS_RISCV=y +CONFIG_GCC_SUPPORTS_DYNAMIC_FTRACE=y +CONFIG_RISCV_USE_LINKER_RELAXATION=y +CONFIG_ARCH_MMAP_RND_BITS_MIN=18 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=8 +CONFIG_ARCH_MMAP_RND_BITS_MAX=24 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=17 +CONFIG_RISCV_SBI=y +CONFIG_MMU=y +CONFIG_ARCH_FLATMEM_ENABLE=y +CONFIG_ARCH_SPARSEMEM_ENABLE=y +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_ARCH_SUPPORTS_UPROBES=y +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_GENERIC_BUG=y +CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_GENERIC_CSUM=y +CONFIG_GENERIC_HWEIGHT=y +CONFIG_FIX_EARLYCON_MEM=y +CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 +CONFIG_PGTABLE_LEVELS=5 +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_RISCV_DMA_NONCOHERENT=y +CONFIG_RISCV_NONSTANDARD_CACHE_OPS=y +CONFIG_AS_HAS_INSN=y +CONFIG_AS_HAS_OPTION_ARCH=y + +# +# SoC selection +# +CONFIG_ARCH_MICROCHIP_POLARFIRE=y +CONFIG_ARCH_MICROCHIP=y +# CONFIG_ARCH_RENESAS is not set +CONFIG_ARCH_SIFIVE=y +CONFIG_ARCH_SOPHGO=y +CONFIG_ARCH_SPACEMIT=y +CONFIG_ARCH_STARFIVE=y +CONFIG_SOC_STARFIVE=y +CONFIG_ARCH_SUNXI=y +CONFIG_ARCH_THEAD=y +CONFIG_ARCH_VIRT=y +CONFIG_ARCH_CANAAN=y +# end of SoC selection + +# +# CPU errata selection +# +# CONFIG_ERRATA_ANDES is not set +CONFIG_ERRATA_SIFIVE=y +CONFIG_ERRATA_SIFIVE_CIP_453=y +CONFIG_ERRATA_SIFIVE_CIP_1200=y +CONFIG_ERRATA_THEAD=y +CONFIG_ERRATA_THEAD_MAE=y +CONFIG_ERRATA_THEAD_CMO=y +CONFIG_ERRATA_THEAD_PMU=y +CONFIG_ERRATA_THEAD_GHOSTWRITE=y +# end of CPU errata selection + +# +# Platform type +# +CONFIG_NONPORTABLE=y +# CONFIG_ARCH_RV32I is not set +CONFIG_ARCH_RV64I=y +# CONFIG_CMODEL_MEDLOW is not set +CONFIG_CMODEL_MEDANY=y +CONFIG_SMP=y +# CONFIG_SCHED_MC is not set +CONFIG_NR_CPUS=64 +CONFIG_HOTPLUG_CPU=y +CONFIG_TUNE_GENERIC=y +# CONFIG_NUMA is not set +# CONFIG_RISCV_TICKET_SPINLOCKS is not set +# CONFIG_RISCV_QUEUED_SPINLOCKS is not set +CONFIG_RISCV_COMBO_SPINLOCKS=y +CONFIG_RISCV_ALTERNATIVE=y +CONFIG_RISCV_ALTERNATIVE_EARLY=y +# CONFIG_RISCV_ISA_C is not set +CONFIG_RISCV_ISA_SUPM=y +CONFIG_RISCV_ISA_SVNAPOT=y +CONFIG_RISCV_ISA_SVPBMT=y +CONFIG_TOOLCHAIN_HAS_V=y +CONFIG_RISCV_ISA_V=y +CONFIG_RISCV_ISA_V_DEFAULT_ENABLE=y +CONFIG_RISCV_ISA_V_UCOPY_THRESHOLD=768 +CONFIG_RISCV_ISA_ZAWRS=y +CONFIG_RISCV_ISA_ZBA=y +CONFIG_RISCV_ISA_ZBB=y +CONFIG_RISCV_ISA_ZICBOM=y +CONFIG_RISCV_ISA_ZICBOZ=y +CONFIG_TOOLCHAIN_NEEDS_EXPLICIT_ZICSR_ZIFENCEI=y +CONFIG_FPU=y +CONFIG_IRQ_STACKS=y +CONFIG_THREAD_SIZE_ORDER=2 +CONFIG_RISCV_MISALIGNED=y +CONFIG_RISCV_SCALAR_MISALIGNED=y +CONFIG_RISCV_VECTOR_MISALIGNED=y +CONFIG_RISCV_PROBE_UNALIGNED_ACCESS=y +# CONFIG_RISCV_EMULATED_UNALIGNED_ACCESS is not set +# CONFIG_RISCV_SLOW_UNALIGNED_ACCESS is not set +# CONFIG_RISCV_EFFICIENT_UNALIGNED_ACCESS is not set +CONFIG_RISCV_PROBE_VECTOR_UNALIGNED_ACCESS=y +# CONFIG_RISCV_SLOW_VECTOR_UNALIGNED_ACCESS is not set +# CONFIG_RISCV_EFFICIENT_VECTOR_UNALIGNED_ACCESS is not set + +# +# Vendor extensions +# +CONFIG_RISCV_ISA_VENDOR_EXT=y + +# +# Andes +# +CONFIG_RISCV_ISA_VENDOR_EXT_ANDES=y +# end of Andes + +# +# T-Head +# +CONFIG_RISCV_ISA_VENDOR_EXT_THEAD=y +CONFIG_RISCV_ISA_XTHEADVECTOR=y +# end of T-Head +# end of Vendor extensions +# end of Platform type + +# +# Kernel features +# +# CONFIG_HZ_100 is not set +CONFIG_HZ_250=y +# CONFIG_HZ_300 is not set +# CONFIG_HZ_1000 is not set +CONFIG_HZ=250 +CONFIG_SCHED_HRTICK=y +# CONFIG_RISCV_SBI_V01 is not set +# CONFIG_RISCV_BOOT_SPINWAIT is not set +CONFIG_ARCH_SUPPORTS_KEXEC=y +CONFIG_ARCH_SUPPORTS_KEXEC_FILE=y +CONFIG_ARCH_SUPPORTS_KEXEC_PURGATORY=y +CONFIG_ARCH_SUPPORTS_CRASH_DUMP=y +CONFIG_ARCH_DEFAULT_CRASH_DUMP=y +CONFIG_COMPAT=y +# CONFIG_PARAVIRT is not set +# CONFIG_RELOCATABLE is not set +# CONFIG_RANDOMIZE_BASE is not set +# end of Kernel features + +# +# Boot options +# +CONFIG_CMDLINE="" +# CONFIG_EFI is not set +CONFIG_CC_HAVE_STACKPROTECTOR_TLS=y +CONFIG_STACKPROTECTOR_PER_TASK=y +# CONFIG_PHYS_RAM_BASE_FIXED is not set +# CONFIG_XIP_KERNEL is not set +CONFIG_RISCV_ISA_FALLBACK=y +# CONFIG_BUILTIN_DTB is not set +# end of Boot options + +CONFIG_ARCH_PROC_KCORE_TEXT=y + +# +# Power management options +# +CONFIG_SUSPEND=y +CONFIG_SUSPEND_FREEZER=y +# CONFIG_SUSPEND_SKIP_SYNC is not set +# CONFIG_HIBERNATION is not set +CONFIG_PM_SLEEP=y +CONFIG_PM_SLEEP_SMP=y +# CONFIG_PM_AUTOSLEEP is not set +# CONFIG_PM_USERSPACE_AUTOSLEEP is not set +# CONFIG_PM_WAKELOCKS is not set +CONFIG_PM=y +# CONFIG_PM_DEBUG is not set +CONFIG_PM_CLK=y +CONFIG_PM_GENERIC_DOMAINS=y +# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set +CONFIG_PM_GENERIC_DOMAINS_SLEEP=y +CONFIG_PM_GENERIC_DOMAINS_OF=y +CONFIG_CPU_PM=y +# CONFIG_ENERGY_MODEL is not set +CONFIG_ARCH_HIBERNATION_POSSIBLE=y +CONFIG_ARCH_SUSPEND_POSSIBLE=y +# end of Power management options + +# +# CPU Power Management +# + +# +# CPU Idle +# +CONFIG_CPU_IDLE=y +CONFIG_CPU_IDLE_MULTIPLE_DRIVERS=y +# CONFIG_CPU_IDLE_GOV_LADDER is not set +CONFIG_CPU_IDLE_GOV_MENU=y +# CONFIG_CPU_IDLE_GOV_TEO is not set +CONFIG_DT_IDLE_STATES=y +CONFIG_DT_IDLE_GENPD=y + +# +# RISC-V CPU Idle Drivers +# +CONFIG_RISCV_SBI_CPUIDLE=y +# end of RISC-V CPU Idle Drivers +# end of CPU Idle + +# +# 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_PERFORMANCE=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL is not set +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=m +CONFIG_CPU_FREQ_GOV_USERSPACE=y +CONFIG_CPU_FREQ_GOV_ONDEMAND=y +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m +# CONFIG_CPU_FREQ_GOV_SCHEDUTIL is not set + +# +# CPU frequency scaling drivers +# +CONFIG_CPUFREQ_DT=y +# CONFIG_CPUFREQ_VIRT is not set +CONFIG_CPUFREQ_DT_PLATDEV=y +# CONFIG_ARM_ALLWINNER_SUN50I_CPUFREQ_NVMEM is not set +# end of CPU Frequency scaling +# end of CPU Power Management + +CONFIG_KVM_COMMON=y +CONFIG_HAVE_KVM_IRQCHIP=y +CONFIG_HAVE_KVM_IRQ_ROUTING=y +CONFIG_KVM_MMIO=y +CONFIG_HAVE_KVM_MSI=y +CONFIG_HAVE_KVM_READONLY_MEM=y +CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y +CONFIG_HAVE_KVM_VCPU_ASYNC_IOCTL=y +CONFIG_KVM_XFER_TO_GUEST_WORK=y +CONFIG_KVM_GENERIC_HARDWARE_ENABLING=y +CONFIG_KVM_GENERIC_MMU_NOTIFIER=y +CONFIG_VIRTUALIZATION=y +CONFIG_KVM=m +CONFIG_CPU_MITIGATIONS=y + +# +# General architecture-dependent options +# +CONFIG_HOTPLUG_CORE_SYNC=y +CONFIG_HOTPLUG_CORE_SYNC_DEAD=y +CONFIG_GENERIC_ENTRY=y +# CONFIG_KPROBES is not set +CONFIG_JUMP_LABEL=y +# CONFIG_STATIC_KEYS_SELFTEST is not set +CONFIG_HAVE_64BIT_ALIGNED_ACCESS=y +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y +CONFIG_HAVE_FUNCTION_ERROR_INJECTION=y +CONFIG_TRACE_IRQFLAGS_SUPPORT=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_ARCH_HAS_SET_DIRECT_MAP=y +CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y +CONFIG_ARCH_WANTS_NO_INSTR=y +CONFIG_HAVE_ASM_MODVERSIONS=y +CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y +CONFIG_HAVE_RSEQ=y +CONFIG_HAVE_FUNCTION_ARG_ACCESS_API=y +CONFIG_HAVE_PERF_REGS=y +CONFIG_HAVE_PERF_USER_STACK_DUMP=y +CONFIG_HAVE_ARCH_JUMP_LABEL=y +CONFIG_HAVE_ARCH_JUMP_LABEL_RELATIVE=y +CONFIG_MMU_GATHER_TABLE_FREE=y +CONFIG_MMU_GATHER_RCU_TABLE_FREE=y +CONFIG_MMU_LAZY_TLB_REFCOUNT=y +CONFIG_HAVE_ALIGNED_STRUCT_PAGE=y +CONFIG_ARCH_WEAK_RELEASE_ACQUIRE=y +CONFIG_HAVE_ARCH_SECCOMP=y +CONFIG_HAVE_ARCH_SECCOMP_FILTER=y +CONFIG_SECCOMP=y +CONFIG_SECCOMP_FILTER=y +# CONFIG_SECCOMP_CACHE_DEBUG is not set +CONFIG_HAVE_ARCH_STACKLEAK=y +CONFIG_HAVE_STACKPROTECTOR=y +CONFIG_STACKPROTECTOR=y +CONFIG_STACKPROTECTOR_STRONG=y +CONFIG_LTO_NONE=y +CONFIG_ARCH_SUPPORTS_CFI_CLANG=y +CONFIG_HAVE_CONTEXT_TRACKING_USER=y +CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y +CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y +CONFIG_HAVE_MOVE_PUD=y +CONFIG_HAVE_MOVE_PMD=y +CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y +CONFIG_HAVE_ARCH_HUGE_VMAP=y +CONFIG_HAVE_ARCH_HUGE_VMALLOC=y +CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y +CONFIG_MODULES_USE_ELF_RELA=y +CONFIG_HAVE_IRQ_EXIT_ON_IRQ_STACK=y +CONFIG_HAVE_SOFTIRQ_ON_OWN_STACK=y +CONFIG_SOFTIRQ_ON_OWN_STACK=y +CONFIG_ARCH_HAS_ELF_RANDOMIZE=y +CONFIG_HAVE_ARCH_MMAP_RND_BITS=y +CONFIG_ARCH_MMAP_RND_BITS=18 +CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS=y +CONFIG_ARCH_MMAP_RND_COMPAT_BITS=8 +CONFIG_HAVE_PAGE_SIZE_4KB=y +CONFIG_PAGE_SIZE_4KB=y +CONFIG_PAGE_SIZE_LESS_THAN_64KB=y +CONFIG_PAGE_SIZE_LESS_THAN_256KB=y +CONFIG_PAGE_SHIFT=12 +CONFIG_ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT=y +CONFIG_CLONE_BACKWARDS=y +CONFIG_COMPAT_32BIT_TIME=y +CONFIG_ARCH_SUPPORTS_RT=y +CONFIG_HAVE_ARCH_VMAP_STACK=y +CONFIG_VMAP_STACK=y +CONFIG_HAVE_ARCH_RANDOMIZE_KSTACK_OFFSET=y +CONFIG_RANDOMIZE_KSTACK_OFFSET=y +# CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT is not set +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_LOCK_EVENT_COUNTS is not set +CONFIG_ARCH_HAS_VDSO_ARCH_DATA=y +CONFIG_HAVE_PREEMPT_DYNAMIC=y +CONFIG_HAVE_PREEMPT_DYNAMIC_KEY=y +CONFIG_ARCH_WANT_LD_ORPHAN_WARN=y +CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y +CONFIG_ARCH_SUPPORTS_PAGE_TABLE_CHECK=y +CONFIG_DYNAMIC_SIGFRAME=y +CONFIG_ARCH_HAS_HW_PTE_YOUNG=y +CONFIG_ARCH_HAS_KERNEL_FPU_SUPPORT=y + +# +# GCOV-based kernel profiling +# +# CONFIG_GCOV_KERNEL is not set +CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y +# end of GCOV-based kernel profiling + +CONFIG_HAVE_GCC_PLUGINS=y +CONFIG_FUNCTION_ALIGNMENT=0 +# end of General architecture-dependent options + +CONFIG_RT_MUTEXES=y +CONFIG_MODULES=y +# CONFIG_MODULE_DEBUG is not set +# CONFIG_MODULE_FORCE_LOAD is not set +CONFIG_MODULE_UNLOAD=y +# CONFIG_MODULE_FORCE_UNLOAD is not set +# CONFIG_MODULE_UNLOAD_TAINT_TRACKING is not set +# CONFIG_MODVERSIONS is not set +# CONFIG_MODULE_SRCVERSION_ALL is not set +# CONFIG_MODULE_SIG is not set +# CONFIG_MODULE_COMPRESS is not set +# CONFIG_MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS is not set +CONFIG_MODPROBE_PATH="/sbin/modprobe" +# CONFIG_TRIM_UNUSED_KSYMS is not set +CONFIG_MODULES_TREE_LOOKUP=y +CONFIG_BLOCK=y +CONFIG_BLOCK_LEGACY_AUTOLOAD=y +CONFIG_BLK_CGROUP_RWSTAT=y +CONFIG_BLK_CGROUP_PUNT_BIO=y +CONFIG_BLK_DEV_BSG_COMMON=y +CONFIG_BLK_ICQ=y +# CONFIG_BLK_DEV_BSGLIB is not set +# CONFIG_BLK_DEV_INTEGRITY is not set +CONFIG_BLK_DEV_WRITE_MOUNTED=y +# CONFIG_BLK_DEV_ZONED is not set +CONFIG_BLK_DEV_THROTTLING=y +# CONFIG_BLK_WBT is not set +# CONFIG_BLK_CGROUP_IOLATENCY is not set +# CONFIG_BLK_CGROUP_IOCOST is not set +# CONFIG_BLK_CGROUP_IOPRIO is not set +CONFIG_BLK_DEBUG_FS=y +# CONFIG_BLK_SED_OPAL is not set +# CONFIG_BLK_INLINE_ENCRYPTION is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +CONFIG_EFI_PARTITION=y +# end of Partition Types + +CONFIG_BLK_MQ_PCI=y +CONFIG_BLK_MQ_VIRTIO=y +CONFIG_BLK_PM=y +CONFIG_BLOCK_HOLDER_DEPRECATED=y +CONFIG_BLK_MQ_STACKING=y + +# +# IO Schedulers +# +CONFIG_MQ_IOSCHED_DEADLINE=y +CONFIG_MQ_IOSCHED_KYBER=y +CONFIG_IOSCHED_BFQ=y +CONFIG_BFQ_GROUP_IOSCHED=y +# CONFIG_BFQ_CGROUP_DEBUG is not set +# end of IO Schedulers + +CONFIG_PREEMPT_NOTIFIERS=y +CONFIG_PADATA=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_ARCH_USE_QUEUED_SPINLOCKS=y +CONFIG_QUEUED_SPINLOCKS=y +CONFIG_ARCH_USE_QUEUED_RWLOCKS=y +CONFIG_QUEUED_RWLOCKS=y +CONFIG_ARCH_HAS_MMIOWB=y +CONFIG_MMIOWB=y +CONFIG_ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE=y +CONFIG_ARCH_HAS_PREPARE_SYNC_CORE_CMD=y +CONFIG_ARCH_HAS_SYNC_CORE_BEFORE_USERMODE=y +CONFIG_ARCH_HAS_SYSCALL_WRAPPER=y +CONFIG_FREEZER=y + +# +# Executable file formats +# +CONFIG_BINFMT_ELF=y +CONFIG_COMPAT_BINFMT_ELF=y +CONFIG_ELFCORE=y +CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y +CONFIG_BINFMT_SCRIPT=y +CONFIG_ARCH_HAS_BINFMT_FLAT=y +# CONFIG_BINFMT_FLAT is not set +# CONFIG_BINFMT_MISC is not set +CONFIG_COREDUMP=y +# end of Executable file formats + +# +# Memory Management options +# +CONFIG_SWAP=y +# CONFIG_ZSWAP is not set + +# +# Slab allocator options +# +CONFIG_SLUB=y +CONFIG_KVFREE_RCU_BATCHED=y +# CONFIG_SLUB_TINY is not set +CONFIG_SLAB_MERGE_DEFAULT=y +# CONFIG_SLAB_FREELIST_RANDOM is not set +# CONFIG_SLAB_FREELIST_HARDENED is not set +# CONFIG_SLAB_BUCKETS is not set +# CONFIG_SLUB_STATS is not set +CONFIG_SLUB_CPU_PARTIAL=y +# CONFIG_RANDOM_KMALLOC_CACHES is not set +# end of Slab allocator options + +# CONFIG_SHUFFLE_PAGE_ALLOCATOR is not set +CONFIG_COMPAT_BRK=y +CONFIG_SELECT_MEMORY_MODEL=y +# CONFIG_FLATMEM_MANUAL is not set +CONFIG_SPARSEMEM_MANUAL=y +CONFIG_SPARSEMEM=y +CONFIG_SPARSEMEM_EXTREME=y +CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y +CONFIG_SPARSEMEM_VMEMMAP=y +CONFIG_ARCH_WANT_OPTIMIZE_DAX_VMEMMAP=y +CONFIG_ARCH_WANT_OPTIMIZE_HUGETLB_VMEMMAP=y +CONFIG_HAVE_GUP_FAST=y +CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y +# CONFIG_MEMORY_HOTPLUG is not set +CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y +CONFIG_SPLIT_PTE_PTLOCKS=y +CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y +CONFIG_SPLIT_PMD_PTLOCKS=y +CONFIG_MEMORY_BALLOON=y +CONFIG_BALLOON_COMPACTION=y +CONFIG_COMPACTION=y +CONFIG_COMPACT_UNEVICTABLE_DEFAULT=1 +CONFIG_PAGE_REPORTING=y +CONFIG_MIGRATION=y +CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION=y +CONFIG_PCP_BATCH_SCALE_MAX=5 +CONFIG_PHYS_ADDR_T_64BIT=y +CONFIG_MMU_NOTIFIER=y +# CONFIG_KSM is not set +CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 +CONFIG_ARCH_WANTS_THP_SWAP=y +# CONFIG_TRANSPARENT_HUGEPAGE is not set +CONFIG_PAGE_MAPCOUNT=y +CONFIG_PGTABLE_HAS_HUGE_LEAVES=y +# CONFIG_CMA is not set +CONFIG_GENERIC_EARLY_IOREMAP=y +# CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set +# CONFIG_IDLE_PAGE_TRACKING is not set +CONFIG_ARCH_HAS_CURRENT_STACK_POINTER=y +CONFIG_ARCH_HAS_PTE_DEVMAP=y +CONFIG_ZONE_DMA32=y +CONFIG_VM_EVENT_COUNTERS=y +# CONFIG_PERCPU_STATS is not set +# CONFIG_GUP_TEST is not set +# CONFIG_DMAPOOL_TEST is not set +CONFIG_ARCH_HAS_PTE_SPECIAL=y +CONFIG_MEMFD_CREATE=y +CONFIG_SECRETMEM=y +# CONFIG_ANON_VMA_NAME is not set +# CONFIG_USERFAULTFD is not set +# CONFIG_LRU_GEN is not set +CONFIG_ARCH_SUPPORTS_PER_VMA_LOCK=y +CONFIG_PER_VMA_LOCK=y +CONFIG_LOCK_MM_AND_FIND_VMA=y +CONFIG_EXECMEM=y + +# +# Data Access Monitoring +# +# CONFIG_DAMON is not set +# end of Data Access Monitoring +# end of Memory Management options + +CONFIG_NET=y +CONFIG_NET_INGRESS=y +CONFIG_NET_EGRESS=y +CONFIG_NET_XGRESS=y +CONFIG_SKB_EXTENSIONS=y +CONFIG_NET_DEVMEM=y + +# +# Networking options +# +CONFIG_PACKET=y +# CONFIG_PACKET_DIAG is not set +CONFIG_UNIX=y +CONFIG_AF_UNIX_OOB=y +# CONFIG_UNIX_DIAG is not set +# CONFIG_TLS is not set +CONFIG_XFRM=y +CONFIG_XFRM_ALGO=m +CONFIG_XFRM_USER=m +# CONFIG_XFRM_INTERFACE is not set +# CONFIG_XFRM_SUB_POLICY is not set +# CONFIG_XFRM_MIGRATE is not set +# CONFIG_XFRM_STATISTICS is not set +CONFIG_XFRM_ESP=m +# CONFIG_NET_KEY is not set +# CONFIG_XFRM_IPTFS is not set +# CONFIG_XDP_SOCKETS is not set +CONFIG_NET_HANDSHAKE=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +# CONFIG_IP_FIB_TRIE_STATS is not set +# CONFIG_IP_MULTIPLE_TABLES is not set +# CONFIG_IP_ROUTE_MULTIPATH is not set +# CONFIG_IP_ROUTE_VERBOSE is not set +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +CONFIG_IP_PNP_RARP=y +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE_DEMUX is not set +CONFIG_NET_IP_TUNNEL=y +# CONFIG_IP_MROUTE is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_NET_IPVTI is not set +CONFIG_NET_UDP_TUNNEL=m +# CONFIG_NET_FOU is not set +# CONFIG_NET_FOU_IP_TUNNELS is not set +# CONFIG_INET_AH is not set +CONFIG_INET_ESP=m +# CONFIG_INET_ESP_OFFLOAD is not set +# CONFIG_INET_ESPINTCP is not set +# CONFIG_INET_IPCOMP is not set +CONFIG_INET_TABLE_PERTURB_ORDER=16 +CONFIG_INET_TUNNEL=y +CONFIG_INET_DIAG=y +CONFIG_INET_TCP_DIAG=y +# CONFIG_INET_UDP_DIAG is not set +# CONFIG_INET_RAW_DIAG is not set +# CONFIG_INET_DIAG_DESTROY is not set +# CONFIG_TCP_CONG_ADVANCED is not set +CONFIG_TCP_CONG_CUBIC=y +CONFIG_DEFAULT_TCP_CONG="cubic" +# CONFIG_TCP_AO is not set +# CONFIG_TCP_MD5SIG is not set +CONFIG_IPV6=y +# 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_IPV6_ILA is not set +# CONFIG_IPV6_VTI is not set +CONFIG_IPV6_SIT=y +# 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_IPV6_SEG6_LWTUNNEL is not set +# CONFIG_IPV6_SEG6_HMAC is not set +# CONFIG_IPV6_RPL_LWTUNNEL is not set +# CONFIG_IPV6_IOAM6_LWTUNNEL is not set +# CONFIG_NETLABEL is not set +# CONFIG_MPTCP is not set +CONFIG_NETWORK_SECMARK=y +# CONFIG_NETWORK_PHY_TIMESTAMPING is not set +CONFIG_NETFILTER=y +CONFIG_NETFILTER_ADVANCED=y +CONFIG_BRIDGE_NETFILTER=m + +# +# Core Netfilter Configuration +# +CONFIG_NETFILTER_INGRESS=y +CONFIG_NETFILTER_EGRESS=y +CONFIG_NETFILTER_FAMILY_BRIDGE=y +CONFIG_NETFILTER_BPF_LINK=y +# CONFIG_NETFILTER_NETLINK_ACCT is not set +# CONFIG_NETFILTER_NETLINK_QUEUE is not set +# CONFIG_NETFILTER_NETLINK_LOG is not set +# CONFIG_NETFILTER_NETLINK_OSF is not set +CONFIG_NF_CONNTRACK=m +CONFIG_NF_LOG_SYSLOG=m +# CONFIG_NF_CONNTRACK_MARK is not set +# CONFIG_NF_CONNTRACK_SECMARK is not set +# CONFIG_NF_CONNTRACK_ZONES is not set +# CONFIG_NF_CONNTRACK_PROCFS is not set +# CONFIG_NF_CONNTRACK_EVENTS is not set +# CONFIG_NF_CONNTRACK_TIMEOUT is not set +# CONFIG_NF_CONNTRACK_TIMESTAMP is not set +# CONFIG_NF_CONNTRACK_LABELS is not set +CONFIG_NF_CT_PROTO_DCCP=y +CONFIG_NF_CT_PROTO_SCTP=y +CONFIG_NF_CT_PROTO_UDPLITE=y +# CONFIG_NF_CONNTRACK_AMANDA is not set +CONFIG_NF_CONNTRACK_FTP=m +# CONFIG_NF_CONNTRACK_H323 is not set +# CONFIG_NF_CONNTRACK_IRC is not set +# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set +# CONFIG_NF_CONNTRACK_SNMP is not set +# CONFIG_NF_CONNTRACK_PPTP is not set +# CONFIG_NF_CONNTRACK_SANE is not set +# CONFIG_NF_CONNTRACK_SIP is not set +CONFIG_NF_CONNTRACK_TFTP=m +# CONFIG_NF_CT_NETLINK is not set +CONFIG_NF_NAT=m +CONFIG_NF_NAT_FTP=m +CONFIG_NF_NAT_TFTP=m +CONFIG_NF_NAT_REDIRECT=y +CONFIG_NF_NAT_MASQUERADE=y +# CONFIG_NF_TABLES is not set +CONFIG_NETFILTER_XTABLES=m +# CONFIG_NETFILTER_XTABLES_COMPAT is not set + +# +# Xtables combined modules +# +CONFIG_NETFILTER_XT_MARK=m +# CONFIG_NETFILTER_XT_CONNMARK is not set + +# +# Xtables targets +# +# CONFIG_NETFILTER_XT_TARGET_AUDIT is not set +# CONFIG_NETFILTER_XT_TARGET_CHECKSUM is not set +# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set +# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set +# CONFIG_NETFILTER_XT_TARGET_DSCP is not set +# CONFIG_NETFILTER_XT_TARGET_HL is not set +# CONFIG_NETFILTER_XT_TARGET_HMARK is not set +# CONFIG_NETFILTER_XT_TARGET_IDLETIMER is not set +# CONFIG_NETFILTER_XT_TARGET_LOG is not set +# CONFIG_NETFILTER_XT_TARGET_MARK is not set +CONFIG_NETFILTER_XT_NAT=m +# CONFIG_NETFILTER_XT_TARGET_NETMAP is not set +# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set +# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set +# CONFIG_NETFILTER_XT_TARGET_RATEEST is not set +CONFIG_NETFILTER_XT_TARGET_REDIRECT=m +CONFIG_NETFILTER_XT_TARGET_MASQUERADE=m +# CONFIG_NETFILTER_XT_TARGET_TEE is not set +# CONFIG_NETFILTER_XT_TARGET_TPROXY is not set +# CONFIG_NETFILTER_XT_TARGET_SECMARK is not set +# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set +# CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set + +# +# Xtables matches +# +CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m +# CONFIG_NETFILTER_XT_MATCH_BPF is not set +# CONFIG_NETFILTER_XT_MATCH_CGROUP is not set +# CONFIG_NETFILTER_XT_MATCH_CLUSTER is not set +# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set +# CONFIG_NETFILTER_XT_MATCH_CONNBYTES is not set +# CONFIG_NETFILTER_XT_MATCH_CONNLABEL is not set +# CONFIG_NETFILTER_XT_MATCH_CONNLIMIT is not set +# CONFIG_NETFILTER_XT_MATCH_CONNMARK is not set +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m +# CONFIG_NETFILTER_XT_MATCH_CPU is not set +# CONFIG_NETFILTER_XT_MATCH_DCCP is not set +# CONFIG_NETFILTER_XT_MATCH_DEVGROUP is not set +# CONFIG_NETFILTER_XT_MATCH_DSCP is not set +# CONFIG_NETFILTER_XT_MATCH_ECN is not set +# CONFIG_NETFILTER_XT_MATCH_ESP is not set +# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set +# CONFIG_NETFILTER_XT_MATCH_HELPER is not set +# CONFIG_NETFILTER_XT_MATCH_HL is not set +# CONFIG_NETFILTER_XT_MATCH_IPCOMP is not set +# CONFIG_NETFILTER_XT_MATCH_IPRANGE is not set +CONFIG_NETFILTER_XT_MATCH_IPVS=m +# CONFIG_NETFILTER_XT_MATCH_L2TP is not set +# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set +# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set +# CONFIG_NETFILTER_XT_MATCH_MAC is not set +# CONFIG_NETFILTER_XT_MATCH_MARK is not set +# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set +# CONFIG_NETFILTER_XT_MATCH_NFACCT is not set +# CONFIG_NETFILTER_XT_MATCH_OSF is not set +# CONFIG_NETFILTER_XT_MATCH_OWNER is not set +# CONFIG_NETFILTER_XT_MATCH_POLICY is not set +# CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set +# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set +# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set +# CONFIG_NETFILTER_XT_MATCH_RATEEST is not set +# CONFIG_NETFILTER_XT_MATCH_REALM is not set +# CONFIG_NETFILTER_XT_MATCH_RECENT is not set +# CONFIG_NETFILTER_XT_MATCH_SCTP is not set +# CONFIG_NETFILTER_XT_MATCH_SOCKET is not set +# CONFIG_NETFILTER_XT_MATCH_STATE is not set +# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set +# CONFIG_NETFILTER_XT_MATCH_STRING is not set +# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set +# CONFIG_NETFILTER_XT_MATCH_TIME is not set +# CONFIG_NETFILTER_XT_MATCH_U32 is not set +# end of Core Netfilter Configuration + +# CONFIG_IP_SET is not set +CONFIG_IP_VS=m +# CONFIG_IP_VS_IPV6 is not set +# CONFIG_IP_VS_DEBUG is not set +CONFIG_IP_VS_TAB_BITS=12 + +# +# IPVS transport protocol load balancing support +# +CONFIG_IP_VS_PROTO_TCP=y +CONFIG_IP_VS_PROTO_UDP=y +# CONFIG_IP_VS_PROTO_ESP is not set +# CONFIG_IP_VS_PROTO_AH is not set +# CONFIG_IP_VS_PROTO_SCTP is not set + +# +# IPVS scheduler +# +CONFIG_IP_VS_RR=m +# CONFIG_IP_VS_WRR is not set +# CONFIG_IP_VS_LC is not set +# CONFIG_IP_VS_WLC is not set +# CONFIG_IP_VS_FO is not set +# CONFIG_IP_VS_OVF is not set +# CONFIG_IP_VS_LBLC is not set +# CONFIG_IP_VS_LBLCR is not set +# CONFIG_IP_VS_DH is not set +# CONFIG_IP_VS_SH is not set +# CONFIG_IP_VS_MH is not set +# CONFIG_IP_VS_SED is not set +# CONFIG_IP_VS_NQ is not set +# CONFIG_IP_VS_TWOS is not set + +# +# IPVS SH scheduler +# +CONFIG_IP_VS_SH_TAB_BITS=8 + +# +# IPVS MH scheduler +# +CONFIG_IP_VS_MH_TAB_INDEX=12 + +# +# IPVS application helper +# +# CONFIG_IP_VS_FTP is not set +CONFIG_IP_VS_NFCT=y + +# +# IP: Netfilter Configuration +# +CONFIG_NF_DEFRAG_IPV4=m +CONFIG_IP_NF_IPTABLES_LEGACY=m +# CONFIG_NF_SOCKET_IPV4 is not set +# CONFIG_NF_TPROXY_IPV4 is not set +# CONFIG_NF_DUP_IPV4 is not set +CONFIG_NF_LOG_ARP=m +CONFIG_NF_LOG_IPV4=m +CONFIG_NF_REJECT_IPV4=m +CONFIG_IP_NF_IPTABLES=m +# CONFIG_IP_NF_MATCH_AH is not set +# CONFIG_IP_NF_MATCH_ECN is not set +# CONFIG_IP_NF_MATCH_RPFILTER is not set +# CONFIG_IP_NF_MATCH_TTL is not set +CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_TARGET_REJECT=m +# CONFIG_IP_NF_TARGET_SYNPROXY is not set +CONFIG_IP_NF_NAT=m +CONFIG_IP_NF_TARGET_MASQUERADE=m +# CONFIG_IP_NF_TARGET_NETMAP is not set +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_IP_NF_MANGLE=m +# CONFIG_IP_NF_TARGET_ECN is not set +# CONFIG_IP_NF_TARGET_TTL is not set +# CONFIG_IP_NF_RAW is not set +# CONFIG_IP_NF_SECURITY is not set +# CONFIG_IP_NF_ARPTABLES is not set +# CONFIG_IP_NF_ARPFILTER is not set +# end of IP: Netfilter Configuration + +# +# IPv6: Netfilter Configuration +# +CONFIG_IP6_NF_IPTABLES_LEGACY=m +# CONFIG_NF_SOCKET_IPV6 is not set +# CONFIG_NF_TPROXY_IPV6 is not set +# CONFIG_NF_DUP_IPV6 is not set +CONFIG_NF_REJECT_IPV6=m +CONFIG_NF_LOG_IPV6=m +CONFIG_IP6_NF_IPTABLES=m +# CONFIG_IP6_NF_MATCH_AH is not set +# CONFIG_IP6_NF_MATCH_EUI64 is not set +# CONFIG_IP6_NF_MATCH_FRAG is not set +# CONFIG_IP6_NF_MATCH_OPTS is not set +# CONFIG_IP6_NF_MATCH_HL is not set +CONFIG_IP6_NF_MATCH_IPV6HEADER=m +# CONFIG_IP6_NF_MATCH_MH is not set +# CONFIG_IP6_NF_MATCH_RPFILTER is not set +# CONFIG_IP6_NF_MATCH_RT is not set +# CONFIG_IP6_NF_MATCH_SRH is not set +# CONFIG_IP6_NF_TARGET_HL is not set +CONFIG_IP6_NF_FILTER=m +CONFIG_IP6_NF_TARGET_REJECT=m +# CONFIG_IP6_NF_TARGET_SYNPROXY is not set +CONFIG_IP6_NF_MANGLE=m +# CONFIG_IP6_NF_RAW is not set +# CONFIG_IP6_NF_SECURITY is not set +# CONFIG_IP6_NF_NAT is not set +# end of IPv6: Netfilter Configuration + +CONFIG_NF_DEFRAG_IPV6=m +# CONFIG_NF_CONNTRACK_BRIDGE is not set +# CONFIG_BRIDGE_NF_EBTABLES_LEGACY is not set +# CONFIG_BRIDGE_NF_EBTABLES 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_STP=m +CONFIG_BRIDGE=m +CONFIG_BRIDGE_IGMP_SNOOPING=y +CONFIG_BRIDGE_VLAN_FILTERING=y +# CONFIG_BRIDGE_MRP is not set +# CONFIG_BRIDGE_CFM is not set +# CONFIG_NET_DSA is not set +CONFIG_VLAN_8021Q=m +# CONFIG_VLAN_8021Q_GVRP is not set +# CONFIG_VLAN_8021Q_MVRP is not set +CONFIG_LLC=m +# CONFIG_LLC2 is not set +# CONFIG_ATALK is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_PHONET is not set +# CONFIG_6LOWPAN is not set +# CONFIG_IEEE802154 is not set +CONFIG_NET_SCHED=y + +# +# Queueing/Scheduling +# +# CONFIG_NET_SCH_HTB is not set +# CONFIG_NET_SCH_HFSC is not set +# CONFIG_NET_SCH_PRIO is not set +# CONFIG_NET_SCH_MULTIQ is not set +# CONFIG_NET_SCH_RED is not set +# CONFIG_NET_SCH_SFB is not set +# CONFIG_NET_SCH_SFQ is not set +# CONFIG_NET_SCH_TEQL is not set +# CONFIG_NET_SCH_TBF is not set +# CONFIG_NET_SCH_CBS is not set +# CONFIG_NET_SCH_ETF is not set +# CONFIG_NET_SCH_TAPRIO is not set +# CONFIG_NET_SCH_GRED is not set +# CONFIG_NET_SCH_NETEM is not set +# CONFIG_NET_SCH_DRR is not set +# CONFIG_NET_SCH_MQPRIO is not set +# CONFIG_NET_SCH_SKBPRIO is not set +# CONFIG_NET_SCH_CHOKE is not set +# CONFIG_NET_SCH_QFQ is not set +# CONFIG_NET_SCH_CODEL is not set +# CONFIG_NET_SCH_FQ_CODEL is not set +# CONFIG_NET_SCH_CAKE is not set +# CONFIG_NET_SCH_FQ is not set +# CONFIG_NET_SCH_HHF is not set +# CONFIG_NET_SCH_PIE is not set +# CONFIG_NET_SCH_PLUG is not set +# CONFIG_NET_SCH_ETS is not set +# CONFIG_NET_SCH_DEFAULT is not set + +# +# Classification +# +CONFIG_NET_CLS=y +# CONFIG_NET_CLS_BASIC is not set +# CONFIG_NET_CLS_ROUTE4 is not set +# CONFIG_NET_CLS_FW is not set +# CONFIG_NET_CLS_U32 is not set +# CONFIG_NET_CLS_FLOW is not set +CONFIG_NET_CLS_CGROUP=m +# CONFIG_NET_CLS_BPF is not set +# CONFIG_NET_CLS_FLOWER is not set +# CONFIG_NET_CLS_MATCHALL is not set +# CONFIG_NET_EMATCH is not set +# CONFIG_NET_CLS_ACT is not set +CONFIG_NET_SCH_FIFO=y +# CONFIG_DCB is not set +CONFIG_DNS_RESOLVER=y +# CONFIG_BATMAN_ADV is not set +# CONFIG_OPENVSWITCH is not set +# CONFIG_VSOCKETS is not set +CONFIG_NETLINK_DIAG=y +# CONFIG_MPLS is not set +# CONFIG_NET_NSH is not set +# CONFIG_HSR is not set +# CONFIG_NET_SWITCHDEV is not set +CONFIG_NET_L3_MASTER_DEV=y +# CONFIG_QRTR is not set +# CONFIG_NET_NCSI is not set +CONFIG_PCPU_DEV_REFCNT=y +CONFIG_MAX_SKB_FRAGS=17 +CONFIG_RPS=y +CONFIG_RFS_ACCEL=y +CONFIG_SOCK_RX_QUEUE_MAPPING=y +CONFIG_XPS=y +CONFIG_CGROUP_NET_PRIO=y +CONFIG_CGROUP_NET_CLASSID=y +CONFIG_NET_RX_BUSY_POLL=y +CONFIG_BQL=y +# CONFIG_BPF_STREAM_PARSER is not set +CONFIG_NET_FLOW_LIMIT=y + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +# end of Network testing +# end of Networking options + +# CONFIG_HAMRADIO is not set +CONFIG_CAN=m +CONFIG_CAN_RAW=m +CONFIG_CAN_BCM=m +CONFIG_CAN_GW=m +# CONFIG_CAN_J1939 is not set +# CONFIG_CAN_ISOTP is not set +# CONFIG_BT is not set +# CONFIG_AF_RXRPC is not set +# CONFIG_AF_KCM is not set +# CONFIG_MCTP is not set +CONFIG_WIRELESS=y +# CONFIG_CFG80211 is not set + +# +# CFG80211 needs to be enabled for MAC80211 +# +CONFIG_MAC80211_STA_HASH_MAX_SIZE=0 +# CONFIG_RFKILL is not set +CONFIG_NET_9P=y +CONFIG_NET_9P_FD=y +CONFIG_NET_9P_VIRTIO=y +# CONFIG_NET_9P_USBG is not set +# CONFIG_NET_9P_DEBUG is not set +# CONFIG_CAIF is not set +# CONFIG_CEPH_LIB is not set +# CONFIG_NFC is not set +# CONFIG_PSAMPLE is not set +# CONFIG_NET_IFE is not set +# CONFIG_LWTUNNEL is not set +CONFIG_DST_CACHE=y +CONFIG_GRO_CELLS=y +CONFIG_NET_SELFTESTS=y +CONFIG_NET_SOCK_MSG=y +CONFIG_PAGE_POOL=y +# CONFIG_PAGE_POOL_STATS is not set +CONFIG_FAILOVER=y +CONFIG_ETHTOOL_NETLINK=y + +# +# Device Drivers +# +CONFIG_ARM_AMBA=y +CONFIG_HAVE_PCI=y +CONFIG_GENERIC_PCI_IOMAP=y +CONFIG_PCI=y +CONFIG_PCI_DOMAINS=y +CONFIG_PCI_DOMAINS_GENERIC=y +CONFIG_PCIEPORTBUS=y +# CONFIG_PCIEAER is not set +CONFIG_PCIEASPM=y +CONFIG_PCIEASPM_DEFAULT=y +# CONFIG_PCIEASPM_POWERSAVE is not set +# CONFIG_PCIEASPM_POWER_SUPERSAVE is not set +# CONFIG_PCIEASPM_PERFORMANCE is not set +CONFIG_PCIE_PME=y +# CONFIG_PCIE_PTM is not set +CONFIG_PCI_MSI=y +CONFIG_PCI_QUIRKS=y +# CONFIG_PCI_DEBUG is not set +# CONFIG_PCI_STUB is not set +# CONFIG_PCI_DOE is not set +CONFIG_PCI_ECAM=y +# CONFIG_PCI_IOV is not set +# CONFIG_PCI_PRI is not set +# CONFIG_PCI_PASID is not set +# CONFIG_PCIE_TPH is not set +# CONFIG_PCI_DYNAMIC_OF_NODES is not set +# CONFIG_PCIE_BUS_TUNE_OFF is not set +CONFIG_PCIE_BUS_DEFAULT=y +# CONFIG_PCIE_BUS_SAFE is not set +# CONFIG_PCIE_BUS_PERFORMANCE is not set +# CONFIG_PCIE_BUS_PEER2PEER is not set +CONFIG_VGA_ARB=y +CONFIG_VGA_ARB_MAX_GPUS=16 +# CONFIG_HOTPLUG_PCI is not set + +# +# PCI controller drivers +# +# CONFIG_PCI_FTPCI100 is not set +CONFIG_PCI_HOST_COMMON=y +CONFIG_PCI_HOST_GENERIC=y +CONFIG_PCIE_XILINX=y + +# +# Cadence-based PCIe controllers +# +# CONFIG_PCIE_CADENCE_PLAT_HOST is not set +# end of Cadence-based PCIe controllers + +# +# DesignWare-based PCIe controllers +# +CONFIG_PCIE_DW=y +# CONFIG_PCIE_DW_DEBUGFS is not set +CONFIG_PCIE_DW_HOST=y +# CONFIG_PCI_MESON is not set +# CONFIG_PCIE_DW_PLAT_HOST is not set +CONFIG_PCIE_FU740=y +# end of DesignWare-based PCIe controllers + +# +# Mobiveil-based PCIe controllers +# +# end of Mobiveil-based PCIe controllers + +# +# PLDA-based PCIe controllers +# +CONFIG_PCIE_PLDA_HOST=y +# CONFIG_PCIE_MICROCHIP_HOST is not set +CONFIG_PCIE_STARFIVE_HOST=m +# end of PLDA-based PCIe controllers +# end of PCI controller drivers + +# +# PCI Endpoint +# +# CONFIG_PCI_ENDPOINT is not set +# end of PCI Endpoint + +# +# PCI switch controller drivers +# +# CONFIG_PCI_SW_SWITCHTEC is not set +# end of PCI switch controller drivers + +# CONFIG_PCI_PWRCTL_SLOT is not set +# CONFIG_CXL_BUS is not set +# CONFIG_PCCARD is not set +# CONFIG_RAPIDIO is not set + +# +# Generic Driver Options +# +CONFIG_AUXILIARY_BUS=y +# CONFIG_UEVENT_HELPER is not set +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +# CONFIG_DEVTMPFS_SAFE is not set +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y + +# +# Firmware loader +# +CONFIG_FW_LOADER=y +CONFIG_EXTRA_FIRMWARE="" +# CONFIG_FW_LOADER_USER_HELPER is not set +# CONFIG_FW_LOADER_COMPRESS is not set +CONFIG_FW_CACHE=y +# CONFIG_FW_UPLOAD is not set +# end of Firmware loader + +CONFIG_ALLOW_DEV_COREDUMP=y +# CONFIG_DEBUG_DRIVER is not set +# CONFIG_DEBUG_DEVRES is not set +# CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set +# CONFIG_TEST_ASYNC_DRIVER_PROBE is not set +CONFIG_GENERIC_CPU_DEVICES=y +CONFIG_GENERIC_CPU_VULNERABILITIES=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_FENCE_TRACE is not set +CONFIG_GENERIC_ARCH_TOPOLOGY=y +# CONFIG_FW_DEVLINK_SYNC_STATE_TIMEOUT is not set +# end of Generic Driver Options + +# +# Bus devices +# +# CONFIG_MOXTET is not set +# CONFIG_SUN50I_DE2_BUS is not set +# CONFIG_SUNXI_RSB is not set +# CONFIG_MHI_BUS is not set +# CONFIG_MHI_BUS_EP is not set +# end of Bus devices + +# +# Cache Drivers +# +# CONFIG_AX45MP_L2_CACHE is not set +CONFIG_SIFIVE_CCACHE=y +# CONFIG_STARFIVE_STARLINK_CACHE is not set +# end of Cache Drivers + +# CONFIG_CONNECTOR is not set + +# +# Firmware Drivers +# + +# +# ARM System Control and Management Interface Protocol +# +# end of ARM System Control and Management Interface Protocol + +# CONFIG_FIRMWARE_MEMMAP is not set +# CONFIG_FW_CFG_SYSFS is not set +# CONFIG_TH1520_AON_PROTOCOL is not set +# CONFIG_GOOGLE_FIRMWARE is not set + +# +# Qualcomm firmware drivers +# +# end of Qualcomm firmware drivers + +# +# Tegra firmware driver +# +# end of Tegra firmware driver +# end of Firmware Drivers + +# CONFIG_FWCTL is not set +# CONFIG_GNSS is not set +CONFIG_MTD=y +# CONFIG_MTD_TESTS is not set + +# +# Partition parsers +# +# CONFIG_MTD_CMDLINE_PARTS is not set +CONFIG_MTD_OF_PARTS=y +# CONFIG_MTD_REDBOOT_PARTS is not set +# end of Partition parsers + +# +# User Modules And Translation Layers +# +CONFIG_MTD_BLKDEVS=y +CONFIG_MTD_BLOCK=y + +# +# Note that in some cases UBI block is preferred. See MTD_UBI_BLOCK. +# +# 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 +# CONFIG_MTD_PARTITIONED_MASTER is not set + +# +# RAM/ROM/Flash chip drivers +# +CONFIG_MTD_CFI=y +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_GEN_PROBE=y +CONFIG_MTD_CFI_ADV_OPTIONS=y +CONFIG_MTD_CFI_NOSWAP=y +# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set +# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set +# CONFIG_MTD_CFI_GEOMETRY 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_CFI_I1=y +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_OTP is not set +# CONFIG_MTD_CFI_INTELEXT is not set +# CONFIG_MTD_CFI_AMDSTD is not set +# CONFIG_MTD_CFI_STAA is not set +CONFIG_MTD_CFI_UTIL=y +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set +# end of RAM/ROM/Flash chip drivers + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_COMPLEX_MAPPINGS is not set +# CONFIG_MTD_PHYSMAP is not set +# CONFIG_MTD_PLATRAM is not set +# end of Mapping drivers for chip access + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_DATAFLASH is not set +# CONFIG_MTD_MCHP23K256 is not set +# CONFIG_MTD_MCHP48L640 is not set +# CONFIG_MTD_SST25L is not set +# 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_DOCG3 is not set +# end of Self-contained MTD device drivers + +# +# NAND +# +# CONFIG_MTD_ONENAND is not set +# CONFIG_MTD_RAW_NAND is not set +# CONFIG_MTD_SPI_NAND is not set + +# +# ECC engine support +# +# CONFIG_MTD_NAND_ECC_SW_HAMMING is not set +# CONFIG_MTD_NAND_ECC_SW_BCH is not set +# CONFIG_MTD_NAND_ECC_MXIC is not set +# end of ECC engine support +# end of NAND + +# +# LPDDR & LPDDR2 PCM memory drivers +# +# CONFIG_MTD_LPDDR is not set +# end of LPDDR & LPDDR2 PCM memory drivers + +CONFIG_MTD_SPI_NOR=y +CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y +# CONFIG_MTD_SPI_NOR_SWP_DISABLE is not set +CONFIG_MTD_SPI_NOR_SWP_DISABLE_ON_VOLATILE=y +# CONFIG_MTD_SPI_NOR_SWP_KEEP is not set +# CONFIG_MTD_UBI is not set +# CONFIG_MTD_HYPERBUS is not set +CONFIG_DTC=y +CONFIG_OF=y +# CONFIG_OF_UNITTEST is not set +CONFIG_OF_FLATTREE=y +CONFIG_OF_EARLY_FLATTREE=y +CONFIG_OF_KOBJ=y +CONFIG_OF_ADDRESS=y +CONFIG_OF_IRQ=y +CONFIG_OF_RESERVED_MEM=y +# CONFIG_OF_OVERLAY is not set +# CONFIG_PARPORT is not set +CONFIG_BLK_DEV=y +# CONFIG_BLK_DEV_NULL_BLK is not set +CONFIG_CDROM=y +# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set +# CONFIG_ZRAM is not set +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 +# CONFIG_BLK_DEV_DRBD is not set +# CONFIG_BLK_DEV_NBD is not set +# CONFIG_BLK_DEV_RAM is not set +# CONFIG_CDROM_PKTCDVD is not set +# CONFIG_ATA_OVER_ETH is not set +CONFIG_VIRTIO_BLK=y +# CONFIG_BLK_DEV_RBD is not set +# CONFIG_BLK_DEV_UBLK is not set + +# +# NVME Support +# +CONFIG_NVME_CORE=m +CONFIG_BLK_DEV_NVME=m +# CONFIG_NVME_MULTIPATH is not set +# CONFIG_NVME_VERBOSE_ERRORS is not set +# CONFIG_NVME_HWMON is not set +# CONFIG_NVME_FC is not set +# CONFIG_NVME_TCP is not set +# CONFIG_NVME_HOST_AUTH is not set +# CONFIG_NVME_TARGET is not set +# end of NVME Support + +# +# Misc devices +# +# CONFIG_AD525X_DPOT is not set +# CONFIG_DUMMY_IRQ is not set +# CONFIG_PHANTOM is not set +# CONFIG_RPMB is not set +# CONFIG_TIFM_CORE is not set +# CONFIG_ICS932S401 is not set +# CONFIG_ENCLOSURE_SERVICES is not set +# CONFIG_HP_ILO 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_BH1770 is not set +# CONFIG_SENSORS_APDS990X is not set +# CONFIG_HMC6352 is not set +# CONFIG_DS1682 is not set +# CONFIG_LATTICE_ECP3_CONFIG is not set +# CONFIG_SRAM is not set +# CONFIG_DW_XDATA_PCIE is not set +# CONFIG_PCI_ENDPOINT_TEST is not set +# CONFIG_XILINX_SDFEC is not set +# CONFIG_HISI_HIKEY_USB is not set +# CONFIG_OPEN_DICE is not set +# CONFIG_NTSYNC is not set +# CONFIG_VCPU_STALL_DETECTOR is not set +# CONFIG_NSM is not set +# CONFIG_C2PORT is not set + +# +# EEPROM support +# +# CONFIG_EEPROM_AT24 is not set +# CONFIG_EEPROM_AT25 is not set +# CONFIG_EEPROM_MAX6875 is not set +CONFIG_EEPROM_93CX6=y +# CONFIG_EEPROM_93XX46 is not set +# CONFIG_EEPROM_IDT_89HPESX is not set +# CONFIG_EEPROM_EE1004 is not set +# end of EEPROM support + +# CONFIG_CB710_CORE is not set +# CONFIG_SENSORS_LIS3_SPI is not set +# CONFIG_SENSORS_LIS3_I2C is not set +# CONFIG_ALTERA_STAPL is not set +# CONFIG_GENWQE is not set +# CONFIG_ECHO is not set +# CONFIG_BCM_VK is not set +# CONFIG_MISC_ALCOR_PCI is not set +# CONFIG_MISC_RTSX_PCI is not set +# CONFIG_MISC_RTSX_USB is not set +# CONFIG_UACCE is not set +# CONFIG_PVPANIC is not set +# CONFIG_GP_PCI1XXXX is not set +# end of Misc devices + +# +# SCSI device support +# +CONFIG_SCSI_MOD=y +# CONFIG_RAID_ATTRS is not set +CONFIG_SCSI_COMMON=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_CHR_DEV_ST is not set +CONFIG_BLK_DEV_SR=y +# CONFIG_CHR_DEV_SG is not set +CONFIG_BLK_DEV_BSG=y +# CONFIG_CHR_DEV_SCH is not set +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_LOGGING is not set +# CONFIG_SCSI_SCAN_ASYNC is not set + +# +# 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 +# end of SCSI Transports + +CONFIG_SCSI_LOWLEVEL=y +# CONFIG_ISCSI_TCP is not set +# CONFIG_ISCSI_BOOT_SYSFS is not set +# CONFIG_SCSI_CXGB3_ISCSI is not set +# CONFIG_SCSI_CXGB4_ISCSI is not set +# CONFIG_SCSI_BNX2_ISCSI is not set +# CONFIG_BE2ISCSI is not set +# CONFIG_BLK_DEV_3W_XXXX_RAID is not set +# CONFIG_SCSI_HPSA is not set +# CONFIG_SCSI_3W_9XXX is not set +# CONFIG_SCSI_3W_SAS is not set +# CONFIG_SCSI_ACARD is not set +# CONFIG_SCSI_AACRAID is not set +# CONFIG_SCSI_AIC7XXX is not set +# CONFIG_SCSI_AIC79XX is not set +# CONFIG_SCSI_AIC94XX is not set +# CONFIG_SCSI_MVSAS is not set +# CONFIG_SCSI_MVUMI is not set +# CONFIG_SCSI_ADVANSYS is not set +# CONFIG_SCSI_ARCMSR is not set +# CONFIG_SCSI_ESAS2R is not set +# CONFIG_MEGARAID_NEWGEN is not set +# CONFIG_MEGARAID_LEGACY is not set +# CONFIG_MEGARAID_SAS is not set +# CONFIG_SCSI_MPT3SAS is not set +# CONFIG_SCSI_MPT2SAS is not set +# CONFIG_SCSI_MPI3MR is not set +# CONFIG_SCSI_SMARTPQI is not set +# CONFIG_SCSI_HPTIOP is not set +# CONFIG_SCSI_BUSLOGIC is not set +# CONFIG_SCSI_MYRB is not set +# CONFIG_SCSI_MYRS is not set +# CONFIG_SCSI_SNIC is not set +# CONFIG_SCSI_DMX3191D is not set +# CONFIG_SCSI_FDOMAIN_PCI is not set +# CONFIG_SCSI_IPS is not set +# CONFIG_SCSI_INITIO is not set +# CONFIG_SCSI_INIA100 is not set +# CONFIG_SCSI_STEX is not set +# CONFIG_SCSI_SYM53C8XX_2 is not set +# CONFIG_SCSI_IPR is not set +# CONFIG_SCSI_QLOGIC_1280 is not set +# CONFIG_SCSI_QLA_ISCSI is not set +# CONFIG_SCSI_DC395x is not set +# CONFIG_SCSI_AM53C974 is not set +# CONFIG_SCSI_WD719X is not set +# CONFIG_SCSI_DEBUG is not set +# CONFIG_SCSI_PMCRAID is not set +# CONFIG_SCSI_PM8001 is not set +CONFIG_SCSI_VIRTIO=y +# CONFIG_SCSI_DH is not set +# end of SCSI device support + +CONFIG_ATA=y +CONFIG_SATA_HOST=y +CONFIG_ATA_VERBOSE_ERROR=y +CONFIG_ATA_FORCE=y +CONFIG_SATA_PMP=y + +# +# Controllers with non-SFF native interface +# +CONFIG_SATA_AHCI=y +CONFIG_SATA_MOBILE_LPM_POLICY=3 +CONFIG_SATA_AHCI_PLATFORM=y +# CONFIG_AHCI_DWC is not set +# CONFIG_AHCI_CEVA is not set +# CONFIG_AHCI_SUNXI is not set +# CONFIG_SATA_INIC162X is not set +# CONFIG_SATA_ACARD_AHCI is not set +# CONFIG_SATA_SIL24 is not set +CONFIG_ATA_SFF=y + +# +# SFF controllers with custom DMA interface +# +# CONFIG_PDC_ADMA is not set +# CONFIG_SATA_QSTOR is not set +# CONFIG_SATA_SX4 is not set +CONFIG_ATA_BMDMA=y + +# +# SATA SFF controllers with BMDMA +# +# CONFIG_ATA_PIIX is not set +# CONFIG_SATA_DWC is not set +# CONFIG_SATA_MV is not set +# CONFIG_SATA_NV is not set +# CONFIG_SATA_PROMISE is not set +# CONFIG_SATA_SIL is not set +# CONFIG_SATA_SIS is not set +# CONFIG_SATA_SVW is not set +# CONFIG_SATA_ULI is not set +# CONFIG_SATA_VIA is not set +# CONFIG_SATA_VITESSE is not set + +# +# PATA SFF controllers with BMDMA +# +# CONFIG_PATA_ALI is not set +# CONFIG_PATA_AMD is not set +# CONFIG_PATA_ARTOP is not set +# CONFIG_PATA_ATIIXP is not set +# CONFIG_PATA_ATP867X is not set +# CONFIG_PATA_CMD64X is not set +# CONFIG_PATA_CYPRESS is not set +# CONFIG_PATA_EFAR is not set +# CONFIG_PATA_HPT366 is not set +# CONFIG_PATA_HPT37X is not set +# CONFIG_PATA_HPT3X2N is not set +# CONFIG_PATA_HPT3X3 is not set +# CONFIG_PATA_IT8213 is not set +# CONFIG_PATA_IT821X is not set +# CONFIG_PATA_JMICRON is not set +# CONFIG_PATA_MARVELL is not set +# CONFIG_PATA_NETCELL is not set +# CONFIG_PATA_NINJA32 is not set +# CONFIG_PATA_NS87415 is not set +# CONFIG_PATA_OLDPIIX is not set +# CONFIG_PATA_OPTIDMA is not set +# CONFIG_PATA_PDC2027X is not set +# CONFIG_PATA_PDC_OLD is not set +# CONFIG_PATA_RADISYS is not set +# CONFIG_PATA_RDC is not set +# CONFIG_PATA_SCH is not set +# CONFIG_PATA_SERVERWORKS is not set +# CONFIG_PATA_SIL680 is not set +# CONFIG_PATA_SIS is not set +# CONFIG_PATA_TOSHIBA is not set +# CONFIG_PATA_TRIFLEX is not set +# CONFIG_PATA_VIA is not set +# CONFIG_PATA_WINBOND is not set + +# +# PIO-only SFF controllers +# +# CONFIG_PATA_CMD640_PCI is not set +# CONFIG_PATA_MPIIX is not set +# CONFIG_PATA_NS87410 is not set +# CONFIG_PATA_OPTI is not set +# CONFIG_PATA_OF_PLATFORM is not set +# CONFIG_PATA_RZ1000 is not set + +# +# Generic fallback / legacy drivers +# +# CONFIG_ATA_GENERIC is not set +# CONFIG_PATA_LEGACY is not set +CONFIG_MD=y +# CONFIG_BLK_DEV_MD is not set +CONFIG_MD_BITMAP_FILE=y +# CONFIG_BCACHE is not set +CONFIG_BLK_DEV_DM_BUILTIN=y +CONFIG_BLK_DEV_DM=m +# CONFIG_DM_DEBUG is not set +CONFIG_DM_BUFIO=m +# CONFIG_DM_DEBUG_BLOCK_MANAGER_LOCKING is not set +CONFIG_DM_BIO_PRISON=m +CONFIG_DM_PERSISTENT_DATA=m +# CONFIG_DM_UNSTRIPED is not set +# CONFIG_DM_CRYPT is not set +# CONFIG_DM_SNAPSHOT is not set +CONFIG_DM_THIN_PROVISIONING=m +# CONFIG_DM_CACHE is not set +# CONFIG_DM_WRITECACHE is not set +# CONFIG_DM_EBS is not set +# CONFIG_DM_ERA is not set +# CONFIG_DM_CLONE is not set +# CONFIG_DM_MIRROR is not set +# CONFIG_DM_RAID is not set +# CONFIG_DM_ZERO is not set +# CONFIG_DM_MULTIPATH is not set +# CONFIG_DM_DELAY is not set +# CONFIG_DM_DUST is not set +# CONFIG_DM_UEVENT is not set +# CONFIG_DM_FLAKEY is not set +# CONFIG_DM_VERITY is not set +# CONFIG_DM_SWITCH is not set +# CONFIG_DM_LOG_WRITES is not set +# CONFIG_DM_INTEGRITY is not set +# CONFIG_DM_AUDIT is not set +# CONFIG_DM_VDO is not set +# CONFIG_TARGET_CORE is not set +# CONFIG_FUSION is not set + +# +# IEEE 1394 (FireWire) support +# +# CONFIG_FIREWIRE is not set +# CONFIG_FIREWIRE_NOSY is not set +# end of IEEE 1394 (FireWire) support + +CONFIG_NETDEVICES=y +CONFIG_MII=m +CONFIG_NET_CORE=y +# CONFIG_BONDING is not set +CONFIG_DUMMY=m +# CONFIG_WIREGUARD is not set +# CONFIG_EQUALIZER is not set +# CONFIG_NET_FC is not set +# CONFIG_NET_TEAM is not set +CONFIG_MACVLAN=m +# CONFIG_MACVTAP is not set +CONFIG_IPVLAN_L3S=y +CONFIG_IPVLAN=m +# CONFIG_IPVTAP is not set +CONFIG_VXLAN=m +# CONFIG_GENEVE is not set +# CONFIG_BAREUDP is not set +# CONFIG_GTP is not set +# CONFIG_PFCP is not set +# CONFIG_AMT is not set +# CONFIG_MACSEC is not set +# CONFIG_NETCONSOLE is not set +# CONFIG_TUN is not set +# CONFIG_TUN_VNET_CROSS_LE is not set +CONFIG_VETH=m +CONFIG_VIRTIO_NET=y +# CONFIG_NLMON is not set +# CONFIG_NETKIT is not set +# CONFIG_ARCNET is not set +CONFIG_ETHERNET=y +CONFIG_NET_VENDOR_3COM=y +# CONFIG_VORTEX is not set +# CONFIG_TYPHOON is not set +CONFIG_NET_VENDOR_ADAPTEC=y +# CONFIG_ADAPTEC_STARFIRE is not set +CONFIG_NET_VENDOR_AGERE=y +# CONFIG_ET131X is not set +CONFIG_NET_VENDOR_ALACRITECH=y +# CONFIG_SLICOSS is not set +CONFIG_NET_VENDOR_ALLWINNER=y +# CONFIG_SUN4I_EMAC is not set +CONFIG_NET_VENDOR_ALTEON=y +# CONFIG_ACENIC is not set +# CONFIG_ALTERA_TSE is not set +CONFIG_NET_VENDOR_AMAZON=y +# CONFIG_ENA_ETHERNET is not set +CONFIG_NET_VENDOR_AMD=y +# CONFIG_AMD8111_ETH is not set +# CONFIG_PCNET32 is not set +# CONFIG_PDS_CORE is not set +CONFIG_NET_VENDOR_AQUANTIA=y +# CONFIG_AQTION is not set +CONFIG_NET_VENDOR_ARC=y +CONFIG_NET_VENDOR_ASIX=y +# CONFIG_SPI_AX88796C is not set +CONFIG_NET_VENDOR_ATHEROS=y +# CONFIG_ATL2 is not set +# CONFIG_ATL1 is not set +# CONFIG_ATL1E is not set +# CONFIG_ATL1C is not set +# CONFIG_ALX is not set +CONFIG_NET_VENDOR_BROADCOM=y +# CONFIG_B44 is not set +# CONFIG_BCMGENET is not set +# CONFIG_BNX2 is not set +# CONFIG_CNIC is not set +# CONFIG_TIGON3 is not set +# CONFIG_BNX2X is not set +# CONFIG_SYSTEMPORT is not set +# CONFIG_BNXT is not set +CONFIG_NET_VENDOR_CADENCE=y +CONFIG_MACB=y +# CONFIG_MACB_PCI is not set +CONFIG_NET_VENDOR_CAVIUM=y +# CONFIG_THUNDER_NIC_PF is not set +# CONFIG_THUNDER_NIC_VF is not set +# CONFIG_THUNDER_NIC_BGX is not set +# CONFIG_THUNDER_NIC_RGX is not set +# CONFIG_LIQUIDIO is not set +# CONFIG_LIQUIDIO_VF is not set +CONFIG_NET_VENDOR_CHELSIO=y +# CONFIG_CHELSIO_T1 is not set +# CONFIG_CHELSIO_T3 is not set +# CONFIG_CHELSIO_T4 is not set +# CONFIG_CHELSIO_T4VF is not set +CONFIG_NET_VENDOR_CISCO=y +# CONFIG_ENIC is not set +CONFIG_NET_VENDOR_CORTINA=y +# CONFIG_GEMINI_ETHERNET is not set +CONFIG_NET_VENDOR_DAVICOM=y +# CONFIG_DM9051 is not set +# CONFIG_DNET is not set +CONFIG_NET_VENDOR_DEC=y +# CONFIG_NET_TULIP is not set +CONFIG_NET_VENDOR_DLINK=y +# CONFIG_DL2K is not set +CONFIG_NET_VENDOR_EMULEX=y +# CONFIG_BE2NET is not set +CONFIG_NET_VENDOR_ENGLEDER=y +# CONFIG_TSNEP is not set +CONFIG_NET_VENDOR_EZCHIP=y +# CONFIG_EZCHIP_NPS_MANAGEMENT_ENET is not set +CONFIG_NET_VENDOR_FUNGIBLE=y +# CONFIG_FUN_ETH is not set +CONFIG_NET_VENDOR_GOOGLE=y +CONFIG_NET_VENDOR_HISILICON=y +# CONFIG_HIBMCGE is not set +CONFIG_NET_VENDOR_HUAWEI=y +CONFIG_NET_VENDOR_I825XX=y +CONFIG_NET_VENDOR_INTEL=y +# CONFIG_E100 is not set +# CONFIG_E1000 is not set +CONFIG_E1000E=y +# CONFIG_IGB is not set +# CONFIG_IGBVF is not set +# CONFIG_IXGBE is not set +# CONFIG_IXGBEVF is not set +# CONFIG_I40E is not set +# CONFIG_I40EVF is not set +# CONFIG_ICE is not set +# CONFIG_FM10K is not set +# CONFIG_IGC is not set +# CONFIG_IDPF is not set +# CONFIG_JME is not set +CONFIG_NET_VENDOR_ADI=y +CONFIG_NET_VENDOR_LITEX=y +# CONFIG_LITEX_LITEETH is not set +CONFIG_NET_VENDOR_MARVELL=y +# CONFIG_MVMDIO is not set +# CONFIG_SKGE is not set +# CONFIG_SKY2 is not set +# CONFIG_OCTEON_EP is not set +# CONFIG_OCTEON_EP_VF is not set +CONFIG_NET_VENDOR_MELLANOX=y +# CONFIG_MLX4_EN is not set +# CONFIG_MLX5_CORE is not set +# CONFIG_MLXSW_CORE is not set +# CONFIG_MLXFW is not set +CONFIG_NET_VENDOR_META=y +CONFIG_NET_VENDOR_MICREL=y +# CONFIG_KS8842 is not set +# CONFIG_KS8851 is not set +# CONFIG_KS8851_MLL is not set +# CONFIG_KSZ884X_PCI is not set +CONFIG_NET_VENDOR_MICROCHIP=y +# CONFIG_ENC28J60 is not set +# CONFIG_ENCX24J600 is not set +# CONFIG_LAN743X is not set +# CONFIG_LAN865X is not set +# CONFIG_VCAP is not set +CONFIG_NET_VENDOR_MICROSEMI=y +CONFIG_NET_VENDOR_MICROSOFT=y +CONFIG_NET_VENDOR_MYRI=y +# CONFIG_MYRI10GE is not set +# CONFIG_FEALNX is not set +CONFIG_NET_VENDOR_NI=y +# CONFIG_NI_XGE_MANAGEMENT_ENET is not set +CONFIG_NET_VENDOR_NATSEMI=y +# CONFIG_NATSEMI is not set +# CONFIG_NS83820 is not set +CONFIG_NET_VENDOR_NETERION=y +# CONFIG_S2IO is not set +CONFIG_NET_VENDOR_NETRONOME=y +# CONFIG_NFP is not set +CONFIG_NET_VENDOR_8390=y +# CONFIG_NE2K_PCI is not set +CONFIG_NET_VENDOR_NVIDIA=y +# CONFIG_FORCEDETH is not set +CONFIG_NET_VENDOR_OKI=y +# CONFIG_ETHOC is not set +CONFIG_NET_VENDOR_PACKET_ENGINES=y +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +CONFIG_NET_VENDOR_PENSANDO=y +# CONFIG_IONIC is not set +CONFIG_NET_VENDOR_QLOGIC=y +# CONFIG_QLA3XXX is not set +# CONFIG_QLCNIC is not set +# CONFIG_NETXEN_NIC is not set +# CONFIG_QED is not set +CONFIG_NET_VENDOR_BROCADE=y +# CONFIG_BNA is not set +CONFIG_NET_VENDOR_QUALCOMM=y +# CONFIG_QCA7000_SPI is not set +# CONFIG_QCOM_EMAC is not set +# CONFIG_RMNET is not set +CONFIG_NET_VENDOR_RDC=y +# CONFIG_R6040 is not set +CONFIG_NET_VENDOR_REALTEK=y +# CONFIG_8139CP is not set +# CONFIG_8139TOO is not set +CONFIG_R8169=y +# CONFIG_RTASE is not set +CONFIG_NET_VENDOR_RENESAS=y +CONFIG_NET_VENDOR_ROCKER=y +CONFIG_NET_VENDOR_SAMSUNG=y +# CONFIG_SXGBE_ETH is not set +CONFIG_NET_VENDOR_SEEQ=y +CONFIG_NET_VENDOR_SILAN=y +# CONFIG_SC92031 is not set +CONFIG_NET_VENDOR_SIS=y +# CONFIG_SIS900 is not set +# CONFIG_SIS190 is not set +CONFIG_NET_VENDOR_SOLARFLARE=y +# CONFIG_SFC is not set +# CONFIG_SFC_FALCON is not set +CONFIG_NET_VENDOR_SMSC=y +# CONFIG_EPIC100 is not set +# CONFIG_SMSC911X is not set +# CONFIG_SMSC9420 is not set +CONFIG_NET_VENDOR_SOCIONEXT=y +CONFIG_NET_VENDOR_STMICRO=y +CONFIG_STMMAC_ETH=m +# CONFIG_STMMAC_SELFTESTS is not set +CONFIG_STMMAC_PLATFORM=m +# CONFIG_DWMAC_DWC_QOS_ETH is not set +CONFIG_DWMAC_GENERIC=m +CONFIG_DWMAC_SOPHGO=m +CONFIG_DWMAC_STARFIVE=m +CONFIG_DWMAC_SUNXI=m +CONFIG_DWMAC_SUN8I=m +CONFIG_DWMAC_THEAD=m +# CONFIG_DWMAC_INTEL_PLAT is not set +# CONFIG_STMMAC_PCI is not set +CONFIG_NET_VENDOR_SUN=y +# CONFIG_HAPPYMEAL is not set +# CONFIG_SUNGEM is not set +# CONFIG_CASSINI is not set +# CONFIG_NIU is not set +CONFIG_NET_VENDOR_SYNOPSYS=y +# CONFIG_DWC_XLGMAC is not set +CONFIG_NET_VENDOR_TEHUTI=y +# CONFIG_TEHUTI is not set +# CONFIG_TEHUTI_TN40 is not set +CONFIG_NET_VENDOR_TI=y +# CONFIG_TI_CPSW_PHY_SEL is not set +# CONFIG_TLAN is not set +CONFIG_NET_VENDOR_VERTEXCOM=y +# CONFIG_MSE102X is not set +CONFIG_NET_VENDOR_VIA=y +# CONFIG_VIA_RHINE is not set +# CONFIG_VIA_VELOCITY is not set +CONFIG_NET_VENDOR_WANGXUN=y +# CONFIG_NGBE is not set +# CONFIG_TXGBE is not set +CONFIG_NET_VENDOR_WIZNET=y +# CONFIG_WIZNET_W5100 is not set +# CONFIG_WIZNET_W5300 is not set +CONFIG_NET_VENDOR_XILINX=y +# CONFIG_XILINX_EMACLITE is not set +# CONFIG_XILINX_LL_TEMAC is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +CONFIG_PHYLINK=y +CONFIG_PHYLIB=y +CONFIG_SWPHY=y +CONFIG_FIXED_PHY=y +# CONFIG_SFP is not set + +# +# MII PHY device drivers +# +# CONFIG_AIR_EN8811H_PHY is not set +# CONFIG_AMD_PHY is not set +# CONFIG_ADIN_PHY is not set +# CONFIG_ADIN1100_PHY is not set +# CONFIG_AQUANTIA_PHY is not set +# CONFIG_AX88796B_PHY is not set +# CONFIG_BROADCOM_PHY is not set +# CONFIG_BCM54140_PHY is not set +# CONFIG_BCM7XXX_PHY is not set +# CONFIG_BCM84881_PHY is not set +# CONFIG_BCM87XX_PHY is not set +# CONFIG_CICADA_PHY is not set +# CONFIG_CORTINA_PHY is not set +# CONFIG_DAVICOM_PHY is not set +# CONFIG_ICPLUS_PHY is not set +# CONFIG_LXT_PHY is not set +# CONFIG_INTEL_XWAY_PHY is not set +# CONFIG_LSI_ET1011C_PHY is not set +# CONFIG_MARVELL_PHY is not set +# CONFIG_MARVELL_10G_PHY is not set +# CONFIG_MARVELL_88Q2XXX_PHY is not set +# CONFIG_MARVELL_88X2222_PHY is not set +# CONFIG_MAXLINEAR_GPHY is not set +# CONFIG_MEDIATEK_GE_PHY is not set +CONFIG_MICREL_PHY=y +# CONFIG_MICROCHIP_T1S_PHY is not set +# CONFIG_MICROCHIP_PHY is not set +# CONFIG_MICROCHIP_T1_PHY is not set +CONFIG_MICROSEMI_PHY=y +CONFIG_MOTORCOMM_PHY=y +# CONFIG_NATIONAL_PHY is not set +# CONFIG_NXP_CBTX_PHY is not set +# CONFIG_NXP_C45_TJA11XX_PHY is not set +# CONFIG_NXP_TJA11XX_PHY is not set +# CONFIG_NCN26000_PHY is not set +# CONFIG_AT803X_PHY is not set +# CONFIG_QCA83XX_PHY is not set +# CONFIG_QCA808X_PHY is not set +# CONFIG_QCA807X_PHY is not set +# CONFIG_QSEMI_PHY is not set +CONFIG_REALTEK_PHY=y +# CONFIG_REALTEK_PHY_HWMON is not set +# CONFIG_RENESAS_PHY is not set +# CONFIG_ROCKCHIP_PHY is not set +# CONFIG_SMSC_PHY is not set +# CONFIG_STE10XP is not set +# CONFIG_TERANETICS_PHY is not set +# CONFIG_DP83822_PHY is not set +# CONFIG_DP83TC811_PHY is not set +# CONFIG_DP83848_PHY is not set +# CONFIG_DP83867_PHY is not set +# CONFIG_DP83869_PHY is not set +# CONFIG_DP83TD510_PHY is not set +# CONFIG_DP83TG720_PHY is not set +# CONFIG_VITESSE_PHY is not set +# CONFIG_XILINX_GMII2RGMII is not set +# CONFIG_MICREL_KS8995MA is not set +# CONFIG_PSE_CONTROLLER is not set +CONFIG_CAN_DEV=m +# CONFIG_CAN_VCAN is not set +# CONFIG_CAN_VXCAN is not set +CONFIG_CAN_NETLINK=y +CONFIG_CAN_CALC_BITTIMING=y +# CONFIG_CAN_CAN327 is not set +# CONFIG_CAN_FLEXCAN is not set +# CONFIG_CAN_GRCAN is not set +# CONFIG_CAN_KVASER_PCIEFD is not set +# CONFIG_CAN_SLCAN is not set +# CONFIG_CAN_SUN4I is not set +# CONFIG_CAN_C_CAN is not set +# CONFIG_CAN_CC770 is not set +# CONFIG_CAN_CTUCANFD_PCI is not set +# CONFIG_CAN_CTUCANFD_PLATFORM is not set +# CONFIG_CAN_ESD_402_PCI is not set +# CONFIG_CAN_IFI_CANFD is not set +# CONFIG_CAN_M_CAN is not set +# CONFIG_CAN_PEAK_PCIEFD is not set +# CONFIG_CAN_SJA1000 is not set +# CONFIG_CAN_SOFTING is not set + +# +# CAN SPI interfaces +# +# CONFIG_CAN_HI311X is not set +# CONFIG_CAN_MCP251X is not set +# CONFIG_CAN_MCP251XFD is not set +# end of CAN SPI interfaces + +# +# CAN USB interfaces +# +# CONFIG_CAN_8DEV_USB is not set +# CONFIG_CAN_EMS_USB is not set +# CONFIG_CAN_ESD_USB is not set +# CONFIG_CAN_ETAS_ES58X is not set +# CONFIG_CAN_F81604 is not set +# CONFIG_CAN_GS_USB is not set +# CONFIG_CAN_KVASER_USB is not set +# CONFIG_CAN_MCBA_USB is not set +# CONFIG_CAN_PEAK_USB is not set +# CONFIG_CAN_UCAN is not set +# end of CAN USB interfaces + +# CONFIG_CAN_DEBUG_DEVICES is not set +CONFIG_MDIO_DEVICE=y +CONFIG_MDIO_BUS=y +CONFIG_FWNODE_MDIO=y +CONFIG_OF_MDIO=y +CONFIG_MDIO_DEVRES=y +# CONFIG_MDIO_SUN4I is not set +# CONFIG_MDIO_BITBANG is not set +# CONFIG_MDIO_BCM_UNIMAC is not set +# CONFIG_MDIO_HISI_FEMAC is not set +# CONFIG_MDIO_MVUSB is not set +# CONFIG_MDIO_MSCC_MIIM is not set +# CONFIG_MDIO_OCTEON is not set +# CONFIG_MDIO_IPQ4019 is not set +# CONFIG_MDIO_IPQ8064 is not set +# CONFIG_MDIO_THUNDER is not set + +# +# MDIO Multiplexers +# +CONFIG_MDIO_BUS_MUX=m +# CONFIG_MDIO_BUS_MUX_GPIO is not set +# CONFIG_MDIO_BUS_MUX_MULTIPLEXER is not set +# CONFIG_MDIO_BUS_MUX_MMIOREG is not set + +# +# PCS device drivers +# +CONFIG_PCS_XPCS=m +# end of PCS device drivers + +# CONFIG_PPP is not set +# CONFIG_SLIP is not set +CONFIG_USB_NET_DRIVERS=y +# CONFIG_USB_CATC is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_RTL8150 is not set +# CONFIG_USB_RTL8152 is not set +# CONFIG_USB_LAN78XX is not set +# CONFIG_USB_USBNET is not set +# CONFIG_USB_IPHETH is not set +CONFIG_WLAN=y +CONFIG_WLAN_VENDOR_ADMTEK=y +CONFIG_WLAN_VENDOR_ATH=y +# CONFIG_ATH_DEBUG is not set +# CONFIG_ATH5K_PCI is not set +CONFIG_WLAN_VENDOR_ATMEL=y +CONFIG_WLAN_VENDOR_BROADCOM=y +CONFIG_WLAN_VENDOR_INTEL=y +CONFIG_WLAN_VENDOR_INTERSIL=y +CONFIG_WLAN_VENDOR_MARVELL=y +CONFIG_WLAN_VENDOR_MEDIATEK=y +CONFIG_WLAN_VENDOR_MICROCHIP=y +CONFIG_WLAN_VENDOR_PURELIFI=y +CONFIG_WLAN_VENDOR_RALINK=y +CONFIG_WLAN_VENDOR_REALTEK=y +CONFIG_WLAN_VENDOR_RSI=y +CONFIG_WLAN_VENDOR_SILABS=y +CONFIG_WLAN_VENDOR_ST=y +CONFIG_WLAN_VENDOR_TI=y +CONFIG_WLAN_VENDOR_ZYDAS=y +CONFIG_WLAN_VENDOR_QUANTENNA=y +# CONFIG_WAN is not set + +# +# Wireless WAN +# +# CONFIG_WWAN is not set +# end of Wireless WAN + +# CONFIG_VMXNET3 is not set +# CONFIG_NETDEVSIM is not set +CONFIG_NET_FAILOVER=y +# CONFIG_ISDN is not set + +# +# Input device support +# +CONFIG_INPUT=y +# CONFIG_INPUT_FF_MEMLESS is not set +# CONFIG_INPUT_SPARSEKMAP is not set +# CONFIG_INPUT_MATRIXKMAP is not set +CONFIG_INPUT_VIVALDIFMAP=y + +# +# Userland interfaces +# +CONFIG_INPUT_MOUSEDEV=y +# CONFIG_INPUT_MOUSEDEV_PSAUX is not set +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_EVDEV is not set + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +# CONFIG_KEYBOARD_ADC is not set +# CONFIG_KEYBOARD_ADP5588 is not set +# CONFIG_KEYBOARD_ADP5589 is not set +CONFIG_KEYBOARD_ATKBD=y +# CONFIG_KEYBOARD_QT1050 is not set +# CONFIG_KEYBOARD_QT1070 is not set +# CONFIG_KEYBOARD_QT2160 is not set +# CONFIG_KEYBOARD_DLINK_DIR685 is not set +# CONFIG_KEYBOARD_LKKBD is not set +# CONFIG_KEYBOARD_GPIO is not set +# CONFIG_KEYBOARD_GPIO_POLLED is not set +# CONFIG_KEYBOARD_TCA6416 is not set +# CONFIG_KEYBOARD_TCA8418 is not set +# CONFIG_KEYBOARD_MATRIX is not set +# CONFIG_KEYBOARD_LM8333 is not set +# CONFIG_KEYBOARD_MAX7359 is not set +# CONFIG_KEYBOARD_MPR121 is not set +# CONFIG_KEYBOARD_NEWTON is not set +# CONFIG_KEYBOARD_OPENCORES is not set +# CONFIG_KEYBOARD_PINEPHONE is not set +# CONFIG_KEYBOARD_SAMSUNG is not set +# CONFIG_KEYBOARD_GOLDFISH_EVENTS is not set +# CONFIG_KEYBOARD_STOWAWAY is not set +# CONFIG_KEYBOARD_SUNKBD is not set +CONFIG_KEYBOARD_SUN4I_LRADC=m +# CONFIG_KEYBOARD_OMAP4 is not set +# CONFIG_KEYBOARD_XTKBD is not set +# CONFIG_KEYBOARD_CAP11XX is not set +# CONFIG_KEYBOARD_BCM is not set +# CONFIG_KEYBOARD_CYPRESS_SF is not set +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 is not set +# CONFIG_MOUSE_PS2_SENTELIC is not set +# CONFIG_MOUSE_PS2_TOUCHKIT is not set +CONFIG_MOUSE_PS2_FOCALTECH=y +CONFIG_MOUSE_PS2_SMBUS=y +# CONFIG_MOUSE_SERIAL is not set +# CONFIG_MOUSE_APPLETOUCH is not set +# CONFIG_MOUSE_BCM5974 is not set +# CONFIG_MOUSE_CYAPA is not set +# CONFIG_MOUSE_ELAN_I2C is not set +# CONFIG_MOUSE_VSXXXAA is not set +# CONFIG_MOUSE_GPIO is not set +# CONFIG_MOUSE_SYNAPTICS_I2C is not set +# CONFIG_MOUSE_SYNAPTICS_USB is not set +# CONFIG_INPUT_JOYSTICK is not set +# CONFIG_INPUT_TABLET is not set +# CONFIG_INPUT_TOUCHSCREEN is not set +# CONFIG_INPUT_MISC is not set +# CONFIG_RMI4_CORE is not set + +# +# Hardware I/O ports +# +CONFIG_SERIO=y +CONFIG_SERIO_SERPORT=y +# CONFIG_SERIO_AMBAKMI is not set +# CONFIG_SERIO_PCIPS2 is not set +CONFIG_SERIO_LIBPS2=y +# CONFIG_SERIO_RAW is not set +# CONFIG_SERIO_ALTERA_PS2 is not set +# CONFIG_SERIO_PS2MULT is not set +# CONFIG_SERIO_ARC_PS2 is not set +# CONFIG_SERIO_APBPS2 is not set +# CONFIG_SERIO_SUN4I_PS2 is not set +# CONFIG_SERIO_GPIO_PS2 is not set +# CONFIG_USERIO is not set +# CONFIG_GAMEPORT is not set +# end of Hardware I/O ports +# end of Input device support + +# +# Character devices +# +CONFIG_TTY=y +CONFIG_VT=y +CONFIG_CONSOLE_TRANSLATIONS=y +CONFIG_VT_CONSOLE=y +CONFIG_VT_CONSOLE_SLEEP=y +CONFIG_VT_HW_CONSOLE_BINDING=y +CONFIG_UNIX98_PTYS=y +CONFIG_LEGACY_PTYS=y +CONFIG_LEGACY_PTY_COUNT=256 +CONFIG_LEGACY_TIOCSTI=y +CONFIG_LDISC_AUTOLOAD=y + +# +# Serial drivers +# +CONFIG_SERIAL_EARLYCON=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y +CONFIG_SERIAL_8250_16550A_VARIANTS=y +# CONFIG_SERIAL_8250_FINTEK is not set +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_DMA=y +CONFIG_SERIAL_8250_PCILIB=y +CONFIG_SERIAL_8250_PCI=y +CONFIG_SERIAL_8250_EXAR=y +CONFIG_SERIAL_8250_NR_UARTS=4 +CONFIG_SERIAL_8250_RUNTIME_UARTS=4 +# CONFIG_SERIAL_8250_EXTENDED is not set +# CONFIG_SERIAL_8250_PCI1XXXX is not set +CONFIG_SERIAL_8250_DWLIB=y +CONFIG_SERIAL_8250_DW=y +# CONFIG_SERIAL_8250_RT288X is not set +CONFIG_SERIAL_8250_PERICOM=y +CONFIG_SERIAL_OF_PLATFORM=y + +# +# Non-8250 serial port support +# +# CONFIG_SERIAL_AMBA_PL010 is not set +# CONFIG_SERIAL_AMBA_PL011 is not set +# CONFIG_SERIAL_EARLYCON_SEMIHOST is not set +CONFIG_SERIAL_EARLYCON_RISCV_SBI=y +# CONFIG_SERIAL_MAX3100 is not set +# CONFIG_SERIAL_MAX310X is not set +# CONFIG_SERIAL_UARTLITE is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +# CONFIG_SERIAL_JSM is not set +CONFIG_SERIAL_SIFIVE=y +CONFIG_SERIAL_SIFIVE_CONSOLE=y +# CONFIG_SERIAL_SCCNXP is not set +# CONFIG_SERIAL_SC16IS7XX 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_SERIAL_ARC is not set +# CONFIG_SERIAL_RP2 is not set +# CONFIG_SERIAL_FSL_LPUART is not set +# CONFIG_SERIAL_FSL_LINFLEXUART is not set +# CONFIG_SERIAL_CONEXANT_DIGICOLOR is not set +# CONFIG_SERIAL_SPRD is not set +# end of Serial drivers + +CONFIG_SERIAL_MCTRL_GPIO=y +# CONFIG_SERIAL_NONSTANDARD is not set +# CONFIG_GOLDFISH_TTY is not set +# CONFIG_N_GSM is not set +# CONFIG_NOZOMI is not set +# CONFIG_NULL_TTY is not set +CONFIG_HVC_DRIVER=y +# CONFIG_HVC_RISCV_SBI is not set +# CONFIG_RPMSG_TTY is not set +# CONFIG_SERIAL_DEV_BUS is not set +# CONFIG_TTY_PRINTK is not set +CONFIG_VIRTIO_CONSOLE=y +# CONFIG_IPMI_HANDLER is not set +CONFIG_HW_RANDOM=y +# CONFIG_HW_RANDOM_TIMERIOMEM is not set +# CONFIG_HW_RANDOM_BA431 is not set +CONFIG_HW_RANDOM_VIRTIO=y +# CONFIG_HW_RANDOM_CCTRNG is not set +# CONFIG_HW_RANDOM_XIPHERA is not set +CONFIG_HW_RANDOM_JH7110=m +# CONFIG_APPLICOM is not set +CONFIG_DEVMEM=y +CONFIG_DEVPORT=y +# CONFIG_TCG_TPM is not set +# CONFIG_XILLYBUS is not set +# CONFIG_XILLYUSB is not set +# end of Character devices + +# +# I2C support +# +CONFIG_I2C=y +CONFIG_I2C_BOARDINFO=y +CONFIG_I2C_CHARDEV=m +# CONFIG_I2C_MUX is not set +CONFIG_I2C_HELPER_AUTO=y +CONFIG_I2C_ALGOBIT=m + +# +# I2C Hardware Bus support +# + +# +# PC SMBus host controller drivers +# +# CONFIG_I2C_ALI1535 is not set +# CONFIG_I2C_ALI1563 is not set +# CONFIG_I2C_ALI15X3 is not set +# CONFIG_I2C_AMD756 is not set +# CONFIG_I2C_AMD8111 is not set +# CONFIG_I2C_I801 is not set +# CONFIG_I2C_ISCH is not set +# CONFIG_I2C_PIIX4 is not set +# CONFIG_I2C_NFORCE2 is not set +# CONFIG_I2C_NVIDIA_GPU is not set +# CONFIG_I2C_SIS5595 is not set +# CONFIG_I2C_SIS630 is not set +# CONFIG_I2C_SIS96X is not set +# CONFIG_I2C_VIA is not set +# CONFIG_I2C_VIAPRO is not set + +# +# I2C system bus drivers (mostly embedded / system-on-chip) +# +# CONFIG_I2C_CADENCE is not set +# CONFIG_I2C_CBUS_GPIO is not set +CONFIG_I2C_DESIGNWARE_CORE=y +# CONFIG_I2C_DESIGNWARE_SLAVE is not set +CONFIG_I2C_DESIGNWARE_PLATFORM=y +# CONFIG_I2C_DESIGNWARE_PCI is not set +# CONFIG_I2C_EMEV2 is not set +# CONFIG_I2C_GPIO is not set +# CONFIG_I2C_K1 is not set +# CONFIG_I2C_MICROCHIP_CORE is not set +CONFIG_I2C_MV64XXX=m +# CONFIG_I2C_NOMADIK is not set +# CONFIG_I2C_OCORES is not set +# CONFIG_I2C_PCA_PLATFORM is not set +# CONFIG_I2C_RK3X is not set +# CONFIG_I2C_SIMTEC is not set +# CONFIG_I2C_XILINX is not set + +# +# External I2C/SMBus adapter drivers +# +# CONFIG_I2C_DIOLAN_U2C is not set +# CONFIG_I2C_CP2615 is not set +# CONFIG_I2C_PCI1XXXX is not set +# CONFIG_I2C_ROBOTFUZZ_OSIF is not set +# CONFIG_I2C_TAOS_EVM is not set +# CONFIG_I2C_TINY_USB is not set + +# +# Other I2C/SMBus bus drivers +# +# CONFIG_I2C_VIRTIO is not set +# end of I2C Hardware Bus support + +# CONFIG_I2C_STUB is not set +# CONFIG_I2C_SLAVE is not set +# CONFIG_I2C_DEBUG_CORE is not set +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +# end of I2C support + +# CONFIG_I3C is not set +CONFIG_SPI=y +# CONFIG_SPI_DEBUG is not set +CONFIG_SPI_MASTER=y +CONFIG_SPI_MEM=y + +# +# SPI Master Controller Drivers +# +# CONFIG_SPI_ALTERA is not set +# CONFIG_SPI_AXI_SPI_ENGINE is not set +# CONFIG_SPI_BITBANG is not set +# CONFIG_SPI_CADENCE is not set +CONFIG_SPI_CADENCE_QUADSPI=m +# CONFIG_SPI_CADENCE_XSPI is not set +# CONFIG_SPI_CH341 is not set +# CONFIG_SPI_DESIGNWARE is not set +# CONFIG_SPI_GPIO is not set +# CONFIG_SPI_FSL_SPI is not set +# CONFIG_SPI_MICROCHIP_CORE is not set +# CONFIG_SPI_MICROCHIP_CORE_QSPI is not set +# CONFIG_SPI_OC_TINY is not set +# CONFIG_SPI_PCI1XXXX is not set +CONFIG_SPI_PL022=m +# CONFIG_SPI_SC18IS602 is not set +CONFIG_SPI_SIFIVE=y +# CONFIG_SPI_SN_F_OSPI is not set +# CONFIG_SPI_SG2044_NOR is not set +# CONFIG_SPI_SUN4I is not set +CONFIG_SPI_SUN6I=y +# CONFIG_SPI_MXIC is not set +# CONFIG_SPI_XCOMM is not set +# CONFIG_SPI_XILINX is not set +# CONFIG_SPI_ZYNQMP_GQSPI is not set +# CONFIG_SPI_AMD is not set + +# +# SPI Multiplexer support +# +# CONFIG_SPI_MUX is not set + +# +# SPI Protocol Masters +# +# CONFIG_SPI_SPIDEV is not set +# CONFIG_SPI_LOOPBACK_TEST is not set +# CONFIG_SPI_TLE62X0 is not set +# CONFIG_SPI_SLAVE is not set +# CONFIG_SPMI is not set +# CONFIG_HSI is not set +# CONFIG_PPS is not set + +# +# PTP clock support +# +# CONFIG_PTP_1588_CLOCK is not set +CONFIG_PTP_1588_CLOCK_OPTIONAL=y + +# +# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks. +# +# end of PTP clock support + +CONFIG_PINCTRL=y +CONFIG_GENERIC_PINCTRL_GROUPS=y +CONFIG_PINMUX=y +CONFIG_GENERIC_PINMUX_FUNCTIONS=y +CONFIG_PINCONF=y +CONFIG_GENERIC_PINCONF=y +# CONFIG_DEBUG_PINCTRL is not set +# CONFIG_PINCTRL_AXP209 is not set +# CONFIG_PINCTRL_AW9523 is not set +# CONFIG_PINCTRL_CY8C95X0 is not set +# CONFIG_PINCTRL_K230 is not set +# CONFIG_PINCTRL_MCP23S08 is not set +# CONFIG_PINCTRL_MICROCHIP_SGPIO is not set +# CONFIG_PINCTRL_OCELOT is not set +# CONFIG_PINCTRL_SINGLE is not set +# CONFIG_PINCTRL_STMFX is not set +# CONFIG_PINCTRL_SX150X is not set +CONFIG_PINCTRL_TH1520=y + +# +# Renesas pinctrl drivers +# +# end of Renesas pinctrl drivers + +CONFIG_PINCTRL_SOPHGO_COMMON=y +CONFIG_PINCTRL_SOPHGO_CV18XX_OPS=y +CONFIG_PINCTRL_SOPHGO_CV1800B=y +CONFIG_PINCTRL_SOPHGO_CV1812H=y +CONFIG_PINCTRL_SOPHGO_SG2000=y +CONFIG_PINCTRL_SOPHGO_SG2002=y +# CONFIG_PINCTRL_SOPHGO_SG2042 is not set +# CONFIG_PINCTRL_SOPHGO_SG2044 is not set +CONFIG_PINCTRL_SPACEMIT_K1=y +CONFIG_PINCTRL_STARFIVE_JH7100=y +CONFIG_PINCTRL_STARFIVE_JH7110=y +CONFIG_PINCTRL_STARFIVE_JH7110_SYS=y +CONFIG_PINCTRL_STARFIVE_JH7110_AON=y +CONFIG_PINCTRL_SUNXI=y +# CONFIG_PINCTRL_SUN4I_A10 is not set +# CONFIG_PINCTRL_SUN5I is not set +# CONFIG_PINCTRL_SUN6I_A31 is not set +# CONFIG_PINCTRL_SUN6I_A31_R is not set +# CONFIG_PINCTRL_SUN8I_A23 is not set +# CONFIG_PINCTRL_SUN8I_A33 is not set +# CONFIG_PINCTRL_SUN8I_A83T is not set +# CONFIG_PINCTRL_SUN8I_A83T_R is not set +# CONFIG_PINCTRL_SUN8I_A23_R is not set +# CONFIG_PINCTRL_SUN8I_H3 is not set +# CONFIG_PINCTRL_SUN8I_H3_R is not set +# CONFIG_PINCTRL_SUN8I_V3S is not set +# CONFIG_PINCTRL_SUN9I_A80 is not set +# CONFIG_PINCTRL_SUN9I_A80_R is not set +CONFIG_PINCTRL_SUN20I_D1=y +# CONFIG_PINCTRL_SUN50I_A64 is not set +# CONFIG_PINCTRL_SUN50I_A64_R is not set +# CONFIG_PINCTRL_SUN50I_A100 is not set +# CONFIG_PINCTRL_SUN50I_A100_R is not set +# CONFIG_PINCTRL_SUN50I_H5 is not set +# CONFIG_PINCTRL_SUN50I_H6 is not set +# CONFIG_PINCTRL_SUN50I_H6_R is not set +# CONFIG_PINCTRL_SUN50I_H616 is not set +# CONFIG_PINCTRL_SUN50I_H616_R is not set +# CONFIG_PINCTRL_SUN55I_A523 is not set +# CONFIG_PINCTRL_SUN55I_A523_R is not set +CONFIG_GPIOLIB=y +CONFIG_GPIOLIB_FASTPATH_LIMIT=512 +CONFIG_OF_GPIO=y +CONFIG_GPIOLIB_IRQCHIP=y +# CONFIG_DEBUG_GPIO is not set +# CONFIG_GPIO_SYSFS is not set +CONFIG_GPIO_CDEV=y +CONFIG_GPIO_CDEV_V1=y +CONFIG_GPIO_GENERIC=y + +# +# Memory mapped GPIO drivers +# +# CONFIG_GPIO_74XX_MMIO is not set +# CONFIG_GPIO_ALTERA is not set +# CONFIG_GPIO_CADENCE is not set +CONFIG_GPIO_DWAPB=y +# CONFIG_GPIO_EXAR is not set +# CONFIG_GPIO_FTGPIO010 is not set +# CONFIG_GPIO_GENERIC_PLATFORM is not set +# CONFIG_GPIO_GRGPIO is not set +# CONFIG_GPIO_HLWD is not set +# CONFIG_GPIO_LOGICVC is not set +# CONFIG_GPIO_MB86S7X is not set +# CONFIG_GPIO_PL061 is not set +# CONFIG_GPIO_POLARFIRE_SOC is not set +CONFIG_GPIO_SIFIVE=y +# CONFIG_GPIO_SYSCON is not set +# CONFIG_GPIO_XILINX is not set +# CONFIG_GPIO_AMD_FCH is not set +# end of Memory mapped GPIO drivers + +# +# I2C GPIO expanders +# +# CONFIG_GPIO_ADNP is not set +# CONFIG_GPIO_FXL6408 is not set +# CONFIG_GPIO_DS4520 is not set +# CONFIG_GPIO_GW_PLD is not set +# CONFIG_GPIO_MAX7300 is not set +# CONFIG_GPIO_MAX732X is not set +# CONFIG_GPIO_PCA953X is not set +# CONFIG_GPIO_PCA9570 is not set +# CONFIG_GPIO_PCF857X is not set +# CONFIG_GPIO_TPIC2810 is not set +# end of I2C GPIO expanders + +# +# MFD GPIO expanders +# +# end of MFD GPIO expanders + +# +# PCI GPIO expanders +# +# CONFIG_GPIO_BT8XX is not set +# CONFIG_GPIO_PCI_IDIO_16 is not set +# CONFIG_GPIO_PCIE_IDIO_24 is not set +# CONFIG_GPIO_RDC321X is not set +# end of PCI GPIO expanders + +# +# SPI GPIO expanders +# +# CONFIG_GPIO_74X164 is not set +# CONFIG_GPIO_MAX3191X is not set +# CONFIG_GPIO_MAX7301 is not set +# CONFIG_GPIO_MC33880 is not set +# CONFIG_GPIO_PISOSR is not set +# CONFIG_GPIO_XRA1403 is not set +# end of SPI GPIO expanders + +# +# USB GPIO expanders +# +# CONFIG_GPIO_MPSSE is not set +# end of USB GPIO expanders + +# +# Virtual GPIO drivers +# +# CONFIG_GPIO_AGGREGATOR is not set +# CONFIG_GPIO_LATCH is not set +# CONFIG_GPIO_MOCKUP is not set +# CONFIG_GPIO_VIRTIO is not set +# CONFIG_GPIO_SIM is not set +# end of Virtual GPIO drivers + +# +# GPIO Debugging utilities +# +# CONFIG_GPIO_SLOPPY_LOGIC_ANALYZER is not set +# CONFIG_GPIO_VIRTUSER is not set +# end of GPIO Debugging utilities + +# CONFIG_W1 is not set +CONFIG_POWER_RESET=y +# CONFIG_POWER_RESET_GPIO is not set +CONFIG_POWER_RESET_GPIO_RESTART=y +# CONFIG_POWER_RESET_LTC2952 is not set +# CONFIG_POWER_RESET_REGULATOR is not set +# CONFIG_POWER_RESET_RESTART is not set +CONFIG_POWER_RESET_SYSCON=y +CONFIG_POWER_RESET_SYSCON_POWEROFF=y +# CONFIG_SYSCON_REBOOT_MODE is not set +# CONFIG_NVMEM_REBOOT_MODE is not set +# CONFIG_POWER_SEQUENCING is not set +CONFIG_POWER_SUPPLY=y +# CONFIG_POWER_SUPPLY_DEBUG is not set +CONFIG_POWER_SUPPLY_HWMON=y +# CONFIG_GENERIC_ADC_BATTERY is not set +# CONFIG_IP5XXX_POWER is not set +# CONFIG_TEST_POWER is not set +# CONFIG_CHARGER_ADP5061 is not set +# CONFIG_BATTERY_CW2015 is not set +# CONFIG_BATTERY_DS2780 is not set +# CONFIG_BATTERY_DS2781 is not set +# CONFIG_BATTERY_DS2782 is not set +# CONFIG_BATTERY_SAMSUNG_SDI is not set +# CONFIG_BATTERY_SBS is not set +# CONFIG_CHARGER_SBS is not set +# CONFIG_BATTERY_BQ27XXX is not set +# CONFIG_AXP20X_POWER is not set +# CONFIG_BATTERY_MAX17040 is not set +# CONFIG_BATTERY_MAX17042 is not set +# CONFIG_BATTERY_MAX1720X is not set +# CONFIG_CHARGER_ISP1704 is not set +# CONFIG_CHARGER_MAX8903 is not set +# CONFIG_CHARGER_LP8727 is not set +# CONFIG_CHARGER_GPIO is not set +# CONFIG_CHARGER_MANAGER is not set +# CONFIG_CHARGER_LT3651 is not set +# CONFIG_CHARGER_LTC4162L is not set +# CONFIG_CHARGER_DETECTOR_MAX14656 is not set +# CONFIG_CHARGER_MAX77976 is not set +# CONFIG_CHARGER_BQ2415X is not set +# CONFIG_CHARGER_BQ24190 is not set +# CONFIG_CHARGER_BQ24257 is not set +# CONFIG_CHARGER_BQ24735 is not set +# CONFIG_CHARGER_BQ2515X is not set +# CONFIG_CHARGER_BQ25890 is not set +# CONFIG_CHARGER_BQ25980 is not set +# CONFIG_CHARGER_BQ256XX is not set +# CONFIG_CHARGER_SMB347 is not set +# CONFIG_BATTERY_GAUGE_LTC2941 is not set +# CONFIG_BATTERY_GOLDFISH is not set +# CONFIG_BATTERY_RT5033 is not set +# CONFIG_CHARGER_RT9455 is not set +# CONFIG_CHARGER_RT9467 is not set +# CONFIG_CHARGER_RT9471 is not set +# CONFIG_CHARGER_UCS1002 is not set +# CONFIG_CHARGER_BD99954 is not set +# CONFIG_BATTERY_UG3105 is not set +# CONFIG_FUEL_GAUGE_MM8013 is not set +CONFIG_HWMON=y +# CONFIG_HWMON_DEBUG_CHIP is not set + +# +# Native drivers +# +# CONFIG_SENSORS_AD7314 is not set +# CONFIG_SENSORS_AD7414 is not set +# CONFIG_SENSORS_AD7418 is not set +# CONFIG_SENSORS_ADM1025 is not set +# CONFIG_SENSORS_ADM1026 is not set +# CONFIG_SENSORS_ADM1029 is not set +# CONFIG_SENSORS_ADM1031 is not set +# CONFIG_SENSORS_ADM1177 is not set +# CONFIG_SENSORS_ADM9240 is not set +# CONFIG_SENSORS_ADT7310 is not set +# CONFIG_SENSORS_ADT7410 is not set +# CONFIG_SENSORS_ADT7411 is not set +# CONFIG_SENSORS_ADT7462 is not set +# CONFIG_SENSORS_ADT7470 is not set +# CONFIG_SENSORS_ADT7475 is not set +# CONFIG_SENSORS_AHT10 is not set +# CONFIG_SENSORS_AQUACOMPUTER_D5NEXT is not set +# CONFIG_SENSORS_AS370 is not set +# CONFIG_SENSORS_ASC7621 is not set +# CONFIG_SENSORS_ASUS_ROG_RYUJIN is not set +# CONFIG_SENSORS_AXI_FAN_CONTROL is not set +# CONFIG_SENSORS_ATXP1 is not set +# CONFIG_SENSORS_CHIPCAP2 is not set +# CONFIG_SENSORS_CORSAIR_CPRO is not set +# CONFIG_SENSORS_CORSAIR_PSU is not set +# CONFIG_SENSORS_DRIVETEMP is not set +# CONFIG_SENSORS_DS620 is not set +# CONFIG_SENSORS_DS1621 is not set +# CONFIG_SENSORS_I5K_AMB is not set +# CONFIG_SENSORS_F71805F is not set +# CONFIG_SENSORS_F71882FG is not set +# CONFIG_SENSORS_F75375S is not set +# CONFIG_SENSORS_FTSTEUTATES is not set +# CONFIG_SENSORS_GIGABYTE_WATERFORCE is not set +# CONFIG_SENSORS_GL518SM is not set +# CONFIG_SENSORS_GL520SM is not set +# CONFIG_SENSORS_G760A is not set +# CONFIG_SENSORS_G762 is not set +# CONFIG_SENSORS_GPIO_FAN is not set +# CONFIG_SENSORS_HIH6130 is not set +# CONFIG_SENSORS_HS3001 is not set +# CONFIG_SENSORS_HTU31 is not set +# CONFIG_SENSORS_IIO_HWMON is not set +# CONFIG_SENSORS_ISL28022 is not set +# CONFIG_SENSORS_IT87 is not set +# CONFIG_SENSORS_JC42 is not set +# CONFIG_SENSORS_POWERZ is not set +# CONFIG_SENSORS_POWR1220 is not set +# CONFIG_SENSORS_LINEAGE is not set +# CONFIG_SENSORS_LTC2945 is not set +# CONFIG_SENSORS_LTC2947_I2C is not set +# CONFIG_SENSORS_LTC2947_SPI is not set +# CONFIG_SENSORS_LTC2990 is not set +# CONFIG_SENSORS_LTC2991 is not set +# CONFIG_SENSORS_LTC2992 is not set +# CONFIG_SENSORS_LTC4151 is not set +# CONFIG_SENSORS_LTC4215 is not set +# CONFIG_SENSORS_LTC4222 is not set +# CONFIG_SENSORS_LTC4245 is not set +# CONFIG_SENSORS_LTC4260 is not set +# CONFIG_SENSORS_LTC4261 is not set +# CONFIG_SENSORS_LTC4282 is not set +# CONFIG_SENSORS_MAX1111 is not set +# CONFIG_SENSORS_MAX127 is not set +# CONFIG_SENSORS_MAX16065 is not set +# CONFIG_SENSORS_MAX1619 is not set +# CONFIG_SENSORS_MAX1668 is not set +# CONFIG_SENSORS_MAX197 is not set +# CONFIG_SENSORS_MAX31722 is not set +# CONFIG_SENSORS_MAX31730 is not set +# CONFIG_SENSORS_MAX31760 is not set +# CONFIG_MAX31827 is not set +# CONFIG_SENSORS_MAX6620 is not set +# CONFIG_SENSORS_MAX6621 is not set +# CONFIG_SENSORS_MAX6639 is not set +# CONFIG_SENSORS_MAX6650 is not set +# CONFIG_SENSORS_MAX6697 is not set +# CONFIG_SENSORS_MAX31790 is not set +# CONFIG_SENSORS_MC34VR500 is not set +# CONFIG_SENSORS_MCP3021 is not set +# CONFIG_SENSORS_TC654 is not set +# CONFIG_SENSORS_TPS23861 is not set +# CONFIG_SENSORS_MR75203 is not set +# CONFIG_SENSORS_ADCXX is not set +# CONFIG_SENSORS_LM63 is not set +# CONFIG_SENSORS_LM70 is not set +# CONFIG_SENSORS_LM73 is not set +# CONFIG_SENSORS_LM75 is not set +# CONFIG_SENSORS_LM77 is not set +# CONFIG_SENSORS_LM78 is not set +# CONFIG_SENSORS_LM80 is not set +# CONFIG_SENSORS_LM83 is not set +# CONFIG_SENSORS_LM85 is not set +# CONFIG_SENSORS_LM87 is not set +# CONFIG_SENSORS_LM90 is not set +# CONFIG_SENSORS_LM92 is not set +# CONFIG_SENSORS_LM93 is not set +# CONFIG_SENSORS_LM95234 is not set +# CONFIG_SENSORS_LM95241 is not set +# CONFIG_SENSORS_LM95245 is not set +# CONFIG_SENSORS_PC87360 is not set +# CONFIG_SENSORS_PC87427 is not set +# CONFIG_SENSORS_NTC_THERMISTOR is not set +# CONFIG_SENSORS_NCT6683 is not set +# CONFIG_SENSORS_NCT6775 is not set +# CONFIG_SENSORS_NCT6775_I2C is not set +# CONFIG_SENSORS_NCT7363 is not set +# CONFIG_SENSORS_NCT7802 is not set +# CONFIG_SENSORS_NCT7904 is not set +# CONFIG_SENSORS_NPCM7XX is not set +# CONFIG_SENSORS_NZXT_KRAKEN2 is not set +# CONFIG_SENSORS_NZXT_KRAKEN3 is not set +# CONFIG_SENSORS_NZXT_SMART2 is not set +# CONFIG_SENSORS_OCC_P8_I2C is not set +# CONFIG_SENSORS_PCF8591 is not set +# CONFIG_PMBUS is not set +# CONFIG_SENSORS_PT5161L is not set +# CONFIG_SENSORS_SBTSI is not set +# CONFIG_SENSORS_SBRMI is not set +# CONFIG_SENSORS_SHT15 is not set +# CONFIG_SENSORS_SHT21 is not set +# CONFIG_SENSORS_SHT3x is not set +# CONFIG_SENSORS_SHT4x is not set +# CONFIG_SENSORS_SHTC1 is not set +# CONFIG_SENSORS_SIS5595 is not set +# CONFIG_SENSORS_DME1737 is not set +# CONFIG_SENSORS_EMC1403 is not set +# CONFIG_SENSORS_EMC2103 is not set +# CONFIG_SENSORS_EMC2305 is not set +# CONFIG_SENSORS_EMC6W201 is not set +# CONFIG_SENSORS_SMSC47M1 is not set +# CONFIG_SENSORS_SMSC47M192 is not set +# CONFIG_SENSORS_SMSC47B397 is not set +# CONFIG_SENSORS_SCH5627 is not set +# CONFIG_SENSORS_SCH5636 is not set +# CONFIG_SENSORS_STTS751 is not set +CONFIG_SENSORS_SFCTEMP=m +# CONFIG_SENSORS_SG2042_MCU is not set +# CONFIG_SENSORS_ADC128D818 is not set +# CONFIG_SENSORS_ADS7828 is not set +# CONFIG_SENSORS_ADS7871 is not set +# CONFIG_SENSORS_AMC6821 is not set +# CONFIG_SENSORS_INA209 is not set +# CONFIG_SENSORS_INA2XX is not set +# CONFIG_SENSORS_INA238 is not set +# CONFIG_SENSORS_INA3221 is not set +# CONFIG_SENSORS_SPD5118 is not set +# CONFIG_SENSORS_TC74 is not set +# CONFIG_SENSORS_THMC50 is not set +# CONFIG_SENSORS_TMP102 is not set +# CONFIG_SENSORS_TMP103 is not set +# CONFIG_SENSORS_TMP108 is not set +# CONFIG_SENSORS_TMP401 is not set +# CONFIG_SENSORS_TMP421 is not set +# CONFIG_SENSORS_TMP464 is not set +# CONFIG_SENSORS_TMP513 is not set +# CONFIG_SENSORS_VIA686A is not set +# CONFIG_SENSORS_VT1211 is not set +# CONFIG_SENSORS_VT8231 is not set +# CONFIG_SENSORS_W83773G is not set +# CONFIG_SENSORS_W83781D is not set +# CONFIG_SENSORS_W83791D is not set +# CONFIG_SENSORS_W83792D is not set +# CONFIG_SENSORS_W83793 is not set +# CONFIG_SENSORS_W83795 is not set +# CONFIG_SENSORS_W83L785TS is not set +# CONFIG_SENSORS_W83L786NG is not set +# CONFIG_SENSORS_W83627HF is not set +# CONFIG_SENSORS_W83627EHF is not set +CONFIG_THERMAL=y +# CONFIG_THERMAL_NETLINK is not set +# CONFIG_THERMAL_STATISTICS is not set +# CONFIG_THERMAL_DEBUGFS is not set +# CONFIG_THERMAL_CORE_TESTING is not set +CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0 +CONFIG_THERMAL_HWMON=y +CONFIG_THERMAL_OF=y +CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y +# CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set +# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set +# CONFIG_THERMAL_GOV_FAIR_SHARE is not set +CONFIG_THERMAL_GOV_STEP_WISE=y +# CONFIG_THERMAL_GOV_BANG_BANG is not set +# CONFIG_THERMAL_GOV_USER_SPACE is not set +CONFIG_CPU_THERMAL=y +CONFIG_CPU_FREQ_THERMAL=y +CONFIG_DEVFREQ_THERMAL=y +# CONFIG_PCIE_THERMAL is not set +# CONFIG_THERMAL_EMULATION is not set +# CONFIG_THERMAL_MMIO is not set +# CONFIG_SUN8I_THERMAL is not set +# CONFIG_GENERIC_ADC_THERMAL is not set +CONFIG_WATCHDOG=y +CONFIG_WATCHDOG_CORE=y +# CONFIG_WATCHDOG_NOWAYOUT is not set +CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y +CONFIG_WATCHDOG_OPEN_TIMEOUT=0 +# CONFIG_WATCHDOG_SYSFS is not set +# CONFIG_WATCHDOG_HRTIMER_PRETIMEOUT is not set + +# +# Watchdog Pretimeout Governors +# +# CONFIG_WATCHDOG_PRETIMEOUT_GOV is not set + +# +# Watchdog Device Drivers +# +# CONFIG_SOFT_WATCHDOG is not set +# CONFIG_GPIO_WATCHDOG is not set +# CONFIG_XILINX_WATCHDOG is not set +# CONFIG_ZIIRAVE_WATCHDOG is not set +# CONFIG_CADENCE_WATCHDOG is not set +# CONFIG_DW_WATCHDOG is not set +CONFIG_SUNXI_WATCHDOG=y +# CONFIG_MAX63XX_WATCHDOG is not set +# CONFIG_ALIM7101_WDT is not set +# CONFIG_I6300ESB_WDT is not set +# CONFIG_MEN_A21_WDT is not set +CONFIG_STARFIVE_WATCHDOG=y + +# +# PCI-based Watchdog Cards +# +# CONFIG_PCIPCWATCHDOG is not set +# CONFIG_WDTPCI is not set + +# +# USB-based Watchdog Cards +# +# CONFIG_USBPCWATCHDOG is not set +CONFIG_SSB_POSSIBLE=y +# CONFIG_SSB is not set +CONFIG_BCMA_POSSIBLE=y +# CONFIG_BCMA is not set + +# +# Multifunction device drivers +# +CONFIG_MFD_CORE=y +# CONFIG_MFD_ADP5585 is not set +# CONFIG_MFD_ACT8945A is not set +# CONFIG_MFD_SUN4I_GPADC is not set +# CONFIG_MFD_AS3711 is not set +# CONFIG_MFD_SMPRO is not set +# CONFIG_MFD_AS3722 is not set +# CONFIG_PMIC_ADP5520 is not set +# CONFIG_MFD_AAT2870_CORE is not set +# CONFIG_MFD_ATMEL_FLEXCOM is not set +# CONFIG_MFD_ATMEL_HLCDC is not set +# CONFIG_MFD_BCM590XX is not set +# CONFIG_MFD_BD9571MWV is not set +CONFIG_MFD_AXP20X=y +CONFIG_MFD_AXP20X_I2C=y +# CONFIG_MFD_CS42L43_I2C is not set +# CONFIG_MFD_MADERA is not set +# CONFIG_MFD_MAX5970 is not set +# CONFIG_PMIC_DA903X is not set +# CONFIG_MFD_DA9052_SPI is not set +# CONFIG_MFD_DA9052_I2C is not set +# CONFIG_MFD_DA9055 is not set +# CONFIG_MFD_DA9062 is not set +# CONFIG_MFD_DA9063 is not set +# CONFIG_MFD_DA9150 is not set +# CONFIG_MFD_DLN2 is not set +# CONFIG_MFD_GATEWORKS_GSC is not set +# CONFIG_MFD_MC13XXX_SPI is not set +# CONFIG_MFD_MC13XXX_I2C is not set +# CONFIG_MFD_MP2629 is not set +# CONFIG_MFD_HI6421_PMIC is not set +# CONFIG_LPC_ICH is not set +# CONFIG_LPC_SCH is not set +# CONFIG_MFD_IQS62X is not set +# CONFIG_MFD_JANZ_CMODIO is not set +# CONFIG_MFD_KEMPLD is not set +# CONFIG_MFD_88PM800 is not set +# CONFIG_MFD_88PM805 is not set +# CONFIG_MFD_88PM860X is not set +# CONFIG_MFD_88PM886_PMIC is not set +# CONFIG_MFD_MAX14577 is not set +# CONFIG_MFD_MAX77541 is not set +# CONFIG_MFD_MAX77620 is not set +# CONFIG_MFD_MAX77650 is not set +# CONFIG_MFD_MAX77686 is not set +# CONFIG_MFD_MAX77693 is not set +# CONFIG_MFD_MAX77705 is not set +# CONFIG_MFD_MAX77714 is not set +# CONFIG_MFD_MAX77843 is not set +# CONFIG_MFD_MAX8907 is not set +# CONFIG_MFD_MAX8925 is not set +# CONFIG_MFD_MAX8997 is not set +# CONFIG_MFD_MAX8998 is not set +# CONFIG_MFD_MT6360 is not set +# CONFIG_MFD_MT6370 is not set +# CONFIG_MFD_MT6397 is not set +# CONFIG_MFD_MENF21BMC is not set +# CONFIG_MFD_OCELOT is not set +# CONFIG_EZX_PCAP is not set +# CONFIG_MFD_CPCAP is not set +# CONFIG_MFD_VIPERBOARD is not set +# CONFIG_MFD_NTXEC is not set +# CONFIG_MFD_RETU is not set +# CONFIG_MFD_SY7636A is not set +# CONFIG_MFD_RDC321X is not set +# CONFIG_MFD_RT4831 is not set +# CONFIG_MFD_RT5033 is not set +# CONFIG_MFD_RT5120 is not set +# CONFIG_MFD_RC5T583 is not set +# CONFIG_MFD_RK8XX_I2C is not set +# CONFIG_MFD_RK8XX_SPI is not set +# CONFIG_MFD_RN5T618 is not set +# CONFIG_MFD_SEC_CORE is not set +# CONFIG_MFD_SI476X_CORE is not set +# CONFIG_MFD_SM501 is not set +# CONFIG_MFD_SKY81452 is not set +# CONFIG_MFD_STMPE is not set +# CONFIG_MFD_SUN6I_PRCM is not set +CONFIG_MFD_SYSCON=y +# CONFIG_MFD_LP3943 is not set +# CONFIG_MFD_LP8788 is not set +# CONFIG_MFD_TI_LMU is not set +# CONFIG_MFD_PALMAS is not set +# CONFIG_TPS6105X is not set +# CONFIG_TPS65010 is not set +# CONFIG_TPS6507X is not set +# CONFIG_MFD_TPS65086 is not set +# CONFIG_MFD_TPS65090 is not set +# CONFIG_MFD_TPS65217 is not set +# CONFIG_MFD_TI_LP873X is not set +# CONFIG_MFD_TI_LP87565 is not set +# CONFIG_MFD_TPS65218 is not set +# CONFIG_MFD_TPS65219 is not set +# CONFIG_MFD_TPS6586X is not set +# CONFIG_MFD_TPS65910 is not set +# CONFIG_MFD_TPS65912_I2C is not set +# CONFIG_MFD_TPS65912_SPI is not set +# CONFIG_MFD_TPS6594_I2C is not set +# CONFIG_MFD_TPS6594_SPI is not set +# CONFIG_TWL4030_CORE is not set +# CONFIG_TWL6040_CORE is not set +# CONFIG_MFD_WL1273_CORE is not set +# CONFIG_MFD_LM3533 is not set +# CONFIG_MFD_TC3589X is not set +# CONFIG_MFD_TQMX86 is not set +# CONFIG_MFD_VX855 is not set +# CONFIG_MFD_LOCHNAGAR is not set +# CONFIG_MFD_ARIZONA_I2C is not set +# CONFIG_MFD_ARIZONA_SPI is not set +# CONFIG_MFD_WM8400 is not set +# CONFIG_MFD_WM831X_I2C is not set +# CONFIG_MFD_WM831X_SPI is not set +# CONFIG_MFD_WM8350_I2C is not set +# CONFIG_MFD_WM8994 is not set +# CONFIG_MFD_ROHM_BD718XX is not set +# CONFIG_MFD_ROHM_BD71828 is not set +# CONFIG_MFD_ROHM_BD957XMUF is not set +# CONFIG_MFD_ROHM_BD96801 is not set +# CONFIG_MFD_STPMIC1 is not set +# CONFIG_MFD_STMFX is not set +# CONFIG_MFD_ATC260X_I2C is not set +# CONFIG_MFD_QCOM_PM8008 is not set +# CONFIG_MFD_CS40L50_I2C is not set +# CONFIG_MFD_CS40L50_SPI is not set +# CONFIG_MFD_INTEL_M10_BMC_SPI is not set +# CONFIG_MFD_RSMU_I2C is not set +# CONFIG_MFD_RSMU_SPI is not set +# end of Multifunction device drivers + +CONFIG_REGULATOR=y +# CONFIG_REGULATOR_DEBUG is not set +CONFIG_REGULATOR_FIXED_VOLTAGE=y +# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set +# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set +# CONFIG_REGULATOR_NETLINK_EVENTS is not set +# CONFIG_REGULATOR_88PG86X is not set +# CONFIG_REGULATOR_ACT8865 is not set +# CONFIG_REGULATOR_AD5398 is not set +# CONFIG_REGULATOR_AW37503 is not set +CONFIG_REGULATOR_AXP20X=y +# CONFIG_REGULATOR_DA9121 is not set +# CONFIG_REGULATOR_DA9210 is not set +# CONFIG_REGULATOR_DA9211 is not set +# CONFIG_REGULATOR_FAN53555 is not set +# CONFIG_REGULATOR_FAN53880 is not set +CONFIG_REGULATOR_GPIO=y +# CONFIG_REGULATOR_ISL9305 is not set +# CONFIG_REGULATOR_ISL6271A is not set +# CONFIG_REGULATOR_LP3971 is not set +# CONFIG_REGULATOR_LP3972 is not set +# CONFIG_REGULATOR_LP872X is not set +# CONFIG_REGULATOR_LP8755 is not set +# CONFIG_REGULATOR_LTC3589 is not set +# CONFIG_REGULATOR_LTC3676 is not set +# CONFIG_REGULATOR_MAX1586 is not set +# CONFIG_REGULATOR_MAX77503 is not set +# CONFIG_REGULATOR_MAX77857 is not set +# CONFIG_REGULATOR_MAX8649 is not set +# CONFIG_REGULATOR_MAX8660 is not set +# CONFIG_REGULATOR_MAX8893 is not set +# CONFIG_REGULATOR_MAX8952 is not set +# CONFIG_REGULATOR_MAX8973 is not set +# CONFIG_REGULATOR_MAX20086 is not set +# CONFIG_REGULATOR_MAX20411 is not set +# CONFIG_REGULATOR_MAX77826 is not set +# CONFIG_REGULATOR_MCP16502 is not set +# CONFIG_REGULATOR_MP5416 is not set +# CONFIG_REGULATOR_MP8859 is not set +# CONFIG_REGULATOR_MP886X is not set +# CONFIG_REGULATOR_MPQ7920 is not set +# CONFIG_REGULATOR_MT6311 is not set +# CONFIG_REGULATOR_PCA9450 is not set +# CONFIG_REGULATOR_PF9453 is not set +# CONFIG_REGULATOR_PF8X00 is not set +# CONFIG_REGULATOR_PFUZE100 is not set +# CONFIG_REGULATOR_PV88060 is not set +# CONFIG_REGULATOR_PV88080 is not set +# CONFIG_REGULATOR_PV88090 is not set +# CONFIG_REGULATOR_RAA215300 is not set +# CONFIG_REGULATOR_RASPBERRYPI_TOUCHSCREEN_ATTINY is not set +# CONFIG_REGULATOR_RT4801 is not set +# CONFIG_REGULATOR_RT4803 is not set +# CONFIG_REGULATOR_RT5190A is not set +# CONFIG_REGULATOR_RT5739 is not set +# CONFIG_REGULATOR_RT5759 is not set +# CONFIG_REGULATOR_RT6160 is not set +# CONFIG_REGULATOR_RT6190 is not set +# CONFIG_REGULATOR_RT6245 is not set +# CONFIG_REGULATOR_RTQ2134 is not set +# CONFIG_REGULATOR_RTMV20 is not set +# CONFIG_REGULATOR_RTQ6752 is not set +# CONFIG_REGULATOR_RTQ2208 is not set +# CONFIG_REGULATOR_SLG51000 is not set +CONFIG_REGULATOR_SUN20I=y +# CONFIG_REGULATOR_SY8106A is not set +# CONFIG_REGULATOR_SY8824X is not set +# CONFIG_REGULATOR_SY8827N is not set +# CONFIG_REGULATOR_TPS51632 is not set +# CONFIG_REGULATOR_TPS62360 is not set +# CONFIG_REGULATOR_TPS6286X is not set +# CONFIG_REGULATOR_TPS6287X is not set +# CONFIG_REGULATOR_TPS65023 is not set +# CONFIG_REGULATOR_TPS6507X is not set +# CONFIG_REGULATOR_TPS65132 is not set +# CONFIG_REGULATOR_TPS6524X is not set +# CONFIG_REGULATOR_VCTRL is not set +# CONFIG_RC_CORE is not set + +# +# CEC support +# +CONFIG_MEDIA_CEC_SUPPORT=y +# CONFIG_CEC_CH7322 is not set +# CONFIG_CEC_NXP_TDA9950 is not set +# CONFIG_USB_PULSE8_CEC is not set +# CONFIG_USB_RAINSHADOW_CEC is not set +# end of CEC support + +CONFIG_MEDIA_SUPPORT=m +# CONFIG_MEDIA_SUPPORT_FILTER is not set +# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set + +# +# Media device types +# +CONFIG_MEDIA_CAMERA_SUPPORT=y +CONFIG_MEDIA_ANALOG_TV_SUPPORT=y +CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y +CONFIG_MEDIA_RADIO_SUPPORT=y +CONFIG_MEDIA_SDR_SUPPORT=y +CONFIG_MEDIA_PLATFORM_SUPPORT=y +CONFIG_MEDIA_TEST_SUPPORT=y +# end of Media device types + +# +# Media core support +# +CONFIG_VIDEO_DEV=m +CONFIG_MEDIA_CONTROLLER=y +CONFIG_DVB_CORE=m +# end of Media core support + +# +# Video4Linux options +# +CONFIG_VIDEO_V4L2_I2C=y +CONFIG_VIDEO_V4L2_SUBDEV_API=y +# CONFIG_VIDEO_ADV_DEBUG is not set +# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set +CONFIG_V4L2_FWNODE=m +CONFIG_V4L2_ASYNC=m +# end of Video4Linux options + +# +# Media controller options +# +# CONFIG_MEDIA_CONTROLLER_DVB is not set +# end of Media controller options + +# +# Digital TV options +# +# CONFIG_DVB_MMAP is not set +CONFIG_DVB_NET=y +CONFIG_DVB_MAX_ADAPTERS=16 +CONFIG_DVB_DYNAMIC_MINORS=y +# CONFIG_DVB_DEMUX_SECTION_LOSS_LOG is not set +# CONFIG_DVB_ULE_DEBUG is not set +# end of Digital TV options + +# +# Media drivers +# + +# +# Media drivers +# +# CONFIG_MEDIA_USB_SUPPORT is not set +# CONFIG_MEDIA_PCI_SUPPORT is not set +CONFIG_RADIO_ADAPTERS=m +# CONFIG_RADIO_MAXIRADIO is not set +# CONFIG_RADIO_SAA7706H is not set +# CONFIG_RADIO_SHARK is not set +# CONFIG_RADIO_SHARK2 is not set +# CONFIG_RADIO_SI4713 is not set +# CONFIG_RADIO_TEA5764 is not set +# CONFIG_RADIO_TEF6862 is not set +# CONFIG_RADIO_WL1273 is not set +# CONFIG_USB_DSBR is not set +# CONFIG_USB_KEENE is not set +# CONFIG_USB_MA901 is not set +# CONFIG_USB_MR800 is not set +# CONFIG_USB_RAREMONO is not set +# CONFIG_RADIO_SI470X is not set +CONFIG_MEDIA_PLATFORM_DRIVERS=y +# CONFIG_V4L_PLATFORM_DRIVERS is not set +# CONFIG_SDR_PLATFORM_DRIVERS is not set +# CONFIG_DVB_PLATFORM_DRIVERS is not set +# CONFIG_V4L_MEM2MEM_DRIVERS is not set + +# +# Allegro DVT media platform drivers +# + +# +# Amlogic media platform drivers +# + +# +# Amphion drivers +# + +# +# Aspeed media platform drivers +# + +# +# Atmel media platform drivers +# + +# +# Cadence media platform drivers +# +CONFIG_VIDEO_CADENCE_CSI2RX=m +# CONFIG_VIDEO_CADENCE_CSI2TX is not set + +# +# Chips&Media media platform drivers +# + +# +# Intel media platform drivers +# + +# +# Marvell media platform drivers +# + +# +# Mediatek media platform drivers +# + +# +# Microchip Technology, Inc. media platform drivers +# + +# +# Nuvoton media platform drivers +# + +# +# NVidia media platform drivers +# + +# +# NXP media platform drivers +# + +# +# Qualcomm media platform drivers +# + +# +# Raspberry Pi media platform drivers +# +# CONFIG_VIDEO_RP1_CFE is not set + +# +# Renesas media platform drivers +# + +# +# Rockchip media platform drivers +# + +# +# Samsung media platform drivers +# + +# +# STMicroelectronics media platform drivers +# + +# +# Sunxi media platform drivers +# + +# +# Texas Instruments drivers +# + +# +# Verisilicon media platform drivers +# + +# +# VIA media platform drivers +# + +# +# Xilinx media platform drivers +# + +# +# MMC/SDIO DVB adapters +# +# CONFIG_SMS_SDIO_DRV is not set +# CONFIG_V4L_TEST_DRIVERS is not set +# CONFIG_DVB_TEST_DRIVERS is not set +# end of Media drivers + +# +# Media ancillary drivers +# +CONFIG_MEDIA_ATTACH=y +CONFIG_VIDEO_CAMERA_SENSOR=y +# CONFIG_VIDEO_ALVIUM_CSI2 is not set +# CONFIG_VIDEO_AR0521 is not set +# CONFIG_VIDEO_GC0308 is not set +# CONFIG_VIDEO_GC05A2 is not set +# CONFIG_VIDEO_GC08A3 is not set +# CONFIG_VIDEO_GC2145 is not set +# CONFIG_VIDEO_HI556 is not set +# CONFIG_VIDEO_HI846 is not set +# CONFIG_VIDEO_HI847 is not set +# CONFIG_VIDEO_IMX208 is not set +# CONFIG_VIDEO_IMX214 is not set +# CONFIG_VIDEO_IMX219 is not set +# CONFIG_VIDEO_IMX258 is not set +# CONFIG_VIDEO_IMX274 is not set +# CONFIG_VIDEO_IMX283 is not set +# CONFIG_VIDEO_IMX290 is not set +# CONFIG_VIDEO_IMX296 is not set +# CONFIG_VIDEO_IMX319 is not set +# CONFIG_VIDEO_IMX334 is not set +# CONFIG_VIDEO_IMX335 is not set +# CONFIG_VIDEO_IMX355 is not set +# CONFIG_VIDEO_IMX412 is not set +# CONFIG_VIDEO_IMX415 is not set +# CONFIG_VIDEO_MT9M001 is not set +# CONFIG_VIDEO_MT9M111 is not set +# CONFIG_VIDEO_MT9M114 is not set +# CONFIG_VIDEO_MT9P031 is not set +# CONFIG_VIDEO_MT9T112 is not set +# CONFIG_VIDEO_MT9V011 is not set +# CONFIG_VIDEO_MT9V032 is not set +# CONFIG_VIDEO_MT9V111 is not set +# CONFIG_VIDEO_OG01A1B is not set +# CONFIG_VIDEO_OV01A10 is not set +# CONFIG_VIDEO_OV02A10 is not set +# CONFIG_VIDEO_OV08D10 is not set +# CONFIG_VIDEO_OV08X40 is not set +# CONFIG_VIDEO_OV13858 is not set +# CONFIG_VIDEO_OV13B10 is not set +# CONFIG_VIDEO_OV2640 is not set +# CONFIG_VIDEO_OV2659 is not set +# CONFIG_VIDEO_OV2680 is not set +# CONFIG_VIDEO_OV2685 is not set +# CONFIG_VIDEO_OV4689 is not set +# CONFIG_VIDEO_OV5640 is not set +# CONFIG_VIDEO_OV5645 is not set +# CONFIG_VIDEO_OV5647 is not set +# CONFIG_VIDEO_OV5648 is not set +# CONFIG_VIDEO_OV5670 is not set +# CONFIG_VIDEO_OV5675 is not set +# CONFIG_VIDEO_OV5693 is not set +# CONFIG_VIDEO_OV5695 is not set +# CONFIG_VIDEO_OV64A40 is not set +# CONFIG_VIDEO_OV6650 is not set +# CONFIG_VIDEO_OV7251 is not set +# CONFIG_VIDEO_OV7640 is not set +# CONFIG_VIDEO_OV7670 is not set +# CONFIG_VIDEO_OV772X is not set +# CONFIG_VIDEO_OV7740 is not set +# CONFIG_VIDEO_OV8856 is not set +# CONFIG_VIDEO_OV8858 is not set +# CONFIG_VIDEO_OV8865 is not set +# CONFIG_VIDEO_OV9282 is not set +# CONFIG_VIDEO_OV9640 is not set +# CONFIG_VIDEO_OV9650 is not set +# CONFIG_VIDEO_RDACM20 is not set +# CONFIG_VIDEO_RDACM21 is not set +# CONFIG_VIDEO_RJ54N1 is not set +# CONFIG_VIDEO_S5C73M3 is not set +# CONFIG_VIDEO_S5K5BAF is not set +# CONFIG_VIDEO_S5K6A3 is not set +# CONFIG_VIDEO_VGXY61 is not set +# CONFIG_VIDEO_CCS is not set +# CONFIG_VIDEO_ET8EK8 is not set + +# +# Camera ISPs +# +# CONFIG_VIDEO_THP7312 is not set +# end of Camera ISPs + +# +# Lens drivers +# +# CONFIG_VIDEO_AD5820 is not set +# CONFIG_VIDEO_AK7375 is not set +# CONFIG_VIDEO_DW9714 is not set +# CONFIG_VIDEO_DW9719 is not set +# CONFIG_VIDEO_DW9768 is not set +# CONFIG_VIDEO_DW9807_VCM is not set +# end of Lens drivers + +# +# Flash devices +# +# CONFIG_VIDEO_ADP1653 is not set +# CONFIG_VIDEO_LM3560 is not set +# CONFIG_VIDEO_LM3646 is not set +# end of Flash devices + +# +# Audio decoders, processors and mixers +# +# CONFIG_VIDEO_CS3308 is not set +# CONFIG_VIDEO_CS5345 is not set +# CONFIG_VIDEO_CS53L32A is not set +# CONFIG_VIDEO_MSP3400 is not set +# CONFIG_VIDEO_SONY_BTF_MPX is not set +# CONFIG_VIDEO_TDA1997X is not set +# CONFIG_VIDEO_TDA7432 is not set +# CONFIG_VIDEO_TDA9840 is not set +# CONFIG_VIDEO_TEA6415C is not set +# CONFIG_VIDEO_TEA6420 is not set +# CONFIG_VIDEO_TLV320AIC23B is not set +# CONFIG_VIDEO_TVAUDIO is not set +# CONFIG_VIDEO_UDA1342 is not set +# CONFIG_VIDEO_VP27SMPX is not set +# CONFIG_VIDEO_WM8739 is not set +# CONFIG_VIDEO_WM8775 is not set +# end of Audio decoders, processors and mixers + +# +# RDS decoders +# +# CONFIG_VIDEO_SAA6588 is not set +# end of RDS decoders + +# +# Video decoders +# +# CONFIG_VIDEO_ADV7180 is not set +# CONFIG_VIDEO_ADV7183 is not set +# CONFIG_VIDEO_ADV748X is not set +# CONFIG_VIDEO_ADV7604 is not set +# CONFIG_VIDEO_ADV7842 is not set +# CONFIG_VIDEO_BT819 is not set +# CONFIG_VIDEO_BT856 is not set +# CONFIG_VIDEO_BT866 is not set +# CONFIG_VIDEO_ISL7998X is not set +# CONFIG_VIDEO_KS0127 is not set +# CONFIG_VIDEO_ML86V7667 is not set +# CONFIG_VIDEO_SAA7110 is not set +# CONFIG_VIDEO_SAA711X is not set +# CONFIG_VIDEO_TC358743 is not set +# CONFIG_VIDEO_TC358746 is not set +# CONFIG_VIDEO_TVP514X is not set +# CONFIG_VIDEO_TVP5150 is not set +# CONFIG_VIDEO_TVP7002 is not set +# CONFIG_VIDEO_TW2804 is not set +# CONFIG_VIDEO_TW9900 is not set +# CONFIG_VIDEO_TW9903 is not set +# CONFIG_VIDEO_TW9906 is not set +# CONFIG_VIDEO_TW9910 is not set +# CONFIG_VIDEO_VPX3220 is not set + +# +# Video and audio decoders +# +# CONFIG_VIDEO_SAA717X is not set +# CONFIG_VIDEO_CX25840 is not set +# end of Video decoders + +# +# Video encoders +# +# CONFIG_VIDEO_ADV7170 is not set +# CONFIG_VIDEO_ADV7175 is not set +# CONFIG_VIDEO_ADV7343 is not set +# CONFIG_VIDEO_ADV7393 is not set +# CONFIG_VIDEO_ADV7511 is not set +# CONFIG_VIDEO_AK881X is not set +# CONFIG_VIDEO_SAA7127 is not set +# CONFIG_VIDEO_SAA7185 is not set +# CONFIG_VIDEO_THS8200 is not set +# end of Video encoders + +# +# Video improvement chips +# +# CONFIG_VIDEO_UPD64031A is not set +# CONFIG_VIDEO_UPD64083 is not set +# end of Video improvement chips + +# +# Audio/Video compression chips +# +# CONFIG_VIDEO_SAA6752HS is not set +# end of Audio/Video compression chips + +# +# SDR tuner chips +# +# CONFIG_SDR_MAX2175 is not set +# end of SDR tuner chips + +# +# Miscellaneous helper chips +# +# CONFIG_VIDEO_I2C is not set +# CONFIG_VIDEO_M52790 is not set +# CONFIG_VIDEO_ST_MIPID02 is not set +# CONFIG_VIDEO_THS7303 is not set +# end of Miscellaneous helper chips + +# +# Video serializers and deserializers +# +# CONFIG_VIDEO_DS90UB913 is not set +# CONFIG_VIDEO_DS90UB953 is not set +# CONFIG_VIDEO_DS90UB960 is not set +# CONFIG_VIDEO_MAX96714 is not set +# CONFIG_VIDEO_MAX96717 is not set +# end of Video serializers and deserializers + +# +# Media SPI Adapters +# +CONFIG_CXD2880_SPI_DRV=m +# CONFIG_VIDEO_GS1662 is not set +# end of Media SPI Adapters + +CONFIG_MEDIA_TUNER=m + +# +# Customize TV tuners +# +CONFIG_MEDIA_TUNER_E4000=m +CONFIG_MEDIA_TUNER_FC0011=m +CONFIG_MEDIA_TUNER_FC0012=m +CONFIG_MEDIA_TUNER_FC0013=m +CONFIG_MEDIA_TUNER_FC2580=m +CONFIG_MEDIA_TUNER_IT913X=m +CONFIG_MEDIA_TUNER_M88RS6000T=m +CONFIG_MEDIA_TUNER_MAX2165=m +CONFIG_MEDIA_TUNER_MC44S803=m +CONFIG_MEDIA_TUNER_MSI001=m +CONFIG_MEDIA_TUNER_MT2060=m +CONFIG_MEDIA_TUNER_MT2063=m +CONFIG_MEDIA_TUNER_MT20XX=m +CONFIG_MEDIA_TUNER_MT2131=m +CONFIG_MEDIA_TUNER_MT2266=m +CONFIG_MEDIA_TUNER_MXL301RF=m +CONFIG_MEDIA_TUNER_MXL5005S=m +CONFIG_MEDIA_TUNER_MXL5007T=m +CONFIG_MEDIA_TUNER_QM1D1B0004=m +CONFIG_MEDIA_TUNER_QM1D1C0042=m +CONFIG_MEDIA_TUNER_QT1010=m +CONFIG_MEDIA_TUNER_R820T=m +CONFIG_MEDIA_TUNER_SI2157=m +CONFIG_MEDIA_TUNER_SIMPLE=m +CONFIG_MEDIA_TUNER_TDA18212=m +CONFIG_MEDIA_TUNER_TDA18218=m +CONFIG_MEDIA_TUNER_TDA18250=m +CONFIG_MEDIA_TUNER_TDA18271=m +CONFIG_MEDIA_TUNER_TDA827X=m +CONFIG_MEDIA_TUNER_TDA8290=m +CONFIG_MEDIA_TUNER_TDA9887=m +CONFIG_MEDIA_TUNER_TEA5761=m +CONFIG_MEDIA_TUNER_TEA5767=m +CONFIG_MEDIA_TUNER_TUA9001=m +CONFIG_MEDIA_TUNER_XC2028=m +CONFIG_MEDIA_TUNER_XC4000=m +CONFIG_MEDIA_TUNER_XC5000=m +# end of Customize TV tuners + +# +# Customise DVB Frontends +# + +# +# Multistandard (satellite) frontends +# +CONFIG_DVB_MXL5XX=m +CONFIG_DVB_STB0899=m +CONFIG_DVB_STB6100=m +CONFIG_DVB_STV090x=m +CONFIG_DVB_STV0910=m +CONFIG_DVB_STV6110x=m +CONFIG_DVB_STV6111=m + +# +# Multistandard (cable + terrestrial) frontends +# +CONFIG_DVB_DRXK=m +CONFIG_DVB_MN88472=m +CONFIG_DVB_MN88473=m +CONFIG_DVB_SI2165=m +CONFIG_DVB_TDA18271C2DD=m + +# +# DVB-S (satellite) frontends +# +CONFIG_DVB_CX24110=m +CONFIG_DVB_CX24116=m +CONFIG_DVB_CX24117=m +CONFIG_DVB_CX24120=m +CONFIG_DVB_CX24123=m +CONFIG_DVB_DS3000=m +CONFIG_DVB_MB86A16=m +CONFIG_DVB_MT312=m +CONFIG_DVB_S5H1420=m +CONFIG_DVB_SI21XX=m +CONFIG_DVB_STB6000=m +CONFIG_DVB_STV0288=m +CONFIG_DVB_STV0299=m +CONFIG_DVB_STV0900=m +CONFIG_DVB_STV6110=m +CONFIG_DVB_TDA10071=m +CONFIG_DVB_TDA10086=m +CONFIG_DVB_TDA8083=m +CONFIG_DVB_TDA8261=m +CONFIG_DVB_TDA826X=m +CONFIG_DVB_TS2020=m +CONFIG_DVB_TUA6100=m +CONFIG_DVB_TUNER_CX24113=m +CONFIG_DVB_TUNER_ITD1000=m +CONFIG_DVB_VES1X93=m +CONFIG_DVB_ZL10036=m +CONFIG_DVB_ZL10039=m + +# +# DVB-T (terrestrial) frontends +# +CONFIG_DVB_CX22700=m +CONFIG_DVB_CX22702=m +CONFIG_DVB_CXD2820R=m +CONFIG_DVB_CXD2841ER=m +CONFIG_DVB_DIB3000MB=m +CONFIG_DVB_DIB3000MC=m +CONFIG_DVB_DIB7000M=m +CONFIG_DVB_DIB7000P=m +CONFIG_DVB_DIB9000=m +CONFIG_DVB_DRXD=m +CONFIG_DVB_EC100=m +CONFIG_DVB_L64781=m +CONFIG_DVB_MT352=m +CONFIG_DVB_NXT6000=m +CONFIG_DVB_S5H1432=m +CONFIG_DVB_SP887X=m +CONFIG_DVB_STV0367=m +CONFIG_DVB_TDA10048=m +CONFIG_DVB_TDA1004X=m +CONFIG_DVB_ZD1301_DEMOD=m +CONFIG_DVB_ZL10353=m +CONFIG_DVB_CXD2880=m + +# +# DVB-C (cable) frontends +# +CONFIG_DVB_STV0297=m +CONFIG_DVB_TDA10021=m +CONFIG_DVB_TDA10023=m +CONFIG_DVB_VES1820=m + +# +# ATSC (North American/Korean Terrestrial/Cable DTV) frontends +# +CONFIG_DVB_AU8522=m +CONFIG_DVB_AU8522_DTV=m +CONFIG_DVB_AU8522_V4L=m +CONFIG_DVB_BCM3510=m +CONFIG_DVB_LG2160=m +CONFIG_DVB_LGDT3305=m +CONFIG_DVB_LGDT330X=m +CONFIG_DVB_MXL692=m +CONFIG_DVB_NXT200X=m +CONFIG_DVB_OR51132=m +CONFIG_DVB_OR51211=m +CONFIG_DVB_S5H1409=m +CONFIG_DVB_S5H1411=m + +# +# ISDB-T (terrestrial) frontends +# +CONFIG_DVB_DIB8000=m +CONFIG_DVB_MB86A20S=m +CONFIG_DVB_S921=m + +# +# ISDB-S (satellite) & ISDB-T (terrestrial) frontends +# +CONFIG_DVB_MN88443X=m +CONFIG_DVB_TC90522=m + +# +# Digital terrestrial only tuners/PLL +# +CONFIG_DVB_PLL=m +CONFIG_DVB_TUNER_DIB0070=m +CONFIG_DVB_TUNER_DIB0090=m + +# +# SEC control devices for DVB-S +# +CONFIG_DVB_A8293=m +CONFIG_DVB_AF9033=m +CONFIG_DVB_ASCOT2E=m +CONFIG_DVB_ATBM8830=m +CONFIG_DVB_HELENE=m +CONFIG_DVB_HORUS3A=m +CONFIG_DVB_ISL6405=m +CONFIG_DVB_ISL6421=m +CONFIG_DVB_ISL6423=m +CONFIG_DVB_IX2505V=m +CONFIG_DVB_LGS8GL5=m +CONFIG_DVB_LGS8GXX=m +CONFIG_DVB_LNBH25=m +CONFIG_DVB_LNBH29=m +CONFIG_DVB_LNBP21=m +CONFIG_DVB_LNBP22=m +CONFIG_DVB_M88RS2000=m +CONFIG_DVB_TDA665x=m +CONFIG_DVB_DRX39XYJ=m + +# +# Common Interface (EN50221) controller drivers +# +CONFIG_DVB_CXD2099=m +CONFIG_DVB_SP2=m +# end of Customise DVB Frontends + +# +# Tools to develop new frontends +# +# CONFIG_DVB_DUMMY_FE is not set +# end of Media ancillary drivers + +# +# Graphics support +# +CONFIG_VIDEO=y +# CONFIG_AUXDISPLAY is not set +CONFIG_DRM=m +CONFIG_DRM_MIPI_DSI=y +# CONFIG_DRM_DEBUG_MM is not set +CONFIG_DRM_KMS_HELPER=m +# CONFIG_DRM_PANIC is not set +# CONFIG_DRM_DEBUG_DP_MST_TOPOLOGY_REFS is not set +# CONFIG_DRM_DEBUG_MODESET_LOCK is not set +CONFIG_DRM_CLIENT=y +CONFIG_DRM_CLIENT_LIB=m +CONFIG_DRM_CLIENT_SELECTION=m +CONFIG_DRM_CLIENT_SETUP=y + +# +# Supported DRM clients +# +CONFIG_DRM_FBDEV_EMULATION=y +CONFIG_DRM_FBDEV_OVERALLOC=100 +# CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM is not set +# CONFIG_DRM_CLIENT_LOG is not set +CONFIG_DRM_CLIENT_DEFAULT_FBDEV=y +CONFIG_DRM_CLIENT_DEFAULT="fbdev" +# end of Supported DRM clients + +# CONFIG_DRM_LOAD_EDID_FIRMWARE is not set +CONFIG_DRM_DISPLAY_HELPER=m +# CONFIG_DRM_DISPLAY_DP_AUX_CEC is not set +# CONFIG_DRM_DISPLAY_DP_AUX_CHARDEV is not set +CONFIG_DRM_DISPLAY_DP_HELPER=y +CONFIG_DRM_DISPLAY_HDMI_HELPER=y +CONFIG_DRM_TTM=m +CONFIG_DRM_EXEC=m +CONFIG_DRM_GPUVM=m +CONFIG_DRM_TTM_HELPER=m +CONFIG_DRM_GEM_DMA_HELPER=m +CONFIG_DRM_GEM_SHMEM_HELPER=m +CONFIG_DRM_SUBALLOC_HELPER=m +CONFIG_DRM_SCHED=m + +# +# ARM devices +# +# CONFIG_DRM_KOMEDA is not set +# end of ARM devices + +CONFIG_DRM_RADEON=m +# CONFIG_DRM_RADEON_USERPTR is not set +# CONFIG_DRM_AMDGPU is not set +CONFIG_DRM_NOUVEAU=m +CONFIG_NOUVEAU_DEBUG=5 +CONFIG_NOUVEAU_DEBUG_DEFAULT=3 +# CONFIG_NOUVEAU_DEBUG_MMU is not set +# CONFIG_NOUVEAU_DEBUG_PUSH is not set +CONFIG_DRM_NOUVEAU_BACKLIGHT=y +# CONFIG_DRM_NOUVEAU_GSP_DEFAULT is not set +CONFIG_DRM_NOUVEAU_CH7006=m +CONFIG_DRM_NOUVEAU_SIL164=m +# CONFIG_DRM_XE is not set +# CONFIG_DRM_VGEM is not set +# CONFIG_DRM_VKMS is not set +# CONFIG_DRM_UDL is not set +# CONFIG_DRM_AST is not set +# CONFIG_DRM_MGAG200 is not set +CONFIG_DRM_SUN4I=m +CONFIG_DRM_SUN6I_DSI=m +CONFIG_DRM_SUN8I_DW_HDMI=m +CONFIG_DRM_SUN8I_MIXER=m +CONFIG_DRM_SUN8I_TCON_TOP=m +# CONFIG_DRM_QXL is not set +CONFIG_DRM_VIRTIO_GPU=m +CONFIG_DRM_VIRTIO_GPU_KMS=y +CONFIG_DRM_PANEL=y + +# +# Display Panels +# +# CONFIG_DRM_PANEL_ABT_Y030XX067A is not set +# CONFIG_DRM_PANEL_ARM_VERSATILE is not set +# CONFIG_DRM_PANEL_ASUS_Z00T_TM5P5_NT35596 is not set +# CONFIG_DRM_PANEL_AUO_A030JTN01 is not set +# CONFIG_DRM_PANEL_BOE_BF060Y8M_AJ0 is not set +# CONFIG_DRM_PANEL_BOE_HIMAX8279D is not set +# CONFIG_DRM_PANEL_BOE_TH101MB31UIG002_28A is not set +# CONFIG_DRM_PANEL_BOE_TV101WUM_NL6 is not set +# CONFIG_DRM_PANEL_BOE_TV101WUM_LL2 is not set +# CONFIG_DRM_PANEL_EBBG_FT8719 is not set +# CONFIG_DRM_PANEL_ELIDA_KD35T133 is not set +# CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02 is not set +# CONFIG_DRM_PANEL_FEIYANG_FY07024DI26A30D is not set +# CONFIG_DRM_PANEL_DSI_CM is not set +# CONFIG_DRM_PANEL_LVDS is not set +# CONFIG_DRM_PANEL_HIMAX_HX83102 is not set +# CONFIG_DRM_PANEL_HIMAX_HX83112A is not set +# CONFIG_DRM_PANEL_HIMAX_HX8394 is not set +# CONFIG_DRM_PANEL_ILITEK_IL9322 is not set +# CONFIG_DRM_PANEL_ILITEK_ILI9341 is not set +# CONFIG_DRM_PANEL_ILITEK_ILI9805 is not set +# CONFIG_DRM_PANEL_ILITEK_ILI9806E is not set +# CONFIG_DRM_PANEL_ILITEK_ILI9881C is not set +# CONFIG_DRM_PANEL_ILITEK_ILI9882T is not set +# CONFIG_DRM_PANEL_INNOLUX_EJ030NA is not set +# CONFIG_DRM_PANEL_INNOLUX_P079ZCA is not set +# CONFIG_DRM_PANEL_JADARD_JD9365DA_H3 is not set +# CONFIG_DRM_PANEL_JDI_LPM102A188A is not set +# CONFIG_DRM_PANEL_JDI_LT070ME05000 is not set +# CONFIG_DRM_PANEL_JDI_R63452 is not set +# CONFIG_DRM_PANEL_KHADAS_TS050 is not set +# CONFIG_DRM_PANEL_KINGDISPLAY_KD097D04 is not set +# CONFIG_DRM_PANEL_LEADTEK_LTK050H3146W is not set +# CONFIG_DRM_PANEL_LEADTEK_LTK500HD1829 is not set +# CONFIG_DRM_PANEL_LINCOLNTECH_LCD197 is not set +# CONFIG_DRM_PANEL_LG_LB035Q02 is not set +# CONFIG_DRM_PANEL_LG_LG4573 is not set +# CONFIG_DRM_PANEL_LG_SW43408 is not set +# CONFIG_DRM_PANEL_MAGNACHIP_D53E6EA8966 is not set +# CONFIG_DRM_PANEL_MANTIX_MLAF057WE51 is not set +# CONFIG_DRM_PANEL_NEC_NL8048HL11 is not set +# CONFIG_DRM_PANEL_NEWVISION_NV3051D is not set +# CONFIG_DRM_PANEL_NEWVISION_NV3052C is not set +# CONFIG_DRM_PANEL_NOVATEK_NT35510 is not set +# CONFIG_DRM_PANEL_NOVATEK_NT35560 is not set +# CONFIG_DRM_PANEL_NOVATEK_NT35950 is not set +# CONFIG_DRM_PANEL_NOVATEK_NT36523 is not set +# CONFIG_DRM_PANEL_NOVATEK_NT36672A is not set +# CONFIG_DRM_PANEL_NOVATEK_NT36672E is not set +# CONFIG_DRM_PANEL_NOVATEK_NT39016 is not set +# CONFIG_DRM_PANEL_OLIMEX_LCD_OLINUXINO is not set +# CONFIG_DRM_PANEL_ORISETECH_OTA5601A is not set +# CONFIG_DRM_PANEL_ORISETECH_OTM8009A is not set +# CONFIG_DRM_PANEL_OSD_OSD101T2587_53TS is not set +# CONFIG_DRM_PANEL_PANASONIC_VVX10F034N00 is not set +# CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN is not set +# CONFIG_DRM_PANEL_RAYDIUM_RM67191 is not set +# CONFIG_DRM_PANEL_RAYDIUM_RM67200 is not set +# CONFIG_DRM_PANEL_RAYDIUM_RM68200 is not set +# CONFIG_DRM_PANEL_RAYDIUM_RM692E5 is not set +# CONFIG_DRM_PANEL_RAYDIUM_RM69380 is not set +# CONFIG_DRM_PANEL_RONBO_RB070D30 is not set +# CONFIG_DRM_PANEL_SAMSUNG_AMS581VF01 is not set +# CONFIG_DRM_PANEL_SAMSUNG_AMS639RQ08 is not set +# CONFIG_DRM_PANEL_SAMSUNG_S6E88A0_AMS427AP24 is not set +# CONFIG_DRM_PANEL_SAMSUNG_S6E88A0_AMS452EF01 is not set +# CONFIG_DRM_PANEL_SAMSUNG_ATNA33XC20 is not set +# CONFIG_DRM_PANEL_SAMSUNG_DB7430 is not set +# CONFIG_DRM_PANEL_SAMSUNG_LD9040 is not set +# CONFIG_DRM_PANEL_SAMSUNG_S6E3FA7 is not set +# CONFIG_DRM_PANEL_SAMSUNG_S6D16D0 is not set +# CONFIG_DRM_PANEL_SAMSUNG_S6D27A1 is not set +# CONFIG_DRM_PANEL_SAMSUNG_S6D7AA0 is not set +# CONFIG_DRM_PANEL_SAMSUNG_S6E3HA2 is not set +# CONFIG_DRM_PANEL_SAMSUNG_S6E3HA8 is not set +# CONFIG_DRM_PANEL_SAMSUNG_S6E63J0X03 is not set +# CONFIG_DRM_PANEL_SAMSUNG_S6E63M0 is not set +# CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0 is not set +# CONFIG_DRM_PANEL_SAMSUNG_SOFEF00 is not set +# CONFIG_DRM_PANEL_SEIKO_43WVF1G is not set +# CONFIG_DRM_PANEL_SHARP_LQ101R1SX01 is not set +# CONFIG_DRM_PANEL_SHARP_LS037V7DW01 is not set +# CONFIG_DRM_PANEL_SHARP_LS043T1LE01 is not set +# CONFIG_DRM_PANEL_SHARP_LS060T1SX01 is not set +# CONFIG_DRM_PANEL_SITRONIX_ST7701 is not set +# CONFIG_DRM_PANEL_SITRONIX_ST7703 is not set +# CONFIG_DRM_PANEL_SITRONIX_ST7789V is not set +# CONFIG_DRM_PANEL_SONY_ACX565AKM is not set +# CONFIG_DRM_PANEL_SONY_TD4353_JDI is not set +# CONFIG_DRM_PANEL_SONY_TULIP_TRULY_NT35521 is not set +# CONFIG_DRM_PANEL_STARTEK_KD070FHFID015 is not set +# CONFIG_DRM_PANEL_EDP is not set +# CONFIG_DRM_PANEL_SIMPLE is not set +# CONFIG_DRM_PANEL_SUMMIT is not set +# CONFIG_DRM_PANEL_SYNAPTICS_R63353 is not set +# CONFIG_DRM_PANEL_TDO_TL070WSH30 is not set +# CONFIG_DRM_PANEL_TPO_TD028TTEC1 is not set +# CONFIG_DRM_PANEL_TPO_TD043MTEA1 is not set +# CONFIG_DRM_PANEL_TPO_TPG110 is not set +# CONFIG_DRM_PANEL_TRULY_NT35597_WQXGA is not set +# CONFIG_DRM_PANEL_VISIONOX_R66451 is not set +# CONFIG_DRM_PANEL_VISIONOX_RM69299 is not set +# CONFIG_DRM_PANEL_VISIONOX_RM692E5 is not set +# CONFIG_DRM_PANEL_VISIONOX_VTDR6130 is not set +# CONFIG_DRM_PANEL_WIDECHIPS_WS2401 is not set +# CONFIG_DRM_PANEL_XINPENG_XPP055C272 is not set +# end of Display Panels + +CONFIG_DRM_BRIDGE=y +CONFIG_DRM_PANEL_BRIDGE=y + +# +# Display Interface Bridges +# +# CONFIG_DRM_CHIPONE_ICN6211 is not set +# CONFIG_DRM_CHRONTEL_CH7033 is not set +# CONFIG_DRM_DISPLAY_CONNECTOR is not set +# CONFIG_DRM_I2C_NXP_TDA998X is not set +# CONFIG_DRM_ITE_IT6263 is not set +# CONFIG_DRM_ITE_IT6505 is not set +# CONFIG_DRM_LONTIUM_LT8912B is not set +# CONFIG_DRM_LONTIUM_LT9211 is not set +# CONFIG_DRM_LONTIUM_LT9611 is not set +# CONFIG_DRM_LONTIUM_LT9611UXC is not set +# CONFIG_DRM_ITE_IT66121 is not set +# CONFIG_DRM_LVDS_CODEC is not set +# CONFIG_DRM_MEGACHIPS_STDPXXXX_GE_B850V3_FW is not set +# CONFIG_DRM_NWL_MIPI_DSI is not set +# CONFIG_DRM_NXP_PTN3460 is not set +# CONFIG_DRM_PARADE_PS8622 is not set +# CONFIG_DRM_PARADE_PS8640 is not set +# CONFIG_DRM_SAMSUNG_DSIM is not set +# CONFIG_DRM_SIL_SII8620 is not set +# CONFIG_DRM_SII902X is not set +# CONFIG_DRM_SII9234 is not set +# CONFIG_DRM_SIMPLE_BRIDGE is not set +# CONFIG_DRM_THINE_THC63LVD1024 is not set +# CONFIG_DRM_TOSHIBA_TC358762 is not set +# CONFIG_DRM_TOSHIBA_TC358764 is not set +# CONFIG_DRM_TOSHIBA_TC358767 is not set +# CONFIG_DRM_TOSHIBA_TC358768 is not set +# CONFIG_DRM_TOSHIBA_TC358775 is not set +# CONFIG_DRM_TI_DLPC3433 is not set +# CONFIG_DRM_TI_TDP158 is not set +# CONFIG_DRM_TI_TFP410 is not set +# CONFIG_DRM_TI_SN65DSI83 is not set +# CONFIG_DRM_TI_SN65DSI86 is not set +# CONFIG_DRM_TI_TPD12S015 is not set +# CONFIG_DRM_ANALOGIX_ANX6345 is not set +# CONFIG_DRM_ANALOGIX_ANX78XX is not set +# CONFIG_DRM_ANALOGIX_ANX7625 is not set +# CONFIG_DRM_I2C_ADV7511 is not set +# CONFIG_DRM_CDNS_DSI is not set +# CONFIG_DRM_CDNS_MHDP8546 is not set +CONFIG_DRM_DW_HDMI=m +# CONFIG_DRM_DW_HDMI_AHB_AUDIO is not set +# CONFIG_DRM_DW_HDMI_I2S_AUDIO is not set +# CONFIG_DRM_DW_HDMI_GP_AUDIO is not set +# CONFIG_DRM_DW_HDMI_CEC is not set +# end of Display Interface Bridges + +# CONFIG_DRM_ETNAVIV is not set +# CONFIG_DRM_HISI_HIBMC is not set +# CONFIG_DRM_LOGICVC is not set +# CONFIG_DRM_APPLETBDRM is not set +# CONFIG_DRM_ARCPGU is not set +# CONFIG_DRM_BOCHS is not set +# CONFIG_DRM_CIRRUS_QEMU is not set +# CONFIG_DRM_GM12U320 is not set +# CONFIG_DRM_PANEL_MIPI_DBI is not set +# CONFIG_DRM_SIMPLEDRM is not set +# CONFIG_TINYDRM_HX8357D is not set +# CONFIG_TINYDRM_ILI9163 is not set +# CONFIG_TINYDRM_ILI9225 is not set +# CONFIG_TINYDRM_ILI9341 is not set +# CONFIG_TINYDRM_ILI9486 is not set +# CONFIG_TINYDRM_MI0283QT is not set +# CONFIG_TINYDRM_REPAPER is not set +# CONFIG_TINYDRM_SHARP_MEMORY is not set +# CONFIG_TINYDRM_ST7586 is not set +# CONFIG_TINYDRM_ST7735R is not set +# CONFIG_DRM_GUD is not set +# CONFIG_DRM_SSD130X is not set +# CONFIG_DRM_WERROR is not set +CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=m + +# +# Frame buffer Devices +# +CONFIG_FB=y +# CONFIG_FB_CIRRUS is not set +# CONFIG_FB_PM2 is not set +# CONFIG_FB_CYBER2000 is not set +# CONFIG_FB_ASILIANT is not set +# CONFIG_FB_IMSTT is not set +# CONFIG_FB_OPENCORES is not set +# CONFIG_FB_S1D13XXX is not set +# CONFIG_FB_NVIDIA is not set +# CONFIG_FB_RIVA is not set +# CONFIG_FB_I740 is not set +# CONFIG_FB_MATROX is not set +# CONFIG_FB_RADEON is not set +# CONFIG_FB_ATY128 is not set +# CONFIG_FB_ATY is not set +# CONFIG_FB_S3 is not set +# CONFIG_FB_SAVAGE is not set +# CONFIG_FB_SIS is not set +# CONFIG_FB_NEOMAGIC is not set +# CONFIG_FB_KYRO is not set +# CONFIG_FB_3DFX is not set +# CONFIG_FB_VOODOO1 is not set +# CONFIG_FB_VT8623 is not set +# CONFIG_FB_TRIDENT is not set +# CONFIG_FB_ARK is not set +# CONFIG_FB_PM3 is not set +# CONFIG_FB_CARMINE is not set +# CONFIG_FB_SMSCUFX is not set +# CONFIG_FB_UDL is not set +# CONFIG_FB_IBM_GXT4500 is not set +# CONFIG_FB_GOLDFISH is not set +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FB_METRONOME is not set +# CONFIG_FB_MB862XX is not set +# CONFIG_FB_SIMPLE is not set +# CONFIG_FB_SSD1307 is not set +# CONFIG_FB_SM712 is not set +CONFIG_FB_CORE=y +CONFIG_FB_NOTIFY=y +# CONFIG_FIRMWARE_EDID is not set +CONFIG_FB_DEVICE=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_FOREIGN_ENDIAN is not set +CONFIG_FB_SYSMEM_FOPS=y +CONFIG_FB_DEFERRED_IO=y +CONFIG_FB_DMAMEM_HELPERS=y +CONFIG_FB_DMAMEM_HELPERS_DEFERRED=y +CONFIG_FB_IOMEM_FOPS=y +CONFIG_FB_IOMEM_HELPERS=y +CONFIG_FB_SYSMEM_HELPERS=y +CONFIG_FB_SYSMEM_HELPERS_DEFERRED=y +# CONFIG_FB_MODE_HELPERS is not set +# CONFIG_FB_TILEBLITTING is not set +# end of Frame buffer Devices + +# +# Backlight & LCD device support +# +# CONFIG_LCD_CLASS_DEVICE is not set +CONFIG_BACKLIGHT_CLASS_DEVICE=m +# CONFIG_BACKLIGHT_KTD253 is not set +# CONFIG_BACKLIGHT_KTD2801 is not set +# CONFIG_BACKLIGHT_KTZ8866 is not set +# CONFIG_BACKLIGHT_QCOM_WLED is not set +# CONFIG_BACKLIGHT_ADP8860 is not set +# CONFIG_BACKLIGHT_ADP8870 is not set +# CONFIG_BACKLIGHT_LM3509 is not set +# CONFIG_BACKLIGHT_LM3639 is not set +# CONFIG_BACKLIGHT_GPIO is not set +# CONFIG_BACKLIGHT_LV5207LP is not set +# CONFIG_BACKLIGHT_BD6107 is not set +# CONFIG_BACKLIGHT_ARCXCNN is not set +# end of Backlight & LCD device support + +CONFIG_VIDEOMODE_HELPERS=y +CONFIG_HDMI=y + +# +# Console display driver support +# +CONFIG_DUMMY_CONSOLE=y +CONFIG_DUMMY_CONSOLE_COLUMNS=80 +CONFIG_DUMMY_CONSOLE_ROWS=25 +CONFIG_FRAMEBUFFER_CONSOLE=y +# CONFIG_FRAMEBUFFER_CONSOLE_LEGACY_ACCELERATION is not set +CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y +# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set +# CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER is not set +# end of Console display driver support + +# CONFIG_LOGO is not set +# end of Graphics support + +# CONFIG_DRM_ACCEL is not set +CONFIG_SOUND=y +CONFIG_SND=y +CONFIG_SND_TIMER=y +CONFIG_SND_PCM=y +CONFIG_SND_DMAENGINE_PCM=y +CONFIG_SND_JACK=y +CONFIG_SND_JACK_INPUT_DEV=y +# CONFIG_SND_OSSEMUL is not set +CONFIG_SND_PCM_TIMER=y +# CONFIG_SND_HRTIMER is not set +# CONFIG_SND_DYNAMIC_MINORS is not set +CONFIG_SND_SUPPORT_OLD_API=y +CONFIG_SND_PROC_FS=y +CONFIG_SND_VERBOSE_PROCFS=y +CONFIG_SND_CTL_FAST_LOOKUP=y +# CONFIG_SND_DEBUG is not set +# CONFIG_SND_CTL_INPUT_VALIDATION is not set +# CONFIG_SND_UTIMER is not set +# CONFIG_SND_SEQUENCER is not set +CONFIG_SND_DRIVERS=y +# CONFIG_SND_DUMMY is not set +# CONFIG_SND_ALOOP is not set +# CONFIG_SND_PCMTEST is not set +# CONFIG_SND_MTPAV is not set +# CONFIG_SND_SERIAL_U16550 is not set +# CONFIG_SND_MPU401 is not set +CONFIG_SND_PCI=y +# CONFIG_SND_AD1889 is not set +# CONFIG_SND_ATIIXP is not set +# CONFIG_SND_ATIIXP_MODEM is not set +# CONFIG_SND_AU8810 is not set +# CONFIG_SND_AU8820 is not set +# CONFIG_SND_AU8830 is not set +# CONFIG_SND_AW2 is not set +# CONFIG_SND_BT87X is not set +# CONFIG_SND_CA0106 is not set +# CONFIG_SND_CMIPCI is not set +# CONFIG_SND_OXYGEN is not set +# CONFIG_SND_CS4281 is not set +# CONFIG_SND_CS46XX is not set +# CONFIG_SND_CTXFI is not set +# CONFIG_SND_DARLA20 is not set +# CONFIG_SND_GINA20 is not set +# CONFIG_SND_LAYLA20 is not set +# CONFIG_SND_DARLA24 is not set +# CONFIG_SND_GINA24 is not set +# CONFIG_SND_LAYLA24 is not set +# CONFIG_SND_MONA is not set +# CONFIG_SND_MIA is not set +# CONFIG_SND_ECHO3G is not set +# CONFIG_SND_INDIGO is not set +# CONFIG_SND_INDIGOIO is not set +# CONFIG_SND_INDIGODJ is not set +# CONFIG_SND_INDIGOIOX is not set +# CONFIG_SND_INDIGODJX is not set +# CONFIG_SND_ENS1370 is not set +# CONFIG_SND_ENS1371 is not set +# CONFIG_SND_FM801 is not set +# CONFIG_SND_HDSP is not set +# CONFIG_SND_HDSPM is not set +# CONFIG_SND_ICE1724 is not set +# CONFIG_SND_INTEL8X0 is not set +# CONFIG_SND_INTEL8X0M is not set +# CONFIG_SND_KORG1212 is not set +# CONFIG_SND_LOLA is not set +# CONFIG_SND_LX6464ES is not set +# CONFIG_SND_MIXART is not set +# CONFIG_SND_NM256 is not set +# CONFIG_SND_PCXHR is not set +# CONFIG_SND_RIPTIDE is not set +# CONFIG_SND_RME32 is not set +# CONFIG_SND_RME96 is not set +# CONFIG_SND_RME9652 is not set +# CONFIG_SND_SE6X is not set +# CONFIG_SND_VIA82XX is not set +# CONFIG_SND_VIA82XX_MODEM is not set +# CONFIG_SND_VIRTUOSO is not set +# CONFIG_SND_VX222 is not set +# CONFIG_SND_YMFPCI is not set + +# +# HD-Audio +# +# CONFIG_SND_HDA_INTEL is not set +# end of HD-Audio + +CONFIG_SND_HDA_PREALLOC_SIZE=64 +CONFIG_SND_SPI=y +CONFIG_SND_USB=y +# CONFIG_SND_USB_AUDIO is not set +# CONFIG_SND_USB_UA101 is not set +# CONFIG_SND_USB_CAIAQ is not set +# CONFIG_SND_USB_6FIRE is not set +# CONFIG_SND_USB_HIFACE is not set +# CONFIG_SND_BCD2000 is not set +# CONFIG_SND_USB_POD is not set +# CONFIG_SND_USB_PODHD is not set +# CONFIG_SND_USB_TONEPORT is not set +# CONFIG_SND_USB_VARIAX is not set +CONFIG_SND_SOC=y +CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y +# CONFIG_SND_SOC_ADI is not set +# CONFIG_SND_SOC_AMD_ACP is not set +# CONFIG_SND_AMD_ACP_CONFIG is not set +# CONFIG_SND_ATMEL_SOC is not set +# CONFIG_SND_BCM63XX_I2S_WHISTLER is not set +CONFIG_SND_DESIGNWARE_I2S=m +# CONFIG_SND_DESIGNWARE_PCM is not set + +# +# SoC Audio for Freescale CPUs +# + +# +# Common SoC Audio options for Freescale CPUs: +# +# CONFIG_SND_SOC_FSL_ASRC is not set +# CONFIG_SND_SOC_FSL_SAI is not set +# CONFIG_SND_SOC_FSL_AUDMIX is not set +# CONFIG_SND_SOC_FSL_SSI is not set +# CONFIG_SND_SOC_FSL_SPDIF is not set +# CONFIG_SND_SOC_FSL_ESAI is not set +# CONFIG_SND_SOC_FSL_MICFIL is not set +# CONFIG_SND_SOC_FSL_XCVR is not set +# CONFIG_SND_SOC_FSL_RPMSG is not set +# CONFIG_SND_SOC_IMX_AUDMUX is not set +# end of SoC Audio for Freescale CPUs + +# CONFIG_SND_SOC_CHV3_I2S is not set +# CONFIG_SND_I2S_HI6210_I2S is not set + +# +# SoC Audio for Loongson CPUs +# +# end of SoC Audio for Loongson CPUs + +# CONFIG_SND_SOC_IMG is not set +# CONFIG_SND_SOC_MTK_BTCVSD is not set +CONFIG_SND_SOC_SDCA_OPTIONAL=y +# CONFIG_SND_SOC_SOF_TOPLEVEL is not set +CONFIG_SND_SOC_STARFIVE=m +CONFIG_SND_SOC_JH7110_PWMDAC=m +CONFIG_SND_SOC_JH7110_TDM=m + +# +# STMicroelectronics STM32 SOC audio support +# +# end of STMicroelectronics STM32 SOC audio support + +# +# Allwinner SoC Audio support +# +# CONFIG_SND_SUN4I_CODEC is not set +# CONFIG_SND_SUN4I_I2S is not set +# CONFIG_SND_SUN4I_SPDIF is not set +# CONFIG_SND_SUN50I_DMIC is not set +# end of Allwinner SoC Audio support + +# CONFIG_SND_SOC_XILINX_I2S is not set +# CONFIG_SND_SOC_XILINX_AUDIO_FORMATTER is not set +# CONFIG_SND_SOC_XILINX_SPDIF is not set +# CONFIG_SND_SOC_XTFPGA_I2S is not set +CONFIG_SND_SOC_I2C_AND_SPI=y + +# +# CODEC drivers +# +# CONFIG_SND_SOC_AC97_CODEC is not set +# CONFIG_SND_SOC_ADAU1372_I2C is not set +# CONFIG_SND_SOC_ADAU1372_SPI is not set +# CONFIG_SND_SOC_ADAU1373 is not set +# CONFIG_SND_SOC_ADAU1701 is not set +# CONFIG_SND_SOC_ADAU1761_I2C is not set +# CONFIG_SND_SOC_ADAU1761_SPI is not set +# CONFIG_SND_SOC_ADAU7002 is not set +# CONFIG_SND_SOC_ADAU7118_HW is not set +# CONFIG_SND_SOC_ADAU7118_I2C is not set +# CONFIG_SND_SOC_AK4104 is not set +# CONFIG_SND_SOC_AK4118 is not set +# CONFIG_SND_SOC_AK4375 is not set +# CONFIG_SND_SOC_AK4458 is not set +# CONFIG_SND_SOC_AK4554 is not set +# CONFIG_SND_SOC_AK4613 is not set +# CONFIG_SND_SOC_AK4619 is not set +# CONFIG_SND_SOC_AK4642 is not set +# CONFIG_SND_SOC_AK5386 is not set +# CONFIG_SND_SOC_AK5558 is not set +# CONFIG_SND_SOC_ALC5623 is not set +# CONFIG_SND_SOC_AUDIO_IIO_AUX is not set +# CONFIG_SND_SOC_AW8738 is not set +# CONFIG_SND_SOC_AW88395 is not set +# CONFIG_SND_SOC_AW88166 is not set +# CONFIG_SND_SOC_AW88261 is not set +# CONFIG_SND_SOC_AW88081 is not set +# CONFIG_SND_SOC_AW87390 is not set +# CONFIG_SND_SOC_AW88399 is not set +# CONFIG_SND_SOC_BD28623 is not set +# CONFIG_SND_SOC_BT_SCO is not set +# CONFIG_SND_SOC_CHV3_CODEC is not set +# CONFIG_SND_SOC_CS35L32 is not set +# CONFIG_SND_SOC_CS35L33 is not set +# CONFIG_SND_SOC_CS35L34 is not set +# CONFIG_SND_SOC_CS35L35 is not set +# CONFIG_SND_SOC_CS35L36 is not set +# CONFIG_SND_SOC_CS35L41_SPI is not set +# CONFIG_SND_SOC_CS35L41_I2C is not set +# CONFIG_SND_SOC_CS35L45_SPI is not set +# CONFIG_SND_SOC_CS35L45_I2C is not set +# CONFIG_SND_SOC_CS35L56_I2C is not set +# CONFIG_SND_SOC_CS35L56_SPI is not set +# CONFIG_SND_SOC_CS42L42 is not set +# CONFIG_SND_SOC_CS42L51_I2C is not set +# CONFIG_SND_SOC_CS42L52 is not set +# CONFIG_SND_SOC_CS42L56 is not set +# CONFIG_SND_SOC_CS42L73 is not set +# CONFIG_SND_SOC_CS42L83 is not set +# CONFIG_SND_SOC_CS42L84 is not set +# CONFIG_SND_SOC_CS4234 is not set +# CONFIG_SND_SOC_CS4265 is not set +# CONFIG_SND_SOC_CS4270 is not set +# CONFIG_SND_SOC_CS4271_I2C is not set +# CONFIG_SND_SOC_CS4271_SPI is not set +# CONFIG_SND_SOC_CS42XX8_I2C is not set +# CONFIG_SND_SOC_CS43130 is not set +# CONFIG_SND_SOC_CS4341 is not set +# CONFIG_SND_SOC_CS4349 is not set +# CONFIG_SND_SOC_CS53L30 is not set +# CONFIG_SND_SOC_CS530X_I2C is not set +# CONFIG_SND_SOC_CX2072X is not set +# CONFIG_SND_SOC_DA7213 is not set +# CONFIG_SND_SOC_DMIC is not set +# CONFIG_SND_SOC_ES7134 is not set +# CONFIG_SND_SOC_ES7241 is not set +# CONFIG_SND_SOC_ES8311 is not set +# CONFIG_SND_SOC_ES8316 is not set +# CONFIG_SND_SOC_ES8323 is not set +# CONFIG_SND_SOC_ES8326 is not set +# CONFIG_SND_SOC_ES8328_I2C is not set +# CONFIG_SND_SOC_ES8328_SPI is not set +# CONFIG_SND_SOC_GTM601 is not set +# CONFIG_SND_SOC_HDA is not set +# CONFIG_SND_SOC_ICS43432 is not set +# CONFIG_SND_SOC_IDT821034 is not set +# CONFIG_SND_SOC_MAX98088 is not set +# CONFIG_SND_SOC_MAX98090 is not set +# CONFIG_SND_SOC_MAX98357A is not set +# CONFIG_SND_SOC_MAX98504 is not set +# CONFIG_SND_SOC_MAX9867 is not set +# CONFIG_SND_SOC_MAX98927 is not set +# CONFIG_SND_SOC_MAX98520 is not set +# CONFIG_SND_SOC_MAX98373_I2C is not set +# CONFIG_SND_SOC_MAX98388 is not set +# CONFIG_SND_SOC_MAX98390 is not set +# CONFIG_SND_SOC_MAX98396 is not set +# CONFIG_SND_SOC_MAX9860 is not set +# CONFIG_SND_SOC_MSM8916_WCD_DIGITAL is not set +# CONFIG_SND_SOC_PCM1681 is not set +# CONFIG_SND_SOC_PCM1789_I2C is not set +# CONFIG_SND_SOC_PCM179X_I2C is not set +# CONFIG_SND_SOC_PCM179X_SPI is not set +# CONFIG_SND_SOC_PCM186X_I2C is not set +# CONFIG_SND_SOC_PCM186X_SPI is not set +# CONFIG_SND_SOC_PCM3060_I2C is not set +# CONFIG_SND_SOC_PCM3060_SPI is not set +# CONFIG_SND_SOC_PCM3168A_I2C is not set +# CONFIG_SND_SOC_PCM3168A_SPI is not set +# CONFIG_SND_SOC_PCM5102A is not set +# CONFIG_SND_SOC_PCM512x_I2C is not set +# CONFIG_SND_SOC_PCM512x_SPI is not set +# CONFIG_SND_SOC_PCM6240 is not set +# CONFIG_SND_SOC_PEB2466 is not set +# CONFIG_SND_SOC_RT5616 is not set +# CONFIG_SND_SOC_RT5631 is not set +# CONFIG_SND_SOC_RT5640 is not set +# CONFIG_SND_SOC_RT5659 is not set +# CONFIG_SND_SOC_RT9120 is not set +# CONFIG_SND_SOC_RTQ9128 is not set +# CONFIG_SND_SOC_SGTL5000 is not set +# CONFIG_SND_SOC_SIMPLE_AMPLIFIER is not set +# CONFIG_SND_SOC_SIMPLE_MUX is not set +# CONFIG_SND_SOC_SMA1303 is not set +# CONFIG_SND_SOC_SMA1307 is not set +CONFIG_SND_SOC_SPDIF=m +# CONFIG_SND_SOC_SRC4XXX_I2C is not set +# CONFIG_SND_SOC_SSM2305 is not set +# CONFIG_SND_SOC_SSM2518 is not set +# CONFIG_SND_SOC_SSM2602_SPI is not set +# CONFIG_SND_SOC_SSM2602_I2C is not set +# CONFIG_SND_SOC_SSM3515 is not set +# CONFIG_SND_SOC_SSM4567 is not set +# CONFIG_SND_SOC_STA32X is not set +# CONFIG_SND_SOC_STA350 is not set +# CONFIG_SND_SOC_STI_SAS is not set +# CONFIG_SND_SOC_TAS2552 is not set +# CONFIG_SND_SOC_TAS2562 is not set +# CONFIG_SND_SOC_TAS2764 is not set +# CONFIG_SND_SOC_TAS2770 is not set +# CONFIG_SND_SOC_TAS2780 is not set +# CONFIG_SND_SOC_TAS2781_I2C is not set +# CONFIG_SND_SOC_TAS5086 is not set +# CONFIG_SND_SOC_TAS571X is not set +# CONFIG_SND_SOC_TAS5720 is not set +# CONFIG_SND_SOC_TAS5805M is not set +# CONFIG_SND_SOC_TAS6424 is not set +# CONFIG_SND_SOC_TDA7419 is not set +# CONFIG_SND_SOC_TFA9879 is not set +# CONFIG_SND_SOC_TFA989X is not set +# CONFIG_SND_SOC_TLV320ADC3XXX is not set +# CONFIG_SND_SOC_TLV320AIC23_I2C is not set +# CONFIG_SND_SOC_TLV320AIC23_SPI is not set +# CONFIG_SND_SOC_TLV320AIC31XX is not set +# CONFIG_SND_SOC_TLV320AIC32X4_I2C is not set +# CONFIG_SND_SOC_TLV320AIC32X4_SPI is not set +# CONFIG_SND_SOC_TLV320AIC3X_I2C is not set +# CONFIG_SND_SOC_TLV320AIC3X_SPI is not set +# CONFIG_SND_SOC_TLV320ADCX140 is not set +# CONFIG_SND_SOC_TS3A227E is not set +# CONFIG_SND_SOC_TSCS42XX is not set +# CONFIG_SND_SOC_TSCS454 is not set +# CONFIG_SND_SOC_UDA1334 is not set +# CONFIG_SND_SOC_UDA1342 is not set +# CONFIG_SND_SOC_WM8510 is not set +# CONFIG_SND_SOC_WM8523 is not set +# CONFIG_SND_SOC_WM8524 is not set +# CONFIG_SND_SOC_WM8580 is not set +# CONFIG_SND_SOC_WM8711 is not set +# CONFIG_SND_SOC_WM8728 is not set +# CONFIG_SND_SOC_WM8731_I2C is not set +# CONFIG_SND_SOC_WM8731_SPI is not set +# CONFIG_SND_SOC_WM8737 is not set +# CONFIG_SND_SOC_WM8741 is not set +# CONFIG_SND_SOC_WM8750 is not set +# CONFIG_SND_SOC_WM8753 is not set +# CONFIG_SND_SOC_WM8770 is not set +# CONFIG_SND_SOC_WM8776 is not set +# CONFIG_SND_SOC_WM8782 is not set +# CONFIG_SND_SOC_WM8804_I2C is not set +# CONFIG_SND_SOC_WM8804_SPI is not set +# CONFIG_SND_SOC_WM8903 is not set +# CONFIG_SND_SOC_WM8904 is not set +# CONFIG_SND_SOC_WM8940 is not set +# CONFIG_SND_SOC_WM8960 is not set +# CONFIG_SND_SOC_WM8961 is not set +# CONFIG_SND_SOC_WM8962 is not set +# CONFIG_SND_SOC_WM8974 is not set +CONFIG_SND_SOC_WM8978=m +# CONFIG_SND_SOC_WM8985 is not set +# CONFIG_SND_SOC_ZL38060 is not set +# CONFIG_SND_SOC_MAX9759 is not set +# CONFIG_SND_SOC_MT6351 is not set +# CONFIG_SND_SOC_MT6357 is not set +# CONFIG_SND_SOC_MT6358 is not set +# CONFIG_SND_SOC_MT6660 is not set +# CONFIG_SND_SOC_NAU8315 is not set +# CONFIG_SND_SOC_NAU8540 is not set +# CONFIG_SND_SOC_NAU8810 is not set +# CONFIG_SND_SOC_NAU8821 is not set +# CONFIG_SND_SOC_NAU8822 is not set +# CONFIG_SND_SOC_NAU8824 is not set +# CONFIG_SND_SOC_NTP8918 is not set +# CONFIG_SND_SOC_NTP8835 is not set +# CONFIG_SND_SOC_TPA6130A2 is not set +# CONFIG_SND_SOC_LPASS_WSA_MACRO is not set +# CONFIG_SND_SOC_LPASS_VA_MACRO is not set +# CONFIG_SND_SOC_LPASS_RX_MACRO is not set +# CONFIG_SND_SOC_LPASS_TX_MACRO is not set +# end of CODEC drivers + +CONFIG_SND_SIMPLE_CARD_UTILS=m +CONFIG_SND_SIMPLE_CARD=m +# CONFIG_SND_AUDIO_GRAPH_CARD is not set +# CONFIG_SND_AUDIO_GRAPH_CARD2 is not set +# CONFIG_SND_TEST_COMPONENT is not set +# CONFIG_SND_VIRTIO is not set +CONFIG_HID_SUPPORT=y +CONFIG_HID=y +# CONFIG_HID_BATTERY_STRENGTH is not set +# CONFIG_HIDRAW is not set +# CONFIG_UHID is not set +CONFIG_HID_GENERIC=y + +# +# Special HID drivers +# +# CONFIG_HID_A4TECH is not set +# CONFIG_HID_ACCUTOUCH is not set +# CONFIG_HID_ACRUX is not set +# CONFIG_HID_APPLEIR is not set +# CONFIG_HID_APPLETB_BL is not set +# CONFIG_HID_APPLETB_KBD is not set +# CONFIG_HID_AUREAL is not set +# CONFIG_HID_BELKIN is not set +# CONFIG_HID_BETOP_FF is not set +# CONFIG_HID_CHERRY is not set +# CONFIG_HID_CHICONY is not set +# CONFIG_HID_COUGAR is not set +# CONFIG_HID_MACALLY is not set +# CONFIG_HID_PRODIKEYS is not set +# CONFIG_HID_CMEDIA is not set +# CONFIG_HID_CREATIVE_SB0540 is not set +# CONFIG_HID_CYPRESS is not set +# CONFIG_HID_DRAGONRISE is not set +# CONFIG_HID_EMS_FF is not set +# CONFIG_HID_ELECOM is not set +# CONFIG_HID_ELO is not set +# CONFIG_HID_EVISION is not set +# CONFIG_HID_EZKEY is not set +# CONFIG_HID_GEMBIRD is not set +# CONFIG_HID_GFRM is not set +# CONFIG_HID_GLORIOUS is not set +# CONFIG_HID_HOLTEK is not set +# CONFIG_HID_GOODIX_SPI is not set +# CONFIG_HID_GOOGLE_STADIA_FF is not set +# CONFIG_HID_VIVALDI is not set +# CONFIG_HID_KEYTOUCH is not set +# CONFIG_HID_KYE is not set +# CONFIG_HID_KYSONA is not set +# CONFIG_HID_UCLOGIC is not set +# CONFIG_HID_WALTOP is not set +# CONFIG_HID_VIEWSONIC is not set +# CONFIG_HID_VRC2 is not set +# CONFIG_HID_XIAOMI is not set +# CONFIG_HID_GYRATION is not set +# CONFIG_HID_ICADE is not set +# CONFIG_HID_ITE is not set +# CONFIG_HID_JABRA is not set +# CONFIG_HID_TWINHAN is not set +# CONFIG_HID_KENSINGTON is not set +# CONFIG_HID_LCPOWER is not set +# CONFIG_HID_LETSKETCH is not set +# CONFIG_HID_MAGICMOUSE is not set +# CONFIG_HID_MALTRON is not set +# CONFIG_HID_MAYFLASH is not set +# CONFIG_HID_MEGAWORLD_FF is not set +# CONFIG_HID_REDRAGON is not set +# CONFIG_HID_MICROSOFT is not set +# CONFIG_HID_MONTEREY is not set +# CONFIG_HID_MULTITOUCH is not set +# CONFIG_HID_NTI is not set +# CONFIG_HID_NTRIG is not set +# CONFIG_HID_ORTEK is not set +# CONFIG_HID_PANTHERLORD is not set +# CONFIG_HID_PENMOUNT is not set +# CONFIG_HID_PETALYNX is not set +# CONFIG_HID_PICOLCD is not set +# CONFIG_HID_PLANTRONICS is not set +# CONFIG_HID_PXRC is not set +# CONFIG_HID_RAZER is not set +# CONFIG_HID_PRIMAX is not set +# CONFIG_HID_RETRODE is not set +# CONFIG_HID_ROCCAT is not set +# CONFIG_HID_SAITEK is not set +# CONFIG_HID_SAMSUNG is not set +# CONFIG_HID_SEMITEK is not set +# CONFIG_HID_SIGMAMICRO is not set +# CONFIG_HID_SPEEDLINK is not set +# CONFIG_HID_STEAM is not set +# CONFIG_HID_STEELSERIES is not set +# CONFIG_HID_SUNPLUS is not set +# CONFIG_HID_RMI is not set +# CONFIG_HID_GREENASIA is not set +# CONFIG_HID_SMARTJOYPLUS is not set +# CONFIG_HID_TIVO is not set +# CONFIG_HID_TOPSEED is not set +# CONFIG_HID_TOPRE is not set +# CONFIG_HID_THRUSTMASTER is not set +# CONFIG_HID_UDRAW_PS3 is not set +# CONFIG_HID_WACOM is not set +# CONFIG_HID_XINMO is not set +# CONFIG_HID_ZEROPLUS is not set +# CONFIG_HID_ZYDACRON is not set +# CONFIG_HID_SENSOR_HUB is not set +# CONFIG_HID_ALPS is not set +# CONFIG_HID_MCP2200 is not set +# CONFIG_HID_MCP2221 is not set +# end of Special HID drivers + +# +# HID-BPF support +# +# end of HID-BPF support + +CONFIG_I2C_HID=y +# CONFIG_I2C_HID_OF is not set +# CONFIG_I2C_HID_OF_ELAN is not set +# CONFIG_I2C_HID_OF_GOODIX is not set + +# +# USB HID support +# +CONFIG_USB_HID=y +# CONFIG_HID_PID is not set +# CONFIG_USB_HIDDEV is not set +# end of USB HID support + +CONFIG_USB_OHCI_LITTLE_ENDIAN=y +CONFIG_USB_SUPPORT=y +CONFIG_USB_COMMON=y +# CONFIG_USB_ULPI_BUS is not set +# CONFIG_USB_CONN_GPIO is not set +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB=y +CONFIG_USB_PCI=y +# CONFIG_USB_PCI_AMD is not set +# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set + +# +# Miscellaneous USB options +# +CONFIG_USB_DEFAULT_PERSIST=y +# CONFIG_USB_FEW_INIT_RETRIES is not set +# CONFIG_USB_DYNAMIC_MINORS is not set +CONFIG_USB_OTG=y +# CONFIG_USB_OTG_PRODUCTLIST is not set +# CONFIG_USB_OTG_DISABLE_EXTERNAL_HUB is not set +# CONFIG_USB_OTG_FSM is not set +CONFIG_USB_AUTOSUSPEND_DELAY=2 +CONFIG_USB_DEFAULT_AUTHORIZATION_MODE=1 +# CONFIG_USB_MON is not set + +# +# USB Host Controller Drivers +# +# CONFIG_USB_C67X00_HCD is not set +CONFIG_USB_XHCI_HCD=y +# CONFIG_USB_XHCI_DBGCAP is not set +CONFIG_USB_XHCI_PCI=y +# CONFIG_USB_XHCI_PCI_RENESAS is not set +CONFIG_USB_XHCI_PLATFORM=y +CONFIG_USB_EHCI_HCD=y +# CONFIG_USB_EHCI_ROOT_HUB_TT is not set +CONFIG_USB_EHCI_TT_NEWSCHED=y +CONFIG_USB_EHCI_PCI=y +# CONFIG_USB_EHCI_FSL is not set +CONFIG_USB_EHCI_HCD_PLATFORM=y +# CONFIG_USB_OXU210HP_HCD is not set +# CONFIG_USB_ISP116X_HCD is not set +# CONFIG_USB_MAX3421_HCD is not set +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_OHCI_HCD_PCI=y +CONFIG_USB_OHCI_HCD_PLATFORM=y +# CONFIG_USB_UHCI_HCD is not set +# CONFIG_USB_SL811_HCD is not set +# CONFIG_USB_R8A66597_HCD is not set +# CONFIG_USB_HCD_TEST_MODE is not set + +# +# USB Device Class drivers +# +# CONFIG_USB_ACM is not set +# CONFIG_USB_PRINTER is not set +# CONFIG_USB_WDM is not set +# CONFIG_USB_TMC is not set + +# +# 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 +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_REALTEK is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_USBAT is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_SDDR55 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_STORAGE_ALAUDA is not set +# CONFIG_USB_STORAGE_ONETOUCH is not set +# CONFIG_USB_STORAGE_KARMA is not set +# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set +# CONFIG_USB_STORAGE_ENE_UB6250 is not set +CONFIG_USB_UAS=y + +# +# USB Imaging devices +# +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_MICROTEK is not set +# CONFIG_USBIP_CORE is not set + +# +# USB dual-mode controller drivers +# +CONFIG_USB_CDNS_SUPPORT=m +CONFIG_USB_CDNS_HOST=y +CONFIG_USB_CDNS3=m +CONFIG_USB_CDNS3_GADGET=y +CONFIG_USB_CDNS3_HOST=y +CONFIG_USB_CDNS3_STARFIVE=m +CONFIG_USB_MUSB_HDRC=m +# CONFIG_USB_MUSB_HOST is not set +# CONFIG_USB_MUSB_GADGET is not set +CONFIG_USB_MUSB_DUAL_ROLE=y + +# +# Platform Glue Layer +# +CONFIG_USB_MUSB_SUNXI=m +# CONFIG_USB_MUSB_POLARFIRE_SOC is not set + +# +# MUSB DMA mode +# +# CONFIG_MUSB_PIO_ONLY is not set +# CONFIG_USB_DWC3 is not set +# CONFIG_USB_DWC2 is not set +# CONFIG_USB_CHIPIDEA is not set +# CONFIG_USB_ISP1760 is not set + +# +# USB port drivers +# +# CONFIG_USB_SERIAL is not set + +# +# USB Miscellaneous drivers +# +# CONFIG_USB_EMI62 is not set +# CONFIG_USB_EMI26 is not set +# CONFIG_USB_ADUTUX is not set +# CONFIG_USB_SEVSEG is not set +# CONFIG_USB_LEGOTOWER is not set +# CONFIG_USB_LCD is not set +# CONFIG_USB_CYPRESS_CY7C63 is not set +# CONFIG_USB_CYTHERM is not set +# CONFIG_USB_IDMOUSE is not set +# CONFIG_USB_APPLEDISPLAY is not set +# CONFIG_APPLE_MFI_FASTCHARGE is not set +# CONFIG_USB_SISUSBVGA is not set +# CONFIG_USB_LD is not set +# CONFIG_USB_TRANCEVIBRATOR is not set +# CONFIG_USB_IOWARRIOR is not set +# CONFIG_USB_TEST is not set +# CONFIG_USB_EHSET_TEST_FIXTURE is not set +# CONFIG_USB_ISIGHTFW is not set +# CONFIG_USB_YUREX is not set +# CONFIG_USB_EZUSB_FX2 is not set +# CONFIG_USB_HUB_USB251XB is not set +# CONFIG_USB_HSIC_USB3503 is not set +# CONFIG_USB_HSIC_USB4604 is not set +# CONFIG_USB_LINK_LAYER_TEST is not set +# CONFIG_USB_CHAOSKEY is not set +# CONFIG_USB_ONBOARD_DEV is not set + +# +# USB Physical Layer drivers +# +CONFIG_USB_PHY=y +CONFIG_NOP_USB_XCEIV=m +# CONFIG_USB_GPIO_VBUS is not set +# CONFIG_USB_ISP1301 is not set +# end of USB Physical Layer drivers + +CONFIG_USB_GADGET=y +# CONFIG_USB_GADGET_DEBUG is not set +# CONFIG_USB_GADGET_DEBUG_FILES is not set +# CONFIG_USB_GADGET_DEBUG_FS is not set +CONFIG_USB_GADGET_VBUS_DRAW=2 +CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2 +# CONFIG_U_SERIAL_CONSOLE is not set + +# +# USB Peripheral Controller +# +# CONFIG_USB_GR_UDC is not set +# CONFIG_USB_R8A66597 is not set +# CONFIG_USB_PXA27X is not set +# CONFIG_USB_MV_UDC is not set +# CONFIG_USB_MV_U3D is not set +# CONFIG_USB_SNP_UDC_PLAT is not set +# CONFIG_USB_M66592 is not set +# CONFIG_USB_BDC_UDC is not set +# CONFIG_USB_AMD5536UDC is not set +# CONFIG_USB_NET2272 is not set +# CONFIG_USB_NET2280 is not set +# CONFIG_USB_GOKU is not set +# CONFIG_USB_EG20T is not set +# CONFIG_USB_GADGET_XILINX is not set +# CONFIG_USB_MAX3420_UDC is not set +# CONFIG_USB_DUMMY_HCD is not set +# end of USB Peripheral Controller + +CONFIG_USB_LIBCOMPOSITE=m +CONFIG_USB_F_ACM=m +CONFIG_USB_U_SERIAL=m +CONFIG_USB_U_ETHER=m +CONFIG_USB_F_SERIAL=m +CONFIG_USB_F_OBEX=m +CONFIG_USB_F_NCM=m +CONFIG_USB_F_ECM=m +CONFIG_USB_F_EEM=m +CONFIG_USB_F_SUBSET=m +CONFIG_USB_F_RNDIS=m +CONFIG_USB_F_MASS_STORAGE=m +CONFIG_USB_F_FS=m +CONFIG_USB_CONFIGFS=m +CONFIG_USB_CONFIGFS_SERIAL=y +CONFIG_USB_CONFIGFS_ACM=y +CONFIG_USB_CONFIGFS_OBEX=y +CONFIG_USB_CONFIGFS_NCM=y +CONFIG_USB_CONFIGFS_ECM=y +CONFIG_USB_CONFIGFS_ECM_SUBSET=y +CONFIG_USB_CONFIGFS_RNDIS=y +CONFIG_USB_CONFIGFS_EEM=y +CONFIG_USB_CONFIGFS_MASS_STORAGE=y +# CONFIG_USB_CONFIGFS_F_LB_SS is not set +CONFIG_USB_CONFIGFS_F_FS=y +# CONFIG_USB_CONFIGFS_F_UAC1 is not set +# CONFIG_USB_CONFIGFS_F_UAC1_LEGACY is not set +# CONFIG_USB_CONFIGFS_F_UAC2 is not set +# CONFIG_USB_CONFIGFS_F_MIDI is not set +# CONFIG_USB_CONFIGFS_F_MIDI2 is not set +# CONFIG_USB_CONFIGFS_F_HID is not set +# CONFIG_USB_CONFIGFS_F_UVC is not set +# CONFIG_USB_CONFIGFS_F_PRINTER is not set + +# +# USB Gadget precomposed configurations +# +# 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_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_USB_G_WEBCAM is not set +# CONFIG_USB_RAW_GADGET is not set +# end of USB Gadget precomposed configurations + +# CONFIG_TYPEC is not set +CONFIG_USB_ROLE_SWITCH=m +CONFIG_MMC=y +CONFIG_PWRSEQ_EMMC=y +CONFIG_PWRSEQ_SIMPLE=y +CONFIG_MMC_BLOCK=y +CONFIG_MMC_BLOCK_MINORS=8 +# CONFIG_SDIO_UART is not set +# CONFIG_MMC_TEST is not set + +# +# MMC/SD/SDIO Host Controller Drivers +# +# CONFIG_MMC_DEBUG is not set +# CONFIG_MMC_ARMMMCI is not set +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_IO_ACCESSORS=y +# CONFIG_MMC_SDHCI_PCI is not set +CONFIG_MMC_SDHCI_PLTFM=y +# CONFIG_MMC_SDHCI_OF_ARASAN is not set +# CONFIG_MMC_SDHCI_OF_AT91 is not set +CONFIG_MMC_SDHCI_OF_DWCMSHC=y +CONFIG_MMC_SDHCI_CADENCE=y +# CONFIG_MMC_SDHCI_F_SDH30 is not set +# CONFIG_MMC_SDHCI_MILBEAUT is not set +# CONFIG_MMC_TIFM_SD is not set +CONFIG_MMC_SPI=y +# CONFIG_MMC_CB710 is not set +# CONFIG_MMC_VIA_SDMMC is not set +CONFIG_MMC_DW=y +CONFIG_MMC_DW_PLTFM=y +# CONFIG_MMC_DW_BLUEFIELD is not set +# CONFIG_MMC_DW_EXYNOS is not set +# CONFIG_MMC_DW_HI3798CV200 is not set +# CONFIG_MMC_DW_HI3798MV200 is not set +# CONFIG_MMC_DW_K3 is not set +# CONFIG_MMC_DW_PCI is not set +CONFIG_MMC_DW_STARFIVE=y +# CONFIG_MMC_VUB300 is not set +# CONFIG_MMC_USHC is not set +# CONFIG_MMC_USDHI6ROL0 is not set +CONFIG_MMC_SUNXI=y +CONFIG_MMC_CQHCI=y +# CONFIG_MMC_HSQ is not set +# CONFIG_MMC_TOSHIBA_PCI is not set +# CONFIG_MMC_MTK is not set +# CONFIG_MMC_SDHCI_XENON is not set +# CONFIG_SCSI_UFSHCD is not set +# CONFIG_MEMSTICK is not set +# CONFIG_NEW_LEDS is not set +# CONFIG_ACCESSIBILITY is not set +# CONFIG_INFINIBAND is not set +CONFIG_EDAC_SUPPORT=y +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 is not set +CONFIG_RTC_NVMEM=y + +# +# 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_ABB5ZES3 is not set +# CONFIG_RTC_DRV_ABEOZ9 is not set +# CONFIG_RTC_DRV_ABX80X is not set +# CONFIG_RTC_DRV_DS1307 is not set +# CONFIG_RTC_DRV_DS1374 is not set +# CONFIG_RTC_DRV_DS1672 is not set +# CONFIG_RTC_DRV_HYM8563 is not set +# CONFIG_RTC_DRV_MAX6900 is not set +# CONFIG_RTC_DRV_MAX31335 is not set +# CONFIG_RTC_DRV_NCT3018Y 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_ISL12026 is not set +# CONFIG_RTC_DRV_X1205 is not set +# CONFIG_RTC_DRV_PCF8523 is not set +# CONFIG_RTC_DRV_PCF85063 is not set +# CONFIG_RTC_DRV_PCF85363 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_RX8010 is not set +# CONFIG_RTC_DRV_RX8111 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_RV3028 is not set +# CONFIG_RTC_DRV_RV3032 is not set +# CONFIG_RTC_DRV_RV8803 is not set +# CONFIG_RTC_DRV_SD2405AL is not set +# CONFIG_RTC_DRV_SD3078 is not set + +# +# SPI RTC drivers +# +# CONFIG_RTC_DRV_M41T93 is not set +# CONFIG_RTC_DRV_M41T94 is not set +# CONFIG_RTC_DRV_DS1302 is not set +# CONFIG_RTC_DRV_DS1305 is not set +# CONFIG_RTC_DRV_DS1343 is not set +# CONFIG_RTC_DRV_DS1347 is not set +# CONFIG_RTC_DRV_DS1390 is not set +# CONFIG_RTC_DRV_MAX6916 is not set +# CONFIG_RTC_DRV_R9701 is not set +# CONFIG_RTC_DRV_RX4581 is not set +# CONFIG_RTC_DRV_RS5C348 is not set +# CONFIG_RTC_DRV_MAX6902 is not set +# CONFIG_RTC_DRV_PCF2123 is not set +# CONFIG_RTC_DRV_MCP795 is not set +CONFIG_RTC_I2C_AND_SPI=y + +# +# SPI and I2C RTC drivers +# +# CONFIG_RTC_DRV_DS3232 is not set +# CONFIG_RTC_DRV_PCF2127 is not set +# CONFIG_RTC_DRV_RV3029C2 is not set +# CONFIG_RTC_DRV_RX6110 is not set + +# +# Platform RTC drivers +# +# CONFIG_RTC_DRV_DS1286 is not set +# CONFIG_RTC_DRV_DS1511 is not set +# CONFIG_RTC_DRV_DS1553 is not set +# CONFIG_RTC_DRV_DS1685_FAMILY is not set +# CONFIG_RTC_DRV_DS1742 is not set +# CONFIG_RTC_DRV_DS2404 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_RP5C01 is not set +# CONFIG_RTC_DRV_ZYNQMP is not set + +# +# on-CPU RTC drivers +# +# CONFIG_RTC_DRV_PL030 is not set +# CONFIG_RTC_DRV_PL031 is not set +CONFIG_RTC_DRV_SUN6I=y +# CONFIG_RTC_DRV_CADENCE is not set +# CONFIG_RTC_DRV_FTRTC010 is not set +# CONFIG_RTC_DRV_R7301 is not set + +# +# HID Sensor RTC drivers +# +CONFIG_RTC_DRV_GOLDFISH=y +# CONFIG_RTC_DRV_POLARFIRE_SOC is not set +CONFIG_DMADEVICES=y +# CONFIG_DMADEVICES_DEBUG is not set + +# +# DMA Devices +# +CONFIG_DMA_ENGINE=y +CONFIG_DMA_VIRTUAL_CHANNELS=y +CONFIG_DMA_OF=y +# CONFIG_ALTERA_MSGDMA is not set +# CONFIG_AMBA_PL08X is not set +CONFIG_DMA_SUN6I=m +CONFIG_DW_AXI_DMAC=y +# CONFIG_FSL_EDMA is not set +# CONFIG_INTEL_IDMA64 is not set +# CONFIG_PL330_DMA is not set +# CONFIG_PLX_DMA is not set +# CONFIG_XILINX_DMA is not set +# CONFIG_XILINX_XDMA is not set +# CONFIG_XILINX_ZYNQMP_DPDMA is not set +# CONFIG_AMD_QDMA is not set +# CONFIG_QCOM_HIDMA_MGMT is not set +# CONFIG_QCOM_HIDMA is not set +# CONFIG_DW_DMAC is not set +# CONFIG_DW_DMAC_PCI is not set +# CONFIG_DW_EDMA is not set +# CONFIG_SF_PDMA is not set + +# +# DMA Clients +# +# CONFIG_ASYNC_TX_DMA is not set +# CONFIG_DMATEST is not set + +# +# DMABUF options +# +CONFIG_SYNC_FILE=y +# CONFIG_SW_SYNC is not set +# CONFIG_UDMABUF is not set +# CONFIG_DMABUF_MOVE_NOTIFY is not set +# CONFIG_DMABUF_DEBUG is not set +# CONFIG_DMABUF_SELFTESTS is not set +# CONFIG_DMABUF_HEAPS is not set +# CONFIG_DMABUF_SYSFS_STATS is not set +# end of DMABUF options + +# CONFIG_UIO is not set +# CONFIG_VFIO is not set +# CONFIG_VIRT_DRIVERS is not set +CONFIG_VIRTIO_ANCHOR=y +CONFIG_VIRTIO=y +CONFIG_VIRTIO_PCI_LIB=y +CONFIG_VIRTIO_PCI_LIB_LEGACY=y +CONFIG_VIRTIO_MENU=y +CONFIG_VIRTIO_PCI=y +CONFIG_VIRTIO_PCI_LEGACY=y +# CONFIG_VIRTIO_PMEM is not set +CONFIG_VIRTIO_BALLOON=y +CONFIG_VIRTIO_INPUT=y +CONFIG_VIRTIO_MMIO=y +# CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES is not set +CONFIG_VIRTIO_DMA_SHARED_BUFFER=m +# CONFIG_VIRTIO_DEBUG is not set +# CONFIG_VDPA is not set +CONFIG_VHOST_MENU=y +# CONFIG_VHOST_NET is not set +# CONFIG_VHOST_CROSS_ENDIAN_LEGACY is not set + +# +# Microsoft Hyper-V guest support +# +# end of Microsoft Hyper-V guest support + +# CONFIG_GREYBUS is not set +# CONFIG_COMEDI is not set +# CONFIG_STAGING is not set +CONFIG_GOLDFISH=y +# CONFIG_GOLDFISH_PIPE is not set +CONFIG_HAVE_CLK=y +CONFIG_HAVE_CLK_PREPARE=y +CONFIG_COMMON_CLK=y +# CONFIG_LMK04832 is not set +# CONFIG_COMMON_CLK_MAX9485 is not set +# CONFIG_COMMON_CLK_SI5341 is not set +# CONFIG_COMMON_CLK_SI5351 is not set +# CONFIG_COMMON_CLK_SI514 is not set +# CONFIG_COMMON_CLK_SI544 is not set +# CONFIG_COMMON_CLK_SI570 is not set +# CONFIG_COMMON_CLK_CDCE706 is not set +# CONFIG_COMMON_CLK_CDCE925 is not set +# CONFIG_COMMON_CLK_CS2000_CP is not set +# CONFIG_COMMON_CLK_AXI_CLKGEN is not set +# CONFIG_COMMON_CLK_RS9_PCIE is not set +# CONFIG_COMMON_CLK_SI521XX is not set +# CONFIG_COMMON_CLK_VC3 is not set +# CONFIG_COMMON_CLK_VC5 is not set +# CONFIG_COMMON_CLK_VC7 is not set +# CONFIG_COMMON_CLK_FIXED_MMIO is not set +CONFIG_CLK_ANALOGBITS_WRPLL_CLN28HPC=y +CONFIG_MCHP_CLK_MPFS=y +CONFIG_CLK_SIFIVE=y +CONFIG_CLK_SIFIVE_PRCI=y +CONFIG_CLK_SOPHGO_CV1800=y +CONFIG_CLK_SOPHGO_SG2042_PLL=y +CONFIG_CLK_SOPHGO_SG2042_CLKGEN=y +CONFIG_CLK_SOPHGO_SG2042_RPGATE=y +CONFIG_CLK_STARFIVE_JH71X0=y +CONFIG_CLK_STARFIVE_JH7100=y +CONFIG_CLK_STARFIVE_JH7100_AUDIO=m +CONFIG_CLK_STARFIVE_JH7110_PLL=y +CONFIG_CLK_STARFIVE_JH7110_SYS=y +CONFIG_CLK_STARFIVE_JH7110_AON=m +CONFIG_CLK_STARFIVE_JH7110_STG=m +CONFIG_CLK_STARFIVE_JH7110_ISP=m +CONFIG_CLK_STARFIVE_JH7110_VOUT=m +CONFIG_SUNXI_CCU=y +CONFIG_SUN20I_D1_CCU=y +CONFIG_SUN20I_D1_R_CCU=y +CONFIG_SUN6I_RTC_CCU=y +CONFIG_SUN8I_DE2_CCU=m +CONFIG_CLK_THEAD_TH1520_AP=y +# CONFIG_XILINX_VCU is not set +# CONFIG_COMMON_CLK_XLNX_CLKWZRD is not set +# CONFIG_HWSPINLOCK is not set + +# +# Clock Source drivers +# +CONFIG_TIMER_OF=y +CONFIG_TIMER_PROBE=y +CONFIG_CLKSRC_MMIO=y +CONFIG_SUN4I_TIMER=y +CONFIG_RISCV_TIMER=y +# end of Clock Source drivers + +CONFIG_MAILBOX=y +# CONFIG_ARM_MHU is not set +# CONFIG_ARM_MHU_V2 is not set +# CONFIG_PLATFORM_MHU is not set +# CONFIG_PL320_MBOX is not set +# CONFIG_ALTERA_MBOX is not set +# CONFIG_MAILBOX_TEST is not set +# CONFIG_POLARFIRE_SOC_MAILBOX is not set +# CONFIG_MCHP_SBI_IPC_MBOX is not set +CONFIG_SUN6I_MSGBOX=y +# CONFIG_THEAD_TH1520_MBOX is not set +CONFIG_IOMMU_API=y +CONFIG_IOMMU_SUPPORT=y + +# +# Generic IOMMU Pagetable Support +# +# end of Generic IOMMU Pagetable Support + +# CONFIG_IOMMU_DEBUGFS is not set +CONFIG_IOMMU_DEFAULT_DMA_STRICT=y +# CONFIG_IOMMU_DEFAULT_DMA_LAZY is not set +# CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set +CONFIG_OF_IOMMU=y +# CONFIG_IOMMUFD is not set +CONFIG_RISCV_IOMMU=y +CONFIG_RISCV_IOMMU_PCI=y +CONFIG_SUN50I_IOMMU=y + +# +# Remoteproc drivers +# +# CONFIG_REMOTEPROC is not set +# end of Remoteproc drivers + +# +# Rpmsg drivers +# +CONFIG_RPMSG=y +CONFIG_RPMSG_CHAR=y +CONFIG_RPMSG_CTRL=y +CONFIG_RPMSG_NS=y +# CONFIG_RPMSG_QCOM_GLINK_RPM is not set +CONFIG_RPMSG_VIRTIO=y +# end of Rpmsg drivers + +# CONFIG_SOUNDWIRE is not set + +# +# SOC (System On Chip) specific Drivers +# + +# +# Amlogic SoC drivers +# +# end of Amlogic SoC drivers + +# +# Broadcom SoC drivers +# +# end of Broadcom SoC drivers + +# +# NXP/Freescale QorIQ SoC drivers +# +# end of NXP/Freescale QorIQ SoC drivers + +# +# fujitsu SoC drivers +# +# end of fujitsu SoC drivers + +# +# i.MX SoC drivers +# +# end of i.MX SoC drivers + +# +# Enable LiteX SoC Builder specific drivers +# +# CONFIG_LITEX_SOC_CONTROLLER is not set +# end of Enable LiteX SoC Builder specific drivers + +# CONFIG_WPCM450_SOC is not set + +# +# Qualcomm SoC drivers +# +# end of Qualcomm SoC drivers + +CONFIG_SUNXI_SRAM=y +# CONFIG_SOC_TI is not set + +# +# Xilinx SoC drivers +# +# end of Xilinx SoC drivers +# end of SOC (System On Chip) specific Drivers + +# +# PM Domains +# + +# +# Amlogic PM Domains +# +# end of Amlogic PM Domains + +# +# Broadcom PM Domains +# +# end of Broadcom PM Domains + +# +# i.MX PM Domains +# +# end of i.MX PM Domains + +# +# Qualcomm PM Domains +# +# end of Qualcomm PM Domains + +CONFIG_JH71XX_PMU=y +# CONFIG_SUN20I_PPU is not set +# end of PM Domains + +CONFIG_PM_DEVFREQ=y + +# +# DEVFREQ Governors +# +# CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND is not set +# CONFIG_DEVFREQ_GOV_PERFORMANCE is not set +# CONFIG_DEVFREQ_GOV_POWERSAVE is not set +# CONFIG_DEVFREQ_GOV_USERSPACE is not set +# CONFIG_DEVFREQ_GOV_PASSIVE is not set + +# +# DEVFREQ Drivers +# +# CONFIG_ARM_SUN8I_A33_MBUS_DEVFREQ is not set +# CONFIG_PM_DEVFREQ_EVENT is not set +CONFIG_EXTCON=y + +# +# Extcon Device Drivers +# +# CONFIG_EXTCON_ADC_JACK is not set +# CONFIG_EXTCON_FSA9480 is not set +# CONFIG_EXTCON_GPIO is not set +# CONFIG_EXTCON_LC824206XA is not set +# CONFIG_EXTCON_MAX3355 is not set +# CONFIG_EXTCON_PTN5150 is not set +# CONFIG_EXTCON_RT8973A is not set +# CONFIG_EXTCON_SM5502 is not set +# CONFIG_EXTCON_USB_GPIO is not set +# CONFIG_MEMORY is not set +CONFIG_IIO=y +# CONFIG_IIO_BUFFER is not set +# CONFIG_IIO_CONFIGFS is not set +# CONFIG_IIO_TRIGGER is not set +# CONFIG_IIO_SW_DEVICE is not set +# CONFIG_IIO_SW_TRIGGER is not set +# CONFIG_IIO_TRIGGERED_EVENT is not set + +# +# Accelerometers +# +# CONFIG_ADIS16201 is not set +# CONFIG_ADIS16209 is not set +# CONFIG_ADXL313_I2C is not set +# CONFIG_ADXL313_SPI is not set +# CONFIG_ADXL345_I2C is not set +# CONFIG_ADXL345_SPI is not set +# CONFIG_ADXL355_I2C is not set +# CONFIG_ADXL355_SPI is not set +# CONFIG_ADXL367_SPI is not set +# CONFIG_ADXL367_I2C is not set +# CONFIG_ADXL372_SPI is not set +# CONFIG_ADXL372_I2C is not set +# CONFIG_ADXL380_SPI is not set +# CONFIG_ADXL380_I2C is not set +# CONFIG_BMA180 is not set +# CONFIG_BMA220 is not set +# CONFIG_BMA400 is not set +# CONFIG_BMC150_ACCEL is not set +# CONFIG_BMI088_ACCEL is not set +# CONFIG_DA280 is not set +# CONFIG_DA311 is not set +# CONFIG_DMARD06 is not set +# CONFIG_DMARD09 is not set +# CONFIG_DMARD10 is not set +# CONFIG_FXLS8962AF_I2C is not set +# CONFIG_FXLS8962AF_SPI is not set +# CONFIG_IIO_ST_ACCEL_3AXIS is not set +# CONFIG_IIO_KX022A_SPI is not set +# CONFIG_IIO_KX022A_I2C is not set +# CONFIG_KXSD9 is not set +# CONFIG_KXCJK1013 is not set +# CONFIG_MC3230 is not set +# CONFIG_MMA7455_I2C is not set +# CONFIG_MMA7455_SPI is not set +# CONFIG_MMA7660 is not set +# CONFIG_MMA8452 is not set +# CONFIG_MMA9551 is not set +# CONFIG_MMA9553 is not set +# CONFIG_MSA311 is not set +# CONFIG_MXC4005 is not set +# CONFIG_MXC6255 is not set +# CONFIG_SCA3000 is not set +# CONFIG_SCA3300 is not set +# CONFIG_STK8312 is not set +# CONFIG_STK8BA50 is not set +# end of Accelerometers + +# +# Analog to digital converters +# +# CONFIG_AD4000 is not set +# CONFIG_AD4030 is not set +# CONFIG_AD4130 is not set +# CONFIG_AD4695 is not set +# CONFIG_AD7091R5 is not set +# CONFIG_AD7091R8 is not set +# CONFIG_AD7124 is not set +# CONFIG_AD7173 is not set +# CONFIG_AD7191 is not set +# CONFIG_AD7192 is not set +# CONFIG_AD7266 is not set +# CONFIG_AD7280 is not set +# CONFIG_AD7291 is not set +# CONFIG_AD7292 is not set +# CONFIG_AD7298 is not set +# CONFIG_AD7380 is not set +# CONFIG_AD7476 is not set +# CONFIG_AD7606_IFACE_PARALLEL is not set +# CONFIG_AD7606_IFACE_SPI is not set +# CONFIG_AD7766 is not set +# CONFIG_AD7768_1 is not set +# CONFIG_AD7779 is not set +# CONFIG_AD7780 is not set +# CONFIG_AD7791 is not set +# CONFIG_AD7793 is not set +# CONFIG_AD7887 is not set +# CONFIG_AD7923 is not set +# CONFIG_AD7944 is not set +# CONFIG_AD7949 is not set +# CONFIG_AD799X is not set +# CONFIG_AD9467 is not set +# CONFIG_AXP20X_ADC is not set +# CONFIG_AXP288_ADC is not set +# CONFIG_CC10001_ADC is not set +# CONFIG_ENVELOPE_DETECTOR is not set +# CONFIG_GEHC_PMC_ADC is not set +# CONFIG_HI8435 is not set +# CONFIG_HX711 is not set +# CONFIG_INA2XX_ADC is not set +# CONFIG_LTC2309 is not set +# CONFIG_LTC2471 is not set +# CONFIG_LTC2485 is not set +# CONFIG_LTC2496 is not set +# CONFIG_LTC2497 is not set +# CONFIG_MAX1027 is not set +# CONFIG_MAX11100 is not set +# CONFIG_MAX1118 is not set +# CONFIG_MAX11205 is not set +# CONFIG_MAX11410 is not set +# CONFIG_MAX1241 is not set +# CONFIG_MAX1363 is not set +# CONFIG_MAX34408 is not set +# CONFIG_MAX9611 is not set +# CONFIG_MCP320X is not set +# CONFIG_MCP3422 is not set +# CONFIG_MCP3564 is not set +# CONFIG_MCP3911 is not set +# CONFIG_NAU7802 is not set +# CONFIG_PAC1921 is not set +# CONFIG_PAC1934 is not set +# CONFIG_RICHTEK_RTQ6056 is not set +# CONFIG_SOPHGO_CV1800B_ADC is not set +# CONFIG_SD_ADC_MODULATOR is not set +# CONFIG_SUN20I_GPADC is not set +# CONFIG_TI_ADC081C is not set +# CONFIG_TI_ADC0832 is not set +# CONFIG_TI_ADC084S021 is not set +# CONFIG_TI_ADC12138 is not set +# CONFIG_TI_ADC108S102 is not set +# CONFIG_TI_ADC128S052 is not set +# CONFIG_TI_ADC161S626 is not set +# CONFIG_TI_ADS1015 is not set +# CONFIG_TI_ADS1119 is not set +# CONFIG_TI_ADS7138 is not set +# CONFIG_TI_ADS7924 is not set +# CONFIG_TI_ADS1100 is not set +# CONFIG_TI_ADS1298 is not set +# CONFIG_TI_ADS7950 is not set +# CONFIG_TI_ADS8344 is not set +# CONFIG_TI_ADS8688 is not set +# CONFIG_TI_ADS124S08 is not set +# CONFIG_TI_ADS131E08 is not set +# CONFIG_TI_LMP92064 is not set +# CONFIG_TI_TLC4541 is not set +# CONFIG_TI_TSC2046 is not set +# CONFIG_VF610_ADC is not set +# CONFIG_XILINX_XADC is not set +# end of Analog to digital converters + +# +# Analog to digital and digital to analog converters +# +# CONFIG_AD74115 is not set +# CONFIG_AD74413R is not set +# end of Analog to digital and digital to analog converters + +# +# Analog Front Ends +# +# CONFIG_IIO_RESCALE is not set +# end of Analog Front Ends + +# +# Amplifiers +# +# CONFIG_AD8366 is not set +# CONFIG_ADA4250 is not set +# CONFIG_HMC425 is not set +# end of Amplifiers + +# +# Capacitance to digital converters +# +# CONFIG_AD7150 is not set +# CONFIG_AD7746 is not set +# end of Capacitance to digital converters + +# +# Chemical Sensors +# +# CONFIG_AOSONG_AGS02MA is not set +# CONFIG_ATLAS_PH_SENSOR is not set +# CONFIG_ATLAS_EZO_SENSOR is not set +# CONFIG_BME680 is not set +# CONFIG_CCS811 is not set +# CONFIG_ENS160 is not set +# CONFIG_IAQCORE is not set +# CONFIG_SCD30_CORE is not set +# CONFIG_SCD4X is not set +# CONFIG_SENSIRION_SGP30 is not set +# CONFIG_SENSIRION_SGP40 is not set +# CONFIG_SPS30_I2C is not set +# CONFIG_SENSEAIR_SUNRISE_CO2 is not set +# CONFIG_VZ89X is not set +# end of Chemical Sensors + +# +# Hid Sensor IIO Common +# +# end of Hid Sensor IIO Common + +# +# IIO SCMI Sensors +# +# end of IIO SCMI Sensors + +# +# SSP Sensor Common +# +# CONFIG_IIO_SSP_SENSORHUB is not set +# end of SSP Sensor Common + +# +# Digital to analog converters +# +# CONFIG_AD3552R_HS is not set +# CONFIG_AD3552R is not set +# CONFIG_AD5064 is not set +# CONFIG_AD5360 is not set +# CONFIG_AD5380 is not set +# CONFIG_AD5421 is not set +# CONFIG_AD5446 is not set +# CONFIG_AD5449 is not set +# CONFIG_AD5592R is not set +# CONFIG_AD5593R is not set +# CONFIG_AD5504 is not set +# CONFIG_AD5624R_SPI is not set +# CONFIG_AD9739A is not set +# CONFIG_LTC2688 is not set +# CONFIG_AD5686_SPI is not set +# CONFIG_AD5696_I2C is not set +# CONFIG_AD5755 is not set +# CONFIG_AD5758 is not set +# CONFIG_AD5761 is not set +# CONFIG_AD5764 is not set +# CONFIG_AD5766 is not set +# CONFIG_AD5770R is not set +# CONFIG_AD5791 is not set +# CONFIG_AD7293 is not set +# CONFIG_AD7303 is not set +# CONFIG_AD8460 is not set +# CONFIG_AD8801 is not set +# CONFIG_BD79703 is not set +# CONFIG_DPOT_DAC is not set +# CONFIG_DS4424 is not set +# CONFIG_LTC1660 is not set +# CONFIG_LTC2632 is not set +# CONFIG_LTC2664 is not set +# CONFIG_M62332 is not set +# CONFIG_MAX517 is not set +# CONFIG_MAX5522 is not set +# CONFIG_MAX5821 is not set +# CONFIG_MCP4725 is not set +# CONFIG_MCP4728 is not set +# CONFIG_MCP4821 is not set +# CONFIG_MCP4922 is not set +# CONFIG_TI_DAC082S085 is not set +# CONFIG_TI_DAC5571 is not set +# CONFIG_TI_DAC7311 is not set +# CONFIG_TI_DAC7612 is not set +# CONFIG_VF610_DAC is not set +# end of Digital to analog converters + +# +# IIO dummy driver +# +# end of IIO dummy driver + +# +# Filters +# +# CONFIG_ADMV8818 is not set +# end of Filters + +# +# Frequency Synthesizers DDS/PLL +# + +# +# Clock Generator/Distribution +# +# CONFIG_AD9523 is not set +# end of Clock Generator/Distribution + +# +# Phase-Locked Loop (PLL) frequency synthesizers +# +# CONFIG_ADF4350 is not set +# CONFIG_ADF4371 is not set +# CONFIG_ADF4377 is not set +# CONFIG_ADMFM2000 is not set +# CONFIG_ADMV1013 is not set +# CONFIG_ADMV1014 is not set +# CONFIG_ADMV4420 is not set +# CONFIG_ADRF6780 is not set +# end of Phase-Locked Loop (PLL) frequency synthesizers +# end of Frequency Synthesizers DDS/PLL + +# +# Digital gyroscope sensors +# +# CONFIG_ADIS16080 is not set +# CONFIG_ADIS16130 is not set +# CONFIG_ADIS16136 is not set +# CONFIG_ADIS16260 is not set +# CONFIG_ADXRS290 is not set +# CONFIG_ADXRS450 is not set +# CONFIG_BMG160 is not set +# CONFIG_FXAS21002C is not set +# CONFIG_MPU3050_I2C is not set +# CONFIG_IIO_ST_GYRO_3AXIS is not set +# CONFIG_ITG3200 is not set +# end of Digital gyroscope sensors + +# +# Health Sensors +# + +# +# Heart Rate Monitors +# +# CONFIG_AFE4403 is not set +# CONFIG_AFE4404 is not set +# CONFIG_MAX30100 is not set +# CONFIG_MAX30102 is not set +# end of Heart Rate Monitors +# end of Health Sensors + +# +# Humidity sensors +# +# CONFIG_AM2315 is not set +# CONFIG_DHT11 is not set +# CONFIG_ENS210 is not set +# CONFIG_HDC100X is not set +# CONFIG_HDC2010 is not set +# CONFIG_HDC3020 is not set +# CONFIG_HTS221 is not set +# CONFIG_HTU21 is not set +# CONFIG_SI7005 is not set +# CONFIG_SI7020 is not set +# end of Humidity sensors + +# +# Inertial measurement units +# +# CONFIG_ADIS16400 is not set +# CONFIG_ADIS16460 is not set +# CONFIG_ADIS16475 is not set +# CONFIG_ADIS16480 is not set +# CONFIG_ADIS16550 is not set +# CONFIG_BMI160_I2C is not set +# CONFIG_BMI160_SPI is not set +# CONFIG_BMI270_I2C is not set +# CONFIG_BMI270_SPI is not set +# CONFIG_BMI323_I2C is not set +# CONFIG_BMI323_SPI is not set +# CONFIG_BOSCH_BNO055_I2C is not set +# CONFIG_FXOS8700_I2C is not set +# CONFIG_FXOS8700_SPI is not set +# CONFIG_KMX61 is not set +# CONFIG_INV_ICM42600_I2C is not set +# CONFIG_INV_ICM42600_SPI is not set +# CONFIG_INV_MPU6050_I2C is not set +# CONFIG_INV_MPU6050_SPI is not set +# CONFIG_SMI240 is not set +# CONFIG_IIO_ST_LSM6DSX is not set +# CONFIG_IIO_ST_LSM9DS0 is not set +# end of Inertial measurement units + +# +# Light sensors +# +# CONFIG_ADJD_S311 is not set +# CONFIG_ADUX1020 is not set +# CONFIG_AL3000A is not set +# CONFIG_AL3010 is not set +# CONFIG_AL3320A is not set +# CONFIG_APDS9160 is not set +# CONFIG_APDS9300 is not set +# CONFIG_APDS9306 is not set +# CONFIG_APDS9960 is not set +# CONFIG_AS73211 is not set +# CONFIG_BH1745 is not set +# CONFIG_BH1750 is not set +# CONFIG_BH1780 is not set +# CONFIG_CM32181 is not set +# CONFIG_CM3232 is not set +# CONFIG_CM3323 is not set +# CONFIG_CM3605 is not set +# CONFIG_CM36651 is not set +# CONFIG_GP2AP002 is not set +# CONFIG_GP2AP020A00F is not set +# CONFIG_SENSORS_ISL29018 is not set +# CONFIG_SENSORS_ISL29028 is not set +# CONFIG_ISL29125 is not set +# CONFIG_ISL76682 is not set +# CONFIG_JSA1212 is not set +# CONFIG_ROHM_BU27034 is not set +# CONFIG_RPR0521 is not set +# CONFIG_LTR390 is not set +# CONFIG_LTR501 is not set +# CONFIG_LTRF216A is not set +# CONFIG_LV0104CS is not set +# CONFIG_MAX44000 is not set +# CONFIG_MAX44009 is not set +# CONFIG_NOA1305 is not set +# CONFIG_OPT3001 is not set +# CONFIG_OPT4001 is not set +# CONFIG_OPT4060 is not set +# CONFIG_PA12203001 is not set +# CONFIG_SI1133 is not set +# CONFIG_SI1145 is not set +# CONFIG_STK3310 is not set +# CONFIG_ST_UVIS25 is not set +# CONFIG_TCS3414 is not set +# CONFIG_TCS3472 is not set +# CONFIG_SENSORS_TSL2563 is not set +# CONFIG_TSL2583 is not set +# CONFIG_TSL2591 is not set +# CONFIG_TSL2772 is not set +# CONFIG_TSL4531 is not set +# CONFIG_US5182D is not set +# CONFIG_VCNL4000 is not set +# CONFIG_VCNL4035 is not set +# CONFIG_VEML3235 is not set +# CONFIG_VEML6030 is not set +# CONFIG_VEML6040 is not set +# CONFIG_VEML6070 is not set +# CONFIG_VEML6075 is not set +# CONFIG_VL6180 is not set +# CONFIG_ZOPT2201 is not set +# end of Light sensors + +# +# Magnetometer sensors +# +# CONFIG_AF8133J is not set +# CONFIG_AK8974 is not set +# CONFIG_AK8975 is not set +# CONFIG_AK09911 is not set +# CONFIG_ALS31300 is not set +# CONFIG_BMC150_MAGN_I2C is not set +# CONFIG_BMC150_MAGN_SPI is not set +# CONFIG_MAG3110 is not set +# CONFIG_MMC35240 is not set +# CONFIG_IIO_ST_MAGN_3AXIS is not set +# CONFIG_SENSORS_HMC5843_I2C is not set +# CONFIG_SENSORS_HMC5843_SPI is not set +# CONFIG_SENSORS_RM3100_I2C is not set +# CONFIG_SENSORS_RM3100_SPI is not set +# CONFIG_SI7210 is not set +# CONFIG_TI_TMAG5273 is not set +# CONFIG_YAMAHA_YAS530 is not set +# end of Magnetometer sensors + +# +# Multiplexers +# +# CONFIG_IIO_MUX is not set +# end of Multiplexers + +# +# Inclinometer sensors +# +# end of Inclinometer sensors + +# +# Linear and angular position sensors +# +# end of Linear and angular position sensors + +# +# Digital potentiometers +# +# CONFIG_AD5110 is not set +# CONFIG_AD5272 is not set +# CONFIG_DS1803 is not set +# CONFIG_MAX5432 is not set +# CONFIG_MAX5481 is not set +# CONFIG_MAX5487 is not set +# CONFIG_MCP4018 is not set +# CONFIG_MCP4131 is not set +# CONFIG_MCP4531 is not set +# CONFIG_MCP41010 is not set +# CONFIG_TPL0102 is not set +# CONFIG_X9250 is not set +# end of Digital potentiometers + +# +# Digital potentiostats +# +# CONFIG_LMP91000 is not set +# end of Digital potentiostats + +# +# Pressure sensors +# +# CONFIG_ABP060MG is not set +# CONFIG_ROHM_BM1390 is not set +# CONFIG_BMP280 is not set +# CONFIG_DLHL60D is not set +# CONFIG_DPS310 is not set +# CONFIG_HP03 is not set +# CONFIG_HSC030PA is not set +# CONFIG_ICP10100 is not set +# CONFIG_MPL115_I2C is not set +# CONFIG_MPL115_SPI is not set +# CONFIG_MPL3115 is not set +# CONFIG_MPRLS0025PA is not set +# CONFIG_MS5611 is not set +# CONFIG_MS5637 is not set +# CONFIG_SDP500 is not set +# CONFIG_IIO_ST_PRESS is not set +# CONFIG_T5403 is not set +# CONFIG_HP206C is not set +# CONFIG_ZPA2326 is not set +# end of Pressure sensors + +# +# Lightning sensors +# +# CONFIG_AS3935 is not set +# end of Lightning sensors + +# +# Proximity and distance sensors +# +# CONFIG_HX9023S is not set +# CONFIG_IRSD200 is not set +# CONFIG_ISL29501 is not set +# CONFIG_LIDAR_LITE_V2 is not set +# CONFIG_MB1232 is not set +# CONFIG_PING is not set +# CONFIG_RFD77402 is not set +# CONFIG_SRF04 is not set +# CONFIG_SX9310 is not set +# CONFIG_SX9324 is not set +# CONFIG_SX9360 is not set +# CONFIG_SX9500 is not set +# CONFIG_SRF08 is not set +# CONFIG_VCNL3020 is not set +# CONFIG_VL53L0X_I2C is not set +# CONFIG_AW96103 is not set +# end of Proximity and distance sensors + +# +# Resolver to digital converters +# +# CONFIG_AD2S90 is not set +# CONFIG_AD2S1200 is not set +# CONFIG_AD2S1210 is not set +# end of Resolver to digital converters + +# +# Temperature sensors +# +# CONFIG_LTC2983 is not set +# CONFIG_MAXIM_THERMOCOUPLE is not set +# CONFIG_MLX90614 is not set +# CONFIG_MLX90632 is not set +# CONFIG_MLX90635 is not set +# CONFIG_TMP006 is not set +# CONFIG_TMP007 is not set +# CONFIG_TMP117 is not set +# CONFIG_TSYS01 is not set +# CONFIG_TSYS02D is not set +# CONFIG_MAX30208 is not set +# CONFIG_MAX31856 is not set +# CONFIG_MAX31865 is not set +# CONFIG_MCP9600 is not set +# end of Temperature sensors + +# CONFIG_NTB is not set +# CONFIG_PWM is not set + +# +# IRQ chip support +# +CONFIG_IRQCHIP=y +CONFIG_IRQ_MSI_LIB=y +# CONFIG_AL_FIC is not set +# CONFIG_XILINX_INTC is not set +CONFIG_RISCV_INTC=y +CONFIG_RISCV_APLIC=y +CONFIG_RISCV_APLIC_MSI=y +CONFIG_RISCV_IMSIC=y +CONFIG_SIFIVE_PLIC=y +CONFIG_STARFIVE_JH8100_INTC=y +CONFIG_THEAD_C900_ACLINT_SSWI=y +# CONFIG_SOPHGO_SG2042_MSI is not set +# end of IRQ chip support + +# CONFIG_IPACK_BUS is not set +CONFIG_RESET_CONTROLLER=y +# CONFIG_RESET_GPIO is not set +CONFIG_RESET_POLARFIRE_SOC=y +CONFIG_RESET_SIMPLE=y +CONFIG_RESET_SUNXI=y +# CONFIG_RESET_TI_SYSCON is not set +# CONFIG_RESET_TI_TPS380X is not set +CONFIG_RESET_STARFIVE_JH71X0=y +CONFIG_RESET_STARFIVE_JH7100=y +CONFIG_RESET_STARFIVE_JH7110=y + +# +# PHY Subsystem +# +CONFIG_GENERIC_PHY=y +CONFIG_GENERIC_PHY_MIPI_DPHY=y +# CONFIG_PHY_CAN_TRANSCEIVER is not set +# CONFIG_PHY_NXP_PTN3222 is not set +CONFIG_PHY_SUN4I_USB=m +CONFIG_PHY_SUN6I_MIPI_DPHY=m +# CONFIG_PHY_SUN9I_USB is not set +# CONFIG_PHY_SUN50I_USB3 is not set + +# +# PHY drivers for Broadcom platforms +# +# CONFIG_BCM_KONA_USB2_PHY is not set +# end of PHY drivers for Broadcom platforms + +# CONFIG_PHY_CADENCE_TORRENT is not set +# CONFIG_PHY_CADENCE_DPHY is not set +# CONFIG_PHY_CADENCE_DPHY_RX is not set +# CONFIG_PHY_CADENCE_SIERRA is not set +# CONFIG_PHY_CADENCE_SALVO is not set +# CONFIG_PHY_PXA_28NM_HSIC is not set +# CONFIG_PHY_PXA_28NM_USB2 is not set +# CONFIG_PHY_CPCAP_USB is not set +# CONFIG_PHY_MAPPHONE_MDM6600 is not set +# CONFIG_PHY_OCELOT_SERDES is not set +CONFIG_PHY_STARFIVE_JH7110_DPHY_RX=m +# CONFIG_PHY_STARFIVE_JH7110_DPHY_TX is not set +CONFIG_PHY_STARFIVE_JH7110_PCIE=m +CONFIG_PHY_STARFIVE_JH7110_USB=m +# end of PHY Subsystem + +# CONFIG_POWERCAP is not set +# CONFIG_MCB is not set + +# +# Performance monitor support +# +CONFIG_RISCV_PMU=y +CONFIG_RISCV_PMU_LEGACY=y +CONFIG_RISCV_PMU_SBI=y +# CONFIG_STARFIVE_STARLINK_PMU is not set +# CONFIG_DWC_PCIE_PMU is not set +# end of Performance monitor support + +# CONFIG_RAS is not set +# CONFIG_USB4 is not set + +# +# Android +# +# CONFIG_ANDROID_BINDER_IPC is not set +# end of Android + +CONFIG_LIBNVDIMM=y +CONFIG_BLK_DEV_PMEM=y +CONFIG_ND_CLAIM=y +CONFIG_ND_BTT=y +CONFIG_BTT=y +CONFIG_OF_PMEM=y +CONFIG_DAX=y +CONFIG_NVMEM=y +CONFIG_NVMEM_SYSFS=y +CONFIG_NVMEM_LAYOUTS=y + +# +# Layout Types +# +# CONFIG_NVMEM_LAYOUT_SL28_VPD is not set +# CONFIG_NVMEM_LAYOUT_ONIE_TLV is not set +# CONFIG_NVMEM_LAYOUT_U_BOOT_ENV is not set +# end of Layout Types + +# CONFIG_NVMEM_RMEM is not set +CONFIG_NVMEM_SUNXI_SID=y +# CONFIG_NVMEM_U_BOOT_ENV is not set + +# +# HW tracing support +# +# CONFIG_STM is not set +# CONFIG_INTEL_TH is not set +# end of HW tracing support + +# CONFIG_FPGA is not set +# CONFIG_FSI is not set +CONFIG_PM_OPP=y +# CONFIG_SIOX is not set +# CONFIG_SLIMBUS is not set +# CONFIG_INTERCONNECT is not set +# CONFIG_COUNTER is not set +# CONFIG_MOST is not set +# CONFIG_PECI is not set +# CONFIG_HTE is not set +# end of Device Drivers + +# +# File systems +# +# CONFIG_VALIDATE_FS_PARSER is not set +CONFIG_FS_IOMAP=y +CONFIG_FS_STACK=y +CONFIG_BUFFER_HEAD=y +CONFIG_LEGACY_DIRECT_IO=y +# CONFIG_EXT2_FS is not set +# CONFIG_EXT3_FS is not set +CONFIG_EXT4_FS=y +CONFIG_EXT4_USE_FOR_EXT2=y +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y +# CONFIG_EXT4_DEBUG is not set +CONFIG_JBD2=y +# CONFIG_JBD2_DEBUG is not set +CONFIG_FS_MBCACHE=y +# CONFIG_JFS_FS is not set +# CONFIG_XFS_FS is not set +# CONFIG_GFS2_FS is not set +# CONFIG_OCFS2_FS is not set +CONFIG_BTRFS_FS=m +CONFIG_BTRFS_FS_POSIX_ACL=y +# CONFIG_BTRFS_FS_RUN_SANITY_TESTS is not set +# CONFIG_BTRFS_DEBUG is not set +# CONFIG_BTRFS_ASSERT is not set +# CONFIG_BTRFS_EXPERIMENTAL is not set +# CONFIG_BTRFS_FS_REF_VERIFY is not set +# CONFIG_NILFS2_FS is not set +# CONFIG_F2FS_FS is not set +# CONFIG_BCACHEFS_FS is not set +CONFIG_FS_POSIX_ACL=y +CONFIG_EXPORTFS=y +# CONFIG_EXPORTFS_BLOCK_OPS is not set +CONFIG_FILE_LOCKING=y +# CONFIG_FS_ENCRYPTION is not set +# CONFIG_FS_VERITY is not set +CONFIG_FSNOTIFY=y +CONFIG_DNOTIFY=y +CONFIG_INOTIFY_USER=y +# CONFIG_FANOTIFY is not set +# CONFIG_QUOTA is not set +CONFIG_AUTOFS_FS=y +# CONFIG_FUSE_FS is not set +CONFIG_OVERLAY_FS=m +# CONFIG_OVERLAY_FS_REDIRECT_DIR is not set +CONFIG_OVERLAY_FS_REDIRECT_ALWAYS_FOLLOW=y +# CONFIG_OVERLAY_FS_INDEX is not set +# CONFIG_OVERLAY_FS_XINO_AUTO is not set +# CONFIG_OVERLAY_FS_METACOPY is not set +# CONFIG_OVERLAY_FS_DEBUG is not set + +# +# Caches +# +CONFIG_NETFS_SUPPORT=y +# CONFIG_NETFS_STATS is not set +# CONFIG_NETFS_DEBUG is not set +# CONFIG_FSCACHE is not set +# end of Caches + +# +# CD-ROM/DVD Filesystems +# +CONFIG_ISO9660_FS=y +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +# CONFIG_UDF_FS is not set +# end of CD-ROM/DVD Filesystems + +# +# DOS/FAT/EXFAT/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_FAT_DEFAULT_UTF8 is not set +# CONFIG_EXFAT_FS is not set +# CONFIG_NTFS3_FS is not set +# CONFIG_NTFS_FS is not set +# end of DOS/FAT/EXFAT/NT Filesystems + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +# CONFIG_PROC_KCORE is not set +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_TMPFS_INODE64 is not set +# CONFIG_TMPFS_QUOTA is not set +CONFIG_ARCH_SUPPORTS_HUGETLBFS=y +CONFIG_HUGETLBFS=y +# CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP_DEFAULT_ON is not set +CONFIG_HUGETLB_PAGE=y +CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP=y +CONFIG_HUGETLB_PMD_PAGE_TABLE_SHARING=y +CONFIG_ARCH_HAS_GIGANTIC_PAGE=y +CONFIG_CONFIGFS_FS=m +# end of Pseudo filesystems + +CONFIG_MISC_FILESYSTEMS=y +# CONFIG_ORANGEFS_FS is not set +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_ECRYPT_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 is not set +# CONFIG_CRAMFS is not set +# CONFIG_SQUASHFS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_OMFS_FS is not set +# CONFIG_HPFS_FS is not set +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX6FS_FS is not set +# CONFIG_ROMFS_FS is not set +# CONFIG_PSTORE is not set +# CONFIG_UFS_FS is not set +# CONFIG_EROFS_FS is not set +CONFIG_NETWORK_FILESYSTEMS=y +CONFIG_NFS_FS=y +# CONFIG_NFS_V2 is not set +CONFIG_NFS_V3=y +# CONFIG_NFS_V3_ACL is not set +CONFIG_NFS_V4=y +# CONFIG_NFS_SWAP is not set +CONFIG_NFS_V4_1=y +CONFIG_NFS_V4_2=y +CONFIG_PNFS_FILE_LAYOUT=y +CONFIG_PNFS_BLOCK=m +CONFIG_PNFS_FLEXFILE_LAYOUT=y +CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="kernel.org" +# CONFIG_NFS_V4_1_MIGRATION is not set +CONFIG_NFS_V4_SECURITY_LABEL=y +CONFIG_ROOT_NFS=y +# CONFIG_NFS_FSCACHE is not set +# CONFIG_NFS_USE_LEGACY_DNS is not set +CONFIG_NFS_USE_KERNEL_DNS=y +CONFIG_NFS_DISABLE_UDP_SUPPORT=y +CONFIG_NFS_V4_2_READ_PLUS=y +# CONFIG_NFSD is not set +CONFIG_GRACE_PERIOD=y +CONFIG_LOCKD=y +CONFIG_LOCKD_V4=y +CONFIG_NFS_COMMON=y +CONFIG_NFS_V4_2_SSC_HELPER=y +CONFIG_SUNRPC=y +CONFIG_SUNRPC_GSS=y +CONFIG_SUNRPC_BACKCHANNEL=y +CONFIG_RPCSEC_GSS_KRB5=y +# CONFIG_SUNRPC_DEBUG is not set +# CONFIG_CEPH_FS is not set +# CONFIG_CIFS is not set +# CONFIG_SMB_SERVER is not set +# CONFIG_CODA_FS is not set +# CONFIG_AFS_FS is not set +CONFIG_9P_FS=y +# CONFIG_9P_FS_POSIX_ACL is not set +# CONFIG_9P_FS_SECURITY 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 is not set +CONFIG_NLS_ISO8859_1=m +# 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_MAC_ROMAN is not set +# CONFIG_NLS_MAC_CELTIC is not set +# CONFIG_NLS_MAC_CENTEURO is not set +# CONFIG_NLS_MAC_CROATIAN is not set +# CONFIG_NLS_MAC_CYRILLIC is not set +# CONFIG_NLS_MAC_GAELIC is not set +# CONFIG_NLS_MAC_GREEK is not set +# CONFIG_NLS_MAC_ICELAND is not set +# CONFIG_NLS_MAC_INUIT is not set +# CONFIG_NLS_MAC_ROMANIAN is not set +# CONFIG_NLS_MAC_TURKISH is not set +# CONFIG_NLS_UTF8 is not set +# CONFIG_DLM is not set +# CONFIG_UNICODE is not set +CONFIG_IO_WQ=y +# end of File systems + +# +# Security options +# +CONFIG_KEYS=y +# CONFIG_KEYS_REQUEST_CACHE is not set +# CONFIG_PERSISTENT_KEYRINGS is not set +# CONFIG_BIG_KEYS is not set +# CONFIG_TRUSTED_KEYS is not set +# CONFIG_ENCRYPTED_KEYS is not set +# CONFIG_KEY_DH_OPERATIONS is not set +# CONFIG_SECURITY_DMESG_RESTRICT is not set +CONFIG_PROC_MEM_ALWAYS_FORCE=y +# CONFIG_PROC_MEM_FORCE_PTRACE is not set +# CONFIG_PROC_MEM_NO_FORCE is not set +CONFIG_SECURITY=y +CONFIG_HAS_SECURITY_AUDIT=y +CONFIG_SECURITYFS=y +CONFIG_SECURITY_NETWORK=y +# CONFIG_SECURITY_NETWORK_XFRM is not set +CONFIG_SECURITY_PATH=y +CONFIG_LSM_MMAP_MIN_ADDR=65536 +# CONFIG_STATIC_USERMODEHELPER is not set +CONFIG_SECURITY_SELINUX=y +# CONFIG_SECURITY_SELINUX_BOOTPARAM is not set +CONFIG_SECURITY_SELINUX_DEVELOP=y +CONFIG_SECURITY_SELINUX_AVC_STATS=y +CONFIG_SECURITY_SELINUX_SIDTAB_HASH_BITS=9 +CONFIG_SECURITY_SELINUX_SID2STR_CACHE_SIZE=256 +# CONFIG_SECURITY_SELINUX_DEBUG is not set +# CONFIG_SECURITY_SMACK is not set +# CONFIG_SECURITY_TOMOYO is not set +CONFIG_SECURITY_APPARMOR=y +# CONFIG_SECURITY_APPARMOR_DEBUG is not set +CONFIG_SECURITY_APPARMOR_INTROSPECT_POLICY=y +CONFIG_SECURITY_APPARMOR_HASH=y +CONFIG_SECURITY_APPARMOR_HASH_DEFAULT=y +CONFIG_SECURITY_APPARMOR_EXPORT_BINARY=y +CONFIG_SECURITY_APPARMOR_PARANOID_LOAD=y +# CONFIG_SECURITY_LOADPIN is not set +# CONFIG_SECURITY_YAMA is not set +# CONFIG_SECURITY_SAFESETID is not set +# CONFIG_SECURITY_LOCKDOWN_LSM is not set +# CONFIG_SECURITY_LANDLOCK is not set +# CONFIG_SECURITY_IPE is not set +CONFIG_INTEGRITY=y +# CONFIG_INTEGRITY_SIGNATURE is not set +CONFIG_INTEGRITY_AUDIT=y +# CONFIG_IMA is not set +# CONFIG_EVM is not set +# CONFIG_DEFAULT_SECURITY_SELINUX is not set +# CONFIG_DEFAULT_SECURITY_APPARMOR is not set +CONFIG_DEFAULT_SECURITY_DAC=y +CONFIG_LSM="landlock,lockdown,yama,loadpin,safesetid,ipe,bpf" + +# +# Kernel hardening options +# + +# +# Memory initialization +# +CONFIG_INIT_STACK_NONE=y +# CONFIG_INIT_ON_ALLOC_DEFAULT_ON is not set +# CONFIG_INIT_ON_FREE_DEFAULT_ON is not set +CONFIG_CC_HAS_ZERO_CALL_USED_REGS=y +# CONFIG_ZERO_CALL_USED_REGS is not set +# end of Memory initialization + +# +# Bounds checking +# +# CONFIG_FORTIFY_SOURCE is not set +# CONFIG_HARDENED_USERCOPY is not set +# end of Bounds checking + +# +# Hardening of kernel data structures +# +CONFIG_LIST_HARDENED=y +# CONFIG_BUG_ON_DATA_CORRUPTION is not set +# end of Hardening of kernel data structures + +CONFIG_RANDSTRUCT_NONE=y +# end of Kernel hardening options +# end of Security options + +CONFIG_XOR_BLOCKS=m +CONFIG_CRYPTO=y + +# +# Crypto core or helper +# +CONFIG_CRYPTO_ALGAPI=y +CONFIG_CRYPTO_ALGAPI2=y +CONFIG_CRYPTO_AEAD=y +CONFIG_CRYPTO_AEAD2=y +CONFIG_CRYPTO_SIG=y +CONFIG_CRYPTO_SIG2=y +CONFIG_CRYPTO_SKCIPHER=y +CONFIG_CRYPTO_SKCIPHER2=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_ACOMP2=y +CONFIG_CRYPTO_MANAGER=y +CONFIG_CRYPTO_MANAGER2=y +# CONFIG_CRYPTO_USER is not set +CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y +CONFIG_CRYPTO_NULL=m +CONFIG_CRYPTO_NULL2=m +# CONFIG_CRYPTO_PCRYPT is not set +# CONFIG_CRYPTO_CRYPTD is not set +CONFIG_CRYPTO_AUTHENC=m +# CONFIG_CRYPTO_KRB5ENC is not set +# CONFIG_CRYPTO_TEST is not set +CONFIG_CRYPTO_ENGINE=y +# end of Crypto core or helper + +# +# Public-key cryptography +# +CONFIG_CRYPTO_RSA=y +# CONFIG_CRYPTO_DH is not set +# CONFIG_CRYPTO_ECDH is not set +# CONFIG_CRYPTO_ECDSA is not set +# CONFIG_CRYPTO_ECRDSA is not set +# CONFIG_CRYPTO_CURVE25519 is not set +# end of Public-key cryptography + +# +# Block ciphers +# +CONFIG_CRYPTO_AES=m +# CONFIG_CRYPTO_AES_TI is not set +# CONFIG_CRYPTO_ANUBIS is not set +# CONFIG_CRYPTO_ARIA 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_SEED is not set +# CONFIG_CRYPTO_SERPENT is not set +# CONFIG_CRYPTO_SM4_GENERIC is not set +# CONFIG_CRYPTO_TEA is not set +# CONFIG_CRYPTO_TWOFISH is not set +# end of Block ciphers + +# +# Length-preserving ciphers and modes +# +# CONFIG_CRYPTO_ADIANTUM is not set +# CONFIG_CRYPTO_ARC4 is not set +# CONFIG_CRYPTO_CHACHA20 is not set +CONFIG_CRYPTO_CBC=m +CONFIG_CRYPTO_CTR=m +# CONFIG_CRYPTO_CTS is not set +CONFIG_CRYPTO_ECB=y +# CONFIG_CRYPTO_HCTR2 is not set +# CONFIG_CRYPTO_LRW is not set +# CONFIG_CRYPTO_PCBC is not set +# CONFIG_CRYPTO_XTS is not set +# end of Length-preserving ciphers and modes + +# +# AEAD (authenticated encryption with associated data) ciphers +# +# CONFIG_CRYPTO_AEGIS128 is not set +# CONFIG_CRYPTO_CHACHA20POLY1305 is not set +# CONFIG_CRYPTO_CCM is not set +CONFIG_CRYPTO_GCM=m +CONFIG_CRYPTO_GENIV=m +CONFIG_CRYPTO_SEQIV=m +CONFIG_CRYPTO_ECHAINIV=m +# CONFIG_CRYPTO_ESSIV is not set +# end of AEAD (authenticated encryption with associated data) ciphers + +# +# Hashes, digests, and MACs +# +CONFIG_CRYPTO_BLAKE2B=m +# CONFIG_CRYPTO_CMAC is not set +CONFIG_CRYPTO_GHASH=m +CONFIG_CRYPTO_HMAC=m +# CONFIG_CRYPTO_MD4 is not set +# CONFIG_CRYPTO_MD5 is not set +# CONFIG_CRYPTO_MICHAEL_MIC is not set +# CONFIG_CRYPTO_POLY1305 is not set +# CONFIG_CRYPTO_RMD160 is not set +# CONFIG_CRYPTO_SHA1 is not set +CONFIG_CRYPTO_SHA256=y +CONFIG_CRYPTO_SHA512=m +CONFIG_CRYPTO_SHA3=m +# CONFIG_CRYPTO_SM3_GENERIC is not set +# CONFIG_CRYPTO_STREEBOG is not set +# CONFIG_CRYPTO_WP512 is not set +# CONFIG_CRYPTO_XCBC is not set +CONFIG_CRYPTO_XXHASH=m +# end of Hashes, digests, and MACs + +# +# CRCs (cyclic redundancy checks) +# +CONFIG_CRYPTO_CRC32C=m +# CONFIG_CRYPTO_CRC32 is not set +# end of CRCs (cyclic redundancy checks) + +# +# Compression +# +# CONFIG_CRYPTO_DEFLATE is not set +# CONFIG_CRYPTO_LZO is not set +# CONFIG_CRYPTO_842 is not set +# CONFIG_CRYPTO_LZ4 is not set +# CONFIG_CRYPTO_LZ4HC is not set +# CONFIG_CRYPTO_ZSTD is not set +# end of Compression + +# +# Random number generation +# +# CONFIG_CRYPTO_ANSI_CPRNG is not set +CONFIG_CRYPTO_DRBG_MENU=m +CONFIG_CRYPTO_DRBG_HMAC=y +# CONFIG_CRYPTO_DRBG_HASH is not set +# CONFIG_CRYPTO_DRBG_CTR is not set +CONFIG_CRYPTO_DRBG=m +CONFIG_CRYPTO_JITTERENTROPY=m +CONFIG_CRYPTO_JITTERENTROPY_MEMORY_BLOCKS=64 +CONFIG_CRYPTO_JITTERENTROPY_MEMORY_BLOCKSIZE=32 +CONFIG_CRYPTO_JITTERENTROPY_OSR=1 +# end of Random number generation + +# +# Userspace interface +# +CONFIG_CRYPTO_USER_API=y +CONFIG_CRYPTO_USER_API_HASH=y +# CONFIG_CRYPTO_USER_API_SKCIPHER is not set +# CONFIG_CRYPTO_USER_API_RNG is not set +# CONFIG_CRYPTO_USER_API_AEAD is not set +CONFIG_CRYPTO_USER_API_ENABLE_OBSOLETE=y +# end of Userspace interface + +# +# Accelerated Cryptographic Algorithms for CPU (riscv) +# +# end of Accelerated Cryptographic Algorithms for CPU (riscv) + +CONFIG_CRYPTO_HW=y +CONFIG_CRYPTO_DEV_ALLWINNER=y +# CONFIG_CRYPTO_DEV_SUN4I_SS is not set +# CONFIG_CRYPTO_DEV_SUN8I_CE is not set +# CONFIG_CRYPTO_DEV_SUN8I_SS is not set +# CONFIG_CRYPTO_DEV_ATMEL_ECC is not set +# CONFIG_CRYPTO_DEV_ATMEL_SHA204A is not set +# CONFIG_CRYPTO_DEV_NITROX_CNN55XX is not set +# CONFIG_CRYPTO_DEV_QAT_DH895xCC is not set +# CONFIG_CRYPTO_DEV_QAT_C3XXX is not set +# CONFIG_CRYPTO_DEV_QAT_C62X is not set +# CONFIG_CRYPTO_DEV_QAT_4XXX is not set +# CONFIG_CRYPTO_DEV_QAT_420XX is not set +# CONFIG_CRYPTO_DEV_QAT_DH895xCCVF is not set +# CONFIG_CRYPTO_DEV_QAT_C3XXXVF is not set +# CONFIG_CRYPTO_DEV_QAT_C62XVF is not set +CONFIG_CRYPTO_DEV_VIRTIO=y +# CONFIG_CRYPTO_DEV_SAFEXCEL is not set +# CONFIG_CRYPTO_DEV_CCREE is not set +# CONFIG_CRYPTO_DEV_AMLOGIC_GXL is not set +# CONFIG_ASYMMETRIC_KEY_TYPE is not set + +# +# Certificates for signature checking +# +# CONFIG_SYSTEM_BLACKLIST_KEYRING is not set +# end of Certificates for signature checking + +# CONFIG_CRYPTO_KRB5 is not set +CONFIG_BINARY_PRINTF=y + +# +# Library routines +# +CONFIG_RAID6_PQ=m +CONFIG_RAID6_PQ_BENCHMARK=y +CONFIG_LINEAR_RANGES=y +# CONFIG_PACKING is not set +CONFIG_BITREVERSE=y +CONFIG_GENERIC_STRNCPY_FROM_USER=y +CONFIG_GENERIC_STRNLEN_USER=y +CONFIG_GENERIC_NET_UTILS=y +# CONFIG_CORDIC is not set +# CONFIG_PRIME_NUMBERS is not set +CONFIG_RATIONAL=y +CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y +CONFIG_ARCH_HAS_FAST_MULTIPLIER=y +CONFIG_ARCH_USE_SYM_ANNOTATIONS=y + +# +# Crypto library routines +# +CONFIG_CRYPTO_LIB_UTILS=y +CONFIG_CRYPTO_LIB_AES=m +CONFIG_CRYPTO_LIB_GF128MUL=m +CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y +CONFIG_CRYPTO_LIB_POLY1305_RSIZE=1 +CONFIG_CRYPTO_LIB_SHA1=y +CONFIG_CRYPTO_LIB_SHA256=y +# end of Crypto library routines + +CONFIG_CRC_CCITT=m +CONFIG_CRC16=y +CONFIG_CRC_ITU_T=y +CONFIG_CRC32=y +CONFIG_CRC7=y +CONFIG_CRC_OPTIMIZATIONS=y +CONFIG_XXHASH=y +CONFIG_AUDIT_GENERIC=y +# CONFIG_RANDOM32_SELFTEST is not set +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=m +CONFIG_LZO_COMPRESS=m +CONFIG_LZO_DECOMPRESS=y +CONFIG_LZ4_DECOMPRESS=y +CONFIG_ZSTD_COMMON=y +CONFIG_ZSTD_COMPRESS=y +CONFIG_ZSTD_DECOMPRESS=y +CONFIG_XZ_DEC=y +CONFIG_XZ_DEC_X86=y +CONFIG_XZ_DEC_POWERPC=y +CONFIG_XZ_DEC_ARM=y +CONFIG_XZ_DEC_ARMTHUMB=y +CONFIG_XZ_DEC_ARM64=y +CONFIG_XZ_DEC_SPARC=y +CONFIG_XZ_DEC_RISCV=y +# CONFIG_XZ_DEC_MICROLZMA is not set +CONFIG_XZ_DEC_BCJ=y +# CONFIG_XZ_DEC_TEST is not set +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_DECOMPRESS_ZSTD=y +CONFIG_GENERIC_ALLOCATOR=y +CONFIG_INTERVAL_TREE=y +CONFIG_XARRAY_MULTI=y +CONFIG_ASSOCIATIVE_ARRAY=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT=y +CONFIG_HAS_IOPORT_MAP=y +CONFIG_HAS_DMA=y +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_ARCH_DMA_ADDR_T_64BIT=y +CONFIG_DMA_DECLARE_COHERENT=y +CONFIG_ARCH_HAS_SETUP_DMA_OPS=y +CONFIG_ARCH_HAS_SYNC_DMA_FOR_DEVICE=y +CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU=y +CONFIG_ARCH_HAS_DMA_PREP_COHERENT=y +CONFIG_ARCH_DMA_DEFAULT_COHERENT=y +CONFIG_SWIOTLB=y +# CONFIG_SWIOTLB_DYNAMIC is not set +CONFIG_DMA_BOUNCE_UNALIGNED_KMALLOC=y +CONFIG_DMA_NEED_SYNC=y +# CONFIG_DMA_RESTRICTED_POOL is not set +CONFIG_DMA_NONCOHERENT_MMAP=y +CONFIG_DMA_COHERENT_POOL=y +CONFIG_DMA_DIRECT_REMAP=y +# CONFIG_DMA_API_DEBUG is not set +# CONFIG_DMA_MAP_BENCHMARK is not set +CONFIG_SGL_ALLOC=y +# CONFIG_CPUMASK_OFFSTACK is not set +CONFIG_CPU_RMAP=y +CONFIG_DQL=y +CONFIG_GLOB=y +# CONFIG_GLOB_SELFTEST is not set +CONFIG_NLATTR=y +CONFIG_CLZ_TAB=y +# CONFIG_IRQ_POLL is not set +CONFIG_MPILIB=y +CONFIG_DIMLIB=y +CONFIG_LIBFDT=y +CONFIG_OID_REGISTRY=y +CONFIG_HAVE_GENERIC_VDSO=y +CONFIG_GENERIC_GETTIMEOFDAY=y +CONFIG_GENERIC_VDSO_TIME_NS=y +CONFIG_GENERIC_VDSO_DATA_STORE=y +CONFIG_FONT_SUPPORT=y +# CONFIG_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +CONFIG_SG_POOL=y +CONFIG_ARCH_HAS_PMEM_API=y +CONFIG_MEMREGION=y +CONFIG_ARCH_STACKWALK=y +CONFIG_STACKDEPOT=y +CONFIG_STACKDEPOT_MAX_FRAMES=64 +CONFIG_SBITMAP=y +# CONFIG_LWQ_TEST is not set +# end of Library routines + +CONFIG_GENERIC_IOREMAP=y +CONFIG_GENERIC_LIB_DEVMEM_IS_ALLOWED=y +CONFIG_UNION_FIND=y + +# +# Kernel hacking +# + +# +# printk and dmesg options +# +CONFIG_PRINTK_TIME=y +# CONFIG_PRINTK_CALLER is not set +# CONFIG_STACKTRACE_BUILD_ID is not set +CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7 +CONFIG_CONSOLE_LOGLEVEL_QUIET=4 +CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4 +# CONFIG_BOOT_PRINTK_DELAY is not set +# CONFIG_DYNAMIC_DEBUG is not set +# CONFIG_DYNAMIC_DEBUG_CORE is not set +CONFIG_SYMBOLIC_ERRNAME=y +CONFIG_DEBUG_BUGVERBOSE=y +# end of printk and dmesg options + +CONFIG_DEBUG_KERNEL=y +CONFIG_DEBUG_MISC=y + +# +# Compile-time checks and compiler options +# +CONFIG_DEBUG_INFO_NONE=y +# CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT is not set +# CONFIG_DEBUG_INFO_DWARF4 is not set +# CONFIG_DEBUG_INFO_DWARF5 is not set +CONFIG_FRAME_WARN=2048 +# CONFIG_STRIP_ASM_SYMS is not set +# CONFIG_READABLE_ASM is not set +# CONFIG_HEADERS_INSTALL is not set +# CONFIG_DEBUG_SECTION_MISMATCH is not set +CONFIG_SECTION_MISMATCH_WARN_ONLY=y +# CONFIG_DEBUG_FORCE_FUNCTION_ALIGN_64B is not set +CONFIG_ARCH_WANT_FRAME_POINTERS=y +CONFIG_FRAME_POINTER=y +# CONFIG_VMLINUX_MAP is not set +# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set +# end of Compile-time checks and compiler options + +# +# Generic Kernel Debugging Instruments +# +# CONFIG_MAGIC_SYSRQ is not set +CONFIG_DEBUG_FS=y +CONFIG_DEBUG_FS_ALLOW_ALL=y +# CONFIG_DEBUG_FS_DISALLOW_MOUNT is not set +# CONFIG_DEBUG_FS_ALLOW_NONE is not set +CONFIG_HAVE_ARCH_KGDB=y +CONFIG_HAVE_ARCH_KGDB_QXFER_PKT=y +# CONFIG_KGDB is not set +CONFIG_ARCH_HAS_UBSAN=y +# CONFIG_UBSAN is not set +CONFIG_HAVE_KCSAN_COMPILER=y +# end of Generic Kernel Debugging Instruments + +# +# Networking Debugging +# +# CONFIG_NET_DEV_REFCNT_TRACKER is not set +# CONFIG_NET_NS_REFCNT_TRACKER is not set +# CONFIG_DEBUG_NET is not set +# CONFIG_DEBUG_NET_SMALL_RTNL is not set +# end of Networking Debugging + +# +# Memory Debugging +# +# CONFIG_PAGE_EXTENSION is not set +CONFIG_DEBUG_PAGEALLOC=y +# CONFIG_DEBUG_PAGEALLOC_ENABLE_DEFAULT is not set +CONFIG_SLUB_DEBUG=y +# CONFIG_SLUB_DEBUG_ON is not set +# CONFIG_PAGE_OWNER is not set +# CONFIG_PAGE_POISONING is not set +# CONFIG_DEBUG_RODATA_TEST is not set +CONFIG_ARCH_HAS_DEBUG_WX=y +# CONFIG_DEBUG_WX is not set +CONFIG_ARCH_HAS_PTDUMP=y +# CONFIG_PTDUMP_DEBUGFS is not set +CONFIG_HAVE_DEBUG_KMEMLEAK=y +# CONFIG_DEBUG_KMEMLEAK is not set +# CONFIG_PER_VMA_LOCK_STATS is not set +# CONFIG_DEBUG_OBJECTS is not set +# CONFIG_SHRINKER_DEBUG is not set +# CONFIG_DEBUG_STACK_USAGE is not set +CONFIG_SCHED_STACK_END_CHECK=y +CONFIG_ARCH_HAS_DEBUG_VM_PGTABLE=y +# CONFIG_DEBUG_VFS is not set +CONFIG_DEBUG_VM_IRQSOFF=y +CONFIG_DEBUG_VM=y +# CONFIG_DEBUG_VM_MAPLE_TREE is not set +# CONFIG_DEBUG_VM_RB is not set +CONFIG_DEBUG_VM_PGFLAGS=y +CONFIG_DEBUG_VM_PGTABLE=y +CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y +# CONFIG_DEBUG_VIRTUAL is not set +CONFIG_DEBUG_MEMORY_INIT=y +CONFIG_DEBUG_PER_CPU_MAPS=y +# CONFIG_MEM_ALLOC_PROFILING is not set +CONFIG_HAVE_ARCH_KASAN=y +CONFIG_HAVE_ARCH_KASAN_VMALLOC=y +CONFIG_CC_HAS_KASAN_GENERIC=y +CONFIG_CC_HAS_WORKING_NOSANITIZE_ADDRESS=y +# CONFIG_KASAN is not set +CONFIG_HAVE_ARCH_KFENCE=y +# CONFIG_KFENCE is not set +# end of Memory Debugging + +# CONFIG_DEBUG_SHIRQ is not set + +# +# Debug Oops, Lockups and Hangs +# +# CONFIG_PANIC_ON_OOPS is not set +CONFIG_PANIC_ON_OOPS_VALUE=0 +CONFIG_PANIC_TIMEOUT=0 +CONFIG_LOCKUP_DETECTOR=y +CONFIG_SOFTLOCKUP_DETECTOR=y +# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set +CONFIG_HAVE_HARDLOCKUP_DETECTOR_BUDDY=y +# CONFIG_HARDLOCKUP_DETECTOR is not set +CONFIG_DETECT_HUNG_TASK=y +CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120 +# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set +CONFIG_DETECT_HUNG_TASK_BLOCKER=y +CONFIG_WQ_WATCHDOG=y +# CONFIG_WQ_CPU_INTENSIVE_REPORT is not set +# CONFIG_TEST_LOCKUP is not set +# end of Debug Oops, Lockups and Hangs + +# +# Scheduler Debugging +# +CONFIG_SCHED_INFO=y +# CONFIG_SCHEDSTATS is not set +# end of Scheduler Debugging + +# +# Lock Debugging (spinlocks, mutexes, etc...) +# +CONFIG_LOCK_DEBUGGING_SUPPORT=y +# CONFIG_PROVE_LOCKING is not set +# CONFIG_LOCK_STAT is not set +CONFIG_DEBUG_RT_MUTEXES=y +CONFIG_DEBUG_SPINLOCK=y +CONFIG_DEBUG_MUTEXES=y +# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set +CONFIG_DEBUG_RWSEMS=y +# CONFIG_DEBUG_LOCK_ALLOC is not set +CONFIG_DEBUG_ATOMIC_SLEEP=y +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +# CONFIG_LOCK_TORTURE_TEST is not set +# CONFIG_WW_MUTEX_SELFTEST is not set +# CONFIG_SCF_TORTURE_TEST is not set +# CONFIG_CSD_LOCK_WAIT_DEBUG is not set +# end of Lock Debugging (spinlocks, mutexes, etc...) + +# CONFIG_DEBUG_IRQFLAGS is not set +CONFIG_STACKTRACE=y +# CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set +# CONFIG_DEBUG_KOBJECT is not set + +# +# Debug kernel data structures +# +CONFIG_DEBUG_LIST=y +CONFIG_DEBUG_PLIST=y +CONFIG_DEBUG_SG=y +# CONFIG_DEBUG_NOTIFIERS is not set +# CONFIG_DEBUG_MAPLE_TREE is not set +# end of Debug kernel data structures + +# +# RCU Debugging +# +# CONFIG_RCU_SCALE_TEST is not set +# CONFIG_RCU_TORTURE_TEST is not set +# CONFIG_RCU_REF_SCALE_TEST is not set +CONFIG_RCU_CPU_STALL_TIMEOUT=21 +CONFIG_RCU_EXP_CPU_STALL_TIMEOUT=0 +# CONFIG_RCU_CPU_STALL_CPUTIME is not set +# CONFIG_RCU_TRACE is not set +CONFIG_RCU_EQS_DEBUG=y +# end of RCU Debugging + +# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set +# CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set +# CONFIG_LATENCYTOP is not set +CONFIG_USER_STACKTRACE_SUPPORT=y +CONFIG_HAVE_RETHOOK=y +CONFIG_HAVE_FUNCTION_TRACER=y +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y +CONFIG_HAVE_FUNCTION_GRAPH_FREGS=y +CONFIG_HAVE_FTRACE_GRAPH_FUNC=y +CONFIG_HAVE_DYNAMIC_FTRACE=y +CONFIG_HAVE_DYNAMIC_FTRACE_WITH_DIRECT_CALLS=y +CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS=y +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y +CONFIG_HAVE_SYSCALL_TRACEPOINTS=y +CONFIG_TRACING_SUPPORT=y +# CONFIG_FTRACE is not set +# CONFIG_SAMPLES is not set +CONFIG_HAVE_SAMPLE_FTRACE_DIRECT=y +CONFIG_HAVE_SAMPLE_FTRACE_DIRECT_MULTI=y +# CONFIG_STRICT_DEVMEM is not set + +# +# riscv Debugging +# + +# +# arch/riscv/kernel Testing and Coverage +# +CONFIG_RUNTIME_KERNEL_TESTING_MENU=y +# end of arch/riscv/kernel Testing and Coverage +# end of riscv Debugging + +# +# Kernel Testing and Coverage +# +# CONFIG_KUNIT is not set +# CONFIG_NOTIFIER_ERROR_INJECTION is not set +# CONFIG_FAULT_INJECTION is not set +CONFIG_ARCH_HAS_KCOV=y +CONFIG_CC_HAS_SANCOV_TRACE_PC=y +# CONFIG_RUNTIME_TESTING_MENU is not set +CONFIG_ARCH_USE_MEMTEST=y +CONFIG_MEMTEST=y +# end of Kernel Testing and Coverage + +# +# Rust hacking +# +# end of Rust hacking +# end of Kernel hacking + +CONFIG_IO_URING_ZCRX=y diff --git a/examples/simple/board/qemu_virt_riscv64/overlay.dts b/examples/simple/board/qemu_virt_riscv64/overlay.dts new file mode 100644 index 000000000..d9791fd64 --- /dev/null +++ b/examples/simple/board/qemu_virt_riscv64/overlay.dts @@ -0,0 +1,77 @@ +/* + * Copyright 2024, UNSW + * + * SPDX-License-Identifier: BSD-2-Clause + */ +/ { + /* Need to specify how much RAM the guest will have */ + memory@80000000 { + device_type = "memory"; + reg = <0x0 0x80000000 0x0 0x10000000>; + }; + + flash@20000000 { + status = "disabled"; + }; + + cpus { + cpu@0 { + /* This is the same as the base DTS for QEMU, except we do not support the Zicbom and Zicboz extensions. */ + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "h", "zic64b", "zicbop", "ziccamoa", "ziccif", "zicclsm", "ziccrse", "zicntr", "zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", "zmmul", "za64rs", "zaamo", "zalrsc", "zawrs", "zfa", "zca", "zcd", "zba", "zbb", "zbc", "zbs", "ssccptr", "sscounterenw", "sstc", "sstvala", "sstvecd", "svadu", "svvptc"; + riscv,isa = "rv64imafdch_zic64b_zicbop_ziccamoa_ziccif_zicclsm_ziccrse_zicntr_zicsr_zifencei_zihintntl_zihintpause_zihpm_zmmul_za64rs_zaamo_zalrsc_zawrs_zfa_zca_zcd_zba_zbb_zbc_zbs_ssccptr_sscounterenw_sstc_sstvala_sstvecd_svadu_svvptc"; + }; + }; + + soc { + rtc@101000 { + status = "disabled"; + }; + + // Despite disabling this device in the overlay, Linux will still try to touch it + // during shutdown. So we just delete it instead. + /delete-node/ test@100000; + + pci@30000000 { + status = "disabled"; + }; + + virtio_mmio@10008000 { + status = "disabled"; + }; + + virtio_mmio@10007000 { + status = "disabled"; + }; + + virtio_mmio@10006000 { + status = "disabled"; + }; + + virtio_mmio@10005000 { + status = "disabled"; + }; + + virtio_mmio@10004000 { + status = "disabled"; + }; + + virtio_mmio@10003000 { + status = "disabled"; + }; + + virtio_mmio@10002000 { + status = "disabled"; + }; + + virtio_mmio@10001000 { + status = "disabled"; + }; + }; + + chosen { + bootargs = "earlycon=sbi"; + stdout-path = "/soc/serial@10000000"; + linux,initrd-start = <0x8c000000>; + linux,initrd-end = <0x8e000000>; + }; +}; diff --git a/examples/simple/board/qemu_virt_riscv64/rootfs.cpio.gz b/examples/simple/board/qemu_virt_riscv64/rootfs.cpio.gz new file mode 100644 index 000000000..f1f1fd046 Binary files /dev/null and b/examples/simple/board/qemu_virt_riscv64/rootfs.cpio.gz differ diff --git a/examples/simple/board/qemu_virt_riscv64/simple.system b/examples/simple/board/qemu_virt_riscv64/simple.system new file mode 100644 index 000000000..7b6d22046 --- /dev/null +++ b/examples/simple/board/qemu_virt_riscv64/simple.system @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/simple/build.zig b/examples/simple/build.zig index fe011ea05..9d9dfc5ab 100644 --- a/examples/simple/build.zig +++ b/examples/simple/build.zig @@ -5,6 +5,8 @@ const LazyPath = std.Build.LazyPath; const MicrokitBoard = enum { qemu_virt_aarch64, + qemu_virt_riscv64, + hifive_p550, odroidc4, maaxboard, }; @@ -25,6 +27,24 @@ const targets = [_]Target { .abi = .none, }, }, + .{ + .board = MicrokitBoard.qemu_virt_riscv64, + .zig_target = std.Target.Query{ + .cpu_arch = .riscv64, + .cpu_model = .{ .explicit = &std.Target.riscv.cpu.baseline_rv64 }, + .os_tag = .freestanding, + .abi = .none, + }, + }, + .{ + .board = MicrokitBoard.hifive_p550, + .zig_target = std.Target.Query{ + .cpu_arch = .riscv64, + .cpu_model = .{ .explicit = &std.Target.riscv.cpu.baseline_rv64 }, + .os_tag = .freestanding, + .abi = .none, + }, + }, .{ .board = MicrokitBoard.odroidc4, .zig_target = std.Target.Query{ @@ -82,8 +102,8 @@ pub fn build(b: *std.Build) !void { const target = b.resolveTargetQuery(findTarget(microkit_board_option)); const microkit_board = @tagName(microkit_board_option); - const custom_linux = b.option([]const u8, "linux", "Custom Linux image to use") orelse null; - const custom_initrd = b.option([]const u8, "initrd", "Custom initrd image to use") orelse null; + const custom_linux = b.option(std.Build.LazyPath, "linux", "Custom Linux image to use") orelse null; + const custom_initrd = b.option(std.Build.LazyPath, "initrd", "Custom initrd image to use") orelse null; const microkit_board_dir = microkit_sdk.path(b, "board").path(b, microkit_board).path(b, microkit_config); const microkit_tool = microkit_sdk.path(b, "bin/microkit"); @@ -94,6 +114,7 @@ pub fn build(b: *std.Build) !void { const arm_vgic_version: usize = switch (microkit_board_option) { .qemu_virt_aarch64, .odroidc4 => 2, .maaxboard => 3, + .qemu_virt_riscv64, .hifive_p550 => 0, }; const libvmm_dep = b.dependency("libvmm", .{ @@ -165,30 +186,48 @@ pub fn build(b: *std.Build) !void { // We need to produce the DTB from the DTS before doing anything to produce guest_images guest_images.step.dependOn(&b.addInstallFileWithDir(dtb, .prefix, "linux.dtb").step); - const linux_image_dep = b.lazyDependency("linux", .{}); - const initrd_image_dep = b.lazyDependency(b.fmt("{s}_initrd", .{ microkit_board }), .{}); - if (custom_linux) |c| { - guest_images.step.dependOn(&b.addInstallFileWithDir(.{ .cwd_relative = c }, .prefix, "linux").step); - } else if (linux_image_dep) |linux_image| { - guest_images.step.dependOn(&b.addInstallFileWithDir(linux_image.path("linux"), .prefix, "linux").step); + guest_images.step.dependOn(&b.addInstallFileWithDir(c, .prefix, "linux").step); + } else if (target.result.cpu.arch == .riscv64) { + guest_images.step.dependOn(&b.addInstallFileWithDir(b.path("board/qemu_virt_riscv64/linux"), .prefix, "linux").step); + } else { + const linux_image_dep = b.lazyDependency("linux", .{}); + if (linux_image_dep) |linux_image| { + guest_images.step.dependOn(&b.addInstallFileWithDir(linux_image.path("linux"), .prefix, "linux").step); + } } if (custom_initrd) |c| { - guest_images.step.dependOn(&b.addInstallFileWithDir(.{ .cwd_relative = c }, .prefix, "rootfs.cpio.gz").step); - } else if (initrd_image_dep) |initrd_image| { - guest_images.step.dependOn(&b.addInstallFileWithDir(initrd_image.path("rootfs.cpio.gz"), .prefix, "rootfs.cpio.gz").step); + guest_images.step.dependOn(&b.addInstallFileWithDir(c, .prefix, "rootfs.cpio.gz").step); + } else if (target.result.cpu.arch == .riscv64) { + guest_images.step.dependOn(&b.addInstallFileWithDir(b.path("board/qemu_virt_riscv64/rootfs.cpio.gz"), .prefix, "rootfs.cpio.gz").step); + } else { + const initrd_image_dep = b.lazyDependency(b.fmt("{s}_initrd", .{ microkit_board }), .{}); + if (initrd_image_dep) |initrd_image| { + guest_images.step.dependOn(&b.addInstallFileWithDir(initrd_image.path("rootfs.cpio.gz"), .prefix, "rootfs.cpio.gz").step); + } } const kernel_image_arg = b.fmt("-DGUEST_KERNEL_IMAGE_PATH=\"{s}\"", .{ b.getInstallPath(.prefix, "linux") }); const initrd_image_arg = b.fmt("-DGUEST_INITRD_IMAGE_PATH=\"{s}\"", .{ b.getInstallPath(.prefix, "rootfs.cpio.gz") }); + + // Hack to avoid caching of the guest images incbins: https://github.com/ziglang/zig/issues/16919 + var prng = std.Random.DefaultPrng.init(blk: { + var seed: u64 = undefined; + try std.posix.getrandom(std.mem.asBytes(&seed)); + break :blk seed; + }); + const rand = prng.random(); + const dtb_image_arg = b.fmt("-DGUEST_DTB_IMAGE_PATH=\"{s}\"", .{ b.getInstallPath(.prefix, "linux.dtb") }); + const random_arg = b.fmt("-DRANDOM=\"{}\"", .{ rand.int(usize) }); guest_images.addCSourceFile(.{ .file = libvmm_dep.path("tools/package_guest_images.S"), .flags = &.{ kernel_image_arg, dtb_image_arg, initrd_image_arg, + random_arg, "-x", "assembler-with-cpp", } @@ -242,5 +281,21 @@ pub fn build(b: *std.Build) !void { qemu_cmd.step.dependOn(b.default_step); const simulate_step = b.step("qemu", "Simulate the image using QEMU"); simulate_step.dependOn(&qemu_cmd.step); + } else if (microkit_board_option == .qemu_virt_riscv64) { + const qemu_cmd = b.addSystemCommand(&[_][]const u8{ + "qemu-system-riscv64", + "-machine", + "virt", + "-serial", + "mon:stdio", + "-kernel", + final_image_dest, + "-m", + "2G", + "-nographic", + }); + qemu_cmd.step.dependOn(b.default_step); + const simulate_step = b.step("qemu", "Simulate the image via QEMU"); + simulate_step.dependOn(&qemu_cmd.step); } } diff --git a/examples/simple/simple.mk b/examples/simple/simple.mk index b7e022f8c..af986aec8 100644 --- a/examples/simple/simple.mk +++ b/examples/simple/simple.mk @@ -3,8 +3,6 @@ # # SPDX-License-Identifier: BSD-2-Clause # -QEMU := qemu-system-aarch64 - MICROKIT_TOOL ?= $(MICROKIT_SDK)/bin/microkit BOARD_DIR := $(MICROKIT_SDK)/board/$(MICROKIT_BOARD)/$(MICROKIT_CONFIG) @@ -14,7 +12,7 @@ SYSTEM_FILE := $(SYSTEM_DIR)/simple.system IMAGE_FILE := loader.img REPORT_FILE := report.txt -SDDF_CUSTOM_LIBC := 1 +ARCH := ${shell grep 'CONFIG_SEL4_ARCH ' $(BOARD_DIR)/include/kernel/gen_config.h | cut -d' ' -f4} vpath %.c $(LIBVMM) $(EXAMPLE_DIR) @@ -23,10 +21,15 @@ IMAGES := vmm.elf LINUX ?= 85000f3f42a882e4476e57003d53f2bbec8262b0-linux ifeq ($(strip $(MICROKIT_BOARD)), qemu_virt_aarch64) INITRD ?= 6dcd1debf64e6d69b178cd0f46b8c4ae7cebe2a5-rootfs.cpio.gz + QEMU := qemu-system-aarch64 + QEMU_ARCH_ARGS := -machine virt,virtualization=on -cpu cortex-a53 -device loader,file=$(IMAGE_FILE),addr=0x70000000,cpu-num=0 else ifeq ($(strip $(MICROKIT_BOARD)), odroidc4) INITRD ?= ec78fdfd660bc9358e4d7dcb73b55d88339ba19d-rootfs.cpio.gz else ifeq ($(strip $(MICROKIT_BOARD)), maaxboard) INITRD ?= ce255a92feb25d09b5a0336b798523f35c2f8fe0-rootfs.cpio.gz +else ifeq ($(strip $(MICROKIT_BOARD)), qemu_virt_riscv64) + QEMU := qemu-system-riscv64 + QEMU_ARCH_ARGS := -machine virt -kernel $(IMAGE_FILE) else $(error Unsupported MICROKIT_BOARD given) endif @@ -44,8 +47,17 @@ CFLAGS := \ -I$(SDDF)/include/sddf/util/custom_libc \ -I$(SDDF)/include/microkit \ -MD \ - -MP \ - -target $(TARGET) + -MP + +ifeq ($(ARCH),aarch64) + ARCH_FLAGS := -target aarch64-none-elf +else ifeq ($(ARCH),riscv64) + ARCH_FLAGS := -march=rv64imafdc -target riscv64-none-elf +else + $(error Unsupported ARCH given) +endif + +CFLAGS += $(ARCH_FLAGS) LDFLAGS := -L$(BOARD_DIR)/lib LIBS := --start-group -lmicrokit -Tmicrokit.ld libvmm.a libsddf_util_debug.a --end-group @@ -94,18 +106,16 @@ images.o: $(LIBVMM)/tools/package_guest_images.S $(LINUX) $(INITRD) vm.dtb -DGUEST_KERNEL_IMAGE_PATH=\"${LINUX}\" \ -DGUEST_DTB_IMAGE_PATH=\"vm.dtb\" \ -DGUEST_INITRD_IMAGE_PATH=\"${INITRD}\" \ - -target $(TARGET) \ + $(ARCH_FLAGS) \ $(LIBVMM)/tools/package_guest_images.S -o $@ include $(LIBVMM)/vmm.mk include ${SDDF}/util/util.mk qemu: $(IMAGE_FILE) - if ! command -v $(QEMU) > /dev/null 2>&1; then echo "Could not find dependency: qemu-system-aarch64"; exit 1; fi - $(QEMU) -machine virt,virtualization=on,highmem=off,secure=off \ - -cpu cortex-a53 \ + if ! command -v $(QEMU) > /dev/null 2>&1; then echo "Could not find dependency: $(QEMU)"; exit 1; fi + $(QEMU) $(QEMU_ARCH_ARGS) \ -serial mon:stdio \ - -device loader,file=$(IMAGE_FILE),addr=0x70000000,cpu-num=0 \ -m size=2G \ -nographic diff --git a/examples/simple/vmm.c b/examples/simple/vmm.c index 2b1b4c2d2..d0fd05512 100644 --- a/examples/simple/vmm.c +++ b/examples/simple/vmm.c @@ -10,8 +10,15 @@ #include #include #include +#if defined(CONFIG_ARCH_AARCH64) #include #include +#endif +#if defined(CONFIG_ARCH_RISCV) +#include +#include +#include +#endif /* * As this is just an example, for simplicity we just make the size of the @@ -23,6 +30,9 @@ #if defined(BOARD_qemu_virt_aarch64) #define GUEST_DTB_VADDR 0x4f000000 #define GUEST_INIT_RAM_DISK_VADDR 0x4d000000 +#elif defined(BOARD_qemu_virt_riscv64) || defined(BOARD_hifive_p550) +#define GUEST_DTB_VADDR 0x8f000000 +#define GUEST_INIT_RAM_DISK_VADDR 0x8c000000 #elif defined(BOARD_odroidc4) #define GUEST_DTB_VADDR 0x2f000000 #define GUEST_INIT_RAM_DISK_VADDR 0x2d700000 @@ -37,12 +47,20 @@ * across platforms. */ #define SERIAL_IRQ_CH 1 +#if defined(CONFIG_ARCH_RISCV) +#define VTIMER_IRQ_CH 2 +#endif + #if defined(BOARD_qemu_virt_aarch64) #define SERIAL_IRQ 33 +#elif defined(BOARD_qemu_virt_riscv64) +#define SERIAL_IRQ 10 #elif defined(BOARD_odroidc4) #define SERIAL_IRQ 225 #elif defined(BOARD_maaxboard) #define SERIAL_IRQ 58 +#elif defined(BOARD_hifive_p550) +#define SERIAL_IRQ 100 #else #error Need to define serial interrupt #endif @@ -59,15 +77,8 @@ extern char _guest_initrd_image_end[]; /* Microkit will set this variable to the start of the guest RAM memory region. */ uintptr_t guest_ram_vaddr; -static void serial_ack(size_t vcpu_id, int irq, void *cookie) { - /* - * For now we by default simply ack the serial IRQ, we have not - * come across a case yet where more than this needs to be done. - */ - microkit_irq_ack(SERIAL_IRQ_CH); -} - -void init(void) { +void init(void) +{ /* Initialise the VMM, the VCPU(s), and start the guest */ LOG_VMM("starting \"%s\"\n", microkit_name); /* Place all the binaries in the right locations before starting the guest */ @@ -75,43 +86,53 @@ void init(void) { size_t dtb_size = _guest_dtb_image_end - _guest_dtb_image; size_t initrd_size = _guest_initrd_image_end - _guest_initrd_image; uintptr_t kernel_pc = linux_setup_images(guest_ram_vaddr, - (uintptr_t) _guest_kernel_image, - kernel_size, - (uintptr_t) _guest_dtb_image, - GUEST_DTB_VADDR, - dtb_size, - (uintptr_t) _guest_initrd_image, - GUEST_INIT_RAM_DISK_VADDR, - initrd_size - ); + GUEST_RAM_SIZE, + (uintptr_t) _guest_kernel_image, + kernel_size, + (uintptr_t) _guest_dtb_image, + GUEST_DTB_VADDR, + dtb_size, + (uintptr_t) _guest_initrd_image, + GUEST_INIT_RAM_DISK_VADDR, + initrd_size + ); if (!kernel_pc) { LOG_VMM_ERR("Failed to initialise guest images\n"); return; } - /* Initialise the virtual GIC driver */ + /* Interrupt setup */ bool success = virq_controller_init(GUEST_VCPU_ID); if (!success) { LOG_VMM_ERR("Failed to initialise emulated interrupt controller\n"); return; } - success = virq_register(GUEST_VCPU_ID, SERIAL_IRQ, &serial_ack, NULL); + success = virq_register_passthrough(GUEST_VCPU_ID, SERIAL_IRQ, SERIAL_IRQ_CH); + assert(success); /* Just in case there is already an interrupt available to handle, we ack it here. */ microkit_irq_ack(SERIAL_IRQ_CH); /* Finally start the guest */ guest_start(GUEST_VCPU_ID, kernel_pc, GUEST_DTB_VADDR, GUEST_INIT_RAM_DISK_VADDR); } -void notified(microkit_channel ch) { +void notified(microkit_channel ch) +{ switch (ch) { - case SERIAL_IRQ_CH: { - bool success = virq_inject(GUEST_VCPU_ID, SERIAL_IRQ); - if (!success) { - LOG_VMM_ERR("IRQ %d dropped on vCPU %d\n", SERIAL_IRQ, GUEST_VCPU_ID); - } - break; + case SERIAL_IRQ_CH: { + bool success = virq_handle_passthrough(SERIAL_IRQ_CH); + if (!success) { + LOG_VMM_ERR("IRQ %d dropped on vCPU %d\n", SERIAL_IRQ, GUEST_VCPU_ID); } - default: - printf("Unexpected channel, ch: 0x%lx\n", ch); + break; + } + /* TODO: temporary */ +#ifdef CONFIG_ARCH_RISCV + case VTIMER_IRQ_CH: { + sbi_handle_timer(); + break; + } +#endif + default: + printf("Unexpected channel, ch: 0x%lx\n", ch); } } @@ -120,7 +141,8 @@ void notified(microkit_channel ch) { * Whenever our guest causes an exception, it gets delivered to this entry point for * the VMM to handle. */ -seL4_Bool fault(microkit_child child, microkit_msginfo msginfo, microkit_msginfo *reply_msginfo) { +seL4_Bool fault(microkit_child child, microkit_msginfo msginfo, microkit_msginfo *reply_msginfo) +{ bool success = fault_handle(child, msginfo); if (success) { /* Now that we have handled the fault successfully, we reply to it so diff --git a/examples/virtio/Makefile b/examples/virtio/Makefile index 18d41a7ac..000da277f 100644 --- a/examples/virtio/Makefile +++ b/examples/virtio/Makefile @@ -5,6 +5,7 @@ # BUILD_DIR ?= build +export BUILD_DIR:=$(abspath $(BUILD_DIR)) export MICROKIT_CONFIG ?= debug ifeq ($(strip $(MICROKIT_SDK)),) @@ -12,6 +13,8 @@ $(error MICROKIT_SDK must be specified) endif override MICROKIT_SDK := $(abspath $(MICROKIT_SDK)) +IMAGE_FILE := $(BUILD_DIR)/loader.img + # Both QEMU and Maaxboard uses the same guest device tree as the guest does not # need to access any physical device. The only difference is that QEMU is GICv2 while # the Maaxboard is GICv3. We apply a GIC overlay for the correct version on the board @@ -31,7 +34,20 @@ else ifeq ($(strip $(MICROKIT_BOARD)), qemu_virt_aarch64) export ETH_DRIVER := virtio export CPU := cortex-a53 export GIC_DT_OVERLAY := gic_v2_overlay.dts - QEMU := qemu-system-aarch64 + export QEMU := qemu-system-aarch64 + export QEMU_ARCH_ARGS := -machine virt,virtualization=on -cpu cortex-a53 -device loader,file=$(IMAGE_FILE),addr=0x70000000,cpu-num=0 + + export BLK_NUM_PART = 1 + export BLK_SIZE = 512 + # 16MiB of disk space + export BLK_MEM ?= 16777216 +else ifeq ($(strip $(MICROKIT_BOARD)), qemu_virt_riscv64) + export UART_DRIVER := ns16550a + export TIMER_DRIVER := goldfish + export BLK_DRIVER := virtio + export ETH_DRIVER := virtio + export QEMU := qemu-system-riscv64 + export QEMU_ARCH_ARGS := -machine virt -kernel $(IMAGE_FILE) export BLK_NUM_PART = 1 export BLK_SIZE = 512 @@ -47,16 +63,11 @@ ifdef PARTITION export PARTITION_ARG := --partition $(PARTITION) endif -# All platforms use the same Linux and initrd images. -export LINUX := a3f4bf9e2eb24fa8fc0d3d8cd02e4d8097062e8b-linux -export INITRD := b6a276df6a0e39f76bc8950e975daa2888ad83df-rootfs.cpio.gz - BUILD_DIR ?= build export BUILD_DIR := $(abspath ${BUILD_DIR}) export VIRTIO_EXAMPLE := $(abspath .) export OBJCOPY := llvm-objcopy -export TARGET := aarch64-none-elf export CC := clang export CC_USERLEVEL := zig cc export LD := ld.lld @@ -68,7 +79,6 @@ export MICROKIT_TOOL ?= $(MICROKIT_SDK)/bin/microkit export SDDF := $(abspath ../../dep/sddf) export LIBVMM := $(abspath ../../) -IMAGE_FILE := $(BUILD_DIR)/loader.img REPORT_FILE := $(BUILD_DIR)/report.txt all: $(IMAGE_FILE) diff --git a/examples/virtio/README.md b/examples/virtio/README.md index 3704b019f..6929ac291 100644 --- a/examples/virtio/README.md +++ b/examples/virtio/README.md @@ -21,6 +21,7 @@ from sDDF. The example currently works on the following platforms: * QEMU virt AArch64 +* QEMU virt RISC-V (64-bit) * Avnet MaaXBoard ### Metaprogram @@ -84,6 +85,7 @@ make MICROKIT_BOARD= MICROKIT_SDK=/path/to/sdk Where `` is one of: * `qemu_virt_aarch64` +* `qemu_virt_riscv64` * `maaxboard` Other configuration options can be passed to the Makefile such as `CONFIG` @@ -144,8 +146,8 @@ starting block number that is a multiple of sDDF block's transfer size of 4096 b divided by the disk's logical size. Partitions that do not follow this restriction are unsupported. -By default on QEMU virt AArch64, we mount the first partition of the disk image, -on Avnet MaaXBoard we mount the third partition of the SD Card. You can change the partition mounted +By default on QEMU, we mount the first partition of the disk image. On Avnet MaaXBoard +we mount the third partition of the SD Card. You can change the partition mounted by passing `PARTITION=n` when executing the Makefile. ### virtIO net diff --git a/examples/virtio/build.zig b/examples/virtio/build.zig index 4506433b4..dedbc5aa8 100644 --- a/examples/virtio/build.zig +++ b/examples/virtio/build.zig @@ -5,7 +5,9 @@ const LazyPath = std.Build.LazyPath; const Step = std.Build.Step; const MicrokitBoard = enum { + hifive_p550, qemu_virt_aarch64, + qemu_virt_riscv64, maaxboard, }; @@ -25,6 +27,24 @@ const targets = [_]Target { .abi = .none, }, }, + .{ + .board = MicrokitBoard.qemu_virt_riscv64, + .zig_target = std.Target.Query{ + .cpu_arch = .riscv64, + .cpu_model = .{ .explicit = &std.Target.riscv.cpu.baseline_rv64 }, + .os_tag = .freestanding, + .abi = .none, + }, + }, + .{ + .board = MicrokitBoard.hifive_p550, + .zig_target = std.Target.Query{ + .cpu_arch = .riscv64, + .cpu_model = .{ .explicit = &std.Target.riscv.cpu.baseline_rv64 }, + .os_tag = .freestanding, + .abi = .none, + }, + }, .{ .board = MicrokitBoard.maaxboard, .zig_target = std.Target.Query{ @@ -100,9 +120,16 @@ pub fn build(b: *std.Build) !void { const libmicrokit_include = microkit_board_dir.path(b, "include"); const libmicrokit_linker_script = microkit_board_dir.path(b, "lib/microkit.ld"); - const arm_vgic_version: usize = switch (microkit_board_option) { - .qemu_virt_aarch64 => 2, - .maaxboard => 3, + const arm_vgic_version: usize = blk: { + if (target.result.cpu.arch == .aarch64) { + break :blk switch (microkit_board_option) { + .qemu_virt_aarch64 => 2, + .maaxboard => 3, + else => unreachable, + }; + } else { + break :blk undefined; + } }; const libvmm_dep = b.dependency("libvmm", .{ @@ -131,13 +158,18 @@ pub fn build(b: *std.Build) !void { }), }); - const base_dts_path = "client_vm/linux.dts"; - const overlay = if (arm_vgic_version == 3) "client_vm/gic_v3_overlay.dts" else "client_vm/gic_v2_overlay.dts"; + const base_dts_path = b.fmt("client_vm/{s}/linux.dts", .{ @tagName(target.result.cpu.arch) }); const dts_cat_cmd = b.addSystemCommand(&[_][]const u8{ - "sh", "../../tools/dtscat", base_dts_path, overlay + "sh", "../../tools/dtscat", base_dts_path }); dts_cat_cmd.addFileInput(b.path(base_dts_path)); - dts_cat_cmd.addFileInput(b.path(overlay)); + + if (target.result.cpu.arch == .aarch64) { + const overlay = b.path(b.fmt("client_vm/aarch64/gic_v{d}_overlay.dts", .{ arm_vgic_version })); + dts_cat_cmd.addFileArg(overlay); + dts_cat_cmd.addFileInput(overlay); + } + const final_dts = dts_cat_cmd.captureStdOut(); // For actually compiling the guest's DTS into a DTB @@ -180,6 +212,8 @@ pub fn build(b: *std.Build) !void { if (custom_linux) |c| { guest_images.step.dependOn(&b.addInstallFileWithDir(.{ .cwd_relative = c }, .prefix, "linux").step); + } else if (target.result.cpu.arch == .riscv64) { + guest_images.step.dependOn(&b.addInstallFileWithDir(b.path("../simple/board/qemu_virt_riscv64/linux"), .prefix, "linux").step); } else if (linux_image_dep) |linux_image| { guest_images.step.dependOn(&b.addInstallFileWithDir(linux_image.path("linux"), .prefix, "linux").step); } @@ -189,6 +223,8 @@ pub fn build(b: *std.Build) !void { const initrd: ?LazyPath = blk: { if (custom_initrd) |p| { break :blk b.path(p); + } else if (target.result.cpu.arch == .riscv64) { + break :blk b.path("../simple/board/qemu_virt_riscv64/rootfs.cpio.gz"); } else if (initrd_image_dep) |p| { break :blk p.path("rootfs.cpio.gz"); } else { @@ -259,34 +295,47 @@ pub fn build(b: *std.Build) !void { timer_driver_install = b.addInstallArtifact(driver, .{ .dest_sub_path = "timer_driver.elf" }); } - const blk_driver_class = switch (microkit_board_option) { - .qemu_virt_aarch64 => "virtio", + const blk_driver_class: ?[]const u8 = switch (microkit_board_option) { + .qemu_virt_aarch64, .qemu_virt_riscv64 => "virtio", .maaxboard => "mmc_imx", + .hifive_p550 => null, }; + const blk_support = blk_driver_class != null; + const serial_driver_class = switch (microkit_board_option) { .qemu_virt_aarch64 => "arm", + .qemu_virt_riscv64, .hifive_p550 => "ns16550a", .maaxboard => "imx", }; const eth_driver_class = switch (microkit_board_option) { - .qemu_virt_aarch64 => "virtio", + .qemu_virt_aarch64, .qemu_virt_riscv64 => "virtio", .maaxboard => "imx", + .hifive_p550 => "dwmac-5.10a", }; - const blk_driver = sddf_dep.artifact(b.fmt("driver_blk_{s}.elf", .{ blk_driver_class })); + var blk_driver: *Step.Compile = undefined; + if (blk_support) { + blk_driver = sddf_dep.artifact(b.fmt("driver_blk_{s}.elf", .{ blk_driver_class.? })); + } const serial_driver = sddf_dep.artifact(b.fmt("driver_serial_{s}.elf", .{ serial_driver_class })); const eth_driver = sddf_dep.artifact(b.fmt("driver_net_{s}.elf", .{ eth_driver_class })); - b.installArtifact(blk_driver); - b.installArtifact(sddf_dep.artifact("blk_virt.elf")); + if (blk_support) { + b.installArtifact(blk_driver); + b.installArtifact(sddf_dep.artifact("blk_virt.elf")); + } b.installArtifact(sddf_dep.artifact("serial_virt_rx.elf")); b.installArtifact(sddf_dep.artifact("serial_virt_tx.elf")); const net_virt_rx = sddf_dep.artifact("net_virt_rx.elf"); const net_virt_tx = sddf_dep.artifact("net_virt_tx.elf"); const net_copy = sddf_dep.artifact("net_copy.elf"); // Because our SDF expects a different ELF name for these articats, we have some extra steps. - const blk_driver_install = b.addInstallArtifact(blk_driver, .{ .dest_sub_path = "blk_driver.elf" }); + var blk_driver_install: *Step.InstallArtifact = undefined; + if (blk_support) { + blk_driver_install = b.addInstallArtifact(blk_driver, .{ .dest_sub_path = "blk_driver.elf" }); + } const serial_driver_install = b.addInstallArtifact(serial_driver, .{ .dest_sub_path = "serial_driver.elf" }); const eth_driver_install = b.addInstallArtifact(eth_driver, .{ .dest_sub_path = "eth_driver.elf" }); @@ -328,7 +377,7 @@ pub fn build(b: *std.Build) !void { // Build up objcopys var objcopys = std.array_list.Managed(*Step.Run).init(b.allocator); // Block - { + if (blk_support) { const virt_objcopy = updateSectionObjcopy(b, ".blk_virt_config", meta_output, "blk_virt.data", "blk_virt.elf"); const driver_resources_objcopy = updateSectionObjcopy(b, ".device_resources", meta_output, "blk_driver_device_resources.data", "blk_driver.elf"); const driver_config_objcopy = updateSectionObjcopy(b, ".blk_driver_config", meta_output, "blk_driver.data", "blk_driver.elf"); @@ -443,9 +492,24 @@ pub fn build(b: *std.Build) !void { "2G", "-nographic", }); + } else if (microkit_board_option == .qemu_virt_riscv64) { + qemu_cmd = b.addSystemCommand(&[_][]const u8{ + "qemu-system-riscv64", + "-machine", + "virt", + "-serial", + "mon:stdio", + "-kernel", + final_image_dest, + "-m", + "2G", + "-nographic", + }); } if (qemu_cmd) |cmd| { + const qemu_opts = b.option([]const u8, "qemu-opts", "QEMU args to append") orelse null; + const create_disk_cmd = b.addSystemCommand(&[_][]const u8{ "bash", }); @@ -473,6 +537,13 @@ pub fn build(b: *std.Build) !void { "-netdev", "user,id=netdev0,hostfwd=tcp::1236-:1236,hostfwd=tcp::1237-:1237,hostfwd=udp::1235-:1235", }); + if (qemu_opts) |opts| { + var it = std.mem.splitScalar(u8, opts, ' '); + while (it.next()) |arg| { + cmd.addArg(arg); + } + } + cmd.step.dependOn(b.default_step); const simulate_step = b.step("qemu", "Simulate the image using QEMU"); simulate_step.dependOn(&cmd.step); diff --git a/examples/virtio/client_vm/README.md b/examples/virtio/client_vm/aarch64/README.md similarity index 100% rename from examples/virtio/client_vm/README.md rename to examples/virtio/client_vm/aarch64/README.md diff --git a/examples/virtio/client_vm/buildroot_config b/examples/virtio/client_vm/aarch64/buildroot_config similarity index 100% rename from examples/virtio/client_vm/buildroot_config rename to examples/virtio/client_vm/aarch64/buildroot_config diff --git a/examples/virtio/client_vm/gic_v2_overlay.dts b/examples/virtio/client_vm/aarch64/gic_v2_overlay.dts similarity index 100% rename from examples/virtio/client_vm/gic_v2_overlay.dts rename to examples/virtio/client_vm/aarch64/gic_v2_overlay.dts diff --git a/examples/virtio/client_vm/gic_v3_overlay.dts b/examples/virtio/client_vm/aarch64/gic_v3_overlay.dts similarity index 100% rename from examples/virtio/client_vm/gic_v3_overlay.dts rename to examples/virtio/client_vm/aarch64/gic_v3_overlay.dts diff --git a/examples/virtio/client_vm/linux.dts b/examples/virtio/client_vm/aarch64/linux.dts similarity index 100% rename from examples/virtio/client_vm/linux.dts rename to examples/virtio/client_vm/aarch64/linux.dts diff --git a/examples/virtio/client_vm/linux_config b/examples/virtio/client_vm/aarch64/linux_config similarity index 100% rename from examples/virtio/client_vm/linux_config rename to examples/virtio/client_vm/aarch64/linux_config diff --git a/examples/virtio/client_vm/riscv64/linux.dts b/examples/virtio/client_vm/riscv64/linux.dts new file mode 100644 index 000000000..9ab4a11ee --- /dev/null +++ b/examples/virtio/client_vm/riscv64/linux.dts @@ -0,0 +1,139 @@ +/* + * Copyright QEMU team + * + * SPDX-License-Identifier: GPL-2.0-only + * + * This file is derived from an intermediate build stage of the + * Linux kernel. The licenses of all input files to this process + * are compatible with GPL-2.0-only. + */ +/dts-v1/; + +/ { + #address-cells = <0x02>; + #size-cells = <0x02>; + compatible = "riscv-virtio"; + model = "riscv-virtio,qemu"; + + poweroff { + value = <0x5555>; + offset = <0x00>; + regmap = <0x04>; + compatible = "syscon-poweroff"; + }; + + reboot { + value = <0x7777>; + offset = <0x00>; + regmap = <0x04>; + compatible = "syscon-reboot"; + }; + + platform-bus@4000000 { + interrupt-parent = <0x03>; + ranges = <0x00 0x00 0x4000000 0x2000000>; + #address-cells = <0x01>; + #size-cells = <0x01>; + compatible = "qemu,platform", "simple-bus"; + }; + + memory@80000000 { + device_type = "memory"; + reg = <0x00 0x80000000 0x00 0x8000000>; + }; + + cpus { + #address-cells = <0x01>; + #size-cells = <0x00>; + timebase-frequency = <0x989680>; + + cpu@0 { + phandle = <0x01>; + device_type = "cpu"; + reg = <0x00>; + status = "okay"; + compatible = "riscv"; + riscv,cbop-block-size = <0x40>; + riscv,cboz-block-size = <0x40>; + riscv,cbom-block-size = <0x40>; + riscv,isa-extensions = "i\0m\0a\0f\0d\0c\0h\0zic64b\0zicbop\0ziccamoa\0ziccif\0zicclsm\0ziccrse\0zicntr\0zicsr\0zifencei\0zihintntl\0zihintpause\0zihpm\0za64rs\0zawrs\0zfa\0zca\0zcd\0zba\0zbb\0zbc\0zbs\0ssccptr\0sscounterenw\0sstvala\0sstvecd\0svadu"; + riscv,isa-base = "rv64i"; + riscv,isa = "rv64imafdch_zic64b_zicbop_ziccamoa_ziccif_zicclsm_ziccrse_zicntr_zicsr_zifencei_zihintntl_zihintpause_zihpm_za64rs_zawrs_zfa_zca_zcd_zba_zbb_zbc_zbs_ssccptr_sscounterenw_sstc_sstvala_sstvecd_svadu"; + mmu-type = "riscv,sv39"; + + interrupt-controller { + #interrupt-cells = <0x01>; + interrupt-controller; + compatible = "riscv,cpu-intc"; + phandle = <0x02>; + }; + }; + + cpu-map { + + cluster0 { + + core0 { + cpu = <0x01>; + }; + }; + }; + }; + + pmu { + riscv,event-to-mhpmcounters = <0x01 0x01 0x7fff9 0x02 0x02 0x7fffc 0x10019 0x10019 0x7fff8 0x1001b 0x1001b 0x7fff8 0x10021 0x10021 0x7fff8>; + compatible = "riscv,pmu"; + }; + + chosen { + bootargs = "earlycon=sbi console=hvc0"; + linux,initrd-start = <0x87000000>; + linux,initrd-end = <0x87f00000>; + }; + + soc { + #address-cells = <0x02>; + #size-cells = <0x02>; + compatible = "simple-bus"; + ranges; + + virtio-console { + compatible = "virtio,mmio"; + reg = <0x00 0x130000 0x00 0x200>; + interrupts = <42>; + interrupt-parent = <0x03>; + }; + + virtio-blk { + compatible = "virtio,mmio"; + reg = <0x00 0x150000 0x00 0x200>; + interrupts = <43>; + interrupt-parent = <0x03>; + status = "disabled"; + }; + + virtio-net { + compatible = "virtio,mmio"; + reg = <0x00 0x160000 0x00 0x200>; + interrupts = <44>; + interrupt-parent = <0x03>; + }; + + plic@c000000 { + phandle = <0x03>; + riscv,ndev = <0x5f>; + reg = <0x00 0xc000000 0x00 0x600000>; + interrupts-extended = <0x02 0x0b 0x02 0x09>; + interrupt-controller; + compatible = "sifive,plic-1.0.0", "riscv,plic0"; + #address-cells = <0x00>; + #interrupt-cells = <0x01>; + }; + + clint@2000000 { + interrupts-extended = <0x02 0x03 0x02 0x07>; + reg = <0x00 0x2000000 0x00 0x10000>; + compatible = "sifive,clint0", "riscv,clint0"; + }; + }; +}; diff --git a/examples/virtio/client_vmm.c b/examples/virtio/client_vmm.c index 642908177..47fe9265b 100644 --- a/examples/virtio/client_vmm.c +++ b/examples/virtio/client_vmm.c @@ -8,11 +8,17 @@ #include #include #include +#include #include #include #include +#if defined(CONFIG_ARCH_AARCH64) #include -#include +#endif +#if defined(CONFIG_ARCH_RISCV) +#include +#include +#endif #include #include #include @@ -21,6 +27,12 @@ #include #include +#if defined(BOARD_hifive_p550) +#define BLK_SUPPORT 0 +#else +#define BLK_SUPPORT 1 +#endif + __attribute__((__section__(".serial_client_config"))) serial_client_config_t serial_config; __attribute__((__section__(".blk_client_config"))) blk_client_config_t blk_config; __attribute__((__section__(".net_client_config"))) net_client_config_t net_config; @@ -35,8 +47,10 @@ extern char _guest_dtb_image_end[]; /* Data for the initial RAM disk to be passed to the kernel. */ extern char _guest_initrd_image[]; extern char _guest_initrd_image_end[]; -/* Microkit will set this variable to the start of the guest RAM memory region. */ + +#if defined(CONFIG_ARCH_RISCV) uintptr_t guest_ram_vaddr; +#endif /* Virtio Console */ serial_queue_handle_t serial_rx_queue; @@ -45,8 +59,10 @@ serial_queue_handle_t serial_tx_queue; static struct virtio_console_device virtio_console; /* Virtio Block */ +#if BLK_SUPPORT static blk_queue_handle_t blk_queue; static struct virtio_blk_device virtio_blk; +#endif /* Virtio Net */ net_queue_handle_t net_rx_queue; @@ -56,10 +72,14 @@ static struct virtio_net_device virtio_net; void init(void) { assert(serial_config_check_magic(&serial_config)); +#if BLK_SUPPORT assert(blk_config_check_magic(&blk_config)); +#endif assert(vmm_config_check_magic(&vmm_config)); assert(net_config_check_magic(&net_config)); + // TODO: this should be lower down +#if BLK_SUPPORT blk_queue_init(&blk_queue, blk_config.virt.req_queue.vaddr, blk_config.virt.resp_queue.vaddr, blk_config.virt.num_buffers); /* Want to print out configuration information, so wait until the config is ready. */ @@ -67,6 +87,7 @@ void init(void) /* Busy wait until blk device is ready */ while (!blk_storage_is_ready(storage_info)); +#endif /* Initialise the VMM and the VCPU */ LOG_VMM("starting \"%s\"\n", microkit_name); @@ -75,6 +96,7 @@ void init(void) size_t dtb_size = _guest_dtb_image_end - _guest_dtb_image; size_t initrd_size = _guest_initrd_image_end - _guest_initrd_image; uintptr_t kernel_pc = linux_setup_images(vmm_config.ram, + vmm_config.ram_size, (uintptr_t) _guest_kernel_image, kernel_size, (uintptr_t) _guest_dtb_image, @@ -89,6 +111,10 @@ void init(void) return; } +#ifdef CONFIG_ARCH_RISCV + guest_ram_vaddr = vmm_config.ram; +#endif + /* Initialise the virtual GIC driver */ bool success = virq_controller_init(GUEST_VCPU_ID); if (!success) { @@ -98,24 +124,34 @@ void init(void) /* Find the details of VirtIO console, net and block devices from sdfgen */ int console_vdev_idx = -1; +#if BLK_SUPPORT int blk_vdev_idx = -1; +#endif int net_vdev_idx = -1; +#if BLK_SUPPORT assert(vmm_config.num_virtio_mmio_devices == 3); +#else + assert(vmm_config.num_virtio_mmio_devices == 2); +#endif for (int i = 0; i < vmm_config.num_virtio_mmio_devices; i += 1) { switch (vmm_config.virtio_mmio_devices[i].type) { case VIRTIO_DEVICE_ID_CONSOLE: console_vdev_idx = i; break; +#if BLK_SUPPORT case VIRTIO_DEVICE_ID_BLOCK: blk_vdev_idx = i; break; +#endif case VIRTIO_DEVICE_ID_NET: net_vdev_idx = i; break; } } assert(console_vdev_idx != -1); +#if BLK_SUPPORT assert(blk_vdev_idx != -1); +#endif assert(net_vdev_idx != -1); serial_queue_init(&serial_rx_queue, serial_config.rx.queue.vaddr, serial_config.rx.data.size, @@ -132,6 +168,7 @@ void init(void) serial_config.tx.id); assert(success); +#if BLK_SUPPORT /* Initialise virtIO block device */ success = virtio_mmio_blk_init(&virtio_blk, vmm_config.virtio_mmio_devices[blk_vdev_idx].base, @@ -143,6 +180,7 @@ void init(void) &blk_queue, blk_config.virt.id); assert(success); +#endif /* Initialise virtIO net device */ net_queue_init(&net_rx_queue, net_config.rx.free_queue.vaddr, net_config.rx.active_queue.vaddr, @@ -172,10 +210,16 @@ void notified(microkit_channel ch) virtio_console_handle_rx(&virtio_console); } else if (ch == serial_config.tx.id || ch == net_config.tx.id) { /* Nothing to do */ +#if BLK_SUPPORT } else if (ch == blk_config.virt.id) { virtio_blk_handle_resp(&virtio_blk); +#endif } else if (ch == net_config.rx.id) { virtio_net_handle_rx(&virtio_net); +#ifdef CONFIG_ARCH_RISCV + } else if (ch == 2) { + sbi_handle_timer(); +#endif } else { LOG_VMM_ERR("Unexpected channel, ch: 0x%lx\n", ch); } diff --git a/examples/virtio/meta.py b/examples/virtio/meta.py index 700798c2f..eea8051ff 100644 --- a/examples/virtio/meta.py +++ b/examples/virtio/meta.py @@ -4,7 +4,7 @@ import struct import random from dataclasses import dataclass -from typing import List, Tuple +from typing import List, Tuple, Optional from sdfgen import SystemDescription, Sddf, DeviceTree, Vmm from importlib.metadata import version @@ -25,11 +25,11 @@ class Board: serial: str guest_serial: str timer: str - blk: str - guest_blk: str + blk: Optional[str] + guest_blk: Optional[str] net: str guest_net: str - partition: int + partition: Optional[int] BOARDS: List[Board] = [ @@ -46,6 +46,32 @@ class Board: guest_net="virtio-net@160000", partition=0 ), + Board( + name="qemu_virt_riscv64", + arch=SystemDescription.Arch.RISCV64, + paddr_top=0xa0000000, + serial="soc/serial@10000000", + guest_serial="soc/virtio-console", + timer=None, + blk="soc/virtio_mmio@10008000", + guest_blk="soc/virtio-blk", + net="soc/virtio_mmio@10007000", + guest_net="soc/virtio-net", + partition=0 + ), + Board( + name="hifive_p550", + arch=SystemDescription.Arch.RISCV64, + paddr_top=0x59400000, + serial="soc/serial@0x50900000", + guest_serial="soc/virtio-console", + timer=None, + blk=None, + guest_blk=None, + net="soc/ethernet@50400000", + guest_net="soc/virtio-net", + partition=None + ), Board( name="maaxboard", arch=SystemDescription.Arch.AARCH64, @@ -69,6 +95,11 @@ def generate(sdf_file: str, output_dir: str, dtb: DeviceTree, client_dtb: Device client0 = Vmm(sdf, vmm_client0, vm_client0, client_dtb) sdf.add_pd(vmm_client0) + if board.name == "qemu_virt_riscv64": + vmm_client0.add_irq(SystemDescription.Irq(97, id=2)) + elif board.name == "hifive_p550": + vmm_client0.add_irq(SystemDescription.Irq(522, id=2)) + # Serial subsystem serial_driver = ProtectionDomain("serial_driver", "serial_driver.elf", priority=200) serial_virt_tx = ProtectionDomain("serial_virt_tx", "serial_virt_tx.elf", priority=199) @@ -117,24 +148,25 @@ def generate(sdf_file: str, output_dir: str, dtb: DeviceTree, client_dtb: Device client0.add_virtio_mmio_net(guest_net_node, net_system, client0_net_copier) - # Block subsystem - blk_driver = ProtectionDomain("blk_driver", "blk_driver.elf", priority=200) - blk_virt = ProtectionDomain("blk_virt", "blk_virt.elf", priority=199, stack_size=0x2000) - - blk_node = dtb.node(board.blk) - assert blk_node is not None - guest_blk_node = client_dtb.node(board.guest_blk) - assert guest_blk_node is not None - - blk_system = Sddf.Blk(sdf, blk_node, blk_driver, blk_virt) - partition = int(args.partition) if args.partition else board.partition - client0.add_virtio_mmio_blk(guest_blk_node, blk_system, partition=partition) - pds = [ - blk_driver, - blk_virt - ] - for pd in pds: - sdf.add_pd(pd) + if board.blk is not None: + # Block subsystem + blk_driver = ProtectionDomain("blk_driver", "blk_driver.elf", priority=200) + blk_virt = ProtectionDomain("blk_virt", "blk_virt.elf", priority=199, stack_size=0x2000) + + blk_node = dtb.node(board.blk) + assert blk_node is not None + guest_blk_node = client_dtb.node(board.guest_blk) + assert guest_blk_node is not None + + blk_system = Sddf.Blk(sdf, blk_node, blk_driver, blk_virt) + partition = int(args.partition) if args.partition else board.partition + client0.add_virtio_mmio_blk(guest_blk_node, blk_system, partition=partition) + pds = [ + blk_driver, + blk_virt + ] + for pd in pds: + sdf.add_pd(pd) # Timer subsystem (Maaxboard specific as its blk driver needs a timer) if board.name == "maaxboard": @@ -152,8 +184,9 @@ def generate(sdf_file: str, output_dir: str, dtb: DeviceTree, client_dtb: Device assert serial_system.connect() assert serial_system.serialise_config(output_dir) - assert blk_system.connect() - assert blk_system.serialise_config(output_dir) + if board.blk is not None: + assert blk_system.connect() + assert blk_system.serialise_config(output_dir) assert net_system.connect() assert net_system.serialise_config(output_dir) assert client0.connect() diff --git a/examples/virtio/virtio.mk b/examples/virtio/virtio.mk index f0321badb..a2b846d83 100644 --- a/examples/virtio/virtio.mk +++ b/examples/virtio/virtio.mk @@ -3,7 +3,6 @@ # # SPDX-License-Identifier: BSD-2-Clause # -QEMU := qemu-system-aarch64 PYTHON ?= python3 LIBVMM_DOWNLOADS := https://trustworthy.systems/Downloads/libvmm/images/ @@ -23,14 +22,19 @@ NET_COMPONENTS := $(SDDF)/network/components BOARD_DIR := $(MICROKIT_SDK)/board/$(MICROKIT_BOARD)/$(MICROKIT_CONFIG) ARCH := ${shell grep 'CONFIG_SEL4_ARCH ' $(BOARD_DIR)/include/kernel/gen_config.h | cut -d' ' -f4} + SYSTEM_FILE := virtio.system -IMAGE_FILE := loader.img REPORT_FILE := report.txt DTS_FILE := $(SDDF)/dts/$(MICROKIT_BOARD).dts DTB_FILE := $(MICROKIT_BOARD).dtb -CLIENT_VM := $(VIRTIO_EXAMPLE)/client_vm +CLIENT_VM_DIR := $(VIRTIO_EXAMPLE)/client_vm/$(ARCH) CLIENT_DTB := client_vm/vm.dtb METAPROGRAM := $(VIRTIO_EXAMPLE)/meta.py +IMAGE_FILE := loader.img + +# All platforms use the same Linux and initrd images. +LINUX ?= a3f4bf9e2eb24fa8fc0d3d8cd02e4d8097062e8b-linux +INITRD ?= b6a276df6a0e39f76bc8950e975daa2888ad83df-rootfs.cpio.gz SDDF_CUSTOM_LIBC := 1 @@ -49,10 +53,21 @@ CFLAGS := \ -I$(SDDF)/include \ -I$(SDDF)/include/microkit \ -I$(LIBVMM)/include \ - -I$(VIRTIO_EXAMPLE)/include \ -MD \ - -MP \ - -target $(TARGET) + -MP + +ifeq ($(ARCH),aarch64) + ARCH_FLAGS := -target aarch64-none-elf + CLIENT_VM_DT_OVERLAYS := $(CLIENT_VM_DIR)/$(GIC_DT_OVERLAY) +else ifeq ($(ARCH),riscv64) + # No overlays on RISC-V + CLIENT_VM_DT_OVERLAYS := + ARCH_FLAGS := -march=rv64imafdc -target riscv64-none-elf +else + $(error Unsupported ARCH given) +endif + +CFLAGS += $(ARCH_FLAGS) LDFLAGS := -L$(BOARD_DIR)/lib LIBS := --start-group -lmicrokit -Tmicrokit.ld libsddf_util_debug.a libvmm.a --end-group @@ -79,7 +94,7 @@ $(CHECK_FLAGS_BOARD_MD5): -rm -f .board_cflags-* touch $@ -all: loader.img +all: $(IMAGE_FILE) -include vmm.d @@ -141,11 +156,11 @@ client_vm/rootfs.cpio.gz: ${INITRD} \ blk_storage: $(LIBVMM_TOOLS)/mkvirtdisk $@ $(BLK_NUM_PART) $(BLK_SIZE) $(BLK_MEM) -client_vm/vm.dts: $(CLIENT_VM)/linux.dts $(CLIENT_VM)/$(GIC_DT_OVERLAY) \ +client_vm/vm.dts: $(CLIENT_VM_DIR)/linux.dts $(CLIENT_VM_DT_OVERLAYS) \ $(CHECK_FLAGS_BOARD_MD5) |vm_dir $(LIBVMM)/tools/dtscat $^ > $@ -client_vm/vm.dtb: client_vm/vm.dts +$(CLIENT_DTB): client_vm/vm.dts $(DTC) -q -I dts -O dtb $< > $@ client_vm/vmm.o: $(VIRTIO_EXAMPLE)/client_vmm.c $(CHECK_FLAGS_BOARD_MD5) |vm_dir @@ -157,7 +172,7 @@ client_vm/images.o: $(LIBVMM)/tools/package_guest_images.S $(CHECK_FLAGS_BOARD_M -DGUEST_KERNEL_IMAGE_PATH=\"${LINUX}\" \ -DGUEST_DTB_IMAGE_PATH=\"client_vm/vm.dtb\" \ -DGUEST_INITRD_IMAGE_PATH=\"client_vm/rootfs.cpio.gz\" \ - -target $(TARGET) \ + $(ARCH_FLAGS) \ $(LIBVMM)/tools/package_guest_images.S -o $@ client_vmm.elf: client_vm/vmm.o client_vm/images.o |vm_dir @@ -168,11 +183,8 @@ client_vmm.elf: client_vm/vmm.o client_vm/images.o |vm_dir client_vm/rootfs.cpio.gz client_vm/images.o client_vm/vmm.o qemu: $(IMAGE_FILE) blk_storage - [ ${MICROKIT_BOARD} = qemu_virt_aarch64 ] - $(QEMU) -machine virt,virtualization=on,secure=off \ - -cpu cortex-a53 \ + $(QEMU) $(QEMU_ARCH_ARGS) \ -serial mon:stdio \ - -device loader,file=$(IMAGE_FILE),addr=0x70000000,cpu-num=0 \ -m size=2G \ -nographic \ -global virtio-mmio.force-legacy=false \ diff --git a/examples/zig/src/vmm.zig b/examples/zig/src/vmm.zig index 1bbffb855..3b4f74b59 100644 --- a/examples/zig/src/vmm.zig +++ b/examples/zig/src/vmm.zig @@ -97,6 +97,7 @@ export fn init() callconv(.c) void { // Place all the binaries in the right locations before starting the guest const kernel_pc = c.linux_setup_images( GUEST_RAM_VADDR, + GUEST_RAM_SIZE, @intFromPtr(guest_kernel_image), guest_kernel_image.len, @intFromPtr(guest_dtb_image), diff --git a/include/libvmm/arch/aarch64/fault.h b/include/libvmm/arch/aarch64/fault.h index 53acc3772..a47ae5f63 100644 --- a/include/libvmm/arch/aarch64/fault.h +++ b/include/libvmm/arch/aarch64/fault.h @@ -18,10 +18,6 @@ bool fault_handle_vcpu_exception(size_t vcpu_id); bool fault_handle_vppi_event(size_t vcpu_id); bool fault_handle_user_exception(size_t vcpu_id); bool fault_handle_unknown_syscall(size_t vcpu_id); -bool fault_handle_vm_exception(size_t vcpu_id); - -typedef bool (*vm_exception_handler_t)(size_t vcpu_id, size_t offset, size_t fsr, seL4_UserContext *regs, void *data); -bool fault_register_vm_exception_handler(uintptr_t base, size_t size, vm_exception_handler_t callback, void *data); /* Helpers for emulating the fault and getting fault details */ bool fault_advance_vcpu(size_t vcpu_id, seL4_UserContext *regs); diff --git a/include/libvmm/arch/aarch64/linux.h b/include/libvmm/arch/aarch64/linux.h index 0282465c4..ba8bb602f 100644 --- a/include/libvmm/arch/aarch64/linux.h +++ b/include/libvmm/arch/aarch64/linux.h @@ -31,10 +31,8 @@ struct linux_image_header { uint32_t res5; // reserved (used for PE COFF offset) }; -// Note that this function assumes that the `kernel` parameter is aligned -// to at least the alignment of `struct linux_image_header`. The `dtb_src` -// paramter must be aligned to at least the alignment of `struct dtb_header`. uintptr_t linux_setup_images(uintptr_t ram_start, + size_t ram_size, uintptr_t kernel, size_t kernel_size, uintptr_t dtb_src, diff --git a/include/libvmm/arch/riscv/fault.h b/include/libvmm/arch/riscv/fault.h new file mode 100644 index 000000000..1673298cb --- /dev/null +++ b/include/libvmm/arch/riscv/fault.h @@ -0,0 +1,315 @@ +/* + * Copyright 2025, UNSW + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +#include +#include +#include + +enum fault_op_code { + OP_CODE_STORE = 0b0100011, + OP_CODE_LOAD = 0b0000011, + OP_CODE_SYSTEM = 0b01110011, +}; + +typedef struct fault_instruction { + seL4_Word addr; + /* Need to know whether this instruction was decoded from the value of htinst + * for handling compressed instructions. */ + bool from_htinst; + bool compressed; + uint8_t op_code; + uint8_t funct3; + union { + /* Valid when the operation is a store */ + uint8_t rs2; + /* Valid when the operation is a load */ + uint8_t rd; + }; +} fault_instruction_t; + +#define FUNCT3_CSW 0b110 +#define FUNCT3_CLW 0b010 +#define FUNCT3_CSRRW 0b001 + +/* Corresponds to lb or sb */ +#define FUNCT3_WIDTH_B 0b000 +/* Corresponds to lbu */ +#define FUNCT3_WIDTH_BU 0b100 +/* Corresponds to lh or sh */ +#define FUNCT3_WIDTH_H 0b001 +/* Corresonds to lhu */ +#define FUNCT3_WIDTH_HU 0b101 +/* Corresponds to lw or sw */ +#define FUNCT3_WIDTH_W 0b010 + +/* CSR 'stimecmp', for emulating the 'Sstc' extension. */ +#define CSR_STIMECMP 0x14D + +enum trap_cause { + TRAP_ILLEGAL_INSTRUCTION = 2, + TRAP_ENV_CALL_VS_MODE = 10, + TRAP_LOAD_ACCESS = 21, + TRAP_VIRTUAL_INSTRUCTION = 22, + TRAP_STORE_ACCESS = 23, +}; + +/* Fault-handling functions */ +bool fault_handle(size_t vcpu_id, microkit_msginfo msginfo); + +void fault_emulate_read_access(fault_instruction_t *instruction, seL4_UserContext *regs, uint32_t data); +uint32_t fault_instruction_data(fault_instruction_t *instruction, seL4_UserContext *regs); +void fault_emulate_write_access(fault_instruction_t *instruction, seL4_UserContext *regs, uint32_t *value, uint32_t write_data); + +/* Calls seL4_TCB_WriteRegisters after incrementing the program counter. Incremenets by 2 if + * we are dealing with a 'compressed' instruction and 4 if not. */ +bool fault_advance_vcpu(size_t vcpu_id, seL4_UserContext *regs, bool compressed); + +bool fault_is_write(seL4_Word fsr); +bool fault_is_read(seL4_Word fsr); + +void fault_instruction_dump(fault_instruction_t *instruction, seL4_UserContext *regs); + +struct fault_instruction fault_decode_instruction(size_t vcpu_id, seL4_UserContext *regs, seL4_Word ip, seL4_Word addr); + +static inline seL4_Word fault_get_reg(seL4_UserContext *regs, int index) +{ + switch (index) { + // X0 is always ZERO + case 0: + return 0; + case 1: + return regs->ra; + case 2: + return regs->sp; + case 3: + return regs->gp; + case 4: + return regs->tp; + case 5: + return regs->t0; + case 6: + return regs->t1; + case 7: + return regs->t2; + case 8: + return regs->s0; + case 9: + return regs->s1; + case 10: + return regs->a0; + case 11: + return regs->a1; + case 12: + return regs->a2; + case 13: + return regs->a3; + case 14: + return regs->a4; + case 15: + return regs->a5; + case 16: + return regs->a6; + case 17: + return regs->a7; + case 18: + return regs->s2; + case 19: + return regs->s3; + case 20: + return regs->s4; + case 21: + return regs->s5; + case 22: + return regs->s6; + case 23: + return regs->s7; + case 24: + return regs->s8; + case 25: + return regs->s9; + case 26: + return regs->s10; + case 27: + return regs->s11; + case 28: + return regs->t3; + case 29: + return regs->t4; + case 30: + return regs->t5; + case 31: + return regs->t6; + default: + LOG_VMM_ERR("Invalid index %d\n", index); + assert(false); + return -1; + } +} + +static inline seL4_Word fault_get_reg_compressed(seL4_UserContext *regs, uint8_t index) +{ + switch (index) { + case 0: + return regs->s0; + case 1: + return regs->s1; + case 2: + return regs->a0; + case 3: + return regs->a1; + case 4: + return regs->a2; + case 5: + return regs->a3; + case 6: + return regs->a4; + case 7: + return regs->a5; + default: + LOG_VMM_ERR("invalid compressed register index %d\n", index); + assert(false); + return -1; + } +} + +static inline void fault_set_reg_compressed(seL4_UserContext *regs, uint8_t index, seL4_Word value) +{ + switch (index) { + case 0: + regs->s0 = value; + break; + case 1: + regs->s1 = value; + break; + case 2: + regs->a0 = value; + break; + case 3: + regs->a1 = value; + break; + case 4: + regs->a2 = value; + break; + case 5: + regs->a3 = value; + break; + case 6: + regs->a4 = value; + break; + case 7: + regs->a5 = value; + break; + default: + LOG_VMM_ERR("invalid compressed register index %d\n", index); + assert(false); + } +} + +static inline void fault_set_reg(seL4_UserContext *regs, int index, seL4_Word v) +{ + switch (index) { + // X0 is always ZERO + case 0: + return; + case 1: + regs->ra = v; + return; + case 2: + regs->sp = v; + return; + case 3: + regs->gp = v; + return; + case 4: + regs->tp = v; + return; + case 5: + regs->t0 = v; + return; + case 6: + regs->t1 = v; + return; + case 7: + regs->t2 = v; + return; + case 8: + regs->s0 = v; + return; + case 9: + regs->s1 = v; + return; + case 10: + regs->a0 = v; + return; + case 11: + regs->a1 = v; + return; + case 12: + regs->a2 = v; + return; + case 13: + regs->a3 = v; + return; + case 14: + regs->a4 = v; + return; + case 15: + regs->a5 = v; + return; + case 16: + regs->a6 = v; + return; + case 17: + regs->a7 = v; + return; + case 18: + regs->s2 = v; + return; + case 19: + regs->s3 = v; + return; + case 20: + regs->s4 = v; + return; + case 21: + regs->s5 = v; + return; + case 22: + regs->s6 = v; + return; + case 23: + regs->s7 = v; + return; + case 24: + regs->s8 = v; + return; + case 25: + regs->s9 = v; + return; + case 26: + regs->s10 = v; + return; + case 27: + regs->s11 = v; + return; + case 28: + regs->t3 = v; + return; + case 29: + regs->t4 = v; + return; + case 30: + regs->t5 = v; + return; + case 31: + regs->t6 = v; + return; + default: + LOG_VMM_ERR("Invalid index %d\n", index); + assert(false); + } +} diff --git a/include/libvmm/arch/riscv/linux.h b/include/libvmm/arch/riscv/linux.h new file mode 100644 index 000000000..5c9313254 --- /dev/null +++ b/include/libvmm/arch/riscv/linux.h @@ -0,0 +1,41 @@ +/* + * Copyright 2025, UNSW + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +#include +#include + +// The structure of the kernel image header and the magic value comes from the +// Linux kernel documentation that can be found here: +// https://www.kernel.org/doc/Documentation/riscv/boot-image-header.txt + +#define LINUX_IMAGE_MAGIC 0x5643534952 +#define LINUX_IMAGE_MAGIC_2 0x56534905 + +struct linux_image_header { + uint32_t code0; // Executable code + uint32_t code1; // Executable code + uint64_t text_offset; // Image load offset, little endian + uint64_t image_size; // Effective Image size, little endian + uint64_t flags; // kernel flags, little endian + uint32_t version; // Version of this header + uint32_t res1; // Reserved + uint64_t res2; // Reserved + uint64_t magic; // Magic number, little endian, "RISCV" + uint32_t magic2; // Magic number 2, little endian, "RSC\x05" + uint32_t res4; // Reserved for PE COFF offset +}; + +uintptr_t linux_setup_images(uintptr_t ram_start, + size_t ram_size, + uintptr_t kernel, + size_t kernel_size, + uintptr_t dtb_src, + uintptr_t dtb_dest, + size_t dtb_size, + uintptr_t initrd_src, + uintptr_t initrd_dest, + size_t initrd_size); diff --git a/include/libvmm/arch/riscv/plic.h b/include/libvmm/arch/riscv/plic.h new file mode 100644 index 000000000..881c8f24f --- /dev/null +++ b/include/libvmm/arch/riscv/plic.h @@ -0,0 +1,22 @@ +/* + * Copyright 2025, UNSW + * SPDX-License-Identifier: BSD-2-Clause + */ +#include +#include +#include +#include + +#if defined(CONFIG_PLAT_QEMU_RISCV_VIRT) || defined(CONFIG_PLAT_HIFIVE_P550) +#define PLIC_ADDR 0xc000000 +#define PLIC_SIZE 0x4000000 +#else +#error "Unknown platform for PLIC" +#endif + +bool plic_handle_fault(size_t vcpu_id, size_t offset, seL4_Word fsr, seL4_UserContext *regs, void *data); + +bool plic_inject_timer_irq(size_t vcpu_id); + +bool plic_inject_irq(size_t vcpu_id, int irq); +bool plic_register_irq(size_t vcpu_id, size_t irq, virq_ack_fn_t ack_fn, void *ack_data); diff --git a/include/libvmm/arch/riscv/sbi.h b/include/libvmm/arch/riscv/sbi.h new file mode 100644 index 000000000..282cb5356 --- /dev/null +++ b/include/libvmm/arch/riscv/sbi.h @@ -0,0 +1,12 @@ +/* + * Copyright 2025, UNSW + * SPDX-License-Identifier: BSD-2-Clause + */ +#include +#include +#include + +bool fault_handle_sbi(size_t vcpu_id, seL4_UserContext *regs); +void sbi_handle_timer(); + +void inject_timer_irq(size_t vcpu_id); diff --git a/include/libvmm/arch/riscv/vcpu.h b/include/libvmm/arch/riscv/vcpu.h new file mode 100644 index 000000000..7eec5036a --- /dev/null +++ b/include/libvmm/arch/riscv/vcpu.h @@ -0,0 +1,7 @@ +/* + * Copyright 2025, UNSW + * SPDX-License-Identifier: BSD-2-Clause + */ +#define SIP_IPI (1 << 1) +#define SIP_TIMER (1 << 5) +#define SIP_EXTERNAL (1 << 9) diff --git a/include/libvmm/dtb.h b/include/libvmm/dtb.h index 4f7e9b45a..a7524481f 100644 --- a/include/libvmm/dtb.h +++ b/include/libvmm/dtb.h @@ -31,6 +31,4 @@ struct dtb_header { uint32_t size_dt_struct; }; -bool dtb_check_magic(struct dtb_header *h) { - return h->magic == DTB_MAGIC; -} +bool dtb_check_magic(char *bytes); diff --git a/include/libvmm/fault.h b/include/libvmm/fault.h new file mode 100644 index 000000000..b398c3762 --- /dev/null +++ b/include/libvmm/fault.h @@ -0,0 +1,22 @@ +/* + * Copyright 2025, UNSW + * SPDX-License-Identifier: BSD-2-Clause + */ + +#include +#include +#include +#include + +#include + +#if defined(CONFIG_ARCH_AARCH64) +#include +#elif defined(CONFIG_ARCH_RISCV) +#include +#endif + +typedef bool (*vm_exception_handler_t)(size_t vcpu_id, size_t offset, size_t fsr, seL4_UserContext *regs, void *data); +bool fault_register_vm_exception_handler(uintptr_t base, size_t size, vm_exception_handler_t callback, void *data); + +bool fault_handle_vm_exception(size_t vcpu_id); diff --git a/include/libvmm/linux.h b/include/libvmm/linux.h new file mode 100644 index 000000000..bd57e6b52 --- /dev/null +++ b/include/libvmm/linux.h @@ -0,0 +1,21 @@ +/* + * Copyright 2025, UNSW + * SPDX-License-Identifier: BSD-2-Clause + */ +#include +#include +#include + +/* + * Check that the given Linux images that are required on ARM/RISC-V + * live within the guest RAM provided and do not overlap each other. + * Useful for sanity checking before debugging strange errors. + */ +bool linux_validate_image_locations(uintptr_t ram_start, + size_t ram_size, + uintptr_t kernel, + size_t kernel_size, + uintptr_t dtb_dest, + size_t dtb_size, + uintptr_t initrd_dest, + size_t initrd_size); diff --git a/include/libvmm/util/util.h b/include/libvmm/util/util.h index d1512dfb7..aef3b316d 100644 --- a/include/libvmm/util/util.h +++ b/include/libvmm/util/util.h @@ -37,6 +37,10 @@ static void assert_fail( __builtin_trap(); } +#ifndef BIT +#define BIT(n) (1ul<<(n)) +#endif + #define BIT_LOW(n) (1ul<<(n)) #define BIT_HIGH(n) (1ul<<(n - 32 )) diff --git a/src/arch/aarch64/fault.c b/src/arch/aarch64/fault.c index 5b7e03b23..522413c41 100644 --- a/src/arch/aarch64/fault.c +++ b/src/arch/aarch64/fault.c @@ -5,9 +5,10 @@ * SPDX-License-Identifier: BSD-2-Clause */ -#include +#include #include #include +#include #include #include #include @@ -31,7 +32,7 @@ bool fault_advance_vcpu(size_t vcpu_id, seL4_UserContext *regs) * Do not explicitly resume the TCB because we will eventually reply to the * fault which will result in the TCB being restarted. */ - int err = seL4_TCB_WriteRegisters(BASE_VM_TCB_CAP + vcpu_id, false, 0, SEL4_USER_CONTEXT_SIZE, regs); + seL4_Error err = seL4_TCB_WriteRegisters(BASE_VM_TCB_CAP + vcpu_id, false, 0, SEL4_USER_CONTEXT_SIZE, regs); assert(err == seL4_NoError); return (err == seL4_NoError); @@ -340,103 +341,6 @@ bool fault_handle_unknown_syscall(size_t vcpu_id) return fault_advance_vcpu(vcpu_id, ®s); } -#define MAX_VM_EXCEPTION_HANDLERS 16 - -struct vm_exception_handler { - uintptr_t base; - uintptr_t end; - vm_exception_handler_t callback; - void *data; -}; - -static struct vm_exception_handler registered_vm_exception_handlers[MAX_VM_EXCEPTION_HANDLERS]; -static size_t vm_exception_handler_index = 0; - -bool fault_register_vm_exception_handler(uintptr_t base, size_t size, vm_exception_handler_t callback, void *data) -{ - if (vm_exception_handler_index == MAX_VM_EXCEPTION_HANDLERS - 1) { - LOG_VMM_ERR("maximum number of VM exception handlers registered"); - return false; - } - - if (size == 0) { - LOG_VMM_ERR("registered VM exception handler with size 0\n"); - return false; - } - - for (int i = 0; i < vm_exception_handler_index; i++) { - struct vm_exception_handler *curr = ®istered_vm_exception_handlers[i]; - if (!(base >= curr->end || base + size <= curr->base)) { - LOG_VMM_ERR("VM exception handler [0x%lx..0x%lx), overlaps with another handler [0x%lx..0x%lx)\n", - base, base + size, curr->base, curr->end); - return false; - } - } - - registered_vm_exception_handlers[vm_exception_handler_index] = (struct vm_exception_handler) { - .base = base, - .end = base + size, - .callback = callback, - .data = data, - }; - vm_exception_handler_index += 1; - - return true; -} - -static bool fault_handle_registered_vm_exceptions(size_t vcpu_id, uintptr_t addr, size_t fsr, seL4_UserContext *regs) -{ - for (int i = 0; i < MAX_VM_EXCEPTION_HANDLERS; i++) { - uintptr_t base = registered_vm_exception_handlers[i].base; - uintptr_t end = registered_vm_exception_handlers[i].end; - vm_exception_handler_t callback = registered_vm_exception_handlers[i].callback; - void *data = registered_vm_exception_handlers[i].data; - if (addr >= base && addr < end) { - bool success = callback(vcpu_id, addr - base, fsr, regs, data); - if (!success) { - LOG_VMM_ERR("registered virtual memory exception handler for region [0x%lx..0x%lx) at address 0x%lx failed\n", base, - end, addr); - } - - return success; - } - } - - /* We could not find a handler for the faulting address. */ - return false; -} - -bool fault_handle_vm_exception(size_t vcpu_id) -{ - uintptr_t addr = microkit_mr_get(seL4_VMFault_Addr); - size_t fsr = microkit_mr_get(seL4_VMFault_FSR); - - seL4_UserContext regs; - int err = seL4_TCB_ReadRegisters(BASE_VM_TCB_CAP + vcpu_id, false, 0, SEL4_USER_CONTEXT_SIZE, ®s); - assert(err == seL4_NoError); - - bool success = fault_handle_registered_vm_exceptions(vcpu_id, addr, fsr, ®s); - if (!success) { - /* - * We could not find a registered handler for the address, meaning that the fault - * is genuinely unexpected. Surprise! - * Now we print out as much information relating to the fault as we can, hopefully - * the programmer can figure out what went wrong. - */ - size_t ip = microkit_mr_get(seL4_VMFault_IP); - size_t is_prefetch = seL4_GetMR(seL4_VMFault_PrefetchFault); - bool is_write = fault_is_write(fsr); - LOG_VMM_ERR("unexpected memory fault on address: 0x%lx, FSR: 0x%lx, IP: 0x%lx, is_prefetch: %s, is_write: %s\n", - addr, fsr, ip, is_prefetch ? "true" : "false", is_write ? "true" : "false"); - tcb_print_regs(vcpu_id); - vcpu_print_regs(vcpu_id); - } else { - return fault_advance_vcpu(vcpu_id, ®s); - } - - return success; -} - bool fault_handle(size_t vcpu_id, microkit_msginfo msginfo) { size_t label = microkit_msginfo_get_label(msginfo); diff --git a/src/arch/aarch64/linux.c b/src/arch/aarch64/linux.c index 361872321..88ec34b0a 100644 --- a/src/arch/aarch64/linux.c +++ b/src/arch/aarch64/linux.c @@ -6,9 +6,11 @@ #include #include #include +#include #include uintptr_t linux_setup_images(uintptr_t ram_start, + size_t ram_size, uintptr_t kernel, size_t kernel_size, uintptr_t dtb_src, @@ -18,36 +20,6 @@ uintptr_t linux_setup_images(uintptr_t ram_start, uintptr_t initrd_dest, size_t initrd_size) { - // Before doing any copying, let's sanity check the addresses. - // First we'll check that everything actually lives inside RAM. - // @ivanv: TODO - // Check that the kernel and DTB to do not overlap - uintptr_t dtb_start = dtb_dest; - uintptr_t dtb_end = dtb_start + dtb_size; - uintptr_t kernel_start = kernel; - uintptr_t kernel_end = kernel_start + kernel_size; - if (!(dtb_start >= kernel_end || dtb_end <= kernel_start)) { - LOG_VMM_ERR("Linux kernel image [0x%lx..0x%lx)" - " overlaps with the destination of the DTB [0x%lx, 0x%lx)\n", - kernel_start, kernel_end, dtb_start, dtb_end); - return 0; - } - // Check that the kernel and initrd do not overlap - uintptr_t initrd_start = initrd_dest; - uintptr_t initrd_end = initrd_start + initrd_size; - if (!(initrd_start >= kernel_end || initrd_end <= kernel_start)) { - LOG_VMM_ERR("Linux kernel image [0x%lx..0x%lx) overlaps" - " with the destination of the initial RAM disk [0x%lx, 0x%lx)\n", - kernel_start, kernel_end, initrd_start, initrd_end); - return 0; - } - // Check that the DTB and initrd do not overlap - if (!(initrd_start >= dtb_end || initrd_end <= dtb_start)) { - LOG_VMM_ERR("DTB [0x%lx..0x%lx) overlaps with the destination of the" - " initial RAM disk [0x%lx, 0x%lx)\n", - dtb_start, dtb_end, initrd_start, initrd_end); - return 0; - } // First we inspect the kernel image header to confirm it is a valid image // and to determine where in memory to place the image. // The pointer to the kernel image may be unaligned, so to avoid undefined @@ -61,6 +33,14 @@ uintptr_t linux_setup_images(uintptr_t ram_start, } // Copy the guest kernel image into the right location uintptr_t kernel_dest = ram_start + image_header.text_offset; + + // Before doing any copying, validate the image destinations in respect to each other and RAM. + if (!linux_validate_image_locations(ram_start, ram_size, kernel_dest, kernel_size, dtb_dest, dtb_size, initrd_dest, + initrd_size)) { + LOG_VMM_ERR("invalid image location given\n"); + return 0; + } + // This check is because the Linux kernel image requires to be placed at text_offset of // a 2MB aligned base address anywhere in usable system RAM and called there. // In this case, we place the image at the text_offset of the start of the guest's RAM, @@ -70,9 +50,7 @@ uintptr_t linux_setup_images(uintptr_t ram_start, memcpy((char *)kernel_dest, (char *)kernel, kernel_size); // Copy the guest device tree blob into the right location // First check that the DTB given is actually a DTB! - struct dtb_header *dtb_header = (struct dtb_header *) dtb_src; - assert(dtb_check_magic(dtb_header)); - if (!dtb_check_magic(dtb_header)) { + if (!dtb_check_magic((char *)dtb_src)) { LOG_VMM_ERR("Given DTB does not match DTB magic.\n"); return 0; } diff --git a/src/arch/aarch64/virq.c b/src/arch/aarch64/virq.c index 089600976..5b16d9628 100644 --- a/src/arch/aarch64/virq.c +++ b/src/arch/aarch64/virq.c @@ -7,13 +7,11 @@ #include #include #include +#include #include #include #include -/* Maps Microkit channel numbers with registered vIRQ */ -int virq_passthrough_map[MAX_PASSTHROUGH_IRQ] = {-1}; - #define SGI_RESCHEDULE_IRQ 0 #define SGI_FUNC_CALL 1 #define PPI_VTIMER_IRQ 27 @@ -25,7 +23,8 @@ static void vppi_event_ack(size_t vcpu_id, int irq, void *cookie) static void sgi_ack(size_t vcpu_id, int irq, void *cookie) {} -bool virq_controller_init(size_t boot_vcpu_id) { +bool virq_controller_init(size_t boot_vcpu_id) +{ bool success; vgic_init(); @@ -70,51 +69,12 @@ bool virq_controller_init(size_t boot_vcpu_id) { return true; } -bool virq_inject(size_t vcpu_id, int irq) { +bool virq_inject(size_t vcpu_id, int irq) +{ return vgic_inject_irq(vcpu_id, irq); } -bool virq_register(size_t vcpu_id, size_t virq_num, virq_ack_fn_t ack_fn, void *ack_data) { +bool virq_register(size_t vcpu_id, size_t virq_num, virq_ack_fn_t ack_fn, void *ack_data) +{ return vgic_register_irq(vcpu_id, virq_num, ack_fn, ack_data); } - -static void virq_passthrough_ack(size_t vcpu_id, int irq, void *cookie) { - /* We are down-casting to microkit_channel so must first cast to size_t */ - microkit_irq_ack((microkit_channel)(size_t)cookie); -} - -bool virq_register_passthrough(size_t vcpu_id, size_t irq, microkit_channel irq_ch) { - assert(irq_ch < MICROKIT_MAX_CHANNELS); - if (irq_ch >= MICROKIT_MAX_CHANNELS) { - LOG_VMM_ERR("Invalid channel number given '0x%lx' for passthrough vIRQ 0x%lx\n", irq_ch, irq); - return false; - } - - LOG_VMM("Register passthrough vIRQ 0x%lx on vCPU 0x%lx (IRQ channel: 0x%lx)\n", irq, vcpu_id, irq_ch); - virq_passthrough_map[irq_ch] = irq; - - bool success = virq_register(GUEST_VCPU_ID, irq, &virq_passthrough_ack, (void *)(size_t)irq_ch); - assert(success); - if (!success) { - LOG_VMM_ERR("Failed to register passthrough vIRQ %d\n", irq); - return false; - } - - return true; -} - -bool virq_handle_passthrough(microkit_channel irq_ch) { - assert(virq_passthrough_map[irq_ch] >= 0); - if (virq_passthrough_map[irq_ch] < 0) { - LOG_VMM_ERR("attempted to handle invalid passthrough IRQ channel 0x%lx\n", irq_ch); - return false; - } - - bool success = vgic_inject_irq(GUEST_VCPU_ID, virq_passthrough_map[irq_ch]); - if (!success) { - LOG_VMM_ERR("could not inject passthrough vIRQ 0x%lx, dropped on vCPU 0x%lx\n", virq_passthrough_map[irq_ch], GUEST_VCPU_ID); - return false; - } - - return true; -} diff --git a/src/arch/riscv/fault.c b/src/arch/riscv/fault.c new file mode 100644 index 000000000..7a2cf88a1 --- /dev/null +++ b/src/arch/riscv/fault.c @@ -0,0 +1,504 @@ +/* + * Copyright 2025, UNSW + * SPDX-License-Identifier: BSD-2-Clause + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#define PT_SIZE 512 +#define GET_PPN(x) (x & (BIT(44) - 1)) +#define VPN_MASK 0x1ff +#define VPN_SHIFT(l) (12 + 9 * (l)) +#define GET_VPN(x, l) (((x) >> VPN_SHIFT(l)) & VPN_MASK) +#define PPN_SHIFT 12 +#define PTE_V BIT(0) +#define PTE_R BIT(1) +#define PTE_W BIT(2) +#define PTE_X BIT(3) +#define PTE_GET_1G(x) (((x >> 28) & 0x3ffffff)) +#define PTE_GET_2M(x) (((x >> 19) & (BIT(35) - 1))) +#define PTE_GET_4K(x) (((x >> 10) & (BIT(44) - 1))) + +#define MODE_SV39 8 +#define MODE_SV48 9 +#define MODE_SV57 10 + +static seL4_Word guest_virtual_physical(seL4_Word addr, size_t vcpu_id) +{ + seL4_Word satp = 0; + seL4_RISCV_VCPU_ReadRegs_t res = seL4_RISCV_VCPU_ReadRegs(BASE_VCPU_CAP + vcpu_id, seL4_VCPUReg_SATP); + assert(!res.error); + satp = res.value; + + uint8_t mode = satp >> 60; + + int level = -1; + switch (mode) { + case MODE_SV39: + level = 2; + break; + case MODE_SV48: + level = 3; + break; + case MODE_SV57: + level = 4; + break; + default: + LOG_VMM_ERR("unsupported satp mode received %d\n", mode); + assert(false); + return 0; + } + + seL4_Word ppn = GET_PPN(satp); + seL4_Word gpa = ppn << PPN_SHIFT; + uint64_t pte = 0; + + /* Read the guest's page table */ + while (level > 0) { + assert(gpa != 0); + int vpn = GET_VPN(addr, level); + pte = *(uint64_t *)(gpa + 8 * vpn); + if (pte & PTE_V && (pte & PTE_R || pte & PTE_X)) { + /* We are dealing with a leaf entry */ + if (level == 2) { + /* 1 GiB page */ + return (PTE_GET_1G(pte) << 30) | (addr & (BIT(30) - 1)); + } else if (level == 1) { + /* 2 MiB page */ + return (PTE_GET_2M(pte) << 21) | (addr & (BIT(21) - 1)); + } else if (level == 0) { + /* 4 KiB page */ + return ((PTE_GET_4K(pte) << 12) | (addr & (BIT(12) - 1))); + } else { + assert(false); + } + } else { + assert(pte & PTE_V); + } + gpa = (pte >> 10) << 12; + level--; + } + + assert(false); + return 0; +} + +extern bool hart_waiting_for_timer[]; + +bool fault_handle_virtual_inst(size_t vcpu_id, seL4_UserContext *regs, uint32_t inst) +{ + uint8_t op_code = inst & 0x7f; + uint8_t funct3 = (inst >> 12) & 7; + uint8_t rd = (inst >> 7) & 0x1f; + uint8_t rs1 = (inst >> 15) & 0x1f; + + switch (op_code) { + case OP_CODE_SYSTEM: { + uint16_t csr = inst >> 20; + switch (csr) { + case CSR_STIMECMP: { + if (funct3 == FUNCT3_CSRRW) { + uint64_t curr_time = 0; + asm volatile("rdtime %0" : "=r"(curr_time)); + /* We need to put the source (rs1) into the dest (rd) */ + seL4_Word source = fault_get_reg(regs, rs1); + // seL4_Word dest = fault_get_reg(regs, rd); + // LOG_VMM("inst: 0x%lx, curr_time 0x%lx, source: 0x%llx, dest: 0x%llx\n", inst, curr_time, source, dest); + seL4_RISCV_VCPU_ReadRegs_t res = seL4_RISCV_VCPU_ReadRegs(BASE_VCPU_CAP + vcpu_id, seL4_VCPUReg_SIP); + assert(!res.error); + res.value &= ~SIP_TIMER; + seL4_Error err = seL4_RISCV_VCPU_WriteRegs(BASE_VCPU_CAP + vcpu_id, seL4_VCPUReg_SIP, res.value); + assert(!err); + + if (curr_time >= source) { + inject_timer_irq(vcpu_id); + } else { + // LOG_VMM("waiting for timer\n"); + seL4_Error err = seL4_RISCV_VCPU_WriteRegs(BASE_VCPU_CAP + vcpu_id, seL4_VCPUReg_TIMER, source); + hart_waiting_for_timer[vcpu_id] = true; + assert(!err); + } + fault_set_reg(regs, rd, source); + break; + } else { + // TODO + assert(false); + } + break; + } + default: + // TODO + assert(false); + break; + } + } + break; + default: + // TODO + assert(false); + break; + } + + /* Right now we only handle faults from SYSTEM instructions (e.g CSR access), + * hence no compressed instructions. */ + return fault_advance_vcpu(vcpu_id, regs, false); +} + +struct fault_instruction fault_decode_htinst(size_t vcpu_id, uint32_t htinst, seL4_Word addr) +{ + assert(htinst != 0); + + uint32_t instruction; + if (htinst & (1 << 0)) { + instruction = htinst | (1 << 1); + } else if ((htinst & 0x3) == 0) { + // TODO + instruction = 0; + LOG_VMM_ERR("TODO: htinst: 0x%x\n", htinst); + assert(false); + } else { + instruction = htinst; + assert(false); + } + + bool compressed = (htinst & 0x3) == 0x1; + if (!compressed) { + assert((htinst & 0x3) == 0x3); + } + + uint8_t op_code = instruction & 0x7f; + + uint8_t funct3 = (htinst >> 12) & 7; + + switch (op_code) { + case OP_CODE_STORE: + return (struct fault_instruction) { + .addr = addr, + .from_htinst = true, + .op_code = OP_CODE_STORE, + .compressed = compressed, + .funct3 = funct3, + .rs2 = (instruction >> 20) & (BIT(5) - 1), + }; + case OP_CODE_LOAD: + return (struct fault_instruction) { + .addr = addr, + .from_htinst = true, + .op_code = OP_CODE_LOAD, + .compressed = compressed, + .funct3 = funct3, + .rd = (instruction >> 7) & (BIT(5) - 1), + }; + default: + LOG_VMM_ERR("htinst invalid op code 0x%x\n", op_code); + break; + } + + // assert(funct3 == 2); + + /* TODO: not sure if there's a better way to do this */ + LOG_VMM_ERR("could not decode instruction\n"); + assert(false); + + return (struct fault_instruction) { + 0 + }; +} + +struct fault_instruction fault_decode_instruction(size_t vcpu_id, seL4_UserContext *regs, seL4_Word htinst, + seL4_Word addr) +{ + if (htinst != 0) { + return fault_decode_htinst(vcpu_id, htinst, addr); + } + + seL4_Word ip = regs->pc; + seL4_Word guest_physical = guest_virtual_physical(ip, vcpu_id); + // TODO: we should assert that the physical address is less than the size of the guest RAM, + // and within RAM but we do not have enough information to do so right now. + + /* + * For guest OSes that use the RISC-V 'C' extension we must read the instruction 16-bits at + * a time, in order to avoid UB since it is valid for *all* instructions, compressed or not, + * to be aligned to 16-bits. + */ + uint16_t instruction_lo = *((uint16_t *)guest_physical); + uint16_t instruction_hi = *(uint16_t *)(guest_physical + 2); + uint32_t instruction = ((uint32_t)instruction_hi << 16) | instruction_lo; + uint8_t op_code = instruction & 0x7f; + /* funct3 is from bits 12:14. */ + uint8_t funct3 = (instruction >> 12) & 0x7; + + /* If we are in here, we are dealing with a compressed instruction */ + switch (instruction_lo >> 13) { + case FUNCT3_CSW: + return (struct fault_instruction) { + .addr = addr, + .from_htinst = false, + .compressed = true, + .op_code = OP_CODE_STORE, + .funct3 = FUNCT3_WIDTH_W, + .rs2 = (instruction_lo >> 2) & (BIT(3) - 1), + }; + case FUNCT3_CLW: + return (struct fault_instruction) { + .addr = addr, + .from_htinst = false, + .compressed = true, + .op_code = OP_CODE_LOAD, + .funct3 = FUNCT3_WIDTH_W, + .rd = (instruction_lo >> 2) & (BIT(3) - 1), + }; + default: + break; + } + + switch (op_code) { + case OP_CODE_STORE: + return (struct fault_instruction) { + .addr = addr, + .from_htinst = false, + .compressed = false, + .op_code = OP_CODE_STORE, + .funct3 = funct3, + .rs2 = (instruction >> 20) & (BIT(5) - 1), + }; + case OP_CODE_LOAD: + return (struct fault_instruction) { + .addr = addr, + .compressed = false, + .from_htinst = false, + .op_code = OP_CODE_LOAD, + .funct3 = funct3, + .rd = (instruction >> 7) & (BIT(5) - 1), + }; + default: + LOG_VMM_ERR("invalid op code 0x%x\n", op_code); + break; + } + + LOG_VMM_ERR("could not decode instruction at PC: 0x%lx\n", ip); + assert(false); + + return (struct fault_instruction) { + 0 + }; +} + +/* This global is valid anytime we are currently handling a virtual memory fault. */ +fault_instruction_t decoded_instruction; + +char *fault_to_string(seL4_Word fault_label) +{ + switch (fault_label) { + case seL4_Fault_VMFault: + return "virtual memory exception"; + case seL4_Fault_UnknownSyscall: + return "unknown syscall"; + case seL4_Fault_UserException: + return "user exception"; + case seL4_Fault_VCPUFault: + return "vCPU"; + default: + return "unknown fault"; + } +} + +bool fault_is_read(seL4_Word fsr) +{ + return fsr == TRAP_LOAD_ACCESS; +} + +bool fault_is_write(seL4_Word fsr) +{ + return fsr == TRAP_STORE_ACCESS; +} + +void fault_emulate_read_access(fault_instruction_t *instruction, seL4_UserContext *regs, uint32_t data) +{ + seL4_Word reg; + if (!instruction->from_htinst && instruction->compressed) { + reg = fault_get_reg_compressed(regs, instruction->rd); + } else { + reg = fault_get_reg(regs, instruction->rd); + } + + /* Depending on the type of load/store, we have to either sign-extend or zero-extend. */ + switch (instruction->funct3) { + case FUNCT3_WIDTH_B: + /* 8-bit value from memory, then sign-extends to 32-bits */ + reg |= 0xffffff00; + reg &= 0xffffff00; + break; + case FUNCT3_WIDTH_BU: + case FUNCT3_WIDTH_HU: + case FUNCT3_WIDTH_W: + /* All 32-bits should be zero since either we are loading a whole word + * or zero-extending to 32-bits. */ + reg &= 0x00000000; + break; + case FUNCT3_WIDTH_H: + /* First we bitwise OR to sign-extend to 32-bits, then make sure the + * least-significant 16-bits are zero for the data. */ + reg |= 0xffff0000; + reg &= 0xffff0000; + break; + default: + LOG_VMM_ERR("invalid funct3 (0x%hhx) at PC 0x%lx\n", instruction->funct3, regs->pc); + assert(false); + break; + } + + /* If the faulting address is not 4-byte aligned then we manipulate + * the data to get the right part of it into the resulting register. */ + uint8_t data_offset = (instruction->addr & 0x3) * 8; + reg |= data >> data_offset; + + if (!instruction->from_htinst && instruction->compressed) { + fault_set_reg_compressed(regs, instruction->rd, reg); + } else { + fault_set_reg(regs, instruction->rd, reg); + } +} + +uint32_t fault_instruction_data(fault_instruction_t *instruction, seL4_UserContext *regs) +{ + uint32_t reg; + if (!instruction->from_htinst && instruction->compressed) { + reg = fault_get_reg_compressed(regs, instruction->rs2); + } else { + reg = fault_get_reg(regs, instruction->rs2); + } + + return reg; +} + +void fault_instruction_dump(fault_instruction_t *instruction, seL4_UserContext *regs) { + LOG_VMM("decoded instruction at PC 0x%lx:\n", regs->pc); + LOG_VMM(" fault addr: 0x%lx\n", instruction->addr); + LOG_VMM(" derived from htinst: %s\n", instruction->from_htinst ? "true" : "false"); + LOG_VMM(" compressed: %s\n", instruction->compressed ? "true" : "false"); + LOG_VMM(" funct3: 0x%hu\n", instruction->funct3); + LOG_VMM(" operation: "); + switch (instruction->op_code) { + case OP_CODE_STORE: + printf("store"); + break; + case OP_CODE_LOAD: + printf("load"); + break; + case OP_CODE_SYSTEM: + printf("system register access"); + break; + default: + printf(""); + } + printf("\n"); + if (instruction->op_code == OP_CODE_STORE) { + LOG_VMM(" rs2: 0x%hu\n", instruction->rs2); + } else if (instruction->op_code == OP_CODE_LOAD) { + LOG_VMM(" rd: 0x%hu\n", instruction->rd); + } +} + +void fault_emulate_write_access(fault_instruction_t *instruction, seL4_UserContext *regs, uint32_t *value, uint32_t write_data) { + uint32_t data = write_data; + uint8_t offset = (instruction->addr & 0x3) * 8; + uint32_t persistent_data_mask = 0; + switch (instruction->funct3) { + case FUNCT3_WIDTH_B: + persistent_data_mask = ~(0xff << offset); + data &= 0x000000ff; + break; + case FUNCT3_WIDTH_H: + /* TODO: potential UB if there's something like a write-half at offset 0x3. I don't + * even know if that's legal or how the tf we would handle it. */ + persistent_data_mask = ~(0xffff << offset); + data &= 0x0000ffff; + break; + case FUNCT3_WIDTH_W: + persistent_data_mask = 0; + data &= 0xffffffff; + break; + default: + LOG_VMM_ERR("invalid funct3 (0x%hhx) at PC 0x%lx\n", instruction->funct3, regs->pc); + assert(false); + break; + } + + /* Now we need to OR the write data with the bits of the current value we are not writing + * to, depending on the data-width of the instruction. */ + + /* Finally write out the constructed data */ + uint32_t persistent_data = *value & persistent_data_mask; + *value = (persistent_data | data); +} + +bool fault_advance_vcpu(size_t vcpu_id, seL4_UserContext *regs, bool compressed) +{ + if (compressed) { + regs->pc += 2; + } else { + regs->pc += 4; + } + /* + * Do not explicitly resume the TCB because we will eventually reply to the + * fault which will result in the TCB being restarted. + */ + seL4_Error err = seL4_TCB_WriteRegisters(BASE_VM_TCB_CAP + vcpu_id, false, 0, SEL4_USER_CONTEXT_SIZE, regs); + assert(err == seL4_NoError); + + return (err == seL4_NoError); +} + +bool fault_handle(size_t vcpu_id, microkit_msginfo msginfo) +{ + size_t label = microkit_msginfo_get_label(msginfo); + bool success = false; + switch (label) { + case seL4_Fault_VMFault: { + return fault_handle_vm_exception(vcpu_id); + } + case seL4_Fault_VCPUFault: { + seL4_Word cause = seL4_GetMR(seL4_VCPUFault_Cause); + seL4_UserContext regs; + // TODO: potentially reading TCB registers twice with VM fault handling code + seL4_Error err = seL4_TCB_ReadRegisters(BASE_VM_TCB_CAP + vcpu_id, false, 0, SEL4_USER_CONTEXT_SIZE, ®s); + assert(err == seL4_NoError); + if (cause == TRAP_ENV_CALL_VS_MODE) { + return fault_handle_sbi(vcpu_id, ®s); + } else if (cause == TRAP_VIRTUAL_INSTRUCTION) { + uint32_t inst = seL4_GetMR(seL4_VCPUFault_Data); + success = fault_handle_virtual_inst(vcpu_id, ®s, inst); + if (!success) { + LOG_VMM_ERR("unable to handle vCPU virtual instruction fault, instruction: 0x%lx, PC: 0x%lx\n", inst, regs.pc); + } + } else { + LOG_VMM_ERR("unhandled vCPU fault cause: 0x%lx\n", seL4_GetMR(seL4_VCPUFault_Cause)); + } + break; + } + default: + /* We have reached a genuinely unexpected case, stop the guest. */ + LOG_VMM_ERR("unknown fault label 0x%lx, stopping guest with ID 0x%lx\n", label, vcpu_id); + microkit_vcpu_stop(vcpu_id); + break; + } + + if (!success) { + /* Dump the TCB and vCPU registers to hopefully get information as + * to what has gone wrong. */ + tcb_print_regs(vcpu_id); + vcpu_print_regs(vcpu_id); + LOG_VMM_ERR("Failed to handle %s fault\n", fault_to_string(label)); + } + + return success; +} diff --git a/src/arch/riscv/linux.c b/src/arch/riscv/linux.c new file mode 100644 index 000000000..06035b0cb --- /dev/null +++ b/src/arch/riscv/linux.c @@ -0,0 +1,91 @@ +/* + * Copyright 2025, UNSW + * SPDX-License-Identifier: BSD-2-Clause + */ +#include +#include +#include +#include +#include + +static size_t linux_image_header_major_version(struct linux_image_header *h) +{ + // The upper 15 bits represent the minor version. + return (h->version >> 16); +} + +static size_t linux_image_header_minor_version(struct linux_image_header *h) +{ + // The lower 16 bits represent the minor version. + return (h->version & ((1 << 16) - 1)); +} + +static bool check_magic(struct linux_image_header *h) +{ + // Unfortunately even the Linux kernel developers could not make reading a + // magic number a simple operation. The "magic" field is deprecated as of + // version 0.2 of the image header, all other versions (at the time of + // writing) use the "magic2" field. + if (linux_image_header_major_version(h) == 0 && + linux_image_header_minor_version(h) == 2) { + return h->magic == LINUX_IMAGE_MAGIC; + } else { + return h->magic2 == LINUX_IMAGE_MAGIC_2; + } +} + +uintptr_t linux_setup_images(uintptr_t ram_start, + size_t ram_size, + uintptr_t kernel, + size_t kernel_size, + uintptr_t dtb_src, + uintptr_t dtb_dest, + size_t dtb_size, + uintptr_t initrd_src, + uintptr_t initrd_dest, + size_t initrd_size) +{ + // First we inspect the kernel image header to confirm it is a valid image + // and to determine where in memory to place the image. + // The pointer to the kernel image may be unaligned, so to avoid undefined + // behaviour, we do an explicit copy. + struct linux_image_header image_header = {}; + memcpy((char *)&image_header, (char *)kernel, sizeof(struct linux_image_header)); + assert(check_magic(&image_header)); + if (!check_magic(&image_header)) { + LOG_VMM_ERR("Linux kernel image magic check failed\n"); + return 0; + } + uintptr_t kernel_dest = ram_start + image_header.text_offset; + + // Before doing any copying, validate the image destinations in respect to each other and RAM. + if (!linux_validate_image_locations(ram_start, ram_size, kernel_dest, kernel_size, dtb_dest, dtb_size, initrd_dest, + initrd_size)) { + LOG_VMM_ERR("invalid image location given\n"); + return 0; + } + + if (!dtb_check_magic((char *)dtb_src)) { + LOG_VMM_ERR("Given DTB does not match DTB magic.\n"); + return 0; + } + + // This check is because the Linux kernel image requires to be placed at text_offset of + // a 2MB aligned base address anywhere in usable system RAM and called there. + // In this case, we place the image at the text_offset of the start of the guest's RAM, + // so we need to make sure that the start of guest RAM is 2MiB aligned. + assert((ram_start & ((1 << 20) - 1)) == 0); + + // Copy the guest kernel image into the right location + LOG_VMM("Copying guest kernel image to 0x%x (0x%x bytes)\n", kernel_dest, kernel_size); + memcpy((char *)kernel_dest, (char *)kernel, kernel_size); + // Copy the guest device tree blob into the right location + LOG_VMM("Copying guest DTB to 0x%x (0x%x bytes)\n", dtb_dest, dtb_size); + memcpy((char *)dtb_dest, (char *)dtb_src, dtb_size); + // Copy the initial RAM disk into the right location + // @ivanv: add checks for initrd according to Linux docs + LOG_VMM("Copying guest initial RAM disk to 0x%x (0x%x bytes)\n", initrd_dest, initrd_size); + memcpy((char *)initrd_dest, (char *)initrd_src, initrd_size); + + return kernel_dest; +} diff --git a/src/arch/riscv/plic.c b/src/arch/riscv/plic.c new file mode 100644 index 000000000..282c6390a --- /dev/null +++ b/src/arch/riscv/plic.c @@ -0,0 +1,245 @@ +/* + * Copyright 2025, UNSW + * SPDX-License-Identifier: BSD-2-Clause + */ +#include +#include +#include +#include +#include +#include + +// #define DEBUG_PLIC + +#if defined(DEBUG_PLIC) +#define LOG_PLIC(...) do{ LOG_VMM("PLIC: "); printf(__VA_ARGS__); }while(0) +#else +#define LOG_PLIC(...) do{}while(0) +#endif + +#define PLIC_MAX_REGISTERED_IRQS 10 + +struct virq { + int irq; + virq_ack_fn_t ack_fn; + void *ack_data; +}; + +struct virq plic_registered_irqs[PLIC_MAX_REGISTERED_IRQS]; +size_t plic_register_count = 0; + +/* + * Note that this register map is not intended to match + * the layout of the device itself as we are virtualising access + * to the PLIC register by register. + * For example, the priority threshold data is stored contigiously + * here, while the PLIC device does not. + */ + +// TODO: have no fucking idea where this number comes from +// TODO: this makes plic_regs, quite large. Maybe it can be a customised +// #define instead. +#define PLIC_NUM_CONTEXTS 15872 + +struct plic_regs { + uint32_t priority[1024]; + uint32_t pending_bits[32]; + uint32_t enable_bits[PLIC_NUM_CONTEXTS][32]; + uint32_t priority_threshold[PLIC_NUM_CONTEXTS]; +}; + +struct plic_regs plic_regs; + +extern fault_instruction_t decoded_instruction; + +#define PLIC_IRQ_ENABLE_START 0x2000 +#define PLIC_IRQ_ENABLE_END 0x1F1FFC + +// TODO: need to check whether the ENDs are correct, I think they might be off by one +#define PLIC_IRQ_PRIORITY_START 0x0 +#define PLIC_IRQ_PRIORITY_END 0xFFC + +#define PLIC_PRIOTIY_THRESHOLD_CONTEXT_1_START 0x201000 +#define PLIC_PRIOTIY_THRESHOLD_CONTEXT_1_END 0x201004 + +#define PLIC_PRIOTIY_THRESHOLD_CONTEXT_3_START 0x203000 +#define PLIC_PRIOTIY_THRESHOLD_CONTEXT_3_END 0x203004 + +#define PLIC_CLAIM_COMPLETE_CONTEXT_1_START 0x201004 +#define PLIC_CLAIM_COMPLETE_CONTEXT_1_END 0x201008 + +uint32_t plic_pending_irq = 0; + +static bool plic_handle_fault_read(size_t vcpu_id, size_t offset, seL4_UserContext *regs, + fault_instruction_t *instruction) +{ + LOG_PLIC("handling read at offset: 0x%lx\n", offset); + + uint32_t data; + switch (offset) { + case PLIC_IRQ_ENABLE_START...PLIC_IRQ_ENABLE_END: { + size_t context = (offset - PLIC_IRQ_ENABLE_START) / 128; + /* Now that we have the context, we want to find what the IRQ source is so + * we can figure out the second-level index. */ + size_t enable_group = (offset - (PLIC_IRQ_ENABLE_START + (128 * context))) / 4; + LOG_PLIC("reading enable bits for context %d, IRQ source #%d to #%d\n", context, enable_group * 32, + ((enable_group + 1) * 32 - 1)); + data = plic_regs.enable_bits[context][enable_group]; + + if (data != 0) { + LOG_PLIC("reading offset: 0x%lx, enable_group %d, context: %d, non-zero data: 0x%lx\n", offset, enable_group, context, + data); + } + break; + } + case PLIC_CLAIM_COMPLETE_CONTEXT_1_START: { + LOG_PLIC("read complete claim for pending IRQ %d\n", plic_pending_irq); + data = plic_pending_irq; + plic_pending_irq = 0; + seL4_RISCV_VCPU_ReadRegs_t sip = seL4_RISCV_VCPU_ReadRegs(BASE_VCPU_CAP + vcpu_id, seL4_VCPUReg_SIP); + assert(!sip.error); + sip.value &= ~SIP_EXTERNAL; + int err = seL4_RISCV_VCPU_WriteRegs(BASE_VCPU_CAP + vcpu_id, seL4_VCPUReg_SIP, sip.value); + assert(!err); + break; + } + default: + LOG_VMM_ERR("invalid PLIC read offset 0x%lx (vCPU 0x%lx)\n", offset, vcpu_id); + return false; + } + + fault_emulate_read_access(instruction, regs, data); + + return true; +} + +static bool plic_handle_fault_write(size_t vcpu_id, size_t offset, seL4_UserContext *regs, + fault_instruction_t *instruction) +{ + LOG_PLIC("handling write at offset: 0x%lx\n", offset); + + // TODO: need to make sure offset is 4-byte aligned? + + uint32_t data = fault_instruction_data(instruction, regs); + + switch (offset) { + case PLIC_IRQ_ENABLE_START...PLIC_IRQ_ENABLE_END: { + size_t context = (offset - PLIC_IRQ_ENABLE_START) / 128; + /* Now that we have the context, we want to find what the IRQ source is so + * we can figure out the second-level index. */ + size_t enable_group = (offset - (PLIC_IRQ_ENABLE_START + (128 * context))) / 4; + LOG_PLIC("(0x%lx) writing enable bits for context %d, IRQ source #%d to #%d: data 0x%lx\n", vcpu_id, context, + enable_group * 32, + ((enable_group + 1) * 32 - 1), data); + if (data != 0) { + LOG_PLIC("(VPCU %lu) writing offset: 0x%lx, enable_group %d, context: %d, non-zero data: 0x%lx\n", vcpu_id, offset, + enable_group, context, + data); + } + fault_emulate_write_access(instruction, regs, &plic_regs.enable_bits[context][enable_group], data); + break; + } + case PLIC_IRQ_PRIORITY_START...PLIC_IRQ_PRIORITY_END: { + size_t irq_index = (offset - PLIC_IRQ_PRIORITY_START) / 0x4; + if (irq_index == 0) { + LOG_VMM_ERR("writing to invalid IRQ priority index 0\n"); + return false; + } + + LOG_PLIC("write priority for IRQ source %d: %d\n", irq_index, data); + fault_emulate_write_access(instruction, regs, &plic_regs.priority[irq_index], data); + break; + } + case PLIC_PRIOTIY_THRESHOLD_CONTEXT_1_START: { + LOG_PLIC("write priority threshold for context %d: %d\n", 1, data); + fault_emulate_write_access(instruction, regs, &plic_regs.priority_threshold[1], data); + break; + } + case PLIC_PRIOTIY_THRESHOLD_CONTEXT_3_START: { + LOG_PLIC("write priority threshold for context %d: %d\n", 3, data); + fault_emulate_write_access(instruction, regs, &plic_regs.priority_threshold[3], data); + break; + } + case PLIC_CLAIM_COMPLETE_CONTEXT_1_START: { + LOG_PLIC("write complete claim for pending IRQ %d\n", plic_pending_irq); + /* TODO: we should be checking here, and probably in a lot of other places, that the + * IRQ attempting to be claimed is actually enabled. */ + /* TODO: double check but when we get a claim we should be clearing the pending bit */ + // size_t irq_pending_group = plic_pending_irq / 32; + for (int i = 0 ; i < plic_register_count; i++) { + struct virq *virq = &plic_registered_irqs[i]; + if (virq->irq == plic_pending_irq) { + virq->ack_fn(vcpu_id, virq->irq, virq->ack_data); + } + } + plic_pending_irq = 0; + // plic_regs.pending_bits[irq_pending_group] = 0; + break; + } + default: + LOG_VMM_ERR("invalid PLIC write offset 0x%lx (vCPU 0x%lx)\n", offset, vcpu_id); + assert(false); + return false; + } + + return true; +} + +bool plic_register_irq(size_t vcpu_id, size_t irq, virq_ack_fn_t ack_fn, void *ack_data) +{ + // todo: totally redo this bit with error-checking involved and I need to probably + // distinguish between cpu local vs external irqs? what if we're emulating the architectural + // timer? + plic_registered_irqs[plic_register_count] = (struct virq) { + .irq = irq, + .ack_fn = ack_fn, + .ack_data = ack_data, + }; + plic_register_count += 1; + assert(plic_register_count <= 10); + + return true; +} + +bool plic_inject_irq(size_t vcpu_id, int irq) +{ + size_t enable_group = irq / 32; + // TODO: dont' hardcode context + if ((plic_regs.enable_bits[1][enable_group] & (1 << (irq % 32))) == 0) { + /* Don't inject unless it's enabled */ + // LOG_VMM_ERR("attempting to inject for disabled IRQ %d\n", irq); + return true; + } + + seL4_RISCV_VCPU_ReadRegs_t res = seL4_RISCV_VCPU_ReadRegs(BASE_VCPU_CAP + vcpu_id, seL4_VCPUReg_SIP); + assert(!res.error); + seL4_Word sip = res.value; + + size_t irq_pending_group = irq / 32; + size_t irq_bit = irq % 32; + + // LOG_PLIC("injecting for IRQ %d (group: %d, bit: %d)\n", irq, irq_pending_group, irq_bit); + + // TODO: should we check if it's already pending? + + // assert(plic_pending_irq == 0); + plic_pending_irq = irq; + + plic_regs.pending_bits[irq_pending_group] |= 1 << irq_bit; + + sip |= SIP_EXTERNAL; + + int err = seL4_RISCV_VCPU_WriteRegs(BASE_VCPU_CAP + vcpu_id, seL4_VCPUReg_SIP, sip); + assert(!err); + + return true; +} + +bool plic_handle_fault(size_t vcpu_id, size_t offset, seL4_Word fsr, seL4_UserContext *regs, void *data) +{ + if (fault_is_read(fsr)) { + return plic_handle_fault_read(vcpu_id, offset, regs, &decoded_instruction); + } else { + return plic_handle_fault_write(vcpu_id, offset, regs, &decoded_instruction); + } +} diff --git a/src/arch/riscv/sbi.c b/src/arch/riscv/sbi.c new file mode 100644 index 000000000..df1e15ceb --- /dev/null +++ b/src/arch/riscv/sbi.c @@ -0,0 +1,462 @@ +/* + * Copyright 2025, UNSW + * SPDX-License-Identifier: BSD-2-Clause + */ +#include +#include +#include +#include +#include +#include + +/* + * We emulate SBI based on version 2.0 of the specification. + * Most legacy extensions are not supported as this was written after those + * SBI calls were renamed to 'legacy' and given how new the H-extension and RISC-V + * in general is, I doubt any guests are expecting legacy calls. + * + */ + +// #define DEBUG_SBI + +#if defined(DEBUG_SBI) +#define LOG_SBI(...) do{ LOG_VMM("SBI: "); printf(__VA_ARGS__); }while(0) +#else +#define LOG_SBI(...) do{}while(0) +#endif + +/* We support version 2.0 of SBI */ +#define SBI_SPEC_MAJOR_VERSION 2 +#define SBI_SPEC_MINOR_VERSION 0 +#define SBI_SPEC_VERSION (SBI_SPEC_MAJOR_VERSION << 24) | (SBI_SPEC_MINOR_VERSION) + +#define MACHINE_ARCH_ID 0 +#define MACHINE_IMPL_ID 0 +#define MACHINE_VENDOR_ID 0 + +/* + * List of SBI extensions. Note that what extensions + * we actually support is a subset of this list. + */ +enum sbi_extension { + SBI_EXTENSION_LEGACY_CONSOLE_PUTCHAR = 0x1, + SBI_EXTENSION_LEGACY_CONSOLE_GETCHAR = 0x2, + SBI_EXTENSION_BASE = 0x10, + SBI_EXTENSION_TIMER = 0x54494d45, + SBI_EXTENSION_IPI = 0x735049, + SBI_EXTENSION_RFENCE = 0x52464E43, + SBI_EXTENSION_HART_STATE_MANAGEMENT = 0x48534d, + SBI_EXTENSION_SYSTEM_RESET = 0x53525354, + SBI_EXTENSION_PMU = 0x504D55, + SBI_EXTENSION_DEBUG_CONSOLE = 0x4442434e, + SBI_EXTENSION_SYSTEM_SUSPEND = 0x53555350, + SBI_EXTENSION_CPPC = 0x43505043, +}; + +enum sbi_rfence_function { + SBI_RFENCE_FENCE_I = 0, + SBI_RFENCE_SFENCE_VMA = 1, + SBI_RFENCE_SFENCE_VMA_ASID = 2, + SBI_RFENCE_HFENCE_GVMA_VMID = 3, + SBI_RFENCE_HFENCE_GVMA = 4, + SBI_RFENCE_HFENCE_VVMA_ASID = 5, + SBI_RFENCE_HFENCE_VVMA = 6, +}; + +enum sbi_ipi_function { + SBI_IPI_SEND = 0, +}; + +enum sbi_hsm_function { + SBI_HSM_HART_START = 0, + SBI_HSM_HART_STOP = 1, +}; + +enum sbi_debug_console_function { + SBI_DEBUG_CONSOLE_WRITE = 0, +}; + +enum sbi_timer_function { + SBI_TIMER_SET = 0, +}; + +enum sbi_base_function { + SBI_BASE_GET_SBI_SPEC_VERSION = 0, + SBI_BASE_GET_SBI_IMPL_ID = 1, + SBI_BASE_GET_SBI_IMPL_VERSION = 2, + SBI_BASE_PROBE_EXTENSION_ID = 3, + SBI_BASE_GET_MACHINE_VENDOR_ID = 4, + SBI_BASE_GET_MACHINE_ARCH_ID = 5, + SBI_BASE_GET_MACHINE_IMPL_ID = 6, +}; + +enum sbi_system_reset_function { + SBI_SYSTEM_RESET = 0, +}; + +enum sbi_system_reset_type { + SBI_SYSTEM_RESET_SHUTDOWN = 0, + SBI_SYSTEM_RESET_COLD_REBOOT = 1, + SBI_SYSTEM_RESET_WARM_REBOOT = 2, +}; + +enum sbi_return_code { + SBI_SUCCESS = 0, + SBI_ERR_FAILED = -1, + SBI_ERR_NOT_SUPPORTED = -2, + SBI_ERR_INVALID_PARAM = -3, + SBI_ERR_DENIED = -4, + SBI_ERR_INVALID_ADDRESS = -5, + SBI_ERR_ALREADY_AVAILABLE = -6, + SBI_ERR_ALREADY_STARTED = -7, + SBI_ERR_ALREADY_STOPPED = -8, + SBI_ERR_NO_SHMEM = -9, +}; + +// TODO: these SBI handlers need to handle errors better by actually returning an SBI error. + +char *sbi_eid_to_str(seL4_Word sbi_eid) +{ + switch (sbi_eid) { + case SBI_EXTENSION_LEGACY_CONSOLE_PUTCHAR: + return "console putchar"; + case SBI_EXTENSION_LEGACY_CONSOLE_GETCHAR: + return "console getchar"; + case SBI_EXTENSION_BASE: + return "base"; + case SBI_EXTENSION_TIMER: + return "timer"; + case SBI_EXTENSION_IPI: + return "IPI"; + case SBI_EXTENSION_RFENCE: + return "RFENCE"; + case SBI_EXTENSION_HART_STATE_MANAGEMENT: + return "HSM"; + case SBI_EXTENSION_SYSTEM_RESET: + return "system reset"; + case SBI_EXTENSION_PMU: + return "PMU"; + case SBI_EXTENSION_DEBUG_CONSOLE: + return "debug console"; + case SBI_EXTENSION_SYSTEM_SUSPEND: + return "system suspend"; + case SBI_EXTENSION_CPPC: + return "CPPC"; + default: + return ""; + } +} + +static void handle_ipi(size_t vcpu_id, seL4_Word hart_mask, seL4_Word hart_mask_base) { + // TODO: logic a bit sus + for (seL4_Word i = 0; i < seL4_WordBits; i++) { + seL4_Word target_hart_id = i + hart_mask_base; + if (hart_mask & (1UL << i)) { + seL4_RISCV_VCPU_ReadRegs_t res = seL4_RISCV_VCPU_ReadRegs(BASE_VCPU_CAP + target_hart_id, seL4_VCPUReg_SIP); + assert(!res.error); + res.value |= SIP_IPI; + seL4_Error err = seL4_RISCV_VCPU_WriteRegs(BASE_VCPU_CAP + target_hart_id, seL4_VCPUReg_SIP, res.value); + assert(err == seL4_NoError); + } + } +} + +static bool sbi_rfence(size_t vcpu_id, seL4_Word sbi_fid, seL4_UserContext *regs) +{ + switch (sbi_fid) { + case SBI_RFENCE_FENCE_I: + case SBI_RFENCE_SFENCE_VMA: + case SBI_RFENCE_SFENCE_VMA_ASID: + handle_ipi(vcpu_id, regs->a0, regs->a1); + // TODO: need to actually handle fences + regs->a0 = SBI_SUCCESS; + return true; + default: + LOG_VMM_ERR("invalid SBI RFENCE FID 0x%lx\n", sbi_fid); + regs->a0 = SBI_ERR_NOT_SUPPORTED; + return false; + } +} + +static bool sbi_ipi(size_t vcpu_id, seL4_Word sbi_fid, seL4_UserContext *regs) +{ + switch (sbi_fid) { + case SBI_IPI_SEND: { + seL4_Word hart_mask = regs->a0; + seL4_Word hart_mask_base = regs->a1; + // TODO: handle + assert(hart_mask_base != -1); + handle_ipi(vcpu_id, hart_mask, hart_mask_base); + // LOG_VMM("VCPU %d hart mask is 0x%lx, 0x%lx\n", vcpu_id, hart_mask, hart_mask_base); + + regs->a0 = SBI_SUCCESS; + return true; + } + default: + LOG_VMM_ERR("invalid SBI IPI FID 0x%lx\n", sbi_fid); + regs->a0 = SBI_ERR_NOT_SUPPORTED; + return false; + } +} + +static bool sbi_hsm(size_t vcpu_id, seL4_Word sbi_fid, seL4_UserContext *regs) +{ + switch (sbi_fid) { + case SBI_HSM_HART_START: { + seL4_Word hart_id = regs->a0; + seL4_Word start_addr = regs->a1; + seL4_Word opaque = regs->a2; + + LOG_VMM("request to start hart 0x%lx at 0x%lx\n", hart_id, start_addr); + + seL4_UserContext hart_regs = {0}; + hart_regs.pc = start_addr; + hart_regs.a0 = hart_id; + hart_regs.a1 = opaque; + + // TODO: check hart id is valid + // TODO: check start addr is valid + // TODO: check hart ID has not already been started + + seL4_Error err = seL4_TCB_WriteRegisters(BASE_VM_TCB_CAP + hart_id, true, 0, SEL4_USER_CONTEXT_SIZE, &hart_regs); + assert(err == seL4_NoError); + + if (err == seL4_NoError) { + LOG_VMM("started hart 0x%lx at 0x%lx\n", hart_id, start_addr); + regs->a0 = SBI_SUCCESS; + } else { + // TODO; + } + + return (err == seL4_NoError); + } + default: + LOG_VMM_ERR("invalid SBI HSM FID 0x%lx\n", sbi_fid); + regs->a0 = SBI_ERR_NOT_SUPPORTED; + return false; + } +} + +static bool sbi_system_reset(size_t vcpu_id, seL4_Word sbi_fid, seL4_UserContext *regs) +{ + switch (sbi_fid) { + case SBI_SYSTEM_RESET: { + uint32_t reset_type = regs->a0; + uint32_t reset_reason = regs->a1; + switch (reset_type) { + case SBI_SYSTEM_RESET_SHUTDOWN: + LOG_VMM("guest requested shutdown via SBI (reset reason: 0x%x)\n", reset_reason); + guest_stop(vcpu_id); + return true; + default: + LOG_VMM_ERR("unhandled SBI system reset type: 0x%x with reset reason: 0x%x\n", reset_type, reset_reason); + return false; + } + return true; + } + default: + LOG_VMM_ERR("invalid SBI system reset FID 0x%lx\n", sbi_fid); + regs->a0 = SBI_ERR_NOT_SUPPORTED; + return false; + } +} + +static bool sbi_debug_console(seL4_Word sbi_fid, seL4_UserContext *regs) +{ + switch (sbi_fid) { + case SBI_DEBUG_CONSOLE_WRITE: { + uint32_t num_bytes = regs->a0; + uint64_t base_addr_lo = regs->a1; + uint64_t base_addr_hi = regs->a2 << 32; + char *bytes = (char *)(base_addr_lo | (base_addr_hi << 32)); + for (int i = 0; i < num_bytes; i++) { + printf("%c", bytes[i]); + } + return true; + } + default: + LOG_VMM_ERR("invalid SBI debug console FID 0x%lx\n", sbi_fid); + regs->a0 = SBI_ERR_NOT_SUPPORTED; + return false; + } +} + +bool hart_waiting_for_timer[2]; + +void inject_timer_irq(size_t vcpu_id) +{ + seL4_RISCV_VCPU_ReadRegs_t res = seL4_RISCV_VCPU_ReadRegs(BASE_VCPU_CAP + vcpu_id, seL4_VCPUReg_SIP); + assert(!res.error); + seL4_Word sip = res.value; + // res = seL4_RISCV_VCPU_ReadRegs(BASE_VCPU_CAP + vcpu_id, seL4_VCPUReg_SIE); + // assert(!res.error); + // TODO: we don't actually do anything with SIE, we should probably + // be checking that the timer interrupt is even enabled, right? + // seL4_Word sie = res.value; + sip |= SIP_TIMER; + seL4_Error err = seL4_RISCV_VCPU_WriteRegs(BASE_VCPU_CAP + vcpu_id, seL4_VCPUReg_SIP, sip); + assert(!err); +} + +void sbi_handle_timer() +{ + for (int i = 0; i < 2; i++) { + if (hart_waiting_for_timer[i]) { + inject_timer_irq(i); + hart_waiting_for_timer[i] = false; + } + } +} + +static bool sbi_timer(size_t vcpu_id, seL4_Word sbi_fid, seL4_UserContext *regs) +{ + switch (sbi_fid) { + case SBI_TIMER_SET: { + /* stime_value is always 64-bit */ + uint64_t stime_value = regs->a0; + + // if (vcpu_id != 0) { + // LOG_VMM("setting timer\n"); + // } + + seL4_RISCV_VCPU_ReadRegs_t res = seL4_RISCV_VCPU_ReadRegs(BASE_VCPU_CAP + vcpu_id, seL4_VCPUReg_SIP); + assert(!res.error); + res.value &= ~SIP_TIMER; + seL4_Error err = seL4_RISCV_VCPU_WriteRegs(BASE_VCPU_CAP + vcpu_id, seL4_VCPUReg_SIP, res.value); + assert(!err); + + uint64_t curr_time = 0; + asm volatile("rdtime %0" : "=r"(curr_time)); + if (curr_time >= stime_value) { + /* In this case we are already past the target time, so we immediately inject an IRQ. */ + // TODO: check return value + // if (vcpu_id != 0) { + // LOG_VMM("injecting timer\n"); + // } + inject_timer_irq(vcpu_id); + } else { + err = seL4_RISCV_VCPU_WriteRegs(BASE_VCPU_CAP + vcpu_id, seL4_VCPUReg_TIMER, stime_value); + hart_waiting_for_timer[vcpu_id] = true; + assert(!err); + } + // if (vcpu_id != 0) + // LOG_VMM("setting timer stime_value: 0x%lx, curr_time: 0x%lx\n", stime_value, curr_time); + + + regs->a0 = SBI_SUCCESS; + + return true; + } + default: + LOG_VMM_ERR("invalid SBI timer FID 0x%lx\n", sbi_fid); + regs->a0 = SBI_ERR_NOT_SUPPORTED; + return false; + } +} + +static bool sbi_base(size_t vcpu_id, seL4_Word sbi_fid, seL4_UserContext *regs) +{ + switch (sbi_fid) { + case SBI_BASE_GET_SBI_SPEC_VERSION: + regs->a0 = SBI_SUCCESS; + regs->a1 = SBI_SPEC_VERSION; + return true; + case SBI_BASE_GET_SBI_IMPL_ID: + case SBI_BASE_GET_SBI_IMPL_VERSION: + /* We do not emulate a specific SBI implementation. */ + regs->a0 = SBI_ERR_NOT_SUPPORTED; + return true; + case SBI_BASE_GET_MACHINE_VENDOR_ID: + regs->a0 = SBI_SUCCESS; + regs->a1 = MACHINE_VENDOR_ID; + return true; + case SBI_BASE_GET_MACHINE_ARCH_ID: + regs->a0 = SBI_SUCCESS; + regs->a1 = MACHINE_ARCH_ID; + return true; + case SBI_BASE_GET_MACHINE_IMPL_ID: + regs->a0 = SBI_SUCCESS; + regs->a1 = MACHINE_IMPL_ID; + return true; + case SBI_BASE_PROBE_EXTENSION_ID: { + seL4_Word probe_eid = regs->a0; + switch (probe_eid) { + case SBI_EXTENSION_BASE: + case SBI_EXTENSION_TIMER: + case SBI_EXTENSION_IPI: + case SBI_EXTENSION_RFENCE: + case SBI_EXTENSION_HART_STATE_MANAGEMENT: + case SBI_EXTENSION_SYSTEM_RESET: + case SBI_EXTENSION_DEBUG_CONSOLE: + regs->a0 = SBI_SUCCESS; + regs->a1 = 1; + return true; + default: + LOG_VMM("vCPU (0x%lx) probed for unhandled SBI extension \"%s\" (EID 0x%lx)\n", vcpu_id, sbi_eid_to_str(probe_eid), probe_eid); + regs->a0 = SBI_ERR_NOT_SUPPORTED; + return true; + } + } + default: + LOG_VMM_ERR("could not handle SBI base extension call with FID: 0x%lx\n", sbi_fid); + regs->a0 = SBI_ERR_NOT_SUPPORTED; + break; + } + + return false; +} + +bool fault_handle_sbi(size_t vcpu_id, seL4_UserContext *regs) +{ + /* SBI extension ID */ + seL4_Word sbi_eid = regs->a7; + /* SBI function ID for the given extension */ + seL4_Word sbi_fid = regs->a6; + + LOG_SBI("handling EID %s (0x%lx), FID 0x%lx from vCPU 0x%lx\n", sbi_eid_to_str(sbi_eid), sbi_eid, sbi_fid, vcpu_id); + + // bool success = false; + switch (sbi_eid) { + case SBI_EXTENSION_BASE: + sbi_base(vcpu_id, sbi_fid, regs); + break; + case SBI_EXTENSION_TIMER: + sbi_timer(vcpu_id, sbi_fid, regs); + break; + case SBI_EXTENSION_LEGACY_CONSOLE_PUTCHAR: + printf("%c", regs->a0); + regs->a0 = SBI_SUCCESS; + break; + case SBI_EXTENSION_LEGACY_CONSOLE_GETCHAR: + /* Not supported by our SBI emulation. On legacy SBI we are supposed to just return -1 for failure. */ + regs->a0 = -1; + true; + break; + case SBI_EXTENSION_DEBUG_CONSOLE: + sbi_debug_console(sbi_fid, regs); + break; + case SBI_EXTENSION_HART_STATE_MANAGEMENT: + sbi_hsm(vcpu_id, sbi_fid, regs); + break; + case SBI_EXTENSION_SYSTEM_RESET: + sbi_system_reset(vcpu_id, sbi_fid, regs); + break; + case SBI_EXTENSION_IPI: + sbi_ipi(vcpu_id, sbi_fid, regs); + break; + case SBI_EXTENSION_RFENCE: + sbi_rfence(vcpu_id, sbi_fid, regs); + break; + default: { + LOG_VMM_ERR("unhandled sbi_eid: 0x%lx, sbi_fid 0x%lx\n", sbi_eid, sbi_fid); + regs->a0 = SBI_ERR_NOT_SUPPORTED; + break; + } + } + + regs->pc += 4; + seL4_Error err = seL4_TCB_WriteRegisters(BASE_VM_TCB_CAP + vcpu_id, false, 0, SEL4_USER_CONTEXT_SIZE, regs); + assert(err == seL4_NoError); + + return (err == seL4_NoError); +} diff --git a/src/arch/riscv/tcb.c b/src/arch/riscv/tcb.c new file mode 100644 index 000000000..58efc586d --- /dev/null +++ b/src/arch/riscv/tcb.c @@ -0,0 +1,65 @@ +/* + * Copyright 2025, UNSW + * SPDX-License-Identifier: BSD-2-Clause + */ + +#include +#include +#include +#include + +void tcb_print_regs(size_t vcpu_id) +{ + /* + * While we are potentially doing an extra system call in order to read the + * TCB registers (as the VMM may have already read the TCB registers before + * calling this function), this function should only be used in the context + * of errors or debug logging and hence the cost of the system call should + * not be an issue. + */ + seL4_UserContext regs; + seL4_Error err = seL4_TCB_ReadRegisters(BASE_VM_TCB_CAP + vcpu_id, false, 0, SEL4_USER_CONTEXT_SIZE, ®s); + assert(err == seL4_NoError); + if (err != seL4_NoError) { + LOG_VMM_ERR("Could not read TCB registers when trying to print TCB registers\n"); + return; + } + /* Now dump the TCB registers. */ + LOG_VMM("dumping TCB (ID 0x%lx) registers:\n", vcpu_id); + printf(" pc: 0x%016lx\n", regs.pc); + printf(" ra: 0x%016lx\n", regs.ra); + printf(" gp: 0x%016lx\n", regs.gp); + printf(" sp: 0x%016lx\n", regs.sp); + + printf(" s0: 0x%016lx\n", regs.s0); + printf(" s1: 0x%016lx\n", regs.s1); + printf(" s2: 0x%016lx\n", regs.s2); + printf(" s3: 0x%016lx\n", regs.s3); + printf(" s4: 0x%016lx\n", regs.s4); + printf(" s5: 0x%016lx\n", regs.s5); + printf(" s6: 0x%016lx\n", regs.s6); + printf(" s7: 0x%016lx\n", regs.s7); + printf(" s8: 0x%016lx\n", regs.s8); + printf(" s9: 0x%016lx\n", regs.s9); + printf(" s10: 0x%016lx\n", regs.s10); + printf(" s11: 0x%016lx\n", regs.s11); + + printf(" a0: 0x%016lx\n", regs.a0); + printf(" a1: 0x%016lx\n", regs.a1); + printf(" a2: 0x%016lx\n", regs.a2); + printf(" a3: 0x%016lx\n", regs.a3); + printf(" a4: 0x%016lx\n", regs.a4); + printf(" a5: 0x%016lx\n", regs.a5); + printf(" a6: 0x%016lx\n", regs.a6); + printf(" a7: 0x%016lx\n", regs.a7); + + printf(" t0: 0x%016lx\n", regs.t0); + printf(" t1: 0x%016lx\n", regs.t1); + printf(" t2: 0x%016lx\n", regs.t2); + printf(" t3: 0x%016lx\n", regs.t3); + printf(" t4: 0x%016lx\n", regs.t4); + printf(" t5: 0x%016lx\n", regs.t5); + printf(" t6: 0x%016lx\n", regs.t6); + + printf(" tp: 0x%016lx\n", regs.tp); +} diff --git a/src/arch/riscv/vcpu.c b/src/arch/riscv/vcpu.c new file mode 100644 index 000000000..22add87a6 --- /dev/null +++ b/src/arch/riscv/vcpu.c @@ -0,0 +1,28 @@ +/* + * Copyright 2025, UNSW + * SPDX-License-Identifier: BSD-2-Clause + */ + +#include +#include +#include +#include + +void vcpu_reset(size_t vcpu_id) +{ + // TODO + assert(false); +} + +void vcpu_print_regs(size_t vcpu_id) +{ + LOG_VMM("dumping VCPU (ID 0x%lx) registers:\n", vcpu_id); + printf(" sstatus: 0x%016lx\n", microkit_vcpu_riscv_read_reg(vcpu_id, seL4_VCPUReg_SSTATUS)); + printf(" sie: 0x%016lx\n", microkit_vcpu_riscv_read_reg(vcpu_id, seL4_VCPUReg_SIE)); + printf(" stvec: 0x%016lx\n", microkit_vcpu_riscv_read_reg(vcpu_id, seL4_VCPUReg_STVEC)); + printf(" sepc: 0x%016lx\n", microkit_vcpu_riscv_read_reg(vcpu_id, seL4_VCPUReg_SEPC)); + printf(" scause: 0x%016lx\n", microkit_vcpu_riscv_read_reg(vcpu_id, seL4_VCPUReg_SCAUSE)); + printf(" stval: 0x%016lx\n", microkit_vcpu_riscv_read_reg(vcpu_id, seL4_VCPUReg_STVAL)); + printf(" sip: 0x%016lx\n", microkit_vcpu_riscv_read_reg(vcpu_id, seL4_VCPUReg_SIP)); + printf(" timer: 0x%016lx\n", microkit_vcpu_riscv_read_reg(vcpu_id, seL4_VCPUReg_TIMER)); +} diff --git a/src/arch/riscv/virq.c b/src/arch/riscv/virq.c new file mode 100644 index 000000000..1df3be553 --- /dev/null +++ b/src/arch/riscv/virq.c @@ -0,0 +1,30 @@ +/* + * Copyright 2025, UNSW + * SPDX-License-Identifier: BSD-2-Clause + */ +#include +#include +#include +#include + +bool virq_controller_init(size_t boot_vcpu_id) +{ + bool success = fault_register_vm_exception_handler(PLIC_ADDR, PLIC_SIZE, plic_handle_fault, NULL); + if (!success) { + LOG_VMM_ERR("Failed to register fault handler for PLIC region\n"); + return false; + } + assert(success); + + return success; +} + +bool virq_inject(size_t vcpu_id, int irq) +{ + return plic_inject_irq(vcpu_id, irq); +} + +bool virq_register(size_t vcpu_id, size_t irq, virq_ack_fn_t ack_fn, void *ack_data) +{ + return plic_register_irq(vcpu_id, irq, ack_fn, ack_data); +} diff --git a/src/dtb.c b/src/dtb.c new file mode 100644 index 000000000..71099c04a --- /dev/null +++ b/src/dtb.c @@ -0,0 +1,15 @@ +/* + * Copyright 2025, UNSW + * SPDX-License-Identifier: BSD-2-Clause + */ +#include +#include +#include + +bool dtb_check_magic(char *bytes) +{ + struct dtb_header header = {0}; + memcpy((char *)&header, bytes, sizeof(struct dtb_header)); + + return header.magic == DTB_MAGIC; +} diff --git a/src/fault.c b/src/fault.c new file mode 100644 index 000000000..5e7b9615a --- /dev/null +++ b/src/fault.c @@ -0,0 +1,124 @@ +/* + * Copyright 2025, UNSW + * SPDX-License-Identifier: BSD-2-Clause + */ + +#include +#include +#include + +#ifdef CONFIG_ARCH_RISCV +extern fault_instruction_t decoded_instruction; +#endif + +#define MAX_VM_EXCEPTION_HANDLERS 16 + +struct vm_exception_handler { + uintptr_t base; + uintptr_t end; + vm_exception_handler_t callback; + void *data; +}; + +static struct vm_exception_handler registered_vm_exception_handlers[MAX_VM_EXCEPTION_HANDLERS]; +static size_t vm_exception_handler_index = 0; + +bool fault_register_vm_exception_handler(uintptr_t base, size_t size, vm_exception_handler_t callback, void *data) +{ + if (vm_exception_handler_index == MAX_VM_EXCEPTION_HANDLERS - 1) { + LOG_VMM_ERR("maximum number of VM exception handlers registered"); + return false; + } + + if (size == 0) { + LOG_VMM_ERR("registered VM exception handler with size 0\n"); + return false; + } + + for (int i = 0; i < vm_exception_handler_index; i++) { + struct vm_exception_handler *curr = ®istered_vm_exception_handlers[i]; + if (!(base >= curr->end || base + size <= curr->base)) { + LOG_VMM_ERR("VM exception handler [0x%lx..0x%lx), overlaps with another handler [0x%lx..0x%lx)\n", + base, base + size, curr->base, curr->end); + return false; + } + } + + registered_vm_exception_handlers[vm_exception_handler_index] = (struct vm_exception_handler) { + .base = base, + .end = base + size, + .callback = callback, + .data = data, + }; + vm_exception_handler_index += 1; + + return true; +} + +static bool fault_handle_registered_vm_exceptions(size_t vcpu_id, uintptr_t addr, size_t fsr, seL4_UserContext *regs) +{ + for (int i = 0; i < MAX_VM_EXCEPTION_HANDLERS; i++) { + uintptr_t base = registered_vm_exception_handlers[i].base; + uintptr_t end = registered_vm_exception_handlers[i].end; + vm_exception_handler_t callback = registered_vm_exception_handlers[i].callback; + void *data = registered_vm_exception_handlers[i].data; + if (addr >= base && addr < end) { + bool success = callback(vcpu_id, addr - base, fsr, regs, data); + if (!success) { + LOG_VMM_ERR("registered virtual memory exception handler for region [0x%lx..0x%lx) at address 0x%lx failed\n", base, + end, addr); + } + + return success; + } + } + + /* We could not find a handler for the faulting address. */ + return false; +} + +bool fault_handle_vm_exception(size_t vcpu_id) +{ + seL4_Word addr = microkit_mr_get(seL4_VMFault_Addr); + seL4_Word fsr = microkit_mr_get(seL4_VMFault_FSR); +#ifdef CONFIG_ARCH_RISCV + seL4_Word htinst = microkit_mr_get(seL4_VMFault_Instruction); +#endif + + seL4_UserContext regs; + int err = seL4_TCB_ReadRegisters(BASE_VM_TCB_CAP + vcpu_id, false, 0, SEL4_USER_CONTEXT_SIZE, ®s); + assert(err == seL4_NoError); + + assert(fault_is_read(fsr) || fault_is_write(fsr)); + +#ifdef CONFIG_ARCH_RISCV + decoded_instruction = fault_decode_instruction(vcpu_id, ®s, htinst, addr); +#endif + + bool success = fault_handle_registered_vm_exceptions(vcpu_id, addr, fsr, ®s); + if (!success) { + /* + * We could not find a registered handler for the address, meaning that the fault + * is genuinely unexpected. Surprise! + * Now we print out as much information relating to the fault as we can, hopefully + * the programmer can figure out what went wrong. + */ + size_t ip = microkit_mr_get(seL4_VMFault_IP); + size_t is_prefetch = seL4_GetMR(seL4_VMFault_PrefetchFault); + bool is_write = fault_is_write(fsr); + LOG_VMM_ERR("unexpected memory fault on address: 0x%lx, FSR: 0x%lx, IP: 0x%lx, is_prefetch: %s, is_write: %s\n", + addr, fsr, ip, is_prefetch ? "true" : "false", is_write ? "true" : "false"); + tcb_print_regs(vcpu_id); + vcpu_print_regs(vcpu_id); + } else { +#if defined(CONFIG_ARCH_AARCH64) + return fault_advance_vcpu(vcpu_id, ®s); +#elif defined(CONFIG_ARCH_RISCV) + return fault_advance_vcpu(vcpu_id, ®s, decoded_instruction.compressed); +#else +#error "Unknown architecture for fault handling" +#endif + } + + return success; +} diff --git a/src/guest.c b/src/guest.c index 60ca0b458..3a2d12545 100644 --- a/src/guest.c +++ b/src/guest.c @@ -9,7 +9,8 @@ #include #include -bool guest_start(size_t boot_vcpu_id, uintptr_t kernel_pc, uintptr_t dtb, uintptr_t initrd) { +bool guest_start(size_t boot_vcpu_id, uintptr_t kernel_pc, uintptr_t dtb, uintptr_t initrd) +{ /* * Set the TCB registers to what the virtual machine expects to be started with. * You will note that this is currently Linux specific as we currently do not support @@ -17,37 +18,47 @@ bool guest_start(size_t boot_vcpu_id, uintptr_t kernel_pc, uintptr_t dtb, uintpt * guests, there is no point in prematurely generalising this code. */ seL4_UserContext regs = {0}; +#if defined(CONFIG_ARCH_AARCH64) regs.x0 = dtb; regs.spsr = 5; // PMODE_EL1h regs.pc = kernel_pc; +#elif defined(CONFIG_ARCH_RISCV) + regs.a0 = boot_vcpu_id; + regs.a1 = dtb; + regs.pc = kernel_pc; +#else +#error "Unsupported guest architecture" +#endif /* Write out all the TCB registers */ seL4_Word err = seL4_TCB_WriteRegisters( - BASE_VM_TCB_CAP + boot_vcpu_id, - false, // We'll explcitly start the guest below rather than in this call - 0, // No flags - 4, // Writing to x0, pc, and spsr. Due to the ordering of seL4_UserContext the count must be 4. - ®s - ); + BASE_VM_TCB_CAP + boot_vcpu_id, + false, // We'll explcitly start the guest below rather than in this call + 0, // No flags + sizeof(seL4_UserContext) / sizeof(seL4_Word), + ®s + ); assert(err == seL4_NoError); if (err != seL4_NoError) { LOG_VMM_ERR("Failed to write registers to boot vCPU's TCB (id is 0x%lx), error is: 0x%lx\n", boot_vcpu_id, err); return false; } LOG_VMM("starting guest at 0x%lx, DTB at 0x%lx, initial RAM disk at 0x%lx\n", - regs.pc, regs.x0, initrd); + kernel_pc, dtb, initrd); /* Restart the boot vCPU to the program counter of the TCB associated with it */ - microkit_vcpu_restart(boot_vcpu_id, regs.pc); + microkit_vcpu_restart(boot_vcpu_id, kernel_pc); return true; } -void guest_stop(size_t boot_vcpu_id) { +void guest_stop(size_t boot_vcpu_id) +{ LOG_VMM("Stopping guest\n"); microkit_vcpu_stop(boot_vcpu_id); LOG_VMM("Stopped guest\n"); } -bool guest_restart(size_t boot_vcpu_id, uintptr_t guest_ram_vaddr, size_t guest_ram_size) { +bool guest_restart(size_t boot_vcpu_id, uintptr_t guest_ram_vaddr, size_t guest_ram_size) +{ LOG_VMM("Attempting to restart guest\n"); // First, stop the guest microkit_vcpu_stop(boot_vcpu_id); diff --git a/src/linux.c b/src/linux.c new file mode 100644 index 000000000..4142b96ec --- /dev/null +++ b/src/linux.c @@ -0,0 +1,67 @@ +/* + * Copyright 2025, UNSW + * SPDX-License-Identifier: BSD-2-Clause + */ +#include +#include +#include + +bool linux_validate_image_locations(uintptr_t ram_start, + size_t ram_size, + uintptr_t kernel, + size_t kernel_size, + uintptr_t dtb_dest, + size_t dtb_size, + uintptr_t initrd_dest, + size_t initrd_size) +{ + uintptr_t ram_end = ram_start + ram_size; + uintptr_t dtb_start = dtb_dest; + uintptr_t dtb_end = dtb_start + dtb_size; + uintptr_t kernel_start = kernel; + uintptr_t kernel_end = kernel_start + kernel_size; + uintptr_t initrd_start = initrd_dest; + uintptr_t initrd_end = initrd_start + initrd_size; + + if (!(kernel_start >= ram_start && kernel_end <= ram_end)) { + LOG_VMM_ERR("kernel image [0x%lx..0x%lx) does not reside within RAM [0x%lx, 0x%lx)\n", + kernel_start, kernel_end, ram_start, ram_end); + return false; + } + + if (!(dtb_start >= ram_start && dtb_end <= ram_end)) { + LOG_VMM_ERR("DTB [0x%lx..0x%lx) does not reside within RAM [0x%lx, 0x%lx)\n", + dtb_start, dtb_end, ram_start, ram_end); + return false; + } + + if (!(initrd_start >= ram_start && initrd_end <= ram_end)) { + LOG_VMM_ERR("initial RAM disk image [0x%lx..0x%lx) does not reside within RAM [0x%lx, 0x%lx)\n", + initrd_start, initrd_end, ram_start, ram_end); + return false; + } + + // Check that the kernel and DTB to do not overlap + if (!(dtb_start >= kernel_end || dtb_end <= kernel_start)) { + LOG_VMM_ERR("Linux kernel image [0x%lx..0x%lx)" + " overlaps with the destination of the DTB [0x%lx, 0x%lx)\n", + kernel_start, kernel_end, dtb_start, dtb_end); + return false; + } + + if (!(initrd_start >= kernel_end || initrd_end <= kernel_start)) { + LOG_VMM_ERR("kernel image [0x%lx..0x%lx) overlaps" + " with the destination of the initial RAM disk [0x%lx, 0x%lx)\n", + kernel_start, kernel_end, initrd_start, initrd_end); + return false; + } + // Check that the DTB and initrd do not overlap + if (!(initrd_start >= dtb_end || initrd_end <= dtb_start)) { + LOG_VMM_ERR("DTB [0x%lx..0x%lx) overlaps with the destination of the" + " initial RAM disk [0x%lx, 0x%lx)\n", + dtb_start, dtb_end, initrd_start, initrd_end); + return false; + } + + return true; +} diff --git a/src/virq.c b/src/virq.c new file mode 100644 index 000000000..9bb33e85d --- /dev/null +++ b/src/virq.c @@ -0,0 +1,55 @@ +/* + * Copyright 2025, UNSW + * SPDX-License-Identifier: BSD-2-Clause + */ +#include +#include +#include + +/* Maps Microkit channel numbers with registered vIRQ */ +int virq_passthrough_map[MAX_PASSTHROUGH_IRQ] = {-1}; + +static void virq_passthrough_ack(size_t vcpu_id, int irq, void *cookie) +{ + /* We are down-casting to microkit_channel so must first cast to size_t */ + microkit_irq_ack((microkit_channel)(size_t)cookie); +} + +bool virq_register_passthrough(size_t vcpu_id, size_t irq, microkit_channel irq_ch) +{ + assert(irq_ch < MICROKIT_MAX_CHANNELS); + if (irq_ch >= MICROKIT_MAX_CHANNELS) { + LOG_VMM_ERR("Invalid channel number given '0x%lx' for passthrough vIRQ 0x%lx\n", irq_ch, irq); + return false; + } + + LOG_VMM("Register passthrough vIRQ 0x%lx on vCPU 0x%lx (IRQ channel: 0x%lx)\n", irq, vcpu_id, irq_ch); + virq_passthrough_map[irq_ch] = irq; + + bool success = virq_register(GUEST_VCPU_ID, irq, &virq_passthrough_ack, (void *)(size_t)irq_ch); + assert(success); + if (!success) { + LOG_VMM_ERR("Failed to register passthrough vIRQ %d\n", irq); + return false; + } + + return true; +} + +bool virq_handle_passthrough(microkit_channel irq_ch) +{ + assert(virq_passthrough_map[irq_ch] >= 0); + if (virq_passthrough_map[irq_ch] < 0) { + LOG_VMM_ERR("attempted to handle invalid passthrough IRQ channel 0x%lx\n", irq_ch); + return false; + } + + bool success = virq_inject(GUEST_VCPU_ID, virq_passthrough_map[irq_ch]); + if (!success) { + LOG_VMM_ERR("could not inject passthrough vIRQ 0x%lx, dropped on vCPU 0x%lx\n", virq_passthrough_map[irq_ch], + GUEST_VCPU_ID); + return false; + } + + return true; +} diff --git a/src/virtio/mmio.c b/src/virtio/mmio.c index c7e7b3dc0..5eebd5562 100644 --- a/src/virtio/mmio.c +++ b/src/virtio/mmio.c @@ -5,12 +5,17 @@ */ #include #include +#include +#include #include #include #include #include #include -#include + +#ifdef CONFIG_ARCH_RISCV +extern fault_instruction_t decoded_instruction; +#endif /* Uncomment this to enable debug logging */ // #define DEBUG_MMIO @@ -82,7 +87,7 @@ int handle_virtio_mmio_set_status_flag(virtio_device_t *dev, uint32_t reg) default: LOG_VMM_ERR("unknown virtIO MMIO device status 0x%x.\n", reg); - success = 0; + break; } return success; } @@ -93,7 +98,6 @@ static bool handle_virtio_mmio_reg_read(virtio_device_t *dev, size_t vcpu_id, si uint32_t reg = 0; bool success = true; - LOG_MMIO("read from 0x%lx\n", offset); switch (offset) { case REG_RANGE(REG_VIRTIO_MMIO_MAGIC_VALUE, REG_VIRTIO_MMIO_VERSION): @@ -140,10 +144,15 @@ static bool handle_virtio_mmio_reg_read(virtio_device_t *dev, size_t vcpu_id, si success = false; } + /* TODO: disgusting!!! Bad AArch64 API */ +#if defined(CONFIG_ARCH_AARCH64) uint32_t mask = fault_get_data_mask(offset, fsr); // @ivanv: make it clearer that just passing the offset is okay, // possibly just fix the API fault_emulate_write(regs, offset, fsr, reg & mask); +#elif defined(CONFIG_ARCH_RISCV) + fault_emulate_read_access(&decoded_instruction, regs, reg); +#endif LOG_MMIO("read from device (ID: 0x%x, Vendor 0x%x), offset 0x%lx, value: 0x%lx, PC: 0x%lx\n", dev->regs.DeviceID, dev->regs.VendorID, offset, reg, regs->pc); @@ -155,10 +164,18 @@ static bool handle_virtio_mmio_reg_write(virtio_device_t *dev, size_t vcpu_id, s seL4_UserContext *regs) { bool success = true; - uint32_t data = fault_get_data(regs, fsr); + uint32_t data; + +#if defined(CONFIG_ARCH_AARCH64) + data = fault_get_data(regs, fsr); uint32_t mask = fault_get_data_mask(offset, fsr); /* Mask the data to write */ data &= mask; +#elif defined(CONFIG_ARCH_RISCV) + data = fault_instruction_data(&decoded_instruction, regs); + // TODO: handle non-word writes. + assert(decoded_instruction.funct3 == FUNCT3_WIDTH_W); +#endif LOG_MMIO("write from device (ID: 0x%x, Vendor 0x%x), offset 0x%lx with value 0x%x, PC: 0x%lx\n", dev->regs.DeviceID, dev->regs.VendorID, offset, data, regs->pc); @@ -179,7 +196,7 @@ static bool handle_virtio_mmio_reg_write(virtio_device_t *dev, size_t vcpu_id, s case REG_RANGE(REG_VIRTIO_MMIO_QUEUE_NUM, REG_VIRTIO_MMIO_QUEUE_READY): { if (dev->regs.QueueSel < dev->num_vqs) { struct virtq *virtq = get_current_virtq_by_handler(dev); - virtq->num = (unsigned int)data; + virtq->num = data; } else { LOG_VMM_ERR("invalid virtq index 0x%lx (number of virtqs is 0x%lx) " "given when accessing REG_VIRTIO_MMIO_QUEUE_NUM\n", dev->regs.QueueSel, dev->num_vqs); @@ -188,9 +205,11 @@ static bool handle_virtio_mmio_reg_write(virtio_device_t *dev, size_t vcpu_id, s break; } case REG_RANGE(REG_VIRTIO_MMIO_QUEUE_READY, REG_VIRTIO_MMIO_QUEUE_NOTIFY): - if (data == 0x1) { - dev->vqs[dev->regs.QueueSel].ready = true; + if (data) { // the virtq is already in ram so we don't need to do any initiation + dev->vqs[dev->regs.QueueSel].ready = true; + } else { + dev->vqs[dev->regs.QueueSel].ready = false; } break; case REG_RANGE(REG_VIRTIO_MMIO_QUEUE_NOTIFY, REG_VIRTIO_MMIO_INTERRUPT_STATUS): diff --git a/vmm.mk b/vmm.mk index c3b39dd3c..b24964b13 100644 --- a/vmm.mk +++ b/vmm.mk @@ -18,7 +18,6 @@ else endif AARCH64_FILES := src/arch/aarch64/fault.c \ - src/arch/aarch64/linux.c \ src/arch/aarch64/linux.c \ src/arch/aarch64/psci.c \ src/arch/aarch64/smc.c \ @@ -28,11 +27,23 @@ AARCH64_FILES := src/arch/aarch64/fault.c \ src/arch/aarch64/vgic/vgic.c \ ${VGIC_FILES} +RISCV_FILES := src/arch/riscv/fault.c \ + src/arch/riscv/linux.c \ + src/arch/riscv/plic.c \ + src/arch/riscv/sbi.c \ + src/arch/riscv/tcb.c \ + src/arch/riscv/vcpu.c \ + src/arch/riscv/virq.c + # VIRTIO MMIO depends on sddf ifeq ($(strip $(SDDF)),) $(error libvmm needs the location of the SDDF to build virtIO components) endif +ifeq ($(strip $(ARCH)),) + $(error libvmm needs to know what architecture to target set to ARCH) +endif + # we need ${SDDF} for virtIO; we need ${LIBVMM} for all # the libvmm api interfaces ifeq ($(findstring ${SDDF}/include, ${CFLAGS}),) @@ -49,12 +60,24 @@ ARCH_INDEP_FILES := src/util/printf.c \ src/virtio/mmio.c \ src/virtio/net.c \ src/virtio/sound.c \ - src/guest.c + src/guest.c \ + src/fault.c \ + src/linux.c \ + src/dtb.c \ + src/virq.c + +CFILES := ${ARCH_INDEP_FILES} + +ifeq ($(ARCH),aarch64) + CFILES += $(AARCH64_FILES) +else ifeq ($(ARCH),riscv64) + CFILES += $(RISCV_FILES) +else + $(error Unsupported ARCH given) +endif -CFILES := ${AARCH64_FILES} ${ARCH_INDEP_FILES} OBJECTS := $(subst src,libvmm,${CFILES:.c=.o}) - # Generate dependencies automatically CFLAGS += -MD @@ -73,11 +96,16 @@ libvmm/arch/aarch64/vgic: mkdir -p libvmm/util mkdir -p libvmm/virtio +libvmm/arch/riscv: + mkdir -p libvmm/arch/riscv + mkdir -p libvmm/util + mkdir -p libvmm/virtio + libvmm.a: ${OBJECTS} ${AR} crv $@ $^ ${OBJECTS}: ${SDDF}/include -${OBJECTS}: ${CHECK_LIBVMM_CFLAGS} |libvmm/arch/aarch64/vgic +${OBJECTS}: ${CHECK_LIBVMM_CFLAGS} |libvmm/arch/aarch64/vgic libvmm/arch/riscv libvmm/%.o: src/%.c ${CC} ${CFLAGS} -c -o $@ $< @@ -88,6 +116,7 @@ clean:: rm -f ${OBJECTS} ${OBJECTS:.c=.d} clobber:: clean + rmdir src/arch/riscv rmdir src/arch/aarch64/vgic rmdir src/util rmdir src/virtio