Skip to content

Commit 92ef374

Browse files
author
Michal Simek
committed
Handle all new Vivado IPs with different address specification
Have generic way how to handle new Vivado IPs which are not backward compatible with EDK versions. This fixes problem with axi_quad and axi_tft IPs. Signed-off-by: Michal Simek <michal.simek@xilinx.com>
1 parent a4ffb75 commit 92ef374

File tree

1 file changed

+26
-2
lines changed

1 file changed

+26
-2
lines changed

data/device-tree_v2_1_0.tcl

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -853,8 +853,32 @@ proc slaveip_dcr {slave intc devicetype params {baseaddr_prefix ""} {other_compa
853853
}
854854

855855
proc slaveip {slave intc devicetype params {baseaddr_prefix ""} {other_compatibles {}} } {
856-
set baseaddr [scan_int_parameter_value $slave [format "C_%sBASEADDR" $baseaddr_prefix]]
857-
set highaddr [scan_int_parameter_value $slave [format "C_%sHIGHADDR" $baseaddr_prefix]]
856+
set baseaddr_handle [xget_hw_parameter_handle $slave [format "C_%sBASEADDR" $baseaddr_prefix]]
857+
set highaddr_handle [xget_hw_parameter_handle $slave [format "C_%sHIGHADDR" $baseaddr_prefix]]
858+
if { $baseaddr_handle != "" && $highaddr_handle != "" } {
859+
set baseaddr [scan_int_parameter_value $slave [format "C_%sBASEADDR" $baseaddr_prefix]]
860+
set highaddr [scan_int_parameter_value $slave [format "C_%sHIGHADDR" $baseaddr_prefix]]
861+
} else {
862+
set baseaddr 0
863+
set highaddr 0
864+
set ip_params [xget_hw_parameter_handle $slave "*"]
865+
set address_array {}
866+
puts [xget_hw_name $slave]
867+
foreach par_name $ip_params {
868+
# check all
869+
set addrtype [xget_hw_subproperty_value $par_name "ADDRESS"]
870+
if {[string compare -nocase $addrtype "BASE"] == 0} {
871+
set base [xget_hw_name $par_name]
872+
set high [xget_hw_subproperty_value $par_name "PAIR"]
873+
set baseaddr [scan_int_parameter_value $slave $base]
874+
set highaddr [scan_int_parameter_value $slave $high]
875+
if { "${baseaddr}" < "${highaddr}" } {
876+
break
877+
}
878+
}
879+
}
880+
}
881+
858882
set tree [slaveip_explicit_baseaddr $slave $intc $devicetype $params $baseaddr $highaddr $other_compatibles]
859883
set dcr_busif_handle [xget_hw_busif_handle $slave "SDCR"]
860884
if {[llength $dcr_busif_handle] != 0} {

0 commit comments

Comments
 (0)