From 383f24e501d07c5b2f5de2c6177d0386b7fdcd25 Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Wed, 13 Nov 2019 13:08:27 +0100 Subject: [PATCH 01/54] fpga: launch all syntheses with appropriate number of threads Rename messages.tcl to common.tcl and add a number of CPU detection based on the system's getconf with a fallback to "4". Change all invocations of "launch_run" to use this derived number of jobs instead of none or a hard-coded number of "8". To that end, an additional number of .tcl files have to include common.tcl now. --- fpga/common/{messages.tcl => common.tcl} | 5 +++++ fpga/ips/xilinx_clock_manager/tcl/run.tcl | 4 +++- fpga/ips/xilinx_fp_fma/tcl/run.tcl | 4 +++- fpga/ips/xilinx_mem_32768x32/tcl/run.tcl | 4 +++- fpga/ips/xilinx_mem_32768x32_dp/tcl/run.tcl | 4 +++- fpga/ips/xilinx_mem_8192x32/tcl/run.tcl | 4 +++- fpga/pulpemu/tcl/impl.tcl | 8 +++++--- fpga/pulpemu/tcl/run.tcl | 5 ++--- fpga/pulpino/tcl/run.tcl | 5 ++--- 9 files changed, 29 insertions(+), 14 deletions(-) rename fpga/common/{messages.tcl => common.tcl} (84%) mode change 100755 => 100644 fpga/ips/xilinx_fp_fma/tcl/run.tcl diff --git a/fpga/common/messages.tcl b/fpga/common/common.tcl similarity index 84% rename from fpga/common/messages.tcl rename to fpga/common/common.tcl index 624f4efd..bebf12e1 100644 --- a/fpga/common/messages.tcl +++ b/fpga/common/common.tcl @@ -12,3 +12,8 @@ set_msg_config -id {[Opt 31-32]} -new_severity "info" set_msg_config -id {[Shape Builder 18-119]} -new_severity "warning" set_msg_config -id {[Filemgmt 20-742]} -new_severity "error" +# Set number of CPUs, default to 4 if system's getconf doesn't work +set CPUS [exec getconf _NPROCESSORS_ONLN] +if { ![info exists CPUS] } { + set CPUS 4 +} diff --git a/fpga/ips/xilinx_clock_manager/tcl/run.tcl b/fpga/ips/xilinx_clock_manager/tcl/run.tcl index 219a2c78..83bd4282 100644 --- a/fpga/ips/xilinx_clock_manager/tcl/run.tcl +++ b/fpga/ips/xilinx_clock_manager/tcl/run.tcl @@ -7,6 +7,8 @@ if { ![info exists ::env(XILINX_BOARD)] } { set ::env(XILINX_BOARD) "em.avnet.com:zynq:zed:c" } +source ../../common/common.tcl + set partNumber $::env(XILINX_PART) set boardName $::env(XILINX_BOARD) @@ -24,6 +26,6 @@ set_property -dict [list CONFIG.INTERFACE_SELECTION {Enable_AXI} CONFIG.USE_DYN_ generate_target {instantiation_template} [get_files ./$ila_name.srcs/sources_1/ip/$ila_name/$ila_name.xci] generate_target all [get_files ./$ila_name.srcs/sources_1/ip/$ila_name/$ila_name.xci] create_ip_run [get_files -of_objects [get_fileset sources_1] ./$ila_name.srcs/sources_1/ip/$ila_name/$ila_name.xci] -launch_run -jobs 8 ${ila_name}_synth_1 +launch_run -jobs $CPUS ${ila_name}_synth_1 wait_on_run ${ila_name}_synth_1 diff --git a/fpga/ips/xilinx_fp_fma/tcl/run.tcl b/fpga/ips/xilinx_fp_fma/tcl/run.tcl old mode 100755 new mode 100644 index 02cbb68e..88514a88 --- a/fpga/ips/xilinx_fp_fma/tcl/run.tcl +++ b/fpga/ips/xilinx_fp_fma/tcl/run.tcl @@ -7,6 +7,8 @@ if { ![info exists ::env(XILINX_BOARD)] } { set ::env(XILINX_BOARD) "em.avnet.com:zynq:zed:c" } +source ../../common/common.tcl + set partNumber $::env(XILINX_PART) set boardName $::env(XILINX_BOARD) @@ -16,5 +18,5 @@ create_ip -name floating_point -vendor xilinx.com -library ip -version 7.0 -modu set_property -dict [list CONFIG.Operation_Type {FMA} CONFIG.Flow_Control {NonBlocking} CONFIG.Axi_Optimize_Goal {Resources} CONFIG.Has_RESULT_TREADY {false} CONFIG.Maximum_Latency {false} CONFIG.Has_ARESETn {true} CONFIG.C_Has_UNDERFLOW {true} CONFIG.C_Has_OVERFLOW {true} CONFIG.C_Has_INVALID_OP {true} CONFIG.A_Precision_Type {Single} CONFIG.C_A_Exponent_Width {8} CONFIG.C_A_Fraction_Width {24} CONFIG.Result_Precision_Type {Single} CONFIG.C_Result_Exponent_Width {8} CONFIG.C_Result_Fraction_Width {24} CONFIG.C_Mult_Usage {Medium_Usage} CONFIG.C_Latency {2} CONFIG.C_Rate {1}] [get_ips xilinx_fp_fma] generate_target all [get_files ./xilinx_fp_fma.srcs/sources_1/ip/xilinx_fp_fma/xilinx_fp_fma.xci] create_ip_run [get_files -of_objects [get_fileset sources_1] ./xilinx_fp_fma.srcs/sources_1/ip/xilinx_fp_fma/xilinx_fp_fma.xci] -launch_run -jobs 8 xilinx_fp_fma_synth_1 +launch_run -jobs $CPUS xilinx_fp_fma_synth_1 wait_on_run xilinx_fp_fma_synth_1 diff --git a/fpga/ips/xilinx_mem_32768x32/tcl/run.tcl b/fpga/ips/xilinx_mem_32768x32/tcl/run.tcl index 09b9271c..8169c692 100644 --- a/fpga/ips/xilinx_mem_32768x32/tcl/run.tcl +++ b/fpga/ips/xilinx_mem_32768x32/tcl/run.tcl @@ -7,6 +7,8 @@ if { ![info exists ::env(XILINX_BOARD)] } { set ::env(XILINX_BOARD) "em.avnet.com:zynq:zed:c" } +source ../../common/common.tcl + set partNumber $::env(XILINX_PART) set boardName $::env(XILINX_BOARD) @@ -16,5 +18,5 @@ create_ip -name blk_mem_gen -vendor xilinx.com -library ip -module_name xilinx_m set_property -dict [list CONFIG.Memory_Type {Single_Port_RAM} CONFIG.Use_Byte_Write_Enable {true} CONFIG.Byte_Size {8} CONFIG.Write_Width_A {32} CONFIG.Write_Depth_A {32768} CONFIG.Register_PortA_Output_of_Memory_Primitives {false} CONFIG.Use_RSTA_Pin {true}] [get_ips xilinx_mem_32768x32] generate_target all [get_files ./xilinx_mem_32768x32.srcs/sources_1/ip/xilinx_mem_32768x32/xilinx_mem_32768x32.xci] create_ip_run [get_files -of_objects [get_fileset sources_1] ./xilinx_mem_32768x32.srcs/sources_1/ip/xilinx_mem_32768x32/xilinx_mem_32768x32.xci] -launch_run -jobs 8 xilinx_mem_32768x32_synth_1 +launch_run -jobs $CPUS xilinx_mem_32768x32_synth_1 wait_on_run xilinx_mem_32768x32_synth_1 diff --git a/fpga/ips/xilinx_mem_32768x32_dp/tcl/run.tcl b/fpga/ips/xilinx_mem_32768x32_dp/tcl/run.tcl index 3b215d11..35ecb9d8 100644 --- a/fpga/ips/xilinx_mem_32768x32_dp/tcl/run.tcl +++ b/fpga/ips/xilinx_mem_32768x32_dp/tcl/run.tcl @@ -7,6 +7,8 @@ if { ![info exists ::env(XILINX_BOARD)] } { set ::env(XILINX_BOARD) "em.avnet.com:zynq:zed:c" } +source ../../common/common.tcl + set partNumber $::env(XILINX_PART) set boardName $::env(XILINX_BOARD) @@ -16,5 +18,5 @@ create_ip -name blk_mem_gen -vendor xilinx.com -library ip -module_name xilinx_m set_property -dict [list CONFIG.Memory_Type {True_Dual_Port_RAM} CONFIG.Use_Byte_Write_Enable {true} CONFIG.Byte_Size {8} CONFIG.Write_Width_A {32} CONFIG.Write_Depth_A {32768} CONFIG.Register_PortA_Output_of_Memory_Primitives {false} CONFIG.Register_PortB_Output_of_Memory_Primitives {false} CONFIG.Register_PortB_Output_of_Memory_Core {false} CONFIG.Use_RSTA_Pin {true} CONFIG.Use_RSTB_Pin {true}] [get_ips xilinx_mem_32768x32_dp] generate_target all [get_files ./xilinx_mem_32768x32_dp.srcs/sources_1/ip/xilinx_mem_32768x32_dp/xilinx_mem_32768x32_dp.xci] create_ip_run [get_files -of_objects [get_fileset sources_1] ./xilinx_mem_32768x32_dp.srcs/sources_1/ip/xilinx_mem_32768x32_dp/xilinx_mem_32768x32_dp.xci] -launch_run -jobs 8 xilinx_mem_32768x32_dp_synth_1 +launch_run -jobs $CPUS xilinx_mem_32768x32_dp_synth_1 wait_on_run xilinx_mem_32768x32_dp_synth_1 diff --git a/fpga/ips/xilinx_mem_8192x32/tcl/run.tcl b/fpga/ips/xilinx_mem_8192x32/tcl/run.tcl index b1395c47..0d87660e 100644 --- a/fpga/ips/xilinx_mem_8192x32/tcl/run.tcl +++ b/fpga/ips/xilinx_mem_8192x32/tcl/run.tcl @@ -7,6 +7,8 @@ if { ![info exists ::env(XILINX_BOARD)] } { set ::env(XILINX_BOARD) "em.avnet.com:zynq:zed:c" } +source ../../common/common.tcl + set partNumber $::env(XILINX_PART) set boardName $::env(XILINX_BOARD) @@ -16,5 +18,5 @@ create_ip -name blk_mem_gen -vendor xilinx.com -library ip -module_name xilinx_m set_property -dict [list CONFIG.Memory_Type {Single_Port_RAM} CONFIG.Use_Byte_Write_Enable {true} CONFIG.Byte_Size {8} CONFIG.Write_Width_A {32} CONFIG.Write_Depth_A {8192} CONFIG.Register_PortA_Output_of_Memory_Primitives {false} CONFIG.Use_RSTA_Pin {true}] [get_ips xilinx_mem_8192x32] generate_target all [get_files ./xilinx_mem_8192x32.srcs/sources_1/ip/xilinx_mem_8192x32/xilinx_mem_8192x32.xci] create_ip_run [get_files -of_objects [get_fileset sources_1] ./xilinx_mem_8192x32.srcs/sources_1/ip/xilinx_mem_8192x32/xilinx_mem_8192x32.xci] -launch_run -jobs 8 xilinx_mem_8192x32_synth_1 +launch_run -jobs $CPUS xilinx_mem_8192x32_synth_1 wait_on_run xilinx_mem_8192x32_synth_1 diff --git a/fpga/pulpemu/tcl/impl.tcl b/fpga/pulpemu/tcl/impl.tcl index 6e92e751..f6d0ac5f 100644 --- a/fpga/pulpemu/tcl/impl.tcl +++ b/fpga/pulpemu/tcl/impl.tcl @@ -229,6 +229,8 @@ if {[string equal $::env(BOARD) "zybo"]} { } +source ../common/common.tcl + # physical constraints # source tcl/floorplan.xdc @@ -241,9 +243,9 @@ save_constraints # set_property "steps.route_design.args.directive" "RuntimeOptimized" [get_runs impl_1] set_property strategy Area_Explore [get_runs impl_1] -launch_runs impl_1 +launch_runs impl_1 -jobs $CPUS wait_on_run impl_1 -launch_runs impl_1 -to_step write_bitstream +launch_runs impl_1 -jobs $CPUS -to_step write_bitstream wait_on_run impl_1 # report area utilization @@ -274,7 +276,7 @@ if { [info exists ::env(PROBES)] } { set_property "steps.place_design.args.directive" "RuntimeOptimized" [get_runs impl_2] set_property "steps.route_design.args.directive" "RuntimeOptimized" [get_runs impl_2] - launch_runs impl_2 -to_step write_bitstream + launch_runs -jobs $CPUS impl_2 -to_step write_bitstream wait_on_run impl_2 } diff --git a/fpga/pulpemu/tcl/run.tcl b/fpga/pulpemu/tcl/run.tcl index 00422ad2..2f5e6ef0 100644 --- a/fpga/pulpemu/tcl/run.tcl +++ b/fpga/pulpemu/tcl/run.tcl @@ -43,8 +43,7 @@ if { [info exists ::env(XILINX_BOARD) ] } { } -# set up meaningful errors -source ../common/messages.tcl +source ../common/common.tcl # create block design source tcl/ps7_bd.tcl @@ -93,7 +92,7 @@ set_property strategy Flow_AreaOptimized_High [get_runs synth_1] # synthesize synth_design -rtl -name rtl_1 -launch_runs synth_1 +launch_runs synth_1 -jobs $CPUS wait_on_run synth_1 open_run synth_1 -name netlist_1 # write_edif pulpemu.edf diff --git a/fpga/pulpino/tcl/run.tcl b/fpga/pulpino/tcl/run.tcl index 8f301d91..f30c11b1 100644 --- a/fpga/pulpino/tcl/run.tcl +++ b/fpga/pulpino/tcl/run.tcl @@ -61,8 +61,7 @@ set_property board $::env(XILINX_BOARD) [current_project] source tcl/ips_inc_dirs.tcl -# set up meaningful errors -source ../common/messages.tcl +source ../common/common.tcl source tcl/ips_src_files.tcl source tcl/src_files.tcl @@ -112,7 +111,7 @@ synth_design -rtl -name rtl_1 -generic USE_ZERO_RISCY=$::env(USE_ZERO_RISCY) -ge #set_property STEPS.SYNTH_DESIGN.ARGS.KEEP_EQUIVALENT_REGISTERS true [get_runs synth_1] #set_property STEPS.SYNTH_DESIGN.ARGS.RESOURCE_SHARING off [get_runs synth_1] #set_property STEPS.SYNTH_DESIGN.ARGS.NO_LC true [get_runs synth_1] -launch_runs synth_1 +launch_runs synth_1 -jobs $CPUS wait_on_run synth_1 open_run synth_1 From 0ad7d591020cd3ffd4ecb1e625be939134f3c46a Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Wed, 13 Nov 2019 13:08:27 +0100 Subject: [PATCH 02/54] fpga: clean ${PROJECT}.ip_user_files and ${PROJECT}.sim Also, use ${PROJECT} in xilinx_mem_32768x32_dp and unify the related makefiles. --- fpga/ips/xilinx_clock_manager/Makefile | 3 ++- fpga/ips/xilinx_fp_fma/Makefile | 3 ++- fpga/ips/xilinx_mem_32768x32/Makefile | 3 ++- fpga/ips/xilinx_mem_32768x32_dp/Makefile | 12 +++++++----- fpga/ips/xilinx_mem_8192x32/Makefile | 3 ++- fpga/pulpemu/Makefile | 1 + fpga/pulpino/Makefile | 1 + 7 files changed, 17 insertions(+), 9 deletions(-) diff --git a/fpga/ips/xilinx_clock_manager/Makefile b/fpga/ips/xilinx_clock_manager/Makefile index 36158218..712f1731 100644 --- a/fpga/ips/xilinx_clock_manager/Makefile +++ b/fpga/ips/xilinx_clock_manager/Makefile @@ -11,13 +11,14 @@ gui: clean: rm -rf ip/* - mkdir -p ip rm -rf ${PROJECT}.xpr rm -rf ${PROJECT}.hw rm -rf ${PROJECT}.data rm -rf ${PROJECT}.runs + rm -rf ${PROJECT}.sim rm -rf ${PROJECT}.srcs rm -rf ${PROJECT}.cache + rm -rf ${PROJECT}.ip_user_files rm -rf component.xml rm -rf vivado*.jou rm -rf vivado*.log diff --git a/fpga/ips/xilinx_fp_fma/Makefile b/fpga/ips/xilinx_fp_fma/Makefile index 43d2b604..25b6eb7c 100644 --- a/fpga/ips/xilinx_fp_fma/Makefile +++ b/fpga/ips/xilinx_fp_fma/Makefile @@ -14,13 +14,14 @@ gui: clean: rm -rf ip/* - mkdir -p ip rm -rf ${PROJECT}.xpr rm -rf ${PROJECT}.hw rm -rf ${PROJECT}.data rm -rf ${PROJECT}.runs + rm -rf ${PROJECT}.sim rm -rf ${PROJECT}.srcs rm -rf ${PROJECT}.cache + rm -rf ${PROJECT}.ip_user_files rm -rf component.xml rm -rf vivado*.jou rm -rf vivado*.log diff --git a/fpga/ips/xilinx_mem_32768x32/Makefile b/fpga/ips/xilinx_mem_32768x32/Makefile index 15b8834e..0ce4c12f 100644 --- a/fpga/ips/xilinx_mem_32768x32/Makefile +++ b/fpga/ips/xilinx_mem_32768x32/Makefile @@ -13,13 +13,14 @@ gui: clean: rm -rf ip/* - mkdir -p ip rm -rf ${PROJECT}.xpr rm -rf ${PROJECT}.hw rm -rf ${PROJECT}.data rm -rf ${PROJECT}.runs + rm -rf ${PROJECT}.sim rm -rf ${PROJECT}.srcs rm -rf ${PROJECT}.cache + rm -rf ${PROJECT}.ip_user_files rm -rf component.xml rm -rf vivado*.jou rm -rf vivado*.log diff --git a/fpga/ips/xilinx_mem_32768x32_dp/Makefile b/fpga/ips/xilinx_mem_32768x32_dp/Makefile index aaa8d1fd..803bc78f 100644 --- a/fpga/ips/xilinx_mem_32768x32_dp/Makefile +++ b/fpga/ips/xilinx_mem_32768x32_dp/Makefile @@ -2,23 +2,25 @@ PROJECT:=xilinx_mem_32768x32_dp all: vivado -mode batch -source tcl/run.tcl - cp xilinx_mem_32768x32_dp.srcs/sources_1/ip/xilinx_mem_32768x32_dp/xilinx_mem_32768x32_dp_stub.v ./ip - cp xilinx_mem_32768x32_dp.srcs/sources_1/ip/xilinx_mem_32768x32_dp/xilinx_mem_32768x32_dp.xci ./ip - cp xilinx_mem_32768x32_dp.srcs/sources_1/ip/xilinx_mem_32768x32_dp/xilinx_mem_32768x32_dp.veo ./ip - cp xilinx_mem_32768x32_dp.srcs/sources_1/ip/xilinx_mem_32768x32_dp/xilinx_mem_32768x32_dp.dcp ./ip + mkdir -p ip + cp ${PROJECT}.srcs/sources_1/ip/${PROJECT}/${PROJECT}_stub.v ./ip + cp ${PROJECT}.srcs/sources_1/ip/${PROJECT}/${PROJECT}.xci ./ip + cp ${PROJECT}.srcs/sources_1/ip/${PROJECT}/${PROJECT}.veo ./ip + cp ${PROJECT}.srcs/sources_1/ip/${PROJECT}/${PROJECT}.dcp ./ip gui: vivado -mode gui -source tcl/run.tcl & clean: rm -rf ip/* - mkdir -p ip rm -rf ${PROJECT}.xpr rm -rf ${PROJECT}.hw rm -rf ${PROJECT}.data rm -rf ${PROJECT}.runs + rm -rf ${PROJECT}.sim rm -rf ${PROJECT}.srcs rm -rf ${PROJECT}.cache + rm -rf ${PROJECT}.ip_user_files rm -rf component.xml rm -rf vivado*.jou rm -rf vivado*.log diff --git a/fpga/ips/xilinx_mem_8192x32/Makefile b/fpga/ips/xilinx_mem_8192x32/Makefile index 9cc999fa..f0989729 100644 --- a/fpga/ips/xilinx_mem_8192x32/Makefile +++ b/fpga/ips/xilinx_mem_8192x32/Makefile @@ -13,13 +13,14 @@ gui: clean: rm -rf ip/* - mkdir -p ip rm -rf ${PROJECT}.xpr rm -rf ${PROJECT}.hw rm -rf ${PROJECT}.data rm -rf ${PROJECT}.runs + rm -rf ${PROJECT}.sim rm -rf ${PROJECT}.srcs rm -rf ${PROJECT}.cache + rm -rf ${PROJECT}.ip_user_files rm -rf component.xml rm -rf vivado*.jou rm -rf vivado*.log diff --git a/fpga/pulpemu/Makefile b/fpga/pulpemu/Makefile index a0aab9f3..9dc02225 100644 --- a/fpga/pulpemu/Makefile +++ b/fpga/pulpemu/Makefile @@ -34,6 +34,7 @@ clean: rm -rf ${PROJECT}.sdk rm -rf ${PROJECT}.cache rm -rf ${PROJECT}.ioplanning + rm -rf ${PROJECT}.ip_user_files rm -rf ${PROJECT}.hwdef rm -rf *.log rm -rf ulpsoc.txt diff --git a/fpga/pulpino/Makefile b/fpga/pulpino/Makefile index e9261307..df1d122e 100644 --- a/fpga/pulpino/Makefile +++ b/fpga/pulpino/Makefile @@ -16,6 +16,7 @@ clean: rm -rf ${PROJECT}.sim rm -rf ${PROJECT}.cache rm -rf ${PROJECT}.ioplanning + rm -rf ${PROJECT}.ip_user_files rm -rf ${PROJECT}.hw rm -rf component.xml rm -rf vivado* From a5bf025f09e5a66aba4d5212f5ed017347c1da54 Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Wed, 13 Nov 2019 13:08:27 +0100 Subject: [PATCH 03/54] fpga: unify handling of pulpemu's sysdef and hwdef files - copy the sysdef file produced by implementation to root dir - in the sw makefile refer to the copies instead of the built files within the *.runs directory --- fpga/pulpemu/.gitignore | 3 ++- fpga/pulpemu/Makefile | 4 ++-- fpga/sw/Makefile | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/fpga/pulpemu/.gitignore b/fpga/pulpemu/.gitignore index ec07ee3c..cbe034ed 100644 --- a/fpga/pulpemu/.gitignore +++ b/fpga/pulpemu/.gitignore @@ -11,4 +11,5 @@ vivado*.backup.log *.hwdef *.txt .Xil -pulpemu_top.bit \ No newline at end of file +pulpemu_top.bit +pulpemu_top.sysdef diff --git a/fpga/pulpemu/Makefile b/fpga/pulpemu/Makefile index 9dc02225..484e7baa 100644 --- a/fpga/pulpemu/Makefile +++ b/fpga/pulpemu/Makefile @@ -10,6 +10,7 @@ impl: rm -rf .Xil vivado -mode batch -source tcl/impl.tcl cp pulpemu_top.runs/impl_1/pulpemu_top.bit . + cp pulpemu.runs/impl_1/pulpemu_top.sysdef . cp pulpemu_top.runs/impl_1/*.dcp . gui-synth: @@ -44,6 +45,5 @@ clean: rm -rf xgui rm -rf .Xil rm -rf ps_clock* - rm -rf pulpemu_top* - rm -rf pulpemu.edf + rm -rf ${PROJECT}_top* diff --git a/fpga/sw/Makefile b/fpga/sw/Makefile index 26fe7368..80c63a76 100644 --- a/fpga/sw/Makefile +++ b/fpga/sw/Makefile @@ -105,7 +105,7 @@ devtree: sd_image/devicetree.dtb # fsbl ################################################################################ -hsi/pulpemu_top.sysdef: ../pulpemu/pulpemu.runs/impl_1/pulpemu_top.sysdef +hsi/pulpemu_top.sysdef: ../pulpemu/pulpemu_top.sysdef cp $< $@ hsi/fsbl/executable.elf: hsi/pulpemu_top.sysdef @@ -121,7 +121,7 @@ fsbl: sd_image/fsbl.elf # get bitstream ################################################################################ -sd_image/pulpemu_top.bit: ../pulpemu/pulpemu.runs/impl_1/pulpemu_top.bit +sd_image/pulpemu_top.bit: ../pulpemu/pulpemu_top.bit cp $< $@ ################################################################################ From ac4afed79186070da4e2bfc0299c8962e63c9e9e Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Wed, 13 Nov 2019 13:08:27 +0100 Subject: [PATCH 04/54] fpga: remove unused 32768x32 memory variants --- fpga/Makefile | 8 ------ fpga/ips/xilinx_mem_32768x32/.gitignore | 10 ------- fpga/ips/xilinx_mem_32768x32/Makefile | 29 --------------------- fpga/ips/xilinx_mem_32768x32/tcl/run.tcl | 22 ---------------- fpga/ips/xilinx_mem_32768x32_dp/.gitignore | 10 ------- fpga/ips/xilinx_mem_32768x32_dp/Makefile | 29 --------------------- fpga/ips/xilinx_mem_32768x32_dp/tcl/run.tcl | 22 ---------------- 7 files changed, 130 deletions(-) delete mode 100644 fpga/ips/xilinx_mem_32768x32/.gitignore delete mode 100644 fpga/ips/xilinx_mem_32768x32/Makefile delete mode 100644 fpga/ips/xilinx_mem_32768x32/tcl/run.tcl delete mode 100644 fpga/ips/xilinx_mem_32768x32_dp/.gitignore delete mode 100644 fpga/ips/xilinx_mem_32768x32_dp/Makefile delete mode 100644 fpga/ips/xilinx_mem_32768x32_dp/tcl/run.tcl diff --git a/fpga/Makefile b/fpga/Makefile index 8c3aa3ac..16601f61 100644 --- a/fpga/Makefile +++ b/fpga/Makefile @@ -19,13 +19,6 @@ mem: ips/xilinx_mem_8192x32/ip/xilinx_mem_8192x32.dcp ips/xilinx_mem_8192x32/ip/xilinx_mem_8192x32.dcp: make -C ips/xilinx_mem_8192x32/ clean all - -.PHONY: mem_dp -mem_dp: ips/xilinx_mem_32768x32_dp/ip/xilinx_mem_32768x32_dp.dcp - -ips/xilinx_mem_32768x32_dp/ip/xilinx_mem_32768x32_dp.dcp: - make -C ips/xilinx_mem_32768x32_dp/ clean all - .PHONY: fp_fma fp_fma: ips/xilinx_fp_fma/ip/xilinx_fp_fma.dcp @@ -55,7 +48,6 @@ sw: clean: make -C ips/xilinx_clock_manager/ clean make -C ips/xilinx_mem_8192x32/ clean - make -C ips/xilinx_mem_32768x32_dp/ clean make -C ips/xilinx_fp_fma/ clean make -C pulpino clean make -C pulpemu clean diff --git a/fpga/ips/xilinx_mem_32768x32/.gitignore b/fpga/ips/xilinx_mem_32768x32/.gitignore deleted file mode 100644 index bf541b07..00000000 --- a/fpga/ips/xilinx_mem_32768x32/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -ip/ -vivado.jou -vivado.log -vivado*.backup.jou -vivado*.backup.log -*.cache/ -*.hw/ -*.runs/ -*.srcs/ -*.xpr diff --git a/fpga/ips/xilinx_mem_32768x32/Makefile b/fpga/ips/xilinx_mem_32768x32/Makefile deleted file mode 100644 index 0ce4c12f..00000000 --- a/fpga/ips/xilinx_mem_32768x32/Makefile +++ /dev/null @@ -1,29 +0,0 @@ -PROJECT:=xilinx_mem_32768x32 - -all: - vivado -mode batch -source tcl/run.tcl - mkdir -p ip - cp ${PROJECT}.srcs/sources_1/ip/${PROJECT}/${PROJECT}_stub.v ./ip - cp ${PROJECT}.srcs/sources_1/ip/${PROJECT}/${PROJECT}.xci ./ip - cp ${PROJECT}.srcs/sources_1/ip/${PROJECT}/${PROJECT}.veo ./ip - cp ${PROJECT}.srcs/sources_1/ip/${PROJECT}/${PROJECT}.dcp ./ip - -gui: - vivado -mode gui -source tcl/run.tcl & - -clean: - rm -rf ip/* - rm -rf ${PROJECT}.xpr - rm -rf ${PROJECT}.hw - rm -rf ${PROJECT}.data - rm -rf ${PROJECT}.runs - rm -rf ${PROJECT}.sim - rm -rf ${PROJECT}.srcs - rm -rf ${PROJECT}.cache - rm -rf ${PROJECT}.ip_user_files - rm -rf component.xml - rm -rf vivado*.jou - rm -rf vivado*.log - rm -rf vivado*.str - rm -rf xgui - diff --git a/fpga/ips/xilinx_mem_32768x32/tcl/run.tcl b/fpga/ips/xilinx_mem_32768x32/tcl/run.tcl deleted file mode 100644 index 8169c692..00000000 --- a/fpga/ips/xilinx_mem_32768x32/tcl/run.tcl +++ /dev/null @@ -1,22 +0,0 @@ - -if { ![info exists ::env(XILINX_PART)] } { - set ::env(XILINX_PART) "xc7z020clg484-1" -} - -if { ![info exists ::env(XILINX_BOARD)] } { - set ::env(XILINX_BOARD) "em.avnet.com:zynq:zed:c" -} - -source ../../common/common.tcl - -set partNumber $::env(XILINX_PART) -set boardName $::env(XILINX_BOARD) - -create_project xilinx_mem_32768x32 . -part $partNumber -set_property board $boardName [current_project] -create_ip -name blk_mem_gen -vendor xilinx.com -library ip -module_name xilinx_mem_32768x32 -set_property -dict [list CONFIG.Memory_Type {Single_Port_RAM} CONFIG.Use_Byte_Write_Enable {true} CONFIG.Byte_Size {8} CONFIG.Write_Width_A {32} CONFIG.Write_Depth_A {32768} CONFIG.Register_PortA_Output_of_Memory_Primitives {false} CONFIG.Use_RSTA_Pin {true}] [get_ips xilinx_mem_32768x32] -generate_target all [get_files ./xilinx_mem_32768x32.srcs/sources_1/ip/xilinx_mem_32768x32/xilinx_mem_32768x32.xci] -create_ip_run [get_files -of_objects [get_fileset sources_1] ./xilinx_mem_32768x32.srcs/sources_1/ip/xilinx_mem_32768x32/xilinx_mem_32768x32.xci] -launch_run -jobs $CPUS xilinx_mem_32768x32_synth_1 -wait_on_run xilinx_mem_32768x32_synth_1 diff --git a/fpga/ips/xilinx_mem_32768x32_dp/.gitignore b/fpga/ips/xilinx_mem_32768x32_dp/.gitignore deleted file mode 100644 index bf541b07..00000000 --- a/fpga/ips/xilinx_mem_32768x32_dp/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -ip/ -vivado.jou -vivado.log -vivado*.backup.jou -vivado*.backup.log -*.cache/ -*.hw/ -*.runs/ -*.srcs/ -*.xpr diff --git a/fpga/ips/xilinx_mem_32768x32_dp/Makefile b/fpga/ips/xilinx_mem_32768x32_dp/Makefile deleted file mode 100644 index 803bc78f..00000000 --- a/fpga/ips/xilinx_mem_32768x32_dp/Makefile +++ /dev/null @@ -1,29 +0,0 @@ -PROJECT:=xilinx_mem_32768x32_dp - -all: - vivado -mode batch -source tcl/run.tcl - mkdir -p ip - cp ${PROJECT}.srcs/sources_1/ip/${PROJECT}/${PROJECT}_stub.v ./ip - cp ${PROJECT}.srcs/sources_1/ip/${PROJECT}/${PROJECT}.xci ./ip - cp ${PROJECT}.srcs/sources_1/ip/${PROJECT}/${PROJECT}.veo ./ip - cp ${PROJECT}.srcs/sources_1/ip/${PROJECT}/${PROJECT}.dcp ./ip - -gui: - vivado -mode gui -source tcl/run.tcl & - -clean: - rm -rf ip/* - rm -rf ${PROJECT}.xpr - rm -rf ${PROJECT}.hw - rm -rf ${PROJECT}.data - rm -rf ${PROJECT}.runs - rm -rf ${PROJECT}.sim - rm -rf ${PROJECT}.srcs - rm -rf ${PROJECT}.cache - rm -rf ${PROJECT}.ip_user_files - rm -rf component.xml - rm -rf vivado*.jou - rm -rf vivado*.log - rm -rf vivado*.str - rm -rf xgui - diff --git a/fpga/ips/xilinx_mem_32768x32_dp/tcl/run.tcl b/fpga/ips/xilinx_mem_32768x32_dp/tcl/run.tcl deleted file mode 100644 index 35ecb9d8..00000000 --- a/fpga/ips/xilinx_mem_32768x32_dp/tcl/run.tcl +++ /dev/null @@ -1,22 +0,0 @@ - -if { ![info exists ::env(XILINX_PART)] } { - set ::env(XILINX_PART) "xc7z020clg484-1" -} - -if { ![info exists ::env(XILINX_BOARD)] } { - set ::env(XILINX_BOARD) "em.avnet.com:zynq:zed:c" -} - -source ../../common/common.tcl - -set partNumber $::env(XILINX_PART) -set boardName $::env(XILINX_BOARD) - -create_project xilinx_mem_32768x32_dp . -part $partNumber -set_property board $boardName [current_project] -create_ip -name blk_mem_gen -vendor xilinx.com -library ip -module_name xilinx_mem_32768x32_dp -set_property -dict [list CONFIG.Memory_Type {True_Dual_Port_RAM} CONFIG.Use_Byte_Write_Enable {true} CONFIG.Byte_Size {8} CONFIG.Write_Width_A {32} CONFIG.Write_Depth_A {32768} CONFIG.Register_PortA_Output_of_Memory_Primitives {false} CONFIG.Register_PortB_Output_of_Memory_Primitives {false} CONFIG.Register_PortB_Output_of_Memory_Core {false} CONFIG.Use_RSTA_Pin {true} CONFIG.Use_RSTB_Pin {true}] [get_ips xilinx_mem_32768x32_dp] -generate_target all [get_files ./xilinx_mem_32768x32_dp.srcs/sources_1/ip/xilinx_mem_32768x32_dp/xilinx_mem_32768x32_dp.xci] -create_ip_run [get_files -of_objects [get_fileset sources_1] ./xilinx_mem_32768x32_dp.srcs/sources_1/ip/xilinx_mem_32768x32_dp/xilinx_mem_32768x32_dp.xci] -launch_run -jobs $CPUS xilinx_mem_32768x32_dp_synth_1 -wait_on_run xilinx_mem_32768x32_dp_synth_1 From e09b013f1cfa453249bf8a783f5c7a6fa4eff548 Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Wed, 13 Nov 2019 13:08:27 +0100 Subject: [PATCH 05/54] fpga: fix dependencies Ensure that the build order is 1. ips (in any order) 2. pulpino 3. pulpemu 4. sw (because it depends on files from pulpemu) Also, use $(MAKE) to facilitate parallel builds. --- fpga/Makefile | 43 +++++++++++++++++++++-------------------- fpga/pulpemu/Makefile | 6 ++++-- fpga/pulpino/.gitignore | 2 +- 3 files changed, 27 insertions(+), 24 deletions(-) diff --git a/fpga/Makefile b/fpga/Makefile index 16601f61..1082e077 100644 --- a/fpga/Makefile +++ b/fpga/Makefile @@ -1,54 +1,55 @@ all: ips pulpino pulpemu sw - - +# Create list of all *.dcp files based on the subdirectories of ips/ +IP_OUTPUTS:=$(foreach d,$(subst ips/,,$(wildcard ips/*)),ips/$(d)/ip/$(d).dcp) .PHONY: ips ips: clk mem fp_fma - .PHONY: clk clk: ips/xilinx_clock_manager/ip/xilinx_clock_manager.dcp ips/xilinx_clock_manager/ip/xilinx_clock_manager.dcp: - make -C ips/xilinx_clock_manager/ clean all - + $(MAKE) -C ips/xilinx_clock_manager/ clean all .PHONY: mem mem: ips/xilinx_mem_8192x32/ip/xilinx_mem_8192x32.dcp ips/xilinx_mem_8192x32/ip/xilinx_mem_8192x32.dcp: - make -C ips/xilinx_mem_8192x32/ clean all + $(MAKE) -C ips/xilinx_mem_8192x32/ clean all .PHONY: fp_fma fp_fma: ips/xilinx_fp_fma/ip/xilinx_fp_fma.dcp ips/xilinx_fp_fma/ip/xilinx_fp_fma.dcp: - make -C ips/xilinx_fp_fma/ clean all + $(MAKE) -C ips/xilinx_fp_fma/ clean all + .PHONY: pulpino -pulpino: pulpino/pulpino.edf +pulpino: pulpino/pulpino.edn -pulpino/pulpino.edf: - make -C pulpino clean all +pulpino/pulpino.edn: $(IP_OUTPUTS) + $(MAKE) -C pulpino clean all .PHONY: pulpemu -pulpemu: pulpemu/pulpemu_top.bit +pulpemu: pulpemu/pulpemu_top.bit pulpemu/pulpemu_top.sysdef -pulpemu/pulpemu_top.bit: - make -C pulpemu clean all +# Only pattern rules handle multiple targets in a single recipe by +# invoking it only once cf. https://www.gnu.org/software/make/manual/html_node/Pattern-Intro.html +%emu/pulpemu_top.bit %emu/pulpemu_top.sysdef: %ino/pulpino.edn + $(MAKE) -C pulpemu clean all .PHONY: sw -sw: - make -C sw all +sw: pulpemu/pulpemu_top.bit pulpemu/pulpemu_top.sysdef + $(MAKE) -C sw all .PHONY: clean clean: - make -C ips/xilinx_clock_manager/ clean - make -C ips/xilinx_mem_8192x32/ clean - make -C ips/xilinx_fp_fma/ clean - make -C pulpino clean - make -C pulpemu clean - make -C sw clean + $(MAKE) -C ips/xilinx_clock_manager/ clean + $(MAKE) -C ips/xilinx_mem_8192x32/ clean + $(MAKE) -C ips/xilinx_fp_fma/ clean + $(MAKE) -C pulpino clean + $(MAKE) -C pulpemu clean + $(MAKE) -C sw clean diff --git a/fpga/pulpemu/Makefile b/fpga/pulpemu/Makefile index 484e7baa..4ebef9b3 100644 --- a/fpga/pulpemu/Makefile +++ b/fpga/pulpemu/Makefile @@ -4,7 +4,8 @@ all: synth synth: vivado -mode batch -source tcl/run.tcl - cp pulpemu.runs/impl_1/pulpemu_top.bit pulpemu_top.bit + cp ${PROJECT}.runs/impl_1/${PROJECT}_top.bit . + cp ${PROJECT}.runs/impl_1/${PROJECT}_top.sysdef . impl: rm -rf .Xil @@ -20,7 +21,7 @@ gui-impl: vivado -mode gui -source tcl/impl.tcl & continue: - vivado -mode gui pulpemu_top.xpr + vivado -mode gui ${PROJECT}.xpr clean-impl: rm -rf pulpemu_top* @@ -46,4 +47,5 @@ clean: rm -rf .Xil rm -rf ps_clock* rm -rf ${PROJECT}_top* + rm -rf ${PROJECT}.edn diff --git a/fpga/pulpino/.gitignore b/fpga/pulpino/.gitignore index 69af31af..b8502ee4 100644 --- a/fpga/pulpino/.gitignore +++ b/fpga/pulpino/.gitignore @@ -1,5 +1,5 @@ pulpino.cache/ -pulpino.edf +pulpino.edn pulpino.hw/ pulpino.runs/ pulpino.xpr From 24d7d4778f24558fec43e1a34ef4d463f760a8d8 Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Wed, 13 Nov 2019 13:08:27 +0100 Subject: [PATCH 06/54] fpga: fix board selection - Set default board name to em.avnet.com:zed:0.9 This corresponds to revision C of the Zedboard since at least Vivado 2015.1. - Use "board_part" property instead of just "board" as suggested by Vivado 2015.1. --- fpga/README.md | 2 +- fpga/ips/xilinx_clock_manager/tcl/run.tcl | 4 ++-- fpga/ips/xilinx_fp_fma/tcl/run.tcl | 4 ++-- fpga/ips/xilinx_mem_8192x32/tcl/run.tcl | 4 ++-- fpga/pulpemu/tcl/run.tcl | 4 ++-- fpga/pulpino/tcl/run.tcl | 4 ++-- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/fpga/README.md b/fpga/README.md index b4a0aa43..9151782e 100644 --- a/fpga/README.md +++ b/fpga/README.md @@ -44,7 +44,7 @@ Linux running on the ARM cores of the ZYNQ. enviornment variables XILINX_BOARD and XILINX_PART to control the board and part number. if you don't specify these, the following defaults values are used: XILINX_PART "xc7z020clg484-1" - XILINX_BOARD "em.avnet.com:zynq:zed:c" + XILINX_BOARD "em.avnet.com:zed:0.9" 1. Make sure you have the Vivado toolchain and the Xilinx SDK toolchain in your diff --git a/fpga/ips/xilinx_clock_manager/tcl/run.tcl b/fpga/ips/xilinx_clock_manager/tcl/run.tcl index 83bd4282..1ce432c0 100644 --- a/fpga/ips/xilinx_clock_manager/tcl/run.tcl +++ b/fpga/ips/xilinx_clock_manager/tcl/run.tcl @@ -4,7 +4,7 @@ if { ![info exists ::env(XILINX_PART)] } { } if { ![info exists ::env(XILINX_BOARD)] } { - set ::env(XILINX_BOARD) "em.avnet.com:zynq:zed:c" + set ::env(XILINX_BOARD) "em.avnet.com:zed:0.9" } source ../../common/common.tcl @@ -15,7 +15,7 @@ set boardName $::env(XILINX_BOARD) set ila_name xilinx_clock_manager create_project $ila_name . -part $partNumber -set_property board $boardName [current_project] +set_property board_part $boardName [current_project] create_ip -name clk_wiz -vendor xilinx.com -library ip -module_name $ila_name diff --git a/fpga/ips/xilinx_fp_fma/tcl/run.tcl b/fpga/ips/xilinx_fp_fma/tcl/run.tcl index 88514a88..731abe41 100644 --- a/fpga/ips/xilinx_fp_fma/tcl/run.tcl +++ b/fpga/ips/xilinx_fp_fma/tcl/run.tcl @@ -4,7 +4,7 @@ if { ![info exists ::env(XILINX_PART)] } { } if { ![info exists ::env(XILINX_BOARD)] } { - set ::env(XILINX_BOARD) "em.avnet.com:zynq:zed:c" + set ::env(XILINX_BOARD) "em.avnet.com:zed:0.9" } source ../../common/common.tcl @@ -13,7 +13,7 @@ set partNumber $::env(XILINX_PART) set boardName $::env(XILINX_BOARD) create_project xilinx_fp_fma . -part $partNumber -set_property board $boardName [current_project] +set_property board_part $boardName [current_project] create_ip -name floating_point -vendor xilinx.com -library ip -version 7.0 -module_name xilinx_fp_fma set_property -dict [list CONFIG.Operation_Type {FMA} CONFIG.Flow_Control {NonBlocking} CONFIG.Axi_Optimize_Goal {Resources} CONFIG.Has_RESULT_TREADY {false} CONFIG.Maximum_Latency {false} CONFIG.Has_ARESETn {true} CONFIG.C_Has_UNDERFLOW {true} CONFIG.C_Has_OVERFLOW {true} CONFIG.C_Has_INVALID_OP {true} CONFIG.A_Precision_Type {Single} CONFIG.C_A_Exponent_Width {8} CONFIG.C_A_Fraction_Width {24} CONFIG.Result_Precision_Type {Single} CONFIG.C_Result_Exponent_Width {8} CONFIG.C_Result_Fraction_Width {24} CONFIG.C_Mult_Usage {Medium_Usage} CONFIG.C_Latency {2} CONFIG.C_Rate {1}] [get_ips xilinx_fp_fma] generate_target all [get_files ./xilinx_fp_fma.srcs/sources_1/ip/xilinx_fp_fma/xilinx_fp_fma.xci] diff --git a/fpga/ips/xilinx_mem_8192x32/tcl/run.tcl b/fpga/ips/xilinx_mem_8192x32/tcl/run.tcl index 0d87660e..75968a5e 100644 --- a/fpga/ips/xilinx_mem_8192x32/tcl/run.tcl +++ b/fpga/ips/xilinx_mem_8192x32/tcl/run.tcl @@ -4,7 +4,7 @@ if { ![info exists ::env(XILINX_PART)] } { } if { ![info exists ::env(XILINX_BOARD)] } { - set ::env(XILINX_BOARD) "em.avnet.com:zynq:zed:c" + set ::env(XILINX_BOARD) "em.avnet.com:zed:0.9" } source ../../common/common.tcl @@ -13,7 +13,7 @@ set partNumber $::env(XILINX_PART) set boardName $::env(XILINX_BOARD) create_project xilinx_mem_8192x32 . -part $partNumber -set_property board $boardName [current_project] +set_property board_part $boardName [current_project] create_ip -name blk_mem_gen -vendor xilinx.com -library ip -module_name xilinx_mem_8192x32 set_property -dict [list CONFIG.Memory_Type {Single_Port_RAM} CONFIG.Use_Byte_Write_Enable {true} CONFIG.Byte_Size {8} CONFIG.Write_Width_A {32} CONFIG.Write_Depth_A {8192} CONFIG.Register_PortA_Output_of_Memory_Primitives {false} CONFIG.Use_RSTA_Pin {true}] [get_ips xilinx_mem_8192x32] generate_target all [get_files ./xilinx_mem_8192x32.srcs/sources_1/ip/xilinx_mem_8192x32/xilinx_mem_8192x32.xci] diff --git a/fpga/pulpemu/tcl/run.tcl b/fpga/pulpemu/tcl/run.tcl index 2f5e6ef0..421db047 100644 --- a/fpga/pulpemu/tcl/run.tcl +++ b/fpga/pulpemu/tcl/run.tcl @@ -10,7 +10,7 @@ if { ![info exists ::env(XILINX_PART)] } { set ::env(XILINX_PART) "xc7z020clg484-1" if { ![info exists ::env(XILINX_BOARD)] } { - set ::env(XILINX_BOARD) "em.avnet.com:zynq:zed:c" + set ::env(XILINX_BOARD) "em.avnet.com:zed:0.9" } } } @@ -39,7 +39,7 @@ set FPGA_PULPINO ../pulpino create_project pulpemu . -part $::env(XILINX_PART) if { [info exists ::env(XILINX_BOARD) ] } { - set_property board $::env(XILINX_BOARD) [current_project] + set_property board_part $::env(XILINX_BOARD) [current_project] } diff --git a/fpga/pulpino/tcl/run.tcl b/fpga/pulpino/tcl/run.tcl index f30c11b1..290380d2 100644 --- a/fpga/pulpino/tcl/run.tcl +++ b/fpga/pulpino/tcl/run.tcl @@ -7,7 +7,7 @@ if { ![info exists ::env(XILINX_PART)] } { } if { ![info exists ::env(XILINX_BOARD)] } { - set ::env(XILINX_BOARD) "em.avnet.com:zynq:zed:c" + set ::env(XILINX_BOARD) "em.avnet.com:zed:0.9" } if { ![info exists ::env(USE_ZERO_RISCY)] } { @@ -57,7 +57,7 @@ if { $::env(USE_ZERO_RISCY)==1} { # create project create_project pulpino . -part $::env(XILINX_PART) -set_property board $::env(XILINX_BOARD) [current_project] +set_property board_part $::env(XILINX_BOARD) [current_project] source tcl/ips_inc_dirs.tcl From 9c64dcad202d12006f6646d2f29eb04a0ea11c0f Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Wed, 13 Nov 2019 13:08:27 +0100 Subject: [PATCH 07/54] fpga: fix impl target of pulpemu --- fpga/pulpemu/Makefile | 10 ++++------ fpga/pulpemu/tcl/common.tcl | 36 ++++++++++++++++++++++++++++++++++++ fpga/pulpemu/tcl/impl.tcl | 5 +++++ fpga/pulpemu/tcl/run.tcl | 37 +------------------------------------ 4 files changed, 46 insertions(+), 42 deletions(-) create mode 100644 fpga/pulpemu/tcl/common.tcl diff --git a/fpga/pulpemu/Makefile b/fpga/pulpemu/Makefile index 4ebef9b3..69bdcb25 100644 --- a/fpga/pulpemu/Makefile +++ b/fpga/pulpemu/Makefile @@ -8,11 +8,9 @@ synth: cp ${PROJECT}.runs/impl_1/${PROJECT}_top.sysdef . impl: - rm -rf .Xil - vivado -mode batch -source tcl/impl.tcl - cp pulpemu_top.runs/impl_1/pulpemu_top.bit . - cp pulpemu.runs/impl_1/pulpemu_top.sysdef . - cp pulpemu_top.runs/impl_1/*.dcp . + vivado -mode batch -source tcl/impl.tcl ${PROJECT}.xpr + cp ${PROJECT}.runs/impl_1/${PROJECT}_top.bit . + cp ${PROJECT}.runs/impl_1/${PROJECT}_top.sysdef . gui-synth: vivado -mode gui -source tcl/run.tcl & @@ -24,7 +22,7 @@ continue: vivado -mode gui ${PROJECT}.xpr clean-impl: - rm -rf pulpemu_top* + rm -f ${PROJECT}_top.* clean: rm -rf ${PROJECT}.hw diff --git a/fpga/pulpemu/tcl/common.tcl b/fpga/pulpemu/tcl/common.tcl new file mode 100644 index 00000000..cac8fa07 --- /dev/null +++ b/fpga/pulpemu/tcl/common.tcl @@ -0,0 +1,36 @@ +if { ![info exists ::env(BOARD) ]} { + set ::env(BOARD) "zedboard" +} + +if { ![info exists ::env(XILINX_PART)] } { + if {[string equal $::env(BOARD) "zybo"]} { + puts "Running implementation for ZYBO board" + set ::env(XILINX_PART) "xc7z010clg400-1" + } { + set ::env(XILINX_PART) "xc7z020clg484-1" + + if { ![info exists ::env(XILINX_BOARD)] } { + set ::env(XILINX_BOARD) "em.avnet.com:zed:0.9" + } + } +} + +if { ![info exists ::env(USE_ZERO_RISCY)] } { + set ::env(USE_ZERO_RISCY) 0 +} +if { ![info exists ::env(RISCY_RV32F)] } { + set ::env(RISCY_RV32F) 0 +} +if { ![info exists ::env(ZERO_RV32M)] } { + set ::env(ZERO_RV32M) 0 +} +if { ![info exists ::env(ZERO_RV32E)] } { + set ::env(ZERO_RV32E) 0 +} + + +set RTL ../../rtl +set IPS ../../ips +set FPGA_IPS ../ips +set FPGA_RTL ../rtl +set FPGA_PULPINO ../pulpino diff --git a/fpga/pulpemu/tcl/impl.tcl b/fpga/pulpemu/tcl/impl.tcl index f6d0ac5f..9eeea529 100644 --- a/fpga/pulpemu/tcl/impl.tcl +++ b/fpga/pulpemu/tcl/impl.tcl @@ -1,3 +1,7 @@ +source ./tcl/common.tcl + +open_run synth_1 -name synth_1 + # clocks create_clock -period 50.000 -name clk [get_nets {pulpino_wrap_i/clk}] create_clock -period 40.000 -name spi_sck [get_nets {pulpino_wrap_i/spi_clk_i}] @@ -243,6 +247,7 @@ save_constraints # set_property "steps.route_design.args.directive" "RuntimeOptimized" [get_runs impl_1] set_property strategy Area_Explore [get_runs impl_1] +reset_run impl_1 launch_runs impl_1 -jobs $CPUS wait_on_run impl_1 launch_runs impl_1 -jobs $CPUS -to_step write_bitstream diff --git a/fpga/pulpemu/tcl/run.tcl b/fpga/pulpemu/tcl/run.tcl index 421db047..1466e275 100644 --- a/fpga/pulpemu/tcl/run.tcl +++ b/fpga/pulpemu/tcl/run.tcl @@ -1,39 +1,4 @@ -if { ![info exists ::env(BOARD) ]} { - set ::env(BOARD) "zedboard" -} - -if { ![info exists ::env(XILINX_PART)] } { - if {[string equal $::env(BOARD) "zybo"]} { - puts "Running implementation for ZYBO board" - set ::env(XILINX_PART) "xc7z010clg400-1" - } { - set ::env(XILINX_PART) "xc7z020clg484-1" - - if { ![info exists ::env(XILINX_BOARD)] } { - set ::env(XILINX_BOARD) "em.avnet.com:zed:0.9" - } - } -} - -if { ![info exists ::env(USE_ZERO_RISCY)] } { - set ::env(USE_ZERO_RISCY) 0 -} -if { ![info exists ::env(RISCY_RV32F)] } { - set ::env(RISCY_RV32F) 0 -} -if { ![info exists ::env(ZERO_RV32M)] } { - set ::env(ZERO_RV32M) 0 -} -if { ![info exists ::env(ZERO_RV32E)] } { - set ::env(ZERO_RV32E) 0 -} - - -set RTL ../../rtl -set IPS ../../ips -set FPGA_IPS ../ips -set FPGA_RTL ../rtl -set FPGA_PULPINO ../pulpino +source ./tcl/common.tcl # create project create_project pulpemu . -part $::env(XILINX_PART) From 98cceaff2adcf707841eb1c85ec67ee4800a3524 Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Wed, 13 Nov 2019 13:08:27 +0100 Subject: [PATCH 08/54] fpga: fix .gitignore for pulpino reports --- fpga/pulpino/.gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fpga/pulpino/.gitignore b/fpga/pulpino/.gitignore index b8502ee4..deec6669 100644 --- a/fpga/pulpino/.gitignore +++ b/fpga/pulpino/.gitignore @@ -7,4 +7,4 @@ pulpino_funcsim.v pulpino_stub.v vivado.jou vivado.log -reports \ No newline at end of file +reports* From bf45b503e94276d6d3736230839fe7c47616a857 Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Wed, 13 Nov 2019 13:08:27 +0100 Subject: [PATCH 09/54] fpga: create constraints file early This avoids "outdated" synthesis and implementation runs later, e.g., when opening the final project later in the GUI. --- fpga/pulpemu/tcl/common.tcl | 2 ++ fpga/pulpemu/tcl/impl.tcl | 9 +-------- fpga/pulpemu/tcl/run.tcl | 10 +++++----- 3 files changed, 8 insertions(+), 13 deletions(-) diff --git a/fpga/pulpemu/tcl/common.tcl b/fpga/pulpemu/tcl/common.tcl index cac8fa07..8d7acf3b 100644 --- a/fpga/pulpemu/tcl/common.tcl +++ b/fpga/pulpemu/tcl/common.tcl @@ -1,3 +1,5 @@ +source ../common/common.tcl + if { ![info exists ::env(BOARD) ]} { set ::env(BOARD) "zedboard" } diff --git a/fpga/pulpemu/tcl/impl.tcl b/fpga/pulpemu/tcl/impl.tcl index 9eeea529..7b1a870e 100644 --- a/fpga/pulpemu/tcl/impl.tcl +++ b/fpga/pulpemu/tcl/impl.tcl @@ -83,8 +83,6 @@ if {[string equal $::env(BOARD) "zybo"]} { #set_property PACKAGE_PIN Y17 [get_ports {je[7]}] #set_property IOSTANDARD LVCMOS33 [get_ports {je[7]}] - set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets ext_tck_i_IBUF] - # ---------------------------------------------------------------------------- # ---------------------------------------------------------------------------- @@ -203,8 +201,6 @@ if {[string equal $::env(BOARD) "zybo"]} { set_property PACKAGE_PIN AA9 [get_ports {ext_tdo_o}]; # "P-MOD: JA4" set_property PACKAGE_PIN AB11 [get_ports {ext_trstn_i}]; # "P-MOD: JA7" - set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets ext_tck_i_IBUF] - # ---------------------------------------------------------------------------- # User Push Buttons - Bank 34 # ---------------------------------------------------------------------------- @@ -232,13 +228,10 @@ if {[string equal $::env(BOARD) "zybo"]} { set_property IOSTANDARD LVCMOS33 [get_ports -of_objects [get_iobanks 13]]; } - -source ../common/common.tcl - - # physical constraints # source tcl/floorplan.xdc +set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets ext_tck_i_IBUF] save_constraints # set for RuntimeOptimized implementation diff --git a/fpga/pulpemu/tcl/run.tcl b/fpga/pulpemu/tcl/run.tcl index 1466e275..8b1f8269 100644 --- a/fpga/pulpemu/tcl/run.tcl +++ b/fpga/pulpemu/tcl/run.tcl @@ -7,9 +7,6 @@ if { [info exists ::env(XILINX_BOARD) ] } { set_property board_part $::env(XILINX_BOARD) [current_project] } - -source ../common/common.tcl - # create block design source tcl/ps7_bd.tcl @@ -51,12 +48,15 @@ get_property source_mgmt_mode [current_project] set_property source_mgmt_mode DisplayOnly [current_project] get_property source_mgmt_mode [current_project] -# save area +# Synthesis strategy: save area set_property strategy Flow_AreaOptimized_High [get_runs synth_1] -# synthesize +# elaborate synth_design -rtl -name rtl_1 +# Create constraints file to avoid "outdated" synthesis and implementation runs later +save_constraints + launch_runs synth_1 -jobs $CPUS wait_on_run synth_1 open_run synth_1 -name netlist_1 From 080f4792d176e34e654b127fa728e89ac41d0122 Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Wed, 13 Nov 2019 13:08:27 +0100 Subject: [PATCH 10/54] fpga: open impl run before generating reports Not sure what it reports without that, but it is definitely not correct for the final implementation. --- fpga/pulpemu/tcl/impl.tcl | 1 + 1 file changed, 1 insertion(+) diff --git a/fpga/pulpemu/tcl/impl.tcl b/fpga/pulpemu/tcl/impl.tcl index 7b1a870e..be3ffc4b 100644 --- a/fpga/pulpemu/tcl/impl.tcl +++ b/fpga/pulpemu/tcl/impl.tcl @@ -245,6 +245,7 @@ launch_runs impl_1 -jobs $CPUS wait_on_run impl_1 launch_runs impl_1 -jobs $CPUS -to_step write_bitstream wait_on_run impl_1 +open_run impl_1 # report area utilization report_utilization -hierarchical -hierarchical_depth 1 -file pulpemu.txt From 8d8083f1e41fc6300f2fb4e88da4d10fa3b05b61 Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Wed, 13 Nov 2019 13:08:27 +0100 Subject: [PATCH 11/54] fpga: add push target to update bitstream on device --- fpga/Makefile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/fpga/Makefile b/fpga/Makefile index 1082e077..31ab3e04 100644 --- a/fpga/Makefile +++ b/fpga/Makefile @@ -44,6 +44,10 @@ pulpemu: pulpemu/pulpemu_top.bit pulpemu/pulpemu_top.sysdef sw: pulpemu/pulpemu_top.bit pulpemu/pulpemu_top.sysdef $(MAKE) -C sw all +# Download bit stream to FPGA via Linux already running on the PS +.PHONY: push +push: pulpemu/pulpemu_top.bit + ssh root@$(FPGA_HOSTNAME) "cat >/dev/xdevcfg" <$< .PHONY: clean clean: From 257806d0caaec46fa3a4772617fcf77e81e3d2d3 Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Wed, 13 Nov 2019 13:08:27 +0100 Subject: [PATCH 12/54] fpga/sw: fix warnings when compiling the device tree with dtc 1.4.4 Very similar fixes were applied to the Linux kernel. --- fpga/sw/device-tree/skeleton.dtsi | 2 +- fpga/sw/device-tree/system.dts | 2 +- fpga/sw/device-tree/zynq-7000.dtsi | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/fpga/sw/device-tree/skeleton.dtsi b/fpga/sw/device-tree/skeleton.dtsi index b41d241d..a20da0a7 100644 --- a/fpga/sw/device-tree/skeleton.dtsi +++ b/fpga/sw/device-tree/skeleton.dtsi @@ -9,5 +9,5 @@ #size-cells = <1>; chosen { }; aliases { }; - memory { device_type = "memory"; reg = <0 0>; }; + memory@0 { device_type = "memory"; reg = <0 0>; }; }; diff --git a/fpga/sw/device-tree/system.dts b/fpga/sw/device-tree/system.dts index 29d0820f..16f442fe 100644 --- a/fpga/sw/device-tree/system.dts +++ b/fpga/sw/device-tree/system.dts @@ -22,7 +22,7 @@ serial0 = &uart0; serial1 = &uart1; }; - memory { + memory@0 { device_type = "memory"; reg = <0x0 0x20000000>; }; diff --git a/fpga/sw/device-tree/zynq-7000.dtsi b/fpga/sw/device-tree/zynq-7000.dtsi index cb1b3667..53c41eda 100644 --- a/fpga/sw/device-tree/zynq-7000.dtsi +++ b/fpga/sw/device-tree/zynq-7000.dtsi @@ -41,14 +41,14 @@ }; }; - pmu { + pmu@f8891000 { compatible = "arm,cortex-a9-pmu"; interrupts = <0 5 4>, <0 6 4>; interrupt-parent = <&intc>; reg = < 0xf8891000 0x1000 0xf8893000 0x1000 >; }; - regulator_vccpint: fixedregulator@0 { + regulator_vccpint: fixedregulator { compatible = "regulator-fixed"; regulator-name = "VCCPINT"; regulator-min-microvolt = <1000000>; From 7951f2589ef8adf36d8255a607b46b81c39dabba Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Wed, 13 Nov 2019 13:08:27 +0100 Subject: [PATCH 13/54] fpga/sw: add install script to prepare the SD card --- fpga/README.md | 13 ++++-- fpga/sw/Makefile | 20 ++++++++ fpga/sw/install.sh | 112 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 141 insertions(+), 4 deletions(-) create mode 100755 fpga/sw/install.sh diff --git a/fpga/README.md b/fpga/README.md index 9151782e..f962c3d8 100644 --- a/fpga/README.md +++ b/fpga/README.md @@ -62,10 +62,19 @@ Linux running on the ARM cores of the ZYNQ. This builds the FPGA bitstream for the ZedBoard, downloads and compiles linux and u-boot, prepares the fsbl and devicetree, downloads and compiles buildroot and builds the boot.bin image for booting the ZYNQ. + The boot.bin and rootfs.tar files can be found under the folder sw/sd_image. 4. Prepare the SD card and the ZedBoard for booting via SD card. To prepare the card, follow the Xilinx guide [1]. + Alternatively, you can run `make install SD_DEV=/dev/your_sd_card` + in the `fpga/sw` directory. This will automatically partition the + given block device and copy the files of step 5 and 6. If `SD_DEV` + is not given `/dev/mmcblk0` will be used. + After running the script you can inspect the resulting file systems + in `/mnt/pulpino_...`. When done call `make umount` and continue with + step 7. Attention: this removes all `/mnt/pulpino_*` directories. + 5. Copy the BOOT.BIN, uImage and devicetree.dtb files to the first partition of the SD card. Those files can be found inside the `fpga/sw/sd_image` folder. @@ -92,10 +101,6 @@ Linux running on the ARM cores of the ZYNQ. password: pulp - -The boot.bin and rootfs.tar files can be found under the folder sw/sd_image. - - ## Running applications on PULPino 1. Make sure you have a fully working Linux running on the ZYNQ. diff --git a/fpga/sw/Makefile b/fpga/sw/Makefile index 80c63a76..87fd73ba 100644 --- a/fpga/sw/Makefile +++ b/fpga/sw/Makefile @@ -131,6 +131,25 @@ sd_image/pulpemu_top.bit: ../pulpemu/pulpemu_top.bit sd_image/BOOT.BIN: sd_image/u-boot.elf sd_image/pulpemu_top.bit boot.bif sd_image/fsbl.elf bootgen -image ./boot.bif -o i ./sd_image/BOOT.BIN -w on +################################################################################ +# SD card handling/installation +################################################################################ +MOUNT_POINT_BASE:=/mnt/pulpino_ +export MOUNT_POINT_BASE + +.PHONY: install +install: sd_image/BOOT.BIN sd_image/pulpemu_top.bit sd_image/fsbl.elf sd_image/devicetree.dtb sd_image/rootfs.tar sd_image/u-boot.elf sd_image/uImage + @sudo ./install.sh $(SD_DEV) + +.PHONY: umount +umount: + @echo "Umounting" "$(MOUNT_POINT_BASE)"* + @sudo umount -Rl "$(MOUNT_POINT_BASE)"* 2>/dev/null || true + @sudo rm -rf "$(MOUNT_POINT_BASE)"*/ + +################################################################################ +# Cleanup +################################################################################ .PHONY: clean clean: rm -rf u-boot-xlnx @@ -140,3 +159,4 @@ clean: make -C buildroot clean rm -f hsi/pulpemu_top.sysdef rm -f sd_image/* + diff --git a/fpga/sw/install.sh b/fpga/sw/install.sh new file mode 100755 index 00000000..b8804b5a --- /dev/null +++ b/fpga/sw/install.sh @@ -0,0 +1,112 @@ +#!/bin/bash +# We need bash for $EUID, =~, arrays and trap ERR +# +# First and only parameter gives the block device to be prepared. +# If not given then /dev/mmcblk0 is used. +# +# The environment variable MOUNT_POINT_BASE can be set to provide +# the path to the base name of the mount point. +# The default is /mnt/pulpino_ + +# Minimum SD card size is 128 MiB +# The script creates a small fixed-sized boot partition and uses the remainder for /. +BOOT_BLOCKS=131072 # 64 MiB + +ROOTTAR="rootfs.tar" +SOURCE_DIR="sd_image/" +BOOTFILES=(BOOT.BIN devicetree.dtb uImage) + +# Test for root rights +if [ $EUID -ne 0 ]; then + echo "This script must be run as root.">&2 + exit 1 +fi + +# Check input files +for f in ${BOOTFILES[*]} $ROOTTAR; do + if [ ! -r "${SOURCE_DIR}${f}" ] || [ ! -s "${SOURCE_DIR}${f}" ]; then + echo "\"${SOURCE_DIR}${f}\" is missing/not readable/empty.">&2 + exit 1 + fi +done + +# Sanity check for block device +sd_dev="${1:-/dev/mmcblk0}" +if [ ! -b "$sd_dev" ]; then + echo "Path \"$sd_dev\" does not point to a block device.">&2 + echo "Please supply a valid device as first argument to this script.">&2 + exit 1 +fi + +# Check size of target +minsize=$((2*${BOOT_BLOCKS})) +if [ $(blockdev --getsz "${sd_dev}") -lt $minsize ]; then + echo "${sd_dev} is too small. Where did you find such a small card!?">&2 + exit 1 +fi + +# Let the user confirm +echo "This will re-partition \"$sd_dev\" and void all data on it." +read -r -p "Are you sure? [y/N] " rep +if [ "$rep" != "y" ]; then + echo "Aborted.">&2 + exit 1 +fi + +# Set up clean up hooks +return_value=0 +cleanup () { + rm -f "$sfdisk_file" + exit $return_value +} +bailout () { + local cmd="$BASH_COMMAND" rc=$? + echo "Command \"$cmd\" exited with code \"$rc\".">&2 + return_value=1 + cleanup +} +trap bailout ERR SIGINT SIGTERM +trap cleanup EXIT + +echo -n "Cleaning up old and creating new partitions and file systems... " + +# Cleanup old partitions +oldparts=( $(lsblk -po KNAME -n "${sd_dev}" | grep -v "^${sd_dev}$" || true) ) +for p in ${oldparts[*]} ; do + umount "$p" 2>/dev/null || true + wipefs -a "$p" >/dev/null 2>&1 || true +done +wipefs -a "${sd_dev}" >/dev/null 2>&1 || true +sync + +# Create temporary files and directories +sfdisk_file="$(mktemp pulpino_sfdisk_XXX)" +rootdir="$(mktemp -d ${MOUNT_POINT_BASE:-/mnt/pulpino_}XXX)" +bootdir="$(mktemp -d ${MOUNT_POINT_BASE:-/mnt/pulpino_}XXX)" + +# Partition, format and mount target partitions +cat >"$sfdisk_file" </dev/null +mkfs.ext4 -q -F -L root -E nodiscard "${parts[1]}" +mount "${parts[1]}" "${rootdir}" +mount "${parts[0]}" "${bootdir}" + +# Copy files to target +for f in ${BOOTFILES[*]} ; do + cp --preserve=timestamps "${SOURCE_DIR}${f}" "${bootdir}" +done +tar --one-top-level="${rootdir}" -xf "${SOURCE_DIR}${ROOTTAR}" +sync -f "${rootdir}/bin" "${bootdir}/${BOOTFILES[0]}" + +echo "Done." +echo "Check out ${bootdir} (boot) and ${rootdir} (root)." +echo "Execute \"make umount\" before removing the card." From 42111e3af351559b97af9db67675c3b393d2f5a1 Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Wed, 13 Nov 2019 13:08:27 +0100 Subject: [PATCH 14/54] fpga/sw: use $(MAKE) --- fpga/sw/Makefile | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/fpga/sw/Makefile b/fpga/sw/Makefile index 87fd73ba..022732d7 100644 --- a/fpga/sw/Makefile +++ b/fpga/sw/Makefile @@ -20,7 +20,7 @@ linux-xlnx/.config: $(filter-out $(wildcard linux-xlnx), linux-xlnx) cp ./kernel.config ./linux-xlnx/.config linux-xlnx/arch/arm/boot/uImage: linux-xlnx/.config - cd linux-xlnx && make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- UIMAGE_LOADADDR=0x8000 uImage PATH=$(shell pwd)/u-boot-xlnx/tools/:${PATH} -j${NCORES} + cd linux-xlnx && $(MAKE) ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- UIMAGE_LOADADDR=0x8000 uImage PATH=$(shell pwd)/u-boot-xlnx/tools/:${PATH} -j${NCORES} sd_image/uImage: linux-xlnx/arch/arm/boot/uImage mkdir -p sd_image @@ -45,15 +45,15 @@ endif u-boot-xlnx/.config: $(filter-out $(wildcard u-boot-xlnx), u-boot-xlnx) ifeq ($(BOARD),zybo) - cd u-boot-xlnx && make CROSS_COMPILE=arm-xilinx-linux-gnueabi- zynq_zybo_config + cd u-boot-xlnx && $(MAKE) CROSS_COMPILE=arm-xilinx-linux-gnueabi- zynq_zybo_config cp ./u-boot.config.zybo ./u-boot-xlnx/.config else - cd u-boot-xlnx && make CROSS_COMPILE=arm-xilinx-linux-gnueabi- zynq_zed_config + cd u-boot-xlnx && $(MAKE) CROSS_COMPILE=arm-xilinx-linux-gnueabi- zynq_zed_config cp ./u-boot.config ./u-boot-xlnx/.config endif u-boot-xlnx/u-boot: u-boot-xlnx/.config - cd u-boot-xlnx && make CROSS_COMPILE=arm-xilinx-linux-gnueabi- + cd u-boot-xlnx && $(MAKE) CROSS_COMPILE=arm-xilinx-linux-gnueabi- sd_image/u-boot.elf: u-boot-xlnx/u-boot mkdir -p sd_image @@ -75,9 +75,9 @@ buildroot/.config: $(filter-out $(wildcard buildroot), buildroot) cat ./buildroot.config | sed 's#BR2_TOOLCHAIN_EXTERNAL_PATH="/to/be/defined/"#BR2_TOOLCHAIN_EXTERNAL_PATH="$(ARM_TOOLCHAIN_PATH)"#g' > ./buildroot/.config buildroot/output/images/rootfs.tar: buildroot/.config - cd buildroot && make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- busybox-source + cd buildroot && $(MAKE) ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- busybox-source cp busybox.config buildroot/output/build/busybox-1.23.2/.config - cd buildroot && make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- -j${NCORES} + cd buildroot && $(MAKE) ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- -j${NCORES} sd_image/rootfs.tar: buildroot/output/images/rootfs.tar mkdir -p sd_image @@ -153,10 +153,10 @@ umount: .PHONY: clean clean: rm -rf u-boot-xlnx - make -C linux-xlnx clean + $(MAKE) -C linux-xlnx clean rm -f linux-xlnx/.config rm -f buildroot/.config - make -C buildroot clean + $(MAKE) -C buildroot clean rm -f hsi/pulpemu_top.sysdef rm -f sd_image/* From 1454e1390f8e8249e0071098c4369d8100a3dd0a Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Wed, 13 Nov 2019 13:08:27 +0100 Subject: [PATCH 15/54] fpga/sw: simplify u-boot config handling --- fpga/sw/Makefile | 5 +++-- fpga/sw/{u-boot.config => u-boot.config.zedboard} | 0 2 files changed, 3 insertions(+), 2 deletions(-) rename fpga/sw/{u-boot.config => u-boot.config.zedboard} (100%) diff --git a/fpga/sw/Makefile b/fpga/sw/Makefile index 022732d7..ea8af79d 100644 --- a/fpga/sw/Makefile +++ b/fpga/sw/Makefile @@ -1,5 +1,7 @@ PWD=$(CURDIR) NCORES=4 +BOARD ?= zedboard + ARM_TOOLCHAIN_PATH := $(shell which arm-xilinx-linux-gnueabi-gcc) ARM_TOOLCHAIN_PATH := $(shell dirname $(ARM_TOOLCHAIN_PATH)) ARM_TOOLCHAIN_PATH := $(shell dirname $(ARM_TOOLCHAIN_PATH)) @@ -46,11 +48,10 @@ endif u-boot-xlnx/.config: $(filter-out $(wildcard u-boot-xlnx), u-boot-xlnx) ifeq ($(BOARD),zybo) cd u-boot-xlnx && $(MAKE) CROSS_COMPILE=arm-xilinx-linux-gnueabi- zynq_zybo_config - cp ./u-boot.config.zybo ./u-boot-xlnx/.config else cd u-boot-xlnx && $(MAKE) CROSS_COMPILE=arm-xilinx-linux-gnueabi- zynq_zed_config - cp ./u-boot.config ./u-boot-xlnx/.config endif + cp ./u-boot.config.$(BOARD) ./u-boot-xlnx/.config u-boot-xlnx/u-boot: u-boot-xlnx/.config cd u-boot-xlnx && $(MAKE) CROSS_COMPILE=arm-xilinx-linux-gnueabi- diff --git a/fpga/sw/u-boot.config b/fpga/sw/u-boot.config.zedboard similarity index 100% rename from fpga/sw/u-boot.config rename to fpga/sw/u-boot.config.zedboard From 06c18526ccacce3b8020c8cd4ce5b88d4a34824f Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Wed, 13 Nov 2019 13:08:27 +0100 Subject: [PATCH 16/54] fpga/sw: fix device tree dependencies --- fpga/sw/Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/fpga/sw/Makefile b/fpga/sw/Makefile index ea8af79d..208609f6 100644 --- a/fpga/sw/Makefile +++ b/fpga/sw/Makefile @@ -92,7 +92,8 @@ rootfs: sd_image/rootfs.tar # device tree blob ################################################################################ -sd_image/devicetree.dtb: device-tree/*.dts* $(filter-out $(wildcard linux-xlnx), linux-xlnx) +# uImage is used as an order-only prerequisite because the dtc binary used below is built that way. +sd_image/devicetree.dtb: $(wildcard device-tree/*.dts*) | linux-xlnx/arch/arm/boot/uImage ifeq ($(BOARD),zybo) cd device-tree/zybo/ && $(PWD)/linux-xlnx/scripts/dtc/dtc -I dts -O dtb -o $(PWD)/sd_image/devicetree.dtb system.dts else From 1cf790db80691103519b9e00f43f709c92be1c1c Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Wed, 13 Nov 2019 13:08:27 +0100 Subject: [PATCH 17/54] fpga/sw: simplify devicetree generation --- fpga/sw/Makefile | 8 ++------ fpga/sw/device-tree/{ => zedboard}/pl.dtsi | 0 fpga/sw/device-tree/{ => zedboard}/skeleton.dtsi | 0 fpga/sw/device-tree/{ => zedboard}/system.dts | 0 fpga/sw/device-tree/{ => zedboard}/zynq-7000.dtsi | 0 5 files changed, 2 insertions(+), 6 deletions(-) rename fpga/sw/device-tree/{ => zedboard}/pl.dtsi (100%) rename fpga/sw/device-tree/{ => zedboard}/skeleton.dtsi (100%) rename fpga/sw/device-tree/{ => zedboard}/system.dts (100%) rename fpga/sw/device-tree/{ => zedboard}/zynq-7000.dtsi (100%) diff --git a/fpga/sw/Makefile b/fpga/sw/Makefile index 208609f6..61499a5c 100644 --- a/fpga/sw/Makefile +++ b/fpga/sw/Makefile @@ -93,12 +93,8 @@ rootfs: sd_image/rootfs.tar ################################################################################ # uImage is used as an order-only prerequisite because the dtc binary used below is built that way. -sd_image/devicetree.dtb: $(wildcard device-tree/*.dts*) | linux-xlnx/arch/arm/boot/uImage -ifeq ($(BOARD),zybo) - cd device-tree/zybo/ && $(PWD)/linux-xlnx/scripts/dtc/dtc -I dts -O dtb -o $(PWD)/sd_image/devicetree.dtb system.dts -else - cd device-tree && ../linux-xlnx/scripts/dtc/dtc -I dts -O dtb -o ../sd_image/devicetree.dtb system.dts -endif +sd_image/devicetree.dtb: $(wildcard device-tree/$(BOARD)/*.dts*) | linux-xlnx/arch/arm/boot/uImage + cd device-tree/$(BOARD) && ../linux-xlnx/scripts/dtc/dtc -I dts -O dtb -o $(PWD)/sd_image/devicetree.dtb system.dts .PHONY: devtree devtree: sd_image/devicetree.dtb diff --git a/fpga/sw/device-tree/pl.dtsi b/fpga/sw/device-tree/zedboard/pl.dtsi similarity index 100% rename from fpga/sw/device-tree/pl.dtsi rename to fpga/sw/device-tree/zedboard/pl.dtsi diff --git a/fpga/sw/device-tree/skeleton.dtsi b/fpga/sw/device-tree/zedboard/skeleton.dtsi similarity index 100% rename from fpga/sw/device-tree/skeleton.dtsi rename to fpga/sw/device-tree/zedboard/skeleton.dtsi diff --git a/fpga/sw/device-tree/system.dts b/fpga/sw/device-tree/zedboard/system.dts similarity index 100% rename from fpga/sw/device-tree/system.dts rename to fpga/sw/device-tree/zedboard/system.dts diff --git a/fpga/sw/device-tree/zynq-7000.dtsi b/fpga/sw/device-tree/zedboard/zynq-7000.dtsi similarity index 100% rename from fpga/sw/device-tree/zynq-7000.dtsi rename to fpga/sw/device-tree/zedboard/zynq-7000.dtsi From 9c8d8f01823f4f947168a056fc31fd4cc0ad578c Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Wed, 13 Nov 2019 13:08:27 +0100 Subject: [PATCH 18/54] fpga/sw: move git checkouts into the config targets This simplifies things a bit and allows us to avoid deleting the u-boot-xlnx directory like it is already done for the kernel and buildroot. This patch also fixes some related dependency problems. squash! fpga/sw: move git checkouts into the config targets das mit dem "the ..." --- fpga/sw/Makefile | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/fpga/sw/Makefile b/fpga/sw/Makefile index 61499a5c..898d50b7 100644 --- a/fpga/sw/Makefile +++ b/fpga/sw/Makefile @@ -16,9 +16,9 @@ all: u-boot linux rootfs devtree fsbl sd_image/BOOT.BIN linux-xlnx: git clone git://github.com/Xilinx/linux-xlnx.git - cd linux-xlnx && git checkout tags/xilinx-v2015.1 -linux-xlnx/.config: $(filter-out $(wildcard linux-xlnx), linux-xlnx) +linux-xlnx/.config: kernel.config | linux-xlnx + cd linux-xlnx && git checkout -f tags/xilinx-v2015.1 cp ./kernel.config ./linux-xlnx/.config linux-xlnx/arch/arm/boot/uImage: linux-xlnx/.config @@ -38,18 +38,18 @@ linux: sd_image/uImage u-boot-xlnx: git clone git://github.com/Xilinx/u-boot-xlnx.git -ifeq ($(BOARD),zybo) - cd u-boot-xlnx && git checkout 84f81e5b8950748fd7ca967ecf0428affef7ecea -else - cd u-boot-xlnx && git checkout tags/xilinx-v2015.1 -endif - cd u-boot-xlnx && patch -p1 < ../u-boot-xlnx-def-env.patch -u-boot-xlnx/.config: $(filter-out $(wildcard u-boot-xlnx), u-boot-xlnx) +u-boot-xlnx/.config: $(filter-out $(wildcard u-boot*), u-boot-xlnx) | u-boot-xlnx ifeq ($(BOARD),zybo) - cd u-boot-xlnx && $(MAKE) CROSS_COMPILE=arm-xilinx-linux-gnueabi- zynq_zybo_config + cd u-boot-xlnx && \ + git checkout -f 84f81e5b8950748fd7ca967ecf0428affef7ecea && \ + patch -p1 < ../u-boot-xlnx-def-env.patch && \ + $(MAKE) CROSS_COMPILE=arm-xilinx-linux-gnueabi- zynq_zybo_config else - cd u-boot-xlnx && $(MAKE) CROSS_COMPILE=arm-xilinx-linux-gnueabi- zynq_zed_config + cd u-boot-xlnx && \ + git checkout -f tags/xilinx-v2015.1 && \ + patch -p1 < ../u-boot-xlnx-def-env.patch && \ + $(MAKE) CROSS_COMPILE=arm-xilinx-linux-gnueabi- zynq_zed_config endif cp ./u-boot.config.$(BOARD) ./u-boot-xlnx/.config @@ -70,9 +70,9 @@ u-boot: sd_image/u-boot.elf buildroot: git clone git://git.buildroot.net/buildroot.git - cd buildroot && git checkout tags/2015.05 -buildroot/.config: $(filter-out $(wildcard buildroot), buildroot) +buildroot/.config: | buildroot + cd buildroot && git checkout -f tags/2015.05 cat ./buildroot.config | sed 's#BR2_TOOLCHAIN_EXTERNAL_PATH="/to/be/defined/"#BR2_TOOLCHAIN_EXTERNAL_PATH="$(ARM_TOOLCHAIN_PATH)"#g' > ./buildroot/.config buildroot/output/images/rootfs.tar: buildroot/.config From eda073364711ba1d104039f016bd614c0a6536ee Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Wed, 13 Nov 2019 13:08:27 +0100 Subject: [PATCH 19/54] fpga/sw: add distclean target Avoid deleting the u-boot-xlnx repository on make clean to unify the handling of all sub-repositories. Also, fix the clean target in case the sub-repositories were not created yet and clean up spiload. --- fpga/sw/Makefile | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/fpga/sw/Makefile b/fpga/sw/Makefile index 898d50b7..ecf4e352 100644 --- a/fpga/sw/Makefile +++ b/fpga/sw/Makefile @@ -150,11 +150,14 @@ umount: ################################################################################ .PHONY: clean clean: - rm -rf u-boot-xlnx - $(MAKE) -C linux-xlnx clean + $(foreach d,$(wildcard u-boot-xlnx linux-xlnx buildroot apps/spiload),\ + $(MAKE) -C $(d) clean ;) + rm -f u-boot-xlnx/.config rm -f linux-xlnx/.config rm -f buildroot/.config - $(MAKE) -C buildroot clean rm -f hsi/pulpemu_top.sysdef rm -f sd_image/* +.PHONY: distclean +distclean: + rm -rf u-boot-xlnx linux-xlnx buildroot apps/spiload/spiload sd_image hsi/pulpemu_top.sysdef From d47fa1d091d4b19aff5b9b10bb58656eb7e1e07f Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Wed, 13 Nov 2019 13:08:27 +0100 Subject: [PATCH 20/54] fpga/sw: use order-only prerequisite to create sd_image directory --- fpga/sw/Makefile | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/fpga/sw/Makefile b/fpga/sw/Makefile index ecf4e352..4ab534d7 100644 --- a/fpga/sw/Makefile +++ b/fpga/sw/Makefile @@ -9,6 +9,11 @@ ARM_TOOLCHAIN_PATH := $(shell dirname $(ARM_TOOLCHAIN_PATH)) all: u-boot linux rootfs devtree fsbl sd_image/BOOT.BIN +# To make sure a destination directory exists simply include the +# directory as order-only target with a trailing / +.PRECIOUS: %/ +%/: + @mkdir -p $@ ################################################################################ # linux @@ -24,8 +29,7 @@ linux-xlnx/.config: kernel.config | linux-xlnx linux-xlnx/arch/arm/boot/uImage: linux-xlnx/.config cd linux-xlnx && $(MAKE) ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- UIMAGE_LOADADDR=0x8000 uImage PATH=$(shell pwd)/u-boot-xlnx/tools/:${PATH} -j${NCORES} -sd_image/uImage: linux-xlnx/arch/arm/boot/uImage - mkdir -p sd_image +sd_image/uImage: linux-xlnx/arch/arm/boot/uImage | sd_image/ cp linux-xlnx/arch/arm/boot/uImage ./sd_image/uImage .PHONY: linux @@ -56,8 +60,7 @@ endif u-boot-xlnx/u-boot: u-boot-xlnx/.config cd u-boot-xlnx && $(MAKE) CROSS_COMPILE=arm-xilinx-linux-gnueabi- -sd_image/u-boot.elf: u-boot-xlnx/u-boot - mkdir -p sd_image +sd_image/u-boot.elf: u-boot-xlnx/u-boot | sd_image/ cp u-boot-xlnx/u-boot ./sd_image/u-boot.elf .PHONY: u-boot @@ -80,8 +83,7 @@ buildroot/output/images/rootfs.tar: buildroot/.config cp busybox.config buildroot/output/build/busybox-1.23.2/.config cd buildroot && $(MAKE) ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- -j${NCORES} -sd_image/rootfs.tar: buildroot/output/images/rootfs.tar - mkdir -p sd_image +sd_image/rootfs.tar: buildroot/output/images/rootfs.tar | sd_image/ cp buildroot/output/images/rootfs.tar sd_image/rootfs.tar .PHONY: rootfs @@ -119,14 +121,14 @@ fsbl: sd_image/fsbl.elf # get bitstream ################################################################################ -sd_image/pulpemu_top.bit: ../pulpemu/pulpemu_top.bit +sd_image/pulpemu_top.bit: ../pulpemu/pulpemu_top.bit | sd_image/ cp $< $@ ################################################################################ # boot.bin ################################################################################ -sd_image/BOOT.BIN: sd_image/u-boot.elf sd_image/pulpemu_top.bit boot.bif sd_image/fsbl.elf +sd_image/BOOT.BIN: sd_image/u-boot.elf sd_image/pulpemu_top.bit boot.bif sd_image/fsbl.elf | sd_image/ bootgen -image ./boot.bif -o i ./sd_image/BOOT.BIN -w on ################################################################################ From 3f07e7caa8facba4663a3abe0b3cccb0ce61ed35 Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Wed, 13 Nov 2019 13:08:27 +0100 Subject: [PATCH 21/54] fpga/sw: refine .gitignore - add spiload and gpio_access binaries to .gitignore - match all Vivado log files in hsi/ --- fpga/sw/.gitignore | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/fpga/sw/.gitignore b/fpga/sw/.gitignore index a721c3a1..8cab71fa 100644 --- a/fpga/sw/.gitignore +++ b/fpga/sw/.gitignore @@ -1,3 +1,5 @@ +apps/gpio_access/gpio_access +apps/spiload/spiload linux-xlnx sd_image u-boot-xlnx @@ -10,7 +12,7 @@ hsi/ps7_init.html hsi/ps7_init.tcl hsi/ps7_init_gpl.c hsi/ps7_init_gpl.h -hsi/hsi.jou -hsi/hsi.log +hsi/*.jou +hsi/*.log hsi/pulpemu_top.bit -hsi/pulpemu_top.sysdef \ No newline at end of file +hsi/pulpemu_top.sysdef From f5838130c23c6ce60fa71e1a2a5d57037791550e Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Wed, 13 Nov 2019 13:08:27 +0100 Subject: [PATCH 22/54] fpga/sw: create post-build script for buildroot This file can be used to customize the root fs of the SD card When DEPENDENCIES is passed as first parameter it prints out all paths that are prerequisites in the sense of make. Thus the makefile is able to auto- magically discover them. --- fpga/sw/Makefile | 7 +++++-- fpga/sw/buildroot-post-build.sh | 8 ++++++++ fpga/sw/buildroot.config | 1 + 3 files changed, 14 insertions(+), 2 deletions(-) create mode 100755 fpga/sw/buildroot-post-build.sh diff --git a/fpga/sw/Makefile b/fpga/sw/Makefile index 4ab534d7..5e967f37 100644 --- a/fpga/sw/Makefile +++ b/fpga/sw/Makefile @@ -76,9 +76,12 @@ buildroot: buildroot/.config: | buildroot cd buildroot && git checkout -f tags/2015.05 - cat ./buildroot.config | sed 's#BR2_TOOLCHAIN_EXTERNAL_PATH="/to/be/defined/"#BR2_TOOLCHAIN_EXTERNAL_PATH="$(ARM_TOOLCHAIN_PATH)"#g' > ./buildroot/.config + sed \ + -e 's#BR2_TOOLCHAIN_EXTERNAL_PATH="/to/be/defined/"#BR2_TOOLCHAIN_EXTERNAL_PATH="$(ARM_TOOLCHAIN_PATH)"#g' \ + -e 's#BR2_ROOTFS_POST_BUILD_SCRIPT=""#BR2_ROOTFS_POST_BUILD_SCRIPT="../buildroot-post-build.sh"#g' \ + ./buildroot.config > ./buildroot/.config -buildroot/output/images/rootfs.tar: buildroot/.config +buildroot/output/images/rootfs.tar: buildroot/.config buildroot-post-build.sh $(shell ./buildroot-post-build.sh DEPENDENCIES) cd buildroot && $(MAKE) ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- busybox-source cp busybox.config buildroot/output/build/busybox-1.23.2/.config cd buildroot && $(MAKE) ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- -j${NCORES} diff --git a/fpga/sw/buildroot-post-build.sh b/fpga/sw/buildroot-post-build.sh new file mode 100755 index 00000000..b7a92a73 --- /dev/null +++ b/fpga/sw/buildroot-post-build.sh @@ -0,0 +1,8 @@ +#!/bin/sh -e + +# Print out dependencies for and relative to the makefile in fpga/sw +if [ "x$1" = "xDEPENDENCIES" ]; then + echo "" + exit 0 +fi + diff --git a/fpga/sw/buildroot.config b/fpga/sw/buildroot.config index cda42fc4..3e109569 100644 --- a/fpga/sw/buildroot.config +++ b/fpga/sw/buildroot.config @@ -268,6 +268,7 @@ BR2_ROOTFS_USERS_TABLES="" BR2_ROOTFS_OVERLAY="" BR2_ROOTFS_POST_BUILD_SCRIPT="" BR2_ROOTFS_POST_IMAGE_SCRIPT="" +BR2_ROOTFS_POST_SCRIPT_ARGS="" # # Kernel From ad0f09a85246f6ae90891c10981aace67248fb5c Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Wed, 13 Nov 2019 13:08:27 +0100 Subject: [PATCH 23/54] fpga/sw: copy user's .ssh/authorized_keys to buildroot fs --- fpga/sw/buildroot-post-build.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/fpga/sw/buildroot-post-build.sh b/fpga/sw/buildroot-post-build.sh index b7a92a73..d25a5f92 100755 --- a/fpga/sw/buildroot-post-build.sh +++ b/fpga/sw/buildroot-post-build.sh @@ -6,3 +6,7 @@ if [ "x$1" = "xDEPENDENCIES" ]; then exit 0 fi +# SSH +mkdir -p "${1}/root/.ssh/" +[ -f ~/.ssh/authorized_keys ] && cp ~/.ssh/authorized_keys "${1}/root/.ssh/" + From d728356e15b6c227e49cd033a53d51f862f641e4 Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Wed, 13 Nov 2019 13:08:27 +0100 Subject: [PATCH 24/54] fpga/sw: make spiload and copy it to buildroot's fs --- fpga/sw/Makefile | 10 ++++++++++ fpga/sw/buildroot-post-build.sh | 4 +++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/fpga/sw/Makefile b/fpga/sw/Makefile index 5e967f37..0dfeb7ae 100644 --- a/fpga/sw/Makefile +++ b/fpga/sw/Makefile @@ -15,6 +15,16 @@ all: u-boot linux rootfs devtree fsbl sd_image/BOOT.BIN %/: @mkdir -p $@ +################################################################################ +# apps +################################################################################ + +apps/spiload/spiload: + $(MAKE) -C apps/spiload + +.PHONY: spiload +spiload: apps/spiload/spiload + ################################################################################ # linux ################################################################################ diff --git a/fpga/sw/buildroot-post-build.sh b/fpga/sw/buildroot-post-build.sh index d25a5f92..e4df8fdd 100755 --- a/fpga/sw/buildroot-post-build.sh +++ b/fpga/sw/buildroot-post-build.sh @@ -2,7 +2,7 @@ # Print out dependencies for and relative to the makefile in fpga/sw if [ "x$1" = "xDEPENDENCIES" ]; then - echo "" + echo "apps/spiload/spiload" exit 0 fi @@ -10,3 +10,5 @@ fi mkdir -p "${1}/root/.ssh/" [ -f ~/.ssh/authorized_keys ] && cp ~/.ssh/authorized_keys "${1}/root/.ssh/" +# spiload +cp -a ../apps/spiload/spiload "${1}/root/" From 7934d2109ca0cfc6175d933461203b683fd8fd9b Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Wed, 13 Nov 2019 13:08:27 +0100 Subject: [PATCH 25/54] fpga/sw: create shell aliases in buildroot's fs --- fpga/sw/buildroot-post-build.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/fpga/sw/buildroot-post-build.sh b/fpga/sw/buildroot-post-build.sh index e4df8fdd..b76d7c9e 100755 --- a/fpga/sw/buildroot-post-build.sh +++ b/fpga/sw/buildroot-post-build.sh @@ -6,6 +6,13 @@ if [ "x$1" = "xDEPENDENCIES" ]; then exit 0 fi +# Alias commands +cat >"${1}/root/.profile" < Date: Wed, 13 Nov 2019 13:08:27 +0100 Subject: [PATCH 26/54] vsim: use native gcc instead of Mentor's broken one This fixes among other things connecting the debug bridge to the simulator. The problem can be diagnosed by the following message or similar when executing source tcl_files/run_memdpi.tcl: Warning: (vsim-3770) Failed to find user specified function 'mem_init' in DPI C/C++ source files. --- vsim/tcl_files/config/vsim.tcl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/vsim/tcl_files/config/vsim.tcl b/vsim/tcl_files/config/vsim.tcl index 8cabf5c5..ab3d2a45 100755 --- a/vsim/tcl_files/config/vsim.tcl +++ b/vsim/tcl_files/config/vsim.tcl @@ -1,6 +1,8 @@ source tcl_files/config/vsim_ips.tcl +set cc [exec which gcc] set cmd "vsim -quiet $TB \ + -dpicpppath $cc \ -L pulpino_lib \ $VSIM_IP_LIBS \ +nowarnTRAN \ From a0952f88407bc6314f0a2852f709313d78126997 Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Thu, 14 Nov 2019 15:34:34 +0100 Subject: [PATCH 27/54] spiload: fix const pointer declaration --- fpga/sw/apps/spiload/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fpga/sw/apps/spiload/main.c b/fpga/sw/apps/spiload/main.c index d392bb5a..0b60c4b2 100644 --- a/fpga/sw/apps/spiload/main.c +++ b/fpga/sw/apps/spiload/main.c @@ -464,7 +464,7 @@ int process_file(char* buffer, size_t size) { unsigned int entries = 0; // extract lines - const char const* buffer_end = buffer + size; + const char *const buffer_end = buffer + size; char line[20]; unsigned int i; From e74ee48f957f7ece6fa1c759fcac8afef31ef01c Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Wed, 13 Nov 2019 13:08:27 +0100 Subject: [PATCH 28/54] spiload: fix EOC detection This patch fixes two problems: - The addresses used to access the GPIO interface are wrong. - spiload's code is waiting for 0x00000100, i.e. LD0 on, everything else including buttons and switches off. However, the RISCV code (eoc() in sys_lib/utils.c) does only set LD0 and does not care about any other pins. --- fpga/sw/apps/spiload/main.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/fpga/sw/apps/spiload/main.c b/fpga/sw/apps/spiload/main.c index 0b60c4b2..f8a86d1e 100644 --- a/fpga/sw/apps/spiload/main.c +++ b/fpga/sw/apps/spiload/main.c @@ -29,6 +29,7 @@ #define SPIDEV "/dev/spidev32766.0" #define CLKING_AXI_ADDR 0x51010000 #define PULP_CTRL_AXI_ADDR 0x51000000 +#define PULP_GPIO_AXI_ADDR 0x51030000 #define MAP_SIZE 4096UL @@ -111,7 +112,7 @@ int wait_eoc(unsigned int timeout) { PROT_READ|PROT_WRITE, MAP_SHARED, mem_fd, - PULP_CTRL_AXI_ADDR & ~MAP_MASK + PULP_GPIO_AXI_ADDR & ~MAP_MASK ); @@ -122,7 +123,7 @@ int wait_eoc(unsigned int timeout) { goto fail; } - gpio_base = ctrl_map + (PULP_CTRL_AXI_ADDR & MAP_MASK); + gpio_base = ctrl_map + (PULP_GPIO_AXI_ADDR & MAP_MASK); volatile uint32_t* gpio = (volatile uint32_t*)(gpio_base + 0x0); volatile uint32_t* dir = (volatile uint32_t*)(gpio_base + 0x4); @@ -135,7 +136,7 @@ int wait_eoc(unsigned int timeout) { clock_gettime(CLOCK_REALTIME, &spec_end); spec_diff = timespec_sub(spec_end, spec_start); - if (*gpio == (0x1 << 8)) { + if (*gpio & (0x1 << 8)) { printf("EOC received!\n"); break; } From 6a26ebaba51b4048c79ef36fc1654b3daf9b93c1 Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Wed, 13 Nov 2019 13:08:27 +0100 Subject: [PATCH 29/54] spiload: fix and simplify tty handling The error message for the Zybo contained a copy&paste error that is impossible when using a single point of definition as with this patch. --- fpga/sw/apps/spiload/console_read.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/fpga/sw/apps/spiload/console_read.c b/fpga/sw/apps/spiload/console_read.c index db8714fa..40346535 100644 --- a/fpga/sw/apps/spiload/console_read.c +++ b/fpga/sw/apps/spiload/console_read.c @@ -18,6 +18,12 @@ #include #include +#ifdef ZYBO + #define TTY_DEV "/dev/ttyPS1" +#else + #define TTY_DEV "/dev/ttyPS0" +#endif + pthread_t g_thread; int g_should_exit; @@ -30,17 +36,10 @@ void read_port() int n; char c; -#ifdef ZYBO - if ((fd = open("/dev/ttyPS1", O_RDONLY | O_NOCTTY) ) < 0) { - perror("open_port: Unable to open /dev/ttyPS0"); + if ((fd = open(TTY_DEV, O_RDONLY | O_NOCTTY) ) < 0) { + perror("open_port: Unable to open " TTY_DEV); return; } -#else - if ((fd = open("/dev/ttyPS0", O_RDONLY | O_NOCTTY) ) < 0) { - perror("open_port: Unable to open /dev/ttyPS0"); - return; - } -#endif // set baudrate ioctl(fd, TCGETS2, &tio); From 8c7559ed764e2bb684f5a12cf478ebc31bf5b208 Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Wed, 13 Nov 2019 13:08:27 +0100 Subject: [PATCH 30/54] spiload: enable and fix warnings --- fpga/sw/apps/spiload/Makefile | 2 +- fpga/sw/apps/spiload/arg_parsing.c | 1 + fpga/sw/apps/spiload/console_read.c | 7 ++++--- fpga/sw/apps/spiload/main.c | 7 ++----- fpga/sw/apps/spiload/spiloader.h | 3 ++- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/fpga/sw/apps/spiload/Makefile b/fpga/sw/apps/spiload/Makefile index 1958ff41..524e9175 100644 --- a/fpga/sw/apps/spiload/Makefile +++ b/fpga/sw/apps/spiload/Makefile @@ -1,5 +1,5 @@ CC = arm-xilinx-linux-gnueabi-gcc -CFLAGS = +CFLAGS = -Wall ifeq ($(BOARD),zybo) CFLAGS += -DZYBO diff --git a/fpga/sw/apps/spiload/arg_parsing.c b/fpga/sw/apps/spiload/arg_parsing.c index 19e6ba21..2c63b9c7 100644 --- a/fpga/sw/apps/spiload/arg_parsing.c +++ b/fpga/sw/apps/spiload/arg_parsing.c @@ -9,6 +9,7 @@ // specific language governing permissions and limitations under the License. #include +#include #include "spiloader.h" /* The options we understand. */ diff --git a/fpga/sw/apps/spiload/console_read.c b/fpga/sw/apps/spiload/console_read.c index 40346535..de8031e7 100644 --- a/fpga/sw/apps/spiload/console_read.c +++ b/fpga/sw/apps/spiload/console_read.c @@ -8,7 +8,8 @@ // CONDITIONS OF ANY KIND, either express or implied. See the License for the // specific language governing permissions and limitations under the License. -#include +#include +#include #include #include #include @@ -33,7 +34,6 @@ void read_port() struct termios2 tio; int fd; unsigned int i; - int n; char c; if ((fd = open(TTY_DEV, O_RDONLY | O_NOCTTY) ) < 0) { @@ -82,11 +82,12 @@ void read_port() void* console_thread(void* ptr) { read_port(); + return NULL; } void console_thread_start() { g_should_exit = 0; - if (pthread_create (&g_thread, NULL, console_thread, NULL) ) { + if (pthread_create(&g_thread, NULL, console_thread, NULL) ) { printf("Error creating console listening thread\n"); } } diff --git a/fpga/sw/apps/spiload/main.c b/fpga/sw/apps/spiload/main.c index f8a86d1e..1f8f5c7c 100644 --- a/fpga/sw/apps/spiload/main.c +++ b/fpga/sw/apps/spiload/main.c @@ -147,7 +147,7 @@ int wait_eoc(unsigned int timeout) { } } - printf("Stopped after %d.%d\n", spec_diff.tv_sec, spec_diff.tv_nsec); + printf("Stopped after %ld.%ld\n", (long)spec_diff.tv_sec, spec_diff.tv_nsec); fail: close(mem_fd); @@ -255,8 +255,6 @@ int set_boot_addr(uint32_t boot_addr) { goto fail; } - close(fd); - fail: // close spidev close(fd); @@ -386,7 +384,6 @@ int main(int argc, char **argv) int fd; char* buffer; unsigned int size; - int i; struct cmd_arguments_t arguments; cmd_parsing(argc, argv, &arguments); @@ -556,7 +553,7 @@ int clock_manager() { } clk_base = clk_map + (CLKING_AXI_ADDR & MAP_MASK); - volatile uint32_t* sr = (volatile uint32_t*)(clk_base + 0x4); + // volatile uint32_t* sr = (volatile uint32_t*)(clk_base + 0x4); volatile uint32_t* ccr0 = (volatile uint32_t*)(clk_base + 0x200); volatile uint32_t* ccr2 = (volatile uint32_t*)(clk_base + 0x208); diff --git a/fpga/sw/apps/spiload/spiloader.h b/fpga/sw/apps/spiload/spiloader.h index fbbb3999..44d2f05d 100644 --- a/fpga/sw/apps/spiload/spiloader.h +++ b/fpga/sw/apps/spiload/spiloader.h @@ -34,7 +34,8 @@ struct cmd_arguments_t { unsigned int timeout; }; -void* console_thread(void* ptr); +void console_thread_start(); void console_thread_stop(); +void cmd_parsing(int argc, char* argv[], struct cmd_arguments_t* arguments); #endif From 9924ef9f5aa8d2e1535d2ab76e3e458c8f4da5ab Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Wed, 13 Nov 2019 13:08:28 +0100 Subject: [PATCH 31/54] spiload: add support to reset target CPU (only) via CLI --- fpga/sw/apps/spiload/arg_parsing.c | 7 +++ fpga/sw/apps/spiload/main.c | 77 ++++++++++++++++++------------ fpga/sw/apps/spiload/spiloader.h | 2 + 3 files changed, 55 insertions(+), 31 deletions(-) diff --git a/fpga/sw/apps/spiload/arg_parsing.c b/fpga/sw/apps/spiload/arg_parsing.c index 2c63b9c7..62b4eb25 100644 --- a/fpga/sw/apps/spiload/arg_parsing.c +++ b/fpga/sw/apps/spiload/arg_parsing.c @@ -14,6 +14,7 @@ /* The options we understand. */ static struct argp_option options[] = { + {"reset", 'r', NULL, OPTION_ARG_OPTIONAL, "Reset target CPU without uploading a program" }, {"timeout", 't', "0", OPTION_ARG_OPTIONAL, "Timeout in seconds. 0 means no timeout" }, { 0 } }; @@ -28,6 +29,11 @@ parse_opt (int key, char *arg, struct argp_state *state) switch (key) { + case 'r': + if(!arg || atoi(arg) != 0) + arguments->reset = 1; + break; + case 't': if(arg) arguments->timeout = atoi(arg); @@ -39,6 +45,7 @@ parse_opt (int key, char *arg, struct argp_state *state) case ARGP_KEY_INIT: // default values + arguments->reset = 0; arguments->timeout = 0; break; diff --git a/fpga/sw/apps/spiload/main.c b/fpga/sw/apps/spiload/main.c index 1f8f5c7c..24e42eb3 100644 --- a/fpga/sw/apps/spiload/main.c +++ b/fpga/sw/apps/spiload/main.c @@ -379,56 +379,71 @@ int spi_load(uint32_t addr, char* in_buf, size_t in_size) { return retval; } -int main(int argc, char **argv) -{ - int fd; - char* buffer; - unsigned int size; - struct cmd_arguments_t arguments; - - cmd_parsing(argc, argv, &arguments); - - clock_manager(); - - // open binary and get data - fd = open(arguments.stim, O_RDWR); +int read_file(const char *path, char **bufp, size_t *sizep) { + int fd = open(path, O_RDWR); if (fd <= 0) { - perror("File could not be opened\n"); + fprintf(stderr, "Could not open \"%s\": %s\n", path, strerror(errno)); return 1; } - size = lseek(fd, 0, SEEK_END); - if (size == -1) { - perror("Could not determine file size\n"); + *sizep = lseek(fd, 0, SEEK_END); + if (*sizep == -1) { + fprintf(stderr, "Could not determine size of \"%s\": %s\n", path, strerror(errno)); return 1; } - buffer = (char*)malloc(size); - if(buffer == NULL) { - printf("Could not allocate memory for file buffer\n"); + *bufp = malloc(*sizep); + if(*bufp == NULL) { + fprintf(stderr, "Could not allocate memory to buffer \"%s\".\n", path); + return 1; } if (lseek(fd, 0, SEEK_SET) == -1) { - perror("Could not jump to start of file\n"); + fprintf(stderr, "Could not jump to start of file \"%s\": %s\n", path, strerror(errno)); return 1; } - if (read(fd, buffer, size) != size) { + if (read(fd, *bufp, *sizep) != *sizep) { + fprintf(stderr, "Could not read from file \"%s\": %s\n", path, strerror(errno)); close(fd); - perror("Read Error"); - return -1; + return 1; } - // reset device - pulp_ctrl(0, 1); - pulp_ctrl(0, 0); + return 0; +} - printf("Device has been reset\n"); +int main(int argc, char **argv) +{ + struct cmd_arguments_t arguments; - process_file(buffer, size); + cmd_parsing(argc, argv, &arguments); - free(buffer); - close(fd); + if (clock_manager() != 0) { + fprintf(stderr, "Could not configure clock.\n"); + return 1; + } + + // reset target + if (pulp_ctrl(0, 1) || pulp_ctrl(0, 0)) { + fprintf(stderr, "Could not reset target.\n"); + return 1; + } + + printf("Device has been reset\n"); + + if (!arguments.reset) { + char* buffer; + size_t size; + if (read_file(arguments.stim, &buffer, &size) != 0) { + fprintf(stderr, "Could not read in stim file.\n"); + return 1; + } + if (process_file(buffer, size) != 0) { + fprintf(stderr, "Could not process stim file.\n"); + return 1; + } + free(buffer); + } // Start device and wait for timeout (if any) set_boot_addr(0x00000000); diff --git a/fpga/sw/apps/spiload/spiloader.h b/fpga/sw/apps/spiload/spiloader.h index 44d2f05d..54c95af4 100644 --- a/fpga/sw/apps/spiload/spiloader.h +++ b/fpga/sw/apps/spiload/spiloader.h @@ -11,6 +11,7 @@ #ifndef SPILOADER_H #define SPILOADER_H +#include #include static inline struct timespec timespec_sub(struct timespec lhs, struct timespec rhs) { @@ -32,6 +33,7 @@ static inline struct timespec timespec_sub(struct timespec lhs, struct timespec struct cmd_arguments_t { char* stim; unsigned int timeout; + bool reset; }; void console_thread_start(); From 1b992bac75c45cc50eb8b93c81fe4b5a22555766 Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Wed, 13 Nov 2019 13:08:28 +0100 Subject: [PATCH 32/54] spiload: improve error handling and messages --- fpga/sw/apps/spiload/main.c | 42 +++++++++++++++++++++---------------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/fpga/sw/apps/spiload/main.c b/fpga/sw/apps/spiload/main.c index 24e42eb3..9a85b30c 100644 --- a/fpga/sw/apps/spiload/main.c +++ b/fpga/sw/apps/spiload/main.c @@ -142,7 +142,7 @@ int wait_eoc(unsigned int timeout) { } if (spec_diff.tv_sec >= timeout) { - printf ("Timeout reached!\n"); + fprintf(stderr, "Timeout reached!\n"); break; } } @@ -170,7 +170,7 @@ int spi_read_reg(unsigned int addr) { // open spidev fd = open(SPIDEV, O_RDWR); if (fd <= 0) { - perror("Device not found\n"); + perror(SPIDEV " not found"); retval = -1; goto fail; @@ -198,7 +198,7 @@ int spi_read_reg(unsigned int addr) { case 2: wr_buf[0] = 0x21; break; // read reg2 case 3: wr_buf[0] = 0x30; break; // read reg3 default: - printf("Not a valid address for reading a register\n"); + fprintf(stderr, "Not a valid address for reading a register\n"); goto fail; } @@ -241,7 +241,7 @@ int set_boot_addr(uint32_t boot_addr) { // open spidev fd = open(SPIDEV, O_RDWR); if (fd <= 0) { - perror("Device not found\n"); + perror(SPIDEV " not found"); retval = -1; goto fail; @@ -249,7 +249,7 @@ int set_boot_addr(uint32_t boot_addr) { // write to spidev if (write(fd, wr_buf, 9) != 9) { - perror("Write Error"); + perror("Could not write to " SPIDEV); retval = -1; goto fail; @@ -281,7 +281,7 @@ int spi_load(uint32_t addr, char* in_buf, size_t in_size) { wr_buf = (char*)malloc(transfer_len); if (wr_buf == NULL) { - printf("Unable to acquire write buffer\n"); + fprintf(stderr, "Unable to acquire write buffer\n"); retval = -1; goto fail; @@ -301,7 +301,7 @@ int spi_load(uint32_t addr, char* in_buf, size_t in_size) { // open spidev fd = open(SPIDEV, O_RDWR); if (fd <= 0) { - perror("Device not found\n"); + perror(SPIDEV " not found"); retval = -1; goto fail; @@ -309,7 +309,7 @@ int spi_load(uint32_t addr, char* in_buf, size_t in_size) { // write to spidev if (write(fd, wr_buf, size + 5) != (size + 5)) { - perror("Write Error"); + perror("Could not write to " SPIDEV); retval = -1; goto fail; @@ -319,7 +319,7 @@ int spi_load(uint32_t addr, char* in_buf, size_t in_size) { // prepare for readback rd_buf = (char*)malloc(transfer_len); if (rd_buf == NULL) { - printf("Unable to acquire buffer to check if write was successful\n"); + fprintf(stderr, "Unable to acquire buffer to check if write was successful\n"); retval = -1; goto fail; @@ -362,7 +362,7 @@ int spi_load(uint32_t addr, char* in_buf, size_t in_size) { for(i = 0; i < in_size; i++) { if (in_buf[i] != rd_buf[i + 9]) { - printf("Read check failed at idx %d: Expected %02X, got %02X\n", i, in_buf[i], rd_buf[i + 9]); + fprintf(stderr, "Read check failed at idx %d: Expected %02X, got %02X\n", i, in_buf[i], rd_buf[i + 9]); } } @@ -429,7 +429,7 @@ int main(int argc, char **argv) return 1; } - printf("Device has been reset\n"); + printf("Target is in reset\n"); if (!arguments.reset) { char* buffer; @@ -445,16 +445,22 @@ int main(int argc, char **argv) free(buffer); } - // Start device and wait for timeout (if any) - set_boot_addr(0x00000000); + // Start target and wait for timeout (if any) + if (set_boot_addr(0x00000000) != 0) { + fprintf(stderr, "Could not set PC.\n"); + return 1; + } if (arguments.timeout > 0) { console_thread_start(); sleep(1); } - printf("Starting device\n"); - pulp_ctrl(1, 0); + printf("Starting target\n"); + if (pulp_ctrl(1, 0) != 0) { + fprintf(stderr, "Could not (re)start target.\n"); + return 1; + } if (arguments.timeout > 0) { printf("Waiting for EOC...\n"); @@ -499,7 +505,7 @@ int process_file(char* buffer, size_t size) { i++; if (i == 18) { - printf("Failed to parse, couldn't find line\n"); + fprintf(stderr, "Failed to parse, couldn't find line\n"); return -1; } } @@ -513,13 +519,13 @@ int process_file(char* buffer, size_t size) { entries++; if (entries == NUM_ENTRIES) { - printf("Too many entries in file\n"); + fprintf(stderr, "Too many entries in file\n"); return -1; } } if (entries == 0) { - printf("No entries found\n"); + fprintf(stderr, "No entries found\n"); return -1; } From c55077a837b1ce2ab44b9736a93d722909ea5049 Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Wed, 13 Nov 2019 13:08:28 +0100 Subject: [PATCH 33/54] spiload: unify /dev/mem mapping - Combine common code to map the ctrl, gpio and clock regions - Map the respective regions only once per execution - Let program termination clean up the mappings and file descriptors to reduce complexity --- fpga/sw/apps/spiload/main.c | 141 ++++++++++-------------------------- 1 file changed, 39 insertions(+), 102 deletions(-) diff --git a/fpga/sw/apps/spiload/main.c b/fpga/sw/apps/spiload/main.c index 9a85b30c..b8e3a718 100644 --- a/fpga/sw/apps/spiload/main.c +++ b/fpga/sw/apps/spiload/main.c @@ -38,39 +38,43 @@ int clock_manager(); int process_file(char* buffer, size_t size); -int pulp_ctrl(int fetch_en, int reset) { - char* ctrl_map = MAP_FAILED; - char* gpio_base; - int mem_fd; - int retval = 0; - - if ((mem_fd = open("/dev/mem", O_RDWR|O_SYNC) ) < 0) { - printf("can't open /dev/mem \n"); - - retval = -1; - goto fail; +char *map_device(char *base, uint32_t axi_addr) { + // Map device only once + if (base != NULL) + return base; + + static int mem_fd = -1; + if (mem_fd < 0) { + if ((mem_fd = open("/dev/mem", O_RDWR|O_SYNC) ) < 0) { + perror("Can't open /dev/mem"); + return NULL; + } } - ctrl_map = (char*)mmap( + char* map = (char*)mmap( NULL, MAP_SIZE, PROT_READ|PROT_WRITE, MAP_SHARED, mem_fd, - PULP_CTRL_AXI_ADDR & ~MAP_MASK - ); - + axi_addr & ~MAP_MASK + ); + if (map == MAP_FAILED) { + perror("mmap error"); + return NULL; + } - if (ctrl_map == MAP_FAILED) { - perror("mmap error\n"); + return map + (axi_addr & MAP_MASK); +} - retval = -1; - goto fail; - } +int pulp_ctrl(int fetch_en, int reset) { + static char* ctrl_base = NULL; + ctrl_base = map_device(ctrl_base, PULP_CTRL_AXI_ADDR); + if (ctrl_base == NULL) + return -1; - gpio_base = ctrl_map + (PULP_CTRL_AXI_ADDR & MAP_MASK); - volatile uint32_t* gpio = (volatile uint32_t*)(gpio_base + 0x0); - volatile uint32_t* dir = (volatile uint32_t*)(gpio_base + 0x4); + volatile uint32_t* gpio = (volatile uint32_t*)(ctrl_base + 0x0); + volatile uint32_t* dir = (volatile uint32_t*)(ctrl_base + 0x4); // now we can actually write to the peripheral uint32_t val = 0x0; @@ -83,47 +87,17 @@ int pulp_ctrl(int fetch_en, int reset) { *dir = 0x0; // configure as output *gpio = val; -fail: - close(mem_fd); - - if(ctrl_map != MAP_FAILED) - munmap(ctrl_map, MAP_SIZE); - - return retval; + return 0; } int wait_eoc(unsigned int timeout) { - char* ctrl_map = MAP_FAILED; - char* gpio_base; - int mem_fd; - int retval = 0; - struct timespec spec_start, spec_end, spec_diff; - - if ((mem_fd = open("/dev/mem", O_RDWR|O_SYNC) ) < 0) { - printf("can't open /dev/mem \n"); - - retval = -1; - goto fail; - } - - ctrl_map = (char*)mmap( - NULL, - MAP_SIZE, - PROT_READ|PROT_WRITE, - MAP_SHARED, - mem_fd, - PULP_GPIO_AXI_ADDR & ~MAP_MASK - ); - - - if (ctrl_map == MAP_FAILED) { - perror("mmap error\n"); + static char* gpio_base = NULL; + gpio_base = map_device(gpio_base, PULP_GPIO_AXI_ADDR); + if (gpio_base == NULL) + return -1; - retval = -1; - goto fail; - } + struct timespec spec_start, spec_end, spec_diff; - gpio_base = ctrl_map + (PULP_GPIO_AXI_ADDR & MAP_MASK); volatile uint32_t* gpio = (volatile uint32_t*)(gpio_base + 0x0); volatile uint32_t* dir = (volatile uint32_t*)(gpio_base + 0x4); @@ -149,13 +123,7 @@ int wait_eoc(unsigned int timeout) { printf("Stopped after %ld.%ld\n", (long)spec_diff.tv_sec, spec_diff.tv_nsec); -fail: - close(mem_fd); - - if(ctrl_map != MAP_FAILED) - munmap(ctrl_map, MAP_SIZE); - - return retval; + return 0; } int spi_read_reg(unsigned int addr) { @@ -544,36 +512,11 @@ int process_file(char* buffer, size_t size) { } int clock_manager() { - char* clk_map = MAP_FAILED; - char* clk_base; - int mem_fd; - int retval = 0; - - if ((mem_fd = open("/dev/mem", O_RDWR|O_SYNC) ) < 0) { - printf("can't open /dev/mem \n"); - - retval = -1; - goto fail; - } - - clk_map = (char*)mmap( - NULL, - MAP_SIZE, - PROT_READ|PROT_WRITE, - MAP_SHARED, - mem_fd, - CLKING_AXI_ADDR & ~MAP_MASK - ); - - - if (clk_map == MAP_FAILED) { - perror("mmap error\n"); - - retval = -1; - goto fail; - } + static char* clk_base = NULL; + clk_base = map_device(clk_base, CLKING_AXI_ADDR); + if (clk_base == NULL) + return -1; - clk_base = clk_map + (CLKING_AXI_ADDR & MAP_MASK); // volatile uint32_t* sr = (volatile uint32_t*)(clk_base + 0x4); volatile uint32_t* ccr0 = (volatile uint32_t*)(clk_base + 0x200); volatile uint32_t* ccr2 = (volatile uint32_t*)(clk_base + 0x208); @@ -586,11 +529,5 @@ int clock_manager() { *ccr0 = 0x04004005; *ccr2 = 0x00040080; -fail: - close(mem_fd); - - if(clk_map != MAP_FAILED) - munmap(clk_map, MAP_SIZE); - - return retval; + return 0; } From 18a525e54f806dbcc85e3eb3e8d276102a0c00ab Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Tue, 19 Nov 2019 13:52:21 +0100 Subject: [PATCH 34/54] spiload: make implicit conversions of shifted values explicit This avoids some compiler warnings in cases where the compiler detects value changes due to the coercion. --- fpga/sw/apps/spiload/main.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/fpga/sw/apps/spiload/main.c b/fpga/sw/apps/spiload/main.c index b8e3a718..f86ab2a5 100644 --- a/fpga/sw/apps/spiload/main.c +++ b/fpga/sw/apps/spiload/main.c @@ -196,15 +196,15 @@ int set_boot_addr(uint32_t boot_addr) { const uint32_t reg_addr = 0x1A107008; wr_buf[0] = 0x02; // write command - wr_buf[1] = reg_addr >> 24; - wr_buf[2] = reg_addr >> 16; - wr_buf[3] = reg_addr >> 8; - wr_buf[4] = reg_addr; + wr_buf[1] = (reg_addr >> 24) & 0xFF; + wr_buf[2] = (reg_addr >> 16) & 0xFF; + wr_buf[3] = (reg_addr >> 8) & 0xFF; + wr_buf[4] = (reg_addr >> 0) & 0xFF; // address - wr_buf[5] = boot_addr >> 24; - wr_buf[6] = boot_addr >> 16; - wr_buf[7] = boot_addr >> 8; - wr_buf[8] = boot_addr; + wr_buf[5] = (boot_addr >> 24) & 0xFF; + wr_buf[6] = (boot_addr >> 16) & 0xFF; + wr_buf[7] = (boot_addr >> 8) & 0xFF; + wr_buf[8] = (boot_addr >> 0) & 0xFF; // open spidev fd = open(SPIDEV, O_RDWR); @@ -259,10 +259,10 @@ int spi_load(uint32_t addr, char* in_buf, size_t in_size) { wr_buf[0] = 0x02; // write command // address - wr_buf[1] = addr >> 24; - wr_buf[2] = addr >> 16; - wr_buf[3] = addr >> 8; - wr_buf[4] = addr; + wr_buf[1] = (addr >> 24) & 0xFF; + wr_buf[2] = (addr >> 16) & 0xFF; + wr_buf[3] = (addr >> 8) & 0xFF; + wr_buf[4] = (addr >> 0) & 0xFF; memcpy(wr_buf + 5, in_buf, in_size); @@ -311,10 +311,10 @@ int spi_load(uint32_t addr, char* in_buf, size_t in_size) { wr_buf[0] = 0x0B; // read command // address - wr_buf[1] = addr >> 24; - wr_buf[2] = addr >> 16; - wr_buf[3] = addr >> 8; - wr_buf[4] = addr; + wr_buf[1] = (addr >> 24) & 0xFF; + wr_buf[2] = (addr >> 16) & 0xFF; + wr_buf[3] = (addr >> 8) & 0xFF; + wr_buf[4] = (addr >> 0) & 0xFF; // check if write was successful if (ioctl(fd, SPI_IOC_MESSAGE(1), &transfer) < 0) { From a9f9ecb69a8185f1d9fbe6b897c3c26a14dae76c Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Sun, 17 Nov 2019 23:10:31 +0100 Subject: [PATCH 35/54] spiload: fix error handling in spi_load() Depending on the failing function call spi_load() would try to close random file pointers and its return value wouldn't be checked anyway. Also, the null-checks before free() are useless. --- fpga/sw/apps/spiload/main.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/fpga/sw/apps/spiload/main.c b/fpga/sw/apps/spiload/main.c index f86ab2a5..a96129cf 100644 --- a/fpga/sw/apps/spiload/main.c +++ b/fpga/sw/apps/spiload/main.c @@ -231,9 +231,9 @@ int set_boot_addr(uint32_t boot_addr) { } int spi_load(uint32_t addr, char* in_buf, size_t in_size) { - int fd; - char* wr_buf; - char* rd_buf; + int fd = -1; + char* wr_buf = NULL; + char* rd_buf = NULL; unsigned int i; size_t size; size_t transfer_len; @@ -335,14 +335,12 @@ int spi_load(uint32_t addr, char* in_buf, size_t in_size) { } fail: - // close spidev - close(fd); - - if (wr_buf != NULL) - free(wr_buf); + // close spidev if opened + if (fd > 0) + close(fd); - if (rd_buf != NULL) - free(rd_buf); + free(wr_buf); + free(rd_buf); return retval; } @@ -503,7 +501,10 @@ int process_file(char* buffer, size_t size) { if(addr[i] != (addr[i-1] + 0x4) || (i - start_idx) == 255 || i == (entries - 1)) { // send block printf("Sending block addr %08X with %d entries\n", addr[start_idx], i - start_idx + 1); - spi_load(addr[start_idx], (char*)&data[start_idx], (i - start_idx + 1) * 4); + if (spi_load(addr[start_idx], (char*)&data[start_idx], (i - start_idx + 1) * 4) != 0) { + fprintf(stderr, "Sending block failed!\n"); + return -1; + } start_idx = i; } } From 619da70bf8da2b7fb30d95ffa504229deb9ab11c Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Wed, 13 Nov 2019 13:08:28 +0100 Subject: [PATCH 36/54] Refine sw/ to work with newer compilers that do not define __risc__ --- sw/apps/boot_code/boot_code.c | 4 ++-- sw/apps/sequential_tests/bitDescriptor/bitDescriptor.c | 4 ++-- sw/libs/bench_lib/src/bench.c | 4 ++-- sw/libs/sys_lib/inc/cpu_hal.h | 2 +- sw/libs/sys_lib/inc/int.h | 6 +++--- sw/libs/sys_lib/inc/utils.h | 4 ++-- sw/libs/sys_lib/src/utils.c | 2 +- 7 files changed, 13 insertions(+), 13 deletions(-) diff --git a/sw/apps/boot_code/boot_code.c b/sw/apps/boot_code/boot_code.c index 08ec1cbb..2c933153 100755 --- a/sw/apps/boot_code/boot_code.c +++ b/sw/apps/boot_code/boot_code.c @@ -33,7 +33,7 @@ int main() for (int i = 0; i < 3000; i++) { //wait some time to have proper power up of external flash - #ifdef __riscv__ + #if defined(__riscv__) || defined(__riscv) asm volatile ("nop"); #else asm volatile ("l.nop"); @@ -188,7 +188,7 @@ void load_block(unsigned int addr, unsigned int len, int* dest) { void jump_and_start(volatile int *ptr) { -#ifdef __riscv__ +#if defined(__riscv__) || defined(__riscv) asm("jalr x0, %0\n" "nop\n" "nop\n" diff --git a/sw/apps/sequential_tests/bitDescriptor/bitDescriptor.c b/sw/apps/sequential_tests/bitDescriptor/bitDescriptor.c index f2a5967b..39aba491 100644 --- a/sw/apps/sequential_tests/bitDescriptor/bitDescriptor.c +++ b/sw/apps/sequential_tests/bitDescriptor/bitDescriptor.c @@ -49,7 +49,7 @@ void Process_Descriptor(unsigned int *Descr, int Size, void action(int index)) } } -#ifndef __riscv__ +#if !defined(__riscv__) && !defined(__riscv) void Process_Descriptor_Bis(unsigned int *Descr, int Size, void action(int index)) { @@ -104,7 +104,7 @@ void Process(testresult_t *result, char *Mess, unsigned int *Descr, int Descr_Si printf("Regular: %s -> %d actions triggered\n", Mess, Count); Count_Regular = Count; -#ifndef __riscv__ +#if !defined(__riscv__) && !defined(__riscv) Count = 0; reset_timer(); start_timer(); diff --git a/sw/libs/bench_lib/src/bench.c b/sw/libs/bench_lib/src/bench.c index e9675e75..030b5925 100644 --- a/sw/libs/bench_lib/src/bench.c +++ b/sw/libs/bench_lib/src/bench.c @@ -100,7 +100,7 @@ void check_uint32(testresult_t* result, const char* fail_msg, uint32_t actual, u } void perf_print_all(void) { -#ifdef __riscv__ +#if defined(__riscv__) || defined(__riscv) printf("Perf CYCLES: %d\n", cpu_perf_get(0)); printf("Perf INSN: %d\n", cpu_perf_get(1)); printf("Perf CINSN: %d\n", cpu_perf_get(10)); @@ -135,7 +135,7 @@ __attribute__((weak)) void illegal_insn_handler_c(void) { unsigned int exception_address, insn; -#ifdef __riscv__ +#if defined(__riscv__) || defined(__riscv) asm("csrr %0, 0x341" : "=r" (exception_address) : ); #else exception_address = mfspr(SPR_EPCR_BASE); diff --git a/sw/libs/sys_lib/inc/cpu_hal.h b/sw/libs/sys_lib/inc/cpu_hal.h index 62fb8d44..0b783ace 100644 --- a/sw/libs/sys_lib/inc/cpu_hal.h +++ b/sw/libs/sys_lib/inc/cpu_hal.h @@ -14,7 +14,7 @@ #include "spr-defs.h" #include -#ifdef __riscv__ +#if defined(__riscv__) || defined(__riscv) #define CSR_PCMR_ACTIVE 0x1 diff --git a/sw/libs/sys_lib/inc/int.h b/sw/libs/sys_lib/inc/int.h index 03f60346..c4502394 100644 --- a/sw/libs/sys_lib/inc/int.h +++ b/sw/libs/sys_lib/inc/int.h @@ -24,7 +24,7 @@ #ifndef _INT_H_ #define _INT_H_ -#ifndef __riscv__ +#if defined(__riscv__) || defined(__riscv) #include "spr-defs.h" #endif @@ -41,7 +41,7 @@ * interrupts are globally disable. */ static inline void int_disable(void) { -#ifdef __riscv__ +#if defined(__riscv__) || defined(__riscv) // read-modify-write int mstatus; asm volatile ("csrr %0, mstatus": "=r" (mstatus)); @@ -64,7 +64,7 @@ static inline void int_disable(void) { * interrupts are globally enabled. */ static inline void int_enable(void) { -#ifdef __riscv__ +#if defined(__riscv__) || defined(__riscv) // read-modify-write int mstatus; asm volatile ("csrr %0, mstatus": "=r" (mstatus)); diff --git a/sw/libs/sys_lib/inc/utils.h b/sw/libs/sys_lib/inc/utils.h index 4a992289..f20352a2 100644 --- a/sw/libs/sys_lib/inc/utils.h +++ b/sw/libs/sys_lib/inc/utils.h @@ -33,7 +33,7 @@ static inline int get_core_num() return 0; } -#ifdef __riscv__ +#if defined(__riscv__) || defined(__riscv) /** * @brief Write to CSR. * @param CSR register to write. @@ -67,7 +67,7 @@ static inline void sleep(void) { asm volatile ("nop;nop;wfi"); } -#else // not __riscv__ +#else // not __riscv* /* For writing into SPR. */ static inline void mtspr(unsigned long spr, unsigned long value) { diff --git a/sw/libs/sys_lib/src/utils.c b/sw/libs/sys_lib/src/utils.c index 2161b559..ef918919 100644 --- a/sw/libs/sys_lib/src/utils.c +++ b/sw/libs/sys_lib/src/utils.c @@ -44,7 +44,7 @@ void sleep_busy(volatile int iter) asm volatile ("nop"); } -#ifdef __riscv__ +#if defined(__riscv__) || defined(__riscv) /* Set the specified counter to the specified value */ void cpu_perf_set(unsigned int counterId, unsigned int value) { printf("cpu_perf_set: not implemented yet\n"); From a7276a4974794481a0acad98f498e69873ce0df4 Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Wed, 13 Nov 2019 13:08:28 +0100 Subject: [PATCH 37/54] sw: update CMAKE script for PULP and UCB compilers - support for the old RI5CY is (implicitly) dropped - derive -march and -mabi parameters from GCC_MARCH or set of other options - make GCC_MARCH easily overridable NB: This does not update /ci --- sw/CMakeLists.txt | 49 +++++++++++++++++++--------- sw/cmake_configure.microriscy.gcc.sh | 11 ++++--- sw/cmake_configure.riscv.gcc.sh | 11 ++++--- sw/cmake_configure.riscvfloat.gcc.sh | 11 ++++--- sw/cmake_configure.zeroriscy.gcc.sh | 11 ++++--- 5 files changed, 62 insertions(+), 31 deletions(-) diff --git a/sw/CMakeLists.txt b/sw/CMakeLists.txt index 85ede7cb..94174850 100644 --- a/sw/CMakeLists.txt +++ b/sw/CMakeLists.txt @@ -30,39 +30,58 @@ endif() # assign default architecture flags if not defined string(COMPARE EQUAL "${GCC_MARCH}" "" GCC_MARCH_NOT_SET) - +string(COMPARE EQUAL "${GCC_MABI}" "" GCC_MABI_NOT_SET) if(GCC_MARCH_NOT_SET) - message("\nUsing default architecture flags!!\n") + message("\nUsing default architecture flags.\n") - if(${USE_RISCY}) - if(${RISCY_RV32F}) - set(GCC_MARCH "IMFDXpulpv2") + if (${USE_ZERO_RISCY}) + if(${ZERO_RV32M}) + set(GCC_MARCH "rv32im") else() - set(GCC_MARCH "IMXpulpv2") + set(GCC_MARCH "rv32i") endif() else() - if(${ZERO_RV32M}) - set(GCC_MARCH "RV32IM") + if(${RISCY_RV32F}) + set(GCC_MARCH "IMFDXpulpv2") else() - set(GCC_MARCH "RV32I") + set(GCC_MARCH "IMXpulpv2") endif() endif() + + # Insert c into ARCH string to enable compressed instructions if RVC is set + if(${RVC}) + message("NOTE: Using compressed instructions") + string(REGEX MATCH "([^xX]+)([xX])?(.*)" dummy "${GCC_MARCH}") + set(GCC_MARCH "${CMAKE_MATCH_1}c${CMAKE_MATCH_2}${CMAKE_MATCH_3}") + endif() +else() + math(EXPR ignored_vars "${RISCY_RV32F} + ${ZERO_RV32M} + ${USE_ZERO_RISCY} + ${RVC}") + if(${ignored_vars} GREATER 0) + message(WARNING "Since GCC_MARCH is set (to ${GCC_MARCH}) any values of RISCY_RV32F, ZERO_RV32M, USE_ZERO_RISCY, RVC are ignored.") + endif() endif() +# Derive GCC_MABI from GCC_MARCH if need be +if(GCC_MABI_NOT_SET) + set(GCC_MABI "ilp32") + if(${GCC_MARCH} MATCHES "^[^xX]+[dD]") # Test for double + set(RISCY_RV32F 1) + set(GCC_MABI "${GCC_MABI}d") + elseif(${GCC_MARCH} MATCHES "^[^xX]+[fF]") # Test for float + set(RISCY_RV32F 1) + set(GCC_MABI "${GCC_MABI}f") + endif() +endif() message(STATUS "GCC_MARCH= ${GCC_MARCH}") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32 -march=${GCC_MARCH} -Wa,-march=${GCC_MARCH}") +message(STATUS "GCC_MABI= ${GCC_MABI}") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mabi=${GCC_MABI} -march=${GCC_MARCH}") set(CMAKE_OBJDUMP_FLAGS -Mmarch=${GCC_MARCH} -d) if(${GCC_MARCH} MATCHES "IMFDXpulpv2") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mhard-float") endif() -if(${RVC}) - message("NOTE: Using compressed instructions") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mrvc") -endif() - if(${ZERO_RV32E}) if (${USE_RISCY}) message(SEND_ERROR "RV32E can only be used with Zero-riscy") diff --git a/sw/cmake_configure.microriscy.gcc.sh b/sw/cmake_configure.microriscy.gcc.sh index 1e8562bd..f40500d2 100755 --- a/sw/cmake_configure.microriscy.gcc.sh +++ b/sw/cmake_configure.microriscy.gcc.sh @@ -10,8 +10,12 @@ RANLIB=`which riscv32-unknown-elf-ranlib` VSIM=`which vsim` -TARGET_C_FLAGS="-O3 -m32 -g" -#TARGET_C_FLAGS="-O2 -g -falign-functions=16 -funroll-all-loops" +TARGET_C_FLAGS="-O3 -g" + +# Setting GCC_MARCH below allows to explicitly set the ISA. +# This would override the flags below. +# If PULPextensions are used (e.g., IMXpulpv2), it is required to use the ETH GCC Compiler +# GCC_MARCH="rv32i" # if you want to have compressed instructions, set this to 1 RVC=0 @@ -27,8 +31,7 @@ ZERO_RV32M=0 # zeroriscy with only 16 registers ZERO_RV32E=1 -# riscy with PULPextensions, it is assumed you use the ETH GCC Compiler -GCC_MARCH="RV32I" + #compile arduino lib ARDUINO_LIB=1 diff --git a/sw/cmake_configure.riscv.gcc.sh b/sw/cmake_configure.riscv.gcc.sh index c47801c9..f8710ce6 100755 --- a/sw/cmake_configure.riscv.gcc.sh +++ b/sw/cmake_configure.riscv.gcc.sh @@ -10,8 +10,12 @@ RANLIB=`which riscv32-unknown-elf-ranlib` VSIM=`which vsim` -TARGET_C_FLAGS="-O3 -m32 -g" -#TARGET_C_FLAGS="-O2 -g -falign-functions=16 -funroll-all-loops" +TARGET_C_FLAGS="-O3 -g" + +# Setting GCC_MARCH below allows to explicitly set the ISA. +# This would override the flags below. +# If PULPextensions are used (e.g., IMXpulpv2), it is required to use the ETH GCC Compiler +# GCC_MARCH="IMXpulpv2" # if you want to have compressed instructions, set this to 1 RVC=0 @@ -27,8 +31,7 @@ ZERO_RV32M=0 # zeroriscy with only 16 registers ZERO_RV32E=0 -# riscy with PULPextensions, it is assumed you use the ETH GCC Compiler -GCC_MARCH="IMXpulpv2" + #compile arduino lib ARDUINO_LIB=1 diff --git a/sw/cmake_configure.riscvfloat.gcc.sh b/sw/cmake_configure.riscvfloat.gcc.sh index 928d20be..62450949 100755 --- a/sw/cmake_configure.riscvfloat.gcc.sh +++ b/sw/cmake_configure.riscvfloat.gcc.sh @@ -10,8 +10,12 @@ RANLIB=`which riscv32-unknown-elf-ranlib` VSIM=`which vsim` -TARGET_C_FLAGS="-O3 -m32 -g" -#TARGET_C_FLAGS="-O2 -g -falign-functions=16 -funroll-all-loops" +TARGET_C_FLAGS="-O3 -g" + +# Setting GCC_MARCH below allows to explicitly set the ISA. +# This would override the flags below. +# If PULPextensions are used (e.g., IMXpulpv2), it is required to use the ETH GCC Compiler +# GCC_MARCH="IMFDXpulpv2" # if you want to have compressed instructions, set this to 1 RVC=0 @@ -27,8 +31,7 @@ ZERO_RV32M=0 # zeroriscy with only 16 registers ZERO_RV32E=0 -# riscy with PULPextensions, it is assumed you use the ETH GCC Compiler -GCC_MARCH="IMFDXpulpv2" + #compile arduino lib ARDUINO_LIB=1 diff --git a/sw/cmake_configure.zeroriscy.gcc.sh b/sw/cmake_configure.zeroriscy.gcc.sh index 189cdd40..fd7abcd5 100755 --- a/sw/cmake_configure.zeroriscy.gcc.sh +++ b/sw/cmake_configure.zeroriscy.gcc.sh @@ -10,8 +10,12 @@ RANLIB=`which riscv32-unknown-elf-ranlib` VSIM=`which vsim` -TARGET_C_FLAGS="-O3 -m32 -g" -#TARGET_C_FLAGS="-O2 -g -falign-functions=16 -funroll-all-loops" +TARGET_C_FLAGS="-O3 -g" + +# Setting GCC_MARCH below allows to explicitly set the ISA. +# This would override the flags below. +# If PULPextensions are used (e.g., IMXpulpv2), it is required to use the ETH GCC Compiler +# GCC_MARCH="rv32im" # if you want to have compressed instructions, set this to 1 RVC=0 @@ -27,8 +31,7 @@ ZERO_RV32M=1 # zeroriscy with only 16 registers ZERO_RV32E=0 -# riscy with PULPextensions, it is assumed you use the ETH GCC Compiler -GCC_MARCH="RV32IM" + #compile arduino lib ARDUINO_LIB=1 From 4e3db57f92f420ff2c4cadc2380b93d41da1626b Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Wed, 13 Nov 2019 13:08:28 +0100 Subject: [PATCH 38/54] sw: libsupc++ is no longer required --- sw/ref/link.riscv.ld | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sw/ref/link.riscv.ld b/sw/ref/link.riscv.ld index 24f8fb00..044b5835 100644 --- a/sw/ref/link.riscv.ld +++ b/sw/ref/link.riscv.ld @@ -2,6 +2,6 @@ OUTPUT_ARCH(riscv) /* required to correctly link newlib */ -GROUP( -lc -lgloss -lgcc -lsupc++ ) +GROUP( -lc -lgloss -lgcc ) INCLUDE link.common.ld From fcb40c1c4db7332b155c655a67fdc9701605542f Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Wed, 13 Nov 2019 13:08:28 +0100 Subject: [PATCH 39/54] sw: make inclusion of bench lib configurable --- sw/CMakeLists.txt | 5 ++++- sw/apps/CMakeLists.txt | 19 ++++++++++++++++--- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/sw/CMakeLists.txt b/sw/CMakeLists.txt index 94174850..b4a1ec43 100644 --- a/sw/CMakeLists.txt +++ b/sw/CMakeLists.txt @@ -180,7 +180,10 @@ if(${ARDUINO_LIB}) add_subdirectory(libs/Arduino_lib) endif() -add_subdirectory(libs/bench_lib) +set(BENCH_LIB 1 CACHE STRING "Enable inclusion and linkage of the bench library") # default to on if not given +if(${BENCH_LIB}) + add_subdirectory(libs/bench_lib) +endif() set(BEEBS_LIB 0) diff --git a/sw/apps/CMakeLists.txt b/sw/apps/CMakeLists.txt index 59f8a110..db50a728 100644 --- a/sw/apps/CMakeLists.txt +++ b/sw/apps/CMakeLists.txt @@ -22,7 +22,6 @@ macro(add_application NAME SOURCE_FILES) ${CMAKE_SOURCE_DIR}/libs/malloc_lib/inc ${CMAKE_SOURCE_DIR}/libs/string_lib/inc ${CMAKE_SOURCE_DIR}/libs/sys_lib/inc - ${CMAKE_SOURCE_DIR}/libs/bench_lib/inc ) if(${ARDUINO_LIB}) @@ -38,6 +37,12 @@ macro(add_application NAME SOURCE_FILES) ) endif() + if(${BENCH_LIB}) + include_directories( + ${CMAKE_SOURCE_DIR}/libs/bench_lib/inc + ) + endif() + add_executable(${NAME}.elf $ ${SOURCE_FILES}) # set subdirectory for add_executable @@ -72,8 +77,14 @@ macro(add_application NAME SOURCE_FILES) set(ARDUINO_SEP "") endif() + if(${BENCH_LIB}) + set(BENCH_LIB_NAME "bench") + else() + set(BENCH_LIB_NAME "") + endif() + # link libraries - target_link_libraries(${NAME}.elf ${ARG_LIBS} ${ARDUINO_SEP} ${ARDUINO_CORE} ${BEEBS_LIB_NAME} bench ${MATH_FNS_LIB} string sys m) + target_link_libraries(${NAME}.elf ${ARG_LIBS} ${ARDUINO_SEP} ${ARDUINO_CORE} ${BEEBS_LIB_NAME} ${BENCH_LIB_NAME} ${MATH_FNS_LIB} string sys m) # this specifies the testbench to use for simulation if(ARG_TB) @@ -198,7 +209,9 @@ if(${ARDUINO_LIB}) add_subdirectory(Arduino_tests) endif() -add_subdirectory(bench) +if(${BENCH_LIB}) + add_subdirectory(bench) +endif() if(${BEEBS_LIB}) add_subdirectory(beebs) From f9fddd4d31d5444b9cb21c815291ff118055c4a0 Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Wed, 13 Nov 2019 13:08:28 +0100 Subject: [PATCH 40/54] datasheet: refine memory map This also fixes #272 and the like. --- doc/datasheet/content/memorymap.tex | 15 +++++++-------- doc/datasheet/datasheet.pdf | Bin 1304561 -> 1184486 bytes 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/doc/datasheet/content/memorymap.tex b/doc/datasheet/content/memorymap.tex index 040c93f7..10bb7c42 100644 --- a/doc/datasheet/content/memorymap.tex +++ b/doc/datasheet/content/memorymap.tex @@ -6,21 +6,19 @@ \chapter{Memory Map} \begin{figure}[H] \centering - %\includegraphics[width=0.8\textwidth]{./figures/memory_map} - + \resizebox{!}{0.7\textheight}{ \begin{bytefield}{24} \begin{rightwordgroup}{Instruction Memory} - \memsection{0x0000 0000}{0x0000 8000}{7}{32kB RAM} + \memsection{0x0000 0000}{}{7}{32kB RAM} \end{rightwordgroup}\\ - \memsection{}{}{2}{}\\ \begin{rightwordgroup}{Boot ROM (r/o)} - \memsection{0x0008 0000}{0x0008 0200}{3}{512B ROM} + \memsection{0x0000 8000}{}{3}{512B ROM} \end{rightwordgroup}\\ - \memsection{}{}{3}{} \\ + \memsection{0x0000 8200}{}{3}{} \\ \begin{rightwordgroup}{Data Memory} - \memsection{0x0010 0000}{0x0010 8000}{7}{32kB RAM} + \memsection{0x0010 0000}{}{7}{32kB RAM} \end{rightwordgroup}\\ - \memsection{}{}{3}{} \\ + \memsection{0x0010 8000}{}{3}{} \\ \begin{rightwordgroup}{Peripherals} \memsection{0x1A10 0000}{}{2}{UART} \\ \memsection{0x1A10 1000}{}{2}{GPIO} \\ @@ -34,6 +32,7 @@ \chapter{Memory Map} \end{rightwordgroup} \\ \end{bytefield} + } \caption{\pulpino memory map.} \label{fig:pulpino_memory_map} diff --git a/doc/datasheet/datasheet.pdf b/doc/datasheet/datasheet.pdf index 7d7b35634bb90f9ebc2dfc060082d700fceca677..30be24b602713fc3a721899ce802ffd466619c3f 100644 GIT binary patch delta 240131 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 delta 373395 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�aYlLfP= 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

&qw+g`)#pEQy3 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 From f014c277b9839f254eef4796b3b7bd3c2cf37697 Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Wed, 13 Nov 2019 13:08:28 +0100 Subject: [PATCH 41/54] datasheet: avoid conversion from EPS to PDF within LaTeX The respective files adv_dbg_unit-eps-converted-to.pdf and pulpino_block-eps-converted-to.pdf were not cleaned up either but the conversion is unnecessary since we create them externally in the makefile anyway. --- doc/datasheet/content/adv_dbg_unit.tex | 2 +- doc/datasheet/content/overview.tex | 2 +- doc/datasheet/figures_raw/memory_map.obj | 453 ----------------------- 3 files changed, 2 insertions(+), 455 deletions(-) delete mode 100644 doc/datasheet/figures_raw/memory_map.obj diff --git a/doc/datasheet/content/adv_dbg_unit.tex b/doc/datasheet/content/adv_dbg_unit.tex index 81d9ade6..2fd8894e 100644 --- a/doc/datasheet/content/adv_dbg_unit.tex +++ b/doc/datasheet/content/adv_dbg_unit.tex @@ -12,7 +12,7 @@ \chapter{Advanced Debug Unit} \begin{figure}[H] \centering - \includegraphics[width=0.5\textwidth]{./figures/adv_dbg_unit.eps} + \includegraphics[width=0.5\textwidth]{./figures/adv_dbg_unit} \caption{Advanced Debug Unit.} \label{fig:adv_dbg_unit} \end{figure} diff --git a/doc/datasheet/content/overview.tex b/doc/datasheet/content/overview.tex index 5748ba71..307b978d 100644 --- a/doc/datasheet/content/overview.tex +++ b/doc/datasheet/content/overview.tex @@ -15,7 +15,7 @@ \chapter{Overview} \begin{figure}[H] \centering - \includegraphics[width=0.9\textwidth]{./figures/pulpino_block.eps} + \includegraphics[width=0.9\textwidth]{./figures/pulpino_block} \caption{\pulpino Overview.} \label{fig:pulpino_overview} \end{figure} diff --git a/doc/datasheet/figures_raw/memory_map.obj b/doc/datasheet/figures_raw/memory_map.obj deleted file mode 100644 index f470acf7..00000000 --- a/doc/datasheet/figures_raw/memory_map.obj +++ /dev/null @@ -1,453 +0,0 @@ -%TGIF 4.2.5-QPL -state(0,37,100.000,0,0,0,8,1,0,2,2,0,0,0,0,1,1,'Helvetica-Bold',1,80640,0,0,0,10,0,0,1,1,0,16,0,0,1,1,1,1,1088,1408,1,0,2880,0). -% -% @(#)$Header$ -% %W% -% -unit("1 pixel/pixel"). -color_info(100,65535,0,[ - "black", 0, 0, 0, 0, 0, 0, 1, - "white", 65535, 65535, 65535, 65535, 65535, 65535, 1, - "#F7F7F7", 63479, 63479, 63479, 63232, 63232, 63232, 1, - "#CCCCCC", 52428, 52428, 52428, 52224, 52224, 52224, 1, - "#969696", 38550, 38550, 38550, 38400, 38400, 38400, 1, - "#525252", 21074, 21074, 21074, 20992, 20992, 20992, 1, - "#EDF8FB", 60909, 63736, 64507, 60672, 63488, 64256, 1, - "#B2E2E2", 45746, 58082, 58082, 45568, 57856, 57856, 1, - "#66C2A4", 26214, 49858, 42148, 26112, 49664, 41984, 1, - "#238B45", 8995, 35723, 17733, 8960, 35584, 17664, 1, - "#FF8080", 65535, 32896, 32896, 65280, 32768, 32768, 1, - "#FFCC5C", 65535, 52428, 23644, 65280, 52224, 23552, 1, - "#FFFFB2", 65535, 65535, 45746, 65280, 65280, 45568, 1, - "#B2FFB2", 45746, 65535, 45746, 45568, 65280, 45568, 1, - "#B2FFFF", 45746, 65535, 65535, 45568, 65280, 65280, 1, - "#80C0FF", 32896, 49344, 65535, 32768, 49152, 65280, 1, - "#8080FF", 32896, 32896, 65535, 32768, 32768, 65280, 1, - "#C080FF", 49344, 32896, 65535, 49152, 32768, 65280, 1, - "#FFB8FF", 65535, 47288, 65535, 65280, 47104, 65280, 1, - "#FF80C0", 65535, 32896, 49344, 65280, 32768, 49152, 1, - "#FF0000", 65535, 0, 0, 65280, 0, 0, 1, - "#FF8000", 65535, 32896, 0, 65280, 32768, 0, 1, - "#FFFF00", 65535, 65535, 0, 65280, 65280, 0, 1, - "#00FF00", 0, 65535, 0, 0, 65280, 0, 1, - "#00FFFF", 0, 65535, 65535, 0, 65280, 65280, 1, - "#0080FF", 0, 32896, 65535, 0, 32768, 65280, 1, - "#0000FF", 0, 0, 65535, 0, 0, 65280, 1, - "#8000FF", 32896, 0, 65535, 32768, 0, 65280, 1, - "#FF00FF", 65535, 0, 65535, 65280, 0, 65280, 1, - "#FF0080", 65535, 0, 32896, 65280, 0, 32768, 1, - "#C00000", 49344, 0, 0, 49152, 0, 0, 1, - "#C06000", 49344, 24672, 0, 49152, 24576, 0, 1, - "#C0C000", 49344, 49344, 0, 49152, 49152, 0, 1, - "#00C000", 0, 49344, 0, 0, 49152, 0, 1, - "#00C0C0", 0, 49344, 49344, 0, 49152, 49152, 1, - "#0060C0", 0, 24672, 49344, 0, 24576, 49152, 1, - "#0000C0", 0, 0, 49344, 0, 0, 49152, 1, - "#6000C0", 24672, 0, 49344, 24576, 0, 49152, 1, - "#C000C0", 49344, 0, 49344, 49152, 0, 49152, 1, - "#C00060", 49344, 0, 24672, 49152, 0, 24576, 1, - "#800000", 32896, 0, 0, 32768, 0, 0, 1, - "#804000", 32896, 16448, 0, 32768, 16384, 0, 1, - "#808000", 32896, 32896, 0, 32768, 32768, 0, 1, - "#008000", 0, 32896, 0, 0, 32768, 0, 1, - "#008080", 0, 32896, 32896, 0, 32768, 32768, 1, - "#004080", 0, 16448, 32896, 0, 16384, 32768, 1, - "#000080", 0, 0, 32896, 0, 0, 32768, 1, - "#400080", 16448, 0, 32896, 16384, 0, 32768, 1, - "#400080", 16448, 0, 32896, 16384, 0, 32768, 1, - "#800040", 32896, 0, 16448, 32768, 0, 16384, 1, - "#F0F0F0", 61680, 61680, 61680, 61440, 61440, 61440, 1, - "#C8C8C8", 51400, 51400, 51400, 51200, 51200, 51200, 1, - "#505050", 20560, 20560, 20560, 20480, 20480, 20480, 1, - "#282828", 10280, 10280, 10280, 10240, 10240, 10240, 1, - "#009000", 0, 37008, 0, 0, 36864, 0, 1, - "#1F407A", 7967, 16448, 31354, 7936, 16384, 31232, 1, - "#3C5A0F", 15420, 23130, 3855, 15360, 23040, 3840, 1, - "#0069B4", 0, 26985, 46260, 0, 26880, 46080, 1, - "#71791C", 29041, 31097, 7196, 28928, 30976, 7168, 1, - "#91056A", 37265, 1285, 27242, 37120, 1280, 27136, 1, - "#6F6F6E", 28527, 28527, 28270, 28416, 28416, 28160, 1, - "#A8322D", 43176, 12850, 11565, 43008, 12800, 11520, 1, - "#007A92", 0, 31354, 37522, 0, 31232, 37376, 1, - "#956013", 38293, 24672, 4883, 38144, 24576, 4864, 1, - "#82BE1E", 33410, 48830, 7710, 33280, 48640, 7680, 1, - "#758fbd", 30069, 36751, 48573, 29952, 36608, 48384, 1, - "#8eab63", 36494, 43947, 25443, 36352, 43776, 25344, 1, - "#6cacd9", 27756, 44204, 55769, 27648, 44032, 55552, 1, - "#b4ba72", 46260, 47802, 29298, 46080, 47616, 29184, 1, - "#c967ae", 51657, 26471, 44718, 51456, 26368, 44544, 1, - "#b8b8b6", 47288, 47288, 46774, 47104, 47104, 46592, 1, - "#d48985", 54484, 35209, 34181, 54272, 35072, 34048, 1, - "#65b9c9", 25957, 47545, 51657, 25856, 47360, 51456, 1, - "#c9a571", 51657, 42405, 29041, 51456, 42240, 28928, 1, - "#bbde81", 48059, 57054, 33153, 47872, 56832, 33024, 1, - "#a5b7d6", 42405, 47031, 54998, 42240, 46848, 54784, 1, - "#b8cc99", 47288, 52428, 39321, 47104, 52224, 39168, 1, - "#a2cbe8", 41634, 52171, 59624, 41472, 51968, 59392, 1, - "#d2d6a5", 53970, 54998, 42405, 53760, 54784, 42240, 1, - "#de9ecc", 57054, 40606, 52428, 56832, 40448, 52224, 1, - "#d4d4d2", 54484, 54484, 53970, 54272, 54272, 53760, 1, - "#e6b5b3", 59110, 46517, 46003, 58880, 46336, 45824, 1, - "#9bd3de", 39835, 54227, 57054, 39680, 54016, 56832, 1, - "#dec6a4", 57054, 50886, 42148, 56832, 50688, 41984, 1, - "#d5ebb0", 54741, 60395, 45232, 54528, 60160, 45056, 1, - "#b3cde3", 46003, 52685, 58339, 45824, 52480, 58112, 1, - "#bae4bc", 47802, 58596, 48316, 47616, 58368, 48128, 1, - "#ffffcc", 65535, 65535, 52428, 65280, 65280, 52224, 1, - "magenta", 65535, 0, 65535, 65535, 0, 65535, 1, - "#f0f9e8", 61680, 63993, 59624, 61440, 63744, 59392, 1, - "#feebe2", 65278, 60395, 58082, 65024, 60160, 57856, 1, - "cyan", 0, 65535, 65535, 0, 65535, 65535, 1, - "#fecc5c", 65278, 52428, 23644, 65024, 52224, 23552, 1, - "yellow", 65535, 65535, 0, 65535, 65535, 0, 1, - "red", 65535, 0, 0, 65535, 0, 0, 1, - "green", 0, 65535, 0, 0, 65535, 0, 1, - "blue", 0, 0, 65535, 0, 0, 65535, 1, - "pink", 65535, 49344, 52171, 65535, 49344, 52171, 1, - "CadetBlue", 24415, 40606, 41120, 24415, 40606, 41120, 1, - "DarkSlateGray", 12079, 20303, 20303, 12079, 20303, 20303, 1 -]). -script_frac("0.6"). -fg_bg_colors('black','white'). -dont_reencode("FFDingbests:ZapfDingbats"). -objshadow_info('#c0c0c0',2,2). -rotate_pivot(0,0,0,0). -spline_tightness(1). -page(1,"",1,''). -box('#C8C8C8','',128,320,288,384,1,1,0,21,0,0,0,0,0,'1',0,[ -]). -box('black','',128,128,288,704,0,1,1,0,0,0,0,0,0,'1',0,[ -]). -text('black',56,193,1,0,1,66,11,8,9,2,0,0,0,0,-65534,66,11,0,0,"",0,0,0,0,202,'',[ -minilines(66,11,0,0,0,0,0,[ -mini_line(66,9,2,0,0,0,[ -str_block(0,66,9,2,0,-1,0,0,0,[ -str_seg('black','Courier',0,57600,66,9,2,0,-1,0,0,0,0,0, - "0x0002_0000")]) -]) -])]). -text('black',152,88,2,0,1,103,30,13,12,3,0,0,0,0,-65534,103,30,0,0,"",0,0,0,0,100,'',[ -minilines(103,30,0,0,0,0,0,[ -mini_line(103,12,3,0,0,0,[ -str_block(0,103,12,3,0,-1,0,0,0,[ -str_seg('black','Helvetica-Bold',1,69120,103,12,3,0,-1,0,0,0,0,0, - "Physical Memory")]) -]), -mini_line(89,12,3,0,0,0,[ -str_block(0,89,12,3,0,-1,0,0,0,[ -str_seg('black','Helvetica-Bold',1,69120,89,12,3,0,-1,0,0,0,0,0, - "Address Space")]) -]) -])]). -text('black',56,123,1,0,1,66,11,24,9,2,0,0,0,0,-65534,66,11,0,0,"",0,0,0,0,132,'',[ -minilines(66,11,0,0,0,0,0,[ -mini_line(66,9,2,0,0,0,[ -str_block(0,66,9,2,0,-1,0,0,0,[ -str_seg('black','Courier',0,57600,66,9,2,0,-1,0,0,0,0,0, - "0x0000_0000")]) -]) -])]). -box('black','',128,320,288,384,0,1,1,27,0,0,0,0,0,'1',0,[ -]). -box('black','',384,128,544,704,0,1,1,45,0,0,0,0,0,'1',0,[ -]). -text('black',208,335,2,1,1,34,34,62,14,3,0,0,0,0,-65534,34,34,0,0,"",0,0,0,0,349,'',[ -minilines(34,34,0,0,1,0,0,[ -mini_line(32,14,3,0,0,0,[ -str_block(0,32,14,3,0,0,0,0,0,[ -str_seg('black','Helvetica-Bold',1,80640,32,14,3,0,0,0,0,0,0,0, - "Data")]) -]), -mini_line(34,14,3,0,0,0,[ -str_block(0,34,14,3,0,-1,0,0,0,[ -str_seg('black','Helvetica-Bold',1,80640,34,14,3,0,-1,0,0,0,0,0, - "RAM")]) -]) -])]). -box('#C8C8C8','',128,128,288,192,1,1,0,97,0,0,0,0,0,'1',0,[ -]). -box('black','',128,128,288,192,0,1,1,98,0,0,0,0,0,'1',0,[ -]). -text('black',208,143,2,1,1,76,34,99,14,3,0,0,0,0,-65534,76,34,0,0,"",0,0,0,0,157,'',[ -minilines(76,34,0,0,1,0,0,[ -mini_line(76,14,3,0,0,0,[ -str_block(0,76,14,3,0,-1,0,0,0,[ -str_seg('black','Helvetica-Bold',1,80640,76,14,3,0,-1,0,0,0,0,0, - "Instruction")]) -]), -mini_line(34,14,3,0,0,0,[ -str_block(0,34,14,3,0,-1,0,0,0,[ -str_seg('black','Helvetica-Bold',1,80640,34,14,3,0,-1,0,0,0,0,0, - "RAM")]) -]) -])]). -text('black',56,181,1,0,1,66,11,102,9,2,0,0,0,0,-65534,66,11,0,0,"",0,0,0,0,190,'',[ -minilines(66,11,0,0,0,0,0,[ -mini_line(66,9,2,0,0,0,[ -str_block(0,66,9,2,0,-1,0,0,0,[ -str_seg('black','Courier',0,57600,66,9,2,0,-1,0,0,0,0,0, - "0x0001_FFFF")]) -]) -])]). -box('#C8C8C8','',384,128,544,192,1,1,0,110,0,0,0,0,0,'1',0,[ -]). -box('black','',384,128,544,192,0,1,1,111,0,0,0,0,0,'1',0,[ -]). -text('black',464,152,1,1,1,84,17,112,14,3,0,0,0,0,-65534,84,17,0,0,"",0,0,0,0,166,'',[ -minilines(84,17,0,0,1,0,0,[ -mini_line(84,14,3,0,0,0,[ -str_block(0,84,14,3,0,-1,0,0,0,[ -str_seg('black','Helvetica-Bold',1,80640,84,14,3,0,-1,0,0,0,0,0, - "Instructions")]) -]) -])]). -poly('black','',2,[ - 288,128,384,128],0,1,1,119,0,0,0,0,0,0,0,'1',0,0, - "0","",[ - 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ -]). -poly('black','',2,[ - 288,192,384,192],0,1,1,120,0,0,0,0,0,0,0,'1',0,0, - "0","",[ - 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ -]). -box('#C8C8C8','',128,192,288,224,1,1,0,178,0,0,0,0,0,'1',0,[ -]). -box('black','',128,192,288,224,0,1,1,179,0,0,0,0,0,'1',0,[ -]). -text('black',208,200,1,1,1,36,17,180,14,3,0,0,0,0,-65534,36,17,0,0,"",0,0,0,0,214,'',[ -minilines(36,17,0,0,1,0,0,[ -mini_line(36,14,3,0,0,0,[ -str_block(0,36,14,3,0,-1,0,0,0,[ -str_seg('black','Helvetica-Bold',1,80640,36,14,3,0,-1,0,0,0,0,0, - "ROM")]) -]) -])]). -box('#C8C8C8','',128,568,288,600,1,1,0,189,0,0,0,0,0,'1',0,[ -]). -box('black','',128,568,288,600,0,1,1,190,0,0,0,0,0,'1',0,[ -]). -text('black',208,576,1,1,1,114,17,191,14,3,0,0,0,0,-65534,114,17,0,0,"",0,0,0,0,590,'',[ -minilines(114,17,0,0,1,0,0,[ -mini_line(114,14,3,0,0,0,[ -str_block(0,114,14,3,0,-1,0,0,0,[ -str_seg('black','Helvetica-Bold',1,80640,114,14,3,0,-1,0,0,0,0,0, - "APB Peripherals")]) -]) -])]). -text('black',56,563,1,0,1,66,11,194,9,2,0,0,0,0,-65534,66,11,0,0,"",0,0,0,0,572,'',[ -minilines(66,11,0,0,0,0,0,[ -mini_line(66,9,2,0,0,0,[ -str_block(0,66,9,2,0,-1,0,0,0,[ -str_seg('black','Courier',0,57600,66,9,2,0,-1,0,0,0,0,0, - "0x1A10_0000")]) -]) -])]). -text('black',560,551,1,0,1,66,11,262,9,2,0,0,0,0,-65534,66,11,0,0,"",0,0,0,0,560,'',[ -minilines(66,11,0,0,0,0,0,[ -mini_line(66,9,2,0,0,0,[ -str_block(0,66,9,2,0,-1,0,0,0,[ -str_seg('black','Courier',0,57600,66,9,2,0,-1,0,0,0,0,0, - "0x1A10_0000")]) -]) -])]). -box('#C8C8C8','',384,552,544,576,1,1,0,263,0,0,0,0,0,'1',0,[ -]). -box('black','',384,552,544,576,0,1,1,264,0,0,0,0,0,'1',0,[ -]). -text('black',464,556,1,1,1,40,17,265,14,3,0,0,0,0,-65534,40,17,0,0,"",0,0,0,0,570,'',[ -minilines(40,17,0,0,1,0,0,[ -mini_line(40,14,3,0,0,0,[ -str_block(0,40,14,3,0,0,0,0,0,[ -str_seg('black','Helvetica-Bold',1,80640,40,14,3,0,0,0,0,0,0,0, - "UART")]) -]) -])]). -text('black',560,575,1,0,1,66,11,266,9,2,0,0,0,0,-65534,66,11,0,0,"",0,0,0,0,584,'',[ -minilines(66,11,0,0,0,0,0,[ -mini_line(66,9,2,0,0,0,[ -str_block(0,66,9,2,0,-1,0,0,0,[ -str_seg('black','Courier',0,57600,66,9,2,0,-1,0,0,0,0,0, - "0x1A10_1000")]) -]) -])]). -box('#C8C8C8','',384,576,544,600,1,1,0,267,0,0,0,0,0,'1',0,[ -]). -box('black','',384,576,544,600,0,1,1,268,0,0,0,0,0,'1',0,[ -]). -text('black',464,580,1,1,1,37,17,269,14,3,0,0,0,0,-65534,37,17,0,0,"",0,0,0,0,594,'',[ -minilines(37,17,0,0,1,0,0,[ -mini_line(37,14,3,0,0,0,[ -str_block(0,37,14,3,0,-1,0,0,0,[ -str_seg('black','Helvetica-Bold',1,80640,37,14,3,0,-1,0,0,0,0,0, - "GPIO")]) -]) -])]). -text('black',560,599,1,0,1,66,11,280,9,2,0,0,0,0,-65534,66,11,0,0,"",0,0,0,0,608,'',[ -minilines(66,11,0,0,0,0,0,[ -mini_line(66,9,2,0,0,0,[ -str_block(0,66,9,2,0,-1,0,0,0,[ -str_seg('black','Courier',0,57600,66,9,2,0,-1,0,0,0,0,0, - "0x1A10_2000")]) -]) -])]). -box('#C8C8C8','',384,600,544,624,1,1,0,281,0,0,0,0,0,'1',0,[ -]). -box('black','',384,600,544,624,0,1,1,282,0,0,0,0,0,'1',0,[ -]). -text('black',464,604,1,1,1,24,17,283,14,3,0,0,0,0,-65534,24,17,0,0,"",0,0,0,0,618,'',[ -minilines(24,17,0,0,1,0,0,[ -mini_line(24,14,3,0,0,0,[ -str_block(0,24,14,3,0,-1,0,0,0,[ -str_seg('black','Helvetica-Bold',1,80640,24,14,3,0,-1,0,0,0,0,0, - "SPI")]) -]) -])]). -text('black',560,623,1,0,1,66,11,295,9,2,0,0,0,0,-65534,66,11,0,0,"",0,0,0,0,632,'',[ -minilines(66,11,0,0,0,0,0,[ -mini_line(66,9,2,0,0,0,[ -str_block(0,66,9,2,0,-1,0,0,0,[ -str_seg('black','Courier',0,57600,66,9,2,0,-1,0,0,0,0,0, - "0x1A10_3000")]) -]) -])]). -box('#C8C8C8','',384,624,544,648,1,1,0,296,0,0,0,0,0,'1',0,[ -]). -box('black','',384,624,544,648,0,1,1,297,0,0,0,0,0,'1',0,[ -]). -text('black',464,628,1,1,1,38,17,298,14,3,0,0,0,0,-65534,38,17,0,0,"",0,0,0,0,642,'',[ -minilines(38,17,0,0,1,0,0,[ -mini_line(38,14,3,0,0,0,[ -str_block(0,38,14,3,0,0,0,0,0,[ -str_seg('black','Helvetica-Bold',1,80640,38,14,3,0,0,0,0,0,0,0, - "Timer")]) -]) -])]). -poly('black','',2,[ - 288,568,384,552],0,1,1,327,0,0,0,0,0,0,0,'1',0,0, - "0","",[ - 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ -]). -poly('black','',2,[ - 384,576,288,576],0,1,1,328,0,0,0,0,0,0,0,'1',0,0, - "0","",[ - 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ -]). -poly('black','',2,[ - 384,600,288,584],0,1,1,329,0,0,0,0,0,0,0,'1',0,0, - "0","",[ - 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ -]). -poly('black','',2,[ - 384,624,288,592],0,1,1,330,0,0,0,0,0,0,0,'1',0,0, - "0","",[ - 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ -]). -poly('black','',2,[ - 384,648,288,600],0,1,1,331,0,0,0,0,0,0,0,'1',0,0, - "0","",[ - 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ -]). -text('black',552,123,1,0,1,66,11,376,9,2,0,0,0,0,-65534,66,11,0,0,"",0,0,0,0,132,'',[ -minilines(66,11,0,0,0,0,0,[ -mini_line(66,9,2,0,0,0,[ -str_block(0,66,9,2,0,-1,0,0,0,[ -str_seg('black','Courier',0,57600,66,9,2,0,-1,0,0,0,0,0, - "0x0000_0000")]) -]) -])]). -box('#C8C8C8','',384,192,544,224,1,1,0,382,0,0,0,0,0,'1',0,[ -]). -box('black','',384,192,544,224,0,1,1,383,0,0,0,0,0,'1',0,[ -]). -text('black',464,200,1,1,1,139,17,384,14,3,0,0,0,0,-65534,139,17,0,0,"",0,0,0,0,214,'',[ -minilines(139,17,0,0,1,0,0,[ -mini_line(139,14,3,0,0,0,[ -str_block(0,139,14,3,0,0,0,0,0,[ -str_seg('black','Helvetica-Bold',1,80640,139,14,3,0,0,0,0,0,0,0, - "RO Instr. + RO Data")]) -]) -])]). -poly('black','',2,[ - 288,224,384,224],0,1,1,386,0,0,0,0,0,0,0,'1',0,0, - "0","",[ - 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ -]). -text('black',552,193,1,0,1,66,11,392,9,2,0,0,0,0,-65534,66,11,0,0,"",0,0,0,0,202,'',[ -minilines(66,11,0,0,0,0,0,[ -mini_line(66,9,2,0,0,0,[ -str_block(0,66,9,2,0,-1,0,0,0,[ -str_seg('black','Courier',0,57600,66,9,2,0,-1,0,0,0,0,0, - "0x0002_0000")]) -]) -])]). -text('black',552,181,1,0,1,66,11,393,9,2,0,0,0,0,-65534,66,11,0,0,"",0,0,0,0,190,'',[ -minilines(66,11,0,0,0,0,0,[ -mini_line(66,9,2,0,0,0,[ -str_block(0,66,9,2,0,-1,0,0,0,[ -str_seg('black','Courier',0,57600,66,9,2,0,-1,0,0,0,0,0, - "0x0001_FFFF")]) -]) -])]). -text('black',552,213,1,0,1,66,11,396,9,2,0,0,0,0,-65534,66,11,0,0,"",0,0,0,0,222,'',[ -minilines(66,11,0,0,0,0,0,[ -mini_line(66,9,2,0,0,0,[ -str_block(0,66,9,2,0,-1,0,0,0,[ -str_seg('black','Courier',0,57600,66,9,2,0,-1,0,0,0,0,0, - "0x0002_????")]) -]) -])]). -text('black',56,373,1,0,1,66,11,402,9,2,0,0,0,0,-65534,66,11,0,0,"",0,0,0,0,382,'',[ -minilines(66,11,0,0,0,0,0,[ -mini_line(66,9,2,0,0,0,[ -str_block(0,66,9,2,0,-1,0,0,0,[ -str_seg('black','Courier',0,57600,66,9,2,0,-1,0,0,0,0,0, - "0x0011_FFFF")]) -]) -])]). -text('black',56,321,1,0,1,66,11,405,9,2,0,0,0,0,-65534,66,11,0,0,"",0,0,0,0,330,'',[ -minilines(66,11,0,0,0,0,0,[ -mini_line(66,9,2,0,0,0,[ -str_block(0,66,9,2,0,-1,0,0,0,[ -str_seg('black','Courier',0,57600,66,9,2,0,-1,0,0,0,0,0, - "0x0010_0000")]) -]) -])]). -box('#C8C8C8','',384,320,544,384,1,1,0,435,0,0,0,0,0,'1',0,[ -]). -box('black','',384,320,544,384,0,1,1,436,0,0,0,0,0,'1',0,[ -]). -text('black',464,344,1,1,1,88,17,437,14,3,0,0,0,0,-65534,88,17,0,0,"",0,0,0,0,358,'',[ -minilines(88,17,0,0,1,0,0,[ -mini_line(88,14,3,0,0,0,[ -str_block(0,88,14,3,0,-1,0,0,0,[ -str_seg('black','Helvetica-Bold',1,80640,88,14,3,0,-1,0,0,0,0,0, - "Data + Stack")]) -]) -])]). -poly('black','',2,[ - 288,320,384,320],0,1,1,438,0,0,0,0,0,0,0,'1',0,0, - "0","",[ - 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ -]). -poly('black','',2,[ - 288,384,384,384],0,1,1,439,0,0,0,0,0,0,0,'1',0,0, - "0","",[ - 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ -]). -text('black',552,315,1,0,1,66,11,440,9,2,0,0,0,0,-65534,66,11,0,0,"",0,0,0,0,324,'',[ -minilines(66,11,0,0,0,0,0,[ -mini_line(66,9,2,0,0,0,[ -str_block(0,66,9,2,0,-1,0,0,0,[ -str_seg('black','Courier',0,57600,66,9,2,0,-1,0,0,0,0,0, - "0x0010_0000")]) -]) -])]). -text('black',552,373,1,0,1,66,11,441,9,2,0,0,0,0,-65534,66,11,0,0,"",0,0,0,0,382,'',[ -minilines(66,11,0,0,0,0,0,[ -mini_line(66,9,2,0,0,0,[ -str_block(0,66,9,2,0,-1,0,0,0,[ -str_seg('black','Courier',0,57600,66,9,2,0,-1,0,0,0,0,0, - "0x0011_FFFF")]) -]) -])]). From 3d3518392107979a5f61fdd0347938573d189aad Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Wed, 13 Nov 2019 13:08:28 +0100 Subject: [PATCH 42/54] datasheet: make the makefile less dumb - Add .PHONY target. - Fix prerequisite of of pdf target to include figures. - Avoid re-calling make for no reason - call pdflatex twice instead. - Make all the default target. --- doc/datasheet/Makefile | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/doc/datasheet/Makefile b/doc/datasheet/Makefile index 5c2109b6..b9997ed3 100644 --- a/doc/datasheet/Makefile +++ b/doc/datasheet/Makefile @@ -26,15 +26,12 @@ TGIF_OUTP_PDF_NAMES = $(addsuffix .pdf, $(TGIF_OUTP_NAMES)) ##### Main Targets # ##### # ###################################################################### -do: pdf - -all: figures pdf - make -B pdf - make -B pdf +all: $(MAIN_SRC).pdf pdf: $(MAIN_SRC).pdf -%.pdf: %.tex $(CONTENT_SRC) preamble/preamble.tex +%.pdf: %.tex $(CONTENT_SRC) preamble/preamble.tex figures + pdflatex $(MAIN_SRC).tex pdflatex $(MAIN_SRC).tex clean: clean-figures @@ -95,3 +92,5 @@ clean-tgif-figures: -@rm -f $(TGIF_OUTP_EPS_NAMES) $(TGIF_OUTP_PDF_NAMES) clean-figures: clean-tgif-figures + +.PHONY: all pdf clean figures tgif_figures clean-tgif-figures clean-figures From b04aa76304814c36c027c3c0de0467513fb2f9e7 Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Wed, 13 Nov 2019 13:08:28 +0100 Subject: [PATCH 43/54] Work around Vivado issue regarding OBUFs Vivado changed behavior in some version between 2015.2 and 2018.3 regarding the automatic removal of unneeded IBUFS/ OBUFs when dealing with netlists. This led to failing syntheses of pulpemu with errors like: ERROR: [DRC REQP-127] obuf_loaded: OBUF pulpino_wrap_i/gpio_out_OBUF[16]_inst pin O drives one or more invalid loads. The loads are: ps7_wrapper_i/ps7_i/axi_gpio_emu/U0/gpio_core_1/Not_Dual.INPUT_DOUBLE_REGS3/GENERATE_LEVEL_P_S_CDC.MULTI_BIT.FOR_IN_cdc_to[16].CROSS2_PLEVEL_IN2SCNDRY_IN_cdc_to ERROR: [DRC REQP-127] obuf_loaded: OBUF pulpino_wrap_i/gpio_out_OBUF[17]_inst pin O drives one or more invalid loads. The loads are: ps7_wrapper_i/ps7_i/axi_gpio_emu/U0/gpio_core_1/Not_Dual.INPUT_DOUBLE_REGS3/GENERATE_LEVEL_P_S_CDC.MULTI_BIT.FOR_IN_cdc_to[17].CROSS2_PLEVEL_IN2SCNDRY_IN_cdc_to ERROR: [DRC REQP-127] obuf_loaded: OBUF pulpino_wrap_i/tdo_o_OBUF_inst pin O drives one or more invalid loads. The loads are: ps7_wrapper_i/ps7_i/axi_jtag_emu/U0/gpio_core_1/Not_Dual.INPUT_DOUBLE_REGS3/GENERATE_LEVEL_P_S_CDC.MULTI_BIT.FOR_IN_cdc_to[4].CROSS2_PLEVEL_IN2SCNDRY_IN_cdc_to This change adds another register around the affected signals, which apparently calms down Vivado for the synthesis to succeed. --- fpga/rtl/pulpemu_top.v | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/fpga/rtl/pulpemu_top.v b/fpga/rtl/pulpemu_top.v index 159f4b4b..215cfbc2 100644 --- a/fpga/rtl/pulpemu_top.v +++ b/fpga/rtl/pulpemu_top.v @@ -208,19 +208,37 @@ module pulpemu_top( assign td_i = ext_tdi_i; assign tms_i = ext_tms_i; - assign ext_tdo_o = td_o; - + // Workaround Vivado issue, see #270 + reg ext_tdo_o_q; + always @(posedge s_clk_pulpino or negedge s_rstn_pulpino) + begin + if (~s_rstn_pulpino) + ext_tdo_o_q <= 1'b0; + else + ext_tdo_o_q <= td_o; + end + assign ext_tdo_o = ext_tdo_o_q; // GPIO signals + reg oled_dc_o_q; + reg oled_res_o_q; + always @(posedge s_clk_pulpino or negedge s_rstn_pulpino) begin - if (~s_rstn_pulpino) + if (~s_rstn_pulpino) begin LD_q <= 8'b0; - else + oled_dc_o_q <= 1'b0; + oled_res_o_q <= 1'b0; + end else begin LD_q <= gpio_out[15:8]; + oled_dc_o_q <= gpio_out[16]; + oled_res_o_q <= gpio_out[17]; + end end assign LD_o = LD_q; + assign oled_dc_o = oled_dc_o_q; + assign oled_res_o = oled_res_o_q; assign gpio_in[7:0] = sw_i; assign gpio_in[15:8] = 8'b0; @@ -237,9 +255,6 @@ module pulpemu_top( assign oled_vbat_o = 1'b1; assign oled_vdd_o = 1'b1; - assign oled_dc_o = gpio_out[16]; - assign oled_res_o = gpio_out[17]; - // Zynq Processing System ps7_wrapper ps7_wrapper_i ( .DDR_addr ( DDR_addr ), From 5a7d178a07641c318a33c2b68ad9866f5357357f Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Wed, 13 Nov 2019 13:08:28 +0100 Subject: [PATCH 44/54] fpga/sw: enable early debug output in Linux --- fpga/sw/kernel.config | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/fpga/sw/kernel.config b/fpga/sw/kernel.config index 09678ad1..b4f52c28 100644 --- a/fpga/sw/kernel.config +++ b/fpga/sw/kernel.config @@ -3581,12 +3581,23 @@ CONFIG_HAVE_ARCH_KGDB=y # CONFIG_STRICT_DEVMEM is not set CONFIG_ARM_UNWIND=y # CONFIG_DEBUG_USER is not set -# CONFIG_DEBUG_LL is not set -CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S" +CONFIG_DEBUG_LL=y +# CONFIG_DEBUG_ZYNQ_UART0 is not set +CONFIG_DEBUG_ZYNQ_UART1=y +# CONFIG_DEBUG_VEXPRESS_UART0_DETECT is not set +# CONFIG_DEBUG_VEXPRESS_UART0_CA9 is not set +# CONFIG_DEBUG_VEXPRESS_UART0_RS1 is not set +# CONFIG_DEBUG_ICEDCC is not set +# CONFIG_DEBUG_SEMIHOSTING is not set +# CONFIG_DEBUG_LL_UART_8250 is not set +# CONFIG_DEBUG_LL_UART_PL01X is not set +CONFIG_DEBUG_LL_INCLUDE="debug/zynq.S" # CONFIG_DEBUG_UART_PL01X is not set # CONFIG_DEBUG_UART_8250 is not set # CONFIG_DEBUG_UART_BCM63XX is not set +CONFIG_DEBUG_UNCOMPRESS=y CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h" +CONFIG_EARLY_PRINTK=y # CONFIG_OC_ETM is not set # CONFIG_PID_IN_CONTEXTIDR is not set # CONFIG_DEBUG_SET_MODULE_RONX is not set From 9013da1056525bbb00ec3dc14eb2b5c5d1bd7989 Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Wed, 13 Nov 2019 13:08:28 +0100 Subject: [PATCH 45/54] fpga/sw: set a proper (i.e., locally-administered) MAC address --- fpga/sw/device-tree/zedboard/zynq-7000.dtsi | 3 +-- fpga/sw/u-boot-xlnx-def-env.patch | 17 ++++------------- 2 files changed, 5 insertions(+), 15 deletions(-) diff --git a/fpga/sw/device-tree/zedboard/zynq-7000.dtsi b/fpga/sw/device-tree/zedboard/zynq-7000.dtsi index 53c41eda..efa59c0c 100644 --- a/fpga/sw/device-tree/zedboard/zynq-7000.dtsi +++ b/fpga/sw/device-tree/zedboard/zynq-7000.dtsi @@ -246,8 +246,8 @@ interrupts = <0 22 4>; clocks = <&clkc 13>, <&clkc 30>; clock-names = "ref_clk", "aper_clk"; - local-mac-address = [00 0a 35 00 00 00]; xlnx,has-mdio = <0x1>; + local-mac-address = [0E BE 06 33 5F C6]; #address-cells = <1>; #size-cells = <0>; }; @@ -259,7 +259,6 @@ interrupts = <0 45 4>; clocks = <&clkc 14>, <&clkc 31>; clock-names = "ref_clk", "aper_clk"; - local-mac-address = [00 0a 35 00 00 00]; xlnx,has-mdio = <0x1>; #address-cells = <1>; #size-cells = <0>; diff --git a/fpga/sw/u-boot-xlnx-def-env.patch b/fpga/sw/u-boot-xlnx-def-env.patch index 2652545f..878a07cc 100644 --- a/fpga/sw/u-boot-xlnx-def-env.patch +++ b/fpga/sw/u-boot-xlnx-def-env.patch @@ -1,16 +1,16 @@ -diff --git a/include/configs/zynq-common.h b/include/configs/zynq-common.h -index 6c37909..2ac5005 100644 +diff a/include/configs/zynq-common.h b/include/configs/zynq-common.h --- a/include/configs/zynq-common.h +++ b/include/configs/zynq-common.h -@@ -240,7 +240,6 @@ +@@ -240,7 +240,7 @@ /* Default environment */ #define CONFIG_EXTRA_ENV_SETTINGS \ - "ethaddr=00:0a:35:00:01:22\0" \ ++ "ethaddr=0e:be:06:33:5f:c6\0" \ "kernel_image=uImage\0" \ "kernel_load_address=0x2080000\0" \ "ramdisk_image=uramdisk.image.gz\0" \ -@@ -292,8 +291,7 @@ +@@ -292,8 +292,7 @@ "echo Copying Linux from SD to RAM... && " \ "load mmc 0 ${kernel_load_address} ${kernel_image} && " \ "load mmc 0 ${devicetree_load_address} ${devicetree_image} && " \ @@ -20,12 +20,3 @@ index 6c37909..2ac5005 100644 "fi\0" \ "usbboot=if usb start; then " \ "run uenvboot; " \ -@@ -338,8 +336,6 @@ - DFU_ALT_INFO - - /* Default environment */ --#define CONFIG_IPADDR 10.10.70.102 --#define CONFIG_SERVERIP 10.10.70.101 - - /* default boot is according to the bootmode switch settings */ - #if defined(CONFIG_CMD_ZYNQ_RSA) From c260c01dafe2312efa7447f07518ffd6242b5999 Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Wed, 13 Nov 2019 13:08:28 +0100 Subject: [PATCH 46/54] fpga/sw: move configuration and patch files into subdir --- fpga/sw/Makefile | 18 +++++++++--------- fpga/sw/{ => config}/buildroot.config | 0 fpga/sw/{ => config}/busybox.config | 0 fpga/sw/{ => config}/kernel.config | 0 fpga/sw/{ => config}/u-boot-xlnx-def-env.patch | 0 fpga/sw/{ => config}/u-boot.config.zedboard | 0 fpga/sw/{ => config}/u-boot.config.zybo | 0 7 files changed, 9 insertions(+), 9 deletions(-) rename fpga/sw/{ => config}/buildroot.config (100%) rename fpga/sw/{ => config}/busybox.config (100%) rename fpga/sw/{ => config}/kernel.config (100%) rename fpga/sw/{ => config}/u-boot-xlnx-def-env.patch (100%) rename fpga/sw/{ => config}/u-boot.config.zedboard (100%) rename fpga/sw/{ => config}/u-boot.config.zybo (100%) diff --git a/fpga/sw/Makefile b/fpga/sw/Makefile index 0dfeb7ae..1cda967e 100644 --- a/fpga/sw/Makefile +++ b/fpga/sw/Makefile @@ -32,9 +32,9 @@ spiload: apps/spiload/spiload linux-xlnx: git clone git://github.com/Xilinx/linux-xlnx.git -linux-xlnx/.config: kernel.config | linux-xlnx +linux-xlnx/.config: config/kernel.config | linux-xlnx cd linux-xlnx && git checkout -f tags/xilinx-v2015.1 - cp ./kernel.config ./linux-xlnx/.config + cp ./config/kernel.config ./linux-xlnx/.config linux-xlnx/arch/arm/boot/uImage: linux-xlnx/.config cd linux-xlnx && $(MAKE) ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- UIMAGE_LOADADDR=0x8000 uImage PATH=$(shell pwd)/u-boot-xlnx/tools/:${PATH} -j${NCORES} @@ -53,19 +53,19 @@ linux: sd_image/uImage u-boot-xlnx: git clone git://github.com/Xilinx/u-boot-xlnx.git -u-boot-xlnx/.config: $(filter-out $(wildcard u-boot*), u-boot-xlnx) | u-boot-xlnx +u-boot-xlnx/.config: $(wildcard config/u-boot*) | u-boot-xlnx ifeq ($(BOARD),zybo) cd u-boot-xlnx && \ git checkout -f 84f81e5b8950748fd7ca967ecf0428affef7ecea && \ - patch -p1 < ../u-boot-xlnx-def-env.patch && \ + patch -p1 < ../config/u-boot-xlnx-def-env.patch && \ $(MAKE) CROSS_COMPILE=arm-xilinx-linux-gnueabi- zynq_zybo_config else cd u-boot-xlnx && \ git checkout -f tags/xilinx-v2015.1 && \ - patch -p1 < ../u-boot-xlnx-def-env.patch && \ + patch -p1 < ../config/u-boot-xlnx-def-env.patch && \ $(MAKE) CROSS_COMPILE=arm-xilinx-linux-gnueabi- zynq_zed_config endif - cp ./u-boot.config.$(BOARD) ./u-boot-xlnx/.config + cp ./config/u-boot.config.$(BOARD) ./u-boot-xlnx/.config u-boot-xlnx/u-boot: u-boot-xlnx/.config cd u-boot-xlnx && $(MAKE) CROSS_COMPILE=arm-xilinx-linux-gnueabi- @@ -84,16 +84,16 @@ u-boot: sd_image/u-boot.elf buildroot: git clone git://git.buildroot.net/buildroot.git -buildroot/.config: | buildroot +buildroot/.config: config/buildroot.config | buildroot cd buildroot && git checkout -f tags/2015.05 sed \ -e 's#BR2_TOOLCHAIN_EXTERNAL_PATH="/to/be/defined/"#BR2_TOOLCHAIN_EXTERNAL_PATH="$(ARM_TOOLCHAIN_PATH)"#g' \ -e 's#BR2_ROOTFS_POST_BUILD_SCRIPT=""#BR2_ROOTFS_POST_BUILD_SCRIPT="../buildroot-post-build.sh"#g' \ - ./buildroot.config > ./buildroot/.config + ./config/buildroot.config > ./buildroot/.config buildroot/output/images/rootfs.tar: buildroot/.config buildroot-post-build.sh $(shell ./buildroot-post-build.sh DEPENDENCIES) cd buildroot && $(MAKE) ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- busybox-source - cp busybox.config buildroot/output/build/busybox-1.23.2/.config + cp config/busybox.config buildroot/output/build/busybox-1.23.2/.config cd buildroot && $(MAKE) ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- -j${NCORES} sd_image/rootfs.tar: buildroot/output/images/rootfs.tar | sd_image/ diff --git a/fpga/sw/buildroot.config b/fpga/sw/config/buildroot.config similarity index 100% rename from fpga/sw/buildroot.config rename to fpga/sw/config/buildroot.config diff --git a/fpga/sw/busybox.config b/fpga/sw/config/busybox.config similarity index 100% rename from fpga/sw/busybox.config rename to fpga/sw/config/busybox.config diff --git a/fpga/sw/kernel.config b/fpga/sw/config/kernel.config similarity index 100% rename from fpga/sw/kernel.config rename to fpga/sw/config/kernel.config diff --git a/fpga/sw/u-boot-xlnx-def-env.patch b/fpga/sw/config/u-boot-xlnx-def-env.patch similarity index 100% rename from fpga/sw/u-boot-xlnx-def-env.patch rename to fpga/sw/config/u-boot-xlnx-def-env.patch diff --git a/fpga/sw/u-boot.config.zedboard b/fpga/sw/config/u-boot.config.zedboard similarity index 100% rename from fpga/sw/u-boot.config.zedboard rename to fpga/sw/config/u-boot.config.zedboard diff --git a/fpga/sw/u-boot.config.zybo b/fpga/sw/config/u-boot.config.zybo similarity index 100% rename from fpga/sw/u-boot.config.zybo rename to fpga/sw/config/u-boot.config.zybo From 472d4c270ef739f2e052861a728ba366921271c5 Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Wed, 13 Nov 2019 13:08:28 +0100 Subject: [PATCH 47/54] fpga/sw: make toolchain (Vivado) version configurable --- fpga/sw/Makefile | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/fpga/sw/Makefile b/fpga/sw/Makefile index 1cda967e..3cb93e9a 100644 --- a/fpga/sw/Makefile +++ b/fpga/sw/Makefile @@ -2,11 +2,12 @@ PWD=$(CURDIR) NCORES=4 BOARD ?= zedboard +VIVADO_VERSION ?= 2015.1 + ARM_TOOLCHAIN_PATH := $(shell which arm-xilinx-linux-gnueabi-gcc) ARM_TOOLCHAIN_PATH := $(shell dirname $(ARM_TOOLCHAIN_PATH)) ARM_TOOLCHAIN_PATH := $(shell dirname $(ARM_TOOLCHAIN_PATH)) - all: u-boot linux rootfs devtree fsbl sd_image/BOOT.BIN # To make sure a destination directory exists simply include the @@ -33,8 +34,8 @@ linux-xlnx: git clone git://github.com/Xilinx/linux-xlnx.git linux-xlnx/.config: config/kernel.config | linux-xlnx - cd linux-xlnx && git checkout -f tags/xilinx-v2015.1 - cp ./config/kernel.config ./linux-xlnx/.config + cd linux-xlnx && git checkout -f tags/xilinx-v$(VIVADO_VERSION) + cp config/kernel.config ./linux-xlnx/.config linux-xlnx/arch/arm/boot/uImage: linux-xlnx/.config cd linux-xlnx && $(MAKE) ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- UIMAGE_LOADADDR=0x8000 uImage PATH=$(shell pwd)/u-boot-xlnx/tools/:${PATH} -j${NCORES} @@ -61,7 +62,7 @@ ifeq ($(BOARD),zybo) $(MAKE) CROSS_COMPILE=arm-xilinx-linux-gnueabi- zynq_zybo_config else cd u-boot-xlnx && \ - git checkout -f tags/xilinx-v2015.1 && \ + git checkout -f tags/xilinx-v$(VIVADO_VERSION) && \ patch -p1 < ../config/u-boot-xlnx-def-env.patch && \ $(MAKE) CROSS_COMPILE=arm-xilinx-linux-gnueabi- zynq_zed_config endif From 96d75a69bfb3acb86d43016f4ee4a8e4d459c4ed Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Wed, 13 Nov 2019 13:08:28 +0100 Subject: [PATCH 48/54] fpga/sw: make version of kernel, u-boot, busybox, buildroot and DT depend on toolchain --- fpga/sw/Makefile | 28 +++++++++++-------- ...ildroot.config => buildroot.config.2015.1} | 0 .../{busybox.config => busybox.config.2015.1} | 0 .../{kernel.config => kernel.config.2015.1} | 0 ...patch => u-boot-xlnx-def-env.patch.2015.1} | 0 ...zedboard => u-boot.config.zedboard.2015.1} | 0 ....config.zybo => u-boot.config.zybo.2015.1} | 0 .../device-tree/{ => 2015.1}/zedboard/pl.dtsi | 0 .../{ => 2015.1}/zedboard/skeleton.dtsi | 0 .../{ => 2015.1}/zedboard/system.dts | 0 .../{ => 2015.1}/zedboard/zynq-7000.dtsi | 0 fpga/sw/device-tree/2015.1/zybo/pl.dtsi | 1 + fpga/sw/device-tree/{ => 2015.1}/zybo/ps.dtsi | 0 .../device-tree/{ => 2015.1}/zybo/system.dts | 0 fpga/sw/device-tree/zybo/pl.dtsi | 1 - 15 files changed, 18 insertions(+), 12 deletions(-) rename fpga/sw/config/{buildroot.config => buildroot.config.2015.1} (100%) rename fpga/sw/config/{busybox.config => busybox.config.2015.1} (100%) rename fpga/sw/config/{kernel.config => kernel.config.2015.1} (100%) rename fpga/sw/config/{u-boot-xlnx-def-env.patch => u-boot-xlnx-def-env.patch.2015.1} (100%) rename fpga/sw/config/{u-boot.config.zedboard => u-boot.config.zedboard.2015.1} (100%) rename fpga/sw/config/{u-boot.config.zybo => u-boot.config.zybo.2015.1} (100%) rename fpga/sw/device-tree/{ => 2015.1}/zedboard/pl.dtsi (100%) rename fpga/sw/device-tree/{ => 2015.1}/zedboard/skeleton.dtsi (100%) rename fpga/sw/device-tree/{ => 2015.1}/zedboard/system.dts (100%) rename fpga/sw/device-tree/{ => 2015.1}/zedboard/zynq-7000.dtsi (100%) create mode 120000 fpga/sw/device-tree/2015.1/zybo/pl.dtsi rename fpga/sw/device-tree/{ => 2015.1}/zybo/ps.dtsi (100%) rename fpga/sw/device-tree/{ => 2015.1}/zybo/system.dts (100%) delete mode 120000 fpga/sw/device-tree/zybo/pl.dtsi diff --git a/fpga/sw/Makefile b/fpga/sw/Makefile index 3cb93e9a..e8fa4172 100644 --- a/fpga/sw/Makefile +++ b/fpga/sw/Makefile @@ -33,9 +33,9 @@ spiload: apps/spiload/spiload linux-xlnx: git clone git://github.com/Xilinx/linux-xlnx.git -linux-xlnx/.config: config/kernel.config | linux-xlnx +linux-xlnx/.config: config/kernel.config.$(VIVADO_VERSION) | linux-xlnx cd linux-xlnx && git checkout -f tags/xilinx-v$(VIVADO_VERSION) - cp config/kernel.config ./linux-xlnx/.config + cp config/kernel.config.$(VIVADO_VERSION) ./linux-xlnx/.config linux-xlnx/arch/arm/boot/uImage: linux-xlnx/.config cd linux-xlnx && $(MAKE) ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- UIMAGE_LOADADDR=0x8000 uImage PATH=$(shell pwd)/u-boot-xlnx/tools/:${PATH} -j${NCORES} @@ -58,15 +58,15 @@ u-boot-xlnx/.config: $(wildcard config/u-boot*) | u-boot-xlnx ifeq ($(BOARD),zybo) cd u-boot-xlnx && \ git checkout -f 84f81e5b8950748fd7ca967ecf0428affef7ecea && \ - patch -p1 < ../config/u-boot-xlnx-def-env.patch && \ + patch -p1 < ../config/u-boot-xlnx-def-env.patch.$(VIVADO_VERSION) && \ $(MAKE) CROSS_COMPILE=arm-xilinx-linux-gnueabi- zynq_zybo_config else cd u-boot-xlnx && \ git checkout -f tags/xilinx-v$(VIVADO_VERSION) && \ - patch -p1 < ../config/u-boot-xlnx-def-env.patch && \ + patch -p1 < ../config/u-boot-xlnx-def-env.patch.$(VIVADO_VERSION) && \ $(MAKE) CROSS_COMPILE=arm-xilinx-linux-gnueabi- zynq_zed_config endif - cp ./config/u-boot.config.$(BOARD) ./u-boot-xlnx/.config + cp config/u-boot.config.$(BOARD).$(VIVADO_VERSION) ./u-boot-xlnx/.config u-boot-xlnx/u-boot: u-boot-xlnx/.config cd u-boot-xlnx && $(MAKE) CROSS_COMPILE=arm-xilinx-linux-gnueabi- @@ -82,19 +82,25 @@ u-boot: sd_image/u-boot.elf # buildroot ################################################################################ +BUILDROOT_VERSION_2015.1 := 2015.05 +BUILDROOT_VERSION := $(BUILDROOT_VERSION_$(VIVADO_VERSION)) + +BUSYBOX_VERSION_2015.1 := 1.23.2 +BUSYBOX_VERSION := $(BUSYBOX_VERSION_$(VIVADO_VERSION)) + buildroot: git clone git://git.buildroot.net/buildroot.git -buildroot/.config: config/buildroot.config | buildroot - cd buildroot && git checkout -f tags/2015.05 +buildroot/.config: config/buildroot.config.$(VIVADO_VERSION) | buildroot + cd buildroot && git checkout -f tags/$(BUILDROOT_VERSION) sed \ -e 's#BR2_TOOLCHAIN_EXTERNAL_PATH="/to/be/defined/"#BR2_TOOLCHAIN_EXTERNAL_PATH="$(ARM_TOOLCHAIN_PATH)"#g' \ -e 's#BR2_ROOTFS_POST_BUILD_SCRIPT=""#BR2_ROOTFS_POST_BUILD_SCRIPT="../buildroot-post-build.sh"#g' \ - ./config/buildroot.config > ./buildroot/.config + ./config/buildroot.config.$(VIVADO_VERSION) > ./buildroot/.config buildroot/output/images/rootfs.tar: buildroot/.config buildroot-post-build.sh $(shell ./buildroot-post-build.sh DEPENDENCIES) cd buildroot && $(MAKE) ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- busybox-source - cp config/busybox.config buildroot/output/build/busybox-1.23.2/.config + cp config/busybox.config.$(VIVADO_VERSION) buildroot/output/build/busybox-$(BUSYBOX_VERSION)/.config cd buildroot && $(MAKE) ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- -j${NCORES} sd_image/rootfs.tar: buildroot/output/images/rootfs.tar | sd_image/ @@ -109,8 +115,8 @@ rootfs: sd_image/rootfs.tar ################################################################################ # uImage is used as an order-only prerequisite because the dtc binary used below is built that way. -sd_image/devicetree.dtb: $(wildcard device-tree/$(BOARD)/*.dts*) | linux-xlnx/arch/arm/boot/uImage - cd device-tree/$(BOARD) && ../linux-xlnx/scripts/dtc/dtc -I dts -O dtb -o $(PWD)/sd_image/devicetree.dtb system.dts +sd_image/devicetree.dtb: $(wildcard device-tree/$(VIVADO_VERSION)/$(BOARD)/*.dts*) | linux-xlnx/arch/arm/boot/uImage + cd device-tree/$(VIVADO_VERSION)/$(BOARD) && $(PWD)/linux-xlnx/scripts/dtc/dtc -I dts -O dtb -o $(PWD)/sd_image/devicetree.dtb system.dts .PHONY: devtree devtree: sd_image/devicetree.dtb diff --git a/fpga/sw/config/buildroot.config b/fpga/sw/config/buildroot.config.2015.1 similarity index 100% rename from fpga/sw/config/buildroot.config rename to fpga/sw/config/buildroot.config.2015.1 diff --git a/fpga/sw/config/busybox.config b/fpga/sw/config/busybox.config.2015.1 similarity index 100% rename from fpga/sw/config/busybox.config rename to fpga/sw/config/busybox.config.2015.1 diff --git a/fpga/sw/config/kernel.config b/fpga/sw/config/kernel.config.2015.1 similarity index 100% rename from fpga/sw/config/kernel.config rename to fpga/sw/config/kernel.config.2015.1 diff --git a/fpga/sw/config/u-boot-xlnx-def-env.patch b/fpga/sw/config/u-boot-xlnx-def-env.patch.2015.1 similarity index 100% rename from fpga/sw/config/u-boot-xlnx-def-env.patch rename to fpga/sw/config/u-boot-xlnx-def-env.patch.2015.1 diff --git a/fpga/sw/config/u-boot.config.zedboard b/fpga/sw/config/u-boot.config.zedboard.2015.1 similarity index 100% rename from fpga/sw/config/u-boot.config.zedboard rename to fpga/sw/config/u-boot.config.zedboard.2015.1 diff --git a/fpga/sw/config/u-boot.config.zybo b/fpga/sw/config/u-boot.config.zybo.2015.1 similarity index 100% rename from fpga/sw/config/u-boot.config.zybo rename to fpga/sw/config/u-boot.config.zybo.2015.1 diff --git a/fpga/sw/device-tree/zedboard/pl.dtsi b/fpga/sw/device-tree/2015.1/zedboard/pl.dtsi similarity index 100% rename from fpga/sw/device-tree/zedboard/pl.dtsi rename to fpga/sw/device-tree/2015.1/zedboard/pl.dtsi diff --git a/fpga/sw/device-tree/zedboard/skeleton.dtsi b/fpga/sw/device-tree/2015.1/zedboard/skeleton.dtsi similarity index 100% rename from fpga/sw/device-tree/zedboard/skeleton.dtsi rename to fpga/sw/device-tree/2015.1/zedboard/skeleton.dtsi diff --git a/fpga/sw/device-tree/zedboard/system.dts b/fpga/sw/device-tree/2015.1/zedboard/system.dts similarity index 100% rename from fpga/sw/device-tree/zedboard/system.dts rename to fpga/sw/device-tree/2015.1/zedboard/system.dts diff --git a/fpga/sw/device-tree/zedboard/zynq-7000.dtsi b/fpga/sw/device-tree/2015.1/zedboard/zynq-7000.dtsi similarity index 100% rename from fpga/sw/device-tree/zedboard/zynq-7000.dtsi rename to fpga/sw/device-tree/2015.1/zedboard/zynq-7000.dtsi diff --git a/fpga/sw/device-tree/2015.1/zybo/pl.dtsi b/fpga/sw/device-tree/2015.1/zybo/pl.dtsi new file mode 120000 index 00000000..491f3eaa --- /dev/null +++ b/fpga/sw/device-tree/2015.1/zybo/pl.dtsi @@ -0,0 +1 @@ +../zedboard/pl.dtsi \ No newline at end of file diff --git a/fpga/sw/device-tree/zybo/ps.dtsi b/fpga/sw/device-tree/2015.1/zybo/ps.dtsi similarity index 100% rename from fpga/sw/device-tree/zybo/ps.dtsi rename to fpga/sw/device-tree/2015.1/zybo/ps.dtsi diff --git a/fpga/sw/device-tree/zybo/system.dts b/fpga/sw/device-tree/2015.1/zybo/system.dts similarity index 100% rename from fpga/sw/device-tree/zybo/system.dts rename to fpga/sw/device-tree/2015.1/zybo/system.dts diff --git a/fpga/sw/device-tree/zybo/pl.dtsi b/fpga/sw/device-tree/zybo/pl.dtsi deleted file mode 120000 index 5aedde2e..00000000 --- a/fpga/sw/device-tree/zybo/pl.dtsi +++ /dev/null @@ -1 +0,0 @@ -../pl.dtsi \ No newline at end of file From ac3f463241cd164b4a4cc9cfa37a80674842c101 Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Wed, 13 Nov 2019 13:08:28 +0100 Subject: [PATCH 49/54] fpga/sw: make cross-compiler configurable --- fpga/sw/Makefile | 32 +++++++++++++++++++++---------- fpga/sw/apps/gpio_access/Makefile | 4 ++-- fpga/sw/apps/spiload/Makefile | 3 ++- 3 files changed, 26 insertions(+), 13 deletions(-) diff --git a/fpga/sw/Makefile b/fpga/sw/Makefile index e8fa4172..9f337cc4 100644 --- a/fpga/sw/Makefile +++ b/fpga/sw/Makefile @@ -1,12 +1,24 @@ PWD=$(CURDIR) NCORES=4 BOARD ?= zedboard - VIVADO_VERSION ?= 2015.1 -ARM_TOOLCHAIN_PATH := $(shell which arm-xilinx-linux-gnueabi-gcc) -ARM_TOOLCHAIN_PATH := $(shell dirname $(ARM_TOOLCHAIN_PATH)) -ARM_TOOLCHAIN_PATH := $(shell dirname $(ARM_TOOLCHAIN_PATH)) +# Fall back to ancient Xilinx GCC due to outdated Linux sources that can't handle modern ones +ifeq ($(VIVADO_VERSION),2015.1) + ARMTRIPLE:=arm-xilinx-linux-gnueabi +else + ARMTRIPLE:=arm-linux-gnueabihf +endif + +ARMCC:=$(ARMTRIPLE)-gcc +export ARMCC + +ARCH=$(firstword $(subst -, ,$(ARMTRIPLE))) +ARMCC_PATH := $(shell which $(ARMCC)) +ifeq ($(ARMCC_PATH),) + $(error Path to $(ARMCC) unknown. PATH is "$(PATH)") +endif +ARM_TOOLCHAIN_PATH := $(realpath $(dir $(ARMCC_PATH))..) all: u-boot linux rootfs devtree fsbl sd_image/BOOT.BIN @@ -38,7 +50,7 @@ linux-xlnx/.config: config/kernel.config.$(VIVADO_VERSION) | linux-xlnx cp config/kernel.config.$(VIVADO_VERSION) ./linux-xlnx/.config linux-xlnx/arch/arm/boot/uImage: linux-xlnx/.config - cd linux-xlnx && $(MAKE) ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- UIMAGE_LOADADDR=0x8000 uImage PATH=$(shell pwd)/u-boot-xlnx/tools/:${PATH} -j${NCORES} + cd linux-xlnx && $(MAKE) ARCH=$(ARCH) CROSS_COMPILE=$(ARMTRIPLE)- UIMAGE_LOADADDR=0x8000 uImage PATH=$(shell pwd)/u-boot-xlnx/tools/:${PATH} -j${NCORES} sd_image/uImage: linux-xlnx/arch/arm/boot/uImage | sd_image/ cp linux-xlnx/arch/arm/boot/uImage ./sd_image/uImage @@ -59,17 +71,17 @@ ifeq ($(BOARD),zybo) cd u-boot-xlnx && \ git checkout -f 84f81e5b8950748fd7ca967ecf0428affef7ecea && \ patch -p1 < ../config/u-boot-xlnx-def-env.patch.$(VIVADO_VERSION) && \ - $(MAKE) CROSS_COMPILE=arm-xilinx-linux-gnueabi- zynq_zybo_config + $(MAKE) CROSS_COMPILE=$(ARMTRIPLE)- zynq_zybo_config else cd u-boot-xlnx && \ git checkout -f tags/xilinx-v$(VIVADO_VERSION) && \ patch -p1 < ../config/u-boot-xlnx-def-env.patch.$(VIVADO_VERSION) && \ - $(MAKE) CROSS_COMPILE=arm-xilinx-linux-gnueabi- zynq_zed_config + $(MAKE) CROSS_COMPILE=$(ARMTRIPLE)- zynq_zed_config endif cp config/u-boot.config.$(BOARD).$(VIVADO_VERSION) ./u-boot-xlnx/.config u-boot-xlnx/u-boot: u-boot-xlnx/.config - cd u-boot-xlnx && $(MAKE) CROSS_COMPILE=arm-xilinx-linux-gnueabi- + cd u-boot-xlnx && $(MAKE) CROSS_COMPILE=$(ARMTRIPLE)- sd_image/u-boot.elf: u-boot-xlnx/u-boot | sd_image/ cp u-boot-xlnx/u-boot ./sd_image/u-boot.elf @@ -99,9 +111,9 @@ buildroot/.config: config/buildroot.config.$(VIVADO_VERSION) | buildroot ./config/buildroot.config.$(VIVADO_VERSION) > ./buildroot/.config buildroot/output/images/rootfs.tar: buildroot/.config buildroot-post-build.sh $(shell ./buildroot-post-build.sh DEPENDENCIES) - cd buildroot && $(MAKE) ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- busybox-source + cd buildroot && $(MAKE) ARCH=$(ARCH) CROSS_COMPILE=$(ARMTRIPLE)- busybox-source cp config/busybox.config.$(VIVADO_VERSION) buildroot/output/build/busybox-$(BUSYBOX_VERSION)/.config - cd buildroot && $(MAKE) ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- -j${NCORES} + cd buildroot && $(MAKE) ARCH=$(ARCH) CROSS_COMPILE=$(ARMTRIPLE)- -j${NCORES} sd_image/rootfs.tar: buildroot/output/images/rootfs.tar | sd_image/ cp buildroot/output/images/rootfs.tar sd_image/rootfs.tar diff --git a/fpga/sw/apps/gpio_access/Makefile b/fpga/sw/apps/gpio_access/Makefile index 43016c7b..14614f54 100644 --- a/fpga/sw/apps/gpio_access/Makefile +++ b/fpga/sw/apps/gpio_access/Makefile @@ -1,5 +1,5 @@ -CC=arm-xilinx-linux-gnueabi-gcc - +ARMCC ?= arm-linux-gnueabi-gcc +CC = $(ARMCC) all: gpio_access diff --git a/fpga/sw/apps/spiload/Makefile b/fpga/sw/apps/spiload/Makefile index 524e9175..5f25aa00 100644 --- a/fpga/sw/apps/spiload/Makefile +++ b/fpga/sw/apps/spiload/Makefile @@ -1,4 +1,5 @@ -CC = arm-xilinx-linux-gnueabi-gcc +ARMCC ?= arm-linux-gnueabi-gcc +CC = $(ARMCC) CFLAGS = -Wall ifeq ($(BOARD),zybo) From 07a667851948592977f080b81037a6fa7c3695b1 Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Wed, 13 Nov 2019 14:57:27 +0100 Subject: [PATCH 50/54] fpga/sw: build u-boot in parallel --- fpga/sw/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fpga/sw/Makefile b/fpga/sw/Makefile index 9f337cc4..32c6d6f9 100644 --- a/fpga/sw/Makefile +++ b/fpga/sw/Makefile @@ -81,7 +81,7 @@ endif cp config/u-boot.config.$(BOARD).$(VIVADO_VERSION) ./u-boot-xlnx/.config u-boot-xlnx/u-boot: u-boot-xlnx/.config - cd u-boot-xlnx && $(MAKE) CROSS_COMPILE=$(ARMTRIPLE)- + cd u-boot-xlnx && $(MAKE) CROSS_COMPILE=$(ARMTRIPLE)- -j${NCORES} sd_image/u-boot.elf: u-boot-xlnx/u-boot | sd_image/ cp u-boot-xlnx/u-boot ./sd_image/u-boot.elf From 512b8963a47a71b7eb55a555bfb7d50dc9d98353 Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Fri, 15 Nov 2019 16:32:40 +0100 Subject: [PATCH 51/54] fpga/sw: try generating DT from Xilinx' repo with hsi hsi is able to generate device trees from the synthesized designs. These are superior to some extent to those automatically generated otherwise (e.g., from the Linux kernel sources alone). However, they are not always complete/bootable due to bugs in the Xilinx tools. Notable exceptions are details on spidev and Ethernet Phys. Therefore, this patch does *not* replace the existing flow of having the dts files for each board committed to this repository. Only if the needed file is not available it tries to build it with hsi (and warns the user). --- fpga/sw/.gitignore | 2 + fpga/sw/Makefile | 43 +- fpga/sw/apps/spiload/main.c | 2 +- fpga/sw/device-tree/2015.1-zedboard.dts | 503 +++++++++++++++ fpga/sw/device-tree/2015.1-zybo.dts | 581 ++++++++++++++++++ fpga/sw/device-tree/2015.1/zedboard/pl.dtsi | 69 --- .../device-tree/2015.1/zedboard/skeleton.dtsi | 13 - .../sw/device-tree/2015.1/zedboard/system.dts | 95 --- .../2015.1/zedboard/zynq-7000.dtsi | 399 ------------ fpga/sw/device-tree/2015.1/zybo/pl.dtsi | 1 - fpga/sw/device-tree/2015.1/zybo/ps.dtsi | 435 ------------- fpga/sw/device-tree/2015.1/zybo/system.dts | 25 - fpga/sw/hsi/dt.tcl | 10 + 13 files changed, 1138 insertions(+), 1040 deletions(-) create mode 100644 fpga/sw/device-tree/2015.1-zedboard.dts create mode 100644 fpga/sw/device-tree/2015.1-zybo.dts delete mode 100644 fpga/sw/device-tree/2015.1/zedboard/pl.dtsi delete mode 100644 fpga/sw/device-tree/2015.1/zedboard/skeleton.dtsi delete mode 100644 fpga/sw/device-tree/2015.1/zedboard/system.dts delete mode 100644 fpga/sw/device-tree/2015.1/zedboard/zynq-7000.dtsi delete mode 120000 fpga/sw/device-tree/2015.1/zybo/pl.dtsi delete mode 100644 fpga/sw/device-tree/2015.1/zybo/ps.dtsi delete mode 100644 fpga/sw/device-tree/2015.1/zybo/system.dts create mode 100644 fpga/sw/hsi/dt.tcl diff --git a/fpga/sw/.gitignore b/fpga/sw/.gitignore index 8cab71fa..248813a8 100644 --- a/fpga/sw/.gitignore +++ b/fpga/sw/.gitignore @@ -4,6 +4,7 @@ linux-xlnx sd_image u-boot-xlnx buildroot +device_tree_repo hsi/fsbl/ hsi/ps7_bd.tcl hsi/ps7_init.c @@ -16,3 +17,4 @@ hsi/*.jou hsi/*.log hsi/pulpemu_top.bit hsi/pulpemu_top.sysdef +hsi/dts_out/ diff --git a/fpga/sw/Makefile b/fpga/sw/Makefile index 32c6d6f9..acad7376 100644 --- a/fpga/sw/Makefile +++ b/fpga/sw/Makefile @@ -126,9 +126,47 @@ rootfs: sd_image/rootfs.tar # device tree blob ################################################################################ +DT_TOP_2015.1 := system.dts +DT_TOP := $(DT_TOP_$(VIVADO_VERSION)) + +device_tree_repo: + git clone https://github.com/Xilinx/device-tree-xlnx.git device_tree_repo + +hsi/dts_out/$(VIVADO_VERSION)-$(BOARD)/$(DT_TOP): device_tree_repo hsi/pulpemu_top.sysdef | hsi/dts_out/$(VIVADO_VERSION)-$(BOARD)/ + cd device_tree_repo && git checkout -f tags/xilinx-v$(VIVADO_VERSION) + cd hsi && hsi -mode batch -source dt.tcl -tclargs dts_out/$(VIVADO_VERSION)-$(BOARD) + +# If there is no dts available in this repo, try creating it. +# NB: The order-only prerequisites guarantee that we don't touch an existing .dts +# This has been semi-successful in the past but is a good starting point +# for further customizations (to be then committed as dts files in device-tree/). +# Additionally, the sed call below improves the output of hsi as follows +# - fix the memory node if need be +# - set stdout-path to UART1 +# - adapt the spi aliases to ensure /dev/spidev1.0 is the RISC-V memory mapping +# - set the MAC address of the ethernet PHY to a valid (but random) value +# - replace the kernel boot arguments to set the correct UART and root FS location +# # uImage is used as an order-only prerequisite because the dtc binary used below is built that way. -sd_image/devicetree.dtb: $(wildcard device-tree/$(VIVADO_VERSION)/$(BOARD)/*.dts*) | linux-xlnx/arch/arm/boot/uImage - cd device-tree/$(VIVADO_VERSION)/$(BOARD) && $(PWD)/linux-xlnx/scripts/dtc/dtc -I dts -O dtb -o $(PWD)/sd_image/devicetree.dtb system.dts +device-tree/$(VIVADO_VERSION)-$(BOARD).dts: | hsi/dts_out/$(VIVADO_VERSION)-$(BOARD)/$(DT_TOP) linux-xlnx/arch/arm/boot/uImage + $(info Generating new Device Tree for $(BOARD) with Vivado $(VIVADO_VERSION).) + $(info Don't expect this to work out of the box.) + cd hsi/dts_out/$(VIVADO_VERSION)-$(BOARD) && \ + cpp -nostdinc -undef -x assembler-with-cpp $(DT_TOP) | \ + $(PWD)/linux-xlnx/scripts/dtc/dtc -I dts -O dts - | \ + sed \ + -e 's|memory {|memory@0 {|' \ + -e 's|stdout-path = "serial0:|stdout-path = "serial1:|' \ + -e '/spi[01] = .*;/d' \ + -e 's|serial1 = "/amba/serial@e0001000";|serial1 = "/amba/serial@e0001000";\n\t\tspi0 = "/amba/spi@e000d000";\n\t\tspi1 = "/amba/spi@e0006000";|' \ + -e '/local-mac-address = .*;/d' \ + -e 's|ethernet@e000b000 {|ethernet@e000b000 {\n\t\t\tlocal-mac-address = [0e be 06 33 5f c6];|' \ + -e 's|bootargs = ".*";|bootargs = "console=ttyPS1,115200n8 ip=on rootfstype=ext4 root=/dev/mmcblk0p2 rw earlyprintk";|' \ + > $(PWD)/$@ + +# uImage is used as an order-only prerequisite because the dtc binary used below is built that way. +sd_image/devicetree.dtb: device-tree/$(VIVADO_VERSION)-$(BOARD).dts | linux-xlnx/arch/arm/boot/uImage + linux-xlnx/scripts/dtc/dtc -I dts -O dtb -o $@ $< .PHONY: devtree devtree: sd_image/devicetree.dtb @@ -190,6 +228,7 @@ clean: rm -f linux-xlnx/.config rm -f buildroot/.config rm -f hsi/pulpemu_top.sysdef + rm -fr hsi/dts_out/ rm -f sd_image/* .PHONY: distclean diff --git a/fpga/sw/apps/spiload/main.c b/fpga/sw/apps/spiload/main.c index a96129cf..820dbcc2 100644 --- a/fpga/sw/apps/spiload/main.c +++ b/fpga/sw/apps/spiload/main.c @@ -26,7 +26,7 @@ #include "spiloader.h" -#define SPIDEV "/dev/spidev32766.0" +#define SPIDEV "/dev/spidev1.0" #define CLKING_AXI_ADDR 0x51010000 #define PULP_CTRL_AXI_ADDR 0x51000000 #define PULP_GPIO_AXI_ADDR 0x51030000 diff --git a/fpga/sw/device-tree/2015.1-zedboard.dts b/fpga/sw/device-tree/2015.1-zedboard.dts new file mode 100644 index 00000000..6ca76fc4 --- /dev/null +++ b/fpga/sw/device-tree/2015.1-zedboard.dts @@ -0,0 +1,503 @@ +/dts-v1/; + +/ { + #address-cells = <0x1>; + #size-cells = <0x1>; + compatible = "xlnx,zynq-7000"; + + chosen { + bootargs = "console=ttyPS1,115200n8 ip=on rootfstype=ext4 root=/dev/mmcblk0p2 rw earlyprintk"; + }; + + aliases { + ethernet0 = "/amba/ethernet@e000b000"; + serial0 = "/amba/serial@e0000000"; + serial1 = "/amba/serial@e0001000"; + spi0 = "/amba/spi@e000d000"; + spi1 = "/amba/spi@e0006000"; + }; + + memory@0 { + device_type = "memory"; + reg = <0x0 0x20000000>; + }; + + cpus { + #address-cells = <0x1>; + #size-cells = <0x0>; + + cpu@0 { + compatible = "arm,cortex-a9"; + device_type = "cpu"; + reg = <0x0>; + clocks = <0x1 0x3>; + clock-latency = <0x3e8>; + cpu0-supply = <0x2>; + operating-points = <0xa2c2a 0xf4240 0x51615 0xf4240>; + }; + + cpu@1 { + compatible = "arm,cortex-a9"; + device_type = "cpu"; + reg = <0x1>; + clocks = <0x1 0x3>; + }; + }; + + pmu@f8891000 { + compatible = "arm,cortex-a9-pmu"; + interrupts = <0x0 0x5 0x4 0x0 0x6 0x4>; + interrupt-parent = <0x3>; + reg = <0xf8891000 0x1000 0xf8893000 0x1000>; + }; + + regulator_vccpint: fixedregulator { + compatible = "regulator-fixed"; + regulator-name = "VCCPINT"; + regulator-min-microvolt = <0xf4240>; + regulator-max-microvolt = <0xf4240>; + regulator-boot-on; + regulator-always-on; + linux,phandle = <0x2>; + phandle = <0x2>; + }; + + amba: amba { + compatible = "simple-bus"; + #address-cells = <0x1>; + #size-cells = <0x1>; + interrupt-parent = <0x3>; + ranges; + + adc: adc@f8007100 { + compatible = "xlnx,zynq-xadc-1.00.a"; + reg = <0xf8007100 0x20>; + interrupts = <0x0 0x7 0x4>; + interrupt-parent = <0x3>; + clocks = <0x1 0xc>; + }; + + can0: can@e0008000 { + compatible = "xlnx,zynq-can-1.0"; + status = "disabled"; + clocks = <0x1 0x13 0x1 0x24>; + clock-names = "can_clk", "pclk"; + reg = <0xe0008000 0x1000>; + interrupts = <0x0 0x1c 0x4>; + interrupt-parent = <0x3>; + tx-fifo-depth = <0x40>; + rx-fifo-depth = <0x40>; + }; + + can1: can@e0009000 { + compatible = "xlnx,zynq-can-1.0"; + status = "disabled"; + clocks = <0x1 0x14 0x1 0x25>; + clock-names = "can_clk", "pclk"; + reg = <0xe0009000 0x1000>; + interrupts = <0x0 0x33 0x4>; + interrupt-parent = <0x3>; + tx-fifo-depth = <0x40>; + rx-fifo-depth = <0x40>; + }; + + gpio0: gpio@e000a000 { + compatible = "xlnx,zynq-gpio-1.0"; + #gpio-cells = <0x2>; + clocks = <0x1 0x2a>; + gpio-controller; + interrupt-parent = <0x3>; + interrupts = <0x0 0x14 0x4>; + reg = <0xe000a000 0x1000>; + emio-gpio-width = <0x40>; + gpio-mask-high = <0x0>; + gpio-mask-low = <0x5600>; + }; + + i2c0: i2c@e0004000 { + compatible = "cdns,i2c-r1p10"; + status = "disabled"; + clocks = <0x1 0x26>; + interrupt-parent = <0x3>; + interrupts = <0x0 0x19 0x4>; + reg = <0xe0004000 0x1000>; + #address-cells = <0x1>; + #size-cells = <0x0>; + }; + + i2c1: i2c@e0005000 { + compatible = "cdns,i2c-r1p10"; + status = "disabled"; + clocks = <0x1 0x27>; + interrupt-parent = <0x3>; + interrupts = <0x0 0x30 0x4>; + reg = <0xe0005000 0x1000>; + #address-cells = <0x1>; + #size-cells = <0x0>; + }; + + intc: interrupt-controller@f8f01000 { + compatible = "arm,cortex-a9-gic"; + #interrupt-cells = <0x3>; + interrupt-controller; + reg = <0xf8f01000 0x1000 0xf8f00100 0x100>; + num_cpus = <0x2>; + num_interrupts = <0x60>; + linux,phandle = <0x3>; + phandle = <0x3>; + }; + + L2: cache-controller@f8f02000 { + compatible = "arm,pl310-cache"; + reg = <0xf8f02000 0x1000>; + arm,data-latency = <0x3 0x2 0x2>; + arm,tag-latency = <0x2 0x2 0x2>; + cache-unified; + cache-level = <0x2>; + }; + + mc: memory-controller@f8006000 { + compatible = "xlnx,zynq-ddrc-a05"; + reg = <0xf8006000 0x1000>; + xlnx,has-ecc = <0x0>; + }; + + ocmc: ocmc@f800c000 { + compatible = "xlnx,zynq-ocmc-1.0"; + interrupt-parent = <0x3>; + interrupts = <0x0 0x3 0x4>; + reg = <0xf800c000 0x1000>; + }; + + uart0: serial@e0000000 { + compatible = "xlnx,xuartps", "cdns,uart-r1p8"; + status = "okay"; + clocks = <0x1 0x17 0x1 0x28>; + clock-names = "uart_clk", "pclk"; + reg = <0xe0000000 0x1000>; + interrupts = <0x0 0x1b 0x4>; + current-speed = <0x1c200>; + device_type = "serial"; + port-number = <0x0>; + }; + + uart1: serial@e0001000 { + compatible = "xlnx,xuartps", "cdns,uart-r1p8"; + status = "okay"; + clocks = <0x1 0x18 0x1 0x29>; + clock-names = "uart_clk", "pclk"; + reg = <0xe0001000 0x1000>; + interrupts = <0x0 0x32 0x4>; + current-speed = <0x1c200>; + device_type = "serial"; + port-number = <0x1>; + }; + + spi0: spi@e0006000 { + compatible = "xlnx,zynq-spi-r1p6"; + reg = <0xe0006000 0x1000>; + status = "okay"; + interrupt-parent = <0x3>; + interrupts = <0x0 0x1a 0x4>; + clocks = <0x1 0x19 0x1 0x22>; + clock-names = "ref_clk", "pclk"; + #address-cells = <0x1>; + #size-cells = <0x0>; + is-decoded-cs = <0x0>; + num-cs = <0x3>; + + device@0 { + compatible = "spidev"; + reg = <0x0>; + spi-max-frequency = <0x7a120>; + spi-cpol = <0x0>; + spi-cpha = <0x0>; + }; + }; + + spi1: spi@e0007000 { + compatible = "xlnx,zynq-spi-r1p6"; + reg = <0xe0007000 0x1000>; + status = "disabled"; + interrupt-parent = <0x3>; + interrupts = <0x0 0x31 0x4>; + clocks = <0x1 0x1a 0x1 0x23>; + clock-names = "ref_clk", "pclk"; + #address-cells = <0x1>; + #size-cells = <0x0>; + }; + + qspi: spi@e000d000 { + clock-names = "ref_clk", "pclk"; + clocks = <0x1 0xa 0x1 0x2b>; + compatible = "xlnx,zynq-qspi-1.0"; + status = "okay"; + interrupt-parent = <0x3>; + interrupts = <0x0 0x13 0x4>; + reg = <0xe000d000 0x1000>; + #address-cells = <0x1>; + #size-cells = <0x0>; + is-dual = <0x0>; + num-cs = <0x1>; + }; + + smcc: memory-controller@e000e000 { + #address-cells = <0x1>; + #size-cells = <0x1>; + status = "disabled"; + clock-names = "memclk", "aclk"; + clocks = <0x1 0xb 0x1 0x2c>; + compatible = "arm,pl353-smc-r2p1"; + interrupt-parent = <0x3>; + interrupts = <0x0 0x12 0x4>; + ranges; + reg = <0xe000e000 0x1000>; + + nand0: flash@e1000000 { + status = "disabled"; + compatible = "arm,pl353-nand-r2p1"; + reg = <0xe1000000 0x1000000>; + #address-cells = <0x1>; + #size-cells = <0x1>; + }; + + nor0: flash@e2000000 { + status = "disabled"; + compatible = "cfi-flash"; + reg = <0xe2000000 0x1000>; + #address-cells = <0x1>; + #size-cells = <0x1>; + }; + }; + + gem0: ethernet@e000b000 { + local-mac-address = [0e be 06 33 5f c6]; + compatible = "xlnx,ps7-ethernet-1.00.a"; + reg = <0xe000b000 0x1000>; + status = "okay"; + interrupts = <0x0 0x16 0x4>; + clocks = <0x1 0xd 0x1 0x1e>; + clock-names = "ref_clk", "aper_clk"; + xlnx,has-mdio = <0x1>; + #address-cells = <0x1>; + #size-cells = <0x0>; + phy-handle = <0x4>; + phy-mode = "rgmii-id"; + xlnx,ptp-enet-clock = <0x69f6bcb>; + + ps7_ethernet_0_mdio: mdio { + #address-cells = <0x1>; + #size-cells = <0x0>; + + phy0: phy@7 { + compatible = "marvell,88e1116r"; + device_type = "ethernet-phy"; + reg = <0x0>; + linux,phandle = <0x4>; + phandle = <0x4>; + }; + }; + }; + + gem1: ethernet@e000c000 { + compatible = "xlnx,ps7-ethernet-1.00.a"; + reg = <0xe000c000 0x1000>; + status = "disabled"; + interrupts = <0x0 0x2d 0x4>; + clocks = <0x1 0xe 0x1 0x1f>; + clock-names = "ref_clk", "aper_clk"; + xlnx,has-mdio = <0x1>; + #address-cells = <0x1>; + #size-cells = <0x0>; + }; + + sdhci0: sdhci@e0100000 { + compatible = "arasan,sdhci-8.9a"; + status = "okay"; + clock-names = "clk_xin", "clk_ahb"; + clocks = <0x1 0x15 0x1 0x20>; + interrupt-parent = <0x3>; + interrupts = <0x0 0x18 0x4>; + reg = <0xe0100000 0x1000>; + clock-frequency = <0x2faf080>; + }; + + sdhci1: sdhci@e0101000 { + compatible = "arasan,sdhci-8.9a"; + status = "disabled"; + clock-names = "clk_xin", "clk_ahb"; + clocks = <0x1 0x16 0x1 0x21>; + interrupt-parent = <0x3>; + interrupts = <0x0 0x2f 0x4>; + reg = <0xe0101000 0x1000>; + }; + + slcr: slcr@f8000000 { + #address-cells = <0x1>; + #size-cells = <0x1>; + compatible = "xlnx,zynq-slcr", "syscon"; + reg = <0xf8000000 0x1000>; + ranges; + + clkc: clkc@100 { + #clock-cells = <0x1>; + compatible = "xlnx,ps7-clkc"; + ps-clk-frequency = <0x1fca055>; + fclk-enable = <0xf>; + clock-output-names = "armpll", "ddrpll", "iopll", "cpu_6or4x", "cpu_3or2x", "cpu_2x", "cpu_1x", "ddr2x", "ddr3x", "dci", "lqspi", "smc", "pcap", "gem0", "gem1", "fclk0", "fclk1", "fclk2", "fclk3", "can0", "can1", "sdio0", "sdio1", "uart0", "uart1", "spi0", "spi1", "dma", "usb0_aper", "usb1_aper", "gem0_aper", "gem1_aper", "sdio0_aper", "sdio1_aper", "spi0_aper", "spi1_aper", "can0_aper", "can1_aper", "i2c0_aper", "i2c1_aper", "uart0_aper", "uart1_aper", "gpio_aper", "lqspi_aper", "smc_aper", "swdt", "dbg_trc", "dbg_apb"; + reg = <0x100 0x100>; + linux,phandle = <0x1>; + phandle = <0x1>; + }; + }; + + dmac_s: dmac@f8003000 { + compatible = "arm,pl330", "arm,primecell"; + reg = <0xf8003000 0x1000>; + interrupt-parent = <0x3>; + interrupt-names = "abort", "dma0", "dma1", "dma2", "dma3", "dma4", "dma5", "dma6", "dma7"; + interrupts = <0x0 0xd 0x4 0x0 0xe 0x4 0x0 0xf 0x4 0x0 0x10 0x4 0x0 0x11 0x4 0x0 0x28 0x4 0x0 0x29 0x4 0x0 0x2a 0x4 0x0 0x2b 0x4>; + #dma-cells = <0x1>; + #dma-channels = <0x8>; + #dma-requests = <0x4>; + clocks = <0x1 0x1b>; + clock-names = "apb_pclk"; + }; + + devcfg: devcfg@f8007000 { + clock-names = "ref_clk", "fclk0", "fclk1", "fclk2", "fclk3"; + clocks = <0x1 0xc 0x1 0xf 0x1 0x10 0x1 0x11 0x1 0x12>; + compatible = "xlnx,zynq-devcfg-1.0"; + interrupt-parent = <0x3>; + interrupts = <0x0 0x8 0x4>; + reg = <0xf8007000 0x100>; + }; + + global_timer: timer@f8f00200 { + compatible = "arm,cortex-a9-global-timer"; + reg = <0xf8f00200 0x20>; + interrupts = <0x1 0xb 0x301>; + interrupt-parent = <0x3>; + clocks = <0x1 0x4>; + }; + + ttc0: timer@f8001000 { + interrupt-parent = <0x3>; + interrupts = <0x0 0xa 0x4 0x0 0xb 0x4 0x0 0xc 0x4>; + compatible = "cdns,ttc"; + clocks = <0x1 0x6>; + reg = <0xf8001000 0x1000>; + }; + + ttc1: timer@f8002000 { + interrupt-parent = <0x3>; + interrupts = <0x0 0x25 0x4 0x0 0x26 0x4 0x0 0x27 0x4>; + compatible = "cdns,ttc"; + clocks = <0x1 0x6>; + reg = <0xf8002000 0x1000>; + }; + + scutimer: timer@f8f00600 { + interrupt-parent = <0x3>; + interrupts = <0x1 0xd 0x301>; + compatible = "arm,cortex-a9-twd-timer"; + reg = <0xf8f00600 0x20>; + clocks = <0x1 0x4>; + }; + + watchdog0: watchdog@f8005000 { + clocks = <0x1 0x2d>; + compatible = "xlnx,zynq-wdt-r1p2"; + device_type = "watchdog"; + interrupt-parent = <0x3>; + interrupts = <0x0 0x9 0x1>; + reg = <0xf8005000 0x1000>; + reset = <0x0>; + timeout-sec = <0xa>; + }; + + usb0: usb@e0002000 { + clocks = <0x1 0x1c>; + compatible = "xlnx,ps7-usb-1.00.a", "xlnx,zynq-usb-1.00.a"; + status = "okay"; + interrupt-parent = <0x3>; + interrupts = <0x0 0x15 0x4>; + reg = <0xe0002000 0x1000>; + dr_mode = "host"; + phy_type = "ulpi"; + }; + + usb1: usb@e0003000 { + clocks = <0x1 0x1d>; + compatible = "xlnx,ps7-usb-1.00.a", "xlnx,zynq-usb-1.00.a"; + status = "disabled"; + interrupt-parent = <0x3>; + interrupts = <0x0 0x2c 0x4>; + reg = <0xe0003000 0x1000>; + }; + }; + + amba_pl: amba_pl { + #address-cells = <0x1>; + #size-cells = <0x1>; + compatible = "simple-bus"; + ranges; + + axi_gpio_emu: gpio@51030000 { + #gpio-cells = <0x2>; + compatible = "xlnx,xps-gpio-1.00.a"; + gpio-controller; + reg = <0x51030000 0x10000>; + xlnx,all-inputs = <0x0>; + xlnx,all-inputs-2 = <0x0>; + xlnx,all-outputs = <0x0>; + xlnx,all-outputs-2 = <0x0>; + xlnx,dout-default = <0x0>; + xlnx,dout-default-2 = <0x0>; + xlnx,gpio-width = <0x20>; + xlnx,gpio2-width = <0x20>; + xlnx,interrupt-present = <0x0>; + xlnx,is-dual = <0x0>; + xlnx,tri-default = <0xffffffff>; + xlnx,tri-default-2 = <0xffffffff>; + }; + + axi_jtag_emu: gpio@51020000 { + #gpio-cells = <0x2>; + compatible = "xlnx,xps-gpio-1.00.a"; + gpio-controller; + reg = <0x51020000 0x10000>; + xlnx,all-inputs = <0x0>; + xlnx,all-inputs-2 = <0x0>; + xlnx,all-outputs = <0x0>; + xlnx,all-outputs-2 = <0x0>; + xlnx,dout-default = <0x0>; + xlnx,dout-default-2 = <0x0>; + xlnx,gpio-width = <0x20>; + xlnx,gpio2-width = <0x20>; + xlnx,interrupt-present = <0x0>; + xlnx,is-dual = <0x0>; + xlnx,tri-default = <0xffffffff>; + xlnx,tri-default-2 = <0xffffffff>; + }; + + axi_pulp_control: gpio@51000000 { + #gpio-cells = <0x2>; + compatible = "xlnx,xps-gpio-1.00.a"; + gpio-controller; + reg = <0x51000000 0x10000>; + xlnx,all-inputs = <0x1>; + xlnx,all-inputs-2 = <0x0>; + xlnx,all-outputs = <0x0>; + xlnx,all-outputs-2 = <0x1>; + xlnx,dout-default = <0x0>; + xlnx,dout-default-2 = <0x0>; + xlnx,gpio-width = <0x20>; + xlnx,gpio2-width = <0x20>; + xlnx,interrupt-present = <0x0>; + xlnx,is-dual = <0x1>; + xlnx,tri-default = <0xffffffff>; + xlnx,tri-default-2 = <0xffffffff>; + }; + }; +}; diff --git a/fpga/sw/device-tree/2015.1-zybo.dts b/fpga/sw/device-tree/2015.1-zybo.dts new file mode 100644 index 00000000..1e728418 --- /dev/null +++ b/fpga/sw/device-tree/2015.1-zybo.dts @@ -0,0 +1,581 @@ +/dts-v1/; + +/ { + #address-cells = <0x1>; + #size-cells = <0x1>; + compatible = "xlnx,zynq-7000"; + + cpus { + #address-cells = <0x1>; + #size-cells = <0x0>; + + ps7_cortexa9_0: cpu@0 { + bus-handle = <0x1>; + clock-latency = <0x3e8>; + clocks = <0x2 0x3>; + compatible = "arm,cortex-a9"; + device_type = "cpu"; + interrupt-handle = <0x3>; + operating-points = <0xa2c2b 0xf4240 0x51616 0xf4240 0x3640f 0xf4240>; + }; + + ps7_cortexa9_1: cpu@1 { + bus-handle = <0x1>; + clock-latency = <0x3e8>; + clocks = <0x2 0x3>; + compatible = "arm,cortex-a9"; + device_type = "cpu"; + interrupt-handle = <0x3>; + operating-points = <0xa2c2b 0xf4240 0x51616 0xf4240 0x3640f 0xf4240>; + }; + }; + + ps7_pmu: ps7_pmu@0xf8891000 { + compatible = "arm,cortex-a9-pmu"; + reg = <0xf8891000 0x1000 0xf8893000 0x1000>; + reg-names = "cpu0", "cpu1"; + }; + + ps7_axi_interconnect_0: amba@0 { + #address-cells = <0x1>; + #size-cells = <0x1>; + compatible = "xlnx,ps7-axi-interconnect-1.00.a", "simple-bus"; + ranges; + linux,phandle = <0x1>; + phandle = <0x1>; + + ps7_afi_0: ps7-afi@f8008000 { + compatible = "xlnx,ps7-afi-1.00.a"; + reg = <0xf8008000 0x1000>; + }; + + ps7_afi_1: ps7-afi@f8009000 { + compatible = "xlnx,ps7-afi-1.00.a"; + reg = <0xf8009000 0x1000>; + }; + + ps7_afi_2: ps7-afi@f800a000 { + compatible = "xlnx,ps7-afi-1.00.a"; + reg = <0xf800a000 0x1000>; + }; + + ps7_afi_3: ps7-afi@f800b000 { + compatible = "xlnx,ps7-afi-1.00.a"; + reg = <0xf800b000 0x1000>; + }; + + ps7_coresight_comp_0: ps7-coresight-comp@f8800000 { + compatible = "xlnx,ps7-coresight-comp-1.00.a"; + reg = <0xf8800000 0x100000>; + }; + + ps7_ddrc_0: ps7-ddrc@f8006000 { + compatible = "xlnx,zynq-ddrc-1.0"; + reg = <0xf8006000 0x1000>; + xlnx,has-ecc = <0x0>; + }; + + ps7_dev_cfg_0: ps7-dev-cfg@f8007000 { + clock-names = "ref_clk", "fclk0", "fclk1", "fclk2", "fclk3"; + clocks = <0x2 0xc 0x2 0xf 0x2 0x10 0x2 0x11 0x2 0x12>; + compatible = "xlnx,zynq-devcfg-1.0"; + interrupt-parent = <0x3>; + interrupts = <0x0 0x8 0x4>; + reg = <0xf8007000 0x100>; + }; + + ps7_dma_s: ps7-dma@f8003000 { + #dma-cells = <0x1>; + #dma-channels = <0x8>; + #dma-requests = <0x4>; + clock-names = "apb_pclk"; + clocks = <0x2 0x1b>; + compatible = "arm,primecell", "arm,pl330"; + interrupt-names = "abort", "dma0", "dma1", "dma2", "dma3", "dma4", "dma5", "dma6", "dma7"; + interrupt-parent = <0x3>; + interrupts = <0x0 0xd 0x4 0x0 0xe 0x4 0x0 0xf 0x4 0x0 0x10 0x4 0x0 0x11 0x4 0x0 0x28 0x4 0x0 0x29 0x4 0x0 0x2a 0x4 0x0 0x2b 0x4>; + reg = <0xf8003000 0x1000>; + }; + + ps7_ethernet_0: ps7-ethernet@e000b000 { + #address-cells = <0x1>; + #size-cells = <0x0>; + clock-names = "ref_clk", "aper_clk"; + clocks = <0x2 0xd 0x2 0x1e>; + compatible = "xlnx,ps7-ethernet-1.00.a"; + interrupt-parent = <0x3>; + interrupts = <0x0 0x16 0x4>; + local-mac-address = [00 0a 35 00 00 00]; + phy-handle = <0x4>; + phy-mode = "rgmii-id"; + reg = <0xe000b000 0x1000>; + xlnx,ptp-enet-clock = <0x6750918>; + xlnx,enet-reset = [00]; + xlnx,eth-mode = <0x1>; + xlnx,has-mdio = <0x1>; + + mdio { + #address-cells = <0x1>; + #size-cells = <0x0>; + + phy0: phy@1 { + compatible = "realtek,RTL8211E"; + device_type = "ethernet-phy"; + reg = <0x1>; + linux,phandle = <0x4>; + phandle = <0x4>; + }; + }; + }; + + ps7_globaltimer_0: ps7-globaltimer@f8f00200 { + clocks = <0x2 0x4>; + compatible = "arm,cortex-a9-global-timer"; + interrupt-parent = <0x3>; + interrupts = <0x1 0xb 0x301>; + reg = <0xf8f00200 0x100>; + }; + + ps7_gpio_0: ps7-gpio@e000a000 { + #gpio-cells = <0x2>; + clocks = <0x2 0x2a>; + compatible = "xlnx,zynq-gpio-1.0"; + emio-gpio-width = <0x40>; + gpio-controller; + gpio-mask-high = <0x0>; + gpio-mask-low = <0x5600>; + interrupt-parent = <0x3>; + interrupts = <0x0 0x14 0x4>; + reg = <0xe000a000 0x1000>; + xlnx,emio-gpio-width = <0x40>; + xlnx,mio-gpio-mask = <0x5600>; + linux,phandle = <0x5>; + phandle = <0x5>; + }; + + ps7_gpv_0: ps7-gpv@f8900000 { + compatible = "xlnx,ps7-gpv-1.00.a"; + reg = <0xf8900000 0x100000>; + }; + + ps7_i2c_0: ps7-i2c@e0004000 { + clock-frequency = <0x61a80>; + clocks = <0x2 0x26>; + compatible = "cdns,i2c-r1p10"; + interrupt-parent = <0x3>; + interrupts = <0x0 0x19 0x4>; + reg = <0xe0004000 0x1000>; + xlnx,has-interrupt = <0x1>; + xlnx,i2c-reset = [00]; + }; + + ps7_intc_dist_0: ps7-intc-dist@f8f01000 { + compatible = "xlnx,ps7-intc-dist-1.00.a"; + reg = <0xf8f01000 0x1000>; + }; + + ps7_iop_bus_config_0: ps7-iop-bus-config@e0200000 { + compatible = "xlnx,ps7-iop-bus-config-1.00.a"; + reg = <0xe0200000 0x1000>; + }; + + ps7_l2cachec_0: ps7-l2cachec@f8f02000 { + compatible = "xlnx,ps7-l2cachec-1.00.a"; + reg = <0xf8f02000 0x1000>; + }; + + ps7_ocmc_0: ps7-ocmc@f800c000 { + compatible = "xlnx,zynq-ocmc-1.0"; + interrupt-parent = <0x3>; + interrupts = <0x0 0x3 0x4>; + reg = <0xf800c000 0x1000>; + }; + + ps7_pl310_0: ps7-pl310@f8f02000 { + arm,data-latency = <0x3 0x2 0x2>; + arm,tag-latency = <0x2 0x2 0x2>; + cache-level = <0x2>; + cache-unified; + compatible = "arm,pl310-cache"; + interrupt-parent = <0x3>; + interrupts = <0x0 0x2 0x4>; + reg = <0xf8f02000 0x1000>; + }; + + ps7_qspi_0: ps7-qspi@e000d000 { + #address-cells = <0x1>; + #size-cells = <0x0>; + clock-names = "ref_clk", "pclk"; + clocks = <0x2 0xa 0x2 0x2b>; + compatible = "xlnx,zynq-qspi-1.0"; + interrupt-parent = <0x3>; + interrupts = <0x0 0x13 0x4>; + is-dual = <0x0>; + num-cs = <0x1>; + reg = <0xe000d000 0x1000>; + xlnx,fb-clk = <0x1>; + xlnx,qspi-mode = <0x0>; + }; + + ps7_qspi_linear_0: ps7-qspi-linear@fc000000 { + clock-names = "ref_clk", "aper_clk"; + clocks = <0x2 0xa 0x2 0x2b>; + compatible = "xlnx,ps7-qspi-linear-1.00.a"; + reg = <0xfc000000 0x1000000>; + }; + + ps7_ram_0: ps7-ram@00000000 { + compatible = "xlnx,ps7-ocm"; + interrupt-parent = <0x3>; + interrupts = <0x0 0x3 0x4>; + reg = <0xfffc0000 0x40000>; + }; + + ps7_scuc_0: ps7-scuc@f8f00000 { + compatible = "xlnx,ps7-scuc-1.00.a"; + reg = <0xf8f00000 0xfd>; + }; + + ps7_scugic_0: ps7-scugic@f8f00100 { + #address-cells = <0x2>; + #interrupt-cells = <0x3>; + #size-cells = <0x1>; + compatible = "arm,cortex-a9-gic", "arm,gic"; + interrupt-controller; + num_cpus = <0x2>; + num_interrupts = <0x60>; + reg = <0xf8f01000 0x1000 0xf8f00100 0x100>; + xlnx,irq-f2p-mode = "DIRECT"; + linux,phandle = <0x3>; + phandle = <0x3>; + }; + + ps7_scutimer_0: ps7-scutimer@f8f00600 { + clocks = <0x2 0x4>; + compatible = "arm,cortex-a9-twd-timer"; + interrupt-parent = <0x3>; + interrupts = <0x1 0xd 0x301>; + reg = <0xf8f00600 0x20>; + }; + + ps7_scuwdt_0: watchdog@f8f00620 { + clocks = <0x2 0x4>; + compatible = "xlnx,zynq-scuwdt-1.00.a"; + device_type = "watchdog"; + interrupt-parent = <0x3>; + interrupts = <0x1 0xe 0x301>; + reg = <0xf8f00620 0xe0>; + }; + + ps7_sd_0: ps7-sdio@e0100000 { + clock-frequency = <0x2faf080>; + clock-names = "clk_xin", "clk_ahb"; + clocks = <0x2 0x15 0x2 0x20>; + compatible = "arasan,sdhci-8.9a"; + interrupt-parent = <0x3>; + interrupts = <0x0 0x18 0x4>; + reg = <0xe0100000 0x1000>; + xlnx,has-cd = <0x1>; + xlnx,has-power = <0x0>; + xlnx,has-wp = <0x1>; + }; + + ps7_slcr_0: ps7-slcr@f8000000 { + #address-cells = <0x1>; + #size-cells = <0x1>; + compatible = "xlnx,zynq-slcr", "syscon"; + ranges; + reg = <0xf8000000 0x1000>; + + clkc: clkc@0x100 { + #clock-cells = <0x1>; + clock-output-names = "armpll", "ddrpll", "iopll", "cpu_6or4x", "cpu_3or2x", "cpu_2x", "cpu_1x", "ddr2x", "ddr3x", "dci", "lqspi", "smc", "pcap", "gem0", "gem1", "fclk0", "fclk1", "fclk2", "fclk3", "can0", "can1", "sdio0", "sdio1", "uart0", "uart1", "spi0", "spi1", "dma", "usb0_aper", "usb1_aper", "gem0_aper", "gem1_aper", "sdio0_aper", "sdio1_aper", "spi0_aper", "spi1_aper", "can0_aper", "can1_aper", "i2c0_aper", "i2c1_aper", "uart0_aper", "uart1_aper", "gpio_aper", "lqspi_aper", "smc_aper", "swdt", "dbg_trc", "dbg_apb"; + compatible = "xlnx,ps7-clkc"; + fclk-enable = <0xf>; + ps-clk-frequency = <0x2faf080>; + reg = <0x100 0x100>; + linux,phandle = <0x2>; + phandle = <0x2>; + }; + }; + + ps7_spi_0: ps7-spi@e0006000 { + clock-names = "ref_clk", "pclk"; + clocks = <0x2 0x19 0x2 0x22>; + compatible = "cdns,spi-r1p6"; + interrupt-parent = <0x3>; + interrupts = <0x0 0x1a 0x4>; + is-decoded-cs = <0x0>; + num-cs = <0x3>; + reg = <0xe0006000 0x1000>; + xlnx,has-ss0 = <0x1>; + xlnx,has-ss1 = <0x1>; + xlnx,has-ss2 = <0x1>; + #address-cells = <0x1>; + #size-cells = <0x0>; + status = "okay"; + + device@0 { + compatible = "spidev"; + reg = <0x0>; + spi-max-frequency = <0x7a120>; + spi-cpol = <0x0>; + spi-cpha = <0x0>; + }; + }; + + ps7_ttc_0: ps7-ttc@f8001000 { + clocks = <0x2 0x6>; + compatible = "cdns,ttc"; + interrupt-names = "ttc0", "ttc1", "ttc2"; + interrupt-parent = <0x3>; + interrupts = <0x0 0xa 0x4 0x0 0xb 0x4 0x0 0xc 0x4>; + reg = <0xf8001000 0x1000>; + xlnx,ttc-clk0-clksrc = <0x0>; + xlnx,ttc-clk0-freq-hz = <0x6750918>; + xlnx,ttc-clk1-clksrc = <0x0>; + xlnx,ttc-clk1-freq-hz = <0x6750918>; + xlnx,ttc-clk2-clksrc = <0x0>; + xlnx,ttc-clk2-freq-hz = <0x6750918>; + }; + + ps7_uart_1: serial@e0001000 { + clock-names = "ref_clk", "aper_clk"; + clocks = <0x2 0x18 0x2 0x29>; + compatible = "xlnx,xuartps"; + current-speed = <0x1c200>; + device_type = "serial"; + interrupt-parent = <0x3>; + interrupts = <0x0 0x32 0x4>; + port-number = <0x0>; + reg = <0xe0001000 0x1000>; + xlnx,has-modem = <0x0>; + }; + + ps7_usb_0: ps7-usb@e0002000 { + clocks = <0x2 0x1c>; + compatible = "xlnx,zynq-usb-1.00.a"; + dr_mode = "host"; + interrupt-parent = <0x3>; + interrupts = <0x0 0x15 0x4>; + phy_type = "ulpi"; + reg = <0xe0002000 0x1000>; + usb-reset = <0x5 0x2e 0x0>; + }; + + ps7_xadc_0: ps7-xadc@f8007100 { + clocks = <0x2 0xc>; + compatible = "xlnx,zynq-xadc-1.00.a"; + interrupt-parent = <0x3>; + interrupts = <0x0 0x7 0x4>; + reg = <0xf8007100 0x21>; + }; + + ps7_can_0: ps7-can@0xe0008000 { + clock-names = "ref_clk", "aper_clk"; + clocks = <0x2 0x13 0x2 0x24>; + compatible = "xlnx,ps7-can-1.00.a"; + interrupt-parent = <0x3>; + interrupts = <0x0 0x1c 0x4>; + reg = <0xe0008000 0x1000>; + status = "disabled"; + }; + + ps7_can_1: ps7-can@0xe0009000 { + clock-names = "ref_clk", "aper_clk"; + clocks = <0x2 0x14 0x2 0x25>; + compatible = "xlnx,ps7-can-1.00.a"; + interrupt-parent = <0x3>; + interrupts = <0x0 0x33 0x4>; + reg = <0xe0009000 0x1>; + status = "disabled"; + }; + + ps7_ethernet_1: ps7-ethernet@0xe000c000 { + clock-names = "ref_clk", "aper_clk"; + clocks = <0x2 0xe 0x2 0x1f>; + compatible = "xlnx,ps7-ethernet-1.00.a"; + interrupt-parent = <0x3>; + interrupts = <0x0 0x2d 0x4>; + reg = <0xe000c000 0x1000>; + status = "disabled"; + }; + + ps7_i2c_1: ps7-i2c@0xe0005000 { + clocks = <0x2 0x27>; + compatible = "xlnx,ps7-i2c-1.00.a"; + interrupt-parent = <0x3>; + interrupts = <0x0 0x30 0x4>; + reg = <0xe0005000 0x1000>; + status = "disabled"; + }; + + ps7_nand_0: ps7-nand@0xe1000000 { + compatible = "xlnx,ps7-nand-1.00.a"; + reg = <0xe1000000 0x1000000>; + status = "disabled"; + }; + + ps7_sd_1: ps7-sd@0xe0101000 { + clock-names = "ref_clk", "aper_clk"; + clocks = <0x2 0x16 0x2 0x21>; + compatible = "xlnx,ps7-sd-1.00.a"; + interrupt-parent = <0x3>; + interrupts = <0x0 0x2f 0x4>; + reg = <0xe0101000 0x1000>; + status = "disabled"; + }; + + ps7_smcc_0: ps7-smcc@0xe000e000 { + clock-names = "ref_clk", "aper_clk"; + clocks = <0x2 0xb 0x2 0x2c>; + compatible = "xlnx,ps7-smcc-1.00.a"; + interrupt-parent = <0x3>; + interrupts = <0x0 0x12 0x4>; + reg = <0xe000e000 0x1000>; + status = "disabled"; + }; + + ps7_spi_1: ps7-spi@0xe0007000 { + clock-names = "ref_clk", "aper_clk"; + clocks = <0x2 0x1a 0x2 0x23>; + compatible = "xlnx,ps7-spi-1.00.a"; + interrupt-parent = <0x3>; + interrupts = <0x0 0x31 0x4>; + reg = <0xe0007000 0x1000>; + status = "disabled"; + }; + + ps7_sram_0: ps7-sram@0xe2000000 { + compatible = "xlnx,ps7-sram-1.00.a"; + reg = <0xe2000000 0x2000000>; + status = "disabled"; + }; + + ps7_trace_0: ps7-trace@0xe1000000 { + compatible = "xlnx,ps7-trace-1.00.a"; + reg = <0xe1000000 0x1000>; + status = "disabled"; + }; + + ps7_ttc_1: ps7-ttc@0xf8002000 { + clocks = <0x2 0x6>; + compatible = "xlnx,ps7-ttc-1.00.a"; + interrupt-parent = <0x3>; + interrupts = <0x0 0x25 0x4 0x0 0x26 0x4 0x0 0x27 0x4>; + reg = <0xf8002000 0x1000>; + status = "disabled"; + }; + + ps7_uart_0: ps7-uart@0xe0000000 { + clock-names = "ref_clk", "aper_clk"; + clocks = <0x2 0x17 0x2 0x28>; + compatible = "xlnx,xuartps"; + current-speed = <0x1c200>; + device_type = "serial"; + interrupt-parent = <0x3>; + interrupts = <0x0 0x1b 0x4>; + port-number = <0x1>; + reg = <0xe0000000 0x1000>; + }; + + ps7_usb_1: ps7-usb@0xe0003000 { + clocks = <0x2 0x1d>; + compatible = "xlnx,ps7-usb-1.00.a"; + interrupt-parent = <0x3>; + interrupts = <0x0 0x2c 0x4>; + reg = <0xe0003000 0x1000>; + status = "disabled"; + }; + + ps7_wdt_0: ps7-wdt@0xf8005000 { + clocks = <0x2 0x2d>; + compatible = "xlnx,ps7-wdt-1.00.a"; + interrupt-parent = <0x3>; + interrupts = <0x0 0x9 0x1>; + reg = <0xf8005000 0x1000>; + status = "disabled"; + }; + }; + + amba_pl: amba_pl { + #address-cells = <0x1>; + #size-cells = <0x1>; + compatible = "simple-bus"; + ranges; + + axi_pulp_control: gpio@51000000 { + #gpio-cells = <0x2>; + compatible = "xlnx,xps-gpio-1.00.a"; + gpio-controller; + reg = <0x51000000 0x10000>; + xlnx,all-inputs = <0x1>; + xlnx,all-inputs-2 = <0x0>; + xlnx,all-outputs = <0x0>; + xlnx,all-outputs-2 = <0x1>; + xlnx,dout-default = <0x0>; + xlnx,dout-default-2 = <0x0>; + xlnx,gpio-width = <0x20>; + xlnx,gpio2-width = <0x20>; + xlnx,interrupt-present = <0x0>; + xlnx,is-dual = <0x1>; + xlnx,tri-default = <0xffffffff>; + xlnx,tri-default-2 = <0xffffffff>; + }; + + axi_gpio_emu: gpio@51030000 { + #gpio-cells = <0x2>; + compatible = "xlnx,xps-gpio-1.00.a"; + gpio-controller; + reg = <0x51030000 0x10000>; + xlnx,all-inputs = <0x0>; + xlnx,all-inputs-2 = <0x0>; + xlnx,all-outputs = <0x0>; + xlnx,all-outputs-2 = <0x0>; + xlnx,dout-default = <0x0>; + xlnx,dout-default-2 = <0x0>; + xlnx,gpio-width = <0x20>; + xlnx,gpio2-width = <0x20>; + xlnx,interrupt-present = <0x0>; + xlnx,is-dual = <0x0>; + xlnx,tri-default = <0xffffffff>; + xlnx,tri-default-2 = <0xffffffff>; + }; + + axi_jtag_emu: gpio@51020000 { + #gpio-cells = <0x2>; + compatible = "xlnx,xps-gpio-1.00.a"; + gpio-controller; + reg = <0x51020000 0x10000>; + xlnx,all-inputs = <0x0>; + xlnx,all-inputs-2 = <0x0>; + xlnx,all-outputs = <0x0>; + xlnx,all-outputs-2 = <0x0>; + xlnx,dout-default = <0x0>; + xlnx,dout-default-2 = <0x0>; + xlnx,gpio-width = <0x20>; + xlnx,gpio2-width = <0x20>; + xlnx,interrupt-present = <0x0>; + xlnx,is-dual = <0x0>; + xlnx,tri-default = <0xffffffff>; + xlnx,tri-default-2 = <0xffffffff>; + }; + }; + + chosen { + bootargs = "console=ttyPS0,115200 ip=on root=/dev/mmcblk0p2 rw earlyprintk"; + linux,stdout-path = "/amba@0/serial@e0001000"; + }; + + aliases { + ethernet0 = "/amba@0/ps7-ethernet@e000b000"; + i2c0 = "/amba@0/ps7-i2c@e0004000"; + serial0 = "/amba@0/serial@e0001000"; + spi0 = "/amba@0/ps7-qspi@e000d000"; + }; + + ps7_ddr_0: memory@00100000 { + device_type = "memory"; + reg = <0x0 0x20000000>; + }; +}; diff --git a/fpga/sw/device-tree/2015.1/zedboard/pl.dtsi b/fpga/sw/device-tree/2015.1/zedboard/pl.dtsi deleted file mode 100644 index 7ddc2b86..00000000 --- a/fpga/sw/device-tree/2015.1/zedboard/pl.dtsi +++ /dev/null @@ -1,69 +0,0 @@ -/* - * CAUTION: This file is automatically generated by Xilinx. - * Version: - * Today is: Wed Sep 16 09:21:10 2015 -*/ - - -/ { - amba_pl: amba_pl { - #address-cells = <1>; - #size-cells = <1>; - compatible = "simple-bus"; - ranges ; - axi_pulp_control: gpio@51000000 { - #gpio-cells = <2>; - compatible = "xlnx,xps-gpio-1.00.a"; - gpio-controller ; - reg = <0x51000000 0x10000>; - xlnx,all-inputs = <0x1>; - xlnx,all-inputs-2 = <0x0>; - xlnx,all-outputs = <0x0>; - xlnx,all-outputs-2 = <0x1>; - xlnx,dout-default = <0x00000000>; - xlnx,dout-default-2 = <0x00000000>; - xlnx,gpio-width = <0x20>; - xlnx,gpio2-width = <0x20>; - xlnx,interrupt-present = <0x0>; - xlnx,is-dual = <0x1>; - xlnx,tri-default = <0xFFFFFFFF>; - xlnx,tri-default-2 = <0xFFFFFFFF>; - }; - axi_gpio_emu: gpio@51030000 { - #gpio-cells = <2>; - compatible = "xlnx,xps-gpio-1.00.a"; - gpio-controller ; - reg = <0x51030000 0x10000>; - xlnx,all-inputs = <0x0>; - xlnx,all-inputs-2 = <0x0>; - xlnx,all-outputs = <0x0>; - xlnx,all-outputs-2 = <0x0>; - xlnx,dout-default = <0x00000000>; - xlnx,dout-default-2 = <0x00000000>; - xlnx,gpio-width = <0x20>; - xlnx,gpio2-width = <0x20>; - xlnx,interrupt-present = <0x0>; - xlnx,is-dual = <0x0>; - xlnx,tri-default = <0xFFFFFFFF>; - xlnx,tri-default-2 = <0xFFFFFFFF>; - }; - axi_jtag_emu: gpio@51020000 { - #gpio-cells = <2>; - compatible = "xlnx,xps-gpio-1.00.a"; - gpio-controller ; - reg = <0x51020000 0x10000>; - xlnx,all-inputs = <0x0>; - xlnx,all-inputs-2 = <0x0>; - xlnx,all-outputs = <0x0>; - xlnx,all-outputs-2 = <0x0>; - xlnx,dout-default = <0x00000000>; - xlnx,dout-default-2 = <0x00000000>; - xlnx,gpio-width = <0x20>; - xlnx,gpio2-width = <0x20>; - xlnx,interrupt-present = <0x0>; - xlnx,is-dual = <0x0>; - xlnx,tri-default = <0xFFFFFFFF>; - xlnx,tri-default-2 = <0xFFFFFFFF>; - }; - }; -}; diff --git a/fpga/sw/device-tree/2015.1/zedboard/skeleton.dtsi b/fpga/sw/device-tree/2015.1/zedboard/skeleton.dtsi deleted file mode 100644 index a20da0a7..00000000 --- a/fpga/sw/device-tree/2015.1/zedboard/skeleton.dtsi +++ /dev/null @@ -1,13 +0,0 @@ -/* - * Skeleton device tree; the bare minimum needed to boot; just include and - * add a compatible value. The bootloader will typically populate the memory - * node. - */ - -/ { - #address-cells = <1>; - #size-cells = <1>; - chosen { }; - aliases { }; - memory@0 { device_type = "memory"; reg = <0 0>; }; -}; diff --git a/fpga/sw/device-tree/2015.1/zedboard/system.dts b/fpga/sw/device-tree/2015.1/zedboard/system.dts deleted file mode 100644 index 16f442fe..00000000 --- a/fpga/sw/device-tree/2015.1/zedboard/system.dts +++ /dev/null @@ -1,95 +0,0 @@ -/* - * CAUTION: This file is automatically generated by Xilinx. - * Version: - * Today is: Wed Sep 16 09:21:10 2015 -*/ - - -/dts-v1/; -/include/ "zynq-7000.dtsi" -/include/ "pl.dtsi" -/ { - cpus { - cpu@0 { - operating-points = <666666 1000000 333333 1000000>; - }; - }; - chosen { - bootargs = "console=ttyPS1,115200 ip=on root=/dev/mmcblk0p2 rw earlyprintk"; - }; - aliases { - ethernet0 = &gem0; - serial0 = &uart0; - serial1 = &uart1; - }; - memory@0 { - device_type = "memory"; - reg = <0x0 0x20000000>; - }; -}; -&gem0 { - phy-handle = <&phy0>; - phy-mode = "rgmii-id"; - status = "okay"; - xlnx,ptp-enet-clock = <0x69f6bcb>; - mdio { - #address-cells = <1>; - #size-cells = <0>; - phy0: phy@7 { - compatible = "marvell,88e1116r"; - device_type = "ethernet-phy"; - reg = <0>; - }; - }; -}; -&gpio0 { - emio-gpio-width = <64>; - gpio-mask-high = <0x0>; - gpio-mask-low = <0x5600>; -}; -&intc { - num_cpus = <2>; - num_interrupts = <96>; -}; -&qspi { - is-dual = <0>; - num-cs = <1>; - status = "okay"; -}; -&sdhci0 { - clock-frequency = <50000000>; - status = "okay"; -}; -&uart1 { - current-speed = <115200>; - device_type = "serial"; - port-number = <1>; - status = "okay"; -}; -&usb0 { - dr_mode = "host"; - phy_type = "ulpi"; - status = "okay"; -}; -&clkc { - fclk-enable = <0xf>; - ps-clk-frequency = <33333333>; -}; -&spi0 { - is-decoded-cs = <0>; - num-cs = <3>; - status = "okay"; - device@0 { - compatible = "spidev"; - reg = <0>; // Chip select 0 - spi-max-frequency = <500000>; - spi-cpol = <0x0>; - spi-cpha = <0x0>; - }; -}; -&uart0 { - current-speed = <115200>; - device_type = "serial"; - port-number = <0>; - status = "okay"; -}; diff --git a/fpga/sw/device-tree/2015.1/zedboard/zynq-7000.dtsi b/fpga/sw/device-tree/2015.1/zedboard/zynq-7000.dtsi deleted file mode 100644 index efa59c0c..00000000 --- a/fpga/sw/device-tree/2015.1/zedboard/zynq-7000.dtsi +++ /dev/null @@ -1,399 +0,0 @@ -/* - * Copyright (C) 2011 - 2014 Xilinx - * - * This software is licensed under the terms of the GNU General Public - * License version 2, as published by the Free Software Foundation, and - * may be copied, distributed, and modified under those terms. - * - * 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. - */ -/include/ "skeleton.dtsi" - -/ { - compatible = "xlnx,zynq-7000"; - - cpus { - #address-cells = <1>; - #size-cells = <0>; - - cpu@0 { - compatible = "arm,cortex-a9"; - device_type = "cpu"; - reg = <0>; - clocks = <&clkc 3>; - clock-latency = <1000>; - cpu0-supply = <®ulator_vccpint>; - operating-points = < - /* kHz uV */ - 666667 1000000 - 333334 1000000 - >; - }; - - cpu@1 { - compatible = "arm,cortex-a9"; - device_type = "cpu"; - reg = <1>; - clocks = <&clkc 3>; - }; - }; - - pmu@f8891000 { - compatible = "arm,cortex-a9-pmu"; - interrupts = <0 5 4>, <0 6 4>; - interrupt-parent = <&intc>; - reg = < 0xf8891000 0x1000 0xf8893000 0x1000 >; - }; - - regulator_vccpint: fixedregulator { - compatible = "regulator-fixed"; - regulator-name = "VCCPINT"; - regulator-min-microvolt = <1000000>; - regulator-max-microvolt = <1000000>; - regulator-boot-on; - regulator-always-on; - }; - - amba: amba { - compatible = "simple-bus"; - #address-cells = <1>; - #size-cells = <1>; - interrupt-parent = <&intc>; - ranges; - - adc: adc@f8007100 { - compatible = "xlnx,zynq-xadc-1.00.a"; - reg = <0xf8007100 0x20>; - interrupts = <0 7 4>; - interrupt-parent = <&intc>; - clocks = <&clkc 12>; - }; - - can0: can@e0008000 { - compatible = "xlnx,zynq-can-1.0"; - status = "disabled"; - clocks = <&clkc 19>, <&clkc 36>; - clock-names = "can_clk", "pclk"; - reg = <0xe0008000 0x1000>; - interrupts = <0 28 4>; - interrupt-parent = <&intc>; - tx-fifo-depth = <0x40>; - rx-fifo-depth = <0x40>; - }; - - can1: can@e0009000 { - compatible = "xlnx,zynq-can-1.0"; - status = "disabled"; - clocks = <&clkc 20>, <&clkc 37>; - clock-names = "can_clk", "pclk"; - reg = <0xe0009000 0x1000>; - interrupts = <0 51 4>; - interrupt-parent = <&intc>; - tx-fifo-depth = <0x40>; - rx-fifo-depth = <0x40>; - }; - - gpio0: gpio@e000a000 { - compatible = "xlnx,zynq-gpio-1.0"; - #gpio-cells = <2>; - clocks = <&clkc 42>; - gpio-controller; - interrupt-parent = <&intc>; - interrupts = <0 20 4>; - reg = <0xe000a000 0x1000>; - }; - - i2c0: i2c@e0004000 { - compatible = "cdns,i2c-r1p10"; - status = "disabled"; - clocks = <&clkc 38>; - interrupt-parent = <&intc>; - interrupts = <0 25 4>; - reg = <0xe0004000 0x1000>; - #address-cells = <1>; - #size-cells = <0>; - }; - - i2c1: i2c@e0005000 { - compatible = "cdns,i2c-r1p10"; - status = "disabled"; - clocks = <&clkc 39>; - interrupt-parent = <&intc>; - interrupts = <0 48 4>; - reg = <0xe0005000 0x1000>; - #address-cells = <1>; - #size-cells = <0>; - }; - - intc: interrupt-controller@f8f01000 { - compatible = "arm,cortex-a9-gic"; - #interrupt-cells = <3>; - interrupt-controller; - reg = <0xF8F01000 0x1000>, - <0xF8F00100 0x100>; - }; - - L2: cache-controller@f8f02000 { - compatible = "arm,pl310-cache"; - reg = <0xF8F02000 0x1000>; - arm,data-latency = <3 2 2>; - arm,tag-latency = <2 2 2>; - cache-unified; - cache-level = <2>; - }; - - mc: memory-controller@f8006000 { - compatible = "xlnx,zynq-ddrc-a05"; - reg = <0xf8006000 0x1000>; - xlnx,has-ecc = <0x0>; - }; - - ocmc: ocmc@f800c000 { - compatible = "xlnx,zynq-ocmc-1.0"; - interrupt-parent = <&intc>; - interrupts = <0 3 4>; - reg = <0xf800c000 0x1000>; - }; - - uart0: serial@e0000000 { - compatible = "xlnx,xuartps", "cdns,uart-r1p8"; - status = "disabled"; - clocks = <&clkc 23>, <&clkc 40>; - clock-names = "uart_clk", "pclk"; - reg = <0xE0000000 0x1000>; - interrupts = <0 27 4>; - }; - - uart1: serial@e0001000 { - compatible = "xlnx,xuartps", "cdns,uart-r1p8"; - status = "disabled"; - clocks = <&clkc 24>, <&clkc 41>; - clock-names = "uart_clk", "pclk"; - reg = <0xE0001000 0x1000>; - interrupts = <0 50 4>; - }; - - spi0: spi@e0006000 { - compatible = "xlnx,zynq-spi-r1p6"; - reg = <0xe0006000 0x1000>; - status = "disabled"; - interrupt-parent = <&intc>; - interrupts = <0 26 4>; - clocks = <&clkc 25>, <&clkc 34>; - clock-names = "ref_clk", "pclk"; - #address-cells = <1>; - #size-cells = <0>; - }; - - spi1: spi@e0007000 { - compatible = "xlnx,zynq-spi-r1p6"; - reg = <0xe0007000 0x1000>; - status = "disabled"; - interrupt-parent = <&intc>; - interrupts = <0 49 4>; - clocks = <&clkc 26>, <&clkc 35>; - clock-names = "ref_clk", "pclk"; - #address-cells = <1>; - #size-cells = <0>; - }; - - qspi: spi@e000d000 { - clock-names = "ref_clk", "pclk"; - clocks = <&clkc 10>, <&clkc 43>; - compatible = "xlnx,zynq-qspi-1.0"; - status = "disabled"; - interrupt-parent = <&intc>; - interrupts = <0 19 4>; - reg = <0xe000d000 0x1000>; - #address-cells = <1>; - #size-cells = <0>; - }; - - smcc: memory-controller@e000e000 { - #address-cells = <1>; - #size-cells = <1>; - status = "disabled"; - clock-names = "memclk", "aclk"; - clocks = <&clkc 11>, <&clkc 44>; - compatible = "arm,pl353-smc-r2p1"; - interrupt-parent = <&intc>; - interrupts = <0 18 4>; - ranges ; - reg = <0xe000e000 0x1000>; - nand0: flash@e1000000 { - status = "disabled"; - compatible = "arm,pl353-nand-r2p1"; - reg = <0xe1000000 0x1000000>; - #address-cells = <0x1>; - #size-cells = <0x1>; - }; - nor0: flash@e2000000 { - status = "disabled"; - compatible = "cfi-flash"; - reg = <0xe2000000 0x1000>; - #address-cells = <1>; - #size-cells = <1>; - }; - }; - - gem0: ethernet@e000b000 { - compatible = "xlnx,ps7-ethernet-1.00.a"; - reg = <0xe000b000 0x1000>; - status = "disabled"; - interrupts = <0 22 4>; - clocks = <&clkc 13>, <&clkc 30>; - clock-names = "ref_clk", "aper_clk"; - xlnx,has-mdio = <0x1>; - local-mac-address = [0E BE 06 33 5F C6]; - #address-cells = <1>; - #size-cells = <0>; - }; - - gem1: ethernet@e000c000 { - compatible = "xlnx,ps7-ethernet-1.00.a"; - reg = <0xe000c000 0x1000>; - status = "disabled"; - interrupts = <0 45 4>; - clocks = <&clkc 14>, <&clkc 31>; - clock-names = "ref_clk", "aper_clk"; - xlnx,has-mdio = <0x1>; - #address-cells = <1>; - #size-cells = <0>; - }; - - sdhci0: sdhci@e0100000 { - compatible = "arasan,sdhci-8.9a"; - status = "disabled"; - clock-names = "clk_xin", "clk_ahb"; - clocks = <&clkc 21>, <&clkc 32>; - interrupt-parent = <&intc>; - interrupts = <0 24 4>; - reg = <0xe0100000 0x1000>; - }; - - sdhci1: sdhci@e0101000 { - compatible = "arasan,sdhci-8.9a"; - status = "disabled"; - clock-names = "clk_xin", "clk_ahb"; - clocks = <&clkc 22>, <&clkc 33>; - interrupt-parent = <&intc>; - interrupts = <0 47 4>; - reg = <0xe0101000 0x1000>; - }; - - slcr: slcr@f8000000 { - #address-cells = <1>; - #size-cells = <1>; - compatible = "xlnx,zynq-slcr", "syscon"; - reg = <0xF8000000 0x1000>; - ranges; - clkc: clkc@100 { - #clock-cells = <1>; - compatible = "xlnx,ps7-clkc"; - ps-clk-frequency = <33333333>; - fclk-enable = <0xf>; - clock-output-names = "armpll", "ddrpll", "iopll", "cpu_6or4x", - "cpu_3or2x", "cpu_2x", "cpu_1x", "ddr2x", "ddr3x", - "dci", "lqspi", "smc", "pcap", "gem0", "gem1", - "fclk0", "fclk1", "fclk2", "fclk3", "can0", "can1", - "sdio0", "sdio1", "uart0", "uart1", "spi0", "spi1", - "dma", "usb0_aper", "usb1_aper", "gem0_aper", - "gem1_aper", "sdio0_aper", "sdio1_aper", - "spi0_aper", "spi1_aper", "can0_aper", "can1_aper", - "i2c0_aper", "i2c1_aper", "uart0_aper", "uart1_aper", - "gpio_aper", "lqspi_aper", "smc_aper", "swdt", - "dbg_trc", "dbg_apb"; - reg = <0x100 0x100>; - }; - }; - - dmac_s: dmac@f8003000 { - compatible = "arm,pl330", "arm,primecell"; - reg = <0xf8003000 0x1000>; - interrupt-parent = <&intc>; - interrupt-names = "abort", "dma0", "dma1", "dma2", "dma3", - "dma4", "dma5", "dma6", "dma7"; - interrupts = <0 13 4>, - <0 14 4>, <0 15 4>, - <0 16 4>, <0 17 4>, - <0 40 4>, <0 41 4>, - <0 42 4>, <0 43 4>; - #dma-cells = <1>; - #dma-channels = <8>; - #dma-requests = <4>; - clocks = <&clkc 27>; - clock-names = "apb_pclk"; - }; - - devcfg: devcfg@f8007000 { - clock-names = "ref_clk", "fclk0", "fclk1", "fclk2", "fclk3"; - clocks = <&clkc 12>, <&clkc 15>, <&clkc 16>, <&clkc 17>, <&clkc 18>; - compatible = "xlnx,zynq-devcfg-1.0"; - interrupt-parent = <&intc>; - interrupts = <0 8 4>; - reg = <0xf8007000 0x100>; - }; - - global_timer: timer@f8f00200 { - compatible = "arm,cortex-a9-global-timer"; - reg = <0xf8f00200 0x20>; - interrupts = <1 11 0x301>; - interrupt-parent = <&intc>; - clocks = <&clkc 4>; - }; - - ttc0: timer@f8001000 { - interrupt-parent = <&intc>; - interrupts = <0 10 4>, <0 11 4>, <0 12 4>; - compatible = "cdns,ttc"; - clocks = <&clkc 6>; - reg = <0xF8001000 0x1000>; - }; - - ttc1: timer@f8002000 { - interrupt-parent = <&intc>; - interrupts = <0 37 4>, <0 38 4>, <0 39 4>; - compatible = "cdns,ttc"; - clocks = <&clkc 6>; - reg = <0xF8002000 0x1000>; - }; - - scutimer: timer@f8f00600 { - interrupt-parent = <&intc>; - interrupts = <1 13 0x301>; - compatible = "arm,cortex-a9-twd-timer"; - reg = <0xf8f00600 0x20>; - clocks = <&clkc 4>; - }; - - watchdog0: watchdog@f8005000 { - clocks = <&clkc 45>; - compatible = "cdns,wdt-r1p2"; - interrupt-parent = <&intc>; - interrupts = <0 9 1>; - reg = <0xf8005000 0x1000>; - timeout-sec = <10>; - }; - - usb0: usb@e0002000 { - clocks = <&clkc 28>; - compatible = "xlnx,ps7-usb-1.00.a", "xlnx,zynq-usb-1.00.a"; - status = "disabled"; - interrupt-parent = <&intc>; - interrupts = <0 21 4>; - reg = <0xe0002000 0x1000>; - }; - - usb1: usb@e0003000 { - clocks = <&clkc 29>; - compatible = "xlnx,ps7-usb-1.00.a", "xlnx,zynq-usb-1.00.a"; - status = "disabled"; - interrupt-parent = <&intc>; - interrupts = <0 44 4>; - reg = <0xe0003000 0x1000>; - }; - }; -}; diff --git a/fpga/sw/device-tree/2015.1/zybo/pl.dtsi b/fpga/sw/device-tree/2015.1/zybo/pl.dtsi deleted file mode 120000 index 491f3eaa..00000000 --- a/fpga/sw/device-tree/2015.1/zybo/pl.dtsi +++ /dev/null @@ -1 +0,0 @@ -../zedboard/pl.dtsi \ No newline at end of file diff --git a/fpga/sw/device-tree/2015.1/zybo/ps.dtsi b/fpga/sw/device-tree/2015.1/zybo/ps.dtsi deleted file mode 100644 index 619bf006..00000000 --- a/fpga/sw/device-tree/2015.1/zybo/ps.dtsi +++ /dev/null @@ -1,435 +0,0 @@ - -/{ - #address-cells = <1>; - #size-cells = <1>; - compatible = "xlnx,zynq-7000"; - cpus { - #address-cells = <1>; - #size-cells = <0>; - ps7_cortexa9_0: cpu@0 { - bus-handle = <&ps7_axi_interconnect_0>; - clock-latency = <1000>; - clocks = <&clkc 3>; - compatible = "arm,cortex-a9"; - device_type = "cpu"; - interrupt-handle = <&ps7_scugic_0>; - operating-points = <666667 1000000 333334 1000000 222223 1000000>; - } ; - ps7_cortexa9_1: cpu@1 { - bus-handle = <&ps7_axi_interconnect_0>; - clock-latency = <1000>; - clocks = <&clkc 3>; - compatible = "arm,cortex-a9"; - device_type = "cpu"; - interrupt-handle = <&ps7_scugic_0>; - operating-points = <666667 1000000 333334 1000000 222223 1000000>; - } ; - } ; - ps7_pmu: ps7_pmu@0xf8891000 { - compatible = "arm,cortex-a9-pmu"; - reg = <0xf8891000 0x1000>, <0xf8893000 0x1000>; - reg-names = "cpu0", "cpu1"; - } ; - ps7_axi_interconnect_0: amba@0 { - #address-cells = <1>; - #size-cells = <1>; - compatible = "xlnx,ps7-axi-interconnect-1.00.a", "simple-bus"; - ranges ; - ps7_afi_0: ps7-afi@f8008000 { - compatible = "xlnx,ps7-afi-1.00.a"; - reg = <0xf8008000 0x1000>; - } ; - ps7_afi_1: ps7-afi@f8009000 { - compatible = "xlnx,ps7-afi-1.00.a"; - reg = <0xf8009000 0x1000>; - } ; - ps7_afi_2: ps7-afi@f800a000 { - compatible = "xlnx,ps7-afi-1.00.a"; - reg = <0xf800a000 0x1000>; - } ; - ps7_afi_3: ps7-afi@f800b000 { - compatible = "xlnx,ps7-afi-1.00.a"; - reg = <0xf800b000 0x1000>; - } ; - ps7_coresight_comp_0: ps7-coresight-comp@f8800000 { - compatible = "xlnx,ps7-coresight-comp-1.00.a"; - reg = <0xf8800000 0x100000>; - } ; - ps7_ddrc_0: ps7-ddrc@f8006000 { - compatible = "xlnx,zynq-ddrc-1.0"; - reg = <0xf8006000 0x1000>; - xlnx,has-ecc = <0x0>; - } ; - ps7_dev_cfg_0: ps7-dev-cfg@f8007000 { - clock-names = "ref_clk", "fclk0", "fclk1", "fclk2", "fclk3"; - clocks = <&clkc 12>, <&clkc 15>, <&clkc 16>, <&clkc 17>, <&clkc 18>; - compatible = "xlnx,zynq-devcfg-1.0"; - interrupt-parent = <&ps7_scugic_0>; - interrupts = <0 8 4>; - reg = <0xf8007000 0x100>; - } ; - ps7_dma_s: ps7-dma@f8003000 { - #dma-cells = <1>; - #dma-channels = <8>; - #dma-requests = <4>; - clock-names = "apb_pclk"; - clocks = <&clkc 27>; - compatible = "arm,primecell", "arm,pl330"; - interrupt-names = "abort", "dma0", "dma1", "dma2", "dma3", "dma4", "dma5", "dma6", "dma7"; - interrupt-parent = <&ps7_scugic_0>; - interrupts = <0 13 4>, <0 14 4>, <0 15 4>, <0 16 4>, <0 17 4>, <0 40 4>, <0 41 4>, <0 42 4>, <0 43 4>; - reg = <0xf8003000 0x1000>; - } ; - ps7_ethernet_0: ps7-ethernet@e000b000 { - #address-cells = <1>; - #size-cells = <0>; - clock-names = "ref_clk", "aper_clk"; - clocks = <&clkc 13>, <&clkc 30>; - compatible = "xlnx,ps7-ethernet-1.00.a"; - interrupt-parent = <&ps7_scugic_0>; - interrupts = <0 22 4>; - local-mac-address = [00 0a 35 00 00 00]; - phy-handle = <&phy0>; - phy-mode = "rgmii-id"; - reg = <0xe000b000 0x1000>; - xlnx,ptp-enet-clock = <0x6750918>; - xlnx,enet-reset = ""; - xlnx,eth-mode = <0x1>; - xlnx,has-mdio = <0x1>; - mdio { - #address-cells = <1>; - #size-cells = <0>; - phy0: phy@1 { - compatible = "realtek,RTL8211E"; - device_type = "ethernet-phy"; - reg = <1>; - } ; - - } ; - } ; - ps7_globaltimer_0: ps7-globaltimer@f8f00200 { - clocks = <&clkc 4>; - compatible = "arm,cortex-a9-global-timer"; - interrupt-parent = <&ps7_scugic_0>; - interrupts = <1 11 0x301>; - reg = <0xf8f00200 0x100>; - } ; - ps7_gpio_0: ps7-gpio@e000a000 { - #gpio-cells = <2>; - clocks = <&clkc 42>; - compatible = "xlnx,zynq-gpio-1.0"; - emio-gpio-width = <64>; - gpio-controller ; - gpio-mask-high = <0x0>; - gpio-mask-low = <0x5600>; - interrupt-parent = <&ps7_scugic_0>; - interrupts = <0 20 4>; - reg = <0xe000a000 0x1000>; - xlnx,emio-gpio-width = <0x40>; - xlnx,mio-gpio-mask = <0x5600>; - } ; - ps7_gpv_0: ps7-gpv@f8900000 { - compatible = "xlnx,ps7-gpv-1.00.a"; - reg = <0xf8900000 0x100000>; - } ; - ps7_i2c_0: ps7-i2c@e0004000 { - clock-frequency = <400000>; - clocks = <&clkc 38>; - compatible = "cdns,i2c-r1p10"; - interrupt-parent = <&ps7_scugic_0>; - interrupts = <0 25 4>; - reg = <0xe0004000 0x1000>; - xlnx,has-interrupt = <0x1>; - xlnx,i2c-reset = ""; - } ; - ps7_intc_dist_0: ps7-intc-dist@f8f01000 { - compatible = "xlnx,ps7-intc-dist-1.00.a"; - reg = <0xf8f01000 0x1000>; - } ; - ps7_iop_bus_config_0: ps7-iop-bus-config@e0200000 { - compatible = "xlnx,ps7-iop-bus-config-1.00.a"; - reg = <0xe0200000 0x1000>; - } ; - ps7_l2cachec_0: ps7-l2cachec@f8f02000 { - compatible = "xlnx,ps7-l2cachec-1.00.a"; - reg = <0xf8f02000 0x1000>; - } ; - ps7_ocmc_0: ps7-ocmc@f800c000 { - compatible = "xlnx,zynq-ocmc-1.0"; - interrupt-parent = <&ps7_scugic_0>; - interrupts = <0 3 4>; - reg = <0xf800c000 0x1000>; - } ; - ps7_pl310_0: ps7-pl310@f8f02000 { - arm,data-latency = <3 2 2>; - arm,tag-latency = <2 2 2>; - cache-level = <2>; - cache-unified ; - compatible = "arm,pl310-cache"; - interrupt-parent = <&ps7_scugic_0>; - interrupts = <0 2 4>; - reg = <0xf8f02000 0x1000>; - } ; - ps7_qspi_0: ps7-qspi@e000d000 { - #address-cells = <1>; - #size-cells = <0>; - clock-names = "ref_clk", "pclk"; - clocks = <&clkc 10>, <&clkc 43>; - compatible = "xlnx,zynq-qspi-1.0"; - interrupt-parent = <&ps7_scugic_0>; - interrupts = <0 19 4>; - is-dual = <0>; - num-cs = <1>; - reg = <0xe000d000 0x1000>; - xlnx,fb-clk = <0x1>; - xlnx,qspi-mode = <0x0>; - } ; - ps7_qspi_linear_0: ps7-qspi-linear@fc000000 { - clock-names = "ref_clk", "aper_clk"; - clocks = <&clkc 10>, <&clkc 43>; - compatible = "xlnx,ps7-qspi-linear-1.00.a"; - reg = <0xfc000000 0x1000000>; - } ; - ps7_ram_0: ps7-ram@00000000 { - compatible = "xlnx,ps7-ocm"; - interrupt-parent = <&ps7_scugic_0>; - interrupts = <0 3 4>; - reg = <0xfffc0000 0x40000>; - } ; - ps7_scuc_0: ps7-scuc@f8f00000 { - compatible = "xlnx,ps7-scuc-1.00.a"; - reg = <0xf8f00000 0xfd>; - } ; - ps7_scugic_0: ps7-scugic@f8f00100 { - #address-cells = <2>; - #interrupt-cells = <3>; - #size-cells = <1>; - compatible = "arm,cortex-a9-gic", "arm,gic"; - interrupt-controller ; - num_cpus = <2>; - num_interrupts = <96>; - reg = <0xF8F01000 0x1000 0xF8F00100 0x100>; - xlnx,irq-f2p-mode = "DIRECT"; - } ; - ps7_scutimer_0: ps7-scutimer@f8f00600 { - clocks = <&clkc 4>; - compatible = "arm,cortex-a9-twd-timer"; - interrupt-parent = <&ps7_scugic_0>; - interrupts = <1 13 0x301>; - reg = <0xf8f00600 0x20>; - } ; - ps7_scuwdt_0: watchdog@f8f00620 { - clocks = <&clkc 4>; - compatible = "xlnx,zynq-scuwdt-1.00.a"; - device_type = "watchdog"; - interrupt-parent = <&ps7_scugic_0>; - interrupts = <1 14 0x301>; - reg = <0xf8f00620 0xe0>; - } ; - ps7_sd_0: ps7-sdio@e0100000 { - clock-frequency = <50000000>; - clock-names = "clk_xin", "clk_ahb"; - clocks = <&clkc 21>, <&clkc 32>; - compatible = "arasan,sdhci-8.9a"; - interrupt-parent = <&ps7_scugic_0>; - interrupts = <0 24 4>; - reg = <0xe0100000 0x1000>; - xlnx,has-cd = <0x1>; - xlnx,has-power = <0x0>; - xlnx,has-wp = <0x1>; - } ; - ps7_slcr_0: ps7-slcr@f8000000 { - #address-cells = <1>; - #size-cells = <1>; - compatible = "xlnx,zynq-slcr", "syscon"; - ranges ; - reg = <0xf8000000 0x1000>; - clkc: clkc@0x100 { - #clock-cells = <1>; - clock-output-names = "armpll", "ddrpll", "iopll", "cpu_6or4x", "cpu_3or2x", "cpu_2x", "cpu_1x", "ddr2x", "ddr3x", "dci", "lqspi", "smc", "pcap", "gem0", "gem1", "fclk0", "fclk1", "fclk2", "fclk3", "can0", "can1", "sdio0", "sdio1", "uart0", "uart1", "spi0", "spi1", "dma", "usb0_aper", "usb1_aper", "gem0_aper", "gem1_aper", "sdio0_aper", "sdio1_aper", "spi0_aper", "spi1_aper", "can0_aper", "can1_aper", "i2c0_aper", "i2c1_aper", "uart0_aper", "uart1_aper", "gpio_aper", "lqspi_aper", "smc_aper", "swdt", "dbg_trc", "dbg_apb"; - compatible = "xlnx,ps7-clkc"; - fclk-enable = <0xf>; - ps-clk-frequency = <50000000>; - reg = <0x100 0x100>; - } ; - } ; - ps7_spi_0: ps7-spi@e0006000 { - clock-names = "ref_clk", "pclk"; - clocks = <&clkc 25>, <&clkc 34>; - compatible = "cdns,spi-r1p6"; - interrupt-parent = <&ps7_scugic_0>; - interrupts = <0 26 4>; - is-decoded-cs = <0>; - num-cs = <3>; - reg = <0xe0006000 0x1000>; - xlnx,has-ss0 = <0x1>; - xlnx,has-ss1 = <0x1>; - xlnx,has-ss2 = <0x1>; - #address-cells=<1>; - #size-cells=<0>; - status = "okay"; - device@0 { - compatible = "spidev"; - reg = <0>; // Chip select 0 - spi-max-frequency = <500000>; - spi-cpol = <0x0>; - spi-cpha = <0x0>; - }; - } ; - ps7_ttc_0: ps7-ttc@f8001000 { - clocks = <&clkc 6>; - compatible = "cdns,ttc"; - interrupt-names = "ttc0", "ttc1", "ttc2"; - interrupt-parent = <&ps7_scugic_0>; - interrupts = <0 10 4>, <0 11 4>, <0 12 4>; - reg = <0xf8001000 0x1000>; - xlnx,ttc-clk0-clksrc = <0x0>; - xlnx,ttc-clk0-freq-hz = <0x6750918>; - xlnx,ttc-clk1-clksrc = <0x0>; - xlnx,ttc-clk1-freq-hz = <0x6750918>; - xlnx,ttc-clk2-clksrc = <0x0>; - xlnx,ttc-clk2-freq-hz = <0x6750918>; - } ; - ps7_uart_1: serial@e0001000 { - clock-names = "ref_clk", "aper_clk"; - clocks = <&clkc 24>, <&clkc 41>; - compatible = "xlnx,xuartps"; - current-speed = <115200>; - device_type = "serial"; - interrupt-parent = <&ps7_scugic_0>; - interrupts = <0 50 4>; - port-number = <0>; - reg = <0xe0001000 0x1000>; - xlnx,has-modem = <0x0>; - } ; - ps7_usb_0: ps7-usb@e0002000 { - clocks = <&clkc 28>; - compatible = "xlnx,zynq-usb-1.00.a"; - dr_mode = "host"; - interrupt-parent = <&ps7_scugic_0>; - interrupts = <0 21 4>; - phy_type = "ulpi"; - reg = <0xe0002000 0x1000>; - usb-reset = <&ps7_gpio_0 46 0>; - } ; - ps7_xadc_0: ps7-xadc@f8007100 { - clocks = <&clkc 12>; - compatible = "xlnx,zynq-xadc-1.00.a"; - interrupt-parent = <&ps7_scugic_0>; - interrupts = <0 7 4>; - reg = <0xf8007100 0x21>; - } ; - ps7_can_0: ps7-can@0xe0008000 { - clock-names = "ref_clk", "aper_clk"; - clocks = <&clkc 19>, <&clkc 36>; - compatible = "xlnx,ps7-can-1.00.a"; - interrupt-parent = <&ps7_scugic_0>; - interrupts = <0 28 4>; - reg = <0xE0008000 0x1000>; - status = "disabled"; - } ; - ps7_can_1: ps7-can@0xe0009000 { - clock-names = "ref_clk", "aper_clk"; - clocks = <&clkc 20>, <&clkc 37>; - compatible = "xlnx,ps7-can-1.00.a"; - interrupt-parent = <&ps7_scugic_0>; - interrupts = <0 51 4>; - reg = <0xE0009000 0x1>; - status = "disabled"; - } ; - ps7_ethernet_1: ps7-ethernet@0xe000c000 { - clock-names = "ref_clk", "aper_clk"; - clocks = <&clkc 14>, <&clkc 31>; - compatible = "xlnx,ps7-ethernet-1.00.a"; - interrupt-parent = <&ps7_scugic_0>; - interrupts = <0 45 4>; - reg = <0xE000C000 0x1000>; - status = "disabled"; - } ; - ps7_i2c_1: ps7-i2c@0xe0005000 { - clocks = <&clkc 39>; - compatible = "xlnx,ps7-i2c-1.00.a"; - interrupt-parent = <&ps7_scugic_0>; - interrupts = <0 48 4>; - reg = <0xE0005000 0x1000>; - status = "disabled"; - } ; - ps7_nand_0: ps7-nand@0xe1000000 { - compatible = "xlnx,ps7-nand-1.00.a"; - reg = <0xE1000000 0x1000000>; - status = "disabled"; - } ; - ps7_sd_1: ps7-sd@0xe0101000 { - clock-names = "ref_clk", "aper_clk"; - clocks = <&clkc 22>, <&clkc 33>; - compatible = "xlnx,ps7-sd-1.00.a"; - interrupt-parent = <&ps7_scugic_0>; - interrupts = <0 47 4>; - reg = <0xE0101000 0x1000>; - status = "disabled"; - } ; - ps7_smcc_0: ps7-smcc@0xe000e000 { - clock-names = "ref_clk", "aper_clk"; - clocks = <&clkc 11>, <&clkc 44>; - compatible = "xlnx,ps7-smcc-1.00.a"; - interrupt-parent = <&ps7_scugic_0>; - interrupts = <0 18 4>; - reg = <0xE000E000 0x1000>; - status = "disabled"; - } ; - ps7_spi_1: ps7-spi@0xe0007000 { - clock-names = "ref_clk", "aper_clk"; - clocks = <&clkc 26>, <&clkc 35>; - compatible = "xlnx,ps7-spi-1.00.a"; - interrupt-parent = <&ps7_scugic_0>; - interrupts = <0 49 4>; - reg = <0xE0007000 0x1000>; - status = "disabled"; - } ; - ps7_sram_0: ps7-sram@0xe2000000 { - compatible = "xlnx,ps7-sram-1.00.a"; - reg = <0xE2000000 0x2000000>; - status = "disabled"; - } ; - ps7_trace_0: ps7-trace@0xe1000000 { - compatible = "xlnx,ps7-trace-1.00.a"; - reg = <0xE1000000 0x1000>; - status = "disabled"; - } ; - ps7_ttc_1: ps7-ttc@0xf8002000 { - clocks = <&clkc 6>; - compatible = "xlnx,ps7-ttc-1.00.a"; - interrupt-parent = <&ps7_scugic_0>; - interrupts = <0 37 4>, <0 38 4>, <0 39 4>; - reg = <0xF8002000 0x1000>; - status = "disabled"; - } ; - ps7_uart_0: ps7-uart@0xe0000000 { - clock-names = "ref_clk", "aper_clk"; - clocks = <&clkc 23>, <&clkc 40>; - compatible = "xlnx,xuartps"; - current-speed = <115200>; - device_type = "serial"; - interrupt-parent = <&ps7_scugic_0>; - interrupts = <0 27 4>; - port-number = <1>; - reg = <0xE0000000 0x1000>; - } ; - ps7_usb_1: ps7-usb@0xe0003000 { - clocks = <&clkc 29>; - compatible = "xlnx,ps7-usb-1.00.a"; - interrupt-parent = <&ps7_scugic_0>; - interrupts = <0 44 4>; - reg = <0xE0003000 0x1000>; - status = "disabled"; - } ; - ps7_wdt_0: ps7-wdt@0xf8005000 { - clocks = <&clkc 45>; - compatible = "xlnx,ps7-wdt-1.00.a"; - interrupt-parent = <&ps7_scugic_0>; - interrupts = <0 9 1>; - reg = <0xF8005000 0x1000>; - status = "disabled"; - } ; - } ; -} ; diff --git a/fpga/sw/device-tree/2015.1/zybo/system.dts b/fpga/sw/device-tree/2015.1/zybo/system.dts deleted file mode 100644 index f07e592f..00000000 --- a/fpga/sw/device-tree/2015.1/zybo/system.dts +++ /dev/null @@ -1,25 +0,0 @@ -/* - * CAUTION: This file is automatically generated by Xilinx. - * Version: - * Today is: Sat Dec 13 21:06:50 2014 -*/ - -/dts-v1/; -/include/ "ps.dtsi" -/include/ "pl.dtsi" -/{ - chosen { - bootargs = "console=ttyPS0,115200 ip=on root=/dev/mmcblk0p2 rw earlyprintk"; - linux,stdout-path = &ps7_uart_1; - } ; - aliases { - ethernet0 = &ps7_ethernet_0; - i2c0 = &ps7_i2c_0; - serial0 = &ps7_uart_1; - spi0 = &ps7_qspi_0; - } ; - ps7_ddr_0: memory@00100000 { - device_type = "memory"; - reg = <0x0 0x20000000>; - } ; -}; diff --git a/fpga/sw/hsi/dt.tcl b/fpga/sw/hsi/dt.tcl new file mode 100644 index 00000000..595fbd3c --- /dev/null +++ b/fpga/sw/hsi/dt.tcl @@ -0,0 +1,10 @@ +set out_dir [lindex $argv 0] +if { ${out_dir} eq "" } { + puts "ERROR: Please supply an output directory!" + exit 1 +} + +open_hw_design pulpemu_top.sysdef +set_repo_path ../device_tree_repo +create_sw_design device-tree -os device_tree -proc ps7_cortexa9_0 +generate_target -dir ${out_dir} From b9ab8c5b65349acf61a658c75a22889a33af0cc7 Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Wed, 13 Nov 2019 13:08:28 +0100 Subject: [PATCH 52/54] fpga: add support for Xilinx Vivado 2018.3 Switch defaults to use - Xilinx SDK 2018.3 toolchain including linux-xlnx - Xilinx FP FMA IP from 7.0 to 7.1 - buildroot from 2015.05 to 2017.08 - busybox from 1.23.2 to 1.27.1 Move writing hwdef and sysdef files into implementation phase and call write_sysdef explicitly (because newer version of Vivado do not do it automatically anymore). This was tested on Vivado 2015.1 and 2018.3 with Zedboard only. --- fpga/README.md | 14 +- fpga/common/common.tcl | 4 + fpga/ips/xilinx_fp_fma/tcl/run.tcl | 6 +- fpga/pulpemu/Makefile | 2 - fpga/pulpemu/tcl/impl.tcl | 8 + fpga/pulpemu/tcl/ps7_bd.tcl | 189 +- fpga/pulpemu/tcl/run.tcl | 12 +- fpga/sw/Makefile | 5 +- fpga/sw/apps/gpio_access/Makefile | 6 +- fpga/sw/apps/spiload/Makefile | 6 +- fpga/sw/config/buildroot.config.2018.3 | 2589 ++++++++++ fpga/sw/config/busybox.config.2018.3 | 1054 ++++ fpga/sw/config/kernel.config.2018.3 | 4551 +++++++++++++++++ .../config/u-boot-xlnx-def-env.patch.2018.3 | 22 + fpga/sw/config/u-boot.config.zedboard.2018.3 | 1164 +++++ fpga/sw/config/u-boot.config.zybo.2018.3 | 454 ++ fpga/sw/device-tree/2018.3-zedboard.dts | 530 ++ 17 files changed, 10555 insertions(+), 61 deletions(-) create mode 100644 fpga/sw/config/buildroot.config.2018.3 create mode 100644 fpga/sw/config/busybox.config.2018.3 create mode 100644 fpga/sw/config/kernel.config.2018.3 create mode 100644 fpga/sw/config/u-boot-xlnx-def-env.patch.2018.3 create mode 100644 fpga/sw/config/u-boot.config.zedboard.2018.3 create mode 100644 fpga/sw/config/u-boot.config.zybo.2018.3 create mode 100644 fpga/sw/device-tree/2018.3-zedboard.dts diff --git a/fpga/README.md b/fpga/README.md index f962c3d8..bddb746b 100644 --- a/fpga/README.md +++ b/fpga/README.md @@ -13,9 +13,12 @@ or Note that if `BOARD` is not set, it defaults to zedboard. +Additionally, you have to tell the build system which Vivado version it should use +via the `VIVADO_VERSION` variable in the format `yyyy.vv`, e.g., `2015.1`. +If not set it will default to `2018.3`. -This environment variable has to be set during compilation of all FPGA related -components. If you accidentally forget to set the environment variable during +These environment variables have to be set during compilation of all FPGA related +components. If you accidentally forget to set an environment variable during part of the compilation process, you may end up with a mixed zedboard/zybo build which will not work correctly. @@ -28,9 +31,9 @@ The components that are affected by the BOARD variable are: ## Requirements -This synthesis flow has been tested with `Vivado 2015.1`, there is no guarantee +This synthesis flow has been tested with Vivado 2015.1 and 2018.3. There is no guarantee that it is going to work with any other version without modifications to the -scripts. +scripts - most likely it won't. For convenience reasons it is best to connect the ZedBoard to your local network. This way you can easily transfer files from your host computer to the @@ -58,7 +61,7 @@ Linux running on the ARM cores of the ZYNQ. If you want to use the riscy core, do not set `USE_ZERO_RISCY` and set `RISCY_RV32F` for riscy with floating point extensions. -3. Type `make all` in the fpga directory (or `vivado-2015.1 make clean all`). +3. Type `make all` in the fpga directory. This builds the FPGA bitstream for the ZedBoard, downloads and compiles linux and u-boot, prepares the fsbl and devicetree, downloads and compiles buildroot and builds the boot.bin image for booting the ZYNQ. @@ -114,7 +117,6 @@ Linux running on the ARM cores of the ZYNQ. 3. Compile the spiload application for the ZYNQ. Just type `make` inside the sw/apps/spiload folder. - eg: `vivado-2015.1 make` 4. Transfer this program to the ZYNQ. We suggest using scp, but any other method works as well of course. diff --git a/fpga/common/common.tcl b/fpga/common/common.tcl index bebf12e1..091ba3b7 100644 --- a/fpga/common/common.tcl +++ b/fpga/common/common.tcl @@ -1,3 +1,7 @@ +if { ![info exists ::env(VIVADO_VERSION) ]} { + set ::env(VIVADO_VERSION) "2018.3" +} + # sets up Vivado messages in a more sensible way set_msg_config -id {[Synth 8-3352]} -new_severity "critical warning" diff --git a/fpga/ips/xilinx_fp_fma/tcl/run.tcl b/fpga/ips/xilinx_fp_fma/tcl/run.tcl index 731abe41..6afc2fd7 100644 --- a/fpga/ips/xilinx_fp_fma/tcl/run.tcl +++ b/fpga/ips/xilinx_fp_fma/tcl/run.tcl @@ -14,7 +14,11 @@ set boardName $::env(XILINX_BOARD) create_project xilinx_fp_fma . -part $partNumber set_property board_part $boardName [current_project] -create_ip -name floating_point -vendor xilinx.com -library ip -version 7.0 -module_name xilinx_fp_fma +if { [string compare $::env(VIVADO_VERSION) "2018.3"] < 0 } { + create_ip -name floating_point -vendor xilinx.com -library ip -version 7.0 -module_name xilinx_fp_fma +} else { + create_ip -name floating_point -vendor xilinx.com -library ip -version 7.1 -module_name xilinx_fp_fma +} set_property -dict [list CONFIG.Operation_Type {FMA} CONFIG.Flow_Control {NonBlocking} CONFIG.Axi_Optimize_Goal {Resources} CONFIG.Has_RESULT_TREADY {false} CONFIG.Maximum_Latency {false} CONFIG.Has_ARESETn {true} CONFIG.C_Has_UNDERFLOW {true} CONFIG.C_Has_OVERFLOW {true} CONFIG.C_Has_INVALID_OP {true} CONFIG.A_Precision_Type {Single} CONFIG.C_A_Exponent_Width {8} CONFIG.C_A_Fraction_Width {24} CONFIG.Result_Precision_Type {Single} CONFIG.C_Result_Exponent_Width {8} CONFIG.C_Result_Fraction_Width {24} CONFIG.C_Mult_Usage {Medium_Usage} CONFIG.C_Latency {2} CONFIG.C_Rate {1}] [get_ips xilinx_fp_fma] generate_target all [get_files ./xilinx_fp_fma.srcs/sources_1/ip/xilinx_fp_fma/xilinx_fp_fma.xci] create_ip_run [get_files -of_objects [get_fileset sources_1] ./xilinx_fp_fma.srcs/sources_1/ip/xilinx_fp_fma/xilinx_fp_fma.xci] diff --git a/fpga/pulpemu/Makefile b/fpga/pulpemu/Makefile index 69bdcb25..5f816431 100644 --- a/fpga/pulpemu/Makefile +++ b/fpga/pulpemu/Makefile @@ -5,12 +5,10 @@ all: synth synth: vivado -mode batch -source tcl/run.tcl cp ${PROJECT}.runs/impl_1/${PROJECT}_top.bit . - cp ${PROJECT}.runs/impl_1/${PROJECT}_top.sysdef . impl: vivado -mode batch -source tcl/impl.tcl ${PROJECT}.xpr cp ${PROJECT}.runs/impl_1/${PROJECT}_top.bit . - cp ${PROJECT}.runs/impl_1/${PROJECT}_top.sysdef . gui-synth: vivado -mode gui -source tcl/run.tcl & diff --git a/fpga/pulpemu/tcl/impl.tcl b/fpga/pulpemu/tcl/impl.tcl index be3ffc4b..11da0996 100644 --- a/fpga/pulpemu/tcl/impl.tcl +++ b/fpga/pulpemu/tcl/impl.tcl @@ -258,6 +258,14 @@ report_timing -file pulpemu_timing.txt -max_paths 10 write_verilog -force -mode timesim -cell pulpino_wrap_i ../simu/pulpino_impl.v write_sdf -force -cell pulpino_wrap_i ../simu/pulpino_impl.sdf +# export hardware design for sdk +write_hwdef -force -file ./pulpemu.hwdef +if { [string compare $::env(VIVADO_VERSION) "2018.3"] < 0 } { + write_sysdef -bitfile pulpemu_top.bit -hwdef pulpemu.hwdef -file pulpemu_top.sysdef +} else { + write_sysdef -bitfile pulpemu_top.bit -hwdef pulpemu.hwdef pulpemu_top.sysdef +} + if { [info exists ::env(PROBES)] } { # create new design run for probes create_run impl_2 -parent_run synth_1 -flow {Vivado Implementation 2014} diff --git a/fpga/pulpemu/tcl/ps7_bd.tcl b/fpga/pulpemu/tcl/ps7_bd.tcl index dacbd335..19a297bb 100644 --- a/fpga/pulpemu/tcl/ps7_bd.tcl +++ b/fpga/pulpemu/tcl/ps7_bd.tcl @@ -7,17 +7,27 @@ # IP Integrator Tcl commands easier. ################################################################ +namespace eval _tcl { +proc get_script_folder {} { + set script_path [file normalize [info script]] + set script_folder [file dirname $script_path] + return $script_folder +} +} +variable script_folder +set script_folder [_tcl::get_script_folder] + ################################################################ # Check if script is running in correct Vivado version. ################################################################ -set scripts_vivado_version 2015.1 +set scripts_vivado_version 2018.3 set current_vivado_version [version -short] if { [string first $scripts_vivado_version $current_vivado_version] == -1 } { puts "" - puts "ERROR: This script was generated using Vivado <$scripts_vivado_version> and is being run in <$current_vivado_version> of Vivado. Please run the script in Vivado <$scripts_vivado_version> then open the design in Vivado <$current_vivado_version>. Upgrade the design by running \"Tools => Report => Report IP Status...\", then run write_bd_tcl to create an updated script." + catch {common::send_msg_id "BD_TCL-109" "WARNING" "This script was generated using Vivado <$scripts_vivado_version> and is being run in <$current_vivado_version> of Vivado. Please run the script in Vivado <$scripts_vivado_version> then open the design in Vivado <$current_vivado_version>. Upgrade the design by running \"Tools => Report => Report IP Status...\", then run write_bd_tcl to create an updated script."} - return 1 + # return 1 deliberately ignore this... maybe it will work? } ################################################################ @@ -27,19 +37,19 @@ if { [string first $scripts_vivado_version $current_vivado_version] == -1 } { # To test this script, run the following commands from Vivado Tcl console: # source ps7_script.tcl -# If you do not already have a project created, -# you can create a project using the following command: -# create_project project_1 myproj -part xc7z010clg400-1 +# If there is no project opened, this script will create a +# project, but make sure you do not have an existing project +# <./myproj/project_1.xpr> in the current working folder. -# CHECKING IF PROJECT EXISTS -if { [get_projects -quiet] eq "" } { - puts "ERROR: Please open or create a project!" - return 1 +set list_projs [get_projects -quiet] +if { $list_projs eq "" } { + create_project project_1 myproj -part xc7z020clg484-1 + set_property BOARD_PART em.avnet.com:zed:part0:0.9 [current_project] } - # CHANGE DESIGN NAME HERE +variable design_name set design_name ps7 # If you do not already have an existing IP Integrator design open, @@ -57,7 +67,7 @@ if { ${design_name} eq "" } { # USE CASES: # 1) Design_name not set - set errMsg "ERROR: Please set the variable to a non-empty value." + set errMsg "Please set the variable to a non-empty value." set nRet 1 } elseif { ${cur_design} ne "" && ${list_cells} eq "" } { @@ -67,23 +77,23 @@ if { ${design_name} eq "" } { # 4): Current design opened AND is empty AND names diff; design_name exists in project. if { $cur_design ne $design_name } { - puts "INFO: Changing value of from <$design_name> to <$cur_design> since current design is empty." + common::send_msg_id "BD_TCL-001" "INFO" "Changing value of from <$design_name> to <$cur_design> since current design is empty." set design_name [get_property NAME $cur_design] } - puts "INFO: Constructing design in IPI design <$cur_design>..." + common::send_msg_id "BD_TCL-002" "INFO" "Constructing design in IPI design <$cur_design>..." } elseif { ${cur_design} ne "" && $list_cells ne "" && $cur_design eq $design_name } { # USE CASES: # 5) Current design opened AND has components AND same names. - set errMsg "ERROR: Design <$design_name> already exists in your project, please set the variable to another value." + set errMsg "Design <$design_name> already exists in your project, please set the variable to another value." set nRet 1 } elseif { [get_files -quiet ${design_name}.bd] ne "" } { # USE CASES: # 6) Current opened design, has components, but diff names, design_name exists in project. # 7) No opened design, design_name exists in project. - set errMsg "ERROR: Design <$design_name> already exists in your project, please set the variable to another value." + set errMsg "Design <$design_name> already exists in your project, please set the variable to another value." set nRet 2 } else { @@ -91,22 +101,58 @@ if { ${design_name} eq "" } { # 8) No opened design, design_name not in project. # 9) Current opened design, has components, but diff names, design_name not in project. - puts "INFO: Currently there is no design <$design_name> in project, so creating one..." + common::send_msg_id "BD_TCL-003" "INFO" "Currently there is no design <$design_name> in project, so creating one..." create_bd_design $design_name - puts "INFO: Making design <$design_name> as current_bd_design." + common::send_msg_id "BD_TCL-004" "INFO" "Making design <$design_name> as current_bd_design." current_bd_design $design_name } -puts "INFO: Currently the variable is equal to \"$design_name\"." +common::send_msg_id "BD_TCL-005" "INFO" "Currently the variable is equal to \"$design_name\"." if { $nRet != 0 } { - puts $errMsg + catch {common::send_msg_id "BD_TCL-114" "ERROR" $errMsg} return $nRet } +set bCheckIPsPassed 1 +################################################################## +# CHECK IPs +################################################################## +set bCheckIPs 1 +if { $bCheckIPs == 1 } { + set list_check_ips "\ +xilinx.com:ip:axi_crossbar:2.1\ +xilinx.com:ip:axi_gpio:2.0\ +xilinx.com:ip:axi_protocol_converter:2.1\ +xilinx.com:ip:processing_system7:5.5\ +xilinx.com:ip:xlconstant:1.1\ +" + + set list_ips_missing "" + common::send_msg_id "BD_TCL-006" "INFO" "Checking if the following IPs exist in the project's IP catalog: $list_check_ips ." + + foreach ip_vlnv $list_check_ips { + set ip_obj [get_ipdefs -all $ip_vlnv] + if { $ip_obj eq "" } { + lappend list_ips_missing $ip_vlnv + } + } + + if { $list_ips_missing ne "" } { + catch {common::send_msg_id "BD_TCL-115" "ERROR" "The following IPs are not found in the IP Catalog:\n $list_ips_missing\n\nResolution: Please add the repository containing the IP(s) to the project." } + set bCheckIPsPassed 0 + } + +} + +if { $bCheckIPsPassed != 1 } { + common::send_msg_id "BD_TCL-1003" "WARNING" "Will not continue with creation of design due to the error(s) above." + return 3 +} + ################################################################## # DESIGN PROCs ################################################################## @@ -117,6 +163,9 @@ if { $nRet != 0 } { # procedure reusable. If parentCell is "", will use root. proc create_root_design { parentCell } { + variable script_folder + variable design_name + if { $parentCell eq "" } { set parentCell [get_bd_cells /] } @@ -124,14 +173,14 @@ proc create_root_design { parentCell } { # Get object for parentCell set parentObj [get_bd_cells $parentCell] if { $parentObj == "" } { - puts "ERROR: Unable to find parent cell <$parentCell>!" + catch {common::send_msg_id "BD_TCL-100" "ERROR" "Unable to find parent cell <$parentCell>!"} return } # Make sure parentObj is hier blk set parentType [get_property TYPE $parentObj] if { $parentType ne "hier" } { - puts "ERROR: Parent <$parentObj> has TYPE = <$parentType>. Expected to be ." + catch {common::send_msg_id "BD_TCL-101" "ERROR" "Parent <$parentObj> has TYPE = <$parentType>. Expected to be ."} return } @@ -147,7 +196,12 @@ proc create_root_design { parentCell } { set FIXED_IO [ create_bd_intf_port -mode Master -vlnv xilinx.com:display_processing_system7:fixedio_rtl:1.0 FIXED_IO ] set UART_0 [ create_bd_intf_port -mode Master -vlnv xilinx.com:interface:uart_rtl:1.0 UART_0 ] set clking_axi [ create_bd_intf_port -mode Master -vlnv xilinx.com:interface:aximm_rtl:1.0 clking_axi ] - set_property -dict [ list CONFIG.ADDR_WIDTH {32} CONFIG.DATA_WIDTH {32} CONFIG.FREQ_HZ {50000000} CONFIG.PROTOCOL {AXI4LITE} ] $clking_axi + set_property -dict [ list \ + CONFIG.ADDR_WIDTH {32} \ + CONFIG.DATA_WIDTH {32} \ + CONFIG.FREQ_HZ {50000000} \ + CONFIG.PROTOCOL {AXI4LITE} \ + ] $clking_axi # Create ports set SPI0_MISO_I [ create_bd_port -dir I SPI0_MISO_I ] @@ -167,7 +221,28 @@ proc create_root_design { parentCell } { # Create instance: axi_crossbar_0, and set properties set axi_crossbar_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_crossbar:2.1 axi_crossbar_0 ] - set_property -dict [ list CONFIG.CONNECTIVITY_MODE {SASD} CONFIG.DATA_WIDTH {32} CONFIG.NUM_MI {4} CONFIG.R_REGISTER {0} CONFIG.S01_BASE_ID {0x00001000} CONFIG.S02_BASE_ID {0x00002000} CONFIG.S03_BASE_ID {0x00003000} CONFIG.S04_BASE_ID {0x00004000} CONFIG.S05_BASE_ID {0x00005000} CONFIG.S06_BASE_ID {0x00006000} CONFIG.S07_BASE_ID {0x00007000} CONFIG.S08_BASE_ID {0x00008000} CONFIG.S09_BASE_ID {0x00009000} CONFIG.S10_BASE_ID {0x0000a000} CONFIG.S11_BASE_ID {0x0000b000} CONFIG.S12_BASE_ID {0x0000c000} CONFIG.S13_BASE_ID {0x0000d000} CONFIG.S14_BASE_ID {0x0000e000} CONFIG.S15_BASE_ID {0x0000f000} CONFIG.STRATEGY {1} ] $axi_crossbar_0 + set_property -dict [ list \ + CONFIG.CONNECTIVITY_MODE {SASD} \ + CONFIG.DATA_WIDTH {32} \ + CONFIG.NUM_MI {4} \ + CONFIG.R_REGISTER {0} \ + CONFIG.S01_BASE_ID {0x00001000} \ + CONFIG.S02_BASE_ID {0x00002000} \ + CONFIG.S03_BASE_ID {0x00003000} \ + CONFIG.S04_BASE_ID {0x00004000} \ + CONFIG.S05_BASE_ID {0x00005000} \ + CONFIG.S06_BASE_ID {0x00006000} \ + CONFIG.S07_BASE_ID {0x00007000} \ + CONFIG.S08_BASE_ID {0x00008000} \ + CONFIG.S09_BASE_ID {0x00009000} \ + CONFIG.S10_BASE_ID {0x0000a000} \ + CONFIG.S11_BASE_ID {0x0000b000} \ + CONFIG.S12_BASE_ID {0x0000c000} \ + CONFIG.S13_BASE_ID {0x0000d000} \ + CONFIG.S14_BASE_ID {0x0000e000} \ + CONFIG.S15_BASE_ID {0x0000f000} \ + CONFIG.STRATEGY {1} \ + ] $axi_crossbar_0 # Create instance: axi_gpio_emu, and set properties set axi_gpio_emu [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_gpio:2.0 axi_gpio_emu ] @@ -177,38 +252,73 @@ proc create_root_design { parentCell } { # Create instance: axi_protocol_converter_0, and set properties set axi_protocol_converter_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_protocol_converter:2.1 axi_protocol_converter_0 ] - set_property -dict [ list CONFIG.TRANSLATION_MODE {0} ] $axi_protocol_converter_0 + set_property -dict [ list \ + CONFIG.TRANSLATION_MODE {0} \ + ] $axi_protocol_converter_0 # Create instance: axi_protocol_converter_1, and set properties set axi_protocol_converter_1 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_protocol_converter:2.1 axi_protocol_converter_1 ] - set_property -dict [ list CONFIG.MI_PROTOCOL {AXI4} CONFIG.SI_PROTOCOL {AXI3} ] $axi_protocol_converter_1 + set_property -dict [ list \ + CONFIG.MI_PROTOCOL {AXI4} \ + CONFIG.SI_PROTOCOL {AXI3} \ + ] $axi_protocol_converter_1 # Create instance: axi_protocol_converter_2, and set properties set axi_protocol_converter_2 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_protocol_converter:2.1 axi_protocol_converter_2 ] # Create instance: axi_protocol_converter_3, and set properties set axi_protocol_converter_3 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_protocol_converter:2.1 axi_protocol_converter_3 ] - set_property -dict [ list CONFIG.TRANSLATION_MODE {0} ] $axi_protocol_converter_3 + set_property -dict [ list \ + CONFIG.TRANSLATION_MODE {0} \ + ] $axi_protocol_converter_3 # Create instance: axi_protocol_converter_4, and set properties set axi_protocol_converter_4 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_protocol_converter:2.1 axi_protocol_converter_4 ] - set_property -dict [ list CONFIG.TRANSLATION_MODE {0} ] $axi_protocol_converter_4 + set_property -dict [ list \ + CONFIG.TRANSLATION_MODE {0} \ + ] $axi_protocol_converter_4 # Create instance: axi_pulp_control, and set properties set axi_pulp_control [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_gpio:2.0 axi_pulp_control ] - set_property -dict [ list CONFIG.C_ALL_INPUTS {0} CONFIG.C_ALL_OUTPUTS {1} CONFIG.C_IS_DUAL {0} ] $axi_pulp_control + set_property -dict [ list \ + CONFIG.C_ALL_INPUTS {0} \ + CONFIG.C_ALL_OUTPUTS {1} \ + CONFIG.C_IS_DUAL {0} \ + ] $axi_pulp_control # Create instance: processing_system7_0, and set properties set processing_system7_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:processing_system7:5.5 processing_system7_0 ] if {[string equal $::env(BOARD) "zybo"]} { - set_property -dict [ list CONFIG.PCW_CRYSTAL_PERIPHERAL_FREQMHZ {50} CONFIG.PCW_FPGA0_PERIPHERAL_FREQMHZ {50} CONFIG.PCW_QSPI_GRP_SINGLE_SS_ENABLE {1} CONFIG.PCW_SD0_GRP_WP_IO {EMIO} CONFIG.PCW_SPI0_PERIPHERAL_ENABLE {1} CONFIG.PCW_S_AXI_HP0_DATA_WIDTH {64} CONFIG.PCW_UART0_PERIPHERAL_ENABLE {1} CONFIG.PCW_UIPARAM_DDR_FREQ_MHZ {525} CONFIG.PCW_UIPARAM_DDR_PARTNO {MT41K128M16 JT-125} CONFIG.PCW_USE_S_AXI_HP0 {0} CONFIG.preset {ZedBoard} ] $processing_system7_0 + set_property -dict [ list CONFIG.PCW_CRYSTAL_PERIPHERAL_FREQMHZ {50} \ + CONFIG.PCW_FPGA0_PERIPHERAL_FREQMHZ {50} \ + CONFIG.PCW_QSPI_GRP_SINGLE_SS_ENABLE {1} \ + CONFIG.PCW_SD0_GRP_WP_IO {EMIO} \ + CONFIG.PCW_SPI0_PERIPHERAL_ENABLE {1} \ + CONFIG.PCW_S_AXI_HP0_DATA_WIDTH {64} \ + CONFIG.PCW_UART0_PERIPHERAL_ENABLE {1} \ + CONFIG.PCW_UIPARAM_DDR_FREQ_MHZ {525} \ + CONFIG.PCW_UIPARAM_DDR_PARTNO {MT41K128M16 JT-125} \ + CONFIG.PCW_USE_S_AXI_HP0 {0} \ + CONFIG.preset {ZedBoard} \ + ] $processing_system7_0 } else { - set_property -dict [ list CONFIG.PCW_FPGA0_PERIPHERAL_FREQMHZ {50} CONFIG.PCW_QSPI_GRP_SINGLE_SS_ENABLE {1} CONFIG.PCW_SPI0_PERIPHERAL_ENABLE {1} CONFIG.PCW_S_AXI_HP0_DATA_WIDTH {64} CONFIG.PCW_UART0_PERIPHERAL_ENABLE {1} CONFIG.PCW_USE_S_AXI_HP0 {0} CONFIG.preset {ZedBoard} ] $processing_system7_0 + set_property -dict [ list \ + CONFIG.PCW_FPGA0_PERIPHERAL_FREQMHZ {50} \ + CONFIG.PCW_QSPI_GRP_SINGLE_SS_ENABLE {1} \ + CONFIG.PCW_SPI0_PERIPHERAL_ENABLE {1} \ + CONFIG.PCW_S_AXI_HP0_DATA_WIDTH {64} \ + CONFIG.PCW_UART0_PERIPHERAL_ENABLE {1} \ + CONFIG.PCW_USE_S_AXI_HP0 {0} \ + CONFIG.preset {ZedBoard} \ + ] $processing_system7_0 + } # Create instance: xlconstant_0, and set properties set xlconstant_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:xlconstant:1.1 xlconstant_0 ] - set_property -dict [ list CONFIG.CONST_VAL {0} ] $xlconstant_0 + set_property -dict [ list \ + CONFIG.CONST_VAL {0} \ + ] $xlconstant_0 # Create interface connections connect_bd_intf_net -intf_net axi_crossbar_0_M00_AXI [get_bd_intf_pins axi_crossbar_0/M00_AXI] [get_bd_intf_pins axi_protocol_converter_0/S_AXI] @@ -240,18 +350,19 @@ proc create_root_design { parentCell } { connect_bd_net -net processing_system7_0_SPI0_MOSI_O [get_bd_ports SPI0_MOSI_O] [get_bd_pins processing_system7_0/SPI0_MOSI_O] connect_bd_net -net processing_system7_0_SPI0_SCLK_O [get_bd_ports SPI0_SCLK_O] [get_bd_pins processing_system7_0/SPI0_SCLK_O] connect_bd_net -net processing_system7_0_SPI0_SS_O [get_bd_ports SPI0_SS_O] [get_bd_pins processing_system7_0/SPI0_SS_O] - connect_bd_net -net xlconstant_0_dout [get_bd_pins processing_system7_0/SDIO0_WP] [get_bd_pins xlconstant_0/dout] + connect_bd_net -net xlconstant_0_dout [get_bd_pins xlconstant_0/dout] # Create address segments - create_bd_addr_seg -range 0x10000 -offset 0x51030000 [get_bd_addr_spaces processing_system7_0/Data] [get_bd_addr_segs axi_gpio_emu/S_AXI/Reg] SEG_axi_gpio_emu_Reg - create_bd_addr_seg -range 0x10000 -offset 0x51020000 [get_bd_addr_spaces processing_system7_0/Data] [get_bd_addr_segs axi_jtag_emu/S_AXI/Reg] SEG_axi_jtag_emu_Reg - create_bd_addr_seg -range 0x10000 -offset 0x51000000 [get_bd_addr_spaces processing_system7_0/Data] [get_bd_addr_segs axi_pulp_control/S_AXI/Reg] SEG_axi_pulp_control_Reg - create_bd_addr_seg -range 0x10000 -offset 0x51010000 [get_bd_addr_spaces processing_system7_0/Data] [get_bd_addr_segs clking_axi/Reg] SEG_clking_axi_Reg - + create_bd_addr_seg -range 0x00010000 -offset 0x51030000 [get_bd_addr_spaces processing_system7_0/Data] [get_bd_addr_segs axi_gpio_emu/S_AXI/Reg] SEG_axi_gpio_emu_Reg + create_bd_addr_seg -range 0x00010000 -offset 0x51020000 [get_bd_addr_spaces processing_system7_0/Data] [get_bd_addr_segs axi_jtag_emu/S_AXI/Reg] SEG_axi_jtag_emu_Reg + create_bd_addr_seg -range 0x00010000 -offset 0x51000000 [get_bd_addr_spaces processing_system7_0/Data] [get_bd_addr_segs axi_pulp_control/S_AXI/Reg] SEG_axi_pulp_control_Reg + create_bd_addr_seg -range 0x00010000 -offset 0x51010000 [get_bd_addr_spaces processing_system7_0/Data] [get_bd_addr_segs clking_axi/Reg] SEG_clking_axi_Reg + # Restore current instance current_bd_instance $oldCurInst + validate_bd_design save_bd_design } # End of create_root_design() @@ -262,5 +373,3 @@ proc create_root_design { parentCell } { ################################################################## create_root_design "" - - diff --git a/fpga/pulpemu/tcl/run.tcl b/fpga/pulpemu/tcl/run.tcl index 8b1f8269..9260330c 100644 --- a/fpga/pulpemu/tcl/run.tcl +++ b/fpga/pulpemu/tcl/run.tcl @@ -33,7 +33,7 @@ if { $::env(USE_ZERO_RISCY)==0 & $::env(RISCY_RV32F)==1 } { ../pulpino/pulpino_stub.v \ ../ips/xilinx_fp_fma/ip/xilinx_fp_fma_stub.vhdl \ ../ips/xilinx_fp_fma/ip/xilinx_fp_fma_stub.v \ - ../pulpino/xilinx_fp_fma_floating_point_v7_0_viv.edn \ + ../pulpino/xilinx_fp_fma_floating_point_v7_1_viv.edn \ ../pulpino/xilinx_fp_fma_mult_gen_v12_0_viv.edn \ ../ips/xilinx_clock_manager/ip/xilinx_clock_manager.dcp } else { @@ -51,19 +51,13 @@ get_property source_mgmt_mode [current_project] # Synthesis strategy: save area set_property strategy Flow_AreaOptimized_High [get_runs synth_1] -# elaborate -synth_design -rtl -name rtl_1 - -# Create constraints file to avoid "outdated" synthesis and implementation runs later -save_constraints - launch_runs synth_1 -jobs $CPUS wait_on_run synth_1 open_run synth_1 -name netlist_1 # write_edif pulpemu.edf -# export hardware design for sdk -write_hwdef -force -file ./pulpemu.hwdef +# Create constraints file to avoid "outdated" synthesis and implementation runs later +save_constraints # run implementation source tcl/impl.tcl diff --git a/fpga/sw/Makefile b/fpga/sw/Makefile index acad7376..89c39c01 100644 --- a/fpga/sw/Makefile +++ b/fpga/sw/Makefile @@ -1,7 +1,7 @@ PWD=$(CURDIR) NCORES=4 BOARD ?= zedboard -VIVADO_VERSION ?= 2015.1 +VIVADO_VERSION ?= 2018.3 # Fall back to ancient Xilinx GCC due to outdated Linux sources that can't handle modern ones ifeq ($(VIVADO_VERSION),2015.1) @@ -95,9 +95,11 @@ u-boot: sd_image/u-boot.elf ################################################################################ BUILDROOT_VERSION_2015.1 := 2015.05 +BUILDROOT_VERSION_2018.3 := 2017.08 BUILDROOT_VERSION := $(BUILDROOT_VERSION_$(VIVADO_VERSION)) BUSYBOX_VERSION_2015.1 := 1.23.2 +BUSYBOX_VERSION_2018.3 := 1.27.1 BUSYBOX_VERSION := $(BUSYBOX_VERSION_$(VIVADO_VERSION)) buildroot: @@ -127,6 +129,7 @@ rootfs: sd_image/rootfs.tar ################################################################################ DT_TOP_2015.1 := system.dts +DT_TOP_2018.3 := system-top.dts DT_TOP := $(DT_TOP_$(VIVADO_VERSION)) device_tree_repo: diff --git a/fpga/sw/apps/gpio_access/Makefile b/fpga/sw/apps/gpio_access/Makefile index 14614f54..ed62afd8 100644 --- a/fpga/sw/apps/gpio_access/Makefile +++ b/fpga/sw/apps/gpio_access/Makefile @@ -1,4 +1,8 @@ -ARMCC ?= arm-linux-gnueabi-gcc +ifeq ($(VIVADO_VERSION),2018.3) + ARMCC?=arm-linux-gnueabihf-gcc +else + ARMCC?=arm-xilinx-linux-gnueabi-gcc +endif CC = $(ARMCC) all: gpio_access diff --git a/fpga/sw/apps/spiload/Makefile b/fpga/sw/apps/spiload/Makefile index 5f25aa00..e6ff4bd5 100644 --- a/fpga/sw/apps/spiload/Makefile +++ b/fpga/sw/apps/spiload/Makefile @@ -1,4 +1,8 @@ -ARMCC ?= arm-linux-gnueabi-gcc +ifeq ($(VIVADO_VERSION),2018.3) + ARMCC?=arm-linux-gnueabihf-gcc +else + ARMCC?=arm-xilinx-linux-gnueabi-gcc +endif CC = $(ARMCC) CFLAGS = -Wall diff --git a/fpga/sw/config/buildroot.config.2018.3 b/fpga/sw/config/buildroot.config.2018.3 new file mode 100644 index 00000000..f0046235 --- /dev/null +++ b/fpga/sw/config/buildroot.config.2018.3 @@ -0,0 +1,2589 @@ +# +# Automatically generated file; DO NOT EDIT. +# Buildroot 2017.08 Configuration +# +BR2_HAVE_DOT_CONFIG=y +BR2_HOST_GCC_AT_LEAST_4_5=y +BR2_HOST_GCC_AT_LEAST_4_6=y +BR2_HOST_GCC_AT_LEAST_4_7=y +BR2_HOST_GCC_AT_LEAST_4_8=y +BR2_HOST_GCC_AT_LEAST_4_9=y +BR2_HOST_GCC_AT_LEAST_5=y +BR2_HOST_GCC_AT_LEAST_6=y + +# +# Target options +# +BR2_ARCH_HAS_MMU_OPTIONAL=y +# BR2_arcle is not set +# BR2_arceb is not set +BR2_arm=y +# BR2_armeb is not set +# BR2_aarch64 is not set +# BR2_aarch64_be is not set +# BR2_bfin is not set +# BR2_csky 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_nios2 is not set +# BR2_or1k is not set +# BR2_powerpc is not set +# BR2_powerpc64 is not set +# BR2_powerpc64le 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="arm" +BR2_ENDIAN="LITTLE" +BR2_GCC_TARGET_ABI="aapcs-linux" +BR2_GCC_TARGET_CPU="cortex-a9" +BR2_GCC_TARGET_FPU="vfpv3-d16" +BR2_GCC_TARGET_FLOAT_ABI="hard" +BR2_GCC_TARGET_MODE="arm" +BR2_BINFMT_SUPPORTS_SHARED=y +BR2_READELF_ARCH_NAME="ARM" +BR2_BINFMT_ELF=y +BR2_ARM_CPU_HAS_NEON=y +BR2_ARM_CPU_MAYBE_HAS_NEON=y +BR2_ARM_CPU_MAYBE_HAS_VFPV2=y +BR2_ARM_CPU_HAS_VFPV2=y +BR2_ARM_CPU_MAYBE_HAS_VFPV3=y +BR2_ARM_CPU_HAS_VFPV3=y +BR2_ARM_CPU_HAS_ARM=y +BR2_ARM_CPU_HAS_THUMB2=y +BR2_ARM_CPU_ARMV7A=y +# BR2_arm920t is not set +# BR2_arm922t is not set +# BR2_arm926t is not set +# BR2_arm1136j_s is not set +# BR2_arm1136jf_s is not set +# BR2_arm1176jz_s is not set +# BR2_arm1176jzf_s is not set +# BR2_arm11mpcore is not set +# BR2_cortex_a5 is not set +# BR2_cortex_a7 is not set +# BR2_cortex_a8 is not set +BR2_cortex_a9=y +# BR2_cortex_a12 is not set +# BR2_cortex_a15 is not set +# BR2_cortex_a15_a7 is not set +# BR2_cortex_a17 is not set +# BR2_cortex_a17_a7 is not set +# BR2_cortex_a53 is not set +# BR2_cortex_a57 is not set +# BR2_cortex_a57_a53 is not set +# BR2_cortex_a72 is not set +# BR2_cortex_a72_a53 is not set +# BR2_cortex_m3 is not set +# BR2_cortex_m4 is not set +# BR2_fa526 is not set +# BR2_pj4 is not set +# BR2_strongarm is not set +# BR2_xscale is not set +# BR2_iwmmxt is not set +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +# BR2_ARM_EABI is not set +BR2_ARM_EABIHF=y +# BR2_ARM_SOFT_FLOAT is not set +# BR2_ARM_FPU_VFPV2 is not set +# BR2_ARM_FPU_VFPV3 is not set +BR2_ARM_FPU_VFPV3D16=y +# BR2_ARM_FPU_NEON is not set +BR2_ARM_INSTRUCTIONS_ARM=y +# BR2_ARM_INSTRUCTIONS_THUMB2 is not set + +# +# Build options +# + +# +# Commands +# +BR2_WGET="wget --passive-ftp -nd -t 3" +BR2_SVN="svn" +BR2_BZR="bzr" +BR2_GIT="git" +BR2_CVS="cvs" +BR2_LOCALFILES="cp" +BR2_SCP="scp" +BR2_SSH="ssh" +BR2_HG="hg" +BR2_ZCAT="gzip -d -c" +BR2_BZCAT="bzcat" +BR2_XZCAT="xzcat" +BR2_LZCAT="lzip -d -c" +BR2_TAR_OPTIONS="" +BR2_DEFCONFIG="$(CONFIG_DIR)/defconfig" +BR2_DL_DIR="$(TOPDIR)/dl" +BR2_HOST_DIR="$(BASE_DIR)/host" + +# +# Mirrors and Download locations +# +BR2_PRIMARY_SITE="" +BR2_BACKUP_SITE="http://sources.buildroot.net" +BR2_KERNEL_MIRROR="https://www.kernel.org/pub" +BR2_GNU_MIRROR="http://ftp.gnu.org/pub/gnu" +BR2_LUAROCKS_MIRROR="http://rocks.moonscript.org" +BR2_CPAN_MIRROR="http://cpan.metacpan.org" +BR2_JLEVEL=0 +# BR2_CCACHE is not set +# BR2_ENABLE_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 is not set +# BR2_OPTIMIZE_3 is not set +# BR2_OPTIMIZE_G is not set +BR2_OPTIMIZE_S=y +# BR2_GOOGLE_BREAKPAD_ENABLE is not set +BR2_SSP_NONE=y +# BR2_SSP_REGULAR is not set +# BR2_SSP_STRONG is not set +# BR2_SSP_ALL is not set +# BR2_STATIC_LIBS is not set +BR2_SHARED_LIBS=y +# BR2_SHARED_STATIC_LIBS is not set +BR2_PACKAGE_OVERRIDE_FILE="$(CONFIG_DIR)/local.mk" +BR2_GLOBAL_PATCH_DIR="" + +# +# Advanced +# +# BR2_COMPILER_PARANOID_UNSAFE_PATH is not set +# BR2_REPRODUCIBLE is not set + +# +# Toolchain +# +BR2_TOOLCHAIN=y +BR2_TOOLCHAIN_USES_GLIBC=y +# BR2_TOOLCHAIN_BUILDROOT is not set +BR2_TOOLCHAIN_EXTERNAL=y + +# +# Toolchain External Options +# +# BR2_TOOLCHAIN_EXTERNAL_LINARO_ARM is not set +# BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM is not set + +# +# Sourcery CodeBench toolchains available for the EABI ABI +# +BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y +# BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD is not set +BR2_TOOLCHAIN_EXTERNAL_PREINSTALLED=y +BR2_TOOLCHAIN_EXTERNAL_PATH="/to/be/defined/" +BR2_TOOLCHAIN_EXTERNAL_GLIBC=y +BR2_PACKAGE_HAS_TOOLCHAIN_EXTERNAL=y +BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL="toolchain-external-custom" +BR2_TOOLCHAIN_EXTERNAL_PREFIX="arm-linux-gnueabihf" +BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX="arm-linux-gnueabihf" +BR2_TOOLCHAIN_EXTERNAL_GCC_7=y +# BR2_TOOLCHAIN_EXTERNAL_GCC_6 is not set +# BR2_TOOLCHAIN_EXTERNAL_GCC_5 is not set +# BR2_TOOLCHAIN_EXTERNAL_GCC_4_9 is not set +# BR2_TOOLCHAIN_EXTERNAL_GCC_4_8 is not set +# BR2_TOOLCHAIN_EXTERNAL_GCC_4_7 is not set +# BR2_TOOLCHAIN_EXTERNAL_GCC_4_6 is not set +# BR2_TOOLCHAIN_EXTERNAL_GCC_4_5 is not set +# BR2_TOOLCHAIN_EXTERNAL_GCC_4_4 is not set +# BR2_TOOLCHAIN_EXTERNAL_GCC_4_3 is not set +# BR2_TOOLCHAIN_EXTERNAL_GCC_OLD is not set +# BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_12 is not set +# BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_11 is not set +# BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_10 is not set +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_9=y +# BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_8 is not set +# BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_7 is not set +# BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_6 is not set +# BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_5 is not set +# BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_4 is not set +# BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_3 is not set +# BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_2 is not set +# BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_1 is not set +# BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_0 is not set +# BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_19 is not set +# BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_18 is not set +# BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_17 is not set +# BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_16 is not set +# BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_15 is not set +# BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_14 is not set +# BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_13 is not set +# BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_12 is not set +# BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_11 is not set +# BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_10 is not set +# BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_9 is not set +# BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_8 is not set +# BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_7 is not set +# BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_6 is not set +# BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_5 is not set +# BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_4 is not set +# BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_3 is not set +# BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_2 is not set +# BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_1 is not set +# BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_0 is not set +# BR2_TOOLCHAIN_EXTERNAL_HEADERS_REALLY_OLD is not set +# BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC is not set +BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y +# BR2_TOOLCHAIN_EXTERNAL_CUSTOM_MUSL is not set +BR2_TOOLCHAIN_EXTERNAL_HAS_SSP=y +BR2_TOOLCHAIN_EXTERNAL_INET_RPC=y +BR2_TOOLCHAIN_EXTERNAL_CXX=y +BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS="" +BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY=y + +# +# Host GDB Options +# + +# +# Toolchain Generic Options +# +BR2_TOOLCHAIN_HAS_NATIVE_RPC=y +BR2_USE_WCHAR=y +BR2_ENABLE_LOCALE=y +BR2_INSTALL_LIBSTDCPP=y +BR2_TOOLCHAIN_HAS_THREADS=y +BR2_TOOLCHAIN_HAS_THREADS_DEBUG=y +BR2_TOOLCHAIN_HAS_THREADS_NPTL=y +BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS=y +BR2_TOOLCHAIN_HAS_SSP=y +BR2_TOOLCHAIN_SUPPORTS_PIE=y +# BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY is not set +BR2_TOOLCHAIN_HAS_FULL_GETTEXT=y +BR2_USE_MMU=y +BR2_TARGET_OPTIMIZATION="" +BR2_TARGET_LDFLAGS="" +# BR2_ECLIPSE_REGISTER is not set +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.9" +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="7" +BR2_TOOLCHAIN_HAS_MNAN_OPTION=y +BR2_TOOLCHAIN_HAS_MFPXX_OPTION=y +BR2_TOOLCHAIN_HAS_SYNC_1=y +BR2_TOOLCHAIN_HAS_SYNC_2=y +BR2_TOOLCHAIN_HAS_SYNC_4=y +BR2_TOOLCHAIN_ARM_HAS_SYNC_8=y +BR2_TOOLCHAIN_HAS_SYNC_8=y +BR2_TOOLCHAIN_HAS_LIBATOMIC=y +BR2_TOOLCHAIN_HAS_ATOMIC=y + +# +# System configuration +# +BR2_ROOTFS_SKELETON_DEFAULT=y +# BR2_ROOTFS_SKELETON_CUSTOM is not set +# BR2_ROOTFS_MERGED_USR is not set +BR2_TARGET_GENERIC_HOSTNAME="buildroot" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot" +BR2_TARGET_GENERIC_PASSWD_MD5=y +# BR2_TARGET_GENERIC_PASSWD_SHA256 is not set +# BR2_TARGET_GENERIC_PASSWD_SHA512 is not set +BR2_TARGET_GENERIC_PASSWD_METHOD="md5" +BR2_INIT_BUSYBOX=y +# BR2_INIT_SYSV is not set +# BR2_INIT_SYSTEMD 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_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_ENABLE_LOCALE_PURGE is not set +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_POST_BUILD_SCRIPT="" +BR2_ROOTFS_POST_FAKEROOT_SCRIPT="" +BR2_ROOTFS_POST_IMAGE_SCRIPT="" +BR2_ROOTFS_POST_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_SELINUX 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_BELLAGIO is not set +# BR2_PACKAGE_DVBLAST is not set +# BR2_PACKAGE_DVDAUTHOR is not set +# BR2_PACKAGE_DVDRW_TOOLS is not set +# BR2_PACKAGE_ESPEAK is not set +# 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_GMRENDER_RESURRECT is not set +# BR2_PACKAGE_GSTREAMER is not set +# BR2_PACKAGE_GSTREAMER1 is not set +# BR2_PACKAGE_JACK2 is not set +BR2_PACKAGE_KODI_ARCH_SUPPORTS=y + +# +# kodi needs python w/ .py modules, a uClibc or glibc toolchain w/ C++, locale, threads, wchar, dynamic library, gcc >= 4.8, host gcc >= 4.6 +# + +# +# kodi needs an OpenGL EGL with either an openGL or an OpenGL ES backend +# +# BR2_PACKAGE_LAME is not set +# BR2_PACKAGE_MADPLAY is not set +# BR2_PACKAGE_MIMIC is not set + +# +# miraclecast needs systemd and a glibc toolchain w/ threads and wchar +# +# BR2_PACKAGE_MJPEGTOOLS is not set +# BR2_PACKAGE_MODPLUGTOOLS is not set +# BR2_PACKAGE_MOTION is not set +# BR2_PACKAGE_MPD is not set +# BR2_PACKAGE_MPD_MPC is not set +# BR2_PACKAGE_MPG123 is not set +BR2_PACKAGE_MPLAYER_ARCH_SUPPORTS=y +# BR2_PACKAGE_MPLAYER is not set +# BR2_PACKAGE_MPV is not set +# BR2_PACKAGE_MULTICAT is not set +# BR2_PACKAGE_MUSEPACK is not set +# BR2_PACKAGE_NCMPC is not set +# BR2_PACKAGE_OPUS_TOOLS is not set +# BR2_PACKAGE_PULSEAUDIO is not set +# BR2_PACKAGE_SOX is not set +# BR2_PACKAGE_SQUEEZELITE is not set + +# +# tovid depends on python or python3 +# +# BR2_PACKAGE_TSTOOLS is not set +# BR2_PACKAGE_TWOLAME is not set +# BR2_PACKAGE_UDPXY is not set +# BR2_PACKAGE_UPMPDCLI is not set +# BR2_PACKAGE_V4L2GRAB is not set + +# +# v4l2loopback needs a Linux kernel to be built +# +# BR2_PACKAGE_VLC is not set +# 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 + +# +# Compressors and decompressors +# +# BR2_PACKAGE_BZIP2 is not set +# BR2_PACKAGE_LZ4 is not set +# BR2_PACKAGE_LZIP is not set +# BR2_PACKAGE_LZOP is not set +# BR2_PACKAGE_P7ZIP is not set +# BR2_PACKAGE_PIXZ is not set +# BR2_PACKAGE_UNRAR is not set +# BR2_PACKAGE_XZ is not set +# BR2_PACKAGE_ZIP is not set +# BR2_PACKAGE_ZSTD is not set + +# +# Debugging, profiling and benchmark +# +# BR2_PACKAGE_BLKTRACE is not set +# BR2_PACKAGE_BONNIE is not set +# BR2_PACKAGE_CACHE_CALIBRATOR is not set +# 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 +# BR2_PACKAGE_DUMA is not set +# BR2_PACKAGE_FIO is not set +BR2_PACKAGE_GDB_ARCH_SUPPORTS=y +# BR2_PACKAGE_GDB is not set +BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS=y +# BR2_PACKAGE_GOOGLE_BREAKPAD is not set +# BR2_PACKAGE_IOZONE is not set +# BR2_PACKAGE_KEXEC is not set + +# +# ktap needs a Linux kernel to be built +# +# BR2_PACKAGE_LATENCYTOP 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_LTRACE is not set +# BR2_PACKAGE_LTTNG_BABELTRACE is not set + +# +# lttng-modules needs a Linux kernel to be built +# +# BR2_PACKAGE_LTTNG_TOOLS is not set +# BR2_PACKAGE_MEMSTAT is not set +# BR2_PACKAGE_NETPERF is not set +# BR2_PACKAGE_NETSNIFF_NG is not set +# BR2_PACKAGE_NMON is not set +BR2_PACKAGE_OPROFILE_ARCH_SUPPORTS=y +# BR2_PACKAGE_OPROFILE is not set +# BR2_PACKAGE_PAX_UTILS is not set +# BR2_PACKAGE_PV is not set +# BR2_PACKAGE_RAMSMP is not set +# BR2_PACKAGE_RAMSPEED is not set +# BR2_PACKAGE_RT_TESTS is not set +# 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 toolchain w/ C++, gcc >= 4.7, dynamic library and a Linux kernel to be built +# +# BR2_PACKAGE_TINYMEMBENCH is not set +# BR2_PACKAGE_TRACE_CMD is not set +BR2_PACKAGE_TRINITY_ARCH_SUPPORTS=y +# BR2_PACKAGE_TRINITY is not set +# BR2_PACKAGE_UCLIBC_NG_TEST is not set +BR2_PACKAGE_VALGRIND_ARCH_SUPPORTS=y +# BR2_PACKAGE_VALGRIND is not set +# BR2_PACKAGE_WHETSTONE is not set + +# +# Development tools +# +# BR2_PACKAGE_BINUTILS is not set +# BR2_PACKAGE_BSDIFF is not set +# BR2_PACKAGE_CHECK is not set +BR2_PACKAGE_CMAKE_ARCH_SUPPORTS=y +# BR2_PACKAGE_CMAKE_CTEST is not set +# BR2_PACKAGE_CPPUNIT is not set +# BR2_PACKAGE_CVS is not set +# BR2_PACKAGE_CXXTEST is not set +# BR2_PACKAGE_FLEX is not set +# BR2_PACKAGE_GETTEXT is not set +# BR2_PACKAGE_GIT is not set +# BR2_PACKAGE_GIT_CRYPT is not set +# BR2_PACKAGE_GPERF is not set +# 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_PKGCONF is not set +# BR2_PACKAGE_SUBVERSION is not set +# BR2_PACKAGE_TREE is not set + +# +# Filesystem and flash utilities +# + +# +# aufs-util needs a linux kernel and a toolchain w/ threads +# +# BR2_PACKAGE_AUTOFS is not set +# 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_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_EXFAT is not set +# BR2_PACKAGE_EXFAT_UTILS is not set +# BR2_PACKAGE_F2FS_TOOLS is not set +# BR2_PACKAGE_FLASHBENCH is not set +# BR2_PACKAGE_FWUP is not set +# BR2_PACKAGE_GENEXT2FS is not set +# BR2_PACKAGE_GENPART is not set +# BR2_PACKAGE_GENROMFS 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_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_SUNXI_TOOLS is not set +# BR2_PACKAGE_UNIONFS is not set +# BR2_PACKAGE_XFSPROGS is not set + +# +# Fonts, cursors, icons, sounds and themes +# + +# +# Cursors +# +# BR2_PACKAGE_COMIX_CURSORS is not set +# BR2_PACKAGE_OBSIDIAN_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 + +# +# Icons +# +# BR2_PACKAGE_GOOGLE_MATERIAL_DESIGN_ICONS is not set +# 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_CHOCOLATE_DOOM is not set +# BR2_PACKAGE_GNUCHESS is not set +# 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 +# BR2_PACKAGE_STELLA is not set + +# +# Graphic libraries and applications (graphic/text) +# + +# +# Graphic applications +# +# BR2_PACKAGE_FSWEBCAM is not set +# BR2_PACKAGE_GHOSTSCRIPT is not set + +# +# glmark2 needs an OpenGL or an openGL ES and EGL backend provided by mesa3d +# +# BR2_PACKAGE_GNUPLOT is not set +# BR2_PACKAGE_JHEAD is not set +# BR2_PACKAGE_LIBVA_UTILS is not set +# BR2_PACKAGE_PNGQUANT is not set +# BR2_PACKAGE_RRDTOOL is not set +# BR2_PACKAGE_TESSERACT_OCR is not set + +# +# Graphic libraries +# +# BR2_PACKAGE_CEGUI06 is not set +# BR2_PACKAGE_DIRECTFB is not set +# BR2_PACKAGE_EFL is not set +# BR2_PACKAGE_FBDUMP is not set +# BR2_PACKAGE_FBGRAB is not set +# BR2_PACKAGE_FB_TEST_APP is not set +# BR2_PACKAGE_FBTERM is not set +# BR2_PACKAGE_FBV is not set +# BR2_PACKAGE_FREERDP is not set +# BR2_PACKAGE_IMAGEMAGICK is not set + +# +# linux-fusion needs a Linux kernel to be built +# +# BR2_PACKAGE_MESA3D is not set +# BR2_PACKAGE_OCRAD is not set +# BR2_PACKAGE_PSPLASH is not set +# BR2_PACKAGE_SDL is not set +# BR2_PACKAGE_SDL2 is not set + +# +# Other GUIs +# +# BR2_PACKAGE_QT is not set +BR2_PACKAGE_QT5_JSCORE_AVAILABLE=y +# BR2_PACKAGE_QT5 is not set + +# +# 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 + +# +# midori needs libgtk3 and a glibc toolchain w/ C++, gcc >= 4.9, host gcc >= 4.8 +# +# BR2_PACKAGE_XKEYBOARD_CONFIG is not set + +# +# Hardware handling +# + +# +# Firmware +# +# BR2_PACKAGE_AM33X_CM3 is not set +# BR2_PACKAGE_B43_FIRMWARE is not set +# BR2_PACKAGE_LINUX_FIRMWARE is not set +# BR2_PACKAGE_RPI_BT_FIRMWARE is not set +# BR2_PACKAGE_RPI_FIRMWARE is not set +# BR2_PACKAGE_RPI_WIFI_FIRMWARE is not set +# BR2_PACKAGE_SUNXI_BOARDS is not set +# BR2_PACKAGE_TS4900_FPGA is not set +# BR2_PACKAGE_UX500_FIRMWARE is not set +# BR2_PACKAGE_WILC1000_FIRMWARE is not set +# BR2_PACKAGE_WILINK_BT_FIRMWARE is not set +# BR2_PACKAGE_ZD1211_FIRMWARE is not set + +# +# a10disp needs a Linux kernel to be built +# +# BR2_PACKAGE_ACPICA is not set +# BR2_PACKAGE_ACPITOOL is not set +# BR2_PACKAGE_AER_INJECT is not set +# BR2_PACKAGE_AM335X_PRU_PACKAGE is not set +# BR2_PACKAGE_AVRDUDE is not set + +# +# bcache-tools needs udev /dev management +# +# BR2_PACKAGE_CBOOTIMAGE is not set +# BR2_PACKAGE_CC_TOOL is not set +# BR2_PACKAGE_CDRKIT is not set +# BR2_PACKAGE_CRYPTSETUP is not set +# BR2_PACKAGE_CWIID is not set +# BR2_PACKAGE_DBUS is not set +# BR2_PACKAGE_DMRAID is not set + +# +# dt-utils needs udev /dev management +# +# BR2_PACKAGE_DTV_SCAN_TABLES is not set +# BR2_PACKAGE_DVB_APPS is not set +# BR2_PACKAGE_DVBSNOOP is not set +# BR2_PACKAGE_EDID_DECODE is not set +# BR2_PACKAGE_EEPROG is not set + +# +# eudev needs eudev /dev management +# +# BR2_PACKAGE_EVEMU is not set +# BR2_PACKAGE_EVTEST is not set +# BR2_PACKAGE_FAN_CTRL is not set +# BR2_PACKAGE_FCONFIG is not set +# BR2_PACKAGE_FIS is not set +# BR2_PACKAGE_FMTOOLS is not set +# BR2_PACKAGE_FREESCALE_IMX is not set +# BR2_PACKAGE_FXLOAD is not set +# BR2_PACKAGE_GADGETFS_TEST is not set +# BR2_PACKAGE_GPM is not set +# BR2_PACKAGE_GPSD is not set +# BR2_PACKAGE_GPTFDISK is not set +# BR2_PACKAGE_GVFS 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_IOSTAT is not set +# BR2_PACKAGE_IPMITOOL is not set + +# +# iqvlinux needs a Linux kernel to be built +# +# BR2_PACKAGE_IRDA_UTILS is not set +# BR2_PACKAGE_KBD is not set +# BR2_PACKAGE_LCDPROC is not set +# BR2_PACKAGE_LIBUIO is not set +# BR2_PACKAGE_LIBUMP is not set +# BR2_PACKAGE_LINUXCONSOLETOOLS is not set + +# +# linux-backports needs a Linux kernel to be built +# +# BR2_PACKAGE_LIRC_TOOLS is not set +# BR2_PACKAGE_LM_SENSORS is not set +# BR2_PACKAGE_LSHW is not set +# BR2_PACKAGE_LSSCSI is not set +# BR2_PACKAGE_LSUIO is not set +# BR2_PACKAGE_LVM2 is not set +# BR2_PACKAGE_MALI_T76X is not set +# BR2_PACKAGE_MDADM is not set +# BR2_PACKAGE_MEMTESTER is not set +# BR2_PACKAGE_MEMTOOL is not set +# BR2_PACKAGE_MINICOM is not set +# BR2_PACKAGE_NANOCOM is not set +# BR2_PACKAGE_NEARD is not set + +# +# nvidia-tegra23 needs Xorg <= 1.14 and a glibc toolchain w/ EABIhf +# +# BR2_PACKAGE_NVME is not set +# BR2_PACKAGE_ODROID_MALI is not set +# BR2_PACKAGE_ODROID_SCRIPTS is not set +# BR2_PACKAGE_OFONO is not set +# BR2_PACKAGE_OPEN2300 is not set +# BR2_PACKAGE_OPENIPMI is not set +# BR2_PACKAGE_OPENOCD is not set + +# +# owl-linux needs a Linux kernel to be built +# + +# +# owl-linux is only supported on ARM9 architecture +# +# BR2_PACKAGE_PARTED is not set +# BR2_PACKAGE_PCIUTILS is not set +# BR2_PACKAGE_PDBG is not set +# BR2_PACKAGE_PICOCOM is not set +# BR2_PACKAGE_PIFMRDS is not set +# BR2_PACKAGE_POWERTOP is not set +# BR2_PACKAGE_PPS_TOOLS is not set +# BR2_PACKAGE_PRU_SOFTWARE_SUPPORT is not set +# BR2_PACKAGE_READ_EDID is not set +# BR2_PACKAGE_RFKILL is not set +# BR2_PACKAGE_RNG_TOOLS is not set +# BR2_PACKAGE_RPI_USERLAND is not set +# BR2_PACKAGE_RS485CONF is not set + +# +# rtl8188eu needs a Linux kernel to be built +# + +# +# rtl8723bs needs a Linux kernel to be built +# + +# +# rtl8821au 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 +# BR2_PACKAGE_SMARTMONTOOLS is not set +# 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_SUNXI_CEDARX is not set +# BR2_PACKAGE_SUNXI_MALI is not set +# BR2_PACKAGE_SYSSTAT is not set + +# +# targetcli-fb depends on Python +# + +# +# ti-gfx needs a glibc toolchain and a Linux kernel to be built +# + +# +# ti-sgx-km needs a Linux kernel to be built +# + +# +# ti-sgx-um needs the ti-sgx-km driver +# +# BR2_PACKAGE_TI_UIM is not set +# BR2_PACKAGE_TI_UTILS is not set +# BR2_PACKAGE_TRIGGERHAPPY is not set +# BR2_PACKAGE_UBOOT_TOOLS is not set +# BR2_PACKAGE_UBUS is not set + +# +# uccp420wlan needs a Linux kernel >= 4.2 to be built +# + +# +# udisks needs udev /dev management +# + +# +# upower needs udev /dev management +# +# BR2_PACKAGE_USB_MODESWITCH is not set +# BR2_PACKAGE_USB_MODESWITCH_DATA is not set + +# +# usbmount requires udev to be enabled +# + +# +# usbutils needs udev /dev management and toolchain w/ threads +# +# BR2_PACKAGE_W_SCAN is not set +# 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_ENSCRIPT is not set +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_GAUCHE_ARCH_SUPPORTS=y +# BR2_PACKAGE_GAUCHE is not set +# BR2_PACKAGE_GUILE is not set +# BR2_PACKAGE_HASERL is not set +# BR2_PACKAGE_JAMVM is not set +# BR2_PACKAGE_JIMTCL is not set +# BR2_PACKAGE_LUA is not set +BR2_PACKAGE_LUAJIT_ARCH_SUPPORTS=y +# BR2_PACKAGE_LUAJIT is not set +# BR2_PACKAGE_MICROPYTHON is not set +# BR2_PACKAGE_MOARVM is not set +BR2_PACKAGE_MONO_ARCH_SUPPORTS=y +# BR2_PACKAGE_MONO is not set +BR2_PACKAGE_NODEJS_ARCH_SUPPORTS=y +# BR2_PACKAGE_NODEJS is not set +# BR2_PACKAGE_PERL is not set +# BR2_PACKAGE_PHP is not set +# BR2_PACKAGE_PYTHON is not set +# BR2_PACKAGE_PYTHON3 is not set +# BR2_PACKAGE_RUBY is not set +# BR2_PACKAGE_TCL is not set + +# +# Libraries +# + +# +# Audio/Sound +# +# BR2_PACKAGE_ALSA_LIB is not set +# BR2_PACKAGE_AUBIO is not set +# BR2_PACKAGE_AUDIOFILE is not set +# BR2_PACKAGE_CELT051 is not set +BR2_PACKAGE_FDK_AAC_ARCH_SUPPORTS=y +# BR2_PACKAGE_FDK_AAC is not set +# BR2_PACKAGE_LIBAO is not set +# BR2_PACKAGE_LIBASPLIB is not set +# BR2_PACKAGE_LIBBROADVOICE is not set +# BR2_PACKAGE_LIBCDAUDIO is not set +# BR2_PACKAGE_LIBCDDB is not set +# BR2_PACKAGE_LIBCDIO is not set +# BR2_PACKAGE_LIBCODEC2 is not set +# BR2_PACKAGE_LIBCUE is not set +# BR2_PACKAGE_LIBCUEFILE is not set +# BR2_PACKAGE_LIBEBUR128 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 +# BR2_PACKAGE_LIBMODPLUG is not set +# BR2_PACKAGE_LIBMPD is not set +# BR2_PACKAGE_LIBMPDCLIENT is not set +# BR2_PACKAGE_LIBREPLAYGAIN is not set +# BR2_PACKAGE_LIBSAMPLERATE is not set +# BR2_PACKAGE_LIBSIDPLAY2 is not set +# BR2_PACKAGE_LIBSILK is not set +# BR2_PACKAGE_LIBSNDFILE is not set +# BR2_PACKAGE_LIBSOUNDTOUCH is not set +# BR2_PACKAGE_LIBSOXR is not set +# BR2_PACKAGE_LIBVORBIS is not set +# BR2_PACKAGE_MP4V2 is not set +BR2_PACKAGE_OPENAL_ARCH_SUPPORTS=y +# BR2_PACKAGE_OPENAL is not set +# BR2_PACKAGE_OPENCORE_AMR is not set +# BR2_PACKAGE_OPUS is not set +# BR2_PACKAGE_OPUSFILE is not set +# BR2_PACKAGE_PORTAUDIO is not set +# BR2_PACKAGE_SBC is not set +# BR2_PACKAGE_SPEEX is not set +# BR2_PACKAGE_TAGLIB is not set +# BR2_PACKAGE_TINYALSA is not set +# BR2_PACKAGE_TREMOR is not set +# BR2_PACKAGE_VO_AACENC is not set +BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING_ARCH_SUPPORTS=y +# BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING is not set + +# +# Compression and decompression +# +# BR2_PACKAGE_LIBARCHIVE is not set +# BR2_PACKAGE_LIBSQUISH is not set +# BR2_PACKAGE_LIBZIP is not set +# BR2_PACKAGE_LZO is not set +# BR2_PACKAGE_MINIZIP is not set +# BR2_PACKAGE_SNAPPY is not set +# BR2_PACKAGE_SZIP is not set +BR2_PACKAGE_ZLIB=y + +# +# Crypto +# +# BR2_PACKAGE_BEECRYPT is not set +BR2_PACKAGE_BOTAN_ARCH_SUPPORTS=y +# BR2_PACKAGE_BOTAN is not set +# BR2_PACKAGE_CA_CERTIFICATES is not set + +# +# cryptodev needs a Linux kernel to be built +# +# BR2_PACKAGE_GCR is not set +# BR2_PACKAGE_GNUTLS is not set +# BR2_PACKAGE_LIBASSUAN 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="arm-unknown-linux-gnueabi" +# BR2_PACKAGE_LIBGPGME is not set +# BR2_PACKAGE_LIBKCAPI is not set +# BR2_PACKAGE_LIBKSBA is not set +# BR2_PACKAGE_LIBMCRYPT is not set +# BR2_PACKAGE_LIBMHASH is not set +# BR2_PACKAGE_LIBNSS 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_MBEDTLS is not set +# BR2_PACKAGE_NETTLE is not set +BR2_PACKAGE_OPENSSL=y +# BR2_PACKAGE_OPENSSL_BIN is not set +# BR2_PACKAGE_OPENSSL_ENGINES is not set +# BR2_PACKAGE_RHASH is not set +# BR2_PACKAGE_TINYDTLS is not set +# BR2_PACKAGE_TROUSERS is not set +# BR2_PACKAGE_USTREAM_SSL is not set + +# +# Database +# +# BR2_PACKAGE_BERKELEYDB is not set +# BR2_PACKAGE_GDBM is not set +# BR2_PACKAGE_HIREDIS is not set +# BR2_PACKAGE_KOMPEXSQLITE is not set +# BR2_PACKAGE_LEVELDB is not set +BR2_PACKAGE_MONGODB_ARCH_SUPPORTS=y +# BR2_PACKAGE_MONGODB is not set +# BR2_PACKAGE_MYSQL is not set +# BR2_PACKAGE_POSTGRESQL is not set +# BR2_PACKAGE_REDIS is not set +# BR2_PACKAGE_SQLCIPHER is not set +# BR2_PACKAGE_SQLITE is not set +# BR2_PACKAGE_UNIXODBC is not set + +# +# Filesystem +# +# BR2_PACKAGE_GAMIN is not set +# BR2_PACKAGE_LIBCONFIG is not set +# BR2_PACKAGE_LIBCONFUSE is not set +# BR2_PACKAGE_LIBFUSE 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 +# BR2_PACKAGE_PHYSFS is not set + +# +# Graphics +# +# BR2_PACKAGE_ASSIMP is not set +# BR2_PACKAGE_ATK is not set +# BR2_PACKAGE_ATKMM is not set +# BR2_PACKAGE_BULLET is not set +# BR2_PACKAGE_CAIRO is not set +# BR2_PACKAGE_CAIROMM is not set +# BR2_PACKAGE_EXIV2 is not set +# 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 +# +# BR2_PACKAGE_GRAPHITE2 is not set + +# +# gtkmm3 needs libgtk3 and a toolchain w/ C++, wchar, threads, gcc >= 4.8 +# +# BR2_PACKAGE_HARFBUZZ is not set +# BR2_PACKAGE_IJS is not set + +# +# irrlicht needs X11 and an OpenGL provider +# +# BR2_PACKAGE_IMLIB2 is not set +# BR2_PACKAGE_JASPER is not set +# BR2_PACKAGE_JPEG is not set +BR2_PACKAGE_JPEG_SIMD_SUPPORT=y +# BR2_PACKAGE_KMSXX is not set +# BR2_PACKAGE_LCMS2 is not set +# BR2_PACKAGE_LENSFUN is not set +# BR2_PACKAGE_LEPTONICA is not set +# BR2_PACKAGE_LIBART is not set +# 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++ +# +# BR2_PACKAGE_LIBFM_EXTRA is not set + +# +# libfreeglut depends on X.org and needs an OpenGL backend +# +# BR2_PACKAGE_LIBFREEIMAGE is not set +# BR2_PACKAGE_LIBGEOTIFF is not set + +# +# libglew depends on X.org and needs an OpenGL backend +# + +# +# libglfw depends on X.org and needs an OpenGL backend +# + +# +# libglu needs an OpenGL backend +# + +# +# libgtk3 needs an OpenGL or an OpenGL-EGL/wayland backend +# +# BR2_PACKAGE_LIBMEDIAART is not set +# BR2_PACKAGE_LIBMNG is not set +# BR2_PACKAGE_LIBPNG is not set +# BR2_PACKAGE_LIBQRENCODE is not set +# BR2_PACKAGE_LIBRAW is not set +# BR2_PACKAGE_LIBRSVG is not set + +# +# libsoil needs an OpenGL backend and a toolchain w/ dynamic library +# +# 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 +# BR2_PACKAGE_LIBVIPS is not set +# BR2_PACKAGE_MENU_CACHE is not set +# BR2_PACKAGE_OPENCV is not set +# BR2_PACKAGE_OPENCV3 is not set +# BR2_PACKAGE_OPENJPEG is not set +# BR2_PACKAGE_PANGO is not set +# BR2_PACKAGE_PANGOMM is not set +# BR2_PACKAGE_PIXMAN is not set +# BR2_PACKAGE_POPPLER is not set +# BR2_PACKAGE_TIFF is not set +# BR2_PACKAGE_WAYLAND is not set +BR2_PACKAGE_WEBKITGTK_ARCH_SUPPORTS=y + +# +# webkitgtk needs libgtk3 and a glibc toolchain w/ C++, gcc >= 4.9, host gcc >= 4.8 +# +# BR2_PACKAGE_WEBP is not set +# BR2_PACKAGE_ZBAR is not set +# BR2_PACKAGE_ZXING_CPP is not set + +# +# Hardware handling +# +# BR2_PACKAGE_ACSCCID is not set +# BR2_PACKAGE_BCM2835 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 is not set + +# +# hidapi needs udev /dev management and a toolchain w/ NPTL threads +# +# BR2_PACKAGE_LCDAPI is not set +# BR2_PACKAGE_LET_ME_CREATE is not set +BR2_PACKAGE_LIBAIO_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBAIO is not set + +# +# libatasmart requires udev to be enabled +# +# BR2_PACKAGE_LIBCEC 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 + +# +# libgudev needs udev /dev handling and a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBHID is not set +# BR2_PACKAGE_LIBIIO is not set + +# +# libinput needs udev /dev management and a toolchain w/ locale +# +# BR2_PACKAGE_LIBIQRF is not set +# BR2_PACKAGE_LIBLLCP is not set + +# +# libmbim needs udev /dev management and a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBNFC is not set +# BR2_PACKAGE_LIBPCIACCESS is not set +# BR2_PACKAGE_LIBPHIDGET is not set +# BR2_PACKAGE_LIBQMI is not set +# BR2_PACKAGE_LIBRAW1394 is not set +# BR2_PACKAGE_LIBRTLSDR is not set +# BR2_PACKAGE_LIBSERIAL is not set +# BR2_PACKAGE_LIBSERIALPORT is not set +# BR2_PACKAGE_LIBSIGROK is not set +# BR2_PACKAGE_LIBSIGROKDECODE is not set +# BR2_PACKAGE_LIBSOC is not set +# BR2_PACKAGE_LIBUSB is not set +# BR2_PACKAGE_LIBUSBGX is not set +# BR2_PACKAGE_LIBV4L is not set +# BR2_PACKAGE_LIBXKBCOMMON is not set +# BR2_PACKAGE_MRAA is not set +# BR2_PACKAGE_MTDEV is not set + +# +# ne10 needs a toolchain w/ neon +# +# BR2_PACKAGE_NEARDAL is not set +# BR2_PACKAGE_OWFS is not set +# BR2_PACKAGE_PCSC_LITE is not set +# BR2_PACKAGE_TSLIB is not set +# BR2_PACKAGE_URG is not set +# BR2_PACKAGE_WIRINGPI is not set + +# +# Javascript +# +# BR2_PACKAGE_ANGULARJS is not set +# BR2_PACKAGE_BOOTSTRAP is not set +# BR2_PACKAGE_EXPLORERCANVAS is not set +# BR2_PACKAGE_FLOT is not set +# BR2_PACKAGE_JQUERY is not set +# BR2_PACKAGE_JSMIN is not set +# BR2_PACKAGE_JSON_JAVASCRIPT is not set + +# +# JSON/XML +# +# BR2_PACKAGE_BENEJSON is not set +# BR2_PACKAGE_CJSON is not set +# BR2_PACKAGE_EXPAT is not set +# BR2_PACKAGE_EZXML is not set +# BR2_PACKAGE_JANSSON is not set +# BR2_PACKAGE_JSMN is not set +# BR2_PACKAGE_JSON_C is not set +# BR2_PACKAGE_JSON_GLIB is not set +# BR2_PACKAGE_JSONCPP is not set +# BR2_PACKAGE_LIBBSON is not set +# BR2_PACKAGE_LIBFASTJSON is not set +# BR2_PACKAGE_LIBJSON is not set +# BR2_PACKAGE_LIBROXML is not set +# BR2_PACKAGE_LIBUCL is not set +# BR2_PACKAGE_LIBXML2 is not set +# BR2_PACKAGE_LIBXMLPP is not set +# BR2_PACKAGE_LIBXMLRPC is not set +# BR2_PACKAGE_LIBXSLT is not set +# BR2_PACKAGE_LIBYAML is not set +# BR2_PACKAGE_MXML is not set +# BR2_PACKAGE_PUGIXML is not set +# BR2_PACKAGE_RAPIDJSON is not set +# BR2_PACKAGE_RAPIDXML is not set +# BR2_PACKAGE_RAPTOR is not set +# BR2_PACKAGE_TINYXML is not set +# BR2_PACKAGE_TINYXML2 is not set +# BR2_PACKAGE_VALIJSON is not set +# BR2_PACKAGE_XERCES is not set +# BR2_PACKAGE_YAJL is not set +# BR2_PACKAGE_YAML_CPP is not set + +# +# Logging +# +# BR2_PACKAGE_EVENTLOG is not set +# BR2_PACKAGE_GLOG is not set +# BR2_PACKAGE_LIBLOG4C_LOCALTIME is not set +# BR2_PACKAGE_LIBLOGGING is not set +# BR2_PACKAGE_LOG4CPLUS is not set +# BR2_PACKAGE_LOG4CPP is not set +# BR2_PACKAGE_LOG4CXX is not set +# BR2_PACKAGE_ZLOG is not set + +# +# Multimedia +# +# BR2_PACKAGE_BITSTREAM is not set +# BR2_PACKAGE_KVAZAAR is not set +# BR2_PACKAGE_LIBAACS is not set +# BR2_PACKAGE_LIBAMCODEC is not set +# BR2_PACKAGE_LIBASS is not set +# BR2_PACKAGE_LIBBDPLUS is not set +# BR2_PACKAGE_LIBBLURAY is not set +# BR2_PACKAGE_LIBDCADEC is not set +# BR2_PACKAGE_LIBDVBCSA is not set +# BR2_PACKAGE_LIBDVBPSI is not set +# BR2_PACKAGE_LIBDVBSI is not set +# BR2_PACKAGE_LIBDVDCSS is not set +# BR2_PACKAGE_LIBDVDNAV is not set +# BR2_PACKAGE_LIBDVDREAD is not set +# BR2_PACKAGE_LIBEBML is not set +# BR2_PACKAGE_LIBHDHOMERUN is not set + +# +# libimxvpuapi needs an i.MX platform with VPU support +# +# BR2_PACKAGE_LIBMATROSKA is not set +# BR2_PACKAGE_LIBMMS is not set +# BR2_PACKAGE_LIBMPEG2 is not set +# BR2_PACKAGE_LIBOGG is not set +BR2_PACKAGE_LIBOPENH264_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBOPENH264 is not set +# BR2_PACKAGE_LIBPLAYER is not set +# BR2_PACKAGE_LIBTHEORA is not set +# BR2_PACKAGE_LIBVPX is not set +# BR2_PACKAGE_LIBYUV is not set +# BR2_PACKAGE_LIVE555 is not set +# BR2_PACKAGE_MEDIASTREAMER is not set +# BR2_PACKAGE_X264 is not set +# BR2_PACKAGE_X265 is not set + +# +# Networking +# +# BR2_PACKAGE_AGENTPP is not set +# BR2_PACKAGE_ALLJOYN is not set +# BR2_PACKAGE_ALLJOYN_BASE is not set +# BR2_PACKAGE_ALLJOYN_TCL is not set +# BR2_PACKAGE_ALLJOYN_TCL_BASE is not set +# BR2_PACKAGE_AZURE_IOT_SDK_C is not set + +# +# batman-adv needs a Linux kernel to be built +# +# BR2_PACKAGE_C_ARES is not set +BR2_PACKAGE_CANFESTIVAL_ARCH_SUPPORTS=y +# BR2_PACKAGE_CANFESTIVAL is not set +# BR2_PACKAGE_CGIC is not set +# BR2_PACKAGE_CPPZMQ is not set +# BR2_PACKAGE_CZMQ is not set +# BR2_PACKAGE_FILEMQ is not set +# BR2_PACKAGE_FLICKCURL is not set +# BR2_PACKAGE_FREERADIUS_CLIENT is not set +# BR2_PACKAGE_GEOIP is not set +# BR2_PACKAGE_GLIB_NETWORKING is not set +# 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 +# BR2_PACKAGE_IBRCOMMON is not set +# BR2_PACKAGE_IBRDTN is not set +# BR2_PACKAGE_LIBCGI is not set +# BR2_PACKAGE_LIBCGICC is not set +# BR2_PACKAGE_LIBCOAP is not set +# BR2_PACKAGE_LIBCURL is not set +# BR2_PACKAGE_LIBDNET is not set +# BR2_PACKAGE_LIBEXOSIP2 is not set +# BR2_PACKAGE_LIBFCGI is not set +# BR2_PACKAGE_LIBGSASL is not set +# BR2_PACKAGE_LIBHTTPPARSER is not set +# BR2_PACKAGE_LIBIDN is not set +# BR2_PACKAGE_LIBISCSI is not set +# BR2_PACKAGE_LIBLDNS is not set +# BR2_PACKAGE_LIBMAXMINDDB is not set +# BR2_PACKAGE_LIBMBUS is not set +# BR2_PACKAGE_LIBMEMCACHED is not set +# BR2_PACKAGE_LIBMICROHTTPD is not set +# BR2_PACKAGE_LIBMINIUPNPC is not set +# BR2_PACKAGE_LIBMNL is not set +# BR2_PACKAGE_LIBMODBUS is not set +# BR2_PACKAGE_LIBNATPMP is not set +# BR2_PACKAGE_LIBNDP is not set +# BR2_PACKAGE_LIBNET 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_LIBNL is not set +# BR2_PACKAGE_LIBOAUTH is not set +# BR2_PACKAGE_LIBOPING is not set +# BR2_PACKAGE_LIBOSIP2 is not set +# BR2_PACKAGE_LIBPCAP is not set +# BR2_PACKAGE_LIBPJSIP 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_LIBSRTP is not set +# BR2_PACKAGE_LIBSTROPHE is not set +# BR2_PACKAGE_LIBTIRPC is not set +# BR2_PACKAGE_LIBTORRENT is not set +# BR2_PACKAGE_LIBUPNP is not set +# BR2_PACKAGE_LIBUPNPP is not set +# BR2_PACKAGE_LIBURIPARSER is not set +# BR2_PACKAGE_LIBVNCSERVER is not set +# BR2_PACKAGE_LIBWEBSOCK is not set +# BR2_PACKAGE_LIBWEBSOCKETS is not set +# BR2_PACKAGE_LKSCTP_TOOLS is not set +# BR2_PACKAGE_MONGOOSE is not set +# BR2_PACKAGE_NANOMSG is not set +# BR2_PACKAGE_NEON is not set +# BR2_PACKAGE_NORM is not set +# BR2_PACKAGE_NSS_PAM_LDAPD is not set +# BR2_PACKAGE_OMNIORB is not set +# BR2_PACKAGE_OPENLDAP is not set +# BR2_PACKAGE_OPENMPI is not set +# BR2_PACKAGE_OPENPGM is not set + +# +# openzwave needs udev and a toolchain w/ C++, threads, wchar +# +# BR2_PACKAGE_ORTP is not set +# BR2_PACKAGE_PAHO_MQTT_C is not set +# BR2_PACKAGE_QDECODER is not set +# BR2_PACKAGE_QPID_PROTON is not set +# BR2_PACKAGE_RABBITMQ_C is not set +# BR2_PACKAGE_RTMPDUMP is not set +# BR2_PACKAGE_SLIRP is not set +# BR2_PACKAGE_SNMPPP is not set +# BR2_PACKAGE_SOFIA_SIP is not set +# BR2_PACKAGE_THRIFT is not set +# BR2_PACKAGE_USBREDIR is not set +# BR2_PACKAGE_ZEROMQ is not set +# BR2_PACKAGE_ZMQPP is not set +# BR2_PACKAGE_ZYRE is not set + +# +# Other +# +# BR2_PACKAGE_APR is not set +# BR2_PACKAGE_APR_UTIL is not set +# BR2_PACKAGE_ARMADILLO is not set +# BR2_PACKAGE_ATF is not set +# BR2_PACKAGE_BCTOOLBOX is not set +# BR2_PACKAGE_BDWGC is not set +# BR2_PACKAGE_BOOST is not set +# BR2_PACKAGE_CLAPACK is not set +BR2_PACKAGE_CLASSPATH_ARCH_SUPPORTS=y +# BR2_PACKAGE_CLASSPATH is not set +# BR2_PACKAGE_CPPCMS is not set +# BR2_PACKAGE_CRACKLIB is not set +# BR2_PACKAGE_DAWGDIC is not set +# BR2_PACKAGE_DING_LIBS is not set +# BR2_PACKAGE_EIGEN is not set +# BR2_PACKAGE_ELFUTILS is not set +# BR2_PACKAGE_FFTW is not set +# BR2_PACKAGE_FLANN is not set +# BR2_PACKAGE_GFLAGS is not set +# BR2_PACKAGE_GLIBMM is not set +# BR2_PACKAGE_GLM is not set +# BR2_PACKAGE_GMP is not set +# BR2_PACKAGE_GSL is not set +# BR2_PACKAGE_GTEST is not set +BR2_PACKAGE_JEMALLOC_ARCH_SUPPORTS=y +# BR2_PACKAGE_JEMALLOC is not set + +# +# lapack/blas needs a toolchain w/ fortran +# +# BR2_PACKAGE_LIBARGTABLE2 is not set +BR2_PACKAGE_LIBATOMIC_OPS_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBATOMIC_OPS is not set +BR2_PACKAGE_LIBBSD_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBBSD is not set +# BR2_PACKAGE_LIBCAP is not set +# BR2_PACKAGE_LIBCAP_NG is not set +# BR2_PACKAGE_LIBCGROUP is not set +# BR2_PACKAGE_LIBCOFI is not set +# BR2_PACKAGE_LIBCROCO is not set +# BR2_PACKAGE_LIBCROSSGUID is not set +# BR2_PACKAGE_LIBCSV is not set +# BR2_PACKAGE_LIBDAEMON 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 +# BR2_PACKAGE_LIBFFI is not set +# BR2_PACKAGE_LIBGEE is not set +# BR2_PACKAGE_LIBGLIB2 is not set +# BR2_PACKAGE_LIBGLOB is not set +# BR2_PACKAGE_LIBICAL is not set +# BR2_PACKAGE_LIBITE is not set +# BR2_PACKAGE_LIBLINEAR is not set +# BR2_PACKAGE_LIBLOKI is not set +# BR2_PACKAGE_LIBNPTH is not set +BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT=y +# BR2_PACKAGE_LIBNSPR is not set +# BR2_PACKAGE_LIBPFM4 is not set +# BR2_PACKAGE_LIBPLIST is not set +# BR2_PACKAGE_LIBPTHREAD_STUBS is not set +# BR2_PACKAGE_LIBPTHSEM is not set +# BR2_PACKAGE_LIBPWQUALITY is not set +BR2_PACKAGE_LIBSECCOMP_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBSECCOMP is not set +# BR2_PACKAGE_LIBSIGC is not set +BR2_PACKAGE_LIBSIGSEGV_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBSIGSEGV is not set +# BR2_PACKAGE_LIBSPATIALINDEX 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_LIBUNWIND_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBUNWIND is not set +BR2_PACKAGE_LIBURCU_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBURCU 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_LTTNG_LIBUST 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 +# BR2_PACKAGE_MSGPACK is not set +# BR2_PACKAGE_MTDEV2TUIO is not set +BR2_PACKAGE_OPENBLAS_DEFAULT_TARGET="CORTEXA9" +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 is not set +BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS=y +# BR2_PACKAGE_PROTOBUF is not set +# BR2_PACKAGE_PROTOBUF_C is not set +# BR2_PACKAGE_QHULL is not set +# BR2_PACKAGE_QLIBC is not set +# BR2_PACKAGE_RIEMANN_C_CLIENT is not set +# BR2_PACKAGE_SHAPELIB is not set +# BR2_PACKAGE_SKALIBS is not set +# BR2_PACKAGE_SPHINXBASE is not set +# BR2_PACKAGE_TINYCBOR is not set + +# +# Security +# +# BR2_PACKAGE_LIBSELINUX is not set +# BR2_PACKAGE_LIBSEMANAGE is not set +# BR2_PACKAGE_LIBSEPOL is not set + +# +# Text and terminal handling +# +# BR2_PACKAGE_AUGEAS is not set +# BR2_PACKAGE_ENCHANT is not set +# BR2_PACKAGE_FMT is not set +# BR2_PACKAGE_ICU is not set +# BR2_PACKAGE_LIBCLI 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_LIBUNISTRING is not set +# BR2_PACKAGE_LINENOISE is not set +# BR2_PACKAGE_NCURSES is not set +# BR2_PACKAGE_NEWT is not set +# BR2_PACKAGE_PCRE is not set +# BR2_PACKAGE_PCRE2 is not set +# BR2_PACKAGE_POPT is not set +# BR2_PACKAGE_READLINE is not set +# BR2_PACKAGE_SLANG is not set +# BR2_PACKAGE_TCLAP is not set +# BR2_PACKAGE_USTR is not set + +# +# 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_CLAMAV is not set +# BR2_PACKAGE_COLLECTD is not set + +# +# domoticz needs lua >= 5.2 and a toolchain w/ C++, threads, wchar, dynamic library +# +# BR2_PACKAGE_EMPTY is not set +# BR2_PACKAGE_GNURADIO is not set +# BR2_PACKAGE_GOOGLEFONTDIRECTORY is not set + +# +# gqrx needs qt5, gnuradio, fftw's single precision +# +# BR2_PACKAGE_GSETTINGS_DESKTOP_SCHEMAS is not set +# BR2_PACKAGE_HAVEGED is not set +# BR2_PACKAGE_LINUX_SYSCALL_SUPPORT is not set +# BR2_PACKAGE_MCRYPT is not set +# BR2_PACKAGE_MOBILE_BROADBAND_PROVIDER_INFO is not set +BR2_PACKAGE_QEMU_ARCH_SUPPORTS_TARGET=y +# BR2_PACKAGE_QEMU is not set +# BR2_PACKAGE_QPDF is not set +# BR2_PACKAGE_SHARED_MIME_INFO is not set +# BR2_PACKAGE_TASKD is not set +# BR2_PACKAGE_XUTIL_UTIL_MACROS is not set + +# +# Networking applications +# +# BR2_PACKAGE_AICCU is not set +# BR2_PACKAGE_AIRCRACK_NG 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 +# BR2_PACKAGE_ATFTP is not set +# BR2_PACKAGE_AUTOSSH 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 +# BR2_PACKAGE_BCUSDK is not set +# BR2_PACKAGE_BIND is not set +# BR2_PACKAGE_BLUEZ_UTILS is not set +# BR2_PACKAGE_BLUEZ5_UTILS is not set +# BR2_PACKAGE_BMON is not set +# BR2_PACKAGE_BOA 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 +# BR2_PACKAGE_CANNELLONI is not set +# BR2_PACKAGE_CHRONY is not set +# BR2_PACKAGE_CIVETWEB 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_CRDA is not set +# BR2_PACKAGE_CTORRENT is not set +# BR2_PACKAGE_CUPS is not set +# BR2_PACKAGE_DANTE is not set +# BR2_PACKAGE_DARKHTTPD 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_EBTABLES is not set + +# +# ebtables needs a glibc or uClibc toolchain +# + +# +# 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_FLANNEL is not set +# BR2_PACKAGE_FPING is not set +# BR2_PACKAGE_FREESWITCH is not set +# BR2_PACKAGE_GESFTPSERVER is not set + +# +# gupnp-tools needs libgtk3 +# +# BR2_PACKAGE_HANS is not set +# BR2_PACKAGE_HIAWATHA is not set +# BR2_PACKAGE_HOSTAPD is not set +# BR2_PACKAGE_HTTPING is not set +# BR2_PACKAGE_IBRDTN_TOOLS is not set +# BR2_PACKAGE_IBRDTND 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 +# BR2_PACKAGE_IPERF is not set +# BR2_PACKAGE_IPERF3 is not set +# BR2_PACKAGE_IPROUTE2 is not set +# BR2_PACKAGE_IPSEC_TOOLS 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_JANUS_GATEWAY is not set +# BR2_PACKAGE_KEEPALIVED is not set +# BR2_PACKAGE_KISMET is not set +# BR2_PACKAGE_KNOCK is not set +# BR2_PACKAGE_LEAFNODE2 is not set +# BR2_PACKAGE_LFT is not set +# BR2_PACKAGE_LFTP is not set +# BR2_PACKAGE_LIGHTTPD is not set +# BR2_PACKAGE_LINKNX is not set +# BR2_PACKAGE_LINKS is not set +# BR2_PACKAGE_LINPHONE is not set +# 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_MACCHANGER is not set +# BR2_PACKAGE_MEMCACHED is not set +# BR2_PACKAGE_MII_DIAG is not set +# BR2_PACKAGE_MINIDLNA is not set +# BR2_PACKAGE_MINISSDPD is not set +# BR2_PACKAGE_MJPG_STREAMER is not set + +# +# modemmanager needs udev /dev management and a toolchain w/ wchar, threads +# +BR2_PACKAGE_MONGREL2_LIBC_SUPPORTS=y +# BR2_PACKAGE_MONGREL2 is not set +# BR2_PACKAGE_MONKEY is not set +# BR2_PACKAGE_MOSH is not set +# BR2_PACKAGE_MOSQUITTO is not set +# BR2_PACKAGE_MROUTED 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_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 toolchain w/ headers >= 3.7, dynamic library +# +# 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 +# BR2_PACKAGE_NLOAD is not set +# BR2_PACKAGE_NMAP is not set +# BR2_PACKAGE_NOIP is not set +# BR2_PACKAGE_NTP 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_PLC_UTILS is not set +# BR2_PACKAGE_OPENNTPD is not set +# BR2_PACKAGE_OPENOBEX is not set +BR2_PACKAGE_OPENSSH=y +# BR2_PACKAGE_OPENSWAN is not set +# BR2_PACKAGE_OPENVPN is not set +# BR2_PACKAGE_P910ND is not set +# BR2_PACKAGE_PHIDGETWEBSERVICE is not set +# BR2_PACKAGE_PHYTOOL 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 +# 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_QUAGGA is not set + +# +# rabbitmq-server needs erlang +# +# BR2_PACKAGE_RADVD 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 +# BR2_PACKAGE_RTORRENT is not set +# 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 +# BR2_PACKAGE_SCONESERVER is not set +# BR2_PACKAGE_SER2NET is not set +# BR2_PACKAGE_SHAIRPORT_SYNC is not set +# BR2_PACKAGE_SHELLINABOX is not set +# BR2_PACKAGE_SMCROUTE is not set +# BR2_PACKAGE_SNGREP 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 +# BR2_PACKAGE_SQUID 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_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_TINYHTTPD is not set +# BR2_PACKAGE_TN5250 is not set +# BR2_PACKAGE_TOR is not set +# BR2_PACKAGE_TRANSMISSION is not set +# BR2_PACKAGE_TUNCTL is not set +# BR2_PACKAGE_TVHEADEND is not set +# BR2_PACKAGE_UDPCAST is not set +# BR2_PACKAGE_UHTTPD is not set +# BR2_PACKAGE_ULOGD is not set +# BR2_PACKAGE_USHARE is not set +# BR2_PACKAGE_USSP_PUSH is not set +# BR2_PACKAGE_VDE2 is not set +# BR2_PACKAGE_VDR is not set +# 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 +# BR2_PACKAGE_WIRELESS_REGDB is not set +# BR2_PACKAGE_WIRELESS_TOOLS is not set +# BR2_PACKAGE_WIRESHARK is not set +# 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_ZNC is not set + +# +# 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 + +# +# Real-Time +# +BR2_PACKAGE_XENOMAI_ARCH_SUPPORTS=y +# BR2_PACKAGE_XENOMAI is not set + +# +# Security +# +# BR2_PACKAGE_CHECKPOLICY is not set +# BR2_PACKAGE_PAXTEST is not set +# BR2_PACKAGE_POLICYCOREUTILS is not set +# BR2_PACKAGE_REFPOLICY is not set +# BR2_PACKAGE_SEPOLGEN is not set +# BR2_PACKAGE_SETOOLS is not set + +# +# Shell and utilities +# + +# +# Shells +# +# BR2_PACKAGE_MKSH is not set + +# +# Utilities +# +# BR2_PACKAGE_AT is not set +# BR2_PACKAGE_CCRYPT is not set +# BR2_PACKAGE_DIALOG is not set +# BR2_PACKAGE_DTACH is not set +# BR2_PACKAGE_FILE is not set +# BR2_PACKAGE_EASY_RSA is not set +# BR2_PACKAGE_GNUPG is not set +# 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_PINENTRY is not set +# BR2_PACKAGE_RANGER is not set +# BR2_PACKAGE_SCREEN is not set +# BR2_PACKAGE_SUDO is not set +# BR2_PACKAGE_TMUX is not set +# BR2_PACKAGE_XMLSTARLET is not set +# BR2_PACKAGE_XXHASH 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_AUDIT_ARCH_SUPPORTS=y +# BR2_PACKAGE_AUDIT is not set +# BR2_PACKAGE_CGROUPFS_MOUNT is not set + +# +# circus needs Python and a toolchain w/ C++, threads +# +# BR2_PACKAGE_CPULOAD is not set +# BR2_PACKAGE_DAEMON is not set +# BR2_PACKAGE_DC3DD is not set +# BR2_PACKAGE_DDRESCUE is not set +# BR2_PACKAGE_DOCKER_CONTAINERD is not set +# BR2_PACKAGE_DOCKER_ENGINE is not set +# BR2_PACKAGE_EFIBOOTMGR is not set +BR2_PACKAGE_EFIVAR_ARCH_SUPPORTS=y +# BR2_PACKAGE_EFIVAR is not set + +# +# emlog needs a Linux kernel to be built +# +# BR2_PACKAGE_FTOP is not set +# BR2_PACKAGE_GETENT is not set +# BR2_PACKAGE_HTOP is not set +BR2_PACKAGE_INITSCRIPTS=y + +# +# iotop depends on python or 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_LXC is not set +# BR2_PACKAGE_MONIT is not set +# BR2_PACKAGE_NCDU is not set +# BR2_PACKAGE_NUT is not set +# BR2_PACKAGE_POLKIT is not set +# BR2_PACKAGE_PROCRANK_LINUX is not set +# BR2_PACKAGE_PWGEN is not set +# BR2_PACKAGE_QUOTA is not set +# BR2_PACKAGE_RAUC 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 +# BR2_PACKAGE_SMACK is not set + +# +# supervisor needs the python interpreter +# +# BR2_PACKAGE_SWUPDATE is not set +BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS=y +# BR2_PACKAGE_TPM_TOOLS is not set +# BR2_PACKAGE_UNSCD is not set +# BR2_PACKAGE_UTIL_LINUX is not set +# BR2_PACKAGE_XEN 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_NANO is not set +# BR2_PACKAGE_UEMACS is not set + +# +# Filesystem images +# +# BR2_TARGET_ROOTFS_AXFS is not set +# BR2_TARGET_ROOTFS_CLOOP is not set +# BR2_TARGET_ROOTFS_CPIO is not set +# BR2_TARGET_ROOTFS_CRAMFS is not set +# BR2_TARGET_ROOTFS_EXT2 is not set + +# +# initramfs needs a Linux kernel to be built +# +# BR2_TARGET_ROOTFS_JFFS2 is not set +# BR2_TARGET_ROOTFS_ROMFS 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_LZMA is not set +# BR2_TARGET_ROOTFS_TAR_LZO is not set +# BR2_TARGET_ROOTFS_TAR_XZ is not set +BR2_TARGET_ROOTFS_TAR_OPTIONS="" +# BR2_TARGET_ROOTFS_UBIFS is not set +# BR2_TARGET_ROOTFS_YAFFS2 is not set + +# +# Bootloaders +# +# BR2_TARGET_AFBOOT_STM32 is not set +# BR2_TARGET_BAREBOX is not set +# BR2_TARGET_MXS_BOOTLETS is not set +# BR2_TARGET_S500_BOOTLOADER is not set +# BR2_TARGET_TS4800_MBRBOOT is not set +# BR2_TARGET_UBOOT is not set +# BR2_TARGET_XLOADER is not set + +# +# Host utilities +# +# BR2_PACKAGE_HOST_AESPIPE is not set +# BR2_PACKAGE_HOST_ANDROID_TOOLS is not set +# BR2_PACKAGE_HOST_CBOOTIMAGE is not set +# BR2_PACKAGE_HOST_CHECKPOLICY is not set +# BR2_PACKAGE_HOST_CRAMFS 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_DTC is not set +# BR2_PACKAGE_HOST_E2FSPROGS is not set +# BR2_PACKAGE_HOST_E2TOOLS is not set +# BR2_PACKAGE_HOST_FAKETIME 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_GO_ARCH_SUPPORTS=y +BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS=y +# BR2_PACKAGE_HOST_GPTFDISK is not set +# BR2_PACKAGE_HOST_IMX_USB_LOADER is not set +# BR2_PACKAGE_HOST_JQ is not set +# BR2_PACKAGE_HOST_JSMIN is not set +# BR2_PACKAGE_HOST_LPC3250LOADER is not set +# BR2_PACKAGE_HOST_LTTNG_BABELTRACE is not set +# BR2_PACKAGE_HOST_MFGTOOLS is not set +# BR2_PACKAGE_HOST_MKPASSWD is not set +# BR2_PACKAGE_HOST_MTD is not set +# BR2_PACKAGE_HOST_MTOOLS is not set +# BR2_PACKAGE_HOST_MXSLDR is not set +# BR2_PACKAGE_HOST_OMAP_U_BOOT_UTILS is not set +# BR2_PACKAGE_HOST_OPENOCD is not set +# BR2_PACKAGE_HOST_OPKG_UTILS is not set +# BR2_PACKAGE_HOST_PARTED is not set +BR2_PACKAGE_HOST_PATCHELF=y +# BR2_PACKAGE_HOST_PRU_SOFTWARE_SUPPORT is not set +# BR2_PACKAGE_HOST_PWGEN is not set +# BR2_PACKAGE_HOST_PYTHON_LXML is not set +# BR2_PACKAGE_HOST_QEMU is not set +# BR2_PACKAGE_HOST_RASPBERRYPI_USBBOOT is not set +# BR2_PACKAGE_HOST_RAUC is not set +# BR2_PACKAGE_HOST_SAM_BA is not set +# BR2_PACKAGE_HOST_SQUASHFS is not set +# BR2_PACKAGE_HOST_SUNXI_TOOLS is not set +# BR2_PACKAGE_HOST_TEGRARCM is not set +BR2_PACKAGE_HOST_TI_CGT_PRU_ARCH_SUPPORTS=y +# BR2_PACKAGE_HOST_TI_CGT_PRU is not set +# BR2_PACKAGE_HOST_UBOOT_TOOLS is not set +# BR2_PACKAGE_HOST_UTIL_LINUX 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 + +# +# Legacy config options +# + +# +# Legacy options removed in 2017.08 +# +# 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_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_WEBRTC 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_QT5WEBKIT_EXAMPLES 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 + +# +# Legacy options removed in 2015.05 +# +# BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_512_16K is not set +# BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_2K_128K is not set +# BR2_PACKAGE_MONO_20 is not set +# BR2_PACKAGE_MONO_40 is not set +# BR2_PACKAGE_MONO_45 is not set +# BR2_CIVETWEB_WITH_LUA is not set +# BR2_PACKAGE_TIFF_TIFF2PDF is not set +# BR2_PACKAGE_TIFF_TIFFCP is not set +# BR2_LINUX_KERNEL_EXT_RTAI_PATCH is not set +# BR2_TARGET_GENERIC_PASSWD_DES is not set +# BR2_PACKAGE_GTK2_THEME_HICOLOR is not set +# BR2_PACKAGE_VALGRIND_PTRCHECK is not set + +# +# Legacy options removed in 2015.02 +# +# BR2_PACKAGE_LIBGC is not set +# BR2_PACKAGE_WDCTL is not set +# BR2_PACKAGE_UTIL_LINUX_ARCH is not set +# BR2_PACKAGE_UTIL_LINUX_DDATE is not set +# BR2_PACKAGE_RPM_BZIP2_PAYLOADS is not set +# BR2_PACKAGE_RPM_XZ_PAYLOADS is not set +# BR2_PACKAGE_M4 is not set +# BR2_PACKAGE_FLEX_BINARY is not set +# BR2_PACKAGE_BISON is not set +# BR2_PACKAGE_GOB2 is not set +# BR2_PACKAGE_DISTCC is not set +# BR2_PACKAGE_HASERL_VERSION_0_8_X is not set +# BR2_PACKAGE_STRONGSWAN_TOOLS is not set +# BR2_PACKAGE_XBMC_ADDON_XVDR is not set +# BR2_PACKAGE_XBMC_PVR_ADDONS is not set +# BR2_PACKAGE_XBMC is not set +# BR2_PACKAGE_XBMC_ALSA_LIB is not set +# BR2_PACKAGE_XBMC_AVAHI is not set +# BR2_PACKAGE_XBMC_DBUS is not set +# BR2_PACKAGE_XBMC_LIBBLURAY is not set +# BR2_PACKAGE_XBMC_GOOM is not set +# BR2_PACKAGE_XBMC_RSXS is not set +# BR2_PACKAGE_XBMC_LIBCEC is not set +# BR2_PACKAGE_XBMC_LIBMICROHTTPD is not set +# BR2_PACKAGE_XBMC_LIBNFS is not set +# BR2_PACKAGE_XBMC_RTMPDUMP is not set +# BR2_PACKAGE_XBMC_LIBSHAIRPLAY is not set +# BR2_PACKAGE_XBMC_LIBSMBCLIENT is not set +# BR2_PACKAGE_XBMC_LIBTHEORA is not set +# BR2_PACKAGE_XBMC_LIBUSB is not set +# BR2_PACKAGE_XBMC_LIBVA is not set +# BR2_PACKAGE_XBMC_WAVPACK is not set +# BR2_PREFER_STATIC_LIB is not set + +# +# Legacy options removed in 2014.11 +# +# BR2_x86_generic is not set +# BR2_GCC_VERSION_4_4_X is not set +# BR2_sparc_sparchfleon is not set +# BR2_sparc_sparchfleonv8 is not set +# BR2_sparc_sparcsfleon is not set +# BR2_sparc_sparcsfleonv8 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_XC5000 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_CXGB4 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_7 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_8 is not set + +# +# Legacy options removed in 2014.08 +# +# BR2_PACKAGE_LIBELF is not set +# BR2_KERNEL_HEADERS_3_8 is not set +# BR2_PACKAGE_GETTEXT_TOOLS is not set +# BR2_PACKAGE_PROCPS is not set +# BR2_BINUTILS_VERSION_2_20_1 is not set +# BR2_BINUTILS_VERSION_2_21 is not set +# BR2_BINUTILS_VERSION_2_23_1 is not set +# BR2_UCLIBC_VERSION_0_9_32 is not set +# BR2_GCC_VERSION_4_3_X is not set +# BR2_GCC_VERSION_4_6_X is not set +# BR2_GDB_VERSION_7_4 is not set +# BR2_GDB_VERSION_7_5 is not set +# BR2_BUSYBOX_VERSION_1_19_X is not set +# BR2_BUSYBOX_VERSION_1_20_X is not set +# BR2_BUSYBOX_VERSION_1_21_X is not set +# BR2_PACKAGE_LIBV4L_DECODE_TM6000 is not set +# BR2_PACKAGE_LIBV4L_IR_KEYTABLE is not set +# BR2_PACKAGE_LIBV4L_V4L2_COMPLIANCE is not set +# BR2_PACKAGE_LIBV4L_V4L2_CTL is not set +# BR2_PACKAGE_LIBV4L_V4L2_DBG is not set + +# +# Legacy options removed in 2014.05 +# +# BR2_PACKAGE_EVTEST_CAPTURE is not set +# BR2_KERNEL_HEADERS_3_6 is not set +# BR2_KERNEL_HEADERS_3_7 is not set +# BR2_PACKAGE_VALA is not set +BR2_PACKAGE_TZDATA_ZONELIST="" +# BR2_PACKAGE_LUA_INTERPRETER_EDITING_NONE is not set +# BR2_PACKAGE_LUA_INTERPRETER_READLINE is not set +# BR2_PACKAGE_LUA_INTERPRETER_LINENOISE is not set +# BR2_PACKAGE_DVB_APPS_UTILS is not set +# BR2_KERNEL_HEADERS_SNAP is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV is not set +# BR2_PACKAGE_UDEV is not set +# BR2_PACKAGE_UDEV_RULES_GEN is not set +# BR2_PACKAGE_UDEV_ALL_EXTRAS is not set + +# +# Legacy options removed in 2014.02 +# +# BR2_sh2 is not set +# BR2_sh3 is not set +# BR2_sh3eb is not set +# BR2_KERNEL_HEADERS_3_1 is not set +# BR2_KERNEL_HEADERS_3_3 is not set +# BR2_KERNEL_HEADERS_3_5 is not set +# BR2_GDB_VERSION_7_2 is not set +# BR2_GDB_VERSION_7_3 is not set +# BR2_PACKAGE_CCACHE is not set +# BR2_HAVE_DOCUMENTATION is not set +# BR2_PACKAGE_AUTOMAKE is not set +# BR2_PACKAGE_AUTOCONF is not set +# BR2_PACKAGE_XSTROKE is not set +# BR2_PACKAGE_LZMA is not set +# BR2_PACKAGE_TTCP is not set +# BR2_PACKAGE_LIBNFC_LLCP is not set +# BR2_PACKAGE_MYSQL_CLIENT is not set +# BR2_PACKAGE_SQUASHFS3 is not set +# BR2_TARGET_ROOTFS_SQUASHFS3 is not set +# BR2_PACKAGE_NETKITBASE is not set +# BR2_PACKAGE_NETKITTELNET is not set +# BR2_PACKAGE_LUASQL is not set +# BR2_PACKAGE_LUACJSON is not set + +# +# Legacy options removed in 2013.11 +# +# BR2_PACKAGE_LVM2_DMSETUP_ONLY is not set +# BR2_PACKAGE_QT_JAVASCRIPTCORE is not set +# BR2_PACKAGE_MODULE_INIT_TOOLS is not set +BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL="" +BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION="" +BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL="" +BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION="" + +# +# Legacy options removed in 2013.08 +# +# BR2_ARM_OABI is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSCK is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSLABEL is not set +# BR2_PACKAGE_DOSFSTOOLS_MKDOSFS is not set +# BR2_ELF2FLT is not set +# BR2_VFP_FLOAT is not set +# BR2_PACKAGE_GCC_TARGET is not set +# BR2_HAVE_DEVFILES is not set + +# +# Legacy options removed in 2013.05 +# +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8192 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8712 is not set + +# +# Legacy options removed in 2013.02 +# +# BR2_sa110 is not set +# BR2_sa1100 is not set +# BR2_PACKAGE_GDISK is not set +# BR2_PACKAGE_GDISK_GDISK is not set +# BR2_PACKAGE_GDISK_SGDISK is not set +# BR2_PACKAGE_GDB_HOST is not set +# BR2_PACKAGE_DIRECTB_DITHER_RGB16 is not set +# BR2_PACKAGE_DIRECTB_TESTS is not set + +# +# Legacy options removed in 2012.11 +# +# BR2_PACKAGE_CUSTOMIZE is not set +# BR2_PACKAGE_XSERVER_xorg is not set +# BR2_PACKAGE_XSERVER_tinyx is not set +# BR2_PACKAGE_PTHREAD_STUBS is not set + +# +# Legacy options removed in 2012.08 +# +# BR2_PACKAGE_GETTEXT_STATIC is not set +# BR2_PACKAGE_LIBINTL is not set +# BR2_PACKAGE_INPUT_TOOLS_EVTEST is not set +# BR2_BFIN_FDPIC is not set +# BR2_BFIN_FLAT is not set diff --git a/fpga/sw/config/busybox.config.2018.3 b/fpga/sw/config/busybox.config.2018.3 new file mode 100644 index 00000000..20d80983 --- /dev/null +++ b/fpga/sw/config/busybox.config.2018.3 @@ -0,0 +1,1054 @@ +# +# Automatically generated make config: don't edit +# Busybox version: 1.23.2 +# Thu Mar 23 13:42:12 2017 +# +CONFIG_HAVE_DOT_CONFIG=y + +# +# Busybox Settings +# + +# +# General Configuration +# +CONFIG_DESKTOP=y +# CONFIG_EXTRA_COMPAT is not set +CONFIG_INCLUDE_SUSv2=y +# CONFIG_USE_PORTABLE_CODE is not set +CONFIG_PLATFORM_LINUX=y +CONFIG_FEATURE_BUFFERS_USE_MALLOC=y +# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set +# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set +CONFIG_SHOW_USAGE=y +CONFIG_FEATURE_VERBOSE_USAGE=y +# CONFIG_FEATURE_COMPRESS_USAGE is not set +CONFIG_FEATURE_INSTALLER=y +# CONFIG_INSTALL_NO_USR is not set +# CONFIG_LOCALE_SUPPORT is not set +# CONFIG_UNICODE_SUPPORT is not set +# CONFIG_UNICODE_USING_LOCALE is not set +# CONFIG_FEATURE_CHECK_UNICODE_IN_ENV is not set +CONFIG_SUBST_WCHAR=0 +CONFIG_LAST_SUPPORTED_WCHAR=0 +# CONFIG_UNICODE_COMBINING_WCHARS is not set +# CONFIG_UNICODE_WIDE_WCHARS is not set +# CONFIG_UNICODE_BIDI_SUPPORT is not set +# CONFIG_UNICODE_NEUTRAL_TABLE is not set +# CONFIG_UNICODE_PRESERVE_BROKEN is not set +# CONFIG_PAM is not set +CONFIG_FEATURE_USE_SENDFILE=y +CONFIG_LONG_OPTS=y +CONFIG_FEATURE_DEVPTS=y +CONFIG_FEATURE_CLEAN_UP=y +CONFIG_FEATURE_UTMP=y +CONFIG_FEATURE_WTMP=y +# CONFIG_FEATURE_PIDFILE is not set +CONFIG_PID_FILE_PATH="" +CONFIG_FEATURE_SUID=y +# CONFIG_FEATURE_SUID_CONFIG is not set +# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set +# CONFIG_SELINUX is not set +# CONFIG_FEATURE_PREFER_APPLETS is not set +CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe" +CONFIG_FEATURE_SYSLOG=y +# CONFIG_FEATURE_HAVE_RPC is not set + +# +# Build Options +# +# CONFIG_STATIC is not set +# CONFIG_PIE is not set +# CONFIG_NOMMU is not set +# CONFIG_BUILD_LIBBUSYBOX is not set +# CONFIG_FEATURE_INDIVIDUAL is not set +# CONFIG_FEATURE_SHARED_BUSYBOX is not set +CONFIG_LFS=y +CONFIG_CROSS_COMPILER_PREFIX="" +CONFIG_SYSROOT="" +CONFIG_EXTRA_CFLAGS="" +CONFIG_EXTRA_LDFLAGS="" +CONFIG_EXTRA_LDLIBS="" + +# +# Debugging Options +# +# CONFIG_DEBUG is not set +# CONFIG_DEBUG_PESSIMIZE is not set +# CONFIG_UNIT_TEST is not set +# CONFIG_WERROR is not set +CONFIG_NO_DEBUG_LIB=y +# CONFIG_DMALLOC is not set +# CONFIG_EFENCE is not set + +# +# Installation Options ("make install" behavior) +# +CONFIG_INSTALL_APPLET_SYMLINKS=y +# CONFIG_INSTALL_APPLET_HARDLINKS is not set +# CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS is not set +# CONFIG_INSTALL_APPLET_DONT is not set +# CONFIG_INSTALL_SH_APPLET_SYMLINK is not set +# CONFIG_INSTALL_SH_APPLET_HARDLINK is not set +# CONFIG_INSTALL_SH_APPLET_SCRIPT_WRAPPER is not set +CONFIG_PREFIX="./_install" + +# +# Busybox Library Tuning +# +# CONFIG_FEATURE_SYSTEMD is not set +CONFIG_FEATURE_RTMINMAX=y +CONFIG_PASSWORD_MINLEN=6 +CONFIG_MD5_SMALL=1 +CONFIG_SHA3_SMALL=1 +# CONFIG_FEATURE_FAST_TOP is not set +# CONFIG_FEATURE_ETC_NETWORKS is not set +CONFIG_FEATURE_USE_TERMIOS=y +CONFIG_FEATURE_EDITING=y +CONFIG_FEATURE_EDITING_MAX_LEN=1024 +CONFIG_FEATURE_EDITING_VI=y +CONFIG_FEATURE_EDITING_HISTORY=999 +CONFIG_FEATURE_EDITING_SAVEHISTORY=y +# CONFIG_FEATURE_EDITING_SAVE_ON_EXIT is not set +CONFIG_FEATURE_REVERSE_SEARCH=y +CONFIG_FEATURE_TAB_COMPLETION=y +# CONFIG_FEATURE_USERNAME_COMPLETION is not set +CONFIG_FEATURE_EDITING_FANCY_PROMPT=y +# CONFIG_FEATURE_EDITING_ASK_TERMINAL is not set +CONFIG_FEATURE_NON_POSIX_CP=y +# CONFIG_FEATURE_VERBOSE_CP_MESSAGE is not set +CONFIG_FEATURE_COPYBUF_KB=4 +CONFIG_FEATURE_SKIP_ROOTFS=y +CONFIG_MONOTONIC_SYSCALL=y +CONFIG_IOCTL_HEX2STR_ERROR=y +CONFIG_FEATURE_HWIB=y + +# +# Applets +# + +# +# Archival Utilities +# +# CONFIG_FEATURE_SEAMLESS_XZ is not set +# CONFIG_FEATURE_SEAMLESS_LZMA is not set +# CONFIG_FEATURE_SEAMLESS_BZ2 is not set +# CONFIG_FEATURE_SEAMLESS_GZ is not set +# CONFIG_FEATURE_SEAMLESS_Z is not set +CONFIG_AR=y +# CONFIG_FEATURE_AR_LONG_FILENAMES is not set +CONFIG_FEATURE_AR_CREATE=y +# CONFIG_UNCOMPRESS is not set +CONFIG_GUNZIP=y +CONFIG_BUNZIP2=y +CONFIG_UNLZMA=y +# CONFIG_FEATURE_LZMA_FAST is not set +CONFIG_LZMA=y +CONFIG_UNXZ=y +CONFIG_XZ=y +# CONFIG_BZIP2 is not set +CONFIG_CPIO=y +# CONFIG_FEATURE_CPIO_O is not set +# CONFIG_FEATURE_CPIO_P is not set +# CONFIG_DPKG is not set +# CONFIG_DPKG_DEB is not set +# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set +CONFIG_GZIP=y +# CONFIG_FEATURE_GZIP_LONG_OPTIONS is not set +CONFIG_GZIP_FAST=0 +# CONFIG_LZOP is not set +# CONFIG_LZOP_COMPR_HIGH is not set +# CONFIG_RPM2CPIO is not set +# CONFIG_RPM is not set +CONFIG_TAR=y +CONFIG_FEATURE_TAR_CREATE=y +# CONFIG_FEATURE_TAR_AUTODETECT is not set +CONFIG_FEATURE_TAR_FROM=y +# CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY is not set +# CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY is not set +CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y +CONFIG_FEATURE_TAR_LONG_OPTIONS=y +CONFIG_FEATURE_TAR_TO_COMMAND=y +# CONFIG_FEATURE_TAR_UNAME_GNAME is not set +# CONFIG_FEATURE_TAR_NOPRESERVE_TIME is not set +# CONFIG_FEATURE_TAR_SELINUX is not set +CONFIG_UNZIP=y + +# +# Coreutils +# +CONFIG_BASENAME=y +CONFIG_CAT=y +CONFIG_DATE=y +CONFIG_FEATURE_DATE_ISOFMT=y +# CONFIG_FEATURE_DATE_NANO is not set +CONFIG_FEATURE_DATE_COMPAT=y +CONFIG_HOSTID=y +CONFIG_ID=y +# CONFIG_GROUPS is not set +# CONFIG_SHUF is not set +CONFIG_TEST=y +CONFIG_FEATURE_TEST_64=y +CONFIG_TOUCH=y +# CONFIG_FEATURE_TOUCH_NODEREF is not set +CONFIG_FEATURE_TOUCH_SUSV3=y +CONFIG_TR=y +CONFIG_FEATURE_TR_CLASSES=y +CONFIG_FEATURE_TR_EQUIV=y +CONFIG_UNLINK=y +# CONFIG_BASE64 is not set +CONFIG_WHO=y +# CONFIG_USERS is not set +# CONFIG_CAL is not set +CONFIG_CATV=y +CONFIG_CHGRP=y +CONFIG_CHMOD=y +CONFIG_CHOWN=y +# CONFIG_FEATURE_CHOWN_LONG_OPTIONS is not set +CONFIG_CHROOT=y +CONFIG_CKSUM=y +# CONFIG_COMM is not set +CONFIG_CP=y +# CONFIG_FEATURE_CP_LONG_OPTIONS is not set +CONFIG_CUT=y +CONFIG_DD=y +CONFIG_FEATURE_DD_SIGNAL_HANDLING=y +# CONFIG_FEATURE_DD_THIRD_STATUS_LINE is not set +CONFIG_FEATURE_DD_IBS_OBS=y +CONFIG_DF=y +# CONFIG_FEATURE_DF_FANCY is not set +CONFIG_DIRNAME=y +CONFIG_DOS2UNIX=y +CONFIG_UNIX2DOS=y +CONFIG_DU=y +CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y +CONFIG_ECHO=y +CONFIG_FEATURE_FANCY_ECHO=y +CONFIG_ENV=y +# CONFIG_FEATURE_ENV_LONG_OPTIONS is not set +# CONFIG_EXPAND is not set +# CONFIG_FEATURE_EXPAND_LONG_OPTIONS is not set +CONFIG_EXPR=y +CONFIG_EXPR_MATH_SUPPORT_64=y +CONFIG_FALSE=y +CONFIG_FOLD=y +# CONFIG_FSYNC is not set +CONFIG_HEAD=y +CONFIG_FEATURE_FANCY_HEAD=y +CONFIG_INSTALL=y +CONFIG_FEATURE_INSTALL_LONG_OPTIONS=y +CONFIG_LN=y +CONFIG_LOGNAME=y +CONFIG_LS=y +CONFIG_FEATURE_LS_FILETYPES=y +CONFIG_FEATURE_LS_FOLLOWLINKS=y +CONFIG_FEATURE_LS_RECURSIVE=y +CONFIG_FEATURE_LS_SORTFILES=y +CONFIG_FEATURE_LS_TIMESTAMPS=y +CONFIG_FEATURE_LS_USERNAME=y +CONFIG_FEATURE_LS_COLOR=y +CONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y +CONFIG_MD5SUM=y +CONFIG_MKDIR=y +CONFIG_FEATURE_MKDIR_LONG_OPTIONS=y +CONFIG_MKFIFO=y +CONFIG_MKNOD=y +CONFIG_MV=y +CONFIG_FEATURE_MV_LONG_OPTIONS=y +CONFIG_NICE=y +CONFIG_NOHUP=y +CONFIG_OD=y +CONFIG_PRINTENV=y +CONFIG_PRINTF=y +CONFIG_PWD=y +CONFIG_READLINK=y +CONFIG_FEATURE_READLINK_FOLLOW=y +CONFIG_REALPATH=y +CONFIG_RM=y +CONFIG_RMDIR=y +# CONFIG_FEATURE_RMDIR_LONG_OPTIONS is not set +CONFIG_SEQ=y +CONFIG_SHA1SUM=y +CONFIG_SHA256SUM=y +CONFIG_SHA512SUM=y +CONFIG_SHA3SUM=y +CONFIG_SLEEP=y +# CONFIG_FEATURE_FANCY_SLEEP is not set +# CONFIG_FEATURE_FLOAT_SLEEP is not set +CONFIG_SORT=y +CONFIG_FEATURE_SORT_BIG=y +# CONFIG_SPLIT is not set +# CONFIG_FEATURE_SPLIT_FANCY is not set +# CONFIG_STAT is not set +# CONFIG_FEATURE_STAT_FORMAT is not set +CONFIG_STTY=y +# CONFIG_SUM is not set +CONFIG_SYNC=y +# CONFIG_TAC is not set +CONFIG_TAIL=y +CONFIG_FEATURE_FANCY_TAIL=y +CONFIG_TEE=y +CONFIG_FEATURE_TEE_USE_BLOCK_IO=y +CONFIG_TRUE=y +CONFIG_TTY=y +CONFIG_UNAME=y +# CONFIG_UNEXPAND is not set +# CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS is not set +CONFIG_UNIQ=y +CONFIG_USLEEP=y +CONFIG_UUDECODE=y +CONFIG_UUENCODE=y +CONFIG_WC=y +# CONFIG_FEATURE_WC_LARGE is not set +CONFIG_WHOAMI=y +CONFIG_YES=y + +# +# Common options +# +CONFIG_FEATURE_VERBOSE=y + +# +# Common options for cp and mv +# +CONFIG_FEATURE_PRESERVE_HARDLINKS=y + +# +# Common options for ls, more and telnet +# +CONFIG_FEATURE_AUTOWIDTH=y + +# +# Common options for df, du, ls +# +CONFIG_FEATURE_HUMAN_READABLE=y + +# +# Common options for md5sum, sha1sum, sha256sum, sha512sum, sha3sum +# +CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y + +# +# Console Utilities +# +CONFIG_CHVT=y +# CONFIG_FGCONSOLE is not set +CONFIG_CLEAR=y +CONFIG_DEALLOCVT=y +CONFIG_DUMPKMAP=y +# CONFIG_KBD_MODE is not set +CONFIG_LOADFONT=y +CONFIG_LOADKMAP=y +CONFIG_OPENVT=y +CONFIG_RESET=y +CONFIG_RESIZE=y +CONFIG_FEATURE_RESIZE_PRINT=y +CONFIG_SETCONSOLE=y +# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set +# CONFIG_SETFONT is not set +# CONFIG_FEATURE_SETFONT_TEXTUAL_MAP is not set +CONFIG_DEFAULT_SETFONT_DIR="" +CONFIG_SETKEYCODES=y +CONFIG_SETLOGCONS=y +# CONFIG_SHOWKEY is not set + +# +# Common options for loadfont and setfont +# +CONFIG_FEATURE_LOADFONT_PSF2=y +CONFIG_FEATURE_LOADFONT_RAW=y + +# +# Debian Utilities +# +CONFIG_MKTEMP=y +CONFIG_PIPE_PROGRESS=y +CONFIG_RUN_PARTS=y +CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS=y +# CONFIG_FEATURE_RUN_PARTS_FANCY is not set +CONFIG_START_STOP_DAEMON=y +CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y +CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y +CONFIG_WHICH=y + +# +# Editors +# +CONFIG_AWK=y +# CONFIG_FEATURE_AWK_LIBM is not set +CONFIG_FEATURE_AWK_GNU_EXTENSIONS=y +CONFIG_CMP=y +CONFIG_DIFF=y +# CONFIG_FEATURE_DIFF_LONG_OPTIONS is not set +CONFIG_FEATURE_DIFF_DIR=y +# CONFIG_ED is not set +CONFIG_PATCH=y +CONFIG_SED=y +CONFIG_VI=y +CONFIG_FEATURE_VI_MAX_LEN=4096 +CONFIG_FEATURE_VI_8BIT=y +CONFIG_FEATURE_VI_COLON=y +CONFIG_FEATURE_VI_YANKMARK=y +CONFIG_FEATURE_VI_SEARCH=y +# CONFIG_FEATURE_VI_REGEX_SEARCH is not set +CONFIG_FEATURE_VI_USE_SIGNALS=y +CONFIG_FEATURE_VI_DOT_CMD=y +CONFIG_FEATURE_VI_READONLY=y +CONFIG_FEATURE_VI_SETOPTS=y +CONFIG_FEATURE_VI_SET=y +CONFIG_FEATURE_VI_WIN_RESIZE=y +CONFIG_FEATURE_VI_ASK_TERMINAL=y +CONFIG_FEATURE_VI_UNDO=y +CONFIG_FEATURE_VI_UNDO_QUEUE=y +CONFIG_FEATURE_VI_UNDO_QUEUE_MAX=256 +CONFIG_FEATURE_ALLOW_EXEC=y + +# +# Finding Utilities +# +CONFIG_FIND=y +CONFIG_FEATURE_FIND_PRINT0=y +CONFIG_FEATURE_FIND_MTIME=y +CONFIG_FEATURE_FIND_MMIN=y +CONFIG_FEATURE_FIND_PERM=y +CONFIG_FEATURE_FIND_TYPE=y +CONFIG_FEATURE_FIND_XDEV=y +CONFIG_FEATURE_FIND_MAXDEPTH=y +CONFIG_FEATURE_FIND_NEWER=y +# CONFIG_FEATURE_FIND_INUM is not set +CONFIG_FEATURE_FIND_EXEC=y +CONFIG_FEATURE_FIND_EXEC_PLUS=y +CONFIG_FEATURE_FIND_USER=y +CONFIG_FEATURE_FIND_GROUP=y +CONFIG_FEATURE_FIND_NOT=y +CONFIG_FEATURE_FIND_DEPTH=y +CONFIG_FEATURE_FIND_PAREN=y +CONFIG_FEATURE_FIND_SIZE=y +CONFIG_FEATURE_FIND_PRUNE=y +# CONFIG_FEATURE_FIND_DELETE is not set +CONFIG_FEATURE_FIND_PATH=y +CONFIG_FEATURE_FIND_REGEX=y +# CONFIG_FEATURE_FIND_CONTEXT is not set +# CONFIG_FEATURE_FIND_LINKS is not set +CONFIG_GREP=y +CONFIG_FEATURE_GREP_EGREP_ALIAS=y +CONFIG_FEATURE_GREP_FGREP_ALIAS=y +CONFIG_FEATURE_GREP_CONTEXT=y +CONFIG_XARGS=y +# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set +CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y +CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y +CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y +CONFIG_FEATURE_XARGS_SUPPORT_REPL_STR=y + +# +# Init Utilities +# +# CONFIG_BOOTCHARTD is not set +# CONFIG_FEATURE_BOOTCHARTD_BLOATED_HEADER is not set +# CONFIG_FEATURE_BOOTCHARTD_CONFIG_FILE is not set +CONFIG_HALT=y +# CONFIG_FEATURE_CALL_TELINIT is not set +CONFIG_TELINIT_PATH="" +CONFIG_INIT=y +CONFIG_FEATURE_USE_INITTAB=y +CONFIG_FEATURE_KILL_REMOVED=y +CONFIG_FEATURE_KILL_DELAY=0 +CONFIG_FEATURE_INIT_SCTTY=y +CONFIG_FEATURE_INIT_SYSLOG=y +CONFIG_FEATURE_EXTRA_QUIET=y +# CONFIG_FEATURE_INIT_COREDUMPS is not set +CONFIG_FEATURE_INITRD=y +CONFIG_INIT_TERMINAL_TYPE="linux" +CONFIG_MESG=y +CONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP=y + +# +# Login/Password Management Utilities +# +# CONFIG_ADD_SHELL is not set +# CONFIG_REMOVE_SHELL is not set +CONFIG_FEATURE_SHADOWPASSWDS=y +# CONFIG_USE_BB_PWD_GRP is not set +# CONFIG_USE_BB_SHADOW is not set +CONFIG_USE_BB_CRYPT=y +# CONFIG_USE_BB_CRYPT_SHA is not set +CONFIG_ADDUSER=y +# CONFIG_FEATURE_ADDUSER_LONG_OPTIONS is not set +# CONFIG_FEATURE_CHECK_NAMES is not set +CONFIG_LAST_ID=60000 +CONFIG_FIRST_SYSTEM_ID=100 +CONFIG_LAST_SYSTEM_ID=999 +CONFIG_ADDGROUP=y +# CONFIG_FEATURE_ADDGROUP_LONG_OPTIONS is not set +# CONFIG_FEATURE_ADDUSER_TO_GROUP is not set +CONFIG_DELUSER=y +CONFIG_DELGROUP=y +# CONFIG_FEATURE_DEL_USER_FROM_GROUP is not set +CONFIG_GETTY=y +CONFIG_LOGIN=y +# CONFIG_LOGIN_SESSION_AS_CHILD is not set +# CONFIG_LOGIN_SCRIPTS is not set +CONFIG_FEATURE_NOLOGIN=y +CONFIG_FEATURE_SECURETTY=y +CONFIG_PASSWD=y +CONFIG_FEATURE_PASSWD_WEAK_CHECK=y +# CONFIG_CRYPTPW is not set +# CONFIG_CHPASSWD is not set +CONFIG_FEATURE_DEFAULT_PASSWD_ALGO="des" +CONFIG_SU=y +CONFIG_FEATURE_SU_SYSLOG=y +CONFIG_FEATURE_SU_CHECKS_SHELLS=y +CONFIG_SULOGIN=y +CONFIG_VLOCK=y + +# +# Linux Ext2 FS Progs +# +CONFIG_CHATTR=y +CONFIG_FSCK=y +CONFIG_LSATTR=y +# CONFIG_TUNE2FS is not set + +# +# Linux Module Utilities +# +# CONFIG_MODINFO is not set +# CONFIG_MODPROBE_SMALL is not set +# CONFIG_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE is not set +# CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED is not set +CONFIG_INSMOD=y +CONFIG_RMMOD=y +CONFIG_LSMOD=y +CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT=y +CONFIG_MODPROBE=y +# CONFIG_FEATURE_MODPROBE_BLACKLIST is not set +# CONFIG_DEPMOD is not set + +# +# Options common to multiple modutils +# +# CONFIG_FEATURE_2_4_MODULES is not set +# CONFIG_FEATURE_INSMOD_TRY_MMAP is not set +# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set +# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set +# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set +# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set +# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set +CONFIG_FEATURE_CHECK_TAINTED_MODULE=y +CONFIG_FEATURE_MODUTILS_ALIAS=y +CONFIG_FEATURE_MODUTILS_SYMBOLS=y +CONFIG_DEFAULT_MODULES_DIR="/lib/modules" +CONFIG_DEFAULT_DEPMOD_FILE="modules.dep" + +# +# Linux System Utilities +# +# CONFIG_BLOCKDEV is not set +# CONFIG_FATATTR is not set +CONFIG_FSTRIM=y +CONFIG_MDEV=y +CONFIG_FEATURE_MDEV_CONF=y +CONFIG_FEATURE_MDEV_RENAME=y +# CONFIG_FEATURE_MDEV_RENAME_REGEXP is not set +CONFIG_FEATURE_MDEV_EXEC=y +# CONFIG_FEATURE_MDEV_LOAD_FIRMWARE is not set +# CONFIG_REV is not set +# CONFIG_ACPID is not set +# CONFIG_FEATURE_ACPID_COMPAT is not set +CONFIG_BLKID=y +# CONFIG_FEATURE_BLKID_TYPE is not set +CONFIG_DMESG=y +CONFIG_FEATURE_DMESG_PRETTY=y +CONFIG_FBSET=y +CONFIG_FEATURE_FBSET_FANCY=y +CONFIG_FEATURE_FBSET_READMODE=y +CONFIG_FDFLUSH=y +CONFIG_FDFORMAT=y +CONFIG_FDISK=y +# CONFIG_FDISK_SUPPORT_LARGE_DISKS is not set +CONFIG_FEATURE_FDISK_WRITABLE=y +# CONFIG_FEATURE_AIX_LABEL is not set +# CONFIG_FEATURE_SGI_LABEL is not set +# CONFIG_FEATURE_SUN_LABEL is not set +# CONFIG_FEATURE_OSF_LABEL is not set +CONFIG_FEATURE_GPT_LABEL=y +CONFIG_FEATURE_FDISK_ADVANCED=y +# CONFIG_FINDFS is not set +CONFIG_FLOCK=y +CONFIG_FREERAMDISK=y +# CONFIG_FSCK_MINIX is not set +# CONFIG_MKFS_EXT2 is not set +# CONFIG_MKFS_MINIX is not set +# CONFIG_FEATURE_MINIX2 is not set +# CONFIG_MKFS_REISER is not set +# CONFIG_MKFS_VFAT is not set +CONFIG_GETOPT=y +CONFIG_FEATURE_GETOPT_LONG=y +CONFIG_HEXDUMP=y +# CONFIG_FEATURE_HEXDUMP_REVERSE is not set +# CONFIG_HD is not set +CONFIG_HWCLOCK=y +CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS=y +CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y +CONFIG_IPCRM=y +CONFIG_IPCS=y +CONFIG_LOSETUP=y +CONFIG_LSPCI=y +CONFIG_LSUSB=y +CONFIG_MKSWAP=y +# CONFIG_FEATURE_MKSWAP_UUID is not set +CONFIG_MORE=y +CONFIG_MOUNT=y +# CONFIG_FEATURE_MOUNT_FAKE is not set +# CONFIG_FEATURE_MOUNT_VERBOSE is not set +# CONFIG_FEATURE_MOUNT_HELPERS is not set +# CONFIG_FEATURE_MOUNT_LABEL is not set +# CONFIG_FEATURE_MOUNT_NFS is not set +CONFIG_FEATURE_MOUNT_CIFS=y +CONFIG_FEATURE_MOUNT_FLAGS=y +CONFIG_FEATURE_MOUNT_FSTAB=y +CONFIG_PIVOT_ROOT=y +CONFIG_RDATE=y +# CONFIG_RDEV is not set +CONFIG_READPROFILE=y +# CONFIG_RTCWAKE is not set +# CONFIG_SCRIPT is not set +# CONFIG_SCRIPTREPLAY is not set +CONFIG_SETARCH=y +CONFIG_SWAPONOFF=y +# CONFIG_FEATURE_SWAPON_DISCARD is not set +# CONFIG_FEATURE_SWAPON_PRI is not set +CONFIG_SWITCH_ROOT=y +CONFIG_UMOUNT=y +CONFIG_FEATURE_UMOUNT_ALL=y + +# +# Common options for mount/umount +# +CONFIG_FEATURE_MOUNT_LOOP=y +CONFIG_FEATURE_MOUNT_LOOP_CREATE=y +# CONFIG_FEATURE_MTAB_SUPPORT is not set +CONFIG_VOLUMEID=y + +# +# Filesystem/Volume identification +# +# CONFIG_FEATURE_VOLUMEID_BTRFS is not set +# CONFIG_FEATURE_VOLUMEID_CRAMFS is not set +CONFIG_FEATURE_VOLUMEID_EXFAT=y +CONFIG_FEATURE_VOLUMEID_EXT=y +CONFIG_FEATURE_VOLUMEID_F2FS=y +CONFIG_FEATURE_VOLUMEID_FAT=y +# CONFIG_FEATURE_VOLUMEID_HFS is not set +# CONFIG_FEATURE_VOLUMEID_ISO9660 is not set +# CONFIG_FEATURE_VOLUMEID_JFS is not set +# CONFIG_FEATURE_VOLUMEID_LINUXRAID is not set +# CONFIG_FEATURE_VOLUMEID_LINUXSWAP is not set +# CONFIG_FEATURE_VOLUMEID_LUKS is not set +# CONFIG_FEATURE_VOLUMEID_NILFS is not set +# CONFIG_FEATURE_VOLUMEID_NTFS is not set +# CONFIG_FEATURE_VOLUMEID_OCFS2 is not set +# CONFIG_FEATURE_VOLUMEID_REISERFS is not set +# CONFIG_FEATURE_VOLUMEID_ROMFS is not set +# CONFIG_FEATURE_VOLUMEID_SQUASHFS is not set +# CONFIG_FEATURE_VOLUMEID_SYSV is not set +# CONFIG_FEATURE_VOLUMEID_UDF is not set +# CONFIG_FEATURE_VOLUMEID_XFS is not set + +# +# Miscellaneous Utilities +# +# CONFIG_CONSPY is not set +CONFIG_CROND=y +# CONFIG_FEATURE_CROND_D is not set +# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set +CONFIG_FEATURE_CROND_DIR="/var/spool/cron" +CONFIG_LESS=y +CONFIG_FEATURE_LESS_MAXLINES=9999999 +CONFIG_FEATURE_LESS_BRACKETS=y +CONFIG_FEATURE_LESS_FLAGS=y +# CONFIG_FEATURE_LESS_MARKS is not set +CONFIG_FEATURE_LESS_REGEXP=y +# CONFIG_FEATURE_LESS_WINCH is not set +# CONFIG_FEATURE_LESS_ASK_TERMINAL is not set +# CONFIG_FEATURE_LESS_DASHCMD is not set +# CONFIG_FEATURE_LESS_LINENUMS is not set +# CONFIG_NANDWRITE is not set +# CONFIG_NANDDUMP is not set +# CONFIG_RFKILL is not set +CONFIG_SETSERIAL=y +# CONFIG_TASKSET is not set +# CONFIG_FEATURE_TASKSET_FANCY is not set +# CONFIG_UBIATTACH is not set +# CONFIG_UBIDETACH is not set +# CONFIG_UBIMKVOL is not set +# CONFIG_UBIRMVOL is not set +# CONFIG_UBIRSVOL is not set +# CONFIG_UBIUPDATEVOL is not set +# CONFIG_WALL is not set +# CONFIG_ADJTIMEX is not set +# CONFIG_BBCONFIG is not set +# CONFIG_FEATURE_COMPRESS_BBCONFIG is not set +# CONFIG_BEEP is not set +CONFIG_FEATURE_BEEP_FREQ=0 +CONFIG_FEATURE_BEEP_LENGTH_MS=0 +# CONFIG_CHAT is not set +# CONFIG_FEATURE_CHAT_NOFAIL is not set +# CONFIG_FEATURE_CHAT_TTY_HIFI is not set +# CONFIG_FEATURE_CHAT_IMPLICIT_CR is not set +# CONFIG_FEATURE_CHAT_SWALLOW_OPTS is not set +# CONFIG_FEATURE_CHAT_SEND_ESCAPES is not set +# CONFIG_FEATURE_CHAT_VAR_ABORT_LEN is not set +# CONFIG_FEATURE_CHAT_CLR_ABORT is not set +CONFIG_CHRT=y +CONFIG_CRONTAB=y +CONFIG_DC=y +# CONFIG_FEATURE_DC_LIBM is not set +# CONFIG_DEVFSD is not set +# CONFIG_DEVFSD_MODLOAD is not set +# CONFIG_DEVFSD_FG_NP is not set +# CONFIG_DEVFSD_VERBOSE is not set +# CONFIG_FEATURE_DEVFS is not set +CONFIG_DEVMEM=y +CONFIG_EJECT=y +# CONFIG_FEATURE_EJECT_SCSI is not set +# CONFIG_FBSPLASH is not set +# CONFIG_FLASHCP is not set +# CONFIG_FLASH_LOCK is not set +# CONFIG_FLASH_UNLOCK is not set +# CONFIG_FLASH_ERASEALL is not set +# CONFIG_IONICE is not set +# CONFIG_INOTIFYD is not set +CONFIG_LAST=y +CONFIG_FEATURE_LAST_SMALL=y +# CONFIG_FEATURE_LAST_FANCY is not set +CONFIG_HDPARM=y +CONFIG_FEATURE_HDPARM_GET_IDENTITY=y +# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set +# CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set +# CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set +# CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set +# CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set +CONFIG_MAKEDEVS=y +# CONFIG_FEATURE_MAKEDEVS_LEAF is not set +CONFIG_FEATURE_MAKEDEVS_TABLE=y +# CONFIG_MAN is not set +CONFIG_MICROCOM=y +CONFIG_MOUNTPOINT=y +CONFIG_MT=y +# CONFIG_RAIDAUTORUN is not set +# CONFIG_READAHEAD is not set +CONFIG_RUNLEVEL=y +CONFIG_RX=y +CONFIG_SETSID=y +CONFIG_STRINGS=y +CONFIG_TIME=y +# CONFIG_TIMEOUT is not set +# CONFIG_TTYSIZE is not set +# CONFIG_VOLNAME is not set +CONFIG_WATCHDOG=y + +# +# Networking Utilities +# +CONFIG_NAMEIF=y +# CONFIG_FEATURE_NAMEIF_EXTENDED is not set +# CONFIG_NBDCLIENT is not set +# CONFIG_NC is not set +# CONFIG_NC_SERVER is not set +# CONFIG_NC_EXTRA is not set +# CONFIG_NC_110_COMPAT is not set +CONFIG_PING=y +# CONFIG_PING6 is not set +CONFIG_FEATURE_FANCY_PING=y +# CONFIG_WHOIS is not set +CONFIG_FEATURE_IPV6=y +# CONFIG_FEATURE_UNIX_LOCAL is not set +# CONFIG_FEATURE_PREFER_IPV4_ADDRESS is not set +# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set +CONFIG_ARP=y +CONFIG_ARPING=y +# CONFIG_BRCTL is not set +# CONFIG_FEATURE_BRCTL_FANCY is not set +# CONFIG_FEATURE_BRCTL_SHOW is not set +CONFIG_DNSD=y +CONFIG_ETHER_WAKE=y +# CONFIG_FAKEIDENTD is not set +# CONFIG_FTPD is not set +# CONFIG_FEATURE_FTP_WRITE is not set +# CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST is not set +# CONFIG_FEATURE_FTP_AUTHENTICATION is not set +# CONFIG_FTPGET is not set +# CONFIG_FTPPUT is not set +# CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set +CONFIG_HOSTNAME=y +# CONFIG_HTTPD is not set +# CONFIG_FEATURE_HTTPD_RANGES is not set +# CONFIG_FEATURE_HTTPD_SETUID is not set +# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set +# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set +# CONFIG_FEATURE_HTTPD_CGI is not set +# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set +# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set +# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set +# CONFIG_FEATURE_HTTPD_ERROR_PAGES is not set +# CONFIG_FEATURE_HTTPD_PROXY is not set +# CONFIG_FEATURE_HTTPD_GZIP is not set +CONFIG_IFCONFIG=y +CONFIG_FEATURE_IFCONFIG_STATUS=y +CONFIG_FEATURE_IFCONFIG_SLIP=y +CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ=y +CONFIG_FEATURE_IFCONFIG_HW=y +# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set +# CONFIG_IFENSLAVE is not set +# CONFIG_IFPLUGD is not set +CONFIG_IFUPDOWN=y +CONFIG_IFUPDOWN_IFSTATE_PATH="/var/run/ifstate" +CONFIG_FEATURE_IFUPDOWN_IP=y +# CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN is not set +# CONFIG_FEATURE_IFUPDOWN_IFCONFIG_BUILTIN is not set +CONFIG_FEATURE_IFUPDOWN_IPV4=y +CONFIG_FEATURE_IFUPDOWN_IPV6=y +CONFIG_FEATURE_IFUPDOWN_MAPPING=y +# CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP is not set +CONFIG_INETD=y +CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO=y +CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD=y +CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME=y +CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME=y +CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN=y +# CONFIG_FEATURE_INETD_RPC is not set +CONFIG_IP=y +CONFIG_FEATURE_IP_ADDRESS=y +CONFIG_FEATURE_IP_LINK=y +CONFIG_FEATURE_IP_ROUTE=y +CONFIG_FEATURE_IP_TUNNEL=y +CONFIG_FEATURE_IP_RULE=y +CONFIG_FEATURE_IP_SHORT_FORMS=y +# CONFIG_FEATURE_IP_RARE_PROTOCOLS is not set +CONFIG_IPADDR=y +CONFIG_IPLINK=y +CONFIG_IPROUTE=y +CONFIG_IPTUNNEL=y +CONFIG_IPRULE=y +# CONFIG_IPCALC is not set +# CONFIG_FEATURE_IPCALC_FANCY is not set +# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set +CONFIG_NETSTAT=y +# CONFIG_FEATURE_NETSTAT_WIDE is not set +# CONFIG_FEATURE_NETSTAT_PRG is not set +CONFIG_NSLOOKUP=y +# CONFIG_NTPD is not set +# CONFIG_FEATURE_NTPD_SERVER is not set +# CONFIG_FEATURE_NTPD_CONF is not set +# CONFIG_PSCAN is not set +CONFIG_ROUTE=y +# CONFIG_SLATTACH is not set +# CONFIG_TCPSVD is not set +CONFIG_TELNET=y +CONFIG_FEATURE_TELNET_TTYPE=y +CONFIG_FEATURE_TELNET_AUTOLOGIN=y +# CONFIG_TELNETD is not set +# CONFIG_FEATURE_TELNETD_STANDALONE is not set +# CONFIG_FEATURE_TELNETD_INETD_WAIT is not set +CONFIG_TFTP=y +# CONFIG_TFTPD is not set + +# +# Common options for tftp/tftpd +# +CONFIG_FEATURE_TFTP_GET=y +CONFIG_FEATURE_TFTP_PUT=y +CONFIG_FEATURE_TFTP_BLOCKSIZE=y +# CONFIG_FEATURE_TFTP_PROGRESS_BAR is not set +# CONFIG_TFTP_DEBUG is not set +CONFIG_TRACEROUTE=y +# CONFIG_TRACEROUTE6 is not set +# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set +# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set +# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set +# CONFIG_TUNCTL is not set +# CONFIG_FEATURE_TUNCTL_UG is not set +# CONFIG_UDHCPC6 is not set +# CONFIG_UDHCPD is not set +# CONFIG_DHCPRELAY is not set +# CONFIG_DUMPLEASES is not set +# CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set +# CONFIG_FEATURE_UDHCPD_BASE_IP_ON_MAC is not set +CONFIG_DHCPD_LEASES_FILE="" +CONFIG_UDHCPC=y +CONFIG_FEATURE_UDHCPC_ARPING=y +CONFIG_FEATURE_UDHCPC_SANITIZEOPT=y +# CONFIG_FEATURE_UDHCP_PORT is not set +CONFIG_UDHCP_DEBUG=0 +# CONFIG_FEATURE_UDHCP_RFC3397 is not set +CONFIG_FEATURE_UDHCP_8021Q=y +CONFIG_UDHCPC_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script" +CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80 +CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS="-R -n" +# CONFIG_UDPSVD is not set +CONFIG_VCONFIG=y +CONFIG_WGET=y +CONFIG_FEATURE_WGET_STATUSBAR=y +CONFIG_FEATURE_WGET_AUTHENTICATION=y +CONFIG_FEATURE_WGET_LONG_OPTIONS=y +CONFIG_FEATURE_WGET_TIMEOUT=y +# CONFIG_ZCIP is not set + +# +# Print Utilities +# +# CONFIG_LPD is not set +# CONFIG_LPR is not set +# CONFIG_LPQ is not set + +# +# Mail Utilities +# +# CONFIG_MAKEMIME is not set +CONFIG_FEATURE_MIME_CHARSET="" +# CONFIG_POPMAILDIR is not set +# CONFIG_FEATURE_POPMAILDIR_DELIVERY is not set +# CONFIG_REFORMIME is not set +# CONFIG_FEATURE_REFORMIME_COMPAT is not set +# CONFIG_SENDMAIL is not set + +# +# Process Utilities +# +# CONFIG_IOSTAT is not set +CONFIG_LSOF=y +# CONFIG_MPSTAT is not set +# CONFIG_NMETER is not set +# CONFIG_PMAP is not set +# CONFIG_POWERTOP is not set +# CONFIG_PSTREE is not set +# CONFIG_PWDX is not set +# CONFIG_SMEMCAP is not set +CONFIG_TOP=y +CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y +CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y +# CONFIG_FEATURE_TOP_SMP_CPU is not set +# CONFIG_FEATURE_TOP_DECIMALS is not set +# CONFIG_FEATURE_TOP_SMP_PROCESS is not set +# CONFIG_FEATURE_TOPMEM is not set +CONFIG_UPTIME=y +# CONFIG_FEATURE_UPTIME_UTMP_SUPPORT is not set +CONFIG_FREE=y +CONFIG_FUSER=y +CONFIG_KILL=y +CONFIG_KILLALL=y +CONFIG_KILLALL5=y +# CONFIG_PGREP is not set +CONFIG_PIDOF=y +CONFIG_FEATURE_PIDOF_SINGLE=y +CONFIG_FEATURE_PIDOF_OMIT=y +# CONFIG_PKILL is not set +CONFIG_PS=y +# CONFIG_FEATURE_PS_WIDE is not set +# CONFIG_FEATURE_PS_LONG is not set +# CONFIG_FEATURE_PS_TIME is not set +# CONFIG_FEATURE_PS_ADDITIONAL_COLUMNS is not set +# CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS is not set +CONFIG_RENICE=y +CONFIG_BB_SYSCTL=y +# CONFIG_FEATURE_SHOW_THREADS is not set +CONFIG_WATCH=y + +# +# Runit Utilities +# +# CONFIG_RUNSV is not set +# CONFIG_RUNSVDIR is not set +# CONFIG_FEATURE_RUNSVDIR_LOG is not set +# CONFIG_SV is not set +CONFIG_SV_DEFAULT_SERVICE_DIR="" +# CONFIG_SVLOGD is not set +# CONFIG_CHPST is not set +# CONFIG_SETUIDGID is not set +# CONFIG_ENVUIDGID is not set +# CONFIG_ENVDIR is not set +# CONFIG_SOFTLIMIT is not set +# CONFIG_CHCON is not set +# CONFIG_FEATURE_CHCON_LONG_OPTIONS is not set +# CONFIG_GETENFORCE is not set +# CONFIG_GETSEBOOL is not set +# CONFIG_LOAD_POLICY is not set +# CONFIG_MATCHPATHCON is not set +# CONFIG_RESTORECON is not set +# CONFIG_RUNCON is not set +# CONFIG_FEATURE_RUNCON_LONG_OPTIONS is not set +# CONFIG_SELINUXENABLED is not set +# CONFIG_SETENFORCE is not set +# CONFIG_SETFILES is not set +# CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set +# CONFIG_SETSEBOOL is not set +# CONFIG_SESTATUS is not set + +# +# Shells +# +CONFIG_ASH=y +CONFIG_ASH_BASH_COMPAT=y +CONFIG_ASH_IDLE_TIMEOUT=y +CONFIG_ASH_JOB_CONTROL=y +CONFIG_ASH_ALIAS=y +CONFIG_ASH_GETOPTS=y +CONFIG_ASH_BUILTIN_ECHO=y +CONFIG_ASH_BUILTIN_PRINTF=y +CONFIG_ASH_BUILTIN_TEST=y +CONFIG_ASH_HELP=y +CONFIG_ASH_CMDCMD=y +# CONFIG_ASH_MAIL is not set +CONFIG_ASH_OPTIMIZE_FOR_SIZE=y +CONFIG_ASH_RANDOM_SUPPORT=y +CONFIG_ASH_EXPAND_PRMT=y +# CONFIG_CTTYHACK is not set +# CONFIG_HUSH is not set +# CONFIG_HUSH_BASH_COMPAT is not set +# CONFIG_HUSH_BRACE_EXPANSION is not set +# CONFIG_HUSH_HELP is not set +# CONFIG_HUSH_INTERACTIVE is not set +# CONFIG_HUSH_SAVEHISTORY is not set +# CONFIG_HUSH_JOB is not set +# CONFIG_HUSH_TICK is not set +# CONFIG_HUSH_IF is not set +# CONFIG_HUSH_LOOPS is not set +# CONFIG_HUSH_CASE is not set +# CONFIG_HUSH_FUNCTIONS is not set +# CONFIG_HUSH_LOCAL is not set +# CONFIG_HUSH_RANDOM_SUPPORT is not set +# CONFIG_HUSH_EXPORT_N is not set +# CONFIG_HUSH_MODE_X is not set +# CONFIG_MSH is not set +CONFIG_FEATURE_SH_IS_ASH=y +# CONFIG_FEATURE_SH_IS_HUSH is not set +# CONFIG_FEATURE_SH_IS_NONE is not set +# CONFIG_FEATURE_BASH_IS_ASH is not set +# CONFIG_FEATURE_BASH_IS_HUSH is not set +CONFIG_FEATURE_BASH_IS_NONE=y +CONFIG_SH_MATH_SUPPORT=y +# CONFIG_SH_MATH_SUPPORT_64 is not set +CONFIG_FEATURE_SH_EXTRA_QUIET=y +# CONFIG_FEATURE_SH_STANDALONE is not set +# CONFIG_FEATURE_SH_NOFORK is not set +# CONFIG_FEATURE_SH_HISTFILESIZE is not set + +# +# System Logging Utilities +# +CONFIG_SYSLOGD=y +CONFIG_FEATURE_ROTATE_LOGFILE=y +CONFIG_FEATURE_REMOTE_LOG=y +# CONFIG_FEATURE_SYSLOGD_DUP is not set +# CONFIG_FEATURE_SYSLOGD_CFG is not set +CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=256 +# CONFIG_FEATURE_IPC_SYSLOG is not set +CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=0 +# CONFIG_LOGREAD is not set +# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set +# CONFIG_FEATURE_KMSG_SYSLOG is not set +CONFIG_KLOGD=y +CONFIG_FEATURE_KLOGD_KLOGCTL=y +CONFIG_LOGGER=y diff --git a/fpga/sw/config/kernel.config.2018.3 b/fpga/sw/config/kernel.config.2018.3 new file mode 100644 index 00000000..63315406 --- /dev/null +++ b/fpga/sw/config/kernel.config.2018.3 @@ -0,0 +1,4551 @@ +# +# Automatically generated file; DO NOT EDIT. +# Linux/arm 4.14.0 Kernel Configuration +# +CONFIG_ARM=y +CONFIG_ARM_HAS_SG_CHAIN=y +CONFIG_MIGHT_HAVE_PCI=y +CONFIG_SYS_SUPPORTS_APM_EMULATION=y +CONFIG_HAVE_PROC_CPU=y +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_RWSEM_XCHGADD_ALGORITHM=y +CONFIG_FIX_EARLYCON_MEM=y +CONFIG_GENERIC_HWEIGHT=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_ARCH_SUPPORTS_UPROBES=y +CONFIG_VECTORS_BASE=0xffff0000 +CONFIG_ARM_PATCH_PHYS_VIRT=y +CONFIG_PGTABLE_LEVELS=2 +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" +CONFIG_IRQ_WORK=y +CONFIG_BUILDTIME_EXTABLE_SORT=y + +# +# General setup +# +CONFIG_INIT_ENV_ARG_LIMIT=32 +CONFIG_CROSS_COMPILE="" +# CONFIG_COMPILE_TEST is not set +CONFIG_LOCALVERSION="-xilinx" +CONFIG_LOCALVERSION_AUTO=y +CONFIG_HAVE_KERNEL_GZIP=y +CONFIG_HAVE_KERNEL_LZMA=y +CONFIG_HAVE_KERNEL_XZ=y +CONFIG_HAVE_KERNEL_LZO=y +CONFIG_HAVE_KERNEL_LZ4=y +CONFIG_KERNEL_GZIP=y +# 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_DEFAULT_HOSTNAME="(none)" +CONFIG_SWAP=y +CONFIG_SYSVIPC=y +CONFIG_SYSVIPC_SYSCTL=y +# CONFIG_POSIX_MQUEUE is not set +CONFIG_CROSS_MEMORY_ATTACH=y +CONFIG_FHANDLE=y +CONFIG_USELIB=y +# CONFIG_AUDIT is not set +CONFIG_HAVE_ARCH_AUDITSYSCALL=y + +# +# IRQ subsystem +# +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_GENERIC_IRQ_SHOW=y +CONFIG_GENERIC_IRQ_SHOW_LEVEL=y +CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y +CONFIG_HARDIRQS_SW_RESEND=y +CONFIG_IRQ_DOMAIN=y +CONFIG_IRQ_DOMAIN_HIERARCHY=y +CONFIG_GENERIC_MSI_IRQ=y +CONFIG_GENERIC_MSI_IRQ_DOMAIN=y +CONFIG_HANDLE_DOMAIN_IRQ=y +CONFIG_IRQ_FORCED_THREADING=y +CONFIG_SPARSE_IRQ=y +CONFIG_ARCH_CLOCKSOURCE_DATA=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_ARCH_HAS_TICK_BROADCAST=y +CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y + +# +# Timers subsystem +# +CONFIG_TICK_ONESHOT=y +CONFIG_NO_HZ_COMMON=y +# CONFIG_HZ_PERIODIC is not set +CONFIG_NO_HZ_IDLE=y +# CONFIG_NO_HZ_FULL is not set +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y + +# +# 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 + +# +# RCU Subsystem +# +CONFIG_PREEMPT_RCU=y +# CONFIG_RCU_EXPERT is not set +CONFIG_SRCU=y +CONFIG_TREE_SRCU=y +CONFIG_TASKS_RCU=y +CONFIG_RCU_STALL_COMMON=y +CONFIG_RCU_NEED_SEGCBLIST=y +CONFIG_BUILD_BIN2C=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_LOG_BUF_SHIFT=14 +CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 +CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=13 +CONFIG_GENERIC_SCHED_CLOCK=y +CONFIG_CGROUPS=y +# CONFIG_MEMCG is not set +# CONFIG_BLK_CGROUP is not set +# CONFIG_CGROUP_SCHED is not set +# CONFIG_CGROUP_PIDS is not set +# CONFIG_CGROUP_RDMA is not set +# CONFIG_CGROUP_FREEZER is not set +# CONFIG_CPUSETS is not set +# CONFIG_CGROUP_DEVICE is not set +# CONFIG_CGROUP_CPUACCT is not set +# CONFIG_CGROUP_PERF is not set +# CONFIG_CGROUP_DEBUG is not set +# CONFIG_SOCK_CGROUP_DATA is not set +# CONFIG_CHECKPOINT_RESTORE is not set +# CONFIG_NAMESPACES is not set +# CONFIG_SCHED_AUTOGROUP is not set +# CONFIG_SYSFS_DEPRECATED is not set +# CONFIG_RELAY is not set +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="" +CONFIG_RD_GZIP=y +# CONFIG_RD_BZIP2 is not set +# CONFIG_RD_LZMA is not set +CONFIG_RD_XZ=y +# CONFIG_RD_LZO is not set +# CONFIG_RD_LZ4 is not set +# CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE is not set +CONFIG_CC_OPTIMIZE_FOR_SIZE=y +CONFIG_SYSCTL=y +CONFIG_ANON_INODES=y +CONFIG_HAVE_UID16=y +CONFIG_BPF=y +CONFIG_EXPERT=y +CONFIG_UID16=y +CONFIG_MULTIUSER=y +# CONFIG_SGETMASK_SYSCALL is not set +CONFIG_SYSFS_SYSCALL=y +CONFIG_SYSCTL_SYSCALL=y +CONFIG_POSIX_TIMERS=y +CONFIG_KALLSYMS=y +# CONFIG_KALLSYMS_ALL is not set +# CONFIG_KALLSYMS_ABSOLUTE_PERCPU is not set +CONFIG_KALLSYMS_BASE_RELATIVE=y +CONFIG_PRINTK=y +CONFIG_PRINTK_NMI=y +# CONFIG_BUG is not set +CONFIG_ELF_CORE=y +CONFIG_BASE_FULL=y +CONFIG_FUTEX=y +CONFIG_FUTEX_PI=y +CONFIG_EPOLL=y +CONFIG_SIGNALFD=y +CONFIG_TIMERFD=y +CONFIG_EVENTFD=y +# CONFIG_BPF_SYSCALL is not set +CONFIG_SHMEM=y +CONFIG_AIO=y +CONFIG_ADVISE_SYSCALLS=y +# CONFIG_USERFAULTFD is not set +CONFIG_PCI_QUIRKS=y +CONFIG_MEMBARRIER=y +CONFIG_EMBEDDED=y +CONFIG_HAVE_PERF_EVENTS=y +CONFIG_PERF_USE_VMALLOC=y +# CONFIG_PC104 is not set + +# +# Kernel Performance Events And Counters +# +CONFIG_PERF_EVENTS=y +# CONFIG_DEBUG_PERF_USE_VMALLOC is not set +CONFIG_VM_EVENT_COUNTERS=y +CONFIG_COMPAT_BRK=y +CONFIG_SLAB=y +# CONFIG_SLUB is not set +# CONFIG_SLOB is not set +CONFIG_SLAB_MERGE_DEFAULT=y +# CONFIG_SLAB_FREELIST_RANDOM is not set +# CONFIG_SYSTEM_DATA_VERIFICATION is not set +# CONFIG_PROFILING is not set +CONFIG_HAVE_OPROFILE=y +# CONFIG_KPROBES is not set +# CONFIG_JUMP_LABEL is not set +# CONFIG_UPROBES is not set +# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y +CONFIG_ARCH_USE_BUILTIN_BSWAP=y +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y +CONFIG_HAVE_OPTPROBES=y +CONFIG_HAVE_NMI=y +CONFIG_HAVE_ARCH_TRACEHOOK=y +CONFIG_HAVE_DMA_CONTIGUOUS=y +CONFIG_GENERIC_SMP_IDLE_THREAD=y +CONFIG_GENERIC_IDLE_POLL_SETUP=y +CONFIG_ARCH_HAS_SET_MEMORY=y +CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y +CONFIG_HAVE_CLK=y +CONFIG_HAVE_DMA_API_DEBUG=y +CONFIG_HAVE_HW_BREAKPOINT=y +CONFIG_HAVE_PERF_REGS=y +CONFIG_HAVE_PERF_USER_STACK_DUMP=y +CONFIG_HAVE_ARCH_JUMP_LABEL=y +CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y +CONFIG_HAVE_ARCH_SECCOMP_FILTER=y +CONFIG_HAVE_GCC_PLUGINS=y +# CONFIG_GCC_PLUGINS is not set +CONFIG_HAVE_CC_STACKPROTECTOR=y +# CONFIG_CC_STACKPROTECTOR is not set +CONFIG_CC_STACKPROTECTOR_NONE=y +# CONFIG_CC_STACKPROTECTOR_REGULAR is not set +# CONFIG_CC_STACKPROTECTOR_STRONG is not set +CONFIG_THIN_ARCHIVES=y +CONFIG_HAVE_CONTEXT_TRACKING=y +CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y +CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y +CONFIG_HAVE_MOD_ARCH_SPECIFIC=y +CONFIG_MODULES_USE_ELF_REL=y +CONFIG_ARCH_HAS_ELF_RANDOMIZE=y +CONFIG_HAVE_ARCH_MMAP_RND_BITS=y +CONFIG_HAVE_EXIT_THREAD=y +CONFIG_ARCH_MMAP_RND_BITS_MIN=8 +CONFIG_ARCH_MMAP_RND_BITS_MAX=16 +CONFIG_ARCH_MMAP_RND_BITS=8 +# CONFIG_HAVE_ARCH_HASH is not set +# CONFIG_ISA_BUS_API is not set +CONFIG_CLONE_BACKWARDS=y +CONFIG_OLD_SIGSUSPEND3=y +CONFIG_OLD_SIGACTION=y +# CONFIG_CPU_NO_EFFICIENT_FFS is not set +# CONFIG_HAVE_ARCH_VMAP_STACK 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_REFCOUNT_FULL is not set + +# +# GCOV-based kernel profiling +# +CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y +CONFIG_HAVE_GENERIC_DMA_COHERENT=y +CONFIG_SLABINFO=y +CONFIG_RT_MUTEXES=y +CONFIG_BASE_SMALL=0 +CONFIG_MODULES=y +# CONFIG_MODULE_FORCE_LOAD is not set +CONFIG_MODULE_UNLOAD=y +CONFIG_MODULE_FORCE_UNLOAD=y +CONFIG_MODVERSIONS=y +# CONFIG_MODULE_SRCVERSION_ALL is not set +# CONFIG_MODULE_SIG is not set +# CONFIG_MODULE_COMPRESS is not set +# CONFIG_TRIM_UNUSED_KSYMS is not set +CONFIG_MODULES_TREE_LOOKUP=y +CONFIG_BLOCK=y +CONFIG_LBDAF=y +CONFIG_BLK_SCSI_REQUEST=y +# CONFIG_BLK_DEV_BSG is not set +# CONFIG_BLK_DEV_BSGLIB is not set +# CONFIG_BLK_DEV_INTEGRITY is not set +# CONFIG_BLK_DEV_ZONED is not set +# CONFIG_BLK_CMDLINE_PARSER is not set +# CONFIG_BLK_WBT is not set +# CONFIG_BLK_SED_OPAL is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +CONFIG_EFI_PARTITION=y +CONFIG_BLK_MQ_PCI=y +CONFIG_BLK_MQ_VIRTIO=y + +# +# IO Schedulers +# +CONFIG_IOSCHED_NOOP=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_CFQ=y +# CONFIG_DEFAULT_DEADLINE is not set +CONFIG_DEFAULT_CFQ=y +# CONFIG_DEFAULT_NOOP is not set +CONFIG_DEFAULT_IOSCHED="cfq" +CONFIG_MQ_IOSCHED_DEADLINE=y +CONFIG_MQ_IOSCHED_KYBER=y +# CONFIG_IOSCHED_BFQ is not set +CONFIG_UNINLINE_SPIN_UNLOCK=y +CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y +CONFIG_MUTEX_SPIN_ON_OWNER=y +CONFIG_RWSEM_SPIN_ON_OWNER=y +CONFIG_LOCK_SPIN_ON_OWNER=y +CONFIG_FREEZER=y + +# +# System Type +# +CONFIG_MMU=y +CONFIG_ARCH_MULTIPLATFORM=y +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_EP93XX is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_NETX is not set +# CONFIG_ARCH_IOP13XX is not set +# CONFIG_ARCH_IOP32X is not set +# CONFIG_ARCH_IOP33X is not set +# CONFIG_ARCH_IXP4XX is not set +# CONFIG_ARCH_DOVE is not set +# CONFIG_ARCH_KS8695 is not set +# CONFIG_ARCH_W90X900 is not set +# CONFIG_ARCH_LPC32XX is not set +# CONFIG_ARCH_PXA is not set +# CONFIG_ARCH_RPC is not set +# CONFIG_ARCH_SA1100 is not set +# CONFIG_ARCH_S3C24XX is not set +# CONFIG_ARCH_DAVINCI is not set +# CONFIG_ARCH_OMAP1 is not set + +# +# Multiple platform selection +# + +# +# CPU Core family selection +# +# CONFIG_ARCH_MULTI_V6 is not set +CONFIG_ARCH_MULTI_V7=y +CONFIG_ARCH_MULTI_V6_V7=y +# CONFIG_ARCH_MULTI_CPU_AUTO is not set +# CONFIG_ARCH_VIRT is not set +# CONFIG_ARCH_MVEBU is not set +# CONFIG_ARCH_ACTIONS is not set +# CONFIG_ARCH_ALPINE is not set +# CONFIG_ARCH_ARTPEC is not set +# CONFIG_ARCH_AT91 is not set +# CONFIG_ARCH_BCM is not set +# CONFIG_ARCH_BERLIN is not set +# CONFIG_ARCH_DIGICOLOR is not set +# CONFIG_ARCH_HIGHBANK is not set +# CONFIG_ARCH_HISI is not set +# CONFIG_ARCH_KEYSTONE is not set +# CONFIG_ARCH_MESON is not set +# CONFIG_ARCH_MXC is not set +# CONFIG_ARCH_MEDIATEK is not set + +# +# TI OMAP/AM/DM/DRA Family +# +# CONFIG_ARCH_OMAP3 is not set +# CONFIG_ARCH_OMAP4 is not set +# CONFIG_SOC_OMAP5 is not set +# CONFIG_SOC_AM33XX is not set +# CONFIG_SOC_AM43XX is not set +# CONFIG_SOC_DRA7XX is not set +# CONFIG_ARCH_MMP is not set +# CONFIG_ARCH_QCOM is not set +# CONFIG_ARCH_REALVIEW is not set +# CONFIG_ARCH_ROCKCHIP is not set +# CONFIG_ARCH_SOCFPGA is not set +# CONFIG_PLAT_SPEAR is not set +# CONFIG_ARCH_STI is not set +# CONFIG_ARCH_S5PV210 is not set +# CONFIG_ARCH_EXYNOS is not set +# CONFIG_ARCH_RENESAS is not set +# CONFIG_ARCH_SUNXI is not set +# CONFIG_ARCH_SIRF is not set +# CONFIG_ARCH_TANGO is not set +# CONFIG_ARCH_TEGRA is not set +# CONFIG_ARCH_UNIPHIER is not set +# CONFIG_ARCH_U8500 is not set +# CONFIG_ARCH_VEXPRESS is not set +# CONFIG_ARCH_WM8850 is not set +# CONFIG_ARCH_ZX is not set +CONFIG_ARCH_ZYNQ=y + +# +# Xilinx Specific Options +# +CONFIG_XILINX_PREFETCH=y + +# +# Processor Type +# +CONFIG_CPU_V7=y +CONFIG_CPU_THUMB_CAPABLE=y +CONFIG_CPU_32v6K=y +CONFIG_CPU_32v7=y +CONFIG_CPU_ABRT_EV7=y +CONFIG_CPU_PABRT_V7=y +CONFIG_CPU_CACHE_V7=y +CONFIG_CPU_CACHE_VIPT=y +CONFIG_CPU_COPY_V6=y +CONFIG_CPU_TLB_V7=y +CONFIG_CPU_HAS_ASID=y +CONFIG_CPU_CP15=y +CONFIG_CPU_CP15_MMU=y + +# +# Processor Features +# +# CONFIG_ARM_LPAE is not set +# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set +CONFIG_ARM_THUMB=y +# CONFIG_ARM_THUMBEE is not set +CONFIG_ARM_VIRT_EXT=y +CONFIG_SWP_EMULATE=y +# CONFIG_CPU_BIG_ENDIAN is not set +# CONFIG_CPU_ICACHE_DISABLE is not set +# CONFIG_CPU_BPREDICT_DISABLE is not set +CONFIG_KUSER_HELPERS=y +# CONFIG_VDSO is not set +CONFIG_OUTER_CACHE=y +CONFIG_OUTER_CACHE_SYNC=y +CONFIG_MIGHT_HAVE_CACHE_L2X0=y +CONFIG_CACHE_L2X0=y +# CONFIG_CACHE_L2X0_PMU is not set +# CONFIG_PL310_ERRATA_588369 is not set +# CONFIG_PL310_ERRATA_727915 is not set +# CONFIG_PL310_ERRATA_753970 is not set +# CONFIG_PL310_ERRATA_769419 is not set +CONFIG_ARM_L1_CACHE_SHIFT_6=y +CONFIG_ARM_L1_CACHE_SHIFT=6 +CONFIG_ARM_DMA_MEM_BUFFERABLE=y +CONFIG_ARM_HEAVY_MB=y +CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y +CONFIG_DEBUG_ALIGN_RODATA=y +CONFIG_MULTI_IRQ_HANDLER=y +# CONFIG_ARM_ERRATA_430973 is not set +CONFIG_ARM_ERRATA_643719=y +# CONFIG_ARM_ERRATA_720789 is not set +# CONFIG_ARM_ERRATA_754322 is not set +# CONFIG_ARM_ERRATA_754327 is not set +# CONFIG_ARM_ERRATA_764369 is not set +# CONFIG_ARM_ERRATA_775420 is not set +# CONFIG_ARM_ERRATA_798181 is not set +# CONFIG_ARM_ERRATA_773022 is not set +# CONFIG_ARM_ERRATA_818325_852422 is not set +# CONFIG_ARM_ERRATA_821420 is not set +# CONFIG_ARM_ERRATA_825619 is not set +# CONFIG_ARM_ERRATA_852421 is not set +# CONFIG_ARM_ERRATA_852423 is not set + +# +# Bus support +# +CONFIG_PCI=y +CONFIG_PCI_DOMAINS=y +CONFIG_PCI_DOMAINS_GENERIC=y +CONFIG_PCI_SYSCALL=y +# CONFIG_PCIEPORTBUS is not set +CONFIG_PCI_MSI=y +CONFIG_PCI_MSI_IRQ_DOMAIN=y +# CONFIG_PCI_DEBUG is not set +CONFIG_PCI_REALLOC_ENABLE_AUTO=y +# CONFIG_PCI_STUB is not set +# CONFIG_PCI_IOV is not set +# CONFIG_PCI_PRI is not set +# CONFIG_PCI_PASID is not set +# CONFIG_HOTPLUG_PCI is not set + +# +# DesignWare PCI Core Support +# +# CONFIG_PCIE_DW_PLAT is not set +# CONFIG_PCI_LAYERSCAPE is not set + +# +# PCI host controller drivers +# +# CONFIG_PCI_FTPCI100 is not set +# CONFIG_PCI_HOST_GENERIC is not set +# CONFIG_PCIE_XILINX is not set +# CONFIG_PCIE_ALTERA is not set + +# +# PCI Endpoint +# +# CONFIG_PCI_ENDPOINT is not set + +# +# PCI switch controller drivers +# +# CONFIG_PCI_SW_SWITCHTEC is not set +# CONFIG_PCCARD is not set + +# +# Kernel Features +# +CONFIG_HAVE_SMP=y +CONFIG_SMP=y +CONFIG_SMP_ON_UP=y +CONFIG_ARM_CPU_TOPOLOGY=y +CONFIG_SCHED_MC=y +CONFIG_SCHED_SMT=y +CONFIG_HAVE_ARM_SCU=y +# CONFIG_HAVE_ARM_ARCH_TIMER is not set +CONFIG_HAVE_ARM_TWD=y +# CONFIG_MCPM is not set +# CONFIG_BIG_LITTLE is not set +CONFIG_VMSPLIT_3G=y +# CONFIG_VMSPLIT_3G_OPT is not set +# CONFIG_VMSPLIT_2G is not set +# CONFIG_VMSPLIT_1G is not set +CONFIG_PAGE_OFFSET=0xC0000000 +CONFIG_NR_CPUS=4 +CONFIG_HOTPLUG_CPU=y +# CONFIG_ARM_PSCI is not set +CONFIG_ARCH_NR_GPIO=1024 +# CONFIG_PREEMPT_NONE is not set +# CONFIG_PREEMPT_VOLUNTARY is not set +CONFIG_PREEMPT=y +CONFIG_PREEMPT_COUNT=y +CONFIG_HZ_FIXED=0 +CONFIG_HZ_100=y +# CONFIG_HZ_200 is not set +# CONFIG_HZ_250 is not set +# CONFIG_HZ_300 is not set +# CONFIG_HZ_500 is not set +# CONFIG_HZ_1000 is not set +CONFIG_HZ=100 +CONFIG_SCHED_HRTICK=y +# CONFIG_THUMB2_KERNEL is not set +CONFIG_ARM_PATCH_IDIV=y +CONFIG_AEABI=y +# CONFIG_OABI_COMPAT is not set +# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set +# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set +CONFIG_HAVE_ARCH_PFN_VALID=y +# CONFIG_HIGHMEM is not set +CONFIG_CPU_SW_DOMAIN_PAN=y +CONFIG_HW_PERF_EVENTS=y +CONFIG_ARCH_WANT_GENERAL_HUGETLB=y +# CONFIG_ARM_MODULE_PLTS is not set +CONFIG_FLATMEM=y +CONFIG_FLAT_NODE_MEM_MAP=y +CONFIG_HAVE_MEMBLOCK=y +CONFIG_NO_BOOTMEM=y +CONFIG_MEMORY_ISOLATION=y +# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set +CONFIG_SPLIT_PTLOCK_CPUS=4 +# CONFIG_COMPACTION is not set +CONFIG_MIGRATION=y +# CONFIG_PHYS_ADDR_T_64BIT is not set +# CONFIG_KSM is not set +CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 +# CONFIG_ARCH_WANTS_THP_SWAP is not set +# CONFIG_CLEANCACHE is not set +# CONFIG_FRONTSWAP is not set +CONFIG_CMA=y +# CONFIG_CMA_DEBUG is not set +CONFIG_CMA_AREAS=7 +# CONFIG_ZPOOL is not set +# CONFIG_ZBUD is not set +# CONFIG_ZSMALLOC is not set +CONFIG_GENERIC_EARLY_IOREMAP=y +# CONFIG_IDLE_PAGE_TRACKING is not set +CONFIG_FRAME_VECTOR=y +# CONFIG_PERCPU_STATS is not set +CONFIG_FORCE_MAX_ZONEORDER=11 +CONFIG_ALIGNMENT_TRAP=y +# CONFIG_UACCESS_WITH_MEMCPY is not set +# CONFIG_SECCOMP is not set +CONFIG_SWIOTLB=y +CONFIG_IOMMU_HELPER=y +# CONFIG_PARAVIRT is not set +# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set +# CONFIG_XEN is not set + +# +# Boot options +# +CONFIG_USE_OF=y +CONFIG_ATAGS=y +# CONFIG_DEPRECATED_PARAM_STRUCT is not set +CONFIG_ZBOOT_ROM_TEXT=0 +CONFIG_ZBOOT_ROM_BSS=0 +# CONFIG_ARM_APPENDED_DTB is not set +CONFIG_CMDLINE="console=ttyPS1,115200n8 root=/dev/ram rw initrd=0x00800000,16M earlyprintk mtdparts=physmap-flash.0:512K(nor-fsbl),512K(nor-u-boot),5M(nor-linux),9M(nor-user),1M(nor-scratch),-(nor-rootfs)" +CONFIG_CMDLINE_FROM_BOOTLOADER=y +# CONFIG_CMDLINE_EXTEND is not set +# CONFIG_CMDLINE_FORCE is not set +# CONFIG_KEXEC is not set +# CONFIG_CRASH_DUMP is not set +CONFIG_AUTO_ZRELADDR=y +# CONFIG_EFI is not set + +# +# CPU Power Management +# + +# +# CPU Frequency scaling +# +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_GOV_ATTR_SET=y +CONFIG_CPU_FREQ_GOV_COMMON=y +CONFIG_CPU_FREQ_STAT=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL is not set +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=y +CONFIG_CPU_FREQ_GOV_USERSPACE=y +CONFIG_CPU_FREQ_GOV_ONDEMAND=y +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y +# CONFIG_CPU_FREQ_GOV_SCHEDUTIL is not set + +# +# CPU frequency scaling drivers +# +# CONFIG_CPUFREQ_DT is not set +# CONFIG_ARM_BIG_LITTLE_CPUFREQ is not set +# CONFIG_ARM_KIRKWOOD_CPUFREQ is not set +# CONFIG_QORIQ_CPUFREQ is not set + +# +# CPU Idle +# +CONFIG_CPU_IDLE=y +CONFIG_CPU_IDLE_GOV_LADDER=y +CONFIG_CPU_IDLE_GOV_MENU=y + +# +# ARM CPU Idle Drivers +# +# CONFIG_ARM_CPUIDLE is not set +CONFIG_ARM_ZYNQ_CPUIDLE=y +# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set + +# +# Floating point emulation +# + +# +# At least one emulation must be selected +# +CONFIG_VFP=y +CONFIG_VFPv3=y +CONFIG_NEON=y +CONFIG_KERNEL_MODE_NEON=y + +# +# Userspace binary formats +# +CONFIG_BINFMT_ELF=y +CONFIG_ELFCORE=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_BINFMT_SCRIPT=y +# CONFIG_BINFMT_FLAT is not set +# CONFIG_HAVE_AOUT is not set +# CONFIG_BINFMT_MISC is not set +CONFIG_COREDUMP=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_WAKELOCKS is not set +CONFIG_PM=y +# CONFIG_PM_DEBUG is not set +# CONFIG_APM_EMULATION is not set +CONFIG_PM_CLK=y +# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set +CONFIG_CPU_PM=y +CONFIG_ARCH_SUSPEND_POSSIBLE=y +CONFIG_ARM_CPU_SUSPEND=y +CONFIG_ARCH_HIBERNATION_POSSIBLE=y +CONFIG_NET=y + +# +# Networking options +# +CONFIG_PACKET=y +# CONFIG_PACKET_DIAG is not set +CONFIG_UNIX=y +# CONFIG_UNIX_DIAG is not set +# CONFIG_TLS is not set +CONFIG_XFRM=y +# CONFIG_XFRM_USER is not set +# CONFIG_XFRM_SUB_POLICY is not set +# CONFIG_XFRM_MIGRATE is not set +# CONFIG_XFRM_STATISTICS is not set +# CONFIG_NET_KEY is not set +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +# CONFIG_IP_ADVANCED_ROUTER 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 is not set +# CONFIG_IP_MROUTE is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_NET_IPVTI is not set +# CONFIG_NET_UDP_TUNNEL is not set +# CONFIG_NET_FOU is not set +# CONFIG_INET_AH is not set +# CONFIG_INET_ESP is not set +# CONFIG_INET_IPCOMP is not set +# CONFIG_INET_XFRM_TUNNEL is not set +# CONFIG_INET_TUNNEL is not set +CONFIG_INET_XFRM_MODE_TRANSPORT=y +CONFIG_INET_XFRM_MODE_TUNNEL=y +CONFIG_INET_XFRM_MODE_BEET=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_MD5SIG is not set +# CONFIG_IPV6 is not set +# CONFIG_NETWORK_SECMARK is not set +CONFIG_NET_PTP_CLASSIFY=y +# CONFIG_NETWORK_PHY_TIMESTAMPING is not set +# CONFIG_NETFILTER is not set +# CONFIG_IP_DCCP is not set +# CONFIG_IP_SCTP is not set +# CONFIG_RDS is not set +# CONFIG_TIPC is not set +# CONFIG_ATM is not set +# CONFIG_L2TP is not set +# CONFIG_BRIDGE is not set +CONFIG_HAVE_NET_DSA=y +# CONFIG_NET_DSA is not set +# CONFIG_VLAN_8021Q is not set +# CONFIG_DECNET is not set +# CONFIG_LLC2 is not set +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_PHONET is not set +# CONFIG_IEEE802154 is not set +# CONFIG_NET_SCHED is not set +# CONFIG_DCB is not set +# CONFIG_BATMAN_ADV is not set +# CONFIG_OPENVSWITCH is not set +# CONFIG_VSOCKETS is not set +# CONFIG_NETLINK_DIAG is not set +# 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 is not set +# CONFIG_NET_NCSI is not set +CONFIG_RPS=y +CONFIG_RFS_ACCEL=y +CONFIG_XPS=y +# CONFIG_CGROUP_NET_PRIO is not set +# CONFIG_CGROUP_NET_CLASSID is not set +CONFIG_NET_RX_BUSY_POLL=y +CONFIG_BQL=y +CONFIG_BPF_JIT=y +CONFIG_NET_FLOW_LIMIT=y + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +# CONFIG_HAMRADIO is not set +CONFIG_CAN=y +CONFIG_CAN_RAW=y +CONFIG_CAN_BCM=y +CONFIG_CAN_GW=y + +# +# CAN Device Drivers +# +# CONFIG_CAN_VCAN is not set +# CONFIG_CAN_VXCAN is not set +# CONFIG_CAN_SLCAN is not set +CONFIG_CAN_DEV=y +CONFIG_CAN_CALC_BITTIMING=y +# CONFIG_CAN_LEDS is not set +# CONFIG_CAN_FLEXCAN is not set +# CONFIG_CAN_GRCAN is not set +# CONFIG_CAN_TI_HECC is not set +CONFIG_CAN_XILINXCAN=y +# CONFIG_CAN_C_CAN is not set +# CONFIG_CAN_CC770 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_RCAR is not set +# CONFIG_CAN_RCAR_CANFD 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 + +# +# CAN USB interfaces +# +# CONFIG_CAN_EMS_USB is not set +# CONFIG_CAN_ESD_USB2 is not set +# CONFIG_CAN_GS_USB is not set +# CONFIG_CAN_KVASER_USB is not set +# CONFIG_CAN_PEAK_USB is not set +# CONFIG_CAN_8DEV_USB is not set +# CONFIG_CAN_MCBA_USB is not set +# CONFIG_CAN_DEBUG_DEVICES is not set +# CONFIG_BT is not set +# CONFIG_AF_RXRPC is not set +# CONFIG_AF_KCM is not set +# CONFIG_STREAM_PARSER is not set +CONFIG_WIRELESS=y +# CONFIG_CFG80211 is not set +# CONFIG_LIB80211 is not set + +# +# CFG80211 needs to be enabled for MAC80211 +# +CONFIG_MAC80211_STA_HASH_MAX_SIZE=0 +# CONFIG_WIMAX is not set +# CONFIG_RFKILL is not set +# CONFIG_NET_9P is not set +# CONFIG_CAIF is not set +# CONFIG_CEPH_LIB is not set +# CONFIG_NFC is not set +# CONFIG_PSAMPLE is not set +# CONFIG_NET_IFE is not set +# CONFIG_LWTUNNEL is not set +# CONFIG_DST_CACHE is not set +CONFIG_GRO_CELLS=y +# CONFIG_NET_DEVLINK is not set +CONFIG_MAY_USE_DEVLINK=y +CONFIG_HAVE_EBPF_JIT=y + +# +# Device Drivers +# +CONFIG_ARM_AMBA=y + +# +# Generic Driver Options +# +CONFIG_UEVENT_HELPER=y +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y +CONFIG_FW_LOADER=y +CONFIG_FIRMWARE_IN_KERNEL=y +CONFIG_EXTRA_FIRMWARE="" +# CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set +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_SYS_HYPERVISOR is not set +# CONFIG_GENERIC_CPU_DEVICES is not set +CONFIG_GENERIC_CPU_AUTOPROBE=y +CONFIG_SOC_BUS=y +CONFIG_REGMAP=y +CONFIG_REGMAP_I2C=y +CONFIG_REGMAP_SPI=y +CONFIG_REGMAP_MMIO=y +CONFIG_DMA_SHARED_BUFFER=y +# CONFIG_DMA_FENCE_TRACE is not set +CONFIG_DMA_CMA=y + +# +# Default contiguous memory area size: +# +CONFIG_CMA_SIZE_MBYTES=16 +CONFIG_CMA_SIZE_SEL_MBYTES=y +# CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set +# CONFIG_CMA_SIZE_SEL_MIN is not set +# CONFIG_CMA_SIZE_SEL_MAX is not set +CONFIG_CMA_ALIGNMENT=8 +CONFIG_GENERIC_ARCH_TOPOLOGY=y + +# +# Bus devices +# +# CONFIG_ARM_CCI400_PMU is not set +# CONFIG_ARM_CCI5xx_PMU is not set +# CONFIG_ARM_CCN is not set +# CONFIG_BRCMSTB_GISB_ARB is not set +# CONFIG_SIMPLE_PM_BUS is not set +# CONFIG_VEXPRESS_CONFIG is not set +CONFIG_CONNECTOR=y +CONFIG_PROC_EVENTS=y +CONFIG_MTD=y +# CONFIG_MTD_TESTS is not set +# CONFIG_MTD_REDBOOT_PARTS is not set +CONFIG_MTD_CMDLINE_PARTS=y +# CONFIG_MTD_AFS_PARTS is not set +CONFIG_MTD_OF_PARTS=y +# CONFIG_MTD_AR7_PARTS is not set + +# +# Partition parsers +# + +# +# User Modules And Translation Layers +# +CONFIG_MTD_BLKDEVS=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set +# CONFIG_INFTL is not set +# CONFIG_RFD_FTL is not set +# CONFIG_SSFDC is not set +# CONFIG_SM_FTL is not set +# CONFIG_MTD_OOPS is not set +# CONFIG_MTD_SWAP is not set +# 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 is not set +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +CONFIG_MTD_MAP_BANK_WIDTH_4=y +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_CFI_I4 is not set +# CONFIG_MTD_CFI_I8 is not set +# CONFIG_MTD_CFI_INTELEXT is not set +CONFIG_MTD_CFI_AMDSTD=y +# 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 + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_COMPLEX_MAPPINGS is not set +CONFIG_MTD_PHYSMAP=y +# CONFIG_MTD_PHYSMAP_COMPAT is not set +CONFIG_MTD_PHYSMAP_OF=y +# CONFIG_MTD_PHYSMAP_OF_VERSATILE is not set +# CONFIG_MTD_PHYSMAP_OF_GEMINI is not set +# CONFIG_MTD_INTEL_VR_NOR is not set +# CONFIG_MTD_PLATRAM is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_DATAFLASH is not set +CONFIG_MTD_M25P80=y +# CONFIG_MTD_MCHP23K256 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 +CONFIG_MTD_NAND_ECC=y +# CONFIG_MTD_NAND_ECC_SMC is not set +CONFIG_MTD_NAND=y +# CONFIG_MTD_NAND_ECC_BCH is not set +# CONFIG_MTD_SM_COMMON is not set +# CONFIG_MTD_NAND_DENALI_PCI is not set +# CONFIG_MTD_NAND_DENALI_DT is not set +# CONFIG_MTD_NAND_GPIO is not set +# CONFIG_MTD_NAND_OMAP_BCH_BUILD is not set +# CONFIG_MTD_NAND_RICOH is not set +# CONFIG_MTD_NAND_DISKONCHIP is not set +# CONFIG_MTD_NAND_DOCG4 is not set +# CONFIG_MTD_NAND_CAFE is not set +# CONFIG_MTD_NAND_NANDSIM is not set +# CONFIG_MTD_NAND_BRCMNAND is not set +# CONFIG_MTD_NAND_PLATFORM is not set +# CONFIG_MTD_NAND_PL35X is not set +# CONFIG_MTD_NAND_ARASAN is not set +# CONFIG_MTD_ONENAND is not set + +# +# LPDDR & LPDDR2 PCM memory drivers +# +# CONFIG_MTD_LPDDR is not set +# CONFIG_MTD_LPDDR2_NVM is not set +CONFIG_MTD_SPI_NOR=y +# CONFIG_MTD_MT81xx_NOR is not set +CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y +# CONFIG_SPI_CADENCE_QUADSPI is not set +# CONFIG_MTD_UBI 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_ADDRESS=y +CONFIG_OF_ADDRESS_PCI=y +CONFIG_OF_IRQ=y +CONFIG_OF_NET=y +CONFIG_OF_MDIO=y +CONFIG_OF_PCI=y +CONFIG_OF_PCI_IRQ=y +CONFIG_OF_RESERVED_MEM=y +# CONFIG_OF_OVERLAY is not set +CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y +# CONFIG_PARPORT is not set +CONFIG_BLK_DEV=y +# CONFIG_BLK_DEV_NULL_BLK is not set +# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set +# CONFIG_BLK_DEV_DAC960 is not set +# CONFIG_BLK_DEV_UMEM is not set +# CONFIG_BLK_DEV_COW_COMMON is not set +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 +# CONFIG_BLK_DEV_CRYPTOLOOP is not set +# CONFIG_BLK_DEV_DRBD is not set +# CONFIG_BLK_DEV_NBD is not set +# CONFIG_BLK_DEV_SX8 is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=16 +CONFIG_BLK_DEV_RAM_SIZE=16384 +# CONFIG_CDROM_PKTCDVD is not set +# CONFIG_ATA_OVER_ETH is not set +# CONFIG_VIRTIO_BLK is not set +# CONFIG_BLK_DEV_RBD is not set +# CONFIG_BLK_DEV_RSXX is not set +# CONFIG_BLK_DEV_NVME is not set +# CONFIG_NVME_FC is not set +# CONFIG_NVME_TARGET is not set + +# +# Misc devices +# +# CONFIG_SENSORS_LIS3LV02D is not set +# CONFIG_AD525X_DPOT is not set +# CONFIG_DUMMY_IRQ is not set +# CONFIG_PHANTOM is not set +# CONFIG_SGI_IOC4 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_TI_DAC7512 is not set +# CONFIG_USB_SWITCH_FSA9480 is not set +# CONFIG_LATTICE_ECP3_CONFIG is not set +CONFIG_SRAM=y +CONFIG_SRAM_EXEC=y +# CONFIG_PCI_ENDPOINT_TEST is not set +# CONFIG_XILINX_SDFEC is not set +CONFIG_XILINX_TRAFGEN=y +# CONFIG_XILINX_JESD204B is not set +# CONFIG_C2PORT is not set + +# +# EEPROM support +# +CONFIG_EEPROM_AT24=y +CONFIG_EEPROM_AT25=y +# CONFIG_EEPROM_LEGACY is not set +# CONFIG_EEPROM_MAX6875 is not set +# CONFIG_EEPROM_93CX6 is not set +# CONFIG_EEPROM_93XX46 is not set +# CONFIG_EEPROM_IDT_89HPESX is not set +# CONFIG_CB710_CORE is not set + +# +# Texas Instruments shared transport line discipline +# +# CONFIG_TI_ST is not set +# CONFIG_SENSORS_LIS3_SPI is not set +# CONFIG_SENSORS_LIS3_I2C is not set + +# +# Altera FPGA firmware download module +# +# CONFIG_ALTERA_STAPL is not set + +# +# Intel MIC Bus Driver +# + +# +# SCIF Bus Driver +# + +# +# VOP Bus Driver +# + +# +# Intel MIC Host Driver +# + +# +# Intel MIC Card Driver +# + +# +# SCIF Driver +# + +# +# Intel MIC Coprocessor State Management (COSM) Drivers +# + +# +# VOP Driver +# +# CONFIG_ECHO is not set +# CONFIG_CXL_BASE is not set +# CONFIG_CXL_AFU_DRIVER_OPS is not set +# CONFIG_CXL_LIB is not set +CONFIG_HAVE_IDE=y +# CONFIG_IDE is not set + +# +# SCSI device support +# +CONFIG_SCSI_MOD=y +# CONFIG_RAID_ATTRS is not set +CONFIG_SCSI=y +CONFIG_SCSI_DMA=y +# CONFIG_SCSI_NETLINK is not set +# CONFIG_SCSI_MQ_DEFAULT is not set +CONFIG_SCSI_PROC_FS=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +# CONFIG_CHR_DEV_ST is not set +# CONFIG_CHR_DEV_OSST is not set +# CONFIG_BLK_DEV_SR is not set +CONFIG_CHR_DEV_SG=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 +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_SMARTPQI is not set +# CONFIG_SCSI_UFSHCD is not set +# CONFIG_SCSI_HPTIOP is not set +# CONFIG_SCSI_SNIC is not set +# CONFIG_SCSI_DMX3191D is not set +# CONFIG_SCSI_FUTURE_DOMAIN 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_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_NSP32 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 is not set +# CONFIG_SCSI_DH is not set +# CONFIG_SCSI_OSD_INITIATOR is not set +# CONFIG_ATA is not set +# CONFIG_MD is not set +# CONFIG_TARGET_CORE is not set +# CONFIG_FUSION is not set + +# +# IEEE 1394 (FireWire) support +# +# CONFIG_FIREWIRE is not set +# CONFIG_FIREWIRE_NOSY is not set +CONFIG_NETDEVICES=y +CONFIG_MII=y +CONFIG_NET_CORE=y +# CONFIG_BONDING is not set +# CONFIG_DUMMY is not set +# CONFIG_EQUALIZER is not set +# CONFIG_NET_FC is not set +# CONFIG_NET_TEAM is not set +# CONFIG_MACVLAN is not set +# CONFIG_VXLAN is not set +# CONFIG_MACSEC is not set +# CONFIG_NETCONSOLE is not set +# CONFIG_NETPOLL is not set +# CONFIG_NET_POLL_CONTROLLER is not set +# CONFIG_TUN is not set +# CONFIG_TUN_VNET_CROSS_LE is not set +# CONFIG_VETH is not set +# CONFIG_VIRTIO_NET is not set +# CONFIG_NLMON is not set +# CONFIG_ARCNET is not set + +# +# CAIF transport drivers +# + +# +# Distributed Switch Architecture drivers +# +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_ALTEON=y +# CONFIG_ACENIC is not set +# CONFIG_ALTERA_TSE is not set +CONFIG_NET_VENDOR_AMAZON=y +CONFIG_NET_VENDOR_AMD=y +# CONFIG_AMD8111_ETH is not set +# CONFIG_PCNET32 is not set +# CONFIG_AMD_XGBE_HAVE_ECC is not set +CONFIG_NET_VENDOR_AQUANTIA=y +CONFIG_NET_VENDOR_ARC=y +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_AURORA is not set +CONFIG_NET_CADENCE=y +CONFIG_MACB=y +CONFIG_MACB_USE_HWSTAMP=y +# CONFIG_MACB_PCI 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_BROCADE=y +# CONFIG_BNA is not set +CONFIG_NET_VENDOR_CAVIUM=y +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_CIRRUS=y +# CONFIG_CS89x0 is not set +CONFIG_NET_VENDOR_CISCO=y +# CONFIG_ENIC is not set +# CONFIG_DM9000 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_SUNDANCE is not set +CONFIG_NET_VENDOR_EMULEX=y +# CONFIG_BE2NET is not set +CONFIG_NET_VENDOR_EZCHIP=y +# CONFIG_EZCHIP_NPS_MANAGEMENT_ENET is not set +CONFIG_NET_VENDOR_EXAR=y +# CONFIG_S2IO is not set +# CONFIG_VXGE is not set +CONFIG_NET_VENDOR_FARADAY=y +# CONFIG_FTMAC100 is not set +# CONFIG_FTGMAC100 is not set +CONFIG_NET_VENDOR_HISILICON=y +# CONFIG_HIX5HD2_GMAC is not set +# CONFIG_HISI_FEMAC is not set +# CONFIG_HIP04_ETH is not set +# CONFIG_HNS is not set +# CONFIG_HNS_DSAF is not set +# CONFIG_HNS_ENET is not set +# CONFIG_HNS3 is not set +CONFIG_NET_VENDOR_HP=y +# CONFIG_HP100 is not set +CONFIG_NET_VENDOR_HUAWEI=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_IXGB is not set +# CONFIG_IXGBE is not set +# CONFIG_IXGBEVF is not set +# CONFIG_I40E is not set +# CONFIG_I40EVF is not set +# CONFIG_FM10K is not set +CONFIG_NET_VENDOR_I825XX=y +# CONFIG_JME is not set +# CONFIG_NET_VENDOR_MARVELL is not set +CONFIG_NET_VENDOR_MELLANOX=y +# CONFIG_MLX4_EN is not set +# CONFIG_MLX4_CORE is not set +# CONFIG_MLX5_CORE is not set +# CONFIG_MLXSW_CORE is not set +# CONFIG_MLXFW is not set +# CONFIG_NET_VENDOR_MICREL is not set +# CONFIG_NET_VENDOR_MICROCHIP is not set +CONFIG_NET_VENDOR_MYRI=y +# CONFIG_MYRI10GE is not set +# CONFIG_FEALNX is not set +# CONFIG_NET_VENDOR_NATSEMI is not set +CONFIG_NET_VENDOR_NETRONOME=y +# CONFIG_NFP 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_PACKET_ENGINE=y +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +CONFIG_NET_VENDOR_QLOGIC=y +# CONFIG_QLA3XXX is not set +# CONFIG_QLCNIC is not set +# CONFIG_QLGE is not set +# CONFIG_NETXEN_NIC is not set +# CONFIG_QED 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_REALTEK=y +# CONFIG_8139CP is not set +# CONFIG_8139TOO is not set +CONFIG_R8169=y +CONFIG_NET_VENDOR_RENESAS=y +CONFIG_NET_VENDOR_RDC=y +# CONFIG_R6040 is not set +CONFIG_NET_VENDOR_ROCKER=y +CONFIG_NET_VENDOR_SAMSUNG=y +# CONFIG_SXGBE_ETH is not set +# CONFIG_NET_VENDOR_SEEQ is not set +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 is not set +# CONFIG_NET_VENDOR_STMICRO 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_TEHUTI=y +# CONFIG_TEHUTI is not set +CONFIG_NET_VENDOR_TI=y +# CONFIG_TI_CPSW_ALE is not set +# CONFIG_TLAN is not set +# CONFIG_NET_VENDOR_VIA is not set +# CONFIG_NET_VENDOR_WIZNET is not set +CONFIG_NET_VENDOR_XILINX=y +# CONFIG_XILINX_EMACLITE is not set +# CONFIG_XILINX_AXI_EMAC is not set +# CONFIG_XILINX_TSN is not set +CONFIG_NET_VENDOR_SYNOPSYS=y +# CONFIG_DWC_XLGMAC is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +CONFIG_MDIO_DEVICE=y +CONFIG_MDIO_BUS=y +# CONFIG_MDIO_BCM_UNIMAC is not set +CONFIG_MDIO_BITBANG=y +# CONFIG_MDIO_BUS_MUX_GPIO is not set +# CONFIG_MDIO_BUS_MUX_MMIOREG is not set +# CONFIG_MDIO_GPIO is not set +# CONFIG_MDIO_HISI_FEMAC is not set +CONFIG_PHYLIB=y +CONFIG_SWPHY=y +# CONFIG_LED_TRIGGER_PHY is not set + +# +# MII PHY device drivers +# +# CONFIG_AMD_PHY is not set +# CONFIG_AQUANTIA_PHY is not set +# CONFIG_AT803X_PHY is not set +# CONFIG_BCM7XXX_PHY is not set +# CONFIG_BCM87XX_PHY is not set +# CONFIG_BROADCOM_PHY is not set +# CONFIG_CICADA_PHY is not set +# CONFIG_CORTINA_PHY is not set +# CONFIG_DAVICOM_PHY is not set +# CONFIG_DP83848_PHY is not set +# CONFIG_DP83867_PHY is not set +CONFIG_FIXED_PHY=y +# CONFIG_ICPLUS_PHY is not set +# CONFIG_INTEL_XWAY_PHY is not set +# CONFIG_LSI_ET1011C_PHY is not set +# CONFIG_LXT_PHY is not set +CONFIG_MARVELL_PHY=y +# CONFIG_MARVELL_10G_PHY is not set +# CONFIG_MICREL_PHY is not set +# CONFIG_MICROCHIP_PHY is not set +# CONFIG_MICROSEMI_PHY is not set +# CONFIG_NATIONAL_PHY is not set +# CONFIG_QSEMI_PHY is not set +# CONFIG_REALTEK_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_VITESSE_PHY=y +# CONFIG_XILINX_PHY is not set +# CONFIG_XILINX_GMII2RGMII is not set +# CONFIG_MICREL_KS8995MA is not set +# 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_WIRELESS_WDS is not set +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_CISCO=y +CONFIG_WLAN_VENDOR_INTEL=y +CONFIG_WLAN_VENDOR_INTERSIL=y +# CONFIG_HOSTAP is not set +# CONFIG_PRISM54 is not set +CONFIG_WLAN_VENDOR_MARVELL=y +CONFIG_WLAN_VENDOR_MEDIATEK=y +CONFIG_WLAN_VENDOR_RALINK=y +CONFIG_WLAN_VENDOR_REALTEK=y +CONFIG_WLAN_VENDOR_RSI=y +CONFIG_WLAN_VENDOR_ST=y +CONFIG_WLAN_VENDOR_TI=y +CONFIG_WLAN_VENDOR_ZYDAS=y +CONFIG_WLAN_VENDOR_QUANTENNA=y + +# +# Enable WiMAX (Networking options) to see the WiMAX drivers +# +# CONFIG_WAN is not set +# CONFIG_VMXNET3 is not set +# CONFIG_ISDN is not set +# CONFIG_NVM is not set + +# +# Input device support +# +CONFIG_INPUT=y +CONFIG_INPUT_LEDS=y +# CONFIG_INPUT_FF_MEMLESS is not set +CONFIG_INPUT_POLLDEV=y +CONFIG_INPUT_SPARSEKMAP=y +# CONFIG_INPUT_MATRIXKMAP is not set + +# +# Userland interfaces +# +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_PSAUX=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +# CONFIG_INPUT_JOYDEV is not set +CONFIG_INPUT_EVDEV=y +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +# CONFIG_KEYBOARD_ADC is not set +# CONFIG_KEYBOARD_ADP5588 is not set +# CONFIG_KEYBOARD_ADP5589 is not set +CONFIG_KEYBOARD_ATKBD=y +# 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=y +CONFIG_KEYBOARD_GPIO_POLLED=y +# CONFIG_KEYBOARD_TCA6416 is not set +# CONFIG_KEYBOARD_TCA8418 is not set +# CONFIG_KEYBOARD_MATRIX is not set +# CONFIG_KEYBOARD_LM8323 is not set +# CONFIG_KEYBOARD_LM8333 is not set +# CONFIG_KEYBOARD_MAX7359 is not set +# CONFIG_KEYBOARD_MCS is not set +# CONFIG_KEYBOARD_MPR121 is not set +# CONFIG_KEYBOARD_NEWTON is not set +# CONFIG_KEYBOARD_OPENCORES is not set +# CONFIG_KEYBOARD_SAMSUNG is not set +# CONFIG_KEYBOARD_STOWAWAY is not set +# CONFIG_KEYBOARD_SUNKBD is not set +# CONFIG_KEYBOARD_OMAP4 is not set +# CONFIG_KEYBOARD_TM2_TOUCHKEY is not set +# CONFIG_KEYBOARD_XTKBD is not set +# CONFIG_KEYBOARD_CAP11XX is not set +# CONFIG_KEYBOARD_BCM 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_GPIO_PS2 is not set +# CONFIG_USERIO is not set +# CONFIG_GAMEPORT is not set + +# +# Character devices +# +CONFIG_TTY=y +CONFIG_VT=y +CONFIG_CONSOLE_TRANSLATIONS=y +CONFIG_VT_CONSOLE=y +CONFIG_VT_CONSOLE_SLEEP=y +CONFIG_HW_CONSOLE=y +CONFIG_VT_HW_CONSOLE_BINDING=y +CONFIG_UNIX98_PTYS=y +# CONFIG_LEGACY_PTYS is not set +# CONFIG_SERIAL_NONSTANDARD is not set +# CONFIG_NOZOMI is not set +# CONFIG_N_GSM is not set +# CONFIG_TRACE_SINK is not set +CONFIG_DEVMEM=y +# CONFIG_DEVKMEM is not set + +# +# Serial drivers +# +CONFIG_SERIAL_EARLYCON=y +# CONFIG_SERIAL_8250 is not set + +# +# Non-8250 serial port support +# +# CONFIG_SERIAL_AMBA_PL010 is not set +# CONFIG_SERIAL_AMBA_PL011 is not set +# CONFIG_SERIAL_EARLYCON_ARM_SEMIHOST is not set +# 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_SCCNXP is not set +# CONFIG_SERIAL_SC16IS7XX is not set +# CONFIG_SERIAL_BCM63XX is not set +# CONFIG_SERIAL_ALTERA_JTAGUART is not set +# CONFIG_SERIAL_ALTERA_UART is not set +# CONFIG_SERIAL_IFX6X60 is not set +CONFIG_SERIAL_XILINX_PS_UART=y +CONFIG_SERIAL_XILINX_PS_UART_CONSOLE=y +# CONFIG_SERIAL_ARC is not set +# CONFIG_SERIAL_RP2 is not set +# CONFIG_SERIAL_FSL_LPUART is not set +# CONFIG_SERIAL_CONEXANT_DIGICOLOR is not set +# CONFIG_SERIAL_ST_ASC is not set +# CONFIG_SERIAL_DEV_BUS is not set +# CONFIG_TTY_PRINTK is not set +# CONFIG_HVC_DCC is not set +# CONFIG_VIRTIO_CONSOLE is not set +# CONFIG_IPMI_HANDLER is not set +# CONFIG_HW_RANDOM is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set +# CONFIG_RAW_DRIVER is not set +# CONFIG_TCG_TPM is not set +CONFIG_DEVPORT=y +# CONFIG_XILLYBUS is not set + +# +# I2C support +# +CONFIG_I2C=y +CONFIG_I2C_BOARDINFO=y +CONFIG_I2C_COMPAT=y +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_MUX=y + +# +# Multiplexer I2C Chip support +# +# CONFIG_I2C_ARB_GPIO_CHALLENGE is not set +# CONFIG_I2C_MUX_GPIO is not set +# CONFIG_I2C_MUX_GPMUX is not set +# CONFIG_I2C_MUX_LTC4306 is not set +# CONFIG_I2C_MUX_PCA9541 is not set +CONFIG_I2C_MUX_PCA954x=y +# CONFIG_I2C_MUX_PINCTRL is not set +# CONFIG_I2C_MUX_REG is not set +# CONFIG_I2C_DEMUX_PINCTRL is not set +# CONFIG_I2C_MUX_MLXCPLD is not set +CONFIG_I2C_HELPER_AUTO=y +CONFIG_I2C_ALGOBIT=y + +# +# 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_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_PLATFORM is not set +# CONFIG_I2C_DESIGNWARE_PCI is not set +# CONFIG_I2C_EMEV2 is not set +# CONFIG_I2C_GPIO is not set +# CONFIG_I2C_NOMADIK is not set +# CONFIG_I2C_OCORES is not set +# CONFIG_I2C_PCA_PLATFORM is not set +# CONFIG_I2C_PXA_PCI 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_PARPORT_LIGHT 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_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 +CONFIG_SPI=y +# CONFIG_SPI_DEBUG is not set +CONFIG_SPI_MASTER=y + +# +# SPI Master Controller Drivers +# +# CONFIG_SPI_ALTERA is not set +# CONFIG_SPI_AXI_SPI_ENGINE is not set +CONFIG_SPI_BITBANG=y +CONFIG_SPI_CADENCE=y +# CONFIG_SPI_DESIGNWARE is not set +# CONFIG_SPI_GPIO is not set +# CONFIG_SPI_FSL_SPI is not set +# CONFIG_SPI_OC_TINY is not set +# CONFIG_SPI_PL022 is not set +# CONFIG_SPI_PXA2XX is not set +# CONFIG_SPI_PXA2XX_PCI is not set +# CONFIG_SPI_ROCKCHIP is not set +# CONFIG_SPI_SC18IS602 is not set +# CONFIG_SPI_XCOMM is not set +CONFIG_SPI_XILINX=y +CONFIG_SPI_ZYNQ_QSPI=y +# CONFIG_SPI_ZYNQ_QSPI_DUAL_STACKED is not set +# CONFIG_SPI_ZYNQMP_GQSPI is not set + +# +# SPI Protocol Masters +# +CONFIG_SPI_SPIDEV=y +# 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=y +# CONFIG_PPS_DEBUG is not set + +# +# PPS clients support +# +# CONFIG_PPS_CLIENT_KTIMER is not set +# CONFIG_PPS_CLIENT_LDISC is not set +# CONFIG_PPS_CLIENT_GPIO is not set + +# +# PPS generators support +# + +# +# PTP clock support +# +CONFIG_PTP_1588_CLOCK=y + +# +# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks. +# +CONFIG_PINCTRL=y + +# +# Pin controllers +# +CONFIG_PINMUX=y +CONFIG_PINCONF=y +CONFIG_GENERIC_PINCONF=y +# CONFIG_DEBUG_PINCTRL is not set +# CONFIG_PINCTRL_AMD is not set +# CONFIG_PINCTRL_MCP23S08 is not set +# CONFIG_PINCTRL_SINGLE is not set +# CONFIG_PINCTRL_SX150X is not set +CONFIG_PINCTRL_ZYNQ=y +CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y +CONFIG_GPIOLIB=y +CONFIG_OF_GPIO=y +CONFIG_GPIOLIB_IRQCHIP=y +# CONFIG_DEBUG_GPIO is not set +CONFIG_GPIO_SYSFS=y +CONFIG_GPIO_GENERIC=y + +# +# Memory mapped GPIO drivers +# +# CONFIG_GPIO_74XX_MMIO is not set +# CONFIG_GPIO_ALTERA is not set +# CONFIG_GPIO_DWAPB is not set +# CONFIG_GPIO_FTGPIO010 is not set +CONFIG_GPIO_GENERIC_PLATFORM=y +# CONFIG_GPIO_GRGPIO is not set +# CONFIG_GPIO_MOCKUP is not set +# CONFIG_GPIO_MPC8XXX is not set +# CONFIG_GPIO_PL061 is not set +# CONFIG_GPIO_SYSCON is not set +CONFIG_GPIO_XILINX=y +# CONFIG_GPIO_ZEVIO is not set +CONFIG_GPIO_ZYNQ=y + +# +# I2C GPIO expanders +# +# CONFIG_GPIO_ADP5588 is not set +# CONFIG_GPIO_ADNP is not set +# CONFIG_GPIO_MAX7300 is not set +# CONFIG_GPIO_MAX732X is not set +# CONFIG_GPIO_PCA953X is not set +# CONFIG_GPIO_PCF857X is not set +# CONFIG_GPIO_SX150X is not set +# CONFIG_GPIO_TPIC2810 is not set + +# +# MFD GPIO expanders +# +# CONFIG_HTC_EGPIO is not set + +# +# PCI GPIO expanders +# +# CONFIG_GPIO_BT8XX is not set +# CONFIG_GPIO_PCI_IDIO_16 is not set +# CONFIG_GPIO_RDC321X is not set + +# +# SPI GPIO expanders +# +# CONFIG_GPIO_74X164 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 + +# +# USB GPIO expanders +# +# CONFIG_W1 is not set +# CONFIG_POWER_AVS is not set +CONFIG_POWER_RESET=y +# CONFIG_POWER_RESET_BRCMKONA is not set +# CONFIG_POWER_RESET_BRCMSTB is not set +# CONFIG_POWER_RESET_GPIO is not set +# CONFIG_POWER_RESET_GPIO_RESTART is not set +# CONFIG_POWER_RESET_LTC2952 is not set +# CONFIG_POWER_RESET_RESTART is not set +# CONFIG_POWER_RESET_VERSATILE is not set +# CONFIG_POWER_RESET_SYSCON is not set +# CONFIG_POWER_RESET_SYSCON_POWEROFF is not set +# CONFIG_SYSCON_REBOOT_MODE is not set +CONFIG_POWER_SUPPLY=y +# CONFIG_POWER_SUPPLY_DEBUG is not set +# CONFIG_PDA_POWER is not set +# CONFIG_GENERIC_ADC_BATTERY is not set +# CONFIG_TEST_POWER is not set +# CONFIG_BATTERY_DS2780 is not set +# CONFIG_BATTERY_DS2781 is not set +# CONFIG_BATTERY_DS2782 is not set +# CONFIG_BATTERY_LEGO_EV3 is not set +# CONFIG_BATTERY_SBS is not set +# CONFIG_CHARGER_SBS is not set +# CONFIG_BATTERY_BQ27XXX is not set +# CONFIG_BATTERY_MAX17040 is not set +# CONFIG_BATTERY_MAX17042 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_LTC3651 is not set +# CONFIG_CHARGER_DETECTOR_MAX14656 is not set +# CONFIG_CHARGER_BQ2415X is not set +# CONFIG_CHARGER_BQ24257 is not set +# CONFIG_CHARGER_BQ24735 is not set +# CONFIG_CHARGER_BQ25890 is not set +# CONFIG_CHARGER_SMB347 is not set +# CONFIG_BATTERY_GAUGE_LTC2941 is not set +# CONFIG_CHARGER_RT9455 is not set +CONFIG_HWMON=y +# CONFIG_HWMON_VID is not set +# 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_ADM1021 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_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_ASC7621 is not set +# CONFIG_SENSORS_ASPEED is not set +# CONFIG_SENSORS_ATXP1 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_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_IIO_HWMON is not set +# CONFIG_SENSORS_IT87 is not set +# CONFIG_SENSORS_JC42 is not set +# CONFIG_SENSORS_POWR1220 is not set +# CONFIG_SENSORS_LINEAGE is not set +# CONFIG_SENSORS_LTC2945 is not set +# CONFIG_SENSORS_LTC2990 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_MAX1111 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_MAX6639 is not set +# CONFIG_SENSORS_MAX6642 is not set +# CONFIG_SENSORS_MAX6650 is not set +# CONFIG_SENSORS_MAX6697 is not set +# CONFIG_SENSORS_MAX31790 is not set +# CONFIG_SENSORS_MCP3021 is not set +# CONFIG_SENSORS_TC654 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_NCT7802 is not set +# CONFIG_SENSORS_NCT7904 is not set +# CONFIG_SENSORS_PCF8591 is not set +CONFIG_PMBUS=y +CONFIG_SENSORS_PMBUS=y +# CONFIG_SENSORS_ADM1275 is not set +# CONFIG_SENSORS_IBM_CFFPS is not set +# CONFIG_SENSORS_IR35221 is not set +# CONFIG_SENSORS_LM25066 is not set +# CONFIG_SENSORS_LTC2978 is not set +# CONFIG_SENSORS_LTC3815 is not set +# CONFIG_SENSORS_MAX16064 is not set +# CONFIG_SENSORS_MAX20751 is not set +# CONFIG_SENSORS_MAX34440 is not set +# CONFIG_SENSORS_MAX8688 is not set +# CONFIG_SENSORS_TPS40422 is not set +# CONFIG_SENSORS_TPS53679 is not set +CONFIG_SENSORS_UCD9000=y +CONFIG_SENSORS_UCD9200=y +# CONFIG_SENSORS_ZL6100 is not set +# CONFIG_SENSORS_SHT15 is not set +# CONFIG_SENSORS_SHT21 is not set +# CONFIG_SENSORS_SHT3x 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_EMC6W201 is not set +# CONFIG_SENSORS_SMSC47M1 is not set +# CONFIG_SENSORS_SMSC47M192 is not set +# CONFIG_SENSORS_SMSC47B397 is not set +# CONFIG_SENSORS_SCH56XX_COMMON is not set +# CONFIG_SENSORS_SCH5627 is not set +# CONFIG_SENSORS_SCH5636 is not set +# CONFIG_SENSORS_STTS751 is not set +# CONFIG_SENSORS_SMM665 is not set +# CONFIG_SENSORS_ADC128D818 is not set +# CONFIG_SENSORS_ADS1015 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_INA3221 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_VIA686A is not set +# CONFIG_SENSORS_VT1211 is not set +# CONFIG_SENSORS_VT8231 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_EMERGENCY_POWEROFF_DELAY_MS=0 +CONFIG_THERMAL_HWMON=y +CONFIG_THERMAL_OF=y +CONFIG_THERMAL_WRITABLE_TRIPS=y +CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y +# CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set +# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set +# CONFIG_THERMAL_DEFAULT_GOV_POWER_ALLOCATOR 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=y +# CONFIG_THERMAL_GOV_POWER_ALLOCATOR is not set +CONFIG_CPU_THERMAL=y +# CONFIG_THERMAL_EMULATION is not set +# CONFIG_QORIQ_THERMAL is not set + +# +# ACPI INT340X thermal drivers +# +# 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_SYSFS is not set + +# +# Watchdog Device Drivers +# +# CONFIG_SOFT_WATCHDOG is not set +# CONFIG_GPIO_WATCHDOG is not set +CONFIG_XILINX_WATCHDOG=y +# CONFIG_ZIIRAVE_WATCHDOG is not set +# CONFIG_ARM_SP805_WATCHDOG is not set +CONFIG_CADENCE_WATCHDOG=y +# CONFIG_DW_WATCHDOG is not set +# 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 + +# +# PCI-based Watchdog Cards +# +# CONFIG_PCIPCWATCHDOG is not set +# CONFIG_WDTPCI is not set + +# +# USB-based Watchdog Cards +# +# CONFIG_USBPCWATCHDOG is not set + +# +# Watchdog Pretimeout Governors +# +# CONFIG_WATCHDOG_PRETIMEOUT_GOV is not set +CONFIG_SSB_POSSIBLE=y + +# +# Sonics Silicon Backplane +# +# CONFIG_SSB is not set +CONFIG_BCMA_POSSIBLE=y +# CONFIG_BCMA is not set + +# +# Multifunction device drivers +# +# CONFIG_MFD_CORE is not set +# CONFIG_MFD_ACT8945A is not set +# CONFIG_MFD_AS3711 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_I2C is not set +# CONFIG_MFD_CROS_EC is not set +# CONFIG_MFD_ASIC3 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_MC13XXX_SPI is not set +# CONFIG_MFD_MC13XXX_I2C is not set +# CONFIG_MFD_HI6421_PMIC is not set +# CONFIG_HTC_PASIC3 is not set +# CONFIG_HTC_I2CPLD is not set +# CONFIG_LPC_ICH is not set +# CONFIG_LPC_SCH 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_MAX14577 is not set +# CONFIG_MFD_MAX77620 is not set +# CONFIG_MFD_MAX77686 is not set +# CONFIG_MFD_MAX77693 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_MT6397 is not set +# CONFIG_MFD_MENF21BMC is not set +# CONFIG_EZX_PCAP is not set +# CONFIG_MFD_CPCAP is not set +# CONFIG_MFD_VIPERBOARD is not set +# CONFIG_MFD_RETU is not set +# CONFIG_MFD_PCF50633 is not set +# CONFIG_MFD_PM8XXX is not set +# CONFIG_MFD_RDC321X is not set +# CONFIG_MFD_RTSX_PCI is not set +# CONFIG_MFD_RT5033 is not set +# CONFIG_MFD_RTSX_USB is not set +# CONFIG_MFD_RC5T583 is not set +# CONFIG_MFD_RK808 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_SMSC is not set +# CONFIG_ABX500_CORE is not set +# CONFIG_MFD_STMPE is not set +CONFIG_MFD_SYSCON=y +# CONFIG_MFD_TI_AM335X_TSCADC is not set +# 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_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_TPS80031 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_TMIO is not set +# CONFIG_MFD_T7L66XB is not set +# CONFIG_MFD_TC6387XB is not set +# CONFIG_MFD_TC6393XB is not set +# CONFIG_MFD_VX855 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_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_ACT8865 is not set +# CONFIG_REGULATOR_AD5398 is not set +# CONFIG_REGULATOR_ANATOP is not set +# CONFIG_REGULATOR_DA9210 is not set +# CONFIG_REGULATOR_DA9211 is not set +# CONFIG_REGULATOR_FAN53555 is not set +# CONFIG_REGULATOR_GPIO is not set +# 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_MAX8649 is not set +# CONFIG_REGULATOR_MAX8660 is not set +# CONFIG_REGULATOR_MAX8952 is not set +# CONFIG_REGULATOR_MAX8973 is not set +# CONFIG_REGULATOR_MT6311 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_TPS51632 is not set +# CONFIG_REGULATOR_TPS62360 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=y +CONFIG_RC_MAP=y +CONFIG_RC_DECODERS=y +# CONFIG_LIRC is not set +CONFIG_IR_NEC_DECODER=y +CONFIG_IR_RC5_DECODER=y +CONFIG_IR_RC6_DECODER=y +CONFIG_IR_JVC_DECODER=y +CONFIG_IR_SONY_DECODER=y +CONFIG_IR_SANYO_DECODER=y +CONFIG_IR_SHARP_DECODER=y +CONFIG_IR_MCE_KBD_DECODER=y +CONFIG_IR_XMP_DECODER=y +# CONFIG_RC_DEVICES is not set +CONFIG_MEDIA_SUPPORT=y + +# +# Multimedia core support +# +CONFIG_MEDIA_CAMERA_SUPPORT=y +# CONFIG_MEDIA_ANALOG_TV_SUPPORT is not set +# CONFIG_MEDIA_DIGITAL_TV_SUPPORT is not set +# CONFIG_MEDIA_RADIO_SUPPORT is not set +# CONFIG_MEDIA_SDR_SUPPORT is not set +# CONFIG_MEDIA_CEC_SUPPORT is not set +CONFIG_MEDIA_CONTROLLER=y +CONFIG_VIDEO_DEV=y +CONFIG_VIDEO_V4L2_SUBDEV_API=y +CONFIG_VIDEO_V4L2=y +# CONFIG_VIDEO_ADV_DEBUG is not set +# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set +# CONFIG_VIDEO_PCI_SKELETON is not set +CONFIG_V4L2_FWNODE=y +CONFIG_VIDEOBUF2_CORE=y +CONFIG_VIDEOBUF2_MEMOPS=y +CONFIG_VIDEOBUF2_DMA_CONTIG=y +# CONFIG_TTPCI_EEPROM is not set + +# +# Media drivers +# +# CONFIG_MEDIA_USB_SUPPORT is not set +# CONFIG_MEDIA_PCI_SUPPORT is not set +CONFIG_V4L_PLATFORM_DRIVERS=y +# CONFIG_VIDEO_CAFE_CCIC is not set +# CONFIG_VIDEO_MUX is not set +# CONFIG_SOC_CAMERA is not set +CONFIG_VIDEO_XILINX=y +# CONFIG_VIDEO_XILINX_AXI4S_SWITCH is not set +CONFIG_VIDEO_XILINX_CFA=y +CONFIG_VIDEO_XILINX_CRESAMPLE=y +# CONFIG_VIDEO_XILINX_DEMOSAIC is not set +# CONFIG_VIDEO_XILINX_GAMMA is not set +# CONFIG_VIDEO_XILINX_HLS is not set +CONFIG_VIDEO_XILINX_REMAPPER=y +CONFIG_VIDEO_XILINX_RGB2YUV=y +CONFIG_VIDEO_XILINX_SCALER=y +# CONFIG_VIDEO_XILINX_MULTISCALER is not set +# CONFIG_VIDEO_XILINX_SDIRXSS is not set +CONFIG_VIDEO_XILINX_SWITCH=y +CONFIG_VIDEO_XILINX_TPG=y +# CONFIG_VIDEO_XILINX_VPSS_CSC is not set +# CONFIG_VIDEO_XILINX_VPSS_SCALER is not set +CONFIG_VIDEO_XILINX_VTC=y +# CONFIG_VIDEO_XILINX_CSI2RXSS is not set +# CONFIG_VIDEO_XILINX_SCD is not set +# CONFIG_VIDEO_XILINX_M2M is not set +# CONFIG_V4L_MEM2MEM_DRIVERS is not set +# CONFIG_V4L_TEST_DRIVERS is not set + +# +# Supported MMC/SDIO adapters +# +# CONFIG_CYPRESS_FIRMWARE is not set + +# +# Media ancillary drivers (tuners, sensors, i2c, spi, frontends) +# +# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set +CONFIG_VIDEO_IR_I2C=y + +# +# I2C Encoders, decoders, sensors and other helper chips +# + +# +# Audio decoders, processors and mixers +# +# CONFIG_VIDEO_TVAUDIO 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_MSP3400 is not set +# CONFIG_VIDEO_CS3308 is not set +# CONFIG_VIDEO_CS5345 is not set +# CONFIG_VIDEO_CS53L32A is not set +# CONFIG_VIDEO_TLV320AIC23B is not set +# CONFIG_VIDEO_UDA1342 is not set +# CONFIG_VIDEO_WM8775 is not set +# CONFIG_VIDEO_WM8739 is not set +# CONFIG_VIDEO_VP27SMPX is not set +# CONFIG_VIDEO_SONY_BTF_MPX is not set + +# +# RDS decoders +# +# CONFIG_VIDEO_SAA6588 is not set + +# +# Video decoders +# +# CONFIG_VIDEO_ADV7180 is not set +# CONFIG_VIDEO_ADV7183 is not set +# CONFIG_VIDEO_ADV748X is not set +CONFIG_VIDEO_ADV7604=y +# CONFIG_VIDEO_ADV7604_CEC 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_KS0127 is not set +# CONFIG_VIDEO_ML86V7667 is not set +# CONFIG_VIDEO_AD5820 is not set +# CONFIG_VIDEO_DW9714 is not set +# CONFIG_VIDEO_SAA7110 is not set +# CONFIG_VIDEO_SAA711X is not set +# CONFIG_VIDEO_TC358743 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_TW9903 is not set +# CONFIG_VIDEO_TW9906 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 + +# +# Video encoders +# +# CONFIG_VIDEO_SAA7127 is not set +# CONFIG_VIDEO_SAA7185 is not set +# 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_AD9389B is not set +# CONFIG_VIDEO_AK881X is not set +# CONFIG_VIDEO_THS8200 is not set + +# +# Camera sensor devices +# +# CONFIG_VIDEO_IMX274 is not set +# CONFIG_VIDEO_OV2640 is not set +# CONFIG_VIDEO_OV2659 is not set +# CONFIG_VIDEO_OV5640 is not set +# CONFIG_VIDEO_OV5645 is not set +# CONFIG_VIDEO_OV5647 is not set +# CONFIG_VIDEO_OV6650 is not set +# CONFIG_VIDEO_OV5670 is not set +# CONFIG_VIDEO_OV7640 is not set +# CONFIG_VIDEO_OV7670 is not set +# CONFIG_VIDEO_OV9650 is not set +# CONFIG_VIDEO_OV13858 is not set +# CONFIG_VIDEO_VS6624 is not set +# CONFIG_VIDEO_MT9M032 is not set +# CONFIG_VIDEO_MT9M111 is not set +# CONFIG_VIDEO_MT9P031 is not set +# CONFIG_VIDEO_MT9T001 is not set +# CONFIG_VIDEO_MT9V011 is not set +# CONFIG_VIDEO_MT9V032 is not set +# CONFIG_VIDEO_SR030PC30 is not set +# CONFIG_VIDEO_NOON010PC30 is not set +# CONFIG_VIDEO_M5MOLS is not set +# CONFIG_VIDEO_S5K6AA is not set +# CONFIG_VIDEO_S5K6A3 is not set +# CONFIG_VIDEO_S5K4ECGX is not set +# CONFIG_VIDEO_S5K5BAF is not set +# CONFIG_VIDEO_SMIAPP is not set +# CONFIG_VIDEO_ET8EK8 is not set +# CONFIG_VIDEO_S5C73M3 is not set + +# +# Flash devices +# +# CONFIG_VIDEO_ADP1653 is not set +# CONFIG_VIDEO_AS3645A is not set +# CONFIG_VIDEO_LM3560 is not set +# CONFIG_VIDEO_LM3646 is not set + +# +# Video improvement chips +# +# CONFIG_VIDEO_UPD64031A is not set +# CONFIG_VIDEO_UPD64083 is not set + +# +# Audio/Video compression chips +# +# CONFIG_VIDEO_SAA6752HS is not set + +# +# SDR tuner chips +# + +# +# Miscellaneous helper chips +# +# CONFIG_VIDEO_THS7303 is not set +# CONFIG_VIDEO_M52790 is not set + +# +# Sensors used on soc_camera driver +# + +# +# SPI helper chips +# +# CONFIG_VIDEO_GS1662 is not set + +# +# Customise DVB Frontends +# + +# +# Tools to develop new frontends +# + +# +# Graphics support +# +CONFIG_VGA_ARB=y +CONFIG_VGA_ARB_MAX_GPUS=16 +# CONFIG_IMX_IPUV3_CORE is not set +CONFIG_DRM=y +# CONFIG_DRM_DP_AUX_CHARDEV is not set +# CONFIG_DRM_DEBUG_MM is not set +# CONFIG_DRM_DEBUG_MM_SELFTEST is not set +CONFIG_DRM_KMS_HELPER=y +CONFIG_DRM_KMS_FB_HELPER=y +CONFIG_DRM_FBDEV_EMULATION=y +CONFIG_DRM_FBDEV_OVERALLOC=100 +# CONFIG_DRM_LOAD_EDID_FIRMWARE is not set +CONFIG_DRM_GEM_CMA_HELPER=y +CONFIG_DRM_KMS_CMA_HELPER=y + +# +# I2C encoder or helper chips +# +# CONFIG_DRM_I2C_ADV7511_LEGACY is not set +# CONFIG_DRM_I2C_CH7006 is not set +# CONFIG_DRM_I2C_SIL164 is not set +# CONFIG_DRM_I2C_NXP_TDA998X is not set +# CONFIG_DRM_HDLCD is not set +# CONFIG_DRM_MALI_DISPLAY is not set +# CONFIG_DRM_RADEON is not set +# CONFIG_DRM_AMDGPU is not set + +# +# ACP (Audio CoProcessor) Configuration +# +# CONFIG_DRM_NOUVEAU is not set +# CONFIG_DRM_VGEM is not set +# CONFIG_DRM_EXYNOS is not set +# CONFIG_DRM_UDL is not set +# CONFIG_DRM_AST is not set +# CONFIG_DRM_MGAG200 is not set +# CONFIG_DRM_CIRRUS_QEMU is not set +# CONFIG_DRM_ARMADA is not set +# CONFIG_DRM_RCAR_DW_HDMI is not set +# CONFIG_DRM_OMAP is not set +# CONFIG_DRM_TILCDC is not set +# CONFIG_DRM_QXL is not set +# CONFIG_DRM_BOCHS is not set +# CONFIG_DRM_VIRTIO_GPU is not set +# CONFIG_DRM_FSL_DCU is not set +# CONFIG_DRM_STM is not set +CONFIG_DRM_PANEL=y + +# +# Display Panels +# +# CONFIG_DRM_PANEL_SAMSUNG_LD9040 is not set +# CONFIG_DRM_PANEL_LG_LG4573 is not set +# CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0 is not set +CONFIG_DRM_BRIDGE=y +CONFIG_DRM_PANEL_BRIDGE=y + +# +# Display Interface Bridges +# +# CONFIG_DRM_ANALOGIX_ANX78XX is not set +# CONFIG_DRM_DUMB_VGA_DAC is not set +# CONFIG_DRM_LVDS_ENCODER is not set +# CONFIG_DRM_MEGACHIPS_STDPXXXX_GE_B850V3_FW is not set +# CONFIG_DRM_NXP_PTN3460 is not set +# CONFIG_DRM_PARADE_PS8622 is not set +# CONFIG_DRM_SIL_SII8620 is not set +# CONFIG_DRM_SII902X is not set +# CONFIG_DRM_TOSHIBA_TC358767 is not set +# CONFIG_DRM_TI_TFP410 is not set +# CONFIG_DRM_I2C_ADV7511 is not set +# CONFIG_DRM_STI is not set +CONFIG_DRM_XILINX=y +CONFIG_DRM_XILINX_DP=y +CONFIG_DRM_XILINX_DP_SUB=y +# CONFIG_DRM_XILINX_MIPI_DSI is not set +# CONFIG_DRM_XILINX_SDI is not set +# CONFIG_DRM_ZOCL is not set +# CONFIG_DRM_ARCPGU is not set +# CONFIG_DRM_HISI_HIBMC is not set +# CONFIG_DRM_MXSFB is not set +# CONFIG_DRM_TINYDRM is not set +# CONFIG_DRM_PL111 is not set +# CONFIG_DRM_XLNX is not set +# CONFIG_DRM_LEGACY is not set +# CONFIG_DRM_LIB_RANDOM is not set + +# +# Frame buffer Devices +# +CONFIG_FB=y +# CONFIG_FIRMWARE_EDID is not set +CONFIG_FB_CMDLINE=y +CONFIG_FB_NOTIFY=y +# CONFIG_FB_DDC is not set +# CONFIG_FB_BOOT_VESA_SUPPORT is not set +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_IMAGEBLIT=y +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set +CONFIG_FB_SYS_FILLRECT=y +CONFIG_FB_SYS_COPYAREA=y +CONFIG_FB_SYS_IMAGEBLIT=y +# CONFIG_FB_PROVIDE_GET_FB_UNMAPPED_AREA is not set +# CONFIG_FB_FOREIGN_ENDIAN is not set +CONFIG_FB_SYS_FOPS=y +CONFIG_FB_DEFERRED_IO=y +# CONFIG_FB_SVGALIB is not set +# CONFIG_FB_MACMODES is not set +# CONFIG_FB_BACKLIGHT is not set +# CONFIG_FB_MODE_HELPERS is not set +# CONFIG_FB_TILEBLITTING is not set + +# +# Frame buffer hardware drivers +# +# CONFIG_FB_CIRRUS is not set +# CONFIG_FB_PM2 is not set +# CONFIG_FB_ARMCLCD is not set +# CONFIG_FB_CYBER2000 is not set +# CONFIG_FB_ASILIANT is not set +# CONFIG_FB_IMSTT is not set +# CONFIG_FB_UVESA 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_XILINX is not set +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FB_METRONOME is not set +# CONFIG_FB_MB862XX is not set +# CONFIG_FB_BROADSHEET is not set +# CONFIG_FB_AUO_K190X is not set +# CONFIG_FB_SIMPLE is not set +# CONFIG_FB_SSD1307 is not set +# CONFIG_FB_SM712 is not set +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set +# CONFIG_VGASTATE is not set +CONFIG_HDMI=y + +# +# Console display driver support +# +CONFIG_DUMMY_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y +# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set +# CONFIG_LOGO is not set +CONFIG_SOUND=y +# CONFIG_SOUND_OSS_CORE is not set +CONFIG_SND=y +CONFIG_SND_TIMER=y +CONFIG_SND_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_VERBOSE_PRINTK is not set +# CONFIG_SND_DEBUG is not set +# CONFIG_SND_SEQUENCER is not set +# CONFIG_SND_OPL3_LIB_SEQ is not set +# CONFIG_SND_OPL4_LIB_SEQ is not set +CONFIG_SND_DRIVERS=y +# CONFIG_SND_DUMMY is not set +# CONFIG_SND_ALOOP 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_EMU10K1_SEQ 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 +CONFIG_SND_HDA_PREALLOC_SIZE=64 +CONFIG_SND_ARM=y +# CONFIG_SND_ARMAACI is not set +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_ADI is not set +# CONFIG_SND_SOC_AMD_ACP is not set +# CONFIG_SND_ATMEL_SOC is not set +# CONFIG_SND_DESIGNWARE_I2S 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_SSI is not set +# CONFIG_SND_SOC_FSL_SPDIF is not set +# CONFIG_SND_SOC_FSL_ESAI is not set +# CONFIG_SND_SOC_IMX_AUDMUX is not set +# CONFIG_SND_I2S_HI6210_I2S is not set +# CONFIG_SND_SOC_IMG is not set + +# +# STMicroelectronics STM32 SOC audio support +# +# CONFIG_SND_SOC_XILINX_DP is not set +# CONFIG_SND_SOC_XILINX_AUDIO_FORMATTER is not set +# CONFIG_SND_SOC_XILINX_I2S is not set +# CONFIG_SND_SOC_XTFPGA_I2S is not set +# CONFIG_ZX_TDM is not set +CONFIG_SND_SOC_I2C_AND_SPI=y + +# +# CODEC drivers +# +# CONFIG_SND_SOC_AC97_CODEC 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_AK4104 is not set +# CONFIG_SND_SOC_AK4554 is not set +# CONFIG_SND_SOC_AK4613 is not set +# CONFIG_SND_SOC_AK4642 is not set +# CONFIG_SND_SOC_AK5386 is not set +# CONFIG_SND_SOC_ALC5623 is not set +# CONFIG_SND_SOC_BT_SCO 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_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_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_CS4349 is not set +# CONFIG_SND_SOC_CS53L30 is not set +# CONFIG_SND_SOC_DIO2125 is not set +# CONFIG_SND_SOC_ES7134 is not set +# CONFIG_SND_SOC_ES8316 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_INNO_RK3036 is not set +# CONFIG_SND_SOC_MAX98504 is not set +# CONFIG_SND_SOC_MAX98927 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_PCM179X_I2C is not set +# CONFIG_SND_SOC_PCM179X_SPI is not set +# CONFIG_SND_SOC_PCM3168A_I2C is not set +# CONFIG_SND_SOC_PCM3168A_SPI is not set +# CONFIG_SND_SOC_PCM512x_I2C is not set +# CONFIG_SND_SOC_PCM512x_SPI is not set +# CONFIG_SND_SOC_RT5616 is not set +# CONFIG_SND_SOC_RT5631 is not set +# CONFIG_SND_SOC_RT5677_SPI is not set +# CONFIG_SND_SOC_SGTL5000 is not set +# CONFIG_SND_SOC_SIRF_AUDIO_CODEC is not set +# CONFIG_SND_SOC_SPDIF is not set +# CONFIG_SND_SOC_SSM2602_SPI is not set +# CONFIG_SND_SOC_SSM2602_I2C 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_TAS5086 is not set +# CONFIG_SND_SOC_TAS571X is not set +# CONFIG_SND_SOC_TAS5720 is not set +# CONFIG_SND_SOC_TFA9879 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_TLV320AIC3X is not set +# CONFIG_SND_SOC_TS3A227E 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 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_WM8804_I2C is not set +# CONFIG_SND_SOC_WM8804_SPI is not set +# CONFIG_SND_SOC_WM8903 is not set +# CONFIG_SND_SOC_WM8960 is not set +# CONFIG_SND_SOC_WM8962 is not set +# CONFIG_SND_SOC_WM8974 is not set +# CONFIG_SND_SOC_WM8978 is not set +# CONFIG_SND_SOC_WM8985 is not set +# CONFIG_SND_SOC_ZX_AUD96P22 is not set +# CONFIG_SND_SOC_NAU8540 is not set +# CONFIG_SND_SOC_NAU8810 is not set +# CONFIG_SND_SOC_NAU8824 is not set +# CONFIG_SND_SOC_TPA6130A2 is not set +# CONFIG_SND_SIMPLE_CARD is not set +# CONFIG_SND_SIMPLE_SCU_CARD is not set +# CONFIG_SND_AUDIO_GRAPH_CARD is not set +# CONFIG_SND_AUDIO_GRAPH_SCU_CARD is not set + +# +# HID support +# +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_APPLE is not set +# CONFIG_HID_APPLEIR is not set +# CONFIG_HID_ASUS 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_CORSAIR is not set +# CONFIG_HID_PRODIKEYS is not set +# CONFIG_HID_CMEDIA is not set +# CONFIG_HID_CP2112 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_EZKEY is not set +# CONFIG_HID_GEMBIRD is not set +# CONFIG_HID_GFRM is not set +# CONFIG_HID_HOLTEK is not set +# CONFIG_HID_GT683R is not set +# CONFIG_HID_KEYTOUCH is not set +# CONFIG_HID_KYE is not set +# CONFIG_HID_UCLOGIC is not set +# CONFIG_HID_WALTOP is not set +# CONFIG_HID_GYRATION is not set +# CONFIG_HID_ICADE is not set +# CONFIG_HID_ITE is not set +# CONFIG_HID_TWINHAN is not set +# CONFIG_HID_KENSINGTON is not set +# CONFIG_HID_LCPOWER is not set +# CONFIG_HID_LED is not set +# CONFIG_HID_LENOVO is not set +# CONFIG_HID_LOGITECH is not set +# CONFIG_HID_MAGICMOUSE is not set +# CONFIG_HID_MAYFLASH is not set +CONFIG_HID_MICROSOFT=y +# 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_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_SONY is not set +# CONFIG_HID_SPEEDLINK 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_THINGM is not set +# CONFIG_HID_THRUSTMASTER is not set +# CONFIG_HID_UDRAW_PS3 is not set +# CONFIG_HID_WACOM is not set +# CONFIG_HID_WIIMOTE 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 + +# +# USB HID support +# +CONFIG_USB_HID=y +# CONFIG_HID_PID is not set +# CONFIG_USB_HIDDEV is not set + +# +# I2C HID support +# +# CONFIG_I2C_HID is not set +CONFIG_USB_OHCI_LITTLE_ENDIAN=y +CONFIG_USB_SUPPORT=y +CONFIG_USB_COMMON=y +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB=y +CONFIG_USB_PCI=y +# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set + +# +# Miscellaneous USB options +# +CONFIG_USB_DEFAULT_PERSIST=y +# CONFIG_USB_DYNAMIC_MINORS is not set +# CONFIG_USB_OTG is not set +# CONFIG_USB_OTG_WHITELIST is not set +# CONFIG_USB_OTG_BLACKLIST_HUB is not set +# CONFIG_USB_LEDS_TRIGGER_USBPORT is not set +# CONFIG_USB_MON is not set +# CONFIG_USB_WUSB_CBAF is not set + +# +# USB Host Controller Drivers +# +# CONFIG_USB_C67X00_HCD is not set +# CONFIG_USB_XHCI_HCD is not set +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_ROOT_HUB_TT=y +# CONFIG_USB_EHCI_TT_NEWSCHED is not set +CONFIG_USB_EHCI_PCI=y +# CONFIG_USB_EHCI_HCD_PLATFORM is not set +# CONFIG_USB_OXU210HP_HCD is not set +# CONFIG_USB_ISP116X_HCD is not set +# CONFIG_USB_ISP1362_HCD is not set +# CONFIG_USB_FOTG210_HCD is not set +# CONFIG_USB_MAX3421_HCD is not set +# CONFIG_USB_OHCI_HCD is not set +# 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 is not set + +# +# USB Imaging devices +# +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_MICROTEK is not set +# CONFIG_USBIP_CORE is not set +# CONFIG_USB_MUSB_HDRC 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_RIO500 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_FTDI_ELAN is not set +# CONFIG_USB_APPLEDISPLAY 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 + +# +# USB Physical Layer drivers +# +# CONFIG_USB_PHY is not set +# CONFIG_NOP_USB_XCEIV is not set +# CONFIG_USB_GPIO_VBUS is not set +# CONFIG_USB_ISP1301 is not set +CONFIG_USB_GADGET=y +# CONFIG_USB_GADGET_DEBUG is not set +# CONFIG_USB_GADGET_DEBUG_FILES is not set +CONFIG_USB_GADGET_VBUS_DRAW=2 +CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2 + +# +# USB Peripheral Controller +# +# CONFIG_USB_FUSB300 is not set +# CONFIG_USB_FOTG210_UDC is not set +# 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=y +# CONFIG_USB_DUMMY_HCD is not set +CONFIG_USB_LIBCOMPOSITE=m +CONFIG_USB_F_SS_LB=m +# CONFIG_USB_CONFIGFS is not set +CONFIG_USB_ZERO=m +# 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 + +# +# USB Power Delivery and Type-C drivers +# +# CONFIG_TYPEC_UCSI is not set +# CONFIG_USB_LED_TRIG is not set +# CONFIG_USB_ULPI_BUS is not set +# CONFIG_UWB is not set +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_PCI is not set +CONFIG_MMC_SDHCI_PLTFM=y +CONFIG_MMC_SDHCI_OF_ARASAN=y +# CONFIG_MMC_SDHCI_OF_AT91 is not set +# CONFIG_MMC_SDHCI_CADENCE is not set +# CONFIG_MMC_SDHCI_F_SDH30 is not set +# CONFIG_MMC_TIFM_SD is not set +# CONFIG_MMC_SPI is not set +# CONFIG_MMC_CB710 is not set +# CONFIG_MMC_VIA_SDMMC is not set +# CONFIG_MMC_DW is not set +# CONFIG_MMC_VUB300 is not set +# CONFIG_MMC_USHC is not set +# CONFIG_MMC_USDHI6ROL0 is not set +# CONFIG_MMC_TOSHIBA_PCI is not set +# CONFIG_MMC_MTK is not set +# CONFIG_MMC_SDHCI_XENON is not set +# CONFIG_MEMSTICK is not set +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y +# CONFIG_LEDS_CLASS_FLASH is not set +# CONFIG_LEDS_BRIGHTNESS_HW_CHANGED is not set + +# +# LED drivers +# +# CONFIG_LEDS_BCM6328 is not set +# CONFIG_LEDS_BCM6358 is not set +# CONFIG_LEDS_LM3530 is not set +# CONFIG_LEDS_LM3642 is not set +# CONFIG_LEDS_PCA9532 is not set +CONFIG_LEDS_GPIO=y +# CONFIG_LEDS_LP3944 is not set +# CONFIG_LEDS_LP3952 is not set +# CONFIG_LEDS_LP5521 is not set +# CONFIG_LEDS_LP5523 is not set +# CONFIG_LEDS_LP5562 is not set +# CONFIG_LEDS_LP8501 is not set +# CONFIG_LEDS_LP8860 is not set +# CONFIG_LEDS_PCA955X is not set +# CONFIG_LEDS_PCA963X is not set +# CONFIG_LEDS_DAC124S085 is not set +# CONFIG_LEDS_REGULATOR is not set +# CONFIG_LEDS_BD2802 is not set +# CONFIG_LEDS_LT3593 is not set +# CONFIG_LEDS_TCA6507 is not set +# CONFIG_LEDS_TLC591XX is not set +# CONFIG_LEDS_LM355x is not set +# CONFIG_LEDS_IS31FL319X is not set +# CONFIG_LEDS_IS31FL32XX is not set + +# +# LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM) +# +# CONFIG_LEDS_BLINKM is not set +# CONFIG_LEDS_SYSCON is not set +# CONFIG_LEDS_USER is not set + +# +# LED Triggers +# +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_TIMER=y +CONFIG_LEDS_TRIGGER_ONESHOT=y +# CONFIG_LEDS_TRIGGER_MTD is not set +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +CONFIG_LEDS_TRIGGER_BACKLIGHT=y +CONFIG_LEDS_TRIGGER_CPU=y +CONFIG_LEDS_TRIGGER_GPIO=y +CONFIG_LEDS_TRIGGER_DEFAULT_ON=y + +# +# iptables trigger is under Netfilter config (LED target) +# +CONFIG_LEDS_TRIGGER_TRANSIENT=y +CONFIG_LEDS_TRIGGER_CAMERA=y +# CONFIG_LEDS_TRIGGER_PANIC is not set +# CONFIG_ACCESSIBILITY is not set +# CONFIG_INFINIBAND is not set +CONFIG_EDAC_ATOMIC_SCRUB=y +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_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_RS5C372 is not set +# CONFIG_RTC_DRV_ISL1208 is not set +# CONFIG_RTC_DRV_ISL12022 is not set +# CONFIG_RTC_DRV_X1205 is not set +# CONFIG_RTC_DRV_PCF8523 is not set +# CONFIG_RTC_DRV_PCF85063 is not set +CONFIG_RTC_DRV_PCF8563=y +# 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_RX8581 is not set +# CONFIG_RTC_DRV_RX8025 is not set +# CONFIG_RTC_DRV_EM3027 is not set +# CONFIG_RTC_DRV_RV8803 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_RX6110 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 + +# +# Platform RTC drivers +# +# CONFIG_RTC_DRV_CMOS is not set +# CONFIG_RTC_DRV_DS1286 is not set +# CONFIG_RTC_DRV_DS1511 is not set +# CONFIG_RTC_DRV_DS1553 is not set +# CONFIG_RTC_DRV_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_BQ4802 is not set +# CONFIG_RTC_DRV_RP5C01 is not set +# CONFIG_RTC_DRV_V3020 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_FTRTC010 is not set +# CONFIG_RTC_DRV_SNVS is not set +# CONFIG_RTC_DRV_R7301 is not set + +# +# HID Sensor RTC drivers +# +# CONFIG_RTC_DRV_HID_SENSOR_TIME is not set +CONFIG_DMADEVICES=y +# CONFIG_DMADEVICES_DEBUG is not set + +# +# DMA Devices +# +CONFIG_DMA_ENGINE=y +CONFIG_DMA_OF=y +# CONFIG_ALTERA_MSGDMA is not set +# CONFIG_AMBA_PL08X is not set +# CONFIG_AXI_DMAC is not set +# CONFIG_FSL_EDMA is not set +# CONFIG_INTEL_IDMA64 is not set +# CONFIG_NBPFAXI_DMA is not set +# CONFIG_PL330_DMA is not set +CONFIG_XILINX_DMA_ENGINES=y +# CONFIG_XILINX_DPDMA is not set +CONFIG_XILINX_FRMBUF=y +# CONFIG_XILINX_DMA is not set +# CONFIG_XILINX_ZYNQMP_DMA 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 + +# +# DMA Clients +# +# CONFIG_ASYNC_TX_DMA is not set +# CONFIG_DMATEST is not set + +# +# DMABUF options +# +CONFIG_SYNC_FILE=y +# CONFIG_AUXDISPLAY is not set +CONFIG_UIO=y +# CONFIG_UIO_CIF is not set +CONFIG_UIO_PDRV_GENIRQ=y +# CONFIG_UIO_DMEM_GENIRQ is not set +# CONFIG_UIO_AEC is not set +# CONFIG_UIO_SERCOS3 is not set +# CONFIG_UIO_PCI_GENERIC is not set +# CONFIG_UIO_NETX is not set +# CONFIG_UIO_PRUSS is not set +# CONFIG_UIO_MF624 is not set +# CONFIG_UIO_XILINX_APM is not set +# CONFIG_VIRT_DRIVERS is not set +CONFIG_VIRTIO=m + +# +# Virtio drivers +# +# CONFIG_VIRTIO_PCI is not set +# CONFIG_VIRTIO_BALLOON is not set +# CONFIG_VIRTIO_INPUT is not set +# CONFIG_VIRTIO_MMIO is not set + +# +# Microsoft Hyper-V guest support +# +# CONFIG_HYPERV_TSCPAGE is not set +# CONFIG_STAGING is not set +# CONFIG_GOLDFISH is not set +# CONFIG_CHROME_PLATFORMS is not set +CONFIG_CLKDEV_LOOKUP=y +CONFIG_HAVE_CLK_PREPARE=y +CONFIG_COMMON_CLK=y + +# +# Common Clock Framework +# +CONFIG_ICST=y +# CONFIG_CLK_HSDK is not set +# CONFIG_COMMON_CLK_SI5351 is not set +# CONFIG_COMMON_CLK_SI514 is not set +CONFIG_COMMON_CLK_SI570=y +# CONFIG_COMMON_CLK_SI5324 is not set +# CONFIG_COMMON_CLK_IDT8T49N24X 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_CLK_QORIQ is not set +# CONFIG_COMMON_CLK_NXP is not set +# CONFIG_COMMON_CLK_PXA is not set +# CONFIG_COMMON_CLK_PIC32 is not set +# CONFIG_COMMON_CLK_VC5 is not set +# CONFIG_HWSPINLOCK is not set + +# +# Clock Source drivers +# +CONFIG_TIMER_OF=y +CONFIG_TIMER_PROBE=y +CONFIG_CADENCE_TTC_TIMER=y +# CONFIG_ARM_TIMER_SP804 is not set +# CONFIG_ATMEL_PIT is not set +# CONFIG_SH_TIMER_CMT is not set +# CONFIG_SH_TIMER_MTU2 is not set +# CONFIG_SH_TIMER_TMU is not set +# CONFIG_EM_TIMER_STI is not set +CONFIG_MAILBOX=y +# CONFIG_ARM_MHU 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_IOMMU_SUPPORT=y + +# +# Generic IOMMU Pagetable Support +# +# CONFIG_IOMMU_IO_PGTABLE_LPAE is not set +# CONFIG_IOMMU_IO_PGTABLE_ARMV7S is not set +# CONFIG_ARM_SMMU is not set + +# +# Remoteproc drivers +# +CONFIG_REMOTEPROC=m +# CONFIG_ZYNQ_REMOTEPROC is not set + +# +# Rpmsg drivers +# +# CONFIG_RPMSG_QCOM_GLINK_RPM is not set + +# +# SOC (System On Chip) specific Drivers +# + +# +# Amlogic SoC drivers +# + +# +# Broadcom SoC drivers +# +# CONFIG_SOC_BRCMSTB is not set + +# +# i.MX SoC drivers +# + +# +# Qualcomm SoC drivers +# +# CONFIG_SUNXI_SRAM is not set +# CONFIG_SOC_TI is not set + +# +# Xilinx SoC drivers +# +# CONFIG_XILINX_VCU is not set +# CONFIG_PM_DEVFREQ is not set +# CONFIG_EXTCON is not set +CONFIG_MEMORY=y +# CONFIG_ARM_PL172_MPMC is not set +CONFIG_PL35X_SMC=y +CONFIG_IIO=y +CONFIG_IIO_BUFFER=y +# CONFIG_IIO_BUFFER_CB is not set +CONFIG_IIO_KFIFO_BUF=y +# CONFIG_IIO_CONFIGFS is not set +CONFIG_IIO_TRIGGER=y +CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 +# CONFIG_IIO_SW_DEVICE is not set +# CONFIG_IIO_SW_TRIGGER is not set + +# +# Accelerometers +# +# CONFIG_ADXL345_I2C is not set +# CONFIG_ADXL345_SPI is not set +# CONFIG_BMA180 is not set +# CONFIG_BMA220 is not set +# CONFIG_BMC150_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_IIO_ST_ACCEL_3AXIS 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_MXC4005 is not set +# CONFIG_MXC6255 is not set +# CONFIG_SCA3000 is not set +# CONFIG_STK8312 is not set +# CONFIG_STK8BA50 is not set + +# +# Analog to digital converters +# +# CONFIG_AD7266 is not set +# CONFIG_AD7291 is not set +# CONFIG_AD7298 is not set +# CONFIG_AD7476 is not set +# CONFIG_AD7766 is not set +# CONFIG_AD7791 is not set +# CONFIG_AD7793 is not set +# CONFIG_AD7887 is not set +# CONFIG_AD7923 is not set +# CONFIG_AD799X is not set +# CONFIG_CC10001_ADC is not set +# CONFIG_ENVELOPE_DETECTOR is not set +# CONFIG_HI8435 is not set +# CONFIG_HX711 is not set +# CONFIG_INA2XX_ADC is not set +# CONFIG_LTC2471 is not set +# CONFIG_LTC2485 is not set +# CONFIG_LTC2497 is not set +# CONFIG_MAX1027 is not set +# CONFIG_MAX11100 is not set +# CONFIG_MAX1118 is not set +# CONFIG_MAX1363 is not set +# CONFIG_MAX9611 is not set +# CONFIG_MCP320X is not set +# CONFIG_MCP3422 is not set +# CONFIG_NAU7802 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_ADS7950 is not set +# CONFIG_TI_ADS8688 is not set +# CONFIG_TI_TLC4541 is not set +# CONFIG_VF610_ADC is not set +# CONFIG_XILINX_XADC is not set + +# +# Amplifiers +# +# CONFIG_AD8366 is not set + +# +# Chemical Sensors +# +# CONFIG_ATLAS_PH_SENSOR is not set +# CONFIG_CCS811 is not set +# CONFIG_IAQCORE is not set +# CONFIG_VZ89X is not set + +# +# Hid Sensor IIO Common +# + +# +# SSP Sensor Common +# +# CONFIG_IIO_SSP_SENSORHUB is not set + +# +# Counters +# + +# +# Digital to analog converters +# +# 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_LTC2632 is not set +# CONFIG_AD5686 is not set +# CONFIG_AD5755 is not set +# CONFIG_AD5761 is not set +# CONFIG_AD5764 is not set +# CONFIG_AD5791 is not set +# CONFIG_AD7303 is not set +# CONFIG_AD8801 is not set +# CONFIG_DPOT_DAC is not set +# CONFIG_M62332 is not set +# CONFIG_MAX517 is not set +# CONFIG_MAX5821 is not set +# CONFIG_MCP4725 is not set +# CONFIG_MCP4922 is not set +# CONFIG_VF610_DAC is not set + +# +# IIO dummy driver +# + +# +# Frequency Synthesizers DDS/PLL +# + +# +# Clock Generator/Distribution +# +# CONFIG_AD9523 is not set + +# +# Phase-Locked Loop (PLL) frequency synthesizers +# +# CONFIG_ADF4350 is not set + +# +# Digital gyroscope sensors +# +# CONFIG_ADIS16080 is not set +# CONFIG_ADIS16130 is not set +# CONFIG_ADIS16136 is not set +# CONFIG_ADIS16260 is not set +# CONFIG_ADXRS450 is not set +# CONFIG_BMG160 is not set +# CONFIG_MPU3050_I2C is not set +# CONFIG_IIO_ST_GYRO_3AXIS is not set +# CONFIG_ITG3200 is not set + +# +# 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 + +# +# Humidity sensors +# +# CONFIG_AM2315 is not set +# CONFIG_DHT11 is not set +# CONFIG_HDC100X is not set +# CONFIG_HTS221 is not set +# CONFIG_HTU21 is not set +# CONFIG_SI7005 is not set +# CONFIG_SI7020 is not set + +# +# Inertial measurement units +# +# CONFIG_ADIS16400 is not set +# CONFIG_ADIS16480 is not set +# CONFIG_BMI160_I2C is not set +# CONFIG_BMI160_SPI is not set +# CONFIG_KMX61 is not set +# CONFIG_INV_MPU6050_I2C is not set +# CONFIG_INV_MPU6050_SPI is not set +# CONFIG_IIO_ST_LSM6DSX is not set + +# +# Light sensors +# +# CONFIG_ADJD_S311 is not set +# CONFIG_AL3320A is not set +# CONFIG_APDS9300 is not set +# CONFIG_APDS9960 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_GP2AP020A00F is not set +# CONFIG_SENSORS_ISL29018 is not set +# CONFIG_SENSORS_ISL29028 is not set +# CONFIG_ISL29125 is not set +# CONFIG_JSA1212 is not set +# CONFIG_RPR0521 is not set +# CONFIG_LTR501 is not set +# CONFIG_MAX44000 is not set +# CONFIG_OPT3001 is not set +# CONFIG_PA12203001 is not set +# CONFIG_SI1145 is not set +# CONFIG_STK3310 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_TSL4531 is not set +# CONFIG_US5182D is not set +# CONFIG_VCNL4000 is not set +# CONFIG_VEML6070 is not set +# CONFIG_VL6180 is not set + +# +# Magnetometer sensors +# +# CONFIG_AK8974 is not set +# CONFIG_AK8975 is not set +# CONFIG_AK09911 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 + +# +# Multiplexers +# +# CONFIG_IIO_MUX is not set + +# +# Inclinometer sensors +# + +# +# Triggers - standalone +# +# CONFIG_IIO_INTERRUPT_TRIGGER is not set +# CONFIG_IIO_SYSFS_TRIGGER is not set + +# +# Digital potentiometers +# +# CONFIG_DS1803 is not set +# CONFIG_MAX5481 is not set +# CONFIG_MAX5487 is not set +# CONFIG_MCP4131 is not set +# CONFIG_MCP4531 is not set +# CONFIG_TPL0102 is not set + +# +# Digital potentiostats +# +# CONFIG_LMP91000 is not set + +# +# Pressure sensors +# +# CONFIG_ABP060MG is not set +# CONFIG_BMP280 is not set +# CONFIG_HP03 is not set +# CONFIG_MPL115_I2C is not set +# CONFIG_MPL115_SPI is not set +# CONFIG_MPL3115 is not set +# CONFIG_MS5611 is not set +# CONFIG_MS5637 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 + +# +# Lightning sensors +# +# CONFIG_AS3935 is not set + +# +# Proximity and distance sensors +# +# CONFIG_LIDAR_LITE_V2 is not set +# CONFIG_SRF04 is not set +# CONFIG_SX9500 is not set +# CONFIG_SRF08 is not set + +# +# Temperature sensors +# +# CONFIG_MAXIM_THERMOCOUPLE is not set +# CONFIG_MLX90614 is not set +# CONFIG_TMP006 is not set +# CONFIG_TMP007 is not set +# CONFIG_TSYS01 is not set +# CONFIG_TSYS02D is not set +# CONFIG_NTB is not set +# CONFIG_VME_BUS is not set +# CONFIG_PWM is not set +CONFIG_IRQCHIP=y +CONFIG_ARM_GIC=y +CONFIG_ARM_GIC_MAX_NR=1 +# CONFIG_XILINX_INTC is not set +# CONFIG_IPACK_BUS is not set +CONFIG_ARCH_HAS_RESET_CONTROLLER=y +# CONFIG_RESET_CONTROLLER is not set +# CONFIG_FMC is not set + +# +# PHY Subsystem +# +# CONFIG_GENERIC_PHY is not set +# CONFIG_BCM_KONA_USB2_PHY 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_POWERCAP is not set +# CONFIG_MCB is not set + +# +# Performance monitor support +# +CONFIG_ARM_PMU=y +# CONFIG_RAS is not set + +# +# Android +# +# CONFIG_ANDROID is not set +# CONFIG_DAX is not set +CONFIG_NVMEM=y +# CONFIG_STM is not set +# CONFIG_INTEL_TH is not set +# CONFIG_FPGA is not set + +# +# FSI support +# +# CONFIG_FSI is not set +# CONFIG_TEE is not set + +# +# Firmware Drivers +# +# CONFIG_ARM_SCPI_PROTOCOL is not set +CONFIG_FIRMWARE_MEMMAP=y +# CONFIG_FW_CFG_SYSFS is not set +CONFIG_HAVE_ARM_SMCCC=y +# CONFIG_GOOGLE_FIRMWARE is not set + +# +# Tegra firmware driver +# + +# +# File systems +# +CONFIG_DCACHE_WORD_ACCESS=y +CONFIG_EXT2_FS=y +# CONFIG_EXT2_FS_XATTR is not set +CONFIG_EXT3_FS=y +# CONFIG_EXT3_FS_POSIX_ACL is not set +# CONFIG_EXT3_FS_SECURITY is not set +CONFIG_EXT4_FS=y +# CONFIG_EXT4_FS_POSIX_ACL is not set +# CONFIG_EXT4_FS_SECURITY is not set +# CONFIG_EXT4_ENCRYPTION is not set +# CONFIG_EXT4_DEBUG is not set +CONFIG_JBD2=y +# CONFIG_JBD2_DEBUG is not set +CONFIG_FS_MBCACHE=y +# CONFIG_REISERFS_FS is not set +# CONFIG_JFS_FS is not set +# CONFIG_XFS_FS is not set +# CONFIG_GFS2_FS is not set +# CONFIG_OCFS2_FS is not set +# CONFIG_BTRFS_FS is not set +# CONFIG_NILFS2_FS is not set +# CONFIG_F2FS_FS is not set +CONFIG_FS_POSIX_ACL=y +CONFIG_EXPORTFS=y +# CONFIG_EXPORTFS_BLOCK_OPS is not set +CONFIG_FILE_LOCKING=y +CONFIG_MANDATORY_FILE_LOCKING=y +# CONFIG_FS_ENCRYPTION is not set +CONFIG_FSNOTIFY=y +# CONFIG_DNOTIFY is not set +CONFIG_INOTIFY_USER=y +# CONFIG_FANOTIFY is not set +# CONFIG_QUOTA is not set +# CONFIG_QUOTACTL is not set +# CONFIG_AUTOFS4_FS is not set +CONFIG_FUSE_FS=y +# CONFIG_CUSE is not set +# CONFIG_OVERLAY_FS is not set + +# +# Caches +# +# CONFIG_FSCACHE is not set + +# +# CD-ROM/DVD Filesystems +# +# CONFIG_ISO9660_FS is not set +# CONFIG_UDF_FS is not set + +# +# DOS/FAT/NT Filesystems +# +CONFIG_FAT_FS=y +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +# CONFIG_FAT_DEFAULT_UTF8 is not set +# CONFIG_NTFS_FS is not set + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +CONFIG_PROC_SYSCTL=y +CONFIG_PROC_PAGE_MONITOR=y +# CONFIG_PROC_CHILDREN is not set +CONFIG_KERNFS=y +CONFIG_SYSFS=y +CONFIG_TMPFS=y +# CONFIG_TMPFS_POSIX_ACL is not set +# CONFIG_TMPFS_XATTR is not set +# CONFIG_HUGETLB_PAGE is not set +CONFIG_CONFIGFS_FS=m +CONFIG_MISC_FILESYSTEMS=y +# CONFIG_ORANGEFS_FS is not set +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_HFSPLUS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EFS_FS is not set +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS_DEBUG=0 +CONFIG_JFFS2_FS_WRITEBUFFER=y +# CONFIG_JFFS2_FS_WBUF_VERIFY is not set +CONFIG_JFFS2_SUMMARY=y +# CONFIG_JFFS2_FS_XATTR is not set +# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set +CONFIG_JFFS2_ZLIB=y +# CONFIG_JFFS2_LZO is not set +CONFIG_JFFS2_RTIME=y +# CONFIG_JFFS2_RUBIN is not set +# CONFIG_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_SYSV_FS is not set +# CONFIG_UFS_FS is not set +CONFIG_NETWORK_FILESYSTEMS=y +CONFIG_NFS_FS=y +CONFIG_NFS_V2=y +CONFIG_NFS_V3=y +# CONFIG_NFS_V3_ACL is not set +# CONFIG_NFS_V4 is not set +# CONFIG_NFS_SWAP is not set +CONFIG_ROOT_NFS=y +# CONFIG_NFSD is not set +CONFIG_GRACE_PERIOD=y +CONFIG_LOCKD=y +CONFIG_LOCKD_V4=y +CONFIG_NFS_COMMON=y +CONFIG_SUNRPC=y +# CONFIG_SUNRPC_DEBUG is not set +# CONFIG_CEPH_FS is not set +# CONFIG_CIFS is not set +# CONFIG_NCP_FS is not set +# CONFIG_CODA_FS is not set +# CONFIG_AFS_FS is not set +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_CODEPAGE_437=y +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +CONFIG_NLS_ASCII=y +CONFIG_NLS_ISO8859_1=y +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_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 + +# +# Kernel hacking +# + +# +# printk and dmesg options +# +# CONFIG_PRINTK_TIME is not set +CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7 +CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4 +# CONFIG_BOOT_PRINTK_DELAY is not set + +# +# Compile-time checks and compiler options +# +# CONFIG_DEBUG_INFO is not set +CONFIG_ENABLE_WARN_DEPRECATED=y +CONFIG_ENABLE_MUST_CHECK=y +CONFIG_FRAME_WARN=1024 +# CONFIG_STRIP_ASM_SYMS is not set +# CONFIG_READABLE_ASM is not set +# CONFIG_UNUSED_SYMBOLS is not set +# CONFIG_PAGE_OWNER is not set +# CONFIG_DEBUG_FS is not set +# CONFIG_HEADERS_CHECK is not set +# CONFIG_DEBUG_SECTION_MISMATCH is not set +CONFIG_SECTION_MISMATCH_WARN_ONLY=y +# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set +# CONFIG_MAGIC_SYSRQ is not set +CONFIG_DEBUG_KERNEL=y + +# +# Memory Debugging +# +# CONFIG_PAGE_EXTENSION is not set +# CONFIG_DEBUG_PAGEALLOC is not set +# CONFIG_PAGE_POISONING is not set +# CONFIG_DEBUG_RODATA_TEST is not set +# CONFIG_DEBUG_OBJECTS is not set +# CONFIG_DEBUG_SLAB is not set +CONFIG_HAVE_DEBUG_KMEMLEAK=y +# CONFIG_DEBUG_KMEMLEAK is not set +# CONFIG_DEBUG_STACK_USAGE is not set +# CONFIG_DEBUG_VM is not set +CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y +# CONFIG_DEBUG_VIRTUAL is not set +# CONFIG_DEBUG_MEMORY_INIT is not set +# CONFIG_DEBUG_PER_CPU_MAPS is not set +# CONFIG_DEBUG_SHIRQ is not set + +# +# Debug Lockups and Hangs +# +# CONFIG_SOFTLOCKUP_DETECTOR is not set +# CONFIG_DETECT_HUNG_TASK is not set +# CONFIG_WQ_WATCHDOG is not set +# CONFIG_PANIC_ON_OOPS is not set +CONFIG_PANIC_ON_OOPS_VALUE=0 +CONFIG_PANIC_TIMEOUT=0 +# CONFIG_SCHED_DEBUG is not set +# CONFIG_SCHED_INFO is not set +# CONFIG_SCHEDSTATS is not set +# CONFIG_SCHED_STACK_END_CHECK is not set +# CONFIG_DEBUG_TIMEKEEPING is not set +# CONFIG_DEBUG_PREEMPT is not set + +# +# Lock Debugging (spinlocks, mutexes, etc...) +# +# CONFIG_DEBUG_RT_MUTEXES is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_MUTEXES is not set +# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_PROVE_LOCKING is not set +# CONFIG_LOCK_STAT is not set +# CONFIG_DEBUG_ATOMIC_SLEEP is not set +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +# CONFIG_LOCK_TORTURE_TEST is not set +# CONFIG_WW_MUTEX_SELFTEST is not set +# CONFIG_STACKTRACE is not set +# CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set +# CONFIG_DEBUG_KOBJECT is not set +# CONFIG_DEBUG_LIST is not set +# CONFIG_DEBUG_PI_LIST is not set +# CONFIG_DEBUG_SG is not set +# CONFIG_DEBUG_NOTIFIERS is not set +# CONFIG_DEBUG_CREDENTIALS is not set + +# +# RCU Debugging +# +# CONFIG_PROVE_RCU is not set +# CONFIG_TORTURE_TEST is not set +# CONFIG_RCU_PERF_TEST is not set +# CONFIG_RCU_TORTURE_TEST is not set +CONFIG_RCU_CPU_STALL_TIMEOUT=60 +# CONFIG_RCU_TRACE is not set +# CONFIG_RCU_EQS_DEBUG is not set +# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set +# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set +# CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set +# CONFIG_NOTIFIER_ERROR_INJECTION is not set +# CONFIG_FAULT_INJECTION is not set +# CONFIG_LATENCYTOP is not set +CONFIG_HAVE_FUNCTION_TRACER=y +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y +CONFIG_HAVE_DYNAMIC_FTRACE=y +CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y +CONFIG_HAVE_SYSCALL_TRACEPOINTS=y +CONFIG_HAVE_C_RECORDMCOUNT=y +CONFIG_TRACING_SUPPORT=y +# CONFIG_FTRACE is not set +# CONFIG_DMA_API_DEBUG is not set + +# +# Runtime Testing +# +# CONFIG_TEST_LIST_SORT is not set +# CONFIG_TEST_SORT is not set +# CONFIG_BACKTRACE_SELF_TEST is not set +# CONFIG_RBTREE_TEST is not set +# CONFIG_INTERVAL_TREE_TEST is not set +# CONFIG_PERCPU_TEST is not set +# CONFIG_ATOMIC64_SELFTEST is not set +# CONFIG_TEST_HEXDUMP is not set +# CONFIG_TEST_STRING_HELPERS is not set +# CONFIG_TEST_KSTRTOX is not set +# CONFIG_TEST_PRINTF is not set +# CONFIG_TEST_BITMAP is not set +# CONFIG_TEST_UUID is not set +# CONFIG_TEST_RHASHTABLE is not set +# CONFIG_TEST_HASH is not set +# CONFIG_TEST_LKM is not set +# CONFIG_TEST_USER_COPY is not set +# CONFIG_TEST_BPF is not set +# CONFIG_TEST_FIRMWARE is not set +# CONFIG_TEST_SYSCTL is not set +# CONFIG_TEST_UDELAY is not set +# CONFIG_TEST_STATIC_KEYS is not set +# CONFIG_TEST_KMOD is not set +# CONFIG_MEMTEST is not set +# CONFIG_BUG_ON_DATA_CORRUPTION is not set +# CONFIG_SAMPLES is not set +CONFIG_HAVE_ARCH_KGDB=y +# CONFIG_KGDB is not set +# CONFIG_ARCH_WANTS_UBSAN_NO_NULL is not set +# CONFIG_UBSAN is not set +CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y +# CONFIG_STRICT_DEVMEM is not set +# CONFIG_ARM_PTDUMP is not set +CONFIG_ARM_UNWIND=y +# CONFIG_DEBUG_USER is not set +CONFIG_DEBUG_LL=y +# CONFIG_DEBUG_ZYNQ_UART0 is not set +CONFIG_DEBUG_ZYNQ_UART1=y +# CONFIG_DEBUG_ICEDCC is not set +# CONFIG_DEBUG_SEMIHOSTING is not set +# CONFIG_DEBUG_LL_UART_8250 is not set +# CONFIG_DEBUG_LL_UART_PL01X is not set +CONFIG_DEBUG_LL_INCLUDE="debug/zynq.S" +# CONFIG_DEBUG_UART_8250 is not set +CONFIG_DEBUG_UNCOMPRESS=y +CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h" +CONFIG_EARLY_PRINTK=y +# CONFIG_PID_IN_CONTEXTIDR is not set +# CONFIG_CORESIGHT is not set + +# +# Security options +# +# CONFIG_KEYS is not set +# CONFIG_SECURITY_DMESG_RESTRICT is not set +# CONFIG_SECURITY is not set +# CONFIG_SECURITYFS is not set +CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y +# CONFIG_HARDENED_USERCOPY is not set +# CONFIG_STATIC_USERMODEHELPER is not set +CONFIG_DEFAULT_SECURITY_DAC=y +CONFIG_DEFAULT_SECURITY="" +CONFIG_CRYPTO=y + +# +# Crypto core or helper +# +CONFIG_CRYPTO_ALGAPI=y +CONFIG_CRYPTO_ALGAPI2=y +CONFIG_CRYPTO_AEAD=m +CONFIG_CRYPTO_AEAD2=y +CONFIG_CRYPTO_BLKCIPHER=m +CONFIG_CRYPTO_BLKCIPHER2=y +CONFIG_CRYPTO_HASH=y +CONFIG_CRYPTO_HASH2=y +CONFIG_CRYPTO_RNG=m +CONFIG_CRYPTO_RNG2=y +CONFIG_CRYPTO_RNG_DEFAULT=m +CONFIG_CRYPTO_AKCIPHER2=y +CONFIG_CRYPTO_KPP2=y +CONFIG_CRYPTO_ACOMP2=y +# CONFIG_CRYPTO_RSA is not set +# CONFIG_CRYPTO_DH is not set +# CONFIG_CRYPTO_ECDH is not set +CONFIG_CRYPTO_MANAGER=m +CONFIG_CRYPTO_MANAGER2=y +# CONFIG_CRYPTO_USER is not set +CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y +# CONFIG_CRYPTO_GF128MUL is not set +CONFIG_CRYPTO_NULL=m +CONFIG_CRYPTO_NULL2=y +# CONFIG_CRYPTO_PCRYPT is not set +CONFIG_CRYPTO_WORKQUEUE=y +# CONFIG_CRYPTO_CRYPTD is not set +# CONFIG_CRYPTO_MCRYPTD is not set +CONFIG_CRYPTO_AUTHENC=m +# CONFIG_CRYPTO_TEST is not set +CONFIG_CRYPTO_ENGINE=m + +# +# Authenticated Encryption with Associated Data +# +# CONFIG_CRYPTO_CCM is not set +# CONFIG_CRYPTO_GCM is not set +# CONFIG_CRYPTO_CHACHA20POLY1305 is not set +# CONFIG_CRYPTO_SEQIV is not set +CONFIG_CRYPTO_ECHAINIV=m + +# +# Block modes +# +# CONFIG_CRYPTO_CBC is not set +# CONFIG_CRYPTO_CTR is not set +# CONFIG_CRYPTO_CTS is not set +# CONFIG_CRYPTO_ECB is not set +# CONFIG_CRYPTO_LRW is not set +# CONFIG_CRYPTO_PCBC is not set +# CONFIG_CRYPTO_XTS is not set +# CONFIG_CRYPTO_KEYWRAP is not set + +# +# Hash modes +# +# CONFIG_CRYPTO_CMAC is not set +CONFIG_CRYPTO_HMAC=m +# CONFIG_CRYPTO_XCBC is not set +# CONFIG_CRYPTO_VMAC is not set + +# +# Digest +# +CONFIG_CRYPTO_CRC32C=y +# CONFIG_CRYPTO_CRC32 is not set +# CONFIG_CRYPTO_CRCT10DIF is not set +# CONFIG_CRYPTO_GHASH is not set +# CONFIG_CRYPTO_POLY1305 is not set +# CONFIG_CRYPTO_MD4 is not set +# CONFIG_CRYPTO_MD5 is not set +# CONFIG_CRYPTO_MICHAEL_MIC is not set +# CONFIG_CRYPTO_RMD128 is not set +# CONFIG_CRYPTO_RMD160 is not set +# CONFIG_CRYPTO_RMD256 is not set +# CONFIG_CRYPTO_RMD320 is not set +# CONFIG_CRYPTO_SHA1 is not set +CONFIG_CRYPTO_SHA256=m +# CONFIG_CRYPTO_SHA512 is not set +# CONFIG_CRYPTO_SHA3 is not set +# CONFIG_CRYPTO_TGR192 is not set +# CONFIG_CRYPTO_WP512 is not set + +# +# Ciphers +# +CONFIG_CRYPTO_AES=y +# CONFIG_CRYPTO_AES_TI is not set +# CONFIG_CRYPTO_ANUBIS is not set +# CONFIG_CRYPTO_ARC4 is not set +# CONFIG_CRYPTO_BLOWFISH is not set +# CONFIG_CRYPTO_CAMELLIA is not set +# CONFIG_CRYPTO_CAST5 is not set +# CONFIG_CRYPTO_CAST6 is not set +# CONFIG_CRYPTO_DES is not set +# CONFIG_CRYPTO_FCRYPT is not set +# CONFIG_CRYPTO_KHAZAD is not set +# CONFIG_CRYPTO_SALSA20 is not set +# CONFIG_CRYPTO_CHACHA20 is not set +# CONFIG_CRYPTO_SEED is not set +# CONFIG_CRYPTO_SERPENT is not set +# CONFIG_CRYPTO_TEA is not set +# CONFIG_CRYPTO_TWOFISH is not set + +# +# Compression +# +# CONFIG_CRYPTO_DEFLATE 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 + +# +# Random Number Generation +# +CONFIG_CRYPTO_ANSI_CPRNG=m +CONFIG_CRYPTO_DRBG_MENU=m +CONFIG_CRYPTO_DRBG_HMAC=y +# CONFIG_CRYPTO_DRBG_HASH is not set +CONFIG_CRYPTO_DRBG=m +CONFIG_CRYPTO_JITTERENTROPY=m +# CONFIG_CRYPTO_USER_API_HASH is not set +# 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_HW=y +# CONFIG_CRYPTO_DEV_HIFN_795X is not set +# CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API_DESC is not set +CONFIG_CRYPTO_DEV_VIRTIO=m + +# +# Certificates for signature checking +# +# CONFIG_ARM_CRYPTO is not set +# CONFIG_BINARY_PRINTF is not set + +# +# Library routines +# +CONFIG_BITREVERSE=y +CONFIG_HAVE_ARCH_BITREVERSE=y +CONFIG_RATIONAL=y +CONFIG_GENERIC_STRNCPY_FROM_USER=y +CONFIG_GENERIC_STRNLEN_USER=y +CONFIG_GENERIC_NET_UTILS=y +CONFIG_GENERIC_PCI_IOMAP=y +CONFIG_GENERIC_IO=y +CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y +# CONFIG_CRC_CCITT is not set +CONFIG_CRC16=y +# CONFIG_CRC_T10DIF is not set +# CONFIG_CRC_ITU_T is not set +CONFIG_CRC32=y +# CONFIG_CRC32_SELFTEST is not set +CONFIG_CRC32_SLICEBY8=y +# CONFIG_CRC32_SLICEBY4 is not set +# CONFIG_CRC32_SARWATE is not set +# CONFIG_CRC32_BIT is not set +# CONFIG_CRC4 is not set +# CONFIG_CRC7 is not set +# CONFIG_LIBCRC32C is not set +# CONFIG_CRC8 is not set +# CONFIG_AUDIT_ARCH_COMPAT_GENERIC is not set +# CONFIG_RANDOM32_SELFTEST is not set +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=y +CONFIG_XZ_DEC=y +CONFIG_XZ_DEC_X86=y +CONFIG_XZ_DEC_POWERPC=y +CONFIG_XZ_DEC_IA64=y +CONFIG_XZ_DEC_ARM=y +CONFIG_XZ_DEC_ARMTHUMB=y +CONFIG_XZ_DEC_SPARC=y +CONFIG_XZ_DEC_BCJ=y +# CONFIG_XZ_DEC_TEST is not set +CONFIG_DECOMPRESS_GZIP=y +CONFIG_DECOMPRESS_XZ=y +CONFIG_GENERIC_ALLOCATOR=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT_MAP=y +CONFIG_HAS_DMA=y +# CONFIG_DMA_NOOP_OPS is not set +# CONFIG_DMA_VIRT_OPS is not set +CONFIG_CPU_RMAP=y +CONFIG_DQL=y +CONFIG_GLOB=y +# CONFIG_GLOB_SELFTEST is not set +CONFIG_NLATTR=y +# CONFIG_CORDIC is not set +# CONFIG_DDR is not set +# CONFIG_IRQ_POLL is not set +CONFIG_LIBFDT=y +CONFIG_FONT_SUPPORT=y +CONFIG_FONTS=y +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +# CONFIG_FONT_6x11 is not set +# CONFIG_FONT_7x14 is not set +# CONFIG_FONT_PEARL_8x8 is not set +# CONFIG_FONT_ACORN_8x8 is not set +# CONFIG_FONT_MINI_4x6 is not set +# CONFIG_FONT_6x10 is not set +# CONFIG_FONT_10x18 is not set +# CONFIG_FONT_SUN8x16 is not set +# CONFIG_FONT_SUN12x22 is not set +# CONFIG_SG_SPLIT is not set +CONFIG_SG_POOL=y +CONFIG_ARCH_HAS_SG_CHAIN=y +CONFIG_SBITMAP=y +# CONFIG_STRING_SELFTEST is not set +CONFIG_VIRTUALIZATION=y +# CONFIG_VHOST_NET is not set +# CONFIG_VHOST_CROSS_ENDIAN_LEGACY is not set diff --git a/fpga/sw/config/u-boot-xlnx-def-env.patch.2018.3 b/fpga/sw/config/u-boot-xlnx-def-env.patch.2018.3 new file mode 100644 index 00000000..aff2c51a --- /dev/null +++ b/fpga/sw/config/u-boot-xlnx-def-env.patch.2018.3 @@ -0,0 +1,22 @@ +diff a/include/configs/zynq-common.h b/include/configs/zynq-common.h +--- a/include/configs/zynq-common.h ++++ b/include/configs/zynq-common.h +@@ -215,7 +215,7 @@ + /* Default environment */ + #ifndef CONFIG_EXTRA_ENV_SETTINGS + #define CONFIG_EXTRA_ENV_SETTINGS \ +- "ethaddr=00:0a:35:00:01:22\0" \ ++ "ethaddr=0e:be:06:33:5f:c6\0" \ + "kernel_image=uImage\0" \ + "kernel_load_address=0x2080000\0" \ + "ramdisk_image=uramdisk.image.gz\0" \ +@@ -273,8 +273,7 @@ + "echo Copying Linux from SD to RAM... && " \ + "load mmc 0 ${kernel_load_address} ${kernel_image} && " \ + "load mmc 0 ${devicetree_load_address} ${devicetree_image} && " \ +- "load mmc 0 ${ramdisk_load_address} ${ramdisk_image} && " \ +- "bootm ${kernel_load_address} ${ramdisk_load_address} ${devicetree_load_address}; " \ ++ "bootm ${kernel_load_address} - ${devicetree_load_address}; " \ + "fi\0" \ + "usbboot=if usb start; then " \ + "run uenvboot; " \ diff --git a/fpga/sw/config/u-boot.config.zedboard.2018.3 b/fpga/sw/config/u-boot.config.zedboard.2018.3 new file mode 100644 index 00000000..01495f07 --- /dev/null +++ b/fpga/sw/config/u-boot.config.zedboard.2018.3 @@ -0,0 +1,1164 @@ +# +# Automatically generated file; DO NOT EDIT. +# U-Boot 2018.01 Configuration +# +CONFIG_CREATE_ARCH_SYMLINK=y +# CONFIG_ARC is not set +CONFIG_ARM=y +# CONFIG_M68K is not set +# CONFIG_MICROBLAZE is not set +# CONFIG_MIPS is not set +# CONFIG_NDS32 is not set +# CONFIG_NIOS2 is not set +# CONFIG_PPC is not set +# CONFIG_SANDBOX is not set +# CONFIG_SH is not set +# CONFIG_X86 is not set +# CONFIG_XTENSA is not set +CONFIG_SYS_ARCH="arm" +CONFIG_SYS_CPU="armv7" +CONFIG_SYS_SOC="zynq" +CONFIG_SYS_VENDOR="xilinx" +CONFIG_SYS_BOARD="zynq" +CONFIG_SYS_CONFIG_NAME="zynq-common" + +# +# ARM architecture +# +CONFIG_HAS_VBAR=y +CONFIG_HAS_THUMB2=y +CONFIG_ARM_ASM_UNIFIED=y +CONFIG_CPU_V7=y +CONFIG_SYS_ARM_ARCH=7 +CONFIG_SYS_CACHE_SHIFT_6=y +CONFIG_SYS_CACHELINE_SIZE=64 +# CONFIG_ARM_SMCCC is not set +# CONFIG_SEMIHOSTING is not set +# CONFIG_SYS_THUMB_BUILD is not set +# CONFIG_SPL_SYS_THUMB_BUILD is not set +# CONFIG_SYS_L2CACHE_OFF is not set +# CONFIG_ENABLE_ARM_SOC_BOOT0_HOOK is not set +# CONFIG_ARM_CORTEX_CPU_IS_UP is not set +CONFIG_USE_ARCH_MEMCPY=y +CONFIG_SPL_USE_ARCH_MEMCPY=y +CONFIG_USE_ARCH_MEMSET=y +CONFIG_SPL_USE_ARCH_MEMSET=y +# CONFIG_ARM64_SUPPORT_AARCH32 is not set +# CONFIG_ARCH_AT91 is not set +# CONFIG_TARGET_EDB93XX is not set +# CONFIG_TARGET_ASPENITE is not set +# CONFIG_TARGET_GPLUGD is not set +# CONFIG_ARCH_DAVINCI is not set +# CONFIG_KIRKWOOD is not set +# CONFIG_ARCH_MVEBU is not set +# CONFIG_TARGET_DEVKIT3250 is not set +# CONFIG_TARGET_WORK_92105 is not set +# CONFIG_TARGET_APF27 is not set +# CONFIG_TARGET_APX4DEVKIT is not set +# CONFIG_TARGET_XFI3 is not set +# CONFIG_TARGET_M28EVK is not set +# CONFIG_TARGET_MX23EVK is not set +# CONFIG_TARGET_MX28EVK is not set +# CONFIG_TARGET_MX23_OLINUXINO is not set +# CONFIG_TARGET_BG0900 is not set +# CONFIG_TARGET_SANSA_FUZE_PLUS is not set +# CONFIG_TARGET_SC_SPS_1 is not set +# CONFIG_ORION5X is not set +# CONFIG_TARGET_SPEAR300 is not set +# CONFIG_TARGET_SPEAR310 is not set +# CONFIG_TARGET_SPEAR320 is not set +# CONFIG_TARGET_SPEAR600 is not set +# CONFIG_TARGET_STV0991 is not set +# CONFIG_TARGET_X600 is not set +# CONFIG_TARGET_IMX31_PHYCORE is not set +# CONFIG_TARGET_IMX31_PHYCORE_EET is not set +# CONFIG_TARGET_MX31ADS is not set +# CONFIG_TARGET_MX31PDK is not set +# CONFIG_TARGET_WOODBURN is not set +# CONFIG_TARGET_WOODBURN_SD is not set +# CONFIG_TARGET_FLEA3 is not set +# CONFIG_TARGET_MX35PDK is not set +# CONFIG_ARCH_BCM283X is not set +# CONFIG_TARGET_VEXPRESS_CA15_TC2 is not set +# CONFIG_TARGET_VEXPRESS_CA5X2 is not set +# CONFIG_TARGET_VEXPRESS_CA9X4 is not set +# CONFIG_TARGET_BCM23550_W1D is not set +# CONFIG_TARGET_BCM28155_AP is not set +# CONFIG_TARGET_BCMCYGNUS is not set +# CONFIG_TARGET_BCMNSP is not set +# CONFIG_TARGET_BCMNS2 is not set +# CONFIG_ARCH_EXYNOS is not set +# CONFIG_ARCH_S5PC1XX is not set +# CONFIG_ARCH_HIGHBANK is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_KEYSTONE is not set +# CONFIG_ARCH_OMAP2PLUS is not set +# CONFIG_ARCH_MESON is not set +# CONFIG_ARCH_MX25 is not set +# CONFIG_ARCH_MX7ULP is not set +# CONFIG_ARCH_MX7 is not set +# CONFIG_ARCH_MX6 is not set +CONFIG_SPL_LDSCRIPT="arch/arm/mach-zynq/u-boot-spl.lds" +# CONFIG_ARCH_MX5 is not set +# CONFIG_ARCH_QEMU is not set +# CONFIG_ARCH_RMOBILE is not set +# CONFIG_TARGET_S32V234EVB is not set +# CONFIG_ARCH_SNAPDRAGON is not set +# CONFIG_ARCH_SOCFPGA is not set +# CONFIG_ARCH_SUNXI is not set +# CONFIG_TARGET_TS4600 is not set +# CONFIG_ARCH_VF610 is not set +CONFIG_ARCH_ZYNQ=y +# CONFIG_ARCH_ZYNQMP is not set +# CONFIG_TEGRA is not set +# CONFIG_TARGET_VEXPRESS64_AEMV8A is not set +# CONFIG_TARGET_VEXPRESS64_BASE_FVP is not set +# CONFIG_TARGET_VEXPRESS64_BASE_FVP_DRAM is not set +# CONFIG_TARGET_VEXPRESS64_JUNO is not set +# CONFIG_TARGET_LS2080A_EMU is not set +# CONFIG_TARGET_LS2080A_SIMU is not set +# CONFIG_TARGET_LS1088AQDS is not set +# CONFIG_TARGET_LS2080AQDS is not set +# CONFIG_TARGET_LS2080ARDB is not set +# CONFIG_TARGET_LS2081ARDB is not set +# CONFIG_TARGET_HIKEY is not set +# CONFIG_TARGET_POPLAR is not set +# CONFIG_TARGET_LS1012AQDS is not set +# CONFIG_TARGET_LS1012ARDB is not set +# CONFIG_TARGET_LS1012AFRDM is not set +# CONFIG_TARGET_LS1088ARDB is not set +# CONFIG_TARGET_LS1021AQDS is not set +# CONFIG_TARGET_LS1021ATWR is not set +# CONFIG_TARGET_LS1021AIOT is not set +# CONFIG_TARGET_LS1043AQDS is not set +# CONFIG_TARGET_LS1043ARDB is not set +# CONFIG_TARGET_LS1046AQDS is not set +# CONFIG_TARGET_LS1046ARDB is not set +# CONFIG_TARGET_H2200 is not set +# CONFIG_TARGET_ZIPITZ2 is not set +# CONFIG_TARGET_COLIBRI_PXA270 is not set +# CONFIG_ARCH_UNIPHIER is not set +# CONFIG_STM32 is not set +# CONFIG_ARCH_STI is not set +# CONFIG_ARCH_ROCKCHIP is not set +# CONFIG_TARGET_THUNDERX_88XX is not set +# CONFIG_ARCH_ASPEED is not set +CONFIG_SYS_TEXT_BASE=0x4000000 +# CONFIG_SPL_GPIO_SUPPORT is not set +CONFIG_SPL_LIBCOMMON_SUPPORT=y +CONFIG_SPL_LIBGENERIC_SUPPORT=y +CONFIG_SYS_MALLOC_F_LEN=0x600 +CONFIG_SPL_MMC_SUPPORT=y +CONFIG_SPL_SERIAL_SUPPORT=y +# CONFIG_SPL_DRIVERS_MISC_SUPPORT is not set +CONFIG_SPL_LIBDISK_SUPPORT=y +# CONFIG_SPL_NAND_SUPPORT is not set +CONFIG_SPL_SPI_FLASH_SUPPORT=y +CONFIG_SPL_SPI_SUPPORT=y +# CONFIG_SPL_WATCHDOG_SUPPORT is not set +CONFIG_IDENT_STRING="" +CONFIG_SPL_STACK_R_ADDR=0x200000 +CONFIG_SPL_FAT_SUPPORT=y +CONFIG_ZYNQ_DDRC_INIT=y +CONFIG_SYS_MALLOC_LEN=0x1400000 +CONFIG_BOOT_INIT_FILE="" +# CONFIG_ZYNQ_M29EW_WB_HACK is not set +# CONFIG_ARMV7_LPAE is not set +# CONFIG_CMD_DEKBLOB is not set +# CONFIG_CMD_HDMIDETECT is not set +CONFIG_XILINX_PS_INIT_FILE="" + +# +# ARM debug +# +# CONFIG_DEBUG_LL is not set +CONFIG_DEFAULT_DEVICE_TREE="zynq-zed" +CONFIG_SMBIOS_PRODUCT_NAME="zynq" +CONFIG_DEBUG_UART=y +# CONFIG_AHCI is not set + +# +# General setup +# +CONFIG_LOCALVERSION="" +CONFIG_LOCALVERSION_AUTO=y +CONFIG_CC_OPTIMIZE_FOR_SIZE=y +CONFIG_DISTRO_DEFAULTS=y +CONFIG_SYS_MALLOC_F=y +CONFIG_SPL_SYS_MALLOC_F_LEN=0x600 +CONFIG_TPL_SYS_MALLOC_F_LEN=0x600 +CONFIG_EXPERT=y +CONFIG_SYS_MALLOC_CLEAR_ON_INIT=y +# CONFIG_TOOLS_DEBUG is not set +# CONFIG_PHYS_64BIT is not set + +# +# Boot images +# +# CONFIG_ANDROID_BOOT_IMAGE is not set +CONFIG_FIT=y +CONFIG_FIT_ENABLE_SHA256_SUPPORT=y +CONFIG_FIT_SIGNATURE=y +CONFIG_FIT_VERBOSE=y +# CONFIG_FIT_BEST_MATCH is not set +# CONFIG_SPL_FIT is not set +# CONFIG_SPL_FIT_SIGNATURE is not set +# CONFIG_SPL_LOAD_FIT is not set +# CONFIG_OF_BOARD_SETUP is not set +# CONFIG_OF_SYSTEM_SETUP is not set +# CONFIG_OF_STDOUT_VIA_ALIAS is not set +CONFIG_SYS_EXTRA_OPTIONS="" +CONFIG_ARCH_FIXUP_FDT_MEMORY=y + +# +# API +# +# CONFIG_API is not set + +# +# Boot timing +# +# CONFIG_BOOTSTAGE is not set +CONFIG_BOOTSTAGE_RECORD_COUNT=30 +CONFIG_SPL_BOOTSTAGE_RECORD_COUNT=5 +CONFIG_BOOTSTAGE_STASH_ADDR=0 +CONFIG_BOOTSTAGE_STASH_SIZE=0x1000 + +# +# Boot media +# +# CONFIG_NAND_BOOT is not set +# CONFIG_ONENAND_BOOT is not set +# CONFIG_QSPI_BOOT is not set +# CONFIG_SATA_BOOT is not set +# CONFIG_SD_BOOT is not set +# CONFIG_SPI_BOOT is not set +CONFIG_BOOTDELAY=2 +# CONFIG_USE_BOOTARGS is not set +CONFIG_USE_BOOTCOMMAND=y +CONFIG_BOOTCOMMAND="run $modeboot || run distro_bootcmd" + +# +# Console +# +CONFIG_MENU=y +# CONFIG_CONSOLE_RECORD is not set +CONFIG_LOGLEVEL=4 +CONFIG_SPL_LOGLEVEL=4 +# CONFIG_SILENT_CONSOLE is not set +# CONFIG_PRE_CONSOLE_BUFFER is not set +# CONFIG_CONSOLE_MUX is not set +# CONFIG_SYS_CONSOLE_IS_IN_ENV is not set +# CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE is not set +# CONFIG_SYS_CONSOLE_ENV_OVERWRITE is not set +# CONFIG_SYS_CONSOLE_INFO_QUIET is not set +# CONFIG_SYS_STDIO_DEREGISTER is not set + +# +# Logging +# +# CONFIG_LOG is not set +# CONFIG_SPL_LOG is not set +CONFIG_DEFAULT_FDT_FILE="" +# CONFIG_VERSION_VARIABLE is not set +CONFIG_BOARD_LATE_INIT=y +# CONFIG_DISPLAY_CPUINFO is not set +CONFIG_DISPLAY_BOARDINFO=y + +# +# Start-up hooks +# +# CONFIG_ARCH_EARLY_INIT_R is not set +# CONFIG_ARCH_MISC_INIT is not set +# CONFIG_BOARD_EARLY_INIT_F is not set + +# +# Security support +# +CONFIG_HASH=y + +# +# SPL / TPL +# +CONFIG_SUPPORT_SPL=y +CONFIG_SPL=y +CONFIG_SPL_BOARD_INIT=y +# CONFIG_SPL_BOOTROM_SUPPORT is not set +CONFIG_SPL_RAW_IMAGE_SUPPORT=y +CONFIG_SPL_LEGACY_IMAGE_SUPPORT=y +# CONFIG_SPL_SYS_MALLOC_SIMPLE is not set +# CONFIG_TPL_SYS_MALLOC_SIMPLE is not set +CONFIG_SPL_STACK_R=y +CONFIG_SPL_SEPARATE_BSS=y +# CONFIG_SPL_DISPLAY_PRINT is not set +CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR=y +CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR=0x300 +# CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION is not set +# CONFIG_SPL_CPU_SUPPORT is not set +# CONFIG_SPL_CRYPTO_SUPPORT is not set +# CONFIG_SPL_HASH_SUPPORT is not set +# CONFIG_SPL_DMA_SUPPORT is not set +# CONFIG_SPL_ENV_SUPPORT is not set +# CONFIG_SPL_EXT_SUPPORT is not set +# CONFIG_SPL_FPGA_SUPPORT is not set +# CONFIG_SPL_I2C_SUPPORT is not set +# CONFIG_SPL_MPC8XXX_INIT_DDR_SUPPORT is not set +# CONFIG_SPL_MTD_SUPPORT is not set +# CONFIG_SPL_MUSB_NEW_SUPPORT is not set +# CONFIG_SPL_NET_SUPPORT is not set +# CONFIG_SPL_NO_CPU_SUPPORT is not set +# CONFIG_SPL_NOR_SUPPORT is not set +# CONFIG_SPL_XIP_SUPPORT is not set +# CONFIG_SPL_ONENAND_SUPPORT is not set +CONFIG_SPL_OS_BOOT=y +# CONFIG_SPL_PCI_SUPPORT is not set +# CONFIG_SPL_PCH_SUPPORT is not set +# CONFIG_SPL_POST_MEM_SUPPORT is not set +# CONFIG_SPL_POWER_SUPPORT is not set +CONFIG_SPL_RAM_SUPPORT=y +CONFIG_SPL_RAM_DEVICE=y +# CONFIG_SPL_RTC_SUPPORT is not set +# CONFIG_SPL_SATA_SUPPORT is not set +# CONFIG_SPL_THERMAL is not set +# CONFIG_SPL_USB_HOST_SUPPORT is not set +# CONFIG_SPL_USB_GADGET_SUPPORT is not set +# CONFIG_SPL_YMODEM_SUPPORT is not set + +# +# Command line interface +# +CONFIG_CMDLINE=y +CONFIG_HUSH_PARSER=y +CONFIG_SYS_PROMPT="Zynq> " + +# +# Autoboot options +# +CONFIG_AUTOBOOT=y +# CONFIG_AUTOBOOT_KEYED is not set + +# +# FASTBOOT +# +# CONFIG_FASTBOOT is not set + +# +# Commands +# + +# +# Info commands +# +CONFIG_CMD_BDI=y +# CONFIG_CMD_CONFIG is not set +CONFIG_CMD_CONSOLE=y +# CONFIG_CMD_CPU is not set +# CONFIG_CMD_LICENSE is not set + +# +# Boot commands +# +CONFIG_CMD_BOOTD=y +CONFIG_CMD_BOOTM=y +CONFIG_CMD_BOOTZ=y +CONFIG_CMD_BOOTEFI=y +CONFIG_CMD_BOOTEFI_HELLO_COMPILE=y +# CONFIG_CMD_BOOTEFI_HELLO is not set +# CONFIG_CMD_BOOTEFI_SELFTEST is not set +# CONFIG_CMD_BOOTMENU is not set +CONFIG_CMD_ELF=y +CONFIG_CMD_FDT=y +CONFIG_CMD_GO=y +CONFIG_CMD_RUN=y +CONFIG_CMD_IMI=y +# CONFIG_CMD_IMLS is not set +CONFIG_CMD_XIMG=y +# CONFIG_CMD_POWEROFF is not set +CONFIG_CMD_SPL=y +CONFIG_CMD_SPL_NAND_OFS=0 +CONFIG_CMD_SPL_WRITE_SIZE=0x2000 +CONFIG_CMD_THOR_DOWNLOAD=y +# CONFIG_CMD_ZBOOT is not set + +# +# Environment commands +# +# CONFIG_CMD_ASKENV is not set +CONFIG_CMD_EXPORTENV=y +CONFIG_CMD_IMPORTENV=y +CONFIG_CMD_EDITENV=y +# CONFIG_CMD_GREPENV is not set +CONFIG_CMD_SAVEENV=y +CONFIG_CMD_ENV_EXISTS=y +# CONFIG_CMD_ENV_CALLBACK is not set +# CONFIG_CMD_ENV_FLAGS is not set + +# +# Memory commands +# +CONFIG_CMD_CRC32=y +# CONFIG_CRC32_VERIFY is not set +# CONFIG_CMD_EEPROM is not set +# CONFIG_LOOPW is not set +# CONFIG_CMD_MD5SUM is not set +# CONFIG_CMD_MEMINFO is not set +CONFIG_CMD_MEMORY=y +# CONFIG_CMD_MEMTEST is not set +# CONFIG_CMD_MX_CYCLIC is not set +# CONFIG_CMD_SHA1SUM is not set +# CONFIG_CMD_STRINGS is not set + +# +# Compression commands +# +# CONFIG_CMD_LZMADEC is not set +# CONFIG_CMD_UNZIP is not set +# CONFIG_CMD_ZIP is not set + +# +# Device access commands +# +# CONFIG_CMD_ARMFLASH is not set +CONFIG_CMD_CLK=y +# CONFIG_CMD_DEMO is not set +CONFIG_CMD_DFU=y +CONFIG_CMD_DM=y +# CONFIG_CMD_FDC is not set +# CONFIG_CMD_FLASH is not set +CONFIG_CMD_FPGA=y +CONFIG_CMD_FPGA_LOADBP=y +CONFIG_CMD_FPGA_LOADFS=y +CONFIG_CMD_FPGA_LOADMK=y +CONFIG_CMD_FPGA_LOADP=y +# CONFIG_CMD_FPGA_LOAD_SECURE is not set +# CONFIG_CMD_FPGAD is not set +# CONFIG_CMD_FUSE is not set +CONFIG_CMD_GPIO=y +# CONFIG_CMD_GPT is not set +# CONFIG_RANDOM_UUID is not set +# CONFIG_CMD_IDE is not set +# CONFIG_CMD_IO is not set +# CONFIG_CMD_IOTRACE is not set +# CONFIG_CMD_I2C is not set +CONFIG_CMD_LOADB=y +CONFIG_CMD_LOADS=y +CONFIG_CMD_MMC=y +# CONFIG_CMD_NAND is not set +# CONFIG_CMD_MMC_SPI is not set +# CONFIG_CMD_ONENAND is not set +CONFIG_CMD_PART=y +# CONFIG_CMD_PCI is not set +# CONFIG_CMD_PCMCIA is not set +# CONFIG_CMD_READ is not set +# CONFIG_CMD_SATA is not set +# CONFIG_CMD_SAVES is not set +# CONFIG_CMD_SDRAM is not set +CONFIG_CMD_SF=y +# CONFIG_CMD_SF_TEST is not set +# CONFIG_CMD_SPI is not set +# CONFIG_CMD_TSI148 is not set +# CONFIG_CMD_UNIVERSE is not set +CONFIG_CMD_USB=y +# CONFIG_CMD_USB_SDP is not set +# CONFIG_CMD_USB_MASS_STORAGE is not set + +# +# Shell scripting commands +# +CONFIG_CMD_ECHO=y +CONFIG_CMD_ITEST=y +CONFIG_CMD_SOURCE=y +# CONFIG_CMD_SETEXPR is not set + +# +# Network commands +# +CONFIG_CMD_NET=y +CONFIG_CMD_TFTPPUT=y +# CONFIG_CMD_TFTPSRV is not set +# CONFIG_CMD_RARP is not set +CONFIG_CMD_DHCP=y +CONFIG_CMD_PXE=y +CONFIG_CMD_NFS=y +CONFIG_CMD_MII=y +CONFIG_CMD_PING=y +# CONFIG_CMD_CDP is not set +# CONFIG_CMD_SNTP is not set +# CONFIG_CMD_DNS is not set +# CONFIG_CMD_LINK_LOCAL is not set +# CONFIG_CMD_ETHSW is not set + +# +# Misc commands +# +# CONFIG_CMD_BSP is not set +# CONFIG_CMD_BKOPS_ENABLE is not set +CONFIG_CMD_CACHE=y +# CONFIG_CMD_DISPLAY is not set +# CONFIG_CMD_LED is not set +# CONFIG_CMD_DATE is not set +# CONFIG_CMD_TIME is not set +# CONFIG_CMD_GETTIME is not set +CONFIG_CMD_MISC=y +# CONFIG_MP is not set +# CONFIG_CMD_TIMER is not set +# CONFIG_CMD_ZYNQ_AES is not set +# CONFIG_CMD_ZYNQ_RSA is not set +# CONFIG_CMD_QFW is not set +# CONFIG_CMD_TERMINAL is not set +# CONFIG_CMD_UUID is not set + +# +# Power commands +# + +# +# Security commands +# +# CONFIG_CMD_AES is not set +# CONFIG_CMD_BLOB is not set +# CONFIG_CMD_HASH is not set + +# +# Firmware commands +# + +# +# Filesystem commands +# +# CONFIG_CMD_BTRFS is not set +CONFIG_CMD_EXT2=y +CONFIG_CMD_EXT4=y +CONFIG_CMD_EXT4_WRITE=y +CONFIG_CMD_FAT=y +CONFIG_CMD_FS_GENERIC=y +# CONFIG_CMD_FS_UUID is not set +# CONFIG_CMD_JFFS2 is not set +# CONFIG_CMD_MTDPARTS is not set +# CONFIG_CMD_REISER is not set +# CONFIG_CMD_SCSI is not set +# CONFIG_CMD_ZFS is not set + +# +# Debug commands +# +# CONFIG_CMD_BEDBUG is not set +# CONFIG_CMD_DIAG is not set +# CONFIG_CMD_LOG is not set +# CONFIG_CMD_TRACE is not set +# CONFIG_CMD_UBI is not set + +# +# Partition Types +# +CONFIG_PARTITIONS=y +# CONFIG_MAC_PARTITION is not set +# CONFIG_SPL_MAC_PARTITION is not set +CONFIG_DOS_PARTITION=y +CONFIG_SPL_DOS_PARTITION=y +CONFIG_ISO_PARTITION=y +CONFIG_SPL_ISO_PARTITION=y +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_SPL_AMIGA_PARTITION is not set +CONFIG_EFI_PARTITION=y +CONFIG_EFI_PARTITION_ENTRIES_NUMBERS=128 +CONFIG_EFI_PARTITION_ENTRIES_OFF=0 +CONFIG_SPL_EFI_PARTITION=y +CONFIG_PARTITION_UUIDS=y +CONFIG_SPL_PARTITION_UUIDS=y +# CONFIG_PARTITION_TYPE_GUID is not set +CONFIG_SUPPORT_OF_CONTROL=y +CONFIG_DTC=y + +# +# Device Tree Control +# +CONFIG_OF_CONTROL=y +# CONFIG_OF_BOARD_FIXUP is not set +CONFIG_SPL_OF_CONTROL=y +# CONFIG_OF_LIVE is not set +# CONFIG_OF_SEPARATE is not set +CONFIG_OF_EMBED=y +# CONFIG_OF_BOARD is not set +# CONFIG_MULTI_DTB_FIT is not set +CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names interrupt-parent" +# CONFIG_SPL_OF_PLATDATA is not set +CONFIG_MKIMAGE_DTC_PATH="dtc" + +# +# Environment +# +# CONFIG_ENV_IS_NOWHERE is not set +# CONFIG_ENV_IS_IN_EEPROM is not set +# CONFIG_ENV_IS_IN_FAT is not set +# CONFIG_ENV_IS_IN_FLASH is not set +# CONFIG_ENV_IS_IN_MMC is not set +# CONFIG_ENV_IS_IN_NAND is not set +# CONFIG_ENV_IS_IN_NVRAM is not set +# CONFIG_ENV_IS_IN_ONENAND is not set +# CONFIG_ENV_IS_IN_REMOTE is not set +CONFIG_ENV_IS_IN_SPI_FLASH=y +# CONFIG_ENV_IS_IN_UBI is not set +CONFIG_NET=y +CONFIG_NET_RANDOM_ETHADDR=y +# CONFIG_NETCONSOLE is not set +CONFIG_NET_TFTP_VARS=y +CONFIG_BOOTP_PXE_CLIENTARCH=0x15 +CONFIG_BOOTP_VCI_STRING="U-Boot.armv7" + +# +# Device Drivers +# + +# +# Generic Driver Options +# +CONFIG_DM=y +CONFIG_SPL_DM=y +CONFIG_DM_WARN=y +# CONFIG_DM_DEBUG is not set +CONFIG_DM_DEVICE_REMOVE=y +CONFIG_DM_STDIO=y +CONFIG_DM_SEQ_ALIAS=y +CONFIG_SPL_DM_SEQ_ALIAS=y +# CONFIG_REGMAP is not set +# CONFIG_SPL_REGMAP is not set +# CONFIG_DEVRES is not set +CONFIG_SIMPLE_BUS=y +CONFIG_SPL_SIMPLE_BUS=y +CONFIG_OF_TRANSLATE=y +# CONFIG_SPL_OF_TRANSLATE is not set +CONFIG_DM_DEV_READ_INLINE=y +# CONFIG_ADC is not set +# CONFIG_ADC_EXYNOS is not set +# CONFIG_ADC_SANDBOX is not set +# CONFIG_SARADC_ROCKCHIP is not set +# CONFIG_SATA is not set +# CONFIG_SCSI_AHCI is not set + +# +# SATA/SCSI device support +# +# CONFIG_DWC_AHSATA is not set +# CONFIG_FSL_SATA is not set +# CONFIG_MVSATA_IDE is not set +# CONFIG_SATA_MV is not set +# CONFIG_SATA_SIL is not set +# CONFIG_SATA_SIL3114 is not set +CONFIG_BLK=y +CONFIG_SPL_BLK=y +# CONFIG_BLOCK_CACHE is not set +# CONFIG_IDE is not set + +# +# Boot count support +# +# CONFIG_BOOTCOUNT is not set + +# +# Clock +# +CONFIG_CLK=y +CONFIG_SPL_CLK=y +# CONFIG_CLK_HSDK is not set +CONFIG_CLK_ZYNQ=y +# CONFIG_CLK_AT91 is not set +# CONFIG_CPU is not set + +# +# Hardware crypto devices +# +# CONFIG_FSL_CAAM is not set +# CONFIG_SYS_FSL_SEC_BE is not set +# CONFIG_SYS_FSL_SEC_LE is not set + +# +# Demo for driver model +# +# CONFIG_DM_DEMO is not set + +# +# DFU support +# +CONFIG_USB_FUNCTION_DFU=y +# CONFIG_DFU_TFTP is not set +CONFIG_DFU_MMC=y +# CONFIG_DFU_NAND is not set +CONFIG_DFU_RAM=y +# CONFIG_DFU_SF is not set + +# +# DMA Support +# +# CONFIG_DMA is not set +# CONFIG_TI_EDMA3 is not set + +# +# FPGA support +# +CONFIG_FPGA=y +# CONFIG_FPGA_ALTERA is not set +# CONFIG_FPGA_SOCFPGA is not set +CONFIG_FPGA_XILINX=y +# CONFIG_FPGA_ZYNQMPPL is not set + +# +# GPIO Support +# +CONFIG_DM_GPIO=y +# CONFIG_ALTERA_PIO is not set +# CONFIG_DWAPB_GPIO is not set +# CONFIG_AT91_GPIO is not set +# CONFIG_ATMEL_PIO4 is not set +# CONFIG_INTEL_BROADWELL_GPIO is not set +# CONFIG_INTEL_ICH6_GPIO is not set +# CONFIG_IMX_RGPIO2P is not set +# CONFIG_HSDK_CREG_GPIO is not set +# CONFIG_LPC32XX_GPIO is not set +# CONFIG_MSM_GPIO is not set +# CONFIG_CMD_PCA953X is not set +# CONFIG_ROCKCHIP_GPIO is not set +# CONFIG_CMD_TCA642X is not set +# CONFIG_TEGRA_GPIO is not set +# CONFIG_TEGRA186_GPIO is not set +# CONFIG_VYBRID_GPIO is not set +CONFIG_ZYNQ_GPIO=y +# CONFIG_DM_74X164 is not set +# CONFIG_DM_PCA953X is not set +# CONFIG_MPC85XX_GPIO is not set + +# +# I2C support +# +# CONFIG_DM_I2C is not set +# CONFIG_DM_I2C_COMPAT is not set +# CONFIG_SYS_I2C_DW is not set +# CONFIG_SYS_I2C_IMX_LPI2C is not set +# CONFIG_DM_KEYBOARD is not set +# CONFIG_CROS_EC_KEYB is not set + +# +# LED Support +# +# CONFIG_LED is not set +# CONFIG_SPL_LED is not set +# CONFIG_LED_STATUS is not set + +# +# Mailbox Controller Support +# +# CONFIG_DM_MAILBOX is not set + +# +# Memory Controller drivers +# + +# +# Multifunction device drivers +# +# CONFIG_MISC is not set +# CONFIG_CROS_EC is not set +# CONFIG_DS4510 is not set +# CONFIG_FSL_SEC_MON is not set +# CONFIG_MXC_OCOTP is not set +# CONFIG_NUVOTON_NCT6102D is not set +# CONFIG_PWRSEQ is not set +# CONFIG_PCA9551_LED is not set +# CONFIG_WINBOND_W83627 is not set + +# +# MMC Host controller Support +# +CONFIG_MMC=y +CONFIG_DM_MMC=y +CONFIG_SPL_DM_MMC=y +# CONFIG_ARM_PL180_MMCI is not set +# CONFIG_SPL_MMC_TINY is not set +# CONFIG_MMC_DW is not set +# CONFIG_MMC_MXC is not set +# CONFIG_MMC_MXS is not set +# CONFIG_MMC_PCI is not set +# CONFIG_MMC_OMAP_HS is not set +CONFIG_MMC_SDHCI=y +# CONFIG_MMC_SDHCI_SDMA is not set +# CONFIG_MMC_SDHCI_CADENCE is not set +# CONFIG_MMC_SDHCI_KONA is not set +# CONFIG_MMC_SDHCI_MSM is not set +# CONFIG_MMC_SDHCI_S5P is not set +# CONFIG_MMC_SDHCI_SPEAR is not set +# CONFIG_MMC_SDHCI_STI is not set +# CONFIG_MMC_SDHCI_XENON is not set +# CONFIG_MMC_SDHCI_TANGIER is not set +CONFIG_MMC_SDHCI_ZYNQ=y +# CONFIG_STM32_SDMMC2 is not set +# CONFIG_FTSDC010 is not set + +# +# MTD Support +# +# CONFIG_MTD is not set +# CONFIG_MTD_NOR_FLASH is not set +# CONFIG_NAND is not set + +# +# SPI Flash Support +# +CONFIG_DM_SPI_FLASH=y +CONFIG_SPI_FLASH=y +CONFIG_SPI_FLASH_BAR=y +CONFIG_SF_DUAL_FLASH=y +# CONFIG_SPI_FLASH_ATMEL is not set +# CONFIG_SPI_FLASH_EON is not set +# CONFIG_SPI_FLASH_GIGADEVICE is not set +# CONFIG_SPI_FLASH_ISSI is not set +# CONFIG_SPI_FLASH_MACRONIX is not set +CONFIG_SPI_FLASH_SPANSION=y +CONFIG_SPI_FLASH_STMICRO=y +# CONFIG_SPI_FLASH_SST is not set +CONFIG_SPI_FLASH_WINBOND=y +CONFIG_SPI_FLASH_USE_4K_SECTORS=y +# CONFIG_SPI_FLASH_DATAFLASH is not set +# CONFIG_SPI_FLASH_MTD is not set + +# +# UBI support +# +# CONFIG_MTD_UBI is not set +# CONFIG_BITBANGMII is not set +# CONFIG_MV88E6352_SWITCH is not set +CONFIG_PHYLIB=y +# CONFIG_MV88E61XX_SWITCH is not set +# CONFIG_PHYLIB_10G is not set +# CONFIG_PHY_AQUANTIA is not set +# CONFIG_PHY_ATHEROS is not set +# CONFIG_PHY_BROADCOM is not set +# CONFIG_PHY_CORTINA is not set +# CONFIG_PHY_DAVICOM is not set +# CONFIG_PHY_ET1011C is not set +# CONFIG_PHY_LXT is not set +CONFIG_PHY_MARVELL=y +# CONFIG_PHY_MESON_GXL is not set +# CONFIG_PHY_MICREL is not set +# CONFIG_PHY_MSCC is not set +# CONFIG_PHY_NATSEMI is not set +CONFIG_PHY_REALTEK=y +# CONFIG_RTL8211X_PHY_FORCE_MASTER is not set +# CONFIG_PHY_SMSC is not set +# CONFIG_PHY_TERANETICS is not set +# CONFIG_PHY_TI is not set +# CONFIG_PHY_VITESSE is not set +CONFIG_PHY_XILINX=y +# CONFIG_PHY_XILINX_GMII2RGMII is not set +# CONFIG_PHY_FIXED is not set +CONFIG_DM_ETH=y +CONFIG_NETDEVICES=y +# CONFIG_PHY_GIGE is not set +# CONFIG_ALTERA_TSE is not set +# CONFIG_BCM_SF2_ETH is not set +# CONFIG_DWC_ETH_QOS is not set +# CONFIG_E1000 is not set +# CONFIG_ETH_DESIGNWARE is not set +# CONFIG_ETHOC is not set +# CONFIG_FTMAC100 is not set +# CONFIG_MACB is not set +# CONFIG_RGMII is not set +# CONFIG_RTL8139 is not set +# CONFIG_RTL8169 is not set +# CONFIG_SMC911X is not set +# CONFIG_SUN7I_GMAC is not set +# CONFIG_SUN4I_EMAC is not set +# CONFIG_SUN8I_EMAC is not set +# CONFIG_XILINX_AXIEMAC is not set +# CONFIG_XILINX_EMACLITE is not set +CONFIG_ZYNQ_GEM=y +# CONFIG_PCI is not set + +# +# PHY Subsystem +# +# CONFIG_PHY is not set +# CONFIG_SPL_PHY is not set +# CONFIG_MVEBU_COMPHY_SUPPORT is not set + +# +# Pin controllers +# +# CONFIG_PINCTRL is not set +# CONFIG_SPL_PINCTRL is not set + +# +# Power +# + +# +# Power Domain Support +# +# CONFIG_POWER_DOMAIN is not set +# CONFIG_DM_PMIC is not set +# CONFIG_PMIC_AS3722 is not set +# CONFIG_POWER_MC34VR500 is not set +# CONFIG_DM_REGULATOR is not set +# CONFIG_DM_PWM is not set +# CONFIG_PWM_SANDBOX is not set +# CONFIG_RAM is not set + +# +# Remote Processor drivers +# + +# +# Reset Controller Support +# +# CONFIG_DM_RESET is not set + +# +# Real Time Clock +# +# CONFIG_DM_RTC is not set +# CONFIG_RTC_S35392A is not set +# CONFIG_SCSI is not set +# CONFIG_DM_SCSI is not set + +# +# Serial drivers +# +CONFIG_BAUDRATE=115200 +CONFIG_REQUIRE_SERIAL_CONSOLE=y +CONFIG_SERIAL_PRESENT=y +CONFIG_SPL_SERIAL_PRESENT=y +CONFIG_DM_SERIAL=y +# CONFIG_SERIAL_RX_BUFFER is not set +CONFIG_SPL_DM_SERIAL=y +# CONFIG_TPL_DM_SERIAL is not set +# CONFIG_DEBUG_UART_ALTERA_JTAGUART is not set +# CONFIG_DEBUG_UART_ALTERA_UART is not set +# CONFIG_DEBUG_UART_ATMEL is not set +# CONFIG_DEBUG_UART_NS16550 is not set +# CONFIG_DEBUG_UART_S5P is not set +# CONFIG_DEBUG_UART_UARTLITE is not set +# CONFIG_DEBUG_UART_ARM_DCC is not set +# CONFIG_DEBUG_MVEBU_A3700_UART is not set +CONFIG_DEBUG_UART_ZYNQ=y +# CONFIG_DEBUG_UART_PL010 is not set +# CONFIG_DEBUG_UART_PL011 is not set +# CONFIG_DEBUG_UART_OMAP is not set +CONFIG_DEBUG_UART_BASE=0xe0001000 +CONFIG_DEBUG_UART_CLOCK=50000000 +CONFIG_DEBUG_UART_SHIFT=0 +# CONFIG_DEBUG_UART_BOARD_INIT is not set +# CONFIG_DEBUG_UART_ANNOUNCE is not set +# CONFIG_DEBUG_UART_SKIP_INIT is not set +# CONFIG_ALTERA_JTAG_UART is not set +# CONFIG_ALTERA_UART is not set +# CONFIG_ATMEL_USART is not set +# CONFIG_FSL_LPUART is not set +# CONFIG_MVEBU_A3700_UART is not set +# CONFIG_NULLDEV_SERIAL is not set +# CONFIG_SYS_NS16550 is not set +# CONFIG_XILINX_UARTLITE is not set +# CONFIG_MSM_SERIAL is not set +# CONFIG_PXA_SERIAL is not set +CONFIG_ZYNQ_SERIAL=y + +# +# Sound support +# +# CONFIG_SOUND is not set + +# +# SPI Support +# +CONFIG_DM_SPI=y +# CONFIG_ALTERA_SPI is not set +# CONFIG_CADENCE_QSPI is not set +# CONFIG_DESIGNWARE_SPI is not set +# CONFIG_EXYNOS_SPI is not set +# CONFIG_FSL_DSPI is not set +# CONFIG_ICH_SPI is not set +# CONFIG_MVEBU_A3700_SPI is not set +# CONFIG_ROCKCHIP_SPI is not set +# CONFIG_TEGRA114_SPI is not set +# CONFIG_TEGRA20_SFLASH is not set +# CONFIG_TEGRA20_SLINK is not set +# CONFIG_TEGRA210_QSPI is not set +# CONFIG_XILINX_SPI is not set +# CONFIG_ZYNQ_SPI is not set +CONFIG_ZYNQ_QSPI=y +# CONFIG_SOFT_SPI is not set +# CONFIG_FSL_ESPI is not set +# CONFIG_FSL_QSPI is not set +# CONFIG_ATCSPI200_SPI is not set +# CONFIG_TI_QSPI is not set +# CONFIG_OMAP3_SPI is not set + +# +# SPMI support +# +# CONFIG_SPMI is not set + +# +# System reset device drivers +# +# CONFIG_SYSRESET is not set +# CONFIG_SYSRESET_SYSCON is not set +# CONFIG_SYSRESET_WATCHDOG is not set +# CONFIG_DM_THERMAL is not set + +# +# Timer Support +# +# CONFIG_TIMER is not set + +# +# TPM support +# +CONFIG_USB=y +CONFIG_DM_USB=y + +# +# USB Host Controller Drivers +# +CONFIG_USB_HOST=y +# CONFIG_USB_XHCI_HCD is not set +CONFIG_USB_EHCI_HCD=y +# CONFIG_USB_EHCI_MSM is not set +# CONFIG_USB_EHCI_PCI is not set +CONFIG_USB_EHCI_ZYNQ=y +# CONFIG_USB_EHCI_GENERIC is not set +# CONFIG_USB_OHCI_HCD is not set +# CONFIG_USB_UHCI_HCD is not set +# CONFIG_USB_DWC2 is not set +# CONFIG_USB_DWC3 is not set + +# +# MUSB Controller Driver +# +# CONFIG_USB_MUSB_HOST is not set +# CONFIG_USB_MUSB_GADGET is not set +# CONFIG_USB_MUSB_TI is not set + +# +# ULPI drivers +# +CONFIG_USB_ULPI_VIEWPORT=y +# CONFIG_USB_ULPI_VIEWPORT_OMAP is not set +CONFIG_USB_ULPI=y + +# +# USB peripherals +# +CONFIG_USB_STORAGE=y +# CONFIG_USB_KEYBOARD is not set +CONFIG_USB_GADGET=y +CONFIG_USB_GADGET_MANUFACTURER="Xilinx" +CONFIG_USB_GADGET_VENDOR_NUM=0x03fd +CONFIG_USB_GADGET_PRODUCT_NUM=0x0300 +# CONFIG_USB_GADGET_ATMEL_USBA is not set +# CONFIG_USB_GADGET_BCM_UDC_OTG_PHY is not set +# CONFIG_USB_GADGET_DWC2_OTG is not set +CONFIG_CI_UDC=y +CONFIG_USB_GADGET_VBUS_DRAW=2 +CONFIG_USB_GADGET_DUALSPEED=y +CONFIG_USB_GADGET_DOWNLOAD=y +# CONFIG_USB_FUNCTION_SDP is not set +# CONFIG_USB_ETHER is not set +# CONFIG_USB_HOST_ETHER is not set + +# +# Graphics support +# +# CONFIG_DM_VIDEO is not set +# CONFIG_SYS_WHITE_ON_BLACK is not set +# CONFIG_NO_FB_CLEAR is not set + +# +# TrueType Fonts +# +# CONFIG_VIDEO_VESA is not set +# CONFIG_VIDEO_LCD_ANX9804 is not set +# CONFIG_VIDEO_LCD_SSD2828 is not set +# CONFIG_VIDEO_MVEBU is not set +# CONFIG_DISPLAY is not set +# CONFIG_VIDEO_TEGRA20 is not set +# CONFIG_VIDEO_BRIDGE is not set +# CONFIG_VIDEO is not set +# CONFIG_LCD is not set +# CONFIG_VIDEO_SIMPLE is not set +# CONFIG_VIDEO_DT_SIMPLEFB is not set + +# +# Watchdog Timer Support +# +# CONFIG_WATCHDOG is not set +# CONFIG_BCM2835_WDT is not set +# CONFIG_ULP_WATCHDOG is not set +# CONFIG_WDT is not set +# CONFIG_PHYS_TO_BUS is not set + +# +# File systems +# +# CONFIG_FS_BTRFS is not set +# CONFIG_FS_CBFS is not set +CONFIG_FS_FAT=y +CONFIG_FAT_WRITE=y +CONFIG_FS_FAT_MAX_CLUSTSIZE=65536 +# CONFIG_FS_JFFS2 is not set +# CONFIG_FS_CRAMFS is not set +# CONFIG_YAFFS2 is not set + +# +# Library routines +# +# CONFIG_BCH is not set +# CONFIG_CC_OPTIMIZE_LIBS_FOR_SPEED is not set +CONFIG_HAVE_PRIVATE_LIBGCC=y +CONFIG_USE_PRIVATE_LIBGCC=y +CONFIG_SYS_HZ=1000 +# CONFIG_USE_TINY_PRINTF is not set +# CONFIG_PANIC_HANG is not set +CONFIG_REGEX=y +CONFIG_LIB_RAND=y +# CONFIG_SPL_TINY_MEMSET is not set +# CONFIG_TPL_TINY_MEMSET is not set +# CONFIG_BITREVERSE is not set +# CONFIG_CMD_DHRYSTONE is not set + +# +# Security support +# +# CONFIG_AES is not set +CONFIG_RSA=y +# CONFIG_SPL_RSA is not set +CONFIG_RSA_SOFTWARE_EXP=y +# CONFIG_TPM is not set + +# +# Hashing Support +# +CONFIG_SHA1=y +CONFIG_SHA256=y +# CONFIG_SHA_HW_ACCEL is not set +CONFIG_MD5=y + +# +# Compression Support +# +# CONFIG_LZ4 is not set +# CONFIG_LZMA is not set +# CONFIG_LZO is not set +# CONFIG_SPL_LZO is not set +# CONFIG_SPL_GZIP is not set +# CONFIG_ERRNO_STR is not set +CONFIG_OF_LIBFDT=y +# CONFIG_OF_LIBFDT_OVERLAY is not set +CONFIG_SPL_OF_LIBFDT=y +# CONFIG_FDT_FIXUP_PARTITIONS is not set + +# +# System tables +# +CONFIG_GENERATE_SMBIOS_TABLE=y +CONFIG_SMBIOS_MANUFACTURER="xilinx" +CONFIG_EFI_LOADER=y +# CONFIG_UNIT_TEST is not set diff --git a/fpga/sw/config/u-boot.config.zybo.2018.3 b/fpga/sw/config/u-boot.config.zybo.2018.3 new file mode 100644 index 00000000..382412fa --- /dev/null +++ b/fpga/sw/config/u-boot.config.zybo.2018.3 @@ -0,0 +1,454 @@ +# +# Automatically generated file; DO NOT EDIT. +# U-Boot 2015.07 Configuration +# +CONFIG_HAVE_GENERIC_BOARD=y +# CONFIG_ARC is not set +CONFIG_ARM=y +# CONFIG_AVR32 is not set +# CONFIG_BLACKFIN is not set +# CONFIG_M68K is not set +# CONFIG_MICROBLAZE is not set +# CONFIG_MIPS is not set +# CONFIG_NDS32 is not set +# CONFIG_NIOS2 is not set +# CONFIG_OPENRISC is not set +# CONFIG_PPC is not set +# CONFIG_SANDBOX is not set +# CONFIG_SH is not set +# CONFIG_SPARC is not set +# CONFIG_X86 is not set +CONFIG_SYS_ARCH="arm" +CONFIG_SYS_CPU="armv7" +CONFIG_SYS_SOC="zynq" +CONFIG_SYS_VENDOR="xilinx" +CONFIG_SYS_BOARD="zynq" +CONFIG_SYS_CONFIG_NAME="zynq_zybo" + +# +# ARM architecture +# +CONFIG_HAS_VBAR=y +CONFIG_CPU_V7=y +# CONFIG_SEMIHOSTING is not set +# CONFIG_ARCH_AT91 is not set +# CONFIG_TARGET_EDB93XX is not set +# CONFIG_TARGET_SCB9328 is not set +# CONFIG_TARGET_VCMA9 is not set +# CONFIG_TARGET_SMDK2410 is not set +# CONFIG_TARGET_ASPENITE is not set +# CONFIG_TARGET_GPLUGD is not set +# CONFIG_ARCH_DAVINCI is not set +# CONFIG_KIRKWOOD is not set +# CONFIG_TARGET_DB_88F6820_GP is not set +# CONFIG_TARGET_DB_MV784MP_GP is not set +# CONFIG_TARGET_MAXBCM is not set +# CONFIG_TARGET_DEVKIT3250 is not set +# CONFIG_TARGET_WORK_92105 is not set +# CONFIG_TARGET_MX25PDK is not set +# CONFIG_TARGET_TX25 is not set +# CONFIG_TARGET_ZMX25 is not set +# CONFIG_TARGET_APF27 is not set +# CONFIG_TARGET_IMX27LITE is not set +# CONFIG_TARGET_MAGNESIUM is not set +# CONFIG_TARGET_APX4DEVKIT is not set +# CONFIG_TARGET_XFI3 is not set +# CONFIG_TARGET_M28EVK is not set +# CONFIG_TARGET_MX23EVK is not set +# CONFIG_TARGET_MX28EVK is not set +# CONFIG_TARGET_MX23_OLINUXINO is not set +# CONFIG_TARGET_BG0900 is not set +# CONFIG_TARGET_SANSA_FUZE_PLUS is not set +# CONFIG_TARGET_SC_SPS_1 is not set +# CONFIG_ARCH_NOMADIK is not set +# CONFIG_ORION5X is not set +# CONFIG_TARGET_SPEAR300 is not set +# CONFIG_TARGET_SPEAR310 is not set +# CONFIG_TARGET_SPEAR320 is not set +# CONFIG_TARGET_SPEAR600 is not set +# CONFIG_TARGET_STV0991 is not set +# CONFIG_TARGET_X600 is not set +# CONFIG_ARCH_VERSATILE is not set +# CONFIG_TARGET_IMX31_PHYCORE is not set +# CONFIG_TARGET_QONG is not set +# CONFIG_TARGET_MX31ADS is not set +# CONFIG_TARGET_MX31PDK is not set +# CONFIG_TARGET_TT01 is not set +# CONFIG_TARGET_IMX31_LITEKIT is not set +# CONFIG_TARGET_WOODBURN is not set +# CONFIG_TARGET_WOODBURN_SD is not set +# CONFIG_TARGET_FLEA3 is not set +# CONFIG_TARGET_MX35PDK is not set +# CONFIG_ARCH_BCM283X is not set +# CONFIG_TARGET_VEXPRESS_CA15_TC2 is not set +# CONFIG_TARGET_VEXPRESS_CA5X2 is not set +# CONFIG_TARGET_VEXPRESS_CA9X4 is not set +# CONFIG_TARGET_KWB is not set +# CONFIG_TARGET_TSERIES is not set +# CONFIG_TARGET_CM_T335 is not set +# CONFIG_TARGET_PEPPER is not set +# CONFIG_TARGET_AM335X_IGEP0033 is not set +# CONFIG_TARGET_PCM051 is not set +# CONFIG_TARGET_DRACO is not set +# CONFIG_TARGET_THUBAN is not set +# CONFIG_TARGET_RASTABAN is not set +# CONFIG_TARGET_PXM2 is not set +# CONFIG_TARGET_RUT is not set +# CONFIG_TARGET_PENGWYN is not set +# CONFIG_TARGET_AM335X_BALTOS is not set +# CONFIG_TARGET_AM335X_EVM is not set +# CONFIG_TARGET_AM43XX_EVM is not set +# CONFIG_TARGET_BAV335X is not set +# CONFIG_TARGET_TI814X_EVM is not set +# CONFIG_TARGET_TI816X_EVM is not set +# CONFIG_TARGET_BCM28155_AP is not set +# CONFIG_TARGET_BCMCYGNUS is not set +# CONFIG_TARGET_BCMNSP is not set +# CONFIG_ARCH_EXYNOS is not set +# CONFIG_ARCH_S5PC1XX is not set +# CONFIG_ARCH_HIGHBANK is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_KEYSTONE is not set +# CONFIG_ARCH_MX6 is not set +# CONFIG_ARCH_MX5 is not set +# CONFIG_TARGET_M53EVK is not set +# CONFIG_TARGET_IMA3_MX53 is not set +# CONFIG_TARGET_MX51EVK is not set +# CONFIG_TARGET_MX53ARD is not set +# CONFIG_TARGET_MX53EVK is not set +# CONFIG_TARGET_MX53LOCO is not set +# CONFIG_TARGET_MX53SMD is not set +# CONFIG_TARGET_MX51_EFIKAMX is not set +# CONFIG_TARGET_VISION2 is not set +# CONFIG_TARGET_UDOO is not set +# CONFIG_TARGET_WANDBOARD is not set +# CONFIG_TARGET_WARP is not set +# CONFIG_TARGET_TITANIUM is not set +# CONFIG_TARGET_NITROGEN6X is not set +# CONFIG_TARGET_CGTQMX6EVAL is not set +# CONFIG_TARGET_EMBESTMX6BOARDS is not set +# CONFIG_TARGET_ARISTAINETOS is not set +# CONFIG_TARGET_ARISTAINETOS2 is not set +# CONFIG_TARGET_MX6QARM2 is not set +# CONFIG_TARGET_MX6QSABREAUTO is not set +# CONFIG_TARGET_MX6SABRESD is not set +# CONFIG_TARGET_MX6CUBOXI is not set +# CONFIG_TARGET_MX6SLEVK is not set +# CONFIG_TARGET_MX6SXSABRESD is not set +# CONFIG_TARGET_GW_VENTANA is not set +# CONFIG_TARGET_KOSAGI_NOVENA is not set +# CONFIG_TARGET_TBS2910 is not set +# CONFIG_TARGET_OT1200 is not set +# CONFIG_TARGET_PLATINUM_PICON is not set +# CONFIG_TARGET_PLATINUM_TITANIUM is not set +# CONFIG_OMAP34XX is not set +# CONFIG_OMAP44XX is not set +# CONFIG_OMAP54XX is not set +# CONFIG_RMOBILE is not set +# CONFIG_TARGET_CM_FX6 is not set +# CONFIG_ARCH_SOCFPGA is not set +# CONFIG_ARCH_SUNXI is not set +# CONFIG_TARGET_SNOWBALL is not set +# CONFIG_TARGET_U8500_HREF is not set +# CONFIG_TARGET_VF610TWR is not set +# CONFIG_TARGET_COLIBRI_VF is not set +CONFIG_ARCH_ZYNQ=y +# CONFIG_ARCH_ZYNQMP is not set +# CONFIG_TEGRA is not set +# CONFIG_TARGET_VEXPRESS64_AEMV8A is not set +# CONFIG_TARGET_VEXPRESS64_BASE_FVP is not set +# CONFIG_TARGET_VEXPRESS64_JUNO is not set +# CONFIG_TARGET_LS2085A_EMU is not set +# CONFIG_TARGET_LS2085A_SIMU is not set +# CONFIG_TARGET_LS2085AQDS is not set +# CONFIG_TARGET_LS2085ARDB is not set +# CONFIG_TARGET_LS1021AQDS is not set +# CONFIG_TARGET_LS1021ATWR is not set +# CONFIG_TARGET_BALLOON3 is not set +# CONFIG_TARGET_H2200 is not set +# CONFIG_TARGET_PALMLD is not set +# CONFIG_TARGET_PALMTC is not set +# CONFIG_TARGET_PALMTREO680 is not set +# CONFIG_TARGET_PXA255_IDP is not set +# CONFIG_TARGET_TRIZEPSIV is not set +# CONFIG_TARGET_VPAC270 is not set +# CONFIG_TARGET_XAENIAX is not set +# CONFIG_TARGET_ZIPITZ2 is not set +# CONFIG_TARGET_LP8X4X is not set +# CONFIG_TARGET_COLIBRI_PXA270 is not set +# CONFIG_TARGET_JORNADA is not set +# CONFIG_ARCH_UNIPHIER is not set +# CONFIG_TARGET_STM32F429_DISCOVERY is not set +CONFIG_ZYNQ_CUSTOM_INIT=y +# CONFIG_TARGET_ZYNQ_ZED is not set +# CONFIG_TARGET_ZYNQ_MICROZED is not set +# CONFIG_TARGET_ZYNQ_PICOZED is not set +# CONFIG_TARGET_ZYNQ_ZC70X is not set +# CONFIG_TARGET_ZYNQ_ZC702 is not set +# CONFIG_TARGET_ZYNQ_ZC706 is not set +# CONFIG_TARGET_ZYNQ_ZC770 is not set +CONFIG_TARGET_ZYNQ_ZYBO=y +# CONFIG_TARGET_ZYNQ_AFX is not set +# CONFIG_TARGET_ZYNQ_CSE is not set +# CONFIG_TARGET_ZYNQ_CC108 is not set + +# +# ARM debug +# +# CONFIG_DEBUG_LL is not set +CONFIG_DEFAULT_DEVICE_TREE="zynq-zybo" + +# +# General setup +# +CONFIG_LOCALVERSION="" +CONFIG_LOCALVERSION_AUTO=y +CONFIG_CC_OPTIMIZE_FOR_SIZE=y +# CONFIG_SYS_MALLOC_F is not set +CONFIG_EXPERT=y +CONFIG_SYS_MALLOC_CLEAR_ON_INIT=y + +# +# Boot images +# +CONFIG_SUPPORT_SPL=y +CONFIG_SPL=y +# CONFIG_SPL_STACK_R is not set +CONFIG_FIT=y +CONFIG_FIT_VERBOSE=y +CONFIG_FIT_SIGNATURE=y +CONFIG_SYS_EXTRA_OPTIONS="" + +# +# Command line interface +# +# CONFIG_HUSH_PARSER is not set + +# +# Autoboot options +# +# CONFIG_AUTOBOOT_KEYED is not set + +# +# Commands +# + +# +# Info commands +# +CONFIG_CMD_BDI=y +CONFIG_CMD_CONSOLE=y +# CONFIG_CMD_CPU is not set +# CONFIG_CMD_LICENSE is not set + +# +# Boot commands +# +CONFIG_CMD_BOOTD=y +CONFIG_CMD_BOOTM=y +CONFIG_CMD_GO=y +CONFIG_CMD_RUN=y +CONFIG_CMD_IMI=y +# CONFIG_CMD_IMLS is not set +CONFIG_CMD_XIMG=y + +# +# Environment commands +# +CONFIG_CMD_EXPORTENV=y +CONFIG_CMD_IMPORTENV=y +CONFIG_CMD_EDITENV=y +CONFIG_CMD_SAVEENV=y +CONFIG_CMD_ENV_EXISTS=y + +# +# Memory commands +# +CONFIG_CMD_MEMORY=y +CONFIG_CMD_CRC32=y +# CONFIG_LOOPW is not set +# CONFIG_CMD_MEMTEST is not set +# CONFIG_CMD_MX_CYCLIC is not set +# CONFIG_CMD_MEMINFO is not set + +# +# Device access commands +# +CONFIG_CMD_DM=y +# CONFIG_CMD_DEMO is not set +CONFIG_CMD_LOADB=y +CONFIG_CMD_LOADS=y +# CONFIG_CMD_FLASH is not set +# CONFIG_CMD_NAND is not set +# CONFIG_CMD_SF is not set +# CONFIG_CMD_SPI is not set +# CONFIG_CMD_I2C is not set +# CONFIG_CMD_USB is not set +CONFIG_CMD_FPGA=y + +# +# Shell scripting commands +# +CONFIG_CMD_ECHO=y +CONFIG_CMD_ITEST=y +CONFIG_CMD_SOURCE=y +# CONFIG_CMD_SETEXPR is not set + +# +# Network commands +# +CONFIG_CMD_NET=y +# CONFIG_CMD_TFTPPUT is not set +# CONFIG_CMD_TFTPSRV is not set +# CONFIG_CMD_RARP is not set +# CONFIG_CMD_DHCP is not set +CONFIG_CMD_NFS=y +# CONFIG_CMD_PING is not set +# CONFIG_CMD_CDP is not set +# CONFIG_CMD_SNTP is not set +# CONFIG_CMD_DNS is not set +# CONFIG_CMD_LINK_LOCAL is not set + +# +# Misc commands +# +# CONFIG_CMD_TIME is not set +CONFIG_CMD_MISC=y +# CONFIG_CMD_TIMER is not set +# CONFIG_CMD_ZYNQ_RSA is not set + +# +# Boot timing +# +# CONFIG_BOOTSTAGE is not set +CONFIG_BOOTSTAGE_USER_COUNT=20 +CONFIG_BOOTSTAGE_STASH_ADDR=0 +CONFIG_BOOTSTAGE_STASH_SIZE=4096 + +# +# Power commands +# +CONFIG_SUPPORT_OF_CONTROL=y + +# +# Device Tree Control +# +CONFIG_OF_CONTROL=y +CONFIG_SPL_DISABLE_OF_CONTROL=y +# CONFIG_OF_SEPARATE is not set +CONFIG_OF_EMBED=y +CONFIG_NET=y +# CONFIG_NET_RANDOM_ETHADDR is not set + +# +# Device Drivers +# +CONFIG_DM=y +# CONFIG_SPL_DM is not set +CONFIG_DM_WARN=y +CONFIG_DM_DEVICE_REMOVE=y +CONFIG_DM_STDIO=y +CONFIG_DM_SEQ_ALIAS=y +# CONFIG_CPU is not set +# CONFIG_DM_DEMO is not set + +# +# PCI +# +# CONFIG_DM_PCI is not set + +# +# NAND Device Support +# +# CONFIG_NAND_DENALI is not set +# CONFIG_NAND_VF610_NFC is not set + +# +# Generic NAND options +# +# CONFIG_SPL_NAND_DENALI is not set + +# +# SPI Flash Support +# +CONFIG_DM_SPI_FLASH=y +# CONFIG_SPI_FLASH is not set +# CONFIG_CROS_EC is not set +# CONFIG_CONFIG_FSL_SEC_MON is not set +# CONFIG_PCA9551_LED is not set +# CONFIG_DM_ETH is not set +# CONFIG_NETDEVICES is not set +# CONFIG_CROS_EC_KEYB is not set +# CONFIG_DM_SERIAL is not set +# CONFIG_DEBUG_UART is not set +# CONFIG_TPM_TIS_SANDBOX is not set +# CONFIG_DM_I2C is not set +# CONFIG_DM_I2C_COMPAT is not set + +# +# SPI Support +# +CONFIG_DM_SPI=y +# CONFIG_CADENCE_QSPI is not set +# CONFIG_DESIGNWARE_SPI is not set +# CONFIG_EXYNOS_SPI is not set +# CONFIG_FSL_DSPI is not set +# CONFIG_FSL_QSPI is not set +# CONFIG_ICH_SPI is not set +# CONFIG_TEGRA114_SPI is not set +# CONFIG_TEGRA20_SFLASH is not set +# CONFIG_TEGRA20_SLINK is not set +# CONFIG_XILINX_SPI is not set +# CONFIG_ZYNQ_SPI is not set +# CONFIG_FSL_ESPI is not set +# CONFIG_TI_QSPI is not set +# CONFIG_DM_GPIO is not set +# CONFIG_LPC32XX_GPIO is not set +# CONFIG_VYBRID_GPIO is not set + +# +# Power +# +# CONFIG_DM_PMIC is not set +# CONFIG_DM_REGULATOR is not set +# CONFIG_VIDEO_VESA is not set +# CONFIG_VIDEO_LCD_SSD2828 is not set +# CONFIG_DISPLAY_PORT is not set +# CONFIG_VIDEO_TEGRA124 is not set +# CONFIG_SOUND is not set +CONFIG_USB_ARCH_HAS_HCD=y +# CONFIG_USB is not set + +# +# MMC Host controller Support +# +# CONFIG_DM_RTC is not set +# CONFIG_FSL_CAAM is not set +# CONFIG_DM_THERMAL is not set +# CONFIG_PHYS_TO_BUS is not set + +# +# File systems +# + +# +# Library routines +# +# CONFIG_CC_OPTIMIZE_LIBS_FOR_SPEED is not set +CONFIG_HAVE_PRIVATE_LIBGCC=y +# CONFIG_USE_PRIVATE_LIBGCC is not set +CONFIG_SYS_HZ=1000 +# CONFIG_SYS_VSNPRINTF is not set +CONFIG_REGEX=y +# CONFIG_LIB_RAND is not set +CONFIG_RSA=y +CONFIG_RSA_SOFTWARE_EXP=y + +# +# Hashing Support +# +# CONFIG_SHA1 is not set +# CONFIG_SHA256 is not set +# CONFIG_SHA_HW_ACCEL is not set +# CONFIG_ERRNO_STR is not set +# CONFIG_UNIT_TEST is not set diff --git a/fpga/sw/device-tree/2018.3-zedboard.dts b/fpga/sw/device-tree/2018.3-zedboard.dts new file mode 100644 index 00000000..836b0359 --- /dev/null +++ b/fpga/sw/device-tree/2018.3-zedboard.dts @@ -0,0 +1,530 @@ +/dts-v1/; + +/ { + #address-cells = <0x1>; + #size-cells = <0x1>; + compatible = "xlnx,zynq-7000"; + + cpus { + #address-cells = <0x1>; + #size-cells = <0x0>; + + cpu0: cpu@0 { + compatible = "arm,cortex-a9"; + device_type = "cpu"; + reg = <0x0>; + clocks = <0x1 0x3>; + clock-latency = <0x3e8>; + cpu0-supply = <0x2>; + operating-points = <0xa2c2a 0xf4240 0x51615 0xf4240>; + }; + + cpu1: cpu@1 { + compatible = "arm,cortex-a9"; + device_type = "cpu"; + reg = <0x1>; + clocks = <0x1 0x3>; + }; + }; + + fpga_full: fpga-full { + compatible = "fpga-region"; + fpga-mgr = <0x3>; + #address-cells = <0x1>; + #size-cells = <0x1>; + ranges; + }; + + pmu@f8891000 { + compatible = "arm,cortex-a9-pmu"; + interrupts = <0x0 0x5 0x4 0x0 0x6 0x4>; + interrupt-parent = <0x4>; + reg = <0xf8891000 0x1000 0xf8893000 0x1000>; + }; + + regulator_vccpint: fixedregulator { + compatible = "regulator-fixed"; + regulator-name = "VCCPINT"; + regulator-min-microvolt = <0xf4240>; + regulator-max-microvolt = <0xf4240>; + regulator-boot-on; + regulator-always-on; + linux,phandle = <0x2>; + phandle = <0x2>; + }; + + amba: amba { + u-boot,dm-pre-reloc; + compatible = "simple-bus"; + #address-cells = <0x1>; + #size-cells = <0x1>; + interrupt-parent = <0x4>; + ranges; + + adc: adc@f8007100 { + compatible = "xlnx,zynq-xadc-1.00.a"; + reg = <0xf8007100 0x20>; + interrupts = <0x0 0x7 0x4>; + interrupt-parent = <0x4>; + clocks = <0x1 0xc>; + }; + + can0: can@e0008000 { + compatible = "xlnx,zynq-can-1.0"; + status = "disabled"; + clocks = <0x1 0x13 0x1 0x24>; + clock-names = "can_clk", "pclk"; + reg = <0xe0008000 0x1000>; + interrupts = <0x0 0x1c 0x4>; + interrupt-parent = <0x4>; + tx-fifo-depth = <0x40>; + rx-fifo-depth = <0x40>; + }; + + can1: can@e0009000 { + compatible = "xlnx,zynq-can-1.0"; + status = "disabled"; + clocks = <0x1 0x14 0x1 0x25>; + clock-names = "can_clk", "pclk"; + reg = <0xe0009000 0x1000>; + interrupts = <0x0 0x33 0x4>; + interrupt-parent = <0x4>; + tx-fifo-depth = <0x40>; + rx-fifo-depth = <0x40>; + }; + + gpio0: gpio@e000a000 { + compatible = "xlnx,zynq-gpio-1.0"; + #gpio-cells = <0x2>; + clocks = <0x1 0x2a>; + gpio-controller; + interrupt-controller; + #interrupt-cells = <0x2>; + interrupt-parent = <0x4>; + interrupts = <0x0 0x14 0x4>; + reg = <0xe000a000 0x1000>; + emio-gpio-width = <0x40>; + gpio-mask-high = <0x0>; + gpio-mask-low = <0x5600>; + }; + + i2c0: i2c@e0004000 { + compatible = "cdns,i2c-r1p10"; + status = "disabled"; + clocks = <0x1 0x26>; + interrupt-parent = <0x4>; + interrupts = <0x0 0x19 0x4>; + reg = <0xe0004000 0x1000>; + #address-cells = <0x1>; + #size-cells = <0x0>; + }; + + i2c1: i2c@e0005000 { + compatible = "cdns,i2c-r1p10"; + status = "disabled"; + clocks = <0x1 0x27>; + interrupt-parent = <0x4>; + interrupts = <0x0 0x30 0x4>; + reg = <0xe0005000 0x1000>; + #address-cells = <0x1>; + #size-cells = <0x0>; + }; + + intc: interrupt-controller@f8f01000 { + compatible = "arm,cortex-a9-gic"; + #interrupt-cells = <0x3>; + interrupt-controller; + reg = <0xf8f01000 0x1000 0xf8f00100 0x100>; + num_cpus = <0x2>; + num_interrupts = <0x60>; + linux,phandle = <0x4>; + phandle = <0x4>; + }; + + L2: cache-controller@f8f02000 { + compatible = "arm,pl310-cache"; + reg = <0xf8f02000 0x1000>; + interrupts = <0x0 0x2 0x4>; + arm,data-latency = <0x3 0x2 0x2>; + arm,tag-latency = <0x2 0x2 0x2>; + cache-unified; + cache-level = <0x2>; + }; + + mc: memory-controller@f8006000 { + compatible = "xlnx,zynq-ddrc-a05"; + reg = <0xf8006000 0x1000>; + }; + + ocmc: ocmc@f800c000 { + compatible = "xlnx,zynq-ocmc-1.0"; + interrupt-parent = <0x4>; + interrupts = <0x0 0x3 0x4>; + reg = <0xf800c000 0x1000>; + }; + + uart0: serial@e0000000 { + compatible = "xlnx,xuartps", "cdns,uart-r1p8"; + status = "okay"; + clocks = <0x1 0x17 0x1 0x28>; + clock-names = "uart_clk", "pclk"; + reg = <0xe0000000 0x1000>; + interrupts = <0x0 0x1b 0x4>; + device_type = "serial"; + port-number = <0x0>; + }; + + uart1: serial@e0001000 { + compatible = "xlnx,xuartps", "cdns,uart-r1p8"; + status = "okay"; + clocks = <0x1 0x18 0x1 0x29>; + clock-names = "uart_clk", "pclk"; + reg = <0xe0001000 0x1000>; + interrupts = <0x0 0x32 0x4>; + device_type = "serial"; + port-number = <0x1>; + }; + + spi0: spi@e0006000 { + compatible = "xlnx,zynq-spi-r1p6"; + reg = <0xe0006000 0x1000>; + status = "okay"; + interrupt-parent = <0x4>; + interrupts = <0x0 0x1a 0x4>; + clocks = <0x1 0x19 0x1 0x22>; + clock-names = "ref_clk", "pclk"; + #address-cells = <0x1>; + #size-cells = <0x0>; + is-decoded-cs = <0x0>; + num-cs = <0x3>; + + device@0 { + compatible = "spidev"; + reg = <0x0>; + spi-max-frequency = <0x7a120>; + spi-cpol = <0x0>; + spi-cpha = <0x0>; + }; + }; + + spi1: spi@e0007000 { + compatible = "xlnx,zynq-spi-r1p6"; + reg = <0xe0007000 0x1000>; + status = "disabled"; + interrupt-parent = <0x4>; + interrupts = <0x0 0x31 0x4>; + clocks = <0x1 0x1a 0x1 0x23>; + clock-names = "ref_clk", "pclk"; + #address-cells = <0x1>; + #size-cells = <0x0>; + }; + + qspi: spi@e000d000 { + clock-names = "ref_clk", "pclk"; + clocks = <0x1 0xa 0x1 0x2b>; + compatible = "xlnx,zynq-qspi-1.0"; + status = "okay"; + interrupt-parent = <0x4>; + interrupts = <0x0 0x13 0x4>; + reg = <0xe000d000 0x1000>; + #address-cells = <0x1>; + #size-cells = <0x0>; + is-dual = <0x0>; + num-cs = <0x1>; + spi-rx-bus-width = <0x4>; + spi-tx-bus-width = <0x4>; + }; + + smcc: memory-controller@e000e000 { + #address-cells = <0x1>; + #size-cells = <0x1>; + status = "disabled"; + clock-names = "memclk", "aclk"; + clocks = <0x1 0xb 0x1 0x2c>; + compatible = "arm,pl353-smc-r2p1"; + interrupt-parent = <0x4>; + interrupts = <0x0 0x12 0x4>; + ranges; + reg = <0xe000e000 0x1000>; + + nand0: flash@e1000000 { + status = "disabled"; + compatible = "arm,pl353-nand-r2p1"; + reg = <0xe1000000 0x1000000>; + #address-cells = <0x1>; + #size-cells = <0x1>; + }; + + nor0: flash@e2000000 { + status = "disabled"; + compatible = "cfi-flash"; + reg = <0xe2000000 0x2000000>; + #address-cells = <0x1>; + #size-cells = <0x1>; + }; + }; + + gem0: ethernet@e000b000 { + local-mac-address = [0e be 06 33 5f c6]; + compatible = "cdns,zynq-gem", "cdns,gem"; + reg = <0xe000b000 0x1000>; + status = "okay"; + interrupts = <0x0 0x16 0x4>; + clocks = <0x1 0x1e 0x1 0x1e 0x1 0xd>; + clock-names = "pclk", "hclk", "tx_clk"; + #address-cells = <0x1>; + #size-cells = <0x0>; + phy-mode = "rgmii-id"; + xlnx,ptp-enet-clock = <0x69f6bcb>; + }; + + gem1: ethernet@e000c000 { + compatible = "cdns,zynq-gem", "cdns,gem"; + reg = <0xe000c000 0x1000>; + status = "disabled"; + interrupts = <0x0 0x2d 0x4>; + clocks = <0x1 0x1f 0x1 0x1f 0x1 0xe>; + clock-names = "pclk", "hclk", "tx_clk"; + #address-cells = <0x1>; + #size-cells = <0x0>; + }; + + sdhci0: mmc@e0100000 { + compatible = "arasan,sdhci-8.9a"; + status = "okay"; + clock-names = "clk_xin", "clk_ahb"; + clocks = <0x1 0x15 0x1 0x20>; + interrupt-parent = <0x4>; + interrupts = <0x0 0x18 0x4>; + reg = <0xe0100000 0x1000>; + xlnx,has-cd = <0x1>; + xlnx,has-power = <0x0>; + xlnx,has-wp = <0x1>; + }; + + sdhci1: mmc@e0101000 { + compatible = "arasan,sdhci-8.9a"; + status = "disabled"; + clock-names = "clk_xin", "clk_ahb"; + clocks = <0x1 0x16 0x1 0x21>; + interrupt-parent = <0x4>; + interrupts = <0x0 0x2f 0x4>; + reg = <0xe0101000 0x1000>; + }; + + slcr: slcr@f8000000 { + u-boot,dm-pre-reloc; + #address-cells = <0x1>; + #size-cells = <0x1>; + compatible = "xlnx,zynq-slcr", "syscon", "simple-mfd"; + reg = <0xf8000000 0x1000>; + ranges; + linux,phandle = <0x5>; + phandle = <0x5>; + + clkc: clkc@100 { + u-boot,dm-pre-reloc; + #clock-cells = <0x1>; + compatible = "xlnx,ps7-clkc"; + fclk-enable = <0x1>; + clock-output-names = "armpll", "ddrpll", "iopll", "cpu_6or4x", "cpu_3or2x", "cpu_2x", "cpu_1x", "ddr2x", "ddr3x", "dci", "lqspi", "smc", "pcap", "gem0", "gem1", "fclk0", "fclk1", "fclk2", "fclk3", "can0", "can1", "sdio0", "sdio1", "uart0", "uart1", "spi0", "spi1", "dma", "usb0_aper", "usb1_aper", "gem0_aper", "gem1_aper", "sdio0_aper", "sdio1_aper", "spi0_aper", "spi1_aper", "can0_aper", "can1_aper", "i2c0_aper", "i2c1_aper", "uart0_aper", "uart1_aper", "gpio_aper", "lqspi_aper", "smc_aper", "swdt", "dbg_trc", "dbg_apb"; + reg = <0x100 0x100>; + ps-clk-frequency = <0x1fca055>; + linux,phandle = <0x1>; + phandle = <0x1>; + }; + + rstc: rstc@200 { + compatible = "xlnx,zynq-reset"; + reg = <0x200 0x48>; + #reset-cells = <0x1>; + syscon = <0x5>; + }; + + pinctrl0: pinctrl@700 { + compatible = "xlnx,pinctrl-zynq"; + reg = <0x700 0x200>; + syscon = <0x5>; + }; + }; + + dmac_s: dmac@f8003000 { + compatible = "arm,pl330", "arm,primecell"; + reg = <0xf8003000 0x1000>; + interrupt-parent = <0x4>; + interrupt-names = "abort", "dma0", "dma1", "dma2", "dma3", "dma4", "dma5", "dma6", "dma7"; + interrupts = <0x0 0xd 0x4 0x0 0xe 0x4 0x0 0xf 0x4 0x0 0x10 0x4 0x0 0x11 0x4 0x0 0x28 0x4 0x0 0x29 0x4 0x0 0x2a 0x4 0x0 0x2b 0x4>; + #dma-cells = <0x1>; + #dma-channels = <0x8>; + #dma-requests = <0x4>; + clocks = <0x1 0x1b>; + clock-names = "apb_pclk"; + }; + + devcfg: devcfg@f8007000 { + compatible = "xlnx,zynq-devcfg-1.0"; + interrupt-parent = <0x4>; + interrupts = <0x0 0x8 0x4>; + reg = <0xf8007000 0x100>; + clocks = <0x1 0xc 0x1 0xf 0x1 0x10 0x1 0x11 0x1 0x12>; + clock-names = "ref_clk", "fclk0", "fclk1", "fclk2", "fclk3"; + syscon = <0x5>; + linux,phandle = <0x3>; + phandle = <0x3>; + }; + + efuse: efuse@f800d000 { + compatible = "xlnx,zynq-efuse"; + reg = <0xf800d000 0x20>; + }; + + global_timer: timer@f8f00200 { + compatible = "arm,cortex-a9-global-timer"; + reg = <0xf8f00200 0x20>; + interrupts = <0x1 0xb 0x301>; + interrupt-parent = <0x4>; + clocks = <0x1 0x4>; + }; + + ttc0: timer@f8001000 { + interrupt-parent = <0x4>; + interrupts = <0x0 0xa 0x4 0x0 0xb 0x4 0x0 0xc 0x4>; + compatible = "cdns,ttc"; + clocks = <0x1 0x6>; + reg = <0xf8001000 0x1000>; + }; + + ttc1: timer@f8002000 { + interrupt-parent = <0x4>; + interrupts = <0x0 0x25 0x4 0x0 0x26 0x4 0x0 0x27 0x4>; + compatible = "cdns,ttc"; + clocks = <0x1 0x6>; + reg = <0xf8002000 0x1000>; + }; + + scutimer: timer@f8f00600 { + interrupt-parent = <0x4>; + interrupts = <0x1 0xd 0x301>; + compatible = "arm,cortex-a9-twd-timer"; + reg = <0xf8f00600 0x20>; + clocks = <0x1 0x4>; + }; + + usb0: usb@e0002000 { + compatible = "xlnx,zynq-usb-2.20a", "chipidea,usb2"; + status = "okay"; + clocks = <0x1 0x1c>; + interrupt-parent = <0x4>; + interrupts = <0x0 0x15 0x4>; + reg = <0xe0002000 0x1000>; + phy_type = "ulpi"; + }; + + usb1: usb@e0003000 { + compatible = "xlnx,zynq-usb-2.20a", "chipidea,usb2"; + status = "disabled"; + clocks = <0x1 0x1d>; + interrupt-parent = <0x4>; + interrupts = <0x0 0x2c 0x4>; + reg = <0xe0003000 0x1000>; + phy_type = "ulpi"; + }; + + watchdog0: watchdog@f8005000 { + clocks = <0x1 0x2d>; + compatible = "cdns,wdt-r1p2"; + interrupt-parent = <0x4>; + interrupts = <0x0 0x9 0x1>; + reg = <0xf8005000 0x1000>; + timeout-sec = <0xa>; + }; + }; + + amba_pl: amba_pl { + #address-cells = <0x1>; + #size-cells = <0x1>; + compatible = "simple-bus"; + ranges; + + axi_gpio_emu: gpio@51030000 { + #gpio-cells = <0x3>; + clock-names = "s_axi_aclk"; + clocks = <0x1 0xf>; + compatible = "xlnx,axi-gpio-2.0", "xlnx,xps-gpio-1.00.a"; + gpio-controller; + reg = <0x51030000 0x10000>; + xlnx,all-inputs = <0x0>; + xlnx,all-inputs-2 = <0x0>; + xlnx,all-outputs = <0x0>; + xlnx,all-outputs-2 = <0x0>; + xlnx,dout-default = <0x0>; + xlnx,dout-default-2 = <0x0>; + xlnx,gpio-width = <0x20>; + xlnx,gpio2-width = <0x20>; + xlnx,interrupt-present = <0x0>; + xlnx,is-dual = <0x0>; + xlnx,tri-default = <0xffffffff>; + xlnx,tri-default-2 = <0xffffffff>; + }; + + axi_jtag_emu: gpio@51020000 { + #gpio-cells = <0x3>; + clock-names = "s_axi_aclk"; + clocks = <0x1 0xf>; + compatible = "xlnx,axi-gpio-2.0", "xlnx,xps-gpio-1.00.a"; + gpio-controller; + reg = <0x51020000 0x10000>; + xlnx,all-inputs = <0x0>; + xlnx,all-inputs-2 = <0x0>; + xlnx,all-outputs = <0x0>; + xlnx,all-outputs-2 = <0x0>; + xlnx,dout-default = <0x0>; + xlnx,dout-default-2 = <0x0>; + xlnx,gpio-width = <0x20>; + xlnx,gpio2-width = <0x20>; + xlnx,interrupt-present = <0x0>; + xlnx,is-dual = <0x0>; + xlnx,tri-default = <0xffffffff>; + xlnx,tri-default-2 = <0xffffffff>; + }; + + axi_pulp_control: gpio@51000000 { + #gpio-cells = <0x3>; + clock-names = "s_axi_aclk"; + clocks = <0x1 0xf>; + compatible = "xlnx,axi-gpio-2.0", "xlnx,xps-gpio-1.00.a"; + gpio-controller; + reg = <0x51000000 0x10000>; + xlnx,all-inputs = <0x0>; + xlnx,all-inputs-2 = <0x0>; + xlnx,all-outputs = <0x1>; + xlnx,all-outputs-2 = <0x0>; + xlnx,dout-default = <0x0>; + xlnx,dout-default-2 = <0x0>; + xlnx,gpio-width = <0x20>; + xlnx,gpio2-width = <0x20>; + xlnx,interrupt-present = <0x0>; + xlnx,is-dual = <0x0>; + xlnx,tri-default = <0xffffffff>; + xlnx,tri-default-2 = <0xffffffff>; + }; + }; + + chosen { + bootargs = "console=ttyPS1,115200n8 ip=on rootfstype=ext4 root=/dev/mmcblk0p2 rw earlyprintk"; + stdout-path = "serial1:115200n8"; + }; + + aliases { + ethernet0 = "/amba/ethernet@e000b000"; + serial0 = "/amba/serial@e0000000"; + serial1 = "/amba/serial@e0001000"; + spi0 = "/amba/spi@e000d000"; + spi1 = "/amba/spi@e0006000"; + }; + + memory@0 { + device_type = "memory"; + reg = <0x0 0x20000000>; + }; +}; From b9edd5013705ae8e4ea4b04067ac7eec9fb64c32 Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Thu, 14 Nov 2019 14:48:42 +0100 Subject: [PATCH 53/54] fpga/sw: work around buildroot build problem with glibc-2.28 m4 in buildroot does not properly build when the host uses glibc-2.28 but produces errors such as: freadahead.c: In function 'freadahead': freadahead.c:92:3: error: #error "Please port gnulib freadahead.c to your platform! Look at the definition of fflush, fread, ungetc on your system, then report this to bug-gnulib." #error "Please port gnulib freadahead.c to your platform! Look at the definition of fflush, fread, ungetc on your system, then report this to bug-gnulib." ^~~~~ This change adds an upstream patch against buildroot. --- fpga/sw/Makefile | 3 + fpga/sw/config/buildroot.patch.2018.3 | 365 ++++++++++++++++++++++++++ 2 files changed, 368 insertions(+) create mode 100644 fpga/sw/config/buildroot.patch.2018.3 diff --git a/fpga/sw/Makefile b/fpga/sw/Makefile index 89c39c01..8c047fdf 100644 --- a/fpga/sw/Makefile +++ b/fpga/sw/Makefile @@ -107,6 +107,9 @@ buildroot: buildroot/.config: config/buildroot.config.$(VIVADO_VERSION) | buildroot cd buildroot && git checkout -f tags/$(BUILDROOT_VERSION) +ifeq ($(VIVADO_VERSION),2018.3) + cd buildroot && git am ../config/buildroot.patch.2018.3 +endif sed \ -e 's#BR2_TOOLCHAIN_EXTERNAL_PATH="/to/be/defined/"#BR2_TOOLCHAIN_EXTERNAL_PATH="$(ARM_TOOLCHAIN_PATH)"#g' \ -e 's#BR2_ROOTFS_POST_BUILD_SCRIPT=""#BR2_ROOTFS_POST_BUILD_SCRIPT="../buildroot-post-build.sh"#g' \ diff --git a/fpga/sw/config/buildroot.patch.2018.3 b/fpga/sw/config/buildroot.patch.2018.3 new file mode 100644 index 00000000..0b79bf26 --- /dev/null +++ b/fpga/sw/config/buildroot.patch.2018.3 @@ -0,0 +1,365 @@ +From c48f8a64626c60bd1b46804b7cf1a699ff53cdf3 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Fri, 17 Aug 2018 14:38:03 +0200 +Subject: [PATCH] package/m4: fix build on host with glibc-2.28 + +glibc-2.28 did quite some lifting in their headers, which breaks the +way some packages were detecting glibc, like gnulib. + +However, packages do bundle gnulib (it was meant to be bundled), +and so does m4. + +Since m4 hasn't seen the slightest commit since 2017-01-09, it is +bundling an old gnulib version, that predates glibc-2.28, and thus +breaks. It also means that upstream hasn't already fixed the issue. + +Furthermore, as upstream is using a git submodule for gnulib, and +that the paths are not the same in the release tarball (in lib/) +and in the git tree (in gnulib/), we can't do a plain backport. + +So, we selectively backport the two patches from gnulib upstream, +restricted to only the files that happen to be used in m4. + +Signed-off-by: "Yann E. MORIN" +Reported-by: c32 on IRC +Signed-off-by: Peter Korsgaard +Signed-off-by: Stefan Tauner +--- + ...adjust-to-glibc-2.28-libio.h-removal.patch | 166 ++++++++++++++++++ + ...e-more-paranoid-about-libio.h-change.patch | 151 ++++++++++++++++ + 2 files changed, 317 insertions(+) + create mode 100644 package/m4/0001-fflush-adjust-to-glibc-2.28-libio.h-removal.patch + create mode 100644 package/m4/0002-fflush-be-more-paranoid-about-libio.h-change.patch + +diff --git a/package/m4/0001-fflush-adjust-to-glibc-2.28-libio.h-removal.patch b/package/m4/0001-fflush-adjust-to-glibc-2.28-libio.h-removal.patch +new file mode 100644 +index 0000000000..5c5c11b990 +--- /dev/null ++++ b/package/m4/0001-fflush-adjust-to-glibc-2.28-libio.h-removal.patch +@@ -0,0 +1,166 @@ ++From 4af4a4a71827c0bc5e0ec67af23edef4f15cee8e Mon Sep 17 00:00:00 2001 ++From: Paul Eggert ++Date: Mon, 5 Mar 2018 10:56:29 -0800 ++Subject: [PATCH] fflush: adjust to glibc 2.28 libio.h removal ++MIME-Version: 1.0 ++Content-Type: text/plain; charset=UTF-8 ++Content-Transfer-Encoding: 8bit ++ ++Problem reported by Daniel P. BerrangĂ© in: ++https://lists.gnu.org/r/bug-gnulib/2018-03/msg00000.html ++* lib/fbufmode.c (fbufmode): ++* lib/fflush.c (clear_ungetc_buffer_preserving_position) ++(disable_seek_optimization, rpl_fflush): ++* lib/fpending.c (__fpending): ++* lib/fpurge.c (fpurge): ++* lib/freadable.c (freadable): ++* lib/freadahead.c (freadahead): ++* lib/freading.c (freading): ++* lib/freadptr.c (freadptr): ++* lib/freadseek.c (freadptrinc): ++* lib/fseeko.c (fseeko): ++* lib/fseterr.c (fseterr): ++* lib/fwritable.c (fwritable): ++* lib/fwriting.c (fwriting): ++Check _IO_EOF_SEEN instead of _IO_ftrylockfile. ++* lib/stdio-impl.h (_IO_IN_BACKUP) [_IO_EOF_SEEN]: ++Define if not already defined. ++ ++[yann.morin.1998@free.fr: partially backport from upstream gnulib] ++Signed-off-by: "Yann E. MORIN" ++ ++--- ++ lib/fflush.c | 6 +++--- ++ lib/fpending.c | 2 +- ++ lib/fpurge.c | 2 +- ++ lib/freadahead.c | 2 +- ++ lib/freading.c | 2 +- ++ lib/fseeko.c | 4 ++-- ++ lib/stdio-impl.h | 6 ++++++ ++ 7 files changed, 15 insertions(+), 9 deletions(-) ++ ++diff --git a/lib/fflush.c b/build-aux/gnulib/lib/fflush.c ++index 983ade0ff..a6edfa105 100644 ++--- a/lib/fflush.c +++++ b/lib/fflush.c ++@@ -33,7 +33,7 @@ ++ #undef fflush ++ ++ ++-#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ +++#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ ++ ++ /* Clear the stream's ungetc buffer, preserving the value of ftello (fp). */ ++ static void ++@@ -72,7 +72,7 @@ clear_ungetc_buffer (FILE *fp) ++ ++ #endif ++ ++-#if ! (defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */) +++#if ! (defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */) ++ ++ # if (defined __sferror || defined __DragonFly__ || defined __ANDROID__) && defined __SNPT ++ /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */ ++@@ -148,7 +148,7 @@ rpl_fflush (FILE *stream) ++ if (stream == NULL || ! freading (stream)) ++ return fflush (stream); ++ ++-#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ +++#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ ++ ++ clear_ungetc_buffer_preserving_position (stream); ++ ++diff --git a/lib/fpending.c b/build-aux/gnulib/lib/fpending.c ++index c84e3a5b4..789f50e4e 100644 ++--- a/lib/fpending.c +++++ b/lib/fpending.c ++@@ -32,7 +32,7 @@ __fpending (FILE *fp) ++ /* Most systems provide FILE as a struct and the necessary bitmask in ++ , because they need it for implementing getc() and putc() as ++ fast macros. */ ++-#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ +++#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ ++ return fp->_IO_write_ptr - fp->_IO_write_base; ++ #elif defined __sferror || defined __DragonFly__ || defined __ANDROID__ ++ /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */ ++diff --git a/lib/fpurge.c b/build-aux/gnulib/lib/fpurge.c ++index b1d417c7a..3aedcc373 100644 ++--- a/lib/fpurge.c +++++ b/lib/fpurge.c ++@@ -62,7 +62,7 @@ fpurge (FILE *fp) ++ /* Most systems provide FILE as a struct and the necessary bitmask in ++ , because they need it for implementing getc() and putc() as ++ fast macros. */ ++-# if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ +++# if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ ++ fp->_IO_read_end = fp->_IO_read_ptr; ++ fp->_IO_write_ptr = fp->_IO_write_base; ++ /* Avoid memory leak when there is an active ungetc buffer. */ ++diff --git a/lib/freadahead.c b/build-aux/gnulib/lib/freadahead.c ++index c2ecb5b28..23ec76ee5 100644 ++--- a/lib/freadahead.c +++++ b/lib/freadahead.c ++@@ -30,7 +30,7 @@ extern size_t __sreadahead (FILE *); ++ size_t ++ freadahead (FILE *fp) ++ { ++-#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ +++#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ ++ if (fp->_IO_write_ptr > fp->_IO_write_base) ++ return 0; ++ return (fp->_IO_read_end - fp->_IO_read_ptr) ++diff --git a/lib/freading.c b/build-aux/gnulib/lib/freading.c ++index 73c28acdd..c24d0c88a 100644 ++--- a/lib/freading.c +++++ b/lib/freading.c ++@@ -31,7 +31,7 @@ freading (FILE *fp) ++ /* Most systems provide FILE as a struct and the necessary bitmask in ++ , because they need it for implementing getc() and putc() as ++ fast macros. */ ++-# if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ +++# if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ ++ return ((fp->_flags & _IO_NO_WRITES) != 0 ++ || ((fp->_flags & (_IO_NO_READS | _IO_CURRENTLY_PUTTING)) == 0 ++ && fp->_IO_read_base != NULL)); ++diff --git a/lib/fseeko.c b/build-aux/gnulib/lib/fseeko.c ++index 0101ab55f..193f4e8ce 100644 ++--- a/lib/fseeko.c +++++ b/lib/fseeko.c ++@@ -47,7 +47,7 @@ fseeko (FILE *fp, off_t offset, int whence) ++ #endif ++ ++ /* These tests are based on fpurge.c. */ ++-#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ +++#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ ++ if (fp->_IO_read_end == fp->_IO_read_ptr ++ && fp->_IO_write_ptr == fp->_IO_write_base ++ && fp->_IO_save_base == NULL) ++@@ -123,7 +123,7 @@ fseeko (FILE *fp, off_t offset, int whence) ++ return -1; ++ } ++ ++-#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ +++#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ ++ fp->_flags &= ~_IO_EOF_SEEN; ++ fp->_offset = pos; ++ #elif defined __sferror || defined __DragonFly__ || defined __ANDROID__ ++diff --git a/lib/stdio-impl.h b/build-aux/gnulib/lib/stdio-impl.h ++index 78d896e9f..05c5752a2 100644 ++--- a/lib/stdio-impl.h +++++ b/lib/stdio-impl.h ++@@ -18,6 +18,12 @@ ++ the same implementation of stdio extension API, except that some fields ++ have different naming conventions, or their access requires some casts. */ ++ +++/* Glibc 2.28 made _IO_IN_BACKUP private. For now, work around this +++ problem by defining it ourselves. FIXME: Do not rely on glibc +++ internals. */ +++#if !defined _IO_IN_BACKUP && defined _IO_EOF_SEEN +++# define _IO_IN_BACKUP 0x100 +++#endif ++ ++ /* BSD stdio derived implementations. */ ++ ++-- ++2.14.1 ++ +diff --git a/package/m4/0002-fflush-be-more-paranoid-about-libio.h-change.patch b/package/m4/0002-fflush-be-more-paranoid-about-libio.h-change.patch +new file mode 100644 +index 0000000000..a820ca8ca9 +--- /dev/null ++++ b/package/m4/0002-fflush-be-more-paranoid-about-libio.h-change.patch +@@ -0,0 +1,151 @@ ++From 74d9d6a293d7462dea8f83e7fc5ac792e956a0ad Mon Sep 17 00:00:00 2001 ++From: Paul Eggert ++Date: Thu, 8 Mar 2018 16:42:45 -0800 ++Subject: [PATCH 2/2] fflush: be more paranoid about libio.h change ++ ++Suggested by Eli Zaretskii in: ++https://lists.gnu.org/r/emacs-devel/2018-03/msg00270.html ++* lib/fbufmode.c (fbufmode): ++* lib/fflush.c (clear_ungetc_buffer_preserving_position) ++(disable_seek_optimization, rpl_fflush): ++* lib/fpending.c (__fpending): ++* lib/fpurge.c (fpurge): ++* lib/freadable.c (freadable): ++* lib/freadahead.c (freadahead): ++* lib/freading.c (freading): ++* lib/freadptr.c (freadptr): ++* lib/freadseek.c (freadptrinc): ++* lib/fseeko.c (fseeko): ++* lib/fseterr.c (fseterr): ++* lib/fwritable.c (fwritable): ++* lib/fwriting.c (fwriting): ++Look at _IO_ftrylockfile as well as at _IO_EOF_SEEN. ++--- ++ lib/fflush.c | 9 ++++++--- ++ lib/fpending.c | 3 ++- ++ lib/fpurge.c | 3 ++- ++ lib/freadahead.c | 3 ++- ++ lib/freading.c | 3 ++- ++ lib/fseeko.c | 6 ++++-- ++ 6 files changed, 18 insertions(+), 9 deletions(-) ++ ++[yann.morin.1998@free.fr: partially backport from upstream gnulib] ++Signed-off-by: "Yann E. MORIN" ++ ++diff --git a/lib/fflush.c b/build-aux/gnulib/lib/fflush.c ++index a6edfa105..a140b7ad9 100644 ++--- a/lib/fflush.c +++++ b/lib/fflush.c ++@@ -33,7 +33,8 @@ ++ #undef fflush ++ ++ ++-#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ +++#if defined _IO_EOF_SEEN || defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 +++/* GNU libc, BeOS, Haiku, Linux libc5 */ ++ ++ /* Clear the stream's ungetc buffer, preserving the value of ftello (fp). */ ++ static void ++@@ -72,7 +73,8 @@ clear_ungetc_buffer (FILE *fp) ++ ++ #endif ++ ++-#if ! (defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */) +++#if ! (defined _IO_EOF_SEEN || defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1) +++/* GNU libc, BeOS, Haiku, Linux libc5 */ ++ ++ # if (defined __sferror || defined __DragonFly__ || defined __ANDROID__) && defined __SNPT ++ /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */ ++@@ -148,7 +150,8 @@ rpl_fflush (FILE *stream) ++ if (stream == NULL || ! freading (stream)) ++ return fflush (stream); ++ ++-#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ +++#if defined _IO_EOF_SEEN || defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 +++ /* GNU libc, BeOS, Haiku, Linux libc5 */ ++ ++ clear_ungetc_buffer_preserving_position (stream); ++ ++diff --git a/lib/fpending.c b/build-aux/gnulib/lib/fpending.c ++index 789f50e4e..7bc235ded 100644 ++--- a/lib/fpending.c +++++ b/lib/fpending.c ++@@ -32,7 +32,8 @@ __fpending (FILE *fp) ++ /* Most systems provide FILE as a struct and the necessary bitmask in ++ , because they need it for implementing getc() and putc() as ++ fast macros. */ ++-#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ +++#if defined _IO_EOF_SEEN || defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 +++ /* GNU libc, BeOS, Haiku, Linux libc5 */ ++ return fp->_IO_write_ptr - fp->_IO_write_base; ++ #elif defined __sferror || defined __DragonFly__ || defined __ANDROID__ ++ /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */ ++diff --git a/lib/fpurge.c b/build-aux/gnulib/lib/fpurge.c ++index 3aedcc373..554790b56 100644 ++--- a/lib/fpurge.c +++++ b/lib/fpurge.c ++@@ -62,7 +62,8 @@ fpurge (FILE *fp) ++ /* Most systems provide FILE as a struct and the necessary bitmask in ++ , because they need it for implementing getc() and putc() as ++ fast macros. */ ++-# if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ +++# if defined _IO_EOF_SEEN || defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 +++ /* GNU libc, BeOS, Haiku, Linux libc5 */ ++ fp->_IO_read_end = fp->_IO_read_ptr; ++ fp->_IO_write_ptr = fp->_IO_write_base; ++ /* Avoid memory leak when there is an active ungetc buffer. */ ++diff --git a/lib/freadahead.c b/build-aux/gnulib/lib/freadahead.c ++index 23ec76ee5..ed3dd0ebd 100644 ++--- a/lib/freadahead.c +++++ b/lib/freadahead.c ++@@ -30,7 +30,8 @@ extern size_t __sreadahead (FILE *); ++ size_t ++ freadahead (FILE *fp) ++ { ++-#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ +++#if defined _IO_EOF_SEEN || defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 +++ /* GNU libc, BeOS, Haiku, Linux libc5 */ ++ if (fp->_IO_write_ptr > fp->_IO_write_base) ++ return 0; ++ return (fp->_IO_read_end - fp->_IO_read_ptr) ++diff --git a/lib/freading.c b/build-aux/gnulib/lib/freading.c ++index c24d0c88a..790f92ca3 100644 ++--- a/lib/freading.c +++++ b/lib/freading.c ++@@ -31,7 +31,8 @@ freading (FILE *fp) ++ /* Most systems provide FILE as a struct and the necessary bitmask in ++ , because they need it for implementing getc() and putc() as ++ fast macros. */ ++-# if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ +++# if defined _IO_EOF_SEEN || defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 +++ /* GNU libc, BeOS, Haiku, Linux libc5 */ ++ return ((fp->_flags & _IO_NO_WRITES) != 0 ++ || ((fp->_flags & (_IO_NO_READS | _IO_CURRENTLY_PUTTING)) == 0 ++ && fp->_IO_read_base != NULL)); ++diff --git a/lib/fseeko.c b/build-aux/gnulib/lib/fseeko.c ++index 193f4e8ce..e5c5172e7 100644 ++--- a/lib/fseeko.c +++++ b/lib/fseeko.c ++@@ -47,7 +47,8 @@ fseeko (FILE *fp, off_t offset, int whence) ++ #endif ++ ++ /* These tests are based on fpurge.c. */ ++-#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ +++#if defined _IO_EOF_SEEN || defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 +++ /* GNU libc, BeOS, Haiku, Linux libc5 */ ++ if (fp->_IO_read_end == fp->_IO_read_ptr ++ && fp->_IO_write_ptr == fp->_IO_write_base ++ && fp->_IO_save_base == NULL) ++@@ -123,7 +124,8 @@ fseeko (FILE *fp, off_t offset, int whence) ++ return -1; ++ } ++ ++-#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ +++#if defined _IO_EOF_SEEN || defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 +++ /* GNU libc, BeOS, Haiku, Linux libc5 */ ++ fp->_flags &= ~_IO_EOF_SEEN; ++ fp->_offset = pos; ++ #elif defined __sferror || defined __DragonFly__ || defined __ANDROID__ ++-- ++2.14.1 ++ +-- +Kind regards, Stefan Tauner + From 77da6a7bba18444fdeb33a6d8c293cafdab38fb8 Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Fri, 15 Nov 2019 20:07:47 +0100 Subject: [PATCH 54/54] fpga/sw: add workaround for Xilinx' UART kernel driver At least the Linux kernel in the 2018.3 SDK does hang on boot when using the serial1 as console for kernel messages. As a workaround we revert and patch the respective file to the version of the 2017.4 SDK. Cf. https://forums.xilinx.com/t5/Embedded-Linux/Kernel-panic-when-using-ttyPS1-as-default-console/m-p/1037792 --- fpga/sw/Makefile | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/fpga/sw/Makefile b/fpga/sw/Makefile index 8c047fdf..bb24e54a 100644 --- a/fpga/sw/Makefile +++ b/fpga/sw/Makefile @@ -47,6 +47,12 @@ linux-xlnx: linux-xlnx/.config: config/kernel.config.$(VIVADO_VERSION) | linux-xlnx cd linux-xlnx && git checkout -f tags/xilinx-v$(VIVADO_VERSION) +# Work around a bug in Xilinx' UART Linux kernel driver by using an old version +ifeq ($(VIVADO_VERSION),2018.3) + cd linux-xlnx && \ + git checkout xilinx-v2017.4 -- ./drivers/tty/serial/xilinx_uartps.c && \ + sed -ie 's/CONFIG_SERIAL_XILINX_NR_UARTS/2/' drivers/tty/serial/xilinx_uartps.c +endif cp config/kernel.config.$(VIVADO_VERSION) ./linux-xlnx/.config linux-xlnx/arch/arm/boot/uImage: linux-xlnx/.config