diff options
Diffstat (limited to 'meta-xilinx-core/recipes-kernel/lopper/xilinx-lops/lop-microblaze-yocto.dts')
-rw-r--r-- | meta-xilinx-core/recipes-kernel/lopper/xilinx-lops/lop-microblaze-yocto.dts | 247 |
1 files changed, 247 insertions, 0 deletions
diff --git a/meta-xilinx-core/recipes-kernel/lopper/xilinx-lops/lop-microblaze-yocto.dts b/meta-xilinx-core/recipes-kernel/lopper/xilinx-lops/lop-microblaze-yocto.dts new file mode 100644 index 00000000..5e5f7986 --- /dev/null +++ b/meta-xilinx-core/recipes-kernel/lopper/xilinx-lops/lop-microblaze-yocto.dts @@ -0,0 +1,247 @@ +/* + * Copyright (c) 2020 Xilinx Inc. All rights reserved. + * Copyright (c) 2023 Advanced Micro Devices, Inc. All rights reserved. + * + * Author: + * Bruce Ashfield <bruce.ashfield@amd.com> + * Mark Hatle <mark.hatle@amd.com> + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +/dts-v1/; + +/ { + compatible = "system-device-tree-v1,lop"; + lops { + compatible = "system-device-tree-v1,lop"; + track_feature: track_feature { + compatible = "system-device-tree-v1,lop,code-v1"; + noexec; + code = " + # print( 'track: lopper library routine: %s' % node ) + try: + node.tunes[prop] = prop + except: + pass + "; + }; + lop_0_1 { + compatible = "system-device-tree-v1,lop,select-v1"; + select_1; + select_2 = "/cpus_microblaze.*/cpu*.*:compatible:.*microblaze"; + lop_0_2 { + compatible = "system-device-tree-v1,lop,code-v1"; + inherit = "subsystem"; + code = " + for n in tree.__selected__: + val = n['compatible'].value[0] + if val == 'pmu-microblaze': + n.tunes = OrderedDict() + n.tunes['microblaze'] = 'microblaze' + n.tunes['version'] = 'v9.2' + n.tune_type = val.split('-')[0] + + elif val == 'pmc-microblaze' or val == 'psm-microblaze': + n.tunes = OrderedDict() + n.tunes['microblaze'] = 'microblaze' + n.tunes['version'] = 'v10.0' + n.tune_type = val.split('-')[0] + + else: + n.tune_type = re.split('@', n.name)[0] + "; + }; + }; + lop_1_1 { + compatible = "system-device-tree-v1,lop,select-v1"; + select_1; + select_2 = "/cpus_microblaze.*/cpu*.*:compatible:.*microblaze"; + select_3 = ":xlnx,use-barrel:1"; + lop_1_1_1 { + compatible = "system-device-tree-v1,lop,code-v1"; + code = " + if __selected__: + for n in __selected__: + n.tunes['barrel-shift'] = 'barrel-shift' + "; + }; + }; + lop_2_1 { + compatible = "system-device-tree-v1,lop,select-v1"; + select_1; + select_2 = "/cpus_microblaze.*/cpu*.*:compatible:.*microblaze"; + select_3 = ":xlnx,endianness:!1"; + lop_2_1_1 { + compatible = "system-device-tree-v1,lop,code-v1"; + code = " + if __selected__: + for n in __selected__: + n.tunes['bigendian'] = 'bigendian' + "; + }; + }; + lop_3_1 { + compatible = "system-device-tree-v1,lop,select-v1"; + select_1; + select_2 = "/cpus_microblaze.*/cpu*.*:compatible:.*microblaze"; + select_3 = ":xlnx,data-size:0x40"; + lop_3_1_1 { + compatible = "system-device-tree-v1,lop,code-v1"; + code = " + if __selected__: + for n in __selected__: + n.tunes['64-bit'] = '64-bit' + "; + }; + }; + lop_4_1 { + compatible = "system-device-tree-v1,lop,select-v1"; + select_1; + select_2 = "/cpus_microblaze.*/cpu*.*:compatible:.*microblaze"; + select_3 = ":xlnx,use-pcmp-instr:1"; + lop_4_1_1 { + compatible = "system-device-tree-v1,lop,code-v1"; + code = " + if __selected__: + for n in __selected__: + n.tunes['pattern-compare'] = 'pattern-compare' + "; + }; + }; + lop_5_1 { + compatible = "system-device-tree-v1,lop,select-v1"; + select_1; + select_2 = "/cpus_microblaze.*/cpu*.*:compatible:.*microblaze"; + select_3 = ":xlnx,use-reorder-instr:!0"; + lop_5_1_1 { + compatible = "system-device-tree-v1,lop,code-v1"; + code = " + if __selected__: + for n in __selected__: + n.tunes['reorder'] = 'reorder' + "; + }; + }; + lop_6_1 { + compatible = "system-device-tree-v1,lop,select-v1"; + select_1; + select_2 = "/cpus_microblaze.*/cpu*.*:compatible:.*microblaze"; + select_3 = ":xlnx,area-optimized:2"; + lop_6_1_1 { + compatible = "system-device-tree-v1,lop,code-v1"; + code = " + if __selected__: + for n in __selected__: + n.tunes['frequency-optimized'] = 'frequency-optimized' + "; + }; + }; + lop_7_1 { + compatible = "system-device-tree-v1,lop,select-v1"; + select_1; + select_2 = "/cpus_microblaze.*/cpu*.*:compatible:.*microblaze"; + select_3 = ":xlnx,use-hw-mul:1"; + lop_7_1_1 { + compatible = "system-device-tree-v1,lop,code-v1"; + code = " + if __selected__: + for n in __selected__: + n.tunes['multiply-low'] = 'multiply-low' + "; + }; + }; + lop_8_1 { + compatible = "system-device-tree-v1,lop,select-v1"; + select_1; + select_2 = "/cpus_microblaze.*/cpu*.*:compatible:.*microblaze"; + select_3 = ":xlnx,use-hw-mul:2"; + lop_8_1_1 { + compatible = "system-device-tree-v1,lop,code-v1"; + code = " + if __selected__: + for n in __selected__: + n.tunes['multiply-high'] = 'multiply-high' + "; + }; + }; + lop_9_1 { + compatible = "system-device-tree-v1,lop,select-v1"; + select_1; + select_2 = "/cpus_microblaze.*/cpu*.*:compatible:.*microblaze"; + select_3 = ":xlnx,use-div:1"; + lop_9_1_1 { + compatible = "system-device-tree-v1,lop,code-v1"; + code = " + if __selected__: + for n in __selected__: + n.tunes['divide-hard'] = 'divide-hard' + "; + }; + }; + lop_10_1 { + compatible = "system-device-tree-v1,lop,select-v1"; + select_1; + select_2 = "/cpus_microblaze.*/cpu*.*:compatible:.*microblaze"; + select_3 = ":xlnx,use-fpu:!1"; + select_4 = ":xlnx,use-fpu:!2"; + lop_10_1_1 { + compatible = "system-device-tree-v1,lop,code-v1"; + code = " + if __selected__: + for n in __selected__: + n.tunes['fpu-soft'] = 'fpu-soft' + "; + }; + }; + lop_11_1 { + compatible = "system-device-tree-v1,lop,select-v1"; + select_1; + select_2 = "/cpus_microblaze.*/cpu*.*:compatible:.*microblaze"; + select_3 = ":xlnx,use-fpu:1"; + lop_11_1_1 { + compatible = "system-device-tree-v1,lop,code-v1"; + code = " + if __selected__: + for n in __selected__: + n.tunes['fpu-hard'] = 'fpu-hard' + "; + }; + }; + lop_12_1 { + compatible = "system-device-tree-v1,lop,select-v1"; + select_1; + select_2 = "/cpus_microblaze.*/cpu*.*:compatible:.*microblaze"; + select_3 = ":xlnx,use-fpu:2"; + lop_12_1_1 { + compatible = "system-device-tree-v1,lop,code-v1"; + code = " + if __selected__: + for n in __selected__: + n.tunes['fpu-hard-extended'] = 'fpu-hard-extended' + "; + }; + }; + lop_output_tunes { + compatible = "system-device-tree-v1,lop,select-v1"; + select_1; + select_2 = "/cpus_microblaze.*/cpu*.*:compatible:.*microblaze"; + lop_output_code { + compatible = "system-device-tree-v1,lop,code-v1"; + code = " + cpu_addr = 0 + firmware_cpus = {} + for n in __selected__: + tname = 'microblaze-'+n.tune_type + if n.tune_type == 'cpu': + tname = tname + str(cpu_addr) + cpu_addr += 1 + print( '# %s\\n# compatible = \"%s\";' % (n, n['compatible'].value[0])) + print( 'AVAILTUNES += \"%s\"' % tname ) + print( 'TUNE_FEATURES:tune-%s = \"%s\"' % (tname, ' '.join(n.tunes.values()))) + print( 'PACKAGE_EXTRA_ARCHS:tune-%s = \"${TUNE_PKGARCH}\"\\n' % tname ) + "; + }; + }; + }; +}; |