diff options
| author | Mark Hatle <mark.hatle@amd.com> | 2023-10-22 18:31:29 -0600 |
|---|---|---|
| committer | Mark Hatle <mark.hatle@amd.com> | 2023-10-22 18:40:49 -0600 |
| commit | e08eacd3b7e25d9435c742dcfb54c1e31113c047 (patch) | |
| tree | 652a04a253667124b70f335cd2ff86112162c786 | |
| parent | 000776e2d3ecdbf03fd3204e5879e4900f68118f (diff) | |
| parent | 05911e19d85fd98c42054238392afe95a5125265 (diff) | |
| download | meta-xilinx-e08eacd3b7e25d9435c742dcfb54c1e31113c047.tar.gz | |
Merge remote-tracking branch 'origin/rel-v2023.2' into mickledore
Signed-off-by: Mark Hatle <mark.hatle@amd.com>
128 files changed, 3474 insertions, 542 deletions
diff --git a/.gitmodules b/.gitmodules index ae8486a4..017e758a 100644 --- a/.gitmodules +++ b/.gitmodules | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | [submodule "gen-machine-conf"] | 1 | [submodule "gen-machine-conf"] |
| 2 | path = meta-xilinx-core/gen-machine-conf | 2 | path = meta-xilinx-core/gen-machine-conf |
| 3 | url = https://github.com/Xilinx/gen-machine-conf.git | 3 | url = https://gitenterprise.xilinx.com/Petalinux/gen-machine-conf.git |
| 4 | branch = xlnx_rel_v2023.1 | 4 | branch = xlnx_rel_v2023.2 |
diff --git a/README.building.md b/README.building.md index 8bb866a7..7ffc1ab3 100644 --- a/README.building.md +++ b/README.building.md | |||
| @@ -31,7 +31,7 @@ $ source poky/oe-init-build-env | |||
| 31 | 4. Once initialized configure `bblayers.conf` by adding dependency layers as shown | 31 | 4. Once initialized configure `bblayers.conf` by adding dependency layers as shown |
| 32 | below using `bitbake-layers` command. | 32 | below using `bitbake-layers` command. |
| 33 | > **Note:** From step 3 by default `meta-yocto-bsp` will be included in bblayers.conf | 33 | > **Note:** From step 3 by default `meta-yocto-bsp` will be included in bblayers.conf |
| 34 | > file and this can be removed using `$ bitbake-layers add-layer meta-yocto-bsp` | 34 | > file and this can be removed using `$ bitbake-layers remove-layer meta-yocto-bsp` |
| 35 | > command. | 35 | > command. |
| 36 | 36 | ||
| 37 | ``` | 37 | ``` |
diff --git a/docs/README.dfx.user.dts.md b/docs/README.dfx.user.dts.md new file mode 100644 index 00000000..6cfc5fd0 --- /dev/null +++ b/docs/README.dfx.user.dts.md | |||
| @@ -0,0 +1,475 @@ | |||
| 1 | # Build Instructions to create firmware recipes using dfx_user_dts bbclass | ||
| 2 | |||
| 3 | * [Introduction](#introduction) | ||
| 4 | * [How to create a firmware recipe app](#how-to-create-a-firmware-recipe-app) | ||
| 5 | * [Test Procedure on Target](#test-procedure-on-target) | ||
| 6 | * [Loading PL bitstream or pdi and dt overlay](#loading-pl-bitstream-or-pdi-and-dt-overlay) | ||
| 7 | * [Testing PL functionality](#testing-pl-functionality) | ||
| 8 | * [Unloading PL bitstream or pdi and dt overlay](#unloading-pl-bitstream-or-pdi-and-dt-overlay) | ||
| 9 | * [References](#references) | ||
| 10 | |||
| 11 | ## Introduction | ||
| 12 | This readme describes the build instructions to create firmware recipes using | ||
| 13 | dfx_user_dts.bbclass for dfx configuration. This bitbake class supports | ||
| 14 | following use cases. | ||
| 15 | |||
| 16 | > **Note:** Refer https://github.com/Xilinx/dfx-mgr/blob/master/README.md for | ||
| 17 | > shell.json and accel.json file content. | ||
| 18 | |||
| 19 | * **Zynq-7000 and ZynqMP**: | ||
| 20 | * Design: Vivado flat design. | ||
| 21 | * Input files to firmware recipes: .bit, .dtsi or dtbo and shell.json (optional) | ||
| 22 | * Usage Examples: | ||
| 23 | ``` | ||
| 24 | SRC_URI = " \ | ||
| 25 | file://<flat_design_pl>.bit \ | ||
| 26 | file://<flat_design_pl>.dtsi \ | ||
| 27 | file://shell.json \ | ||
| 28 | " | ||
| 29 | ``` | ||
| 30 | |||
| 31 | ``` | ||
| 32 | SRC_URI = " \ | ||
| 33 | file://<flat_design_pl>.bit \ | ||
| 34 | file://<flat_design_pl>.dtbo \ | ||
| 35 | file://shell.json \ | ||
| 36 | " | ||
| 37 | ``` | ||
| 38 | |||
| 39 | * **ZynqMP and Versal**: | ||
| 40 | * Design: Vivado DFx design. | ||
| 41 | * Input files to firmware recipes: .bit(ZynqMP) or .pdi(Versal), .dtsi or dtbo | ||
| 42 | shell.json or accel.json (optional) and .xclbin (optional). | ||
| 43 | * Usage Examples: | ||
| 44 | |||
| 45 | ``` | ||
| 46 | # ZynqMP DFx Static | ||
| 47 | SRC_URI = " \ | ||
| 48 | file://<dfx_design_static_pl>.bit \ | ||
| 49 | file://<dfx_design_static_pl>.dtsi \ | ||
| 50 | file://shell.json \ | ||
| 51 | file://<dfx_design_static_pl>.xclbin \ | ||
| 52 | " | ||
| 53 | ``` | ||
| 54 | |||
| 55 | ``` | ||
| 56 | # ZynqMP DFx Static | ||
| 57 | SRC_URI = " \ | ||
| 58 | file://<dfx_design_static_pl>.bit \ | ||
| 59 | file://<dfx_design_static_pl>.dtbo \ | ||
| 60 | file://shell.json \ | ||
| 61 | file://<dfx_design_static_pl>.xclbin \ | ||
| 62 | " | ||
| 63 | ``` | ||
| 64 | |||
| 65 | ``` | ||
| 66 | # ZynqMP DFx RP | ||
| 67 | SRC_URI = " \ | ||
| 68 | file://<dfx_design_rp_rm_pl>.bit \ | ||
| 69 | file://<dfx_design_rp_rm_pl>.dtsi \ | ||
| 70 | file://accel.json \ | ||
| 71 | file://<dfx_design_rp_rm_pl>.xclbin \ | ||
| 72 | " | ||
| 73 | ``` | ||
| 74 | |||
| 75 | ``` | ||
| 76 | # ZynqMP DFx RP | ||
| 77 | SRC_URI = " \ | ||
| 78 | file://<dfx_design_rp_rm_pl>.bit \ | ||
| 79 | file://<dfx_design_rp_rm_pl>.dtbo \ | ||
| 80 | file://accel.json \ | ||
| 81 | file://<dfx_design_rp_rm_pl>.xclbin \ | ||
| 82 | " | ||
| 83 | ``` | ||
| 84 | ``` | ||
| 85 | # Versal DFx Static | ||
| 86 | SRC_URI = " \ | ||
| 87 | file://<dfx_design_static_pl>.pdi \ | ||
| 88 | file://<dfx_design_static_pl>.dtsi \ | ||
| 89 | file://shell.json \ | ||
| 90 | file://<dfx_design_static_pl>.xclbin \ | ||
| 91 | " | ||
| 92 | ``` | ||
| 93 | |||
| 94 | ``` | ||
| 95 | # Versal DFx Static | ||
| 96 | SRC_URI = " \ | ||
| 97 | file://<dfx_design_static_pl>.pdi \ | ||
| 98 | file://<dfx_design_static_pl>.dtbo \ | ||
| 99 | file://shell.json \ | ||
| 100 | file://<dfx_design_static_pl>.xclbin \ | ||
| 101 | " | ||
| 102 | ``` | ||
| 103 | |||
| 104 | ``` | ||
| 105 | # Versal DFx RP | ||
| 106 | SRC_URI = " \ | ||
| 107 | file://<dfx_design_rp_rm_pl>.pdi \ | ||
| 108 | file://<dfx_design_rp_rm_pl>.dtsi \ | ||
| 109 | file://accel.json \ | ||
| 110 | file://<dfx_design_rp_rm_pl>.xclbin \ | ||
| 111 | " | ||
| 112 | ``` | ||
| 113 | |||
| 114 | ``` | ||
| 115 | # Versal DFx RP | ||
| 116 | SRC_URI = " \ | ||
| 117 | file://<dfx_design_rp_rm_pl>.pdi \ | ||
| 118 | file://<dfx_design_rp_rm_pl>.dtbo \ | ||
| 119 | file://accel.json \ | ||
| 120 | file://<dfx_design_rp_rm_pl>.xclbin \ | ||
| 121 | " | ||
| 122 | ``` | ||
| 123 | --- | ||
| 124 | |||
| 125 | ## How to create a firmware recipe app | ||
| 126 | |||
| 127 | 1. Follow [Building Instructions](../README.building.md) upto step 4. | ||
| 128 | 2. Create recipes-firmware directory in meta layer and copy the .bit/pdi, | ||
| 129 | .dtsi/dtbo, .json and .xclbin file to these directories. | ||
| 130 | ``` | ||
| 131 | $ mkdir -p <meta-layer>/recipes-fimrware/<recipes-firmware-app>/files | ||
| 132 | $ cp -r <path-to-files>/*.{bit or pdi, dtsi or dtbo, shell.json or accel.json and .xclbin} <meta-layer>/recipes-fimrware/<firmware-app-name>/files | ||
| 133 | ``` | ||
| 134 | 3. Now create the recipes for flat or static or partial firmware using recipetool. | ||
| 135 | ``` | ||
| 136 | $ recipetool create -o <meta-layer>/recipes-fimrware/<firmware-app-name>/firmware-app-name.bb file:///<meta-layer>/recipes-fimrware/<firmware-app-name>/files | ||
| 137 | ``` | ||
| 138 | 4. Modify the recipe and inherit dfx_user_dts bbclass as shown below. | ||
| 139 | ``` | ||
| 140 | SUMMARY = "Full Bitstream loading app firmware using dfx_user_dts bbclass" | ||
| 141 | LICENSE = "MIT" | ||
| 142 | LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" | ||
| 143 | |||
| 144 | inherit dfx_user_dts | ||
| 145 | |||
| 146 | SRC_URI = "\ | ||
| 147 | file://zcu111-pl-demo.bit \ | ||
| 148 | file://zcu111-pl-demo.dtsi \ | ||
| 149 | " | ||
| 150 | |||
| 151 | COMPATIBLE_MACHINE ?= "^$" | ||
| 152 | COMPATIBLE_MACHINE:zynqmp = "zynqmp" | ||
| 153 | ``` | ||
| 154 | 5. Add firmware-recipe app to image and enable fpga-overlay machine features to | ||
| 155 | local.conf as shown below. | ||
| 156 | > **Note:** fpga-manager-script provides fpgautil tool to load .bit/pdi and dtbo | ||
| 157 | > at runtime linux. | ||
| 158 | ``` | ||
| 159 | MACHINE_FEATURES += "fpga-overlay" | ||
| 160 | IMAGE_INSTALL:append = " \ | ||
| 161 | firmware-app-name \ | ||
| 162 | fpga-manager-script \ | ||
| 163 | " | ||
| 164 | ``` | ||
| 165 | 6. Follow [Building Instructions](../README.building.md) and continue from step 5. | ||
| 166 | 7. Once images are built firmware app files will be installed on target_rootfs. | ||
| 167 | ``` | ||
| 168 | # <target_rootfs>/lib/firmware/xilinx/firmware-app-name | ||
| 169 | ``` | ||
| 170 | --- | ||
| 171 | |||
| 172 | ## Test Procedure on Target | ||
| 173 | * Once Linux boots on target, use fpgautil command to load .bit or .pdi and | ||
| 174 | corresponding dt overlay as shown below. | ||
| 175 | > **Note:** firmware can be loaded only with sudo or root permissions. | ||
| 176 | --- | ||
| 177 | |||
| 178 | ### Loading PL bitstream or pdi and dt overlay | ||
| 179 | |||
| 180 | * ZynqMP | ||
| 181 | ``` | ||
| 182 | yocto-zynqmp-generic-20231:~$ sudo su | ||
| 183 | yocto-zynqmp-generic-20231:/home/petalinux# cat /proc/interrupts | ||
| 184 | CPU0 CPU1 CPU2 CPU3 | ||
| 185 | 11: 13309 13021 13673 14170 GICv2 30 Level arch_timer | ||
| 186 | 14: 0 0 0 0 GICv2 67 Level zynqmp_ipi | ||
| 187 | 15: 0 0 0 0 GICv2 175 Level arm-pmu | ||
| 188 | 16: 0 0 0 0 GICv2 176 Level arm-pmu | ||
| 189 | 17: 0 0 0 0 GICv2 177 Level arm-pmu | ||
| 190 | 18: 0 0 0 0 GICv2 178 Level arm-pmu | ||
| 191 | 19: 0 0 0 0 GICv2 58 Level ffa60000.rtc | ||
| 192 | 20: 0 0 0 0 GICv2 59 Level ffa60000.rtc | ||
| 193 | 21: 0 0 0 0 GICv2 42 Level ff960000.memory-controller | ||
| 194 | 22: 0 0 0 0 GICv2 88 Level ams-irq | ||
| 195 | 23: 0 0 0 0 GICv2 155 Level axi-pmon, axi-pmon | ||
| 196 | 24: 327 0 0 0 GICv2 53 Level xuartps | ||
| 197 | 27: 0 0 0 0 GICv2 156 Level zynqmp-dma | ||
| 198 | 28: 0 0 0 0 GICv2 157 Level zynqmp-dma | ||
| 199 | 29: 0 0 0 0 GICv2 158 Level zynqmp-dma | ||
| 200 | 30: 0 0 0 0 GICv2 159 Level zynqmp-dma | ||
| 201 | 31: 0 0 0 0 GICv2 160 Level zynqmp-dma | ||
| 202 | 32: 0 0 0 0 GICv2 161 Level zynqmp-dma | ||
| 203 | 33: 0 0 0 0 GICv2 162 Level zynqmp-dma | ||
| 204 | 34: 0 0 0 0 GICv2 163 Level zynqmp-dma | ||
| 205 | 35: 0 0 0 0 GICv2 109 Level zynqmp-dma | ||
| 206 | 36: 0 0 0 0 GICv2 110 Level zynqmp-dma | ||
| 207 | 37: 0 0 0 0 GICv2 111 Level zynqmp-dma | ||
| 208 | 38: 0 0 0 0 GICv2 112 Level zynqmp-dma | ||
| 209 | 39: 0 0 0 0 GICv2 113 Level zynqmp-dma | ||
| 210 | 40: 0 0 0 0 GICv2 114 Level zynqmp-dma | ||
| 211 | 41: 0 0 0 0 GICv2 115 Level zynqmp-dma | ||
| 212 | 42: 0 0 0 0 GICv2 116 Level zynqmp-dma | ||
| 213 | 43: 0 0 0 0 GICv2 154 Level fd4c0000.dma-controller | ||
| 214 | 44: 5938 0 0 0 GICv2 47 Level ff0f0000.spi | ||
| 215 | 45: 76 0 0 0 GICv2 95 Level eth0, eth0 | ||
| 216 | 46: 0 0 0 0 GICv2 57 Level axi-pmon, axi-pmon | ||
| 217 | 47: 4802 0 0 0 GICv2 49 Level cdns-i2c | ||
| 218 | 48: 501 0 0 0 GICv2 50 Level cdns-i2c | ||
| 219 | 50: 0 0 0 0 GICv2 84 Edge ff150000.watchdog | ||
| 220 | 51: 0 0 0 0 GICv2 151 Level fd4a0000.display | ||
| 221 | 52: 548 0 0 0 GICv2 81 Level mmc0 | ||
| 222 | 53: 0 0 0 0 GICv2 165 Level ahci-ceva[fd0c0000.ahci] | ||
| 223 | 54: 0 0 0 0 GICv2 97 Level xhci-hcd:usb1 | ||
| 224 | 55: 0 0 0 0 zynq-gpio 22 Edge sw19 | ||
| 225 | IPI0: 64 25 87 38 Rescheduling interrupts | ||
| 226 | IPI1: 1933 6579 1096 5686 Function call interrupts | ||
| 227 | IPI2: 0 0 0 0 CPU stop interrupts | ||
| 228 | IPI3: 0 0 0 0 CPU stop (for crash dump) interrupts | ||
| 229 | IPI4: 0 0 0 0 Timer broadcast interrupts | ||
| 230 | IPI5: 0 0 0 0 IRQ work interrupts | ||
| 231 | IPI6: 0 0 0 0 CPU wake-up interrupts | ||
| 232 | Err: 0 | ||
| 233 | yocto-zynqmp-generic-20231:/home/petalinux# tree /lib/firmware/ | ||
| 234 | /lib/firmware/ | ||
| 235 | `-- xilinx | ||
| 236 | `-- zcu111-pl-demo | ||
| 237 | |-- zcu111-pl-demo.bit.bin | ||
| 238 | `-- zcu111-pl-demo.dtbo | ||
| 239 | |||
| 240 | 2 directories, 2 files | ||
| 241 | yocto-zynqmp-generic-20231:/home/petalinux# fpgautil -b /lib/firmware/xilinx/zcu111-pl-demo/zcu111-pl-demo.bit -o /lib/firmware/xilinx/zcu111-pl-demo/zcu111-pl-demo.dtbo | ||
| 242 | [ 91.039773] fpga_manager fpga0: writing zcu111-pl-demo.bit to Xilinx ZynqMP FPGA Manager | ||
| 243 | [ 91.528214] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /fpga-full/firmware-name | ||
| 244 | [ 91.538354] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /fpga-full/pid | ||
| 245 | [ 91.547598] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /fpga-full/resets | ||
| 246 | [ 91.557087] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /fpga-full/uid | ||
| 247 | [ 91.566804] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /__symbols__/afi0 | ||
| 248 | [ 91.576312] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /__symbols__/clocking0 | ||
| 249 | [ 91.586255] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /__symbols__/axi_gpio_0 | ||
| 250 | [ 91.596280] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /__symbols__/misc_clk_0 | ||
| 251 | [ 91.606300] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /__symbols__/axi_gpio_1 | ||
| 252 | [ 91.616325] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /__symbols__/axi_gpio_2 | ||
| 253 | [ 91.626342] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /__symbols__/axi_uartlite_0 | ||
| 254 | [ 91.636705] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /__symbols__/ddr4_0 | ||
| 255 | [ 91.661849] gpio gpiochip3: (a0000000.gpio): not an immutable chip, please consider fixing it! | ||
| 256 | [ 91.662020] gpio gpiochip4: (a0010000.gpio): not an immutable chip, please consider fixing it! | ||
| 257 | [ 91.863492] a0030000.serial: ttyUL0 at MMIO 0xa0030000 (irq = 58, base_baud = 0) is a uartlite | ||
| 258 | [ 91.876674] uartlite a0030000.serial: Runtime PM usage count underflow! | ||
| 259 | [ 91.906539] input: pl-gpio-keys as /devices/platform/pl-gpio-keys/input/input1 | ||
| 260 | Time taken to load BIN is 901.000000 Milli Seconds | ||
| 261 | BIN FILE loaded through FPGA manager successfully | ||
| 262 | yocto-zynqmp-generic-20231:/home/petalinux# | ||
| 263 | ``` | ||
| 264 | * Versal (DFx Static) | ||
| 265 | ``` | ||
| 266 | yocto-vck190-dfx-2023:~$ sudo su | ||
| 267 | root@yocto-vck190-dfx-2023:~# | ||
| 268 | root@yocto-vck190-dfx-2023:~# fpgautil -o /lib/firmware/xilinx/vck190-dfx-static/vck190-dfx-static.dtbo | ||
| 269 | [ 257.555571] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /fpga/external-fpga-config | ||
| 270 | [ 257.565879] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /fpga/pid | ||
| 271 | [ 257.574670] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /fpga/uid | ||
| 272 | [ 257.583599] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /__symbols__/fpga_PR0 | ||
| 273 | [ 257.593434] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /__symbols__/fpga_PR1 | ||
| 274 | [ 257.603268] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /__symbols__/fpga_PR2 | ||
| 275 | [ 257.613100] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /__symbols__/static_region_axi_bram_ctrl_0 | ||
| 276 | [ 257.624762] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /__symbols__/static_region_dfx_decoupler_rp1 | ||
| 277 | [ 257.636589] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /__symbols__/static_region_dfx_decoupler_rp2 | ||
| 278 | [ 257.648415] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /__symbols__/static_region_dfx_decoupler_rp3 | ||
| 279 | [ 257.663234] of-fpga-region fpga:fpga-PR0: FPGA Region probed | ||
| 280 | [ 257.669135] of-fpga-region fpga:fpga-PR1: FPGA Region probed | ||
| 281 | [ 257.675022] of-fpga-region fpga:fpga-PR2: FPGA Region probed | ||
| 282 | root@yocto-vck190-dfx-2023:~# | ||
| 283 | ``` | ||
| 284 | * Versal (DFx RP) | ||
| 285 | ``` | ||
| 286 | root@yocto-vck190-dfx-2023:~# fpgautil -b /lib/firmware/xilinx/vck190-dfx-static/rp1/vck190-dfx-rp1rm1-dipsw/vck190-dfx-rp1rm1-dipsw.pdi -o /lib/firmware/xilinx/vck190-dfx-static/rp1/vck190-dfx-rp1rm1-dipsw/vck190-dfx-rp1rm1-dipsw.dtbo -f Partial -n PR0 | ||
| 287 | [ 273.511455] fpga_manager fpga0: writing vck190-dfx-rp1rm1-dipsw.pdi to Xilinx Versal FPGA Manager | ||
| 288 | [284052.461]Loading PDI from DDR | ||
| 289 | [284052.566]Monolithic/Master Device | ||
| 290 | [284055.847]3.365 ms: PDI initialization time | ||
| 291 | [284059.809]+++Loading Image#: 0x0, Name: pl_cfi, Id: 0x18700002 | ||
| 292 | [284065.432]---Loading Partition#: 0x0, Id: 0x103 | ||
| 293 | [284069.829] 0.033 ms for Partition#: 0x0, Size: 1312 Bytes | ||
| 294 | [284074.973]---Loading Partition#: 0x1, Id: 0x105 | ||
| 295 | [284079.344] 0.007 ms for Partition#: 0x1, Size: 160 Bytes | ||
| 296 | [284084.430]---Loading Partition#: 0x2, Id: 0x205 | ||
| 297 | [284088.844] 0.049 ms for Partition#: 0x2, Size: 960 Bytes | ||
| 298 | [284093.887]---Loading Partition#: 0x3, Id: 0x203 | ||
| 299 | [284098.280] 0.030 ms for Partition#: 0x3, Size: 688 Bytes | ||
| 300 | [284103.342]---Loading Partition#: 0x4, Id: 0x303 | ||
| 301 | [284108.863] 1.156 ms for Partition#: 0x4, Size: 209440 Bytes | ||
| 302 | [284113.052]---Loading Partition#: 0x5, Id: 0x305 | ||
| 303 | [284117.712] 0.296 ms for Partition#: 0x5, Size: 3536 Bytes | ||
| 304 | [284122.594]---Loading Partition#: 0x6, Id: 0x403 | ||
| 305 | [284126.991] 0.034 ms for Partition#: 0x6, Size: 8096 Bytes | ||
| 306 | [284132.136]---Loading Partition#: 0x7, Id: 0x405 | ||
| 307 | [284136.507] 0.007 ms for Partition#: 0x7, Size: 160 Bytes | ||
| 308 | [284141.636]Subsystem PDI Load: Done | ||
| 309 | [ 273.615503] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /fpga/firmware-name | ||
| 310 | [ 273.627382] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /fpga/fpga-bridges | ||
| 311 | [ 273.636953] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /fpga/partial-fpga-config | ||
| 312 | [ 273.647241] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /__symbols__/rp1_axi_gpio_0 | ||
| 313 | [ 273.660826] gpio gpiochip1: (a4010000.gpio): not an immutable chip, please consider fixing it! | ||
| 314 | [ 273.670490] input: pl-gpio-keys as /devices/platform/pl-gpio-keys/input/input0 | ||
| 315 | Time taken to load BIN is 171.000000 Milli Seconds | ||
| 316 | BIN FILE loaded through FPGA manager successfully | ||
| 317 | root@yocto-vck190-dfx-2023:~# | ||
| 318 | ``` | ||
| 319 | --- | ||
| 320 | |||
| 321 | ### Testing PL functionality | ||
| 322 | |||
| 323 | * This examples uses PL GPIO DIP switches and Push buttons to capture interrupts. | ||
| 324 | * Verify PL GPIO DIP switches and Push buttons are registered. | ||
| 325 | * Move the DIP Switches ON/OFF and verify the interrupt counts. | ||
| 326 | ``` | ||
| 327 | yocto-zynqmp-generic-20231:/home/petalinux# cat /proc/interrupts | ||
| 328 | CPU0 CPU1 CPU2 CPU3 | ||
| 329 | 11: 23303 22971 24203 24990 GICv2 30 Level arch_timer | ||
| 330 | 14: 0 0 0 0 GICv2 67 Level zynqmp_ipi | ||
| 331 | 15: 0 0 0 0 GICv2 175 Level arm-pmu | ||
| 332 | 16: 0 0 0 0 GICv2 176 Level arm-pmu | ||
| 333 | 17: 0 0 0 0 GICv2 177 Level arm-pmu | ||
| 334 | 18: 0 0 0 0 GICv2 178 Level arm-pmu | ||
| 335 | 19: 0 0 0 0 GICv2 58 Level ffa60000.rtc | ||
| 336 | 20: 0 0 0 0 GICv2 59 Level ffa60000.rtc | ||
| 337 | 21: 0 0 0 0 GICv2 42 Level ff960000.memory-controller | ||
| 338 | 22: 0 0 0 0 GICv2 88 Level ams-irq | ||
| 339 | 23: 0 0 0 0 GICv2 155 Level axi-pmon, axi-pmon | ||
| 340 | 24: 515 0 0 0 GICv2 53 Level xuartps | ||
| 341 | 27: 0 0 0 0 GICv2 156 Level zynqmp-dma | ||
| 342 | 28: 0 0 0 0 GICv2 157 Level zynqmp-dma | ||
| 343 | 29: 0 0 0 0 GICv2 158 Level zynqmp-dma | ||
| 344 | 30: 0 0 0 0 GICv2 159 Level zynqmp-dma | ||
| 345 | 31: 0 0 0 0 GICv2 160 Level zynqmp-dma | ||
| 346 | 32: 0 0 0 0 GICv2 161 Level zynqmp-dma | ||
| 347 | 33: 0 0 0 0 GICv2 162 Level zynqmp-dma | ||
| 348 | 34: 0 0 0 0 GICv2 163 Level zynqmp-dma | ||
| 349 | 35: 0 0 0 0 GICv2 109 Level zynqmp-dma | ||
| 350 | 36: 0 0 0 0 GICv2 110 Level zynqmp-dma | ||
| 351 | 37: 0 0 0 0 GICv2 111 Level zynqmp-dma | ||
| 352 | 38: 0 0 0 0 GICv2 112 Level zynqmp-dma | ||
| 353 | 39: 0 0 0 0 GICv2 113 Level zynqmp-dma | ||
| 354 | 40: 0 0 0 0 GICv2 114 Level zynqmp-dma | ||
| 355 | 41: 0 0 0 0 GICv2 115 Level zynqmp-dma | ||
| 356 | 42: 0 0 0 0 GICv2 116 Level zynqmp-dma | ||
| 357 | 43: 0 0 0 0 GICv2 154 Level fd4c0000.dma-controller | ||
| 358 | 44: 5938 0 0 0 GICv2 47 Level ff0f0000.spi | ||
| 359 | 45: 110 0 0 0 GICv2 95 Level eth0, eth0 | ||
| 360 | 46: 0 0 0 0 GICv2 57 Level axi-pmon, axi-pmon | ||
| 361 | 47: 4802 0 0 0 GICv2 49 Level cdns-i2c | ||
| 362 | 48: 501 0 0 0 GICv2 50 Level cdns-i2c | ||
| 363 | 50: 0 0 0 0 GICv2 84 Edge ff150000.watchdog | ||
| 364 | 51: 0 0 0 0 GICv2 151 Level fd4a0000.display | ||
| 365 | 52: 548 0 0 0 GICv2 81 Level mmc0 | ||
| 366 | 53: 0 0 0 0 GICv2 165 Level ahci-ceva[fd0c0000.ahci] | ||
| 367 | 54: 0 0 0 0 GICv2 97 Level xhci-hcd:usb1 | ||
| 368 | 55: 0 0 0 0 zynq-gpio 22 Edge sw19 | ||
| 369 | 59: 0 0 0 0 gpio-xilinx 4 Edge PL_GPIO_PB_SW9_N | ||
| 370 | 60: 0 0 0 0 gpio-xilinx 3 Edge PL_GPIO_PB_SW12_E | ||
| 371 | 61: 0 0 0 0 gpio-xilinx 2 Edge PL_GPIO_PB_SW13_S | ||
| 372 | 62: 0 0 0 0 gpio-xilinx 1 Edge PL_GPIO_PB_SW10_W | ||
| 373 | 63: 0 0 0 0 gpio-xilinx 0 Edge PL_GPIO_PB_SW11_C | ||
| 374 | 64: 0 0 0 0 gpio-xilinx 7 Edge PL_GPIO_DIP_SW7 | ||
| 375 | 65: 0 0 0 0 gpio-xilinx 6 Edge PL_GPIO_DIP_SW6 | ||
| 376 | 66: 0 0 0 0 gpio-xilinx 5 Edge PL_GPIO_DIP_SW5 | ||
| 377 | 67: 0 0 0 0 gpio-xilinx 4 Edge PL_GPIO_DIP_SW4 | ||
| 378 | 68: 0 0 0 0 gpio-xilinx 3 Edge PL_GPIO_DIP_SW3 | ||
| 379 | 69: 0 0 0 0 gpio-xilinx 2 Edge PL_GPIO_DIP_SW2 | ||
| 380 | 70: 0 0 0 0 gpio-xilinx 1 Edge PL_GPIO_DIP_SW1 | ||
| 381 | 71: 0 0 0 0 gpio-xilinx 0 Edge PL_GPIO_DIP_SW0 | ||
| 382 | IPI0: 64 25 87 38 Rescheduling interrupts | ||
| 383 | IPI1: 2066 6747 1212 5791 Function call interrupts | ||
| 384 | IPI2: 0 0 0 0 CPU stop interrupts | ||
| 385 | IPI3: 0 0 0 0 CPU stop (for crash dump) interrupts | ||
| 386 | IPI4: 0 0 0 0 Timer broadcast interrupts | ||
| 387 | IPI5: 0 0 0 0 IRQ work interrupts | ||
| 388 | IPI6: 0 0 0 0 CPU wake-up interrupts | ||
| 389 | Err: 0 | ||
| 390 | yocto-zynqmp-generic-20231:/home/petalinux# cat /proc/interrupts | ||
| 391 | CPU0 CPU1 CPU2 CPU3 | ||
| 392 | 11: 28169 27725 29250 30190 GICv2 30 Level arch_timer | ||
| 393 | 14: 0 0 0 0 GICv2 67 Level zynqmp_ipi | ||
| 394 | 15: 0 0 0 0 GICv2 175 Level arm-pmu | ||
| 395 | 16: 0 0 0 0 GICv2 176 Level arm-pmu | ||
| 396 | 17: 0 0 0 0 GICv2 177 Level arm-pmu | ||
| 397 | 18: 0 0 0 0 GICv2 178 Level arm-pmu | ||
| 398 | 19: 0 0 0 0 GICv2 58 Level ffa60000.rtc | ||
| 399 | 20: 0 0 0 0 GICv2 59 Level ffa60000.rtc | ||
| 400 | 21: 0 0 0 0 GICv2 42 Level ff960000.memory-controller | ||
| 401 | 22: 0 0 0 0 GICv2 88 Level ams-irq | ||
| 402 | 23: 0 0 0 0 GICv2 155 Level axi-pmon, axi-pmon | ||
| 403 | 24: 603 0 0 0 GICv2 53 Level xuartps | ||
| 404 | 27: 0 0 0 0 GICv2 156 Level zynqmp-dma | ||
| 405 | 28: 0 0 0 0 GICv2 157 Level zynqmp-dma | ||
| 406 | 29: 0 0 0 0 GICv2 158 Level zynqmp-dma | ||
| 407 | 30: 0 0 0 0 GICv2 159 Level zynqmp-dma | ||
| 408 | 31: 0 0 0 0 GICv2 160 Level zynqmp-dma | ||
| 409 | 32: 0 0 0 0 GICv2 161 Level zynqmp-dma | ||
| 410 | 33: 0 0 0 0 GICv2 162 Level zynqmp-dma | ||
| 411 | 34: 0 0 0 0 GICv2 163 Level zynqmp-dma | ||
| 412 | 35: 0 0 0 0 GICv2 109 Level zynqmp-dma | ||
| 413 | 36: 0 0 0 0 GICv2 110 Level zynqmp-dma | ||
| 414 | 37: 0 0 0 0 GICv2 111 Level zynqmp-dma | ||
| 415 | 38: 0 0 0 0 GICv2 112 Level zynqmp-dma | ||
| 416 | 39: 0 0 0 0 GICv2 113 Level zynqmp-dma | ||
| 417 | 40: 0 0 0 0 GICv2 114 Level zynqmp-dma | ||
| 418 | 41: 0 0 0 0 GICv2 115 Level zynqmp-dma | ||
| 419 | 42: 0 0 0 0 GICv2 116 Level zynqmp-dma | ||
| 420 | 43: 0 0 0 0 GICv2 154 Level fd4c0000.dma-controller | ||
| 421 | 44: 5938 0 0 0 GICv2 47 Level ff0f0000.spi | ||
| 422 | 45: 134 0 0 0 GICv2 95 Level eth0, eth0 | ||
| 423 | 46: 0 0 0 0 GICv2 57 Level axi-pmon, axi-pmon | ||
| 424 | 47: 4802 0 0 0 GICv2 49 Level cdns-i2c | ||
| 425 | 48: 501 0 0 0 GICv2 50 Level cdns-i2c | ||
| 426 | 50: 0 0 0 0 GICv2 84 Edge ff150000.watchdog | ||
| 427 | 51: 0 0 0 0 GICv2 151 Level fd4a0000.display | ||
| 428 | 52: 548 0 0 0 GICv2 81 Level mmc0 | ||
| 429 | 53: 0 0 0 0 GICv2 165 Level ahci-ceva[fd0c0000.ahci] | ||
| 430 | 54: 0 0 0 0 GICv2 97 Level xhci-hcd:usb1 | ||
| 431 | 55: 0 0 0 0 zynq-gpio 22 Edge sw19 | ||
| 432 | 59: 2 0 0 0 gpio-xilinx 4 Edge PL_GPIO_PB_SW9_N | ||
| 433 | 60: 4 0 0 0 gpio-xilinx 3 Edge PL_GPIO_PB_SW12_E | ||
| 434 | 61: 2 0 0 0 gpio-xilinx 2 Edge PL_GPIO_PB_SW13_S | ||
| 435 | 62: 2 0 0 0 gpio-xilinx 1 Edge PL_GPIO_PB_SW10_W | ||
| 436 | 63: 2 0 0 0 gpio-xilinx 0 Edge PL_GPIO_PB_SW11_C | ||
| 437 | 64: 2 0 0 0 gpio-xilinx 7 Edge PL_GPIO_DIP_SW7 | ||
| 438 | 65: 2 0 0 0 gpio-xilinx 6 Edge PL_GPIO_DIP_SW6 | ||
| 439 | 66: 4 0 0 0 gpio-xilinx 5 Edge PL_GPIO_DIP_SW5 | ||
| 440 | 67: 2 0 0 0 gpio-xilinx 4 Edge PL_GPIO_DIP_SW4 | ||
| 441 | 68: 2 0 0 0 gpio-xilinx 3 Edge PL_GPIO_DIP_SW3 | ||
| 442 | 69: 2 0 0 0 gpio-xilinx 2 Edge PL_GPIO_DIP_SW2 | ||
| 443 | 70: 2 0 0 0 gpio-xilinx 1 Edge PL_GPIO_DIP_SW1 | ||
| 444 | 71: 2 0 0 0 gpio-xilinx 0 Edge PL_GPIO_DIP_SW0 | ||
| 445 | IPI0: 64 26 87 38 Rescheduling interrupts | ||
| 446 | IPI1: 2163 6791 1243 5866 Function call interrupts | ||
| 447 | IPI2: 0 0 0 0 CPU stop interrupts | ||
| 448 | IPI3: 0 0 0 0 CPU stop (for crash dump) interrupts | ||
| 449 | IPI4: 0 0 0 0 Timer broadcast interrupts | ||
| 450 | IPI5: 0 0 0 0 IRQ work interrupts | ||
| 451 | IPI6: 0 0 0 0 CPU wake-up interrupts | ||
| 452 | Err: 0 | ||
| 453 | yocto-zynqmp-generic-20231:/home/petalinux# | ||
| 454 | ``` | ||
| 455 | --- | ||
| 456 | |||
| 457 | ### Unloading PL bitstream or pdi and dt overlay | ||
| 458 | * Zynq or ZynqMP | ||
| 459 | ``` | ||
| 460 | yocto-zynqmp-generic-20231:/home/petalinux# fpgautil -R | ||
| 461 | ``` | ||
| 462 | * Versal (DFx RP) | ||
| 463 | ``` | ||
| 464 | root@yocto-vck190-dfx-2023:~# fpgautil -R -n PR0 | ||
| 465 | ``` | ||
| 466 | * Versal (DFx Static) | ||
| 467 | ``` | ||
| 468 | root@yocto-vck190-dfx-2023:~# fpgautil -R -n Full | ||
| 469 | ``` | ||
| 470 | --- | ||
| 471 | |||
| 472 | ## References | ||
| 473 | * https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841645/Solution+Zynq+PL+Programming+With+FPGA+Manager | ||
| 474 | * https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841847/Solution+ZynqMP+PL+Programming | ||
| 475 | * https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/1188397412/Solution+Versal+PL+Programming | ||
diff --git a/docs/README.fpgamanager.custom.md b/docs/README.fpgamanager.custom.md index ada3985e..dcdaec55 100644 --- a/docs/README.fpgamanager.custom.md +++ b/docs/README.fpgamanager.custom.md | |||
| @@ -8,6 +8,9 @@ | |||
| 8 | * [Unloading PL bitstream or pdi and dt overlay](#unloading-pl-bitstream-or-pdi-and-dt-overlay) | 8 | * [Unloading PL bitstream or pdi and dt overlay](#unloading-pl-bitstream-or-pdi-and-dt-overlay) |
| 9 | * [References](#references) | 9 | * [References](#references) |
| 10 | 10 | ||
| 11 | > **Note:** This README will be deprecated in 2024.1 release. User sthould start | ||
| 12 | > using [DFx User DTS README](README.dfx.user.dts.md) | ||
| 13 | |||
| 11 | ## Introduction | 14 | ## Introduction |
| 12 | This readme describes the build instructions to create firmware recipes using | 15 | This readme describes the build instructions to create firmware recipes using |
| 13 | fpgamanager_custom.bbclass for dynamic configuration. This bitbake class supports | 16 | fpgamanager_custom.bbclass for dynamic configuration. This bitbake class supports |
diff --git a/meta-microblaze/recipes-devtools/tcf-agent/tcf-agent_%.bbappend b/meta-microblaze/recipes-devtools/tcf-agent/tcf-agent_%.bbappend new file mode 100644 index 00000000..0938bd1a --- /dev/null +++ b/meta-microblaze/recipes-devtools/tcf-agent/tcf-agent_%.bbappend | |||
| @@ -0,0 +1,2 @@ | |||
| 1 | MAKE_ARCH:microblaze = "microblaze" | ||
| 2 | |||
diff --git a/meta-xilinx-bsp/README.md b/meta-xilinx-bsp/README.md index 96a23687..2d869913 100644 --- a/meta-xilinx-bsp/README.md +++ b/meta-xilinx-bsp/README.md | |||
| @@ -33,15 +33,16 @@ The following boards are supported by the meta-xilinx-bsp layer: | |||
| 33 | | | [ZCU104](https://www.xilinx.com/products/boards-and-kits/zcu104.html) | [zcu104-zynqmp](conf/machine/zcu104-zynqmp.conf) | `zcu104-zynqmp` | `zcu104-revc` | Yes | Yes | | 33 | | | [ZCU104](https://www.xilinx.com/products/boards-and-kits/zcu104.html) | [zcu104-zynqmp](conf/machine/zcu104-zynqmp.conf) | `zcu104-zynqmp` | `zcu104-revc` | Yes | Yes | |
| 34 | | | [ZCU106](https://www.xilinx.com/products/boards-and-kits/zcu106.html) | [zcu106-zynqmp](conf/machine/zcu106-zynqmp.conf) | `zcu106-zynqmp` | `zcu106-reva` | Yes | Yes | | 34 | | | [ZCU106](https://www.xilinx.com/products/boards-and-kits/zcu106.html) | [zcu106-zynqmp](conf/machine/zcu106-zynqmp.conf) | `zcu106-zynqmp` | `zcu106-reva` | Yes | Yes | |
| 35 | | | [ZCU111](https://www.xilinx.com/products/boards-and-kits/zcu111.html) | [zcu111-zynqmp](conf/machine/zcu111-zynqmp.conf) | `zcu111-zynqmp` | `zcu111-reva` | Yes | Yes | | 35 | | | [ZCU111](https://www.xilinx.com/products/boards-and-kits/zcu111.html) | [zcu111-zynqmp](conf/machine/zcu111-zynqmp.conf) | `zcu111-zynqmp` | `zcu111-reva` | Yes | Yes | |
| 36 | | | [ZCU1275](https://www.xilinx.com/products/boards-and-kits/zcu1275.html) | [zcu1275-zynqmp](conf/machine/zcu1275-zynqmp.conf) | `zcu1275-zynqmp` | `zcu1275-revb` | Yes | Yes | | ||
| 37 | | | [ZCU1285](https://www.xilinx.com/products/boards-and-kits/zcu1285.html) | [zcu1285-zynqmp](conf/machine/zcu1285-zynqmp.conf) | `zcu1285-zynqmp` | `zcu1285-reva` | Yes | Yes | | ||
| 38 | | | [ZCU208](https://www.xilinx.com/products/boards-and-kits/zcu208.html) | [zcu208-zynqmp](conf/machine/zcu208-zynqmp.conf) | `zcu208-zynqmp` | `zcu208-reva` | Yes | Yes | | 36 | | | [ZCU208](https://www.xilinx.com/products/boards-and-kits/zcu208.html) | [zcu208-zynqmp](conf/machine/zcu208-zynqmp.conf) | `zcu208-zynqmp` | `zcu208-reva` | Yes | Yes | |
| 39 | | | [ZCU216](https://www.xilinx.com/products/boards-and-kits/zcu216.html) | [zcu216-zynqmp](conf/machine/zcu216-zynqmp.conf) | `zcu216-zynqmp` | `zcu216-reva` | Yes | Yes | | 37 | | | [ZCU216](https://www.xilinx.com/products/boards-and-kits/zcu216.html) | [zcu216-zynqmp](conf/machine/zcu216-zynqmp.conf) | `zcu216-zynqmp` | `zcu216-reva` | Yes | Yes | |
| 38 | | | [ZCU670](https://www.xilinx.com/products/boards-and-kits/zcu670.html) | [zcu670-zynqmp](conf/machine/zcu670-zynqmp.conf) | `zcu670-zynqmp` | `zcu670-revb` | Yes | Yes | | ||
| 40 | | Versal | [VCK190](https://www.xilinx.com/products/boards-and-kits/vck190.html) | [vck190-versal](conf/machine/vck190-versal.conf) | `vck190-versal` | `versal-vck190-reva-x-ebm-01-reva` | Yes | Yes | | 39 | | Versal | [VCK190](https://www.xilinx.com/products/boards-and-kits/vck190.html) | [vck190-versal](conf/machine/vck190-versal.conf) | `vck190-versal` | `versal-vck190-reva-x-ebm-01-reva` | Yes | Yes | |
| 41 | | | [VMK180](https://www.xilinx.com/products/boards-and-kits/vmk180.html) | [vmk180-versal](conf/machine/vmk180-versal.conf) | `vmk180-versal` | `versal-vmk180-reva-x-ebm-01-reva` | Yes | Yes | | 40 | | | [VMK180](https://www.xilinx.com/products/boards-and-kits/vmk180.html) | [vmk180-versal](conf/machine/vmk180-versal.conf) | `vmk180-versal` | `versal-vmk180-reva-x-ebm-01-reva` | Yes | Yes | |
| 41 | | | [VCK5000](https://www.xilinx.com/products/boards-and-kits/vck5000.html) | [vck5000-versal](conf/machine/vck5000-versal.conf) | `vck5000-versal` | `versal-vck5000-reva-x-ebm-01-reva` | No | No | | ||
| 42 | | | [VPK120](https://www.xilinx.com/products/boards-and-kits/vpk120.html) | [vpk120-versal](conf/machine/vpk120-versal.conf) | `vpk120-versal` | `versal-vpk120-reva` | Yes | Yes | | 42 | | | [VPK120](https://www.xilinx.com/products/boards-and-kits/vpk120.html) | [vpk120-versal](conf/machine/vpk120-versal.conf) | `vpk120-versal` | `versal-vpk120-reva` | Yes | Yes | |
| 43 | | | [VPK180](https://www.xilinx.com/products/boards-and-kits/vpk180.html) | [vpk180-versal](conf/machine/vpk180-versal.conf) | `vpk180-versal` | `versal-vpk180-reva` | Yes | Yes | | 43 | | | [VPK180](https://www.xilinx.com/products/boards-and-kits/vpk180.html) | [vpk180-versal](conf/machine/vpk180-versal.conf) | `vpk180-versal` | `versal-vpk180-reva` | Yes | Yes | |
| 44 | | | [VEK280](https://www.xilinx.com/products/boards-and-kits/vek280.html) | [vek280-versal](conf/machine/vek280-versal.conf) | `vek280-versal` | `versal-vek280-reva` | Yes | Yes | | 44 | | | [VEK280](https://www.xilinx.com/products/boards-and-kits/vek280.html) | [vek280-versal](conf/machine/vek280-versal.conf) | `vek280-versal` | `versal-vek280-revb` | Yes | Yes | |
| 45 | | | [VHK158](https://www.xilinx.com/products/boards-and-kits/vhk158.html) | [vhk158-versal](conf/machine/vhk158-versal.conf) | `vhk158-versal` | `versal-vhk158-reva` | Yes | Yes | | ||
| 45 | 46 | ||
| 46 | > **Note:** Additional information on Xilinx architectures can be found at: | 47 | > **Note:** Additional information on Xilinx architectures can be found at: |
| 47 | https://www.xilinx.com/products/silicon-devices.html | 48 | https://www.xilinx.com/products/silicon-devices.html |
diff --git a/meta-xilinx-bsp/conf/machine/ac701-microblazeel.conf b/meta-xilinx-bsp/conf/machine/ac701-microblazeel.conf index 88a0d7bb..27cb3939 100644 --- a/meta-xilinx-bsp/conf/machine/ac701-microblazeel.conf +++ b/meta-xilinx-bsp/conf/machine/ac701-microblazeel.conf | |||
| @@ -10,13 +10,6 @@ MACHINEOVERRIDES =. "${@['', 'ac701-microblazeel:']['ac701-microblazeel' !='${MA | |||
| 10 | # defined before calling the required inclusion file else pre-expansion value | 10 | # defined before calling the required inclusion file else pre-expansion value |
| 11 | # defined in microblazeel-generic.conf will be set. | 11 | # defined in microblazeel-generic.conf will be set. |
| 12 | 12 | ||
| 13 | # Yocto AC701 FS-Boot variables | ||
| 14 | YAML_SERIAL_CONSOLE_STDIN:pn-fs-boot ?= "axi_uartlite_0" | ||
| 15 | YAML_SERIAL_CONSOLE_STDOUT:pn-fs-boot ?= "axi_uartlite_0" | ||
| 16 | YAML_MAIN_MEMORY_CONFIG:pn-fs-boot ?= "MIG_7SERIES_0" | ||
| 17 | YAML_FLASH_MEMORY_CONFIG:pn-fs-boot ?= "axi_quad_spi_0" | ||
| 18 | XSCTH_PROC:pn-fs-boot ?= "microblaze_0" | ||
| 19 | |||
| 20 | # Yocto AC701 device-tree variables | 13 | # Yocto AC701 device-tree variables |
| 21 | YAML_CONSOLE_DEVICE_CONFIG:pn-device-tree ?= "axi_uartlite_0" | 14 | YAML_CONSOLE_DEVICE_CONFIG:pn-device-tree ?= "axi_uartlite_0" |
| 22 | YAML_MAIN_MEMORY_CONFIG:pn-device-tree ?= "MIG_7SERIES_0" | 15 | YAML_MAIN_MEMORY_CONFIG:pn-device-tree ?= "MIG_7SERIES_0" |
| @@ -25,6 +18,21 @@ DTC_FLAGS:pn-device-tree ?= "" | |||
| 25 | XSCTH_PROC:pn-device-tree ?= "microblaze_0" | 18 | XSCTH_PROC:pn-device-tree ?= "microblaze_0" |
| 26 | YAML_DT_BOARD_FLAGS ?= "{BOARD ac701-full}" | 19 | YAML_DT_BOARD_FLAGS ?= "{BOARD ac701-full}" |
| 27 | 20 | ||
| 21 | # Yocto FS-Boot variables | ||
| 22 | YAML_SERIAL_CONSOLE_STDIN:pn-fs-boot ?= "axi_uartlite_0" | ||
| 23 | YAML_SERIAL_CONSOLE_STDOUT:pn-fs-boot ?= "axi_uartlite_0" | ||
| 24 | YAML_MAIN_MEMORY_CONFIG:pn-fs-boot ?= "MIG_7SERIES_0" | ||
| 25 | YAML_FLASH_MEMORY_CONFIG:pn-fs-boot ?= "axi_quad_spi_0" | ||
| 26 | XSCTH_PROC:pn-fs-boot ?= "microblaze_0" | ||
| 27 | |||
| 28 | # Yocto KERNEL Variables | ||
| 29 | UBOOT_ENTRYPOINT ?= "0x80000000" | ||
| 30 | UBOOT_LOADADDRESS ?= "0x80000000" | ||
| 31 | |||
| 32 | # ac701-microblazeel Serial Console | ||
| 33 | SERIAL_CONSOLES ?= "115200;ttyUL0" | ||
| 34 | YAML_SERIAL_CONSOLE_BAUDRATE ?= "115200" | ||
| 35 | |||
| 28 | # Set DDR Base address for u-boot-xlnx-scr variables | 36 | # Set DDR Base address for u-boot-xlnx-scr variables |
| 29 | DDR_BASEADDR ?= "0x80000000" | 37 | DDR_BASEADDR ?= "0x80000000" |
| 30 | SKIP_APPEND_BASEADDR ?= "0" | 38 | SKIP_APPEND_BASEADDR ?= "0" |
| @@ -39,4 +47,4 @@ HDF_MACHINE = "ac701-microblazeel" | |||
| 39 | 47 | ||
| 40 | #### No additional settings should be after the Postamble | 48 | #### No additional settings should be after the Postamble |
| 41 | #### Postamble | 49 | #### Postamble |
| 42 | PACKAGE_EXTRA_ARCHS:append = "${@['', 'ac701_microblazeel']['ac701-microblazeel' != '${MACHINE}']}" | 50 | PACKAGE_EXTRA_ARCHS:append = "${@['', ' ac701_microblazeel']['ac701-microblazeel' != '${MACHINE}']}" |
diff --git a/meta-xilinx-bsp/conf/machine/kc705-microblazeel.conf b/meta-xilinx-bsp/conf/machine/kc705-microblazeel.conf index f24d0356..f3236f07 100644 --- a/meta-xilinx-bsp/conf/machine/kc705-microblazeel.conf +++ b/meta-xilinx-bsp/conf/machine/kc705-microblazeel.conf | |||
| @@ -15,7 +15,7 @@ YAML_CONSOLE_DEVICE_CONFIG:pn-device-tree ?= "axi_uartlite_0" | |||
| 15 | YAML_MAIN_MEMORY_CONFIG:pn-device-tree ?= "MIG_7SERIES_0" | 15 | YAML_MAIN_MEMORY_CONFIG:pn-device-tree ?= "MIG_7SERIES_0" |
| 16 | DT_PADDING_SIZE:pn-device-tree ?= "0x1000" | 16 | DT_PADDING_SIZE:pn-device-tree ?= "0x1000" |
| 17 | DTC_FLAGS:pn-device-tree ?= "" | 17 | DTC_FLAGS:pn-device-tree ?= "" |
| 18 | XSCTH_PROC:microblaze:pn-device-tree ?= "microblaze_0" | 18 | XSCTH_PROC:pn-device-tree ?= "microblaze_0" |
| 19 | YAML_DT_BOARD_FLAGS ?= "{BOARD kc705-full}" | 19 | YAML_DT_BOARD_FLAGS ?= "{BOARD kc705-full}" |
| 20 | 20 | ||
| 21 | # Yocto FS-Boot variables | 21 | # Yocto FS-Boot variables |
| @@ -29,14 +29,14 @@ XSCTH_PROC:pn-fs-boot ?= "microblaze_0" | |||
| 29 | UBOOT_ENTRYPOINT ?= "0x80000000" | 29 | UBOOT_ENTRYPOINT ?= "0x80000000" |
| 30 | UBOOT_LOADADDRESS ?= "0x80000000" | 30 | UBOOT_LOADADDRESS ?= "0x80000000" |
| 31 | 31 | ||
| 32 | # Set DDR Base address for u-boot-xlnx-scr variables | ||
| 33 | DDR_BASEADDR ?= "0x80000000" | ||
| 34 | SKIP_APPEND_BASEADDR ?= "0" | ||
| 35 | |||
| 36 | # kc705-microblazeel Serial Console | 32 | # kc705-microblazeel Serial Console |
| 37 | SERIAL_CONSOLES ?= "115200;ttyUL0" | 33 | SERIAL_CONSOLES ?= "115200;ttyUL0" |
| 38 | YAML_SERIAL_CONSOLE_BAUDRATE ?= "115200" | 34 | YAML_SERIAL_CONSOLE_BAUDRATE ?= "115200" |
| 39 | 35 | ||
| 36 | # Set DDR Base address for u-boot-xlnx-scr variables | ||
| 37 | DDR_BASEADDR ?= "0x80000000" | ||
| 38 | SKIP_APPEND_BASEADDR ?= "0" | ||
| 39 | |||
| 40 | # Required generic machine inclusion | 40 | # Required generic machine inclusion |
| 41 | require conf/machine/microblaze-generic.conf | 41 | require conf/machine/microblaze-generic.conf |
| 42 | 42 | ||
| @@ -47,4 +47,4 @@ HDF_MACHINE = "kc705-microblazeel" | |||
| 47 | 47 | ||
| 48 | #### No additional settings should be after the Postamble | 48 | #### No additional settings should be after the Postamble |
| 49 | #### Postamble | 49 | #### Postamble |
| 50 | PACKAGE_EXTRA_ARCHS:append = "${@['', 'kc705_microblazeel']['kc705-microblazeel' != '${MACHINE}']}" | 50 | PACKAGE_EXTRA_ARCHS:append = "${@['', ' kc705_microblazeel']['kc705-microblazeel' != '${MACHINE}']}" |
diff --git a/meta-xilinx-bsp/conf/machine/kcu105-microblazeel.conf b/meta-xilinx-bsp/conf/machine/kcu105-microblazeel.conf index 3edf190e..a866f87c 100644 --- a/meta-xilinx-bsp/conf/machine/kcu105-microblazeel.conf +++ b/meta-xilinx-bsp/conf/machine/kcu105-microblazeel.conf | |||
| @@ -10,13 +10,6 @@ MACHINEOVERRIDES =. "${@['', 'kcu105-microblazeel:']['kcu105-microblazeel' !='${ | |||
| 10 | # defined before calling the required inclusion file else pre-expansion value | 10 | # defined before calling the required inclusion file else pre-expansion value |
| 11 | # defined in microblazeel-generic.conf will be set. | 11 | # defined in microblazeel-generic.conf will be set. |
| 12 | 12 | ||
| 13 | # Yocto KCU105 FS-Boot variables | ||
| 14 | YAML_SERIAL_CONSOLE_STDIN:pn-fs-boot ?= "axi_uartlite_0" | ||
| 15 | YAML_SERIAL_CONSOLE_STDOUT:pn-fs-boot ?= "axi_uartlite_0" | ||
| 16 | YAML_MAIN_MEMORY_CONFIG:pn-fs-boot ?= "DDR4_0" | ||
| 17 | YAML_FLASH_MEMORY_CONFIG:pn-fs-boot ?= "axi_quad_spi_0" | ||
| 18 | XSCTH_PROC:pn-fs-boot ?= "microblaze_0" | ||
| 19 | |||
| 20 | # Yocto KCU105 device-tree variables | 13 | # Yocto KCU105 device-tree variables |
| 21 | YAML_CONSOLE_DEVICE_CONFIG:pn-device-tree ?= "axi_uartlite_0" | 14 | YAML_CONSOLE_DEVICE_CONFIG:pn-device-tree ?= "axi_uartlite_0" |
| 22 | YAML_MAIN_MEMORY_CONFIG:pn-device-tree ?= "DDR4_0" | 15 | YAML_MAIN_MEMORY_CONFIG:pn-device-tree ?= "DDR4_0" |
| @@ -25,6 +18,21 @@ DTC_FLAGS:pn-device-tree ?= "" | |||
| 25 | XSCTH_PROC:pn-device-tree ?= "microblaze_0" | 18 | XSCTH_PROC:pn-device-tree ?= "microblaze_0" |
| 26 | YAML_DT_BOARD_FLAGS ?= "{BOARD kcu105}" | 19 | YAML_DT_BOARD_FLAGS ?= "{BOARD kcu105}" |
| 27 | 20 | ||
| 21 | # Yocto FS-Boot variables | ||
| 22 | YAML_SERIAL_CONSOLE_STDIN:pn-fs-boot ?= "axi_uartlite_0" | ||
| 23 | YAML_SERIAL_CONSOLE_STDOUT:pn-fs-boot ?= "axi_uartlite_0" | ||
| 24 | YAML_MAIN_MEMORY_CONFIG:pn-fs-boot ?= "DDR4_0" | ||
| 25 | YAML_FLASH_MEMORY_CONFIG:pn-fs-boot ?= "axi_quad_spi_0" | ||
| 26 | XSCTH_PROC:pn-fs-boot ?= "microblaze_0" | ||
| 27 | |||
| 28 | # Yocto KERNEL Variables | ||
| 29 | UBOOT_ENTRYPOINT ?= "0x80000000" | ||
| 30 | UBOOT_LOADADDRESS ?= "0x80000000" | ||
| 31 | |||
| 32 | # kcu105-microblazeel Serial Console | ||
| 33 | SERIAL_CONSOLES ?= "115200;ttyUL0" | ||
| 34 | YAML_SERIAL_CONSOLE_BAUDRATE ?= "115200" | ||
| 35 | |||
| 28 | # Set DDR Base address for u-boot-xlnx-scr variables | 36 | # Set DDR Base address for u-boot-xlnx-scr variables |
| 29 | DDR_BASEADDR ?= "0x80000000" | 37 | DDR_BASEADDR ?= "0x80000000" |
| 30 | SKIP_APPEND_BASEADDR ?= "0" | 38 | SKIP_APPEND_BASEADDR ?= "0" |
| @@ -39,4 +47,4 @@ HDF_MACHINE = "kcu105-microblazeel" | |||
| 39 | 47 | ||
| 40 | #### No additional settings should be after the Postamble | 48 | #### No additional settings should be after the Postamble |
| 41 | #### Postamble | 49 | #### Postamble |
| 42 | PACKAGE_EXTRA_ARCHS:append = "${@['', 'kcu105_microblazeel']['kcu105-microblazeel' != '${MACHINE}']}" | 50 | PACKAGE_EXTRA_ARCHS:append = "${@['', ' kcu105_microblazeel']['kcu105-microblazeel' != '${MACHINE}']}" |
diff --git a/meta-xilinx-bsp/conf/machine/vck190-versal.conf b/meta-xilinx-bsp/conf/machine/vck190-versal.conf index 1b3e8123..ed049268 100644 --- a/meta-xilinx-bsp/conf/machine/vck190-versal.conf +++ b/meta-xilinx-bsp/conf/machine/vck190-versal.conf | |||
| @@ -2,10 +2,6 @@ | |||
| 2 | #@NAME: vck190-versal | 2 | #@NAME: vck190-versal |
| 3 | #@DESCRIPTION: Machine configuration for the VCK190 evaluation board. | 3 | #@DESCRIPTION: Machine configuration for the VCK190 evaluation board. |
| 4 | 4 | ||
| 5 | # Compatibility with old BOARD value. | ||
| 6 | # TODO - Remove these once removed from petalinux bsp | ||
| 7 | MACHINEOVERRIDES =. "vck190:" | ||
| 8 | |||
| 9 | #### Preamble | 5 | #### Preamble |
| 10 | MACHINEOVERRIDES =. "${@['', 'vck190-versal:']['vck190-versal' !='${MACHINE}']}" | 6 | MACHINEOVERRIDES =. "${@['', 'vck190-versal:']['vck190-versal' !='${MACHINE}']}" |
| 11 | #### Regular settings follow | 7 | #### Regular settings follow |
| @@ -46,4 +42,4 @@ HDF_MACHINE = "vck190-versal" | |||
| 46 | 42 | ||
| 47 | #### No additional settings should be after the Postamble | 43 | #### No additional settings should be after the Postamble |
| 48 | #### Postamble | 44 | #### Postamble |
| 49 | PACKAGE_EXTRA_ARCHS:append = "${@['', 'vck190_versal']['vck190-versal' != '${MACHINE}']}" | 45 | PACKAGE_EXTRA_ARCHS:append = "${@['', ' vck190_versal']['vck190-versal' != '${MACHINE}']}" |
diff --git a/meta-xilinx-bsp/conf/machine/vcu118-microblazeel.conf b/meta-xilinx-bsp/conf/machine/vcu118-microblazeel.conf index ada52ceb..bfd60336 100644 --- a/meta-xilinx-bsp/conf/machine/vcu118-microblazeel.conf +++ b/meta-xilinx-bsp/conf/machine/vcu118-microblazeel.conf | |||
| @@ -10,13 +10,6 @@ MACHINEOVERRIDES =. "${@['', 'vcu118-microblazeel:']['vcu118-microblazeel' !='${ | |||
| 10 | # defined before calling the required inclusion file else pre-expansion value | 10 | # defined before calling the required inclusion file else pre-expansion value |
| 11 | # defined in microblazeel-generic.conf will be set. | 11 | # defined in microblazeel-generic.conf will be set. |
| 12 | 12 | ||
| 13 | # Yocto VCU118 FS-Boot variables | ||
| 14 | YAML_SERIAL_CONSOLE_STDIN:pn-fs-boot ?= "axi_uartlite_0" | ||
| 15 | YAML_SERIAL_CONSOLE_STDOUT:pn-fs-boot ?= "axi_uartlite_0" | ||
| 16 | YAML_MAIN_MEMORY_CONFIG:pn-fs-boot ?= "DDR4_0" | ||
| 17 | YAML_FLASH_MEMORY_CONFIG:pn-fs-boot ?= "axi_quad_spi_0" | ||
| 18 | XSCTH_PROC:pn-fs-boot ?= "microblaze_0" | ||
| 19 | |||
| 20 | # Yocto VCU118 device-tree variables | 13 | # Yocto VCU118 device-tree variables |
| 21 | YAML_CONSOLE_DEVICE_CONFIG:pn-device-tree ?= "axi_uartlite_0" | 14 | YAML_CONSOLE_DEVICE_CONFIG:pn-device-tree ?= "axi_uartlite_0" |
| 22 | YAML_MAIN_MEMORY_CONFIG:pn-device-tree ?= "DDR4_0" | 15 | YAML_MAIN_MEMORY_CONFIG:pn-device-tree ?= "DDR4_0" |
| @@ -25,10 +18,21 @@ DTC_FLAGS:pn-device-tree ?= "" | |||
| 25 | XSCTH_PROC:pn-device-tree ?= "microblaze_0" | 18 | XSCTH_PROC:pn-device-tree ?= "microblaze_0" |
| 26 | YAML_DT_BOARD_FLAGS ?= "{BOARD vcu118-rev2.0}" | 19 | YAML_DT_BOARD_FLAGS ?= "{BOARD vcu118-rev2.0}" |
| 27 | 20 | ||
| 21 | # Yocto FS-Boot variables | ||
| 22 | YAML_SERIAL_CONSOLE_STDIN:pn-fs-boot ?= "axi_uartlite_0" | ||
| 23 | YAML_SERIAL_CONSOLE_STDOUT:pn-fs-boot ?= "axi_uartlite_0" | ||
| 24 | YAML_MAIN_MEMORY_CONFIG:pn-fs-boot ?= "DDR4_0" | ||
| 25 | YAML_FLASH_MEMORY_CONFIG:pn-fs-boot ?= "axi_quad_spi_0" | ||
| 26 | XSCTH_PROC:pn-fs-boot ?= "microblaze_0" | ||
| 27 | |||
| 28 | # Yocto KERNEL Variables | 28 | # Yocto KERNEL Variables |
| 29 | UBOOT_ENTRYPOINT ?= "0x80000000" | 29 | UBOOT_ENTRYPOINT ?= "0x80000000" |
| 30 | UBOOT_LOADADDRESS ?= "0x80000000" | 30 | UBOOT_LOADADDRESS ?= "0x80000000" |
| 31 | 31 | ||
| 32 | # vcu118-microblazeel Serial Console | ||
| 33 | SERIAL_CONSOLES ?= "115200;ttyUL0" | ||
| 34 | YAML_SERIAL_CONSOLE_BAUDRATE ?= "115200" | ||
| 35 | |||
| 32 | # Set DDR Base address for u-boot-xlnx-scr variables | 36 | # Set DDR Base address for u-boot-xlnx-scr variables |
| 33 | DDR_BASEADDR ?= "0x80000000" | 37 | DDR_BASEADDR ?= "0x80000000" |
| 34 | SKIP_APPEND_BASEADDR ?= "0" | 38 | SKIP_APPEND_BASEADDR ?= "0" |
| @@ -43,4 +47,4 @@ HDF_MACHINE = "vcu118-microblazeel" | |||
| 43 | 47 | ||
| 44 | #### No additional settings should be after the Postamble | 48 | #### No additional settings should be after the Postamble |
| 45 | #### Postamble | 49 | #### Postamble |
| 46 | PACKAGE_EXTRA_ARCHS:append = "${@['', 'vcu118_microblazeel']['vcu118-microblazeel' != '${MACHINE}']}" | 50 | PACKAGE_EXTRA_ARCHS:append = "${@['', ' vcu118_microblazeel']['vcu118-microblazeel' != '${MACHINE}']}" |
diff --git a/meta-xilinx-bsp/conf/machine/vek280-versal.conf b/meta-xilinx-bsp/conf/machine/vek280-versal.conf index b533b833..625cbca1 100644 --- a/meta-xilinx-bsp/conf/machine/vek280-versal.conf +++ b/meta-xilinx-bsp/conf/machine/vek280-versal.conf | |||
| @@ -12,12 +12,20 @@ MACHINEOVERRIDES =. "${@['', 'vek280-versal:']['vek280-versal' !='${MACHINE}']}" | |||
| 12 | 12 | ||
| 13 | # Yocto device-tree variables | 13 | # Yocto device-tree variables |
| 14 | YAML_CONSOLE_DEVICE_CONFIG:pn-device-tree ?= "CIPS_0_pspmc_0_psv_sbsauart_0" | 14 | YAML_CONSOLE_DEVICE_CONFIG:pn-device-tree ?= "CIPS_0_pspmc_0_psv_sbsauart_0" |
| 15 | YAML_DT_BOARD_FLAGS ?= "{BOARD versal-vek280-reva}" | 15 | YAML_DT_BOARD_FLAGS ?= "{BOARD versal-vek280-revb}" |
| 16 | |||
| 17 | # Yocto arm-trusted-firmware(TF-A) variables | ||
| 18 | ATF_CONSOLE ?= "pl011" | ||
| 19 | TFA_BL33_LOAD ?= "0x8000000" | ||
| 16 | 20 | ||
| 17 | # Yocto PLM variables | 21 | # Yocto PLM variables |
| 18 | YAML_SERIAL_CONSOLE_STDIN:pn-plm-firmware ?= "CIPS_0_pspmc_0_psv_sbsauart_0" | 22 | YAML_SERIAL_CONSOLE_STDIN:pn-plm-firmware ?= "CIPS_0_pspmc_0_psv_sbsauart_0" |
| 19 | YAML_SERIAL_CONSOLE_STDOUT:pn-plm-firmware ?= "CIPS_0_pspmc_0_psv_sbsauart_0" | 23 | YAML_SERIAL_CONSOLE_STDOUT:pn-plm-firmware ?= "CIPS_0_pspmc_0_psv_sbsauart_0" |
| 20 | 24 | ||
| 25 | # Yocto KERNEL Variables | ||
| 26 | UBOOT_ENTRYPOINT ?= "0x200000" | ||
| 27 | UBOOT_LOADADDRESS ?= "0x200000" | ||
| 28 | |||
| 21 | # vek280-versal Serial Console | 29 | # vek280-versal Serial Console |
| 22 | SERIAL_CONSOLES ?= "115200;ttyAMA0" | 30 | SERIAL_CONSOLES ?= "115200;ttyAMA0" |
| 23 | YAML_SERIAL_CONSOLE_BAUDRATE ?= "115200" | 31 | YAML_SERIAL_CONSOLE_BAUDRATE ?= "115200" |
| @@ -30,6 +38,16 @@ require conf/machine/versal-ai-edge-generic.conf | |||
| 30 | # from local.conf. | 38 | # from local.conf. |
| 31 | HDF_MACHINE = "vek280-versal" | 39 | HDF_MACHINE = "vek280-versal" |
| 32 | 40 | ||
| 41 | # VEK280 board has 12GB memory only but default versal-generic has QB_MEM set to | ||
| 42 | # 8G, Hence we need set 12G in QB_MEM. | ||
| 43 | QB_MEM = "-m 12G" | ||
| 44 | |||
| 45 | QEMU_HW_DTB_PS = "${QEMU_HW_DTB_PATH}/board-versal-ps-vek280.dtb" | ||
| 46 | QEMU_HW_DTB_PMC = "${QEMU_HW_DTB_PATH}/board-versal-pmc-virt.dtb" | ||
| 47 | |||
| 48 | # Yocto MACHINE_FEATURES Variable | ||
| 49 | MACHINE_FEATURES += "vdu" | ||
| 50 | |||
| 33 | #### No additional settings should be after the Postamble | 51 | #### No additional settings should be after the Postamble |
| 34 | #### Postamble | 52 | #### Postamble |
| 35 | PACKAGE_EXTRA_ARCHS:append = "${@['', 'vek280_versal']['vek280-versal' != '${MACHINE}']}" \ No newline at end of file | 53 | PACKAGE_EXTRA_ARCHS:append = "${@['', ' vek280_versal']['vek280-versal' != '${MACHINE}']}" |
diff --git a/meta-xilinx-bsp/conf/machine/vmk180-versal.conf b/meta-xilinx-bsp/conf/machine/vmk180-versal.conf index 941f0aba..0f474f78 100644 --- a/meta-xilinx-bsp/conf/machine/vmk180-versal.conf +++ b/meta-xilinx-bsp/conf/machine/vmk180-versal.conf | |||
| @@ -2,10 +2,6 @@ | |||
| 2 | #@NAME: vmk180-versal | 2 | #@NAME: vmk180-versal |
| 3 | #@DESCRIPTION: Machine configuration for the VMK180 evaluation board. | 3 | #@DESCRIPTION: Machine configuration for the VMK180 evaluation board. |
| 4 | 4 | ||
| 5 | # Compatibility with old BOARD value. | ||
| 6 | # TODO - Remove these once removed from petalinux bsp | ||
| 7 | MACHINEOVERRIDES =. "vmk180:" | ||
| 8 | |||
| 9 | #### Preamble | 5 | #### Preamble |
| 10 | MACHINEOVERRIDES =. "${@['', 'vmk180-versal:']['vmk180-versal' !='${MACHINE}']}" | 6 | MACHINEOVERRIDES =. "${@['', 'vmk180-versal:']['vmk180-versal' !='${MACHINE}']}" |
| 11 | #### Regular settings follow | 7 | #### Regular settings follow |
| @@ -46,4 +42,4 @@ HDF_MACHINE = "vmk180-versal" | |||
| 46 | 42 | ||
| 47 | #### No additional settings should be after the Postamble | 43 | #### No additional settings should be after the Postamble |
| 48 | #### Postamble | 44 | #### Postamble |
| 49 | PACKAGE_EXTRA_ARCHS:append = "${@['', 'vmk180_versal']['vmk180-versal' != '${MACHINE}']}" | 45 | PACKAGE_EXTRA_ARCHS:append = "${@['', ' vmk180_versal']['vmk180-versal' != '${MACHINE}']}" |
diff --git a/meta-xilinx-bsp/conf/machine/vpk120-versal.conf b/meta-xilinx-bsp/conf/machine/vpk120-versal.conf index 30818313..e200d42d 100644 --- a/meta-xilinx-bsp/conf/machine/vpk120-versal.conf +++ b/meta-xilinx-bsp/conf/machine/vpk120-versal.conf | |||
| @@ -26,7 +26,7 @@ YAML_SERIAL_CONSOLE_STDOUT:pn-plm-firmware ?= "versal_cips_0_pspmc_0_psv_sbsauar | |||
| 26 | UBOOT_ENTRYPOINT ?= "0x200000" | 26 | UBOOT_ENTRYPOINT ?= "0x200000" |
| 27 | UBOOT_LOADADDRESS ?= "0x200000" | 27 | UBOOT_LOADADDRESS ?= "0x200000" |
| 28 | 28 | ||
| 29 | # vpk120-versal Serial Console | 29 | # vpk120-versal Serial Console |
| 30 | SERIAL_CONSOLES ?= "115200;ttyAMA0" | 30 | SERIAL_CONSOLES ?= "115200;ttyAMA0" |
| 31 | YAML_SERIAL_CONSOLE_BAUDRATE ?= "115200" | 31 | YAML_SERIAL_CONSOLE_BAUDRATE ?= "115200" |
| 32 | 32 | ||
| @@ -45,4 +45,4 @@ QEMU_HW_DTB_PMC = "${QEMU_HW_DTB_PATH}/board-versal-pmc-virt.dtb" | |||
| 45 | 45 | ||
| 46 | #### No additional settings should be after the Postamble | 46 | #### No additional settings should be after the Postamble |
| 47 | #### Postamble | 47 | #### Postamble |
| 48 | PACKAGE_EXTRA_ARCHS:append = "${@['', 'vpk120_versal']['vpk120-versal' != '${MACHINE}']}" | 48 | PACKAGE_EXTRA_ARCHS:append = "${@['', ' vpk120_versal']['vpk120-versal' != '${MACHINE}']}" |
diff --git a/meta-xilinx-bsp/conf/machine/vpk180-versal.conf b/meta-xilinx-bsp/conf/machine/vpk180-versal.conf index dd2dc111..92630e97 100644 --- a/meta-xilinx-bsp/conf/machine/vpk180-versal.conf +++ b/meta-xilinx-bsp/conf/machine/vpk180-versal.conf | |||
| @@ -26,7 +26,7 @@ YAML_SERIAL_CONSOLE_STDOUT:pn-plm-firmware ?= "versal_cips_0_pspmc_0_psv_sbsauar | |||
| 26 | UBOOT_ENTRYPOINT ?= "0x200000" | 26 | UBOOT_ENTRYPOINT ?= "0x200000" |
| 27 | UBOOT_LOADADDRESS ?= "0x200000" | 27 | UBOOT_LOADADDRESS ?= "0x200000" |
| 28 | 28 | ||
| 29 | # vpk180-versal Serial Console | 29 | # vpk180-versal Serial Console |
| 30 | SERIAL_CONSOLES ?= "115200;ttyAMA0" | 30 | SERIAL_CONSOLES ?= "115200;ttyAMA0" |
| 31 | YAML_SERIAL_CONSOLE_BAUDRATE ?= "115200" | 31 | YAML_SERIAL_CONSOLE_BAUDRATE ?= "115200" |
| 32 | 32 | ||
| @@ -45,4 +45,4 @@ QEMU_HW_DTB_PMC = "${QEMU_HW_DTB_PATH}/board-versal-pmc-virt.dtb" | |||
| 45 | 45 | ||
| 46 | #### No additional settings should be after the Postamble | 46 | #### No additional settings should be after the Postamble |
| 47 | #### Postamble | 47 | #### Postamble |
| 48 | PACKAGE_EXTRA_ARCHS:append = "${@['', 'vpk180_versal']['vpk180-versal' != '${MACHINE}']}" | 48 | PACKAGE_EXTRA_ARCHS:append = "${@['', ' vpk180_versal']['vpk180-versal' != '${MACHINE}']}" |
diff --git a/meta-xilinx-bsp/conf/machine/zc702-zynq7.conf b/meta-xilinx-bsp/conf/machine/zc702-zynq7.conf index dc6f55b1..1db0616f 100644 --- a/meta-xilinx-bsp/conf/machine/zc702-zynq7.conf +++ b/meta-xilinx-bsp/conf/machine/zc702-zynq7.conf | |||
| @@ -41,4 +41,4 @@ HDF_MACHINE = "zc702-zynq7" | |||
| 41 | 41 | ||
| 42 | #### No additional settings should be after the Postamble | 42 | #### No additional settings should be after the Postamble |
| 43 | #### Postamble | 43 | #### Postamble |
| 44 | PACKAGE_EXTRA_ARCHS:append = "${@['', 'zc702_zynq7']['zc702-zynq7' != '${MACHINE}']}" | 44 | PACKAGE_EXTRA_ARCHS:append = "${@['', ' zc702_zynq7']['zc702-zynq7' != '${MACHINE}']}" |
diff --git a/meta-xilinx-bsp/conf/machine/zc706-zynq7.conf b/meta-xilinx-bsp/conf/machine/zc706-zynq7.conf index e6b7ce57..7e0525d1 100644 --- a/meta-xilinx-bsp/conf/machine/zc706-zynq7.conf +++ b/meta-xilinx-bsp/conf/machine/zc706-zynq7.conf | |||
| @@ -23,7 +23,7 @@ YAML_SERIAL_CONSOLE_STDOUT:pn-fsbl-firmware ?= "ps7_uart_1" | |||
| 23 | UBOOT_ENTRYPOINT ?= "0x200000" | 23 | UBOOT_ENTRYPOINT ?= "0x200000" |
| 24 | UBOOT_LOADADDRESS ?= "0x200000" | 24 | UBOOT_LOADADDRESS ?= "0x200000" |
| 25 | 25 | ||
| 26 | # zc702-zynq7 Serial Console | 26 | # zc706-zynq7 Serial Console |
| 27 | SERIAL_CONSOLES ?= "115200;ttyPS0" | 27 | SERIAL_CONSOLES ?= "115200;ttyPS0" |
| 28 | YAML_SERIAL_CONSOLE_BAUDRATE ?= "115200" | 28 | YAML_SERIAL_CONSOLE_BAUDRATE ?= "115200" |
| 29 | 29 | ||
| @@ -41,4 +41,4 @@ HDF_MACHINE = "zc706-zynq7" | |||
| 41 | 41 | ||
| 42 | #### No additional settings should be after the Postamble | 42 | #### No additional settings should be after the Postamble |
| 43 | #### Postamble | 43 | #### Postamble |
| 44 | PACKAGE_EXTRA_ARCHS:append = "${@['', 'zc706_zynq7']['zc706-zynq7' != '${MACHINE}']}" | 44 | PACKAGE_EXTRA_ARCHS:append = "${@['', ' zc706_zynq7']['zc706-zynq7' != '${MACHINE}']}" |
diff --git a/meta-xilinx-bsp/conf/machine/zcu102-zynqmp.conf b/meta-xilinx-bsp/conf/machine/zcu102-zynqmp.conf index c434067d..acd2544a 100644 --- a/meta-xilinx-bsp/conf/machine/zcu102-zynqmp.conf +++ b/meta-xilinx-bsp/conf/machine/zcu102-zynqmp.conf | |||
| @@ -2,10 +2,6 @@ | |||
| 2 | #@NAME: zcu102-zynqmp | 2 | #@NAME: zcu102-zynqmp |
| 3 | #@DESCRIPTION: Machine configuration for the ZCU102 evaluation board. | 3 | #@DESCRIPTION: Machine configuration for the ZCU102 evaluation board. |
| 4 | 4 | ||
| 5 | # Compatibility with old BOARD value. | ||
| 6 | # TODO - Remove these once removed from petalinux bsp | ||
| 7 | MACHINEOVERRIDES =. "zcu102:" | ||
| 8 | |||
| 9 | #### Preamble | 5 | #### Preamble |
| 10 | MACHINEOVERRIDES =. "${@['', 'zcu102-zynqmp:']['zcu102-zynqmp' !='${MACHINE}']}" | 6 | MACHINEOVERRIDES =. "${@['', 'zcu102-zynqmp:']['zcu102-zynqmp' !='${MACHINE}']}" |
| 11 | #### Regular settings follow | 7 | #### Regular settings follow |
| @@ -55,4 +51,4 @@ HDF_MACHINE = "zcu102-zynqmp" | |||
| 55 | 51 | ||
| 56 | #### No additional settings should be after the Postamble | 52 | #### No additional settings should be after the Postamble |
| 57 | #### Postamble | 53 | #### Postamble |
| 58 | PACKAGE_EXTRA_ARCHS:append = "${@['', 'zcu102_zynqmp']['zcu102-zynqmp' != '${MACHINE}']}" | 54 | PACKAGE_EXTRA_ARCHS:append = "${@['', ' zcu102_zynqmp']['zcu102-zynqmp' != '${MACHINE}']}" |
diff --git a/meta-xilinx-bsp/conf/machine/zcu104-zynqmp.conf b/meta-xilinx-bsp/conf/machine/zcu104-zynqmp.conf index 710078eb..b4c11f3a 100644 --- a/meta-xilinx-bsp/conf/machine/zcu104-zynqmp.conf +++ b/meta-xilinx-bsp/conf/machine/zcu104-zynqmp.conf | |||
| @@ -49,9 +49,10 @@ HDF_MACHINE = "zcu104-zynqmp" | |||
| 49 | # the xsa. User can enable explicitly if required from local.conf. | 49 | # the xsa. User can enable explicitly if required from local.conf. |
| 50 | # KERNEL_DEVICETREE = "xilinx/zynqmp-zcu104-revC.dtb" | 50 | # KERNEL_DEVICETREE = "xilinx/zynqmp-zcu104-revC.dtb" |
| 51 | 51 | ||
| 52 | # Yocto IMAGE_FEATURES Variable | ||
| 52 | MACHINE_HWCODECS = "libomxil-xlnx" | 53 | MACHINE_HWCODECS = "libomxil-xlnx" |
| 53 | IMAGE_FEATURES += "hwcodecs" | 54 | IMAGE_FEATURES += "hwcodecs" |
| 54 | 55 | ||
| 55 | #### No additional settings should be after the Postamble | 56 | #### No additional settings should be after the Postamble |
| 56 | #### Postamble | 57 | #### Postamble |
| 57 | PACKAGE_EXTRA_ARCHS:append = "${@['', 'zcu104_zynqmp']['zcu104-zynqmp' != '${MACHINE}']}" | 58 | PACKAGE_EXTRA_ARCHS:append = "${@['', ' zcu104_zynqmp']['zcu104-zynqmp' != '${MACHINE}']}" |
diff --git a/meta-xilinx-bsp/conf/machine/zcu106-zynqmp.conf b/meta-xilinx-bsp/conf/machine/zcu106-zynqmp.conf index 23a936d8..ff273134 100644 --- a/meta-xilinx-bsp/conf/machine/zcu106-zynqmp.conf +++ b/meta-xilinx-bsp/conf/machine/zcu106-zynqmp.conf | |||
| @@ -2,10 +2,6 @@ | |||
| 2 | #@NAME: zcu106-zynqmp | 2 | #@NAME: zcu106-zynqmp |
| 3 | #@DESCRIPTION: Machine configuration for the ZCU106 evaluation board. | 3 | #@DESCRIPTION: Machine configuration for the ZCU106 evaluation board. |
| 4 | 4 | ||
| 5 | # Compatibility with old BOARD value. | ||
| 6 | # TODO - Remove these once removed from petalinux bsp | ||
| 7 | MACHINEOVERRIDES =. "zcu106:" | ||
| 8 | |||
| 9 | #### Preamble | 5 | #### Preamble |
| 10 | MACHINEOVERRIDES =. "${@['', 'zcu106-zynqmp:']['zcu106-zynqmp' !='${MACHINE}']}" | 6 | MACHINEOVERRIDES =. "${@['', 'zcu106-zynqmp:']['zcu106-zynqmp' !='${MACHINE}']}" |
| 11 | #### Regular settings follow | 7 | #### Regular settings follow |
| @@ -53,9 +49,10 @@ HDF_MACHINE = "zcu106-zynqmp" | |||
| 53 | # the xsa. User can enable explicitly if required from local.conf. | 49 | # the xsa. User can enable explicitly if required from local.conf. |
| 54 | # KERNEL_DEVICETREE = "xilinx/zynqmp-zcu106-revA.dtb" | 50 | # KERNEL_DEVICETREE = "xilinx/zynqmp-zcu106-revA.dtb" |
| 55 | 51 | ||
| 52 | # Yocto IMAGE_FEATURES Variable | ||
| 56 | MACHINE_HWCODECS = "libomxil-xlnx" | 53 | MACHINE_HWCODECS = "libomxil-xlnx" |
| 57 | IMAGE_FEATURES += "hwcodecs" | 54 | IMAGE_FEATURES += "hwcodecs" |
| 58 | 55 | ||
| 59 | #### No additional settings should be after the Postamble | 56 | #### No additional settings should be after the Postamble |
| 60 | #### Postamble | 57 | #### Postamble |
| 61 | PACKAGE_EXTRA_ARCHS:append = "${@['', 'zcu106_zynqmp']['zcu106-zynqmp' != '${MACHINE}']}" | 58 | PACKAGE_EXTRA_ARCHS:append = "${@['', ' zcu106_zynqmp']['zcu106-zynqmp' != '${MACHINE}']}" |
diff --git a/meta-xilinx-bsp/conf/machine/zcu111-zynqmp.conf b/meta-xilinx-bsp/conf/machine/zcu111-zynqmp.conf index 5868449f..77da93ca 100644 --- a/meta-xilinx-bsp/conf/machine/zcu111-zynqmp.conf +++ b/meta-xilinx-bsp/conf/machine/zcu111-zynqmp.conf | |||
| @@ -2,10 +2,6 @@ | |||
| 2 | #@NAME: zcu111-zynqmp | 2 | #@NAME: zcu111-zynqmp |
| 3 | #@DESCRIPTION: Machine configuration for the ZCU111 evaluation board. | 3 | #@DESCRIPTION: Machine configuration for the ZCU111 evaluation board. |
| 4 | 4 | ||
| 5 | # Compatibility with old BOARD value. | ||
| 6 | # TODO - Remove these once removed from petalinux bsp | ||
| 7 | MACHINEOVERRIDES =. "zcu111:" | ||
| 8 | |||
| 9 | #### Preamble | 5 | #### Preamble |
| 10 | MACHINEOVERRIDES =. "${@['', 'zcu111-zynqmp:']['zcu111-zynqmp' !='${MACHINE}']}" | 6 | MACHINEOVERRIDES =. "${@['', 'zcu111-zynqmp:']['zcu111-zynqmp' !='${MACHINE}']}" |
| 11 | #### Regular settings follow | 7 | #### Regular settings follow |
| @@ -55,4 +51,4 @@ HDF_MACHINE = "zcu111-zynqmp" | |||
| 55 | 51 | ||
| 56 | #### No additional settings should be after the Postamble | 52 | #### No additional settings should be after the Postamble |
| 57 | #### Postamble | 53 | #### Postamble |
| 58 | PACKAGE_EXTRA_ARCHS:append = "${@['', 'zcu111_zynqmp']['zcu111-zynqmp' != '${MACHINE}']}" | 54 | PACKAGE_EXTRA_ARCHS:append = "${@['', ' zcu111_zynqmp']['zcu111-zynqmp' != '${MACHINE}']}" |
diff --git a/meta-xilinx-bsp/conf/machine/zcu208-zynqmp.conf b/meta-xilinx-bsp/conf/machine/zcu208-zynqmp.conf index 273606e2..7bb2c9db 100644 --- a/meta-xilinx-bsp/conf/machine/zcu208-zynqmp.conf +++ b/meta-xilinx-bsp/conf/machine/zcu208-zynqmp.conf | |||
| @@ -47,4 +47,4 @@ HDF_MACHINE = "zcu208-zynqmp" | |||
| 47 | 47 | ||
| 48 | #### No additional settings should be after the Postamble | 48 | #### No additional settings should be after the Postamble |
| 49 | #### Postamble | 49 | #### Postamble |
| 50 | PACKAGE_EXTRA_ARCHS:append = "${@['', 'zcu208_zynqmp']['zcu208-zynqmp' != '${MACHINE}']}" | 50 | PACKAGE_EXTRA_ARCHS:append = "${@['', ' zcu208_zynqmp']['zcu208-zynqmp' != '${MACHINE}']}" |
diff --git a/meta-xilinx-bsp/conf/machine/zcu216-zynqmp.conf b/meta-xilinx-bsp/conf/machine/zcu216-zynqmp.conf index 80a15358..f4e1619d 100644 --- a/meta-xilinx-bsp/conf/machine/zcu216-zynqmp.conf +++ b/meta-xilinx-bsp/conf/machine/zcu216-zynqmp.conf | |||
| @@ -47,4 +47,4 @@ HDF_MACHINE = "zcu216-zynqmp" | |||
| 47 | 47 | ||
| 48 | #### No additional settings should be after the Postamble | 48 | #### No additional settings should be after the Postamble |
| 49 | #### Postamble | 49 | #### Postamble |
| 50 | PACKAGE_EXTRA_ARCHS:append = "${@['', 'zcu216_zynqmp']['zcu216-zynqmp' != '${MACHINE}']}" | 50 | PACKAGE_EXTRA_ARCHS:append = "${@['', ' zcu216_zynqmp']['zcu216-zynqmp' != '${MACHINE}']}" |
diff --git a/meta-xilinx-bsp/recipes-bsp/device-tree/device-tree.bbappend b/meta-xilinx-bsp/recipes-bsp/device-tree/device-tree.bbappend index 9ab3f24e..fa4816af 100644 --- a/meta-xilinx-bsp/recipes-bsp/device-tree/device-tree.bbappend +++ b/meta-xilinx-bsp/recipes-bsp/device-tree/device-tree.bbappend | |||
| @@ -4,10 +4,4 @@ FILESEXTRAPATHS:prepend := "${THISDIR}/files:" | |||
| 4 | COMPATIBLE_MACHINE:qemu-zynq7 = ".*" | 4 | COMPATIBLE_MACHINE:qemu-zynq7 = ".*" |
| 5 | SRC_URI:append:qemu-zynq7 = " file://qemu-zynq7.dts" | 5 | SRC_URI:append:qemu-zynq7 = " file://qemu-zynq7.dts" |
| 6 | 6 | ||
| 7 | SRC_URI:append = "${@bb.utils.contains('MACHINE_FEATURES', 'provencore', ' file://pnc.dtsi', '', d)}" | 7 | EXTRA_OVERLAYS:append = "${@bb.utils.contains('MACHINE_FEATURES', 'provencore', ' pnc.dtsi', '', d)}" |
| 8 | |||
| 9 | do_configure:append() { | ||
| 10 | if [ ${@bb.utils.contains('MACHINE_FEATURES', 'provencore', 'true', '', d)} ]; then | ||
| 11 | echo '#include "pnc.dtsi"' >> ${DT_FILES_PATH}/system-top.dts | ||
| 12 | fi | ||
| 13 | } | ||
diff --git a/meta-xilinx-bsp/recipes-bsp/dfx-mgr/dfx-mgr_%.bbappend b/meta-xilinx-bsp/recipes-bsp/dfx-mgr/dfx-mgr_%.bbappend new file mode 100644 index 00000000..8fdf14bb --- /dev/null +++ b/meta-xilinx-bsp/recipes-bsp/dfx-mgr/dfx-mgr_%.bbappend | |||
| @@ -0,0 +1,10 @@ | |||
| 1 | FILESEXTRAPATHS:append := ":${THISDIR}/files" | ||
| 2 | |||
| 3 | SRC_URI += "file://zcu106-xlnx-firmware-detect" | ||
| 4 | |||
| 5 | PACKAGE_ARCH:zcu106-zynqmp = "${MACHINE_ARCH}" | ||
| 6 | |||
| 7 | # ZCU106 eval board firmware detection script. | ||
| 8 | do_install:append:zcu106-zynqmp () { | ||
| 9 | install -m 0755 ${WORKDIR}/zcu106-xlnx-firmware-detect ${D}${bindir}/xlnx-firmware-detect | ||
| 10 | } | ||
diff --git a/meta-xilinx-bsp/recipes-bsp/dfx-mgr/files/zcu106-xlnx-firmware-detect b/meta-xilinx-bsp/recipes-bsp/dfx-mgr/files/zcu106-xlnx-firmware-detect new file mode 100644 index 00000000..ef5654cc --- /dev/null +++ b/meta-xilinx-bsp/recipes-bsp/dfx-mgr/files/zcu106-xlnx-firmware-detect | |||
| @@ -0,0 +1,71 @@ | |||
| 1 | #! /bin/sh | ||
| 2 | |||
| 3 | # Copyright (C) 2022 Xilinx, Inc. All rights reserved. | ||
| 4 | # Copyright (C) 2023 Advanced Micro Devices, Inc. All rights reserved. | ||
| 5 | # | ||
| 6 | # SPDX-License-Identifier: MIT | ||
| 7 | |||
| 8 | # read values from dfx-mgr conf file | ||
| 9 | conffile="/etc/dfx-mgrd/daemon.conf" | ||
| 10 | if [ ! -f "${conffile}" ]; then | ||
| 11 | echo "dfx-mgrd configuration file not found: ${conffile}" | ||
| 12 | exit 1 | ||
| 13 | fi | ||
| 14 | |||
| 15 | fwbasedir=$(grep "firmware_location" ${conffile} | sed 's/.*:.*\[\"\(.*\)\"\],\?/\1/') | ||
| 16 | if [ -z "${fwbasedir}" ]; then | ||
| 17 | echo "Property 'firmware_location' not found in ${conffile}" | ||
| 18 | exit 1 | ||
| 19 | fi | ||
| 20 | |||
| 21 | fwfile=$(grep "default_accel" ${conffile} | sed 's/.*:.*\"\(.*\)\",\?/\1/') | ||
| 22 | if [ -z "${fwfile}" ]; then | ||
| 23 | echo "Property 'default_accel' not found in ${conffile}" | ||
| 24 | exit 1 | ||
| 25 | fi | ||
| 26 | |||
| 27 | # check if default firmware is already set and present | ||
| 28 | if [ -f "${fwfile}" ]; then | ||
| 29 | fwname=$(cat ${fwfile}) | ||
| 30 | fwdir="${fwbasedir}/${fwname}" | ||
| 31 | if [ -n "${fwname}" ] && [ -d "${fwdir}" ]; then | ||
| 32 | echo "Default firmware detected: ${fwname}" | ||
| 33 | exit 0 | ||
| 34 | fi | ||
| 35 | fi | ||
| 36 | |||
| 37 | # search for firmware based on EEPROM board id | ||
| 38 | echo "Trying to detect default firmware based on EEPROM..." | ||
| 39 | |||
| 40 | #check if board is a zcu106 eval board product | ||
| 41 | eeprom=$(ls /sys/bus/i2c/devices/*54/eeprom 2> /dev/null) | ||
| 42 | if [ -n "${eeprom}" ]; then | ||
| 43 | boardid=`dd if=$eeprom bs=1 count=6 skip=208 2>/dev/null | tr '[:upper:]' '[:lower:]'` | ||
| 44 | revision=`dd if=$eeprom bs=1 count=3 skip=224 2>/dev/null | tr '[:upper:]' '[:lower:]'` | ||
| 45 | |||
| 46 | fwname="${boardid}-${revision}" | ||
| 47 | fwdir="${fwbasedir}/${fwname}" | ||
| 48 | |||
| 49 | fixed_rev=2.0 | ||
| 50 | var=$(awk 'BEGIN{ print "'$fixed_rev'"<"'$revision'" }') | ||
| 51 | |||
| 52 | if [ "${boardid}" == "zcu106" ] && [ "${var}" -eq 1 ] ;then | ||
| 53 | revision=2.0 | ||
| 54 | echo "later than 2.0 board revisions are supported in 2.0 bit and dtbo files" | ||
| 55 | fwname="${boardid}-${revision}" | ||
| 56 | fwdir="${fwbasedir}/${fwname}" | ||
| 57 | echo "${fwname}" > "${fwfile}" | ||
| 58 | exit 1 | ||
| 59 | elif [ ! -d "${fwdir}" ] ; then | ||
| 60 | echo "No default firmware named ${fwname} found in ${fwbasedir} , Loading rev1.0 bitstream and dtbo as default " | ||
| 61 | revision=1.0 | ||
| 62 | fwname=$(ls ${fwbasedir} | grep ${revision}) | ||
| 63 | fwdir="${fwbasedir}/${fwname}" | ||
| 64 | echo "${fwname}" > "${fwfile}" | ||
| 65 | exit 1 | ||
| 66 | fi | ||
| 67 | |||
| 68 | echo "Default firmware detected: ${fwname}" | ||
| 69 | echo "${fwname}" > "${fwfile}" | ||
| 70 | exit 0 | ||
| 71 | fi | ||
diff --git a/meta-xilinx-contrib/conf/layer.conf b/meta-xilinx-contrib/conf/layer.conf index c5da4859..58dd0a52 100644 --- a/meta-xilinx-contrib/conf/layer.conf +++ b/meta-xilinx-contrib/conf/layer.conf | |||
| @@ -2,14 +2,23 @@ | |||
| 2 | BBPATH .= ":${LAYERDIR}" | 2 | BBPATH .= ":${LAYERDIR}" |
| 3 | 3 | ||
| 4 | # We have a packages directory, add to BBFILES | 4 | # We have a packages directory, add to BBFILES |
| 5 | BBFILES += "${LAYERDIR}/recipes-*/*/*.bb" | 5 | BBFILES += " \ |
| 6 | BBFILES += "${LAYERDIR}/recipes-*/*/*.bbappend" | 6 | ${LAYERDIR}/recipes-*/*/*.bb \ |
| 7 | ${LAYERDIR}/recipes-*/*/*.bbappend \ | ||
| 8 | " | ||
| 9 | |||
| 10 | BBFILES_DYNAMIC += " \ | ||
| 11 | xilinx-tools:${LAYERDIR}/dynamic-layers/meta-xilinx-tools/recipes-*/*/*.bb \ | ||
| 12 | xilinx-tools:${LAYERDIR}/dynamic-layers/meta-xilinx-tools/recipes-*/*/*.bbappend \ | ||
| 13 | " | ||
| 7 | 14 | ||
| 8 | BBFILE_COLLECTIONS += "xilinx-contrib" | 15 | BBFILE_COLLECTIONS += "xilinx-contrib" |
| 9 | BBFILE_PATTERN_xilinx-contrib = "^${LAYERDIR}/" | 16 | BBFILE_PATTERN_xilinx-contrib = "^${LAYERDIR}/" |
| 10 | BBFILE_PRIORITY_xilinx-contrib = "5" | 17 | BBFILE_PRIORITY_xilinx-contrib = "5" |
| 11 | 18 | ||
| 12 | LAYERDEPENDS_xilinx-contrib = "core" | 19 | LAYERDEPENDS_xilinx-contrib = " \ |
| 13 | LAYERDEPENDS_xilinx-contrib = "xilinx" | 20 | core \ |
| 21 | xilinx \ | ||
| 22 | " | ||
| 14 | 23 | ||
| 15 | LAYERSERIES_COMPAT_xilinx-contrib = "mickledore" | 24 | LAYERSERIES_COMPAT_xilinx-contrib = "mickledore" |
diff --git a/meta-xilinx-contrib/dynamic-layers/meta-xilinx-tools/recipes-bsp/bitstream/bitstream-extraction_%.bbappend b/meta-xilinx-contrib/dynamic-layers/meta-xilinx-tools/recipes-bsp/bitstream/bitstream-extraction_%.bbappend new file mode 100644 index 00000000..4653c93a --- /dev/null +++ b/meta-xilinx-contrib/dynamic-layers/meta-xilinx-tools/recipes-bsp/bitstream/bitstream-extraction_%.bbappend | |||
| @@ -0,0 +1,2 @@ | |||
| 1 | COMPATIBLE_MACHINE:zybo-linux-bd-zynq7 = "^$" | ||
| 2 | |||
diff --git a/meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx/v2023.2/0001-drm-xilinx-Add-encoder-for-Digilent-boards.patch b/meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx/v2023.2/0001-drm-xilinx-Add-encoder-for-Digilent-boards.patch new file mode 100644 index 00000000..660bc218 --- /dev/null +++ b/meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx/v2023.2/0001-drm-xilinx-Add-encoder-for-Digilent-boards.patch | |||
| @@ -0,0 +1,305 @@ | |||
| 1 | From 21cc8144efdaa3cd8dbd7279f87b14fa3432fae4 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Jason Wu <jason.wu.misc@gmail.com> | ||
| 3 | Date: Sun, 10 Apr 2016 13:14:13 +1000 | ||
| 4 | Subject: [PATCH 1/3] drm: xilinx: Add encoder for Digilent boards | ||
| 5 | |||
| 6 | Add the dglnt_encoder driver that enables DRM support for the VGA and | ||
| 7 | HDMI output ports found on many Digilent boards. | ||
| 8 | |||
| 9 | Upstream-Status: Pending | ||
| 10 | |||
| 11 | Signed-off-by: Sam Bobrowicz <sbobrowicz@digilentinc.com> | ||
| 12 | Signed-off-by: Jason Wu <jason.wu.misc@gmail.com> | ||
| 13 | --- | ||
| 14 | .../bindings/drm/xilinx/dglnt_encoder.txt | 23 +++ | ||
| 15 | drivers/gpu/drm/xilinx/Kconfig | 6 + | ||
| 16 | drivers/gpu/drm/xilinx/Makefile | 1 + | ||
| 17 | drivers/gpu/drm/xilinx/dglnt_encoder.c | 217 +++++++++++++++++++++ | ||
| 18 | 4 files changed, 247 insertions(+) | ||
| 19 | create mode 100644 Documentation/devicetree/bindings/drm/xilinx/dglnt_encoder.txt | ||
| 20 | create mode 100644 drivers/gpu/drm/xilinx/dglnt_encoder.c | ||
| 21 | |||
| 22 | diff --git a/Documentation/devicetree/bindings/drm/xilinx/dglnt_encoder.txt b/Documentation/devicetree/bindings/drm/xilinx/dglnt_encoder.txt | ||
| 23 | new file mode 100644 | ||
| 24 | index 0000000..242b24e | ||
| 25 | --- /dev/null | ||
| 26 | +++ b/Documentation/devicetree/bindings/drm/xilinx/dglnt_encoder.txt | ||
| 27 | @@ -0,0 +1,23 @@ | ||
| 28 | +Device-Tree bindings for Digilent DRM Encoder Slave | ||
| 29 | + | ||
| 30 | +This driver provides support for VGA and HDMI outputs on Digilent FPGA boards. | ||
| 31 | +The VGA or HDMI port must be connected to a Xilinx display pipeline via an | ||
| 32 | +axi2vid IP core. | ||
| 33 | + | ||
| 34 | +Required properties: | ||
| 35 | + - compatible: Should be "digilent,drm-encoder". | ||
| 36 | + | ||
| 37 | +Optional properties: | ||
| 38 | + - dglnt,edid-i2c: The I2C device connected to the DDC bus on the video | ||
| 39 | + connector. This is used to obtain the supported resolutions | ||
| 40 | + of an attached monitor. If not defined, then a default | ||
| 41 | + set of resolutions is used and the display will initialize | ||
| 42 | + to 720p. Note most VGA connectors on Digilent boards do | ||
| 43 | + not have the DDC bus routed out. | ||
| 44 | + | ||
| 45 | +Example: | ||
| 46 | + | ||
| 47 | + encoder_0: digilent_encoder { | ||
| 48 | + compatible = "digilent,drm-encoder"; | ||
| 49 | + dglnt,edid-i2c = <&i2c1>; | ||
| 50 | + }; | ||
| 51 | diff --git a/drivers/gpu/drm/xilinx/Kconfig b/drivers/gpu/drm/xilinx/Kconfig | ||
| 52 | index 57e18a9..d9ecff2 100644 | ||
| 53 | --- a/drivers/gpu/drm/xilinx/Kconfig | ||
| 54 | +++ b/drivers/gpu/drm/xilinx/Kconfig | ||
| 55 | @@ -33,6 +33,12 @@ config DRM_XILINX_DP_SUB | ||
| 56 | help | ||
| 57 | DRM driver for Xilinx Display Port Subsystem. | ||
| 58 | |||
| 59 | +config DRM_DIGILENT_ENCODER | ||
| 60 | + tristate "Digilent VGA/HDMI DRM Encoder Driver" | ||
| 61 | + depends on DRM_XILINX | ||
| 62 | + help | ||
| 63 | + DRM slave encoder for Video-out on Digilent boards. | ||
| 64 | + | ||
| 65 | config DRM_XILINX_DP_SUB_DEBUG_FS | ||
| 66 | bool "Xilinx DRM DPSUB debugfs" | ||
| 67 | depends on DEBUG_FS && DRM_XILINX_DP_SUB | ||
| 68 | diff --git a/drivers/gpu/drm/xilinx/Makefile b/drivers/gpu/drm/xilinx/Makefile | ||
| 69 | index 19bc154..c2717e40 100644 | ||
| 70 | --- a/drivers/gpu/drm/xilinx/Makefile | ||
| 71 | +++ b/drivers/gpu/drm/xilinx/Makefile | ||
| 72 | @@ -7,6 +7,7 @@ xilinx_drm-y := xilinx_drm_crtc.o xilinx_drm_connector.o xilinx_drm_drv.o \ | ||
| 73 | xilinx_drm_plane.o | ||
| 74 | xilinx_drm-y += xilinx_cresample.o xilinx_osd.o xilinx_rgb2yuv.o xilinx_vtc.o | ||
| 75 | |||
| 76 | +obj-$(CONFIG_DRM_DIGILENT_ENCODER) += dglnt_encoder.o | ||
| 77 | obj-$(CONFIG_DRM_XILINX) += xilinx_drm.o | ||
| 78 | obj-$(CONFIG_DRM_XILINX_DP) += xilinx_drm_dp.o | ||
| 79 | obj-$(CONFIG_DRM_XILINX_DP_SUB) += xilinx_drm_dp_sub.o | ||
| 80 | diff --git a/drivers/gpu/drm/xilinx/dglnt_encoder.c b/drivers/gpu/drm/xilinx/dglnt_encoder.c | ||
| 81 | new file mode 100644 | ||
| 82 | index 0000000..cb9fc7d | ||
| 83 | --- /dev/null | ||
| 84 | +++ b/drivers/gpu/drm/xilinx/dglnt_encoder.c | ||
| 85 | @@ -0,0 +1,217 @@ | ||
| 86 | +/* | ||
| 87 | + * dglnt_encoder.c - DRM slave encoder for Video-out on Digilent boards | ||
| 88 | + * | ||
| 89 | + * Copyright (C) 2015 Digilent | ||
| 90 | + * Author: Sam Bobrowicz <sbobrowicz@digilentinc.com> | ||
| 91 | + * | ||
| 92 | + * Based on udl_encoder.c and udl_connector.c, Copyright (C) 2012 Red Hat. | ||
| 93 | + * Also based on xilinx_drm_dp.c, Copyright (C) 2014 Xilinx, Inc. | ||
| 94 | + * | ||
| 95 | + * This software is licensed under the terms of the GNU General Public | ||
| 96 | + * License version 2, as published by the Free Software Foundation, and | ||
| 97 | + * may be copied, distributed, and modified under those terms. | ||
| 98 | + * | ||
| 99 | + * This program is distributed in the hope that it will be useful, | ||
| 100 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 101 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 102 | + * GNU General Public License for more details. | ||
| 103 | + */ | ||
| 104 | + | ||
| 105 | +#include <drm/drmP.h> | ||
| 106 | +#include <drm/drm_edid.h> | ||
| 107 | +#include <drm/drm_encoder_slave.h> | ||
| 108 | + | ||
| 109 | +#include <linux/device.h> | ||
| 110 | +#include <linux/module.h> | ||
| 111 | +#include <linux/err.h> | ||
| 112 | +#include <linux/i2c.h> | ||
| 113 | +#include <linux/of.h> | ||
| 114 | +#include <linux/of_platform.h> | ||
| 115 | +#include <linux/platform_device.h> | ||
| 116 | + | ||
| 117 | +#define DGLNT_ENC_MAX_FREQ 150000 | ||
| 118 | +#define DGLNT_ENC_MAX_H 1920 | ||
| 119 | +#define DGLNT_ENC_MAX_V 1080 | ||
| 120 | +#define DGLNT_ENC_PREF_H 1280 | ||
| 121 | +#define DGLNT_ENC_PREF_V 720 | ||
| 122 | + | ||
| 123 | +struct dglnt_encoder { | ||
| 124 | + struct drm_encoder *encoder; | ||
| 125 | + struct i2c_adapter *i2c_bus; | ||
| 126 | + bool i2c_present; | ||
| 127 | +}; | ||
| 128 | + | ||
| 129 | +static inline struct dglnt_encoder *to_dglnt_encoder( | ||
| 130 | + struct drm_encoder *encoder) | ||
| 131 | +{ | ||
| 132 | + return to_encoder_slave(encoder)->slave_priv; | ||
| 133 | +} | ||
| 134 | + | ||
| 135 | +static bool dglnt_mode_fixup(struct drm_encoder *encoder, | ||
| 136 | + const struct drm_display_mode *mode, | ||
| 137 | + struct drm_display_mode *adjusted_mode) | ||
| 138 | +{ | ||
| 139 | + return true; | ||
| 140 | +} | ||
| 141 | + | ||
| 142 | +static void dglnt_encoder_mode_set(struct drm_encoder *encoder, | ||
| 143 | + struct drm_display_mode *mode, | ||
| 144 | + struct drm_display_mode *adjusted_mode) | ||
| 145 | +{ | ||
| 146 | +} | ||
| 147 | + | ||
| 148 | +static void | ||
| 149 | +dglnt_encoder_dpms(struct drm_encoder *encoder, int mode) | ||
| 150 | +{ | ||
| 151 | +} | ||
| 152 | + | ||
| 153 | +static void dglnt_encoder_save(struct drm_encoder *encoder) | ||
| 154 | +{ | ||
| 155 | +} | ||
| 156 | + | ||
| 157 | +static void dglnt_encoder_restore(struct drm_encoder *encoder) | ||
| 158 | +{ | ||
| 159 | +} | ||
| 160 | + | ||
| 161 | +static int dglnt_encoder_mode_valid(struct drm_encoder *encoder, | ||
| 162 | + struct drm_display_mode *mode) | ||
| 163 | +{ | ||
| 164 | + if (mode && | ||
| 165 | + !(mode->flags & ((DRM_MODE_FLAG_INTERLACE | | ||
| 166 | + DRM_MODE_FLAG_DBLCLK) | DRM_MODE_FLAG_3D_MASK)) && | ||
| 167 | + (mode->clock <= DGLNT_ENC_MAX_FREQ) && | ||
| 168 | + (mode->hdisplay <= DGLNT_ENC_MAX_H) && | ||
| 169 | + (mode->vdisplay <= DGLNT_ENC_MAX_V)) | ||
| 170 | + return MODE_OK; | ||
| 171 | + return MODE_BAD; | ||
| 172 | +} | ||
| 173 | + | ||
| 174 | +static int dglnt_encoder_get_modes(struct drm_encoder *encoder, | ||
| 175 | + struct drm_connector *connector) | ||
| 176 | +{ | ||
| 177 | + struct dglnt_encoder *dglnt = to_dglnt_encoder(encoder); | ||
| 178 | + struct edid *edid; | ||
| 179 | + int num_modes = 0; | ||
| 180 | + | ||
| 181 | + if (dglnt->i2c_present) { | ||
| 182 | + edid = drm_get_edid(connector, dglnt->i2c_bus); | ||
| 183 | + drm_connector_update_edid_property(connector, edid); | ||
| 184 | + if (edid) { | ||
| 185 | + num_modes = drm_add_edid_modes(connector, edid); | ||
| 186 | + kfree(edid); | ||
| 187 | + } | ||
| 188 | + } else { | ||
| 189 | + num_modes = drm_add_modes_noedid(connector, DGLNT_ENC_MAX_H, | ||
| 190 | + DGLNT_ENC_MAX_V); | ||
| 191 | + drm_set_preferred_mode(connector, DGLNT_ENC_PREF_H, | ||
| 192 | + DGLNT_ENC_PREF_V); | ||
| 193 | + } | ||
| 194 | + return num_modes; | ||
| 195 | +} | ||
| 196 | + | ||
| 197 | +static enum drm_connector_status dglnt_encoder_detect( | ||
| 198 | + struct drm_encoder *encoder, | ||
| 199 | + struct drm_connector *connector) | ||
| 200 | +{ | ||
| 201 | + struct dglnt_encoder *dglnt = to_dglnt_encoder(encoder); | ||
| 202 | + | ||
| 203 | + if (dglnt->i2c_present) { | ||
| 204 | + if (drm_probe_ddc(dglnt->i2c_bus)) | ||
| 205 | + return connector_status_connected; | ||
| 206 | + return connector_status_disconnected; | ||
| 207 | + } else | ||
| 208 | + return connector_status_unknown; | ||
| 209 | +} | ||
| 210 | + | ||
| 211 | +static struct drm_encoder_slave_funcs dglnt_encoder_slave_funcs = { | ||
| 212 | + .dpms = dglnt_encoder_dpms, | ||
| 213 | + .save = dglnt_encoder_save, | ||
| 214 | + .restore = dglnt_encoder_restore, | ||
| 215 | + .mode_fixup = dglnt_mode_fixup, | ||
| 216 | + .mode_valid = dglnt_encoder_mode_valid, | ||
| 217 | + .mode_set = dglnt_encoder_mode_set, | ||
| 218 | + .detect = dglnt_encoder_detect, | ||
| 219 | + .get_modes = dglnt_encoder_get_modes, | ||
| 220 | +}; | ||
| 221 | + | ||
| 222 | +static int dglnt_encoder_encoder_init(struct platform_device *pdev, | ||
| 223 | + struct drm_device *dev, | ||
| 224 | + struct drm_encoder_slave *encoder) | ||
| 225 | +{ | ||
| 226 | + struct dglnt_encoder *dglnt = platform_get_drvdata(pdev); | ||
| 227 | + struct device_node *sub_node; | ||
| 228 | + | ||
| 229 | + encoder->slave_priv = dglnt; | ||
| 230 | + encoder->slave_funcs = &dglnt_encoder_slave_funcs; | ||
| 231 | + | ||
| 232 | + dglnt->encoder = &encoder->base; | ||
| 233 | + | ||
| 234 | + /* get i2c adapter for edid */ | ||
| 235 | + dglnt->i2c_present = false; | ||
| 236 | + sub_node = of_parse_phandle(pdev->dev.of_node, "dglnt,edid-i2c", 0); | ||
| 237 | + if (sub_node) { | ||
| 238 | + dglnt->i2c_bus = of_find_i2c_adapter_by_node(sub_node); | ||
| 239 | + if (!dglnt->i2c_bus) | ||
| 240 | + DRM_INFO("failed to get the edid i2c adapter, using default modes\n"); | ||
| 241 | + else | ||
| 242 | + dglnt->i2c_present = true; | ||
| 243 | + of_node_put(sub_node); | ||
| 244 | + } | ||
| 245 | + | ||
| 246 | + return 0; | ||
| 247 | +} | ||
| 248 | + | ||
| 249 | +static int dglnt_encoder_probe(struct platform_device *pdev) | ||
| 250 | +{ | ||
| 251 | + struct dglnt_encoder *dglnt; | ||
| 252 | + | ||
| 253 | + dglnt = devm_kzalloc(&pdev->dev, sizeof(*dglnt), GFP_KERNEL); | ||
| 254 | + if (!dglnt) | ||
| 255 | + return -ENOMEM; | ||
| 256 | + | ||
| 257 | + platform_set_drvdata(pdev, dglnt); | ||
| 258 | + | ||
| 259 | + return 0; | ||
| 260 | +} | ||
| 261 | + | ||
| 262 | +static int dglnt_encoder_remove(struct platform_device *pdev) | ||
| 263 | +{ | ||
| 264 | + return 0; | ||
| 265 | +} | ||
| 266 | + | ||
| 267 | +static const struct of_device_id dglnt_encoder_of_match[] = { | ||
| 268 | + { .compatible = "digilent,drm-encoder", }, | ||
| 269 | + { /* end of table */ }, | ||
| 270 | +}; | ||
| 271 | +MODULE_DEVICE_TABLE(of, dglnt_encoder_of_match); | ||
| 272 | + | ||
| 273 | +static struct drm_platform_encoder_driver dglnt_encoder_driver = { | ||
| 274 | + .platform_driver = { | ||
| 275 | + .probe = dglnt_encoder_probe, | ||
| 276 | + .remove = dglnt_encoder_remove, | ||
| 277 | + .driver = { | ||
| 278 | + .owner = THIS_MODULE, | ||
| 279 | + .name = "dglnt-drm-enc", | ||
| 280 | + .of_match_table = dglnt_encoder_of_match, | ||
| 281 | + }, | ||
| 282 | + }, | ||
| 283 | + | ||
| 284 | + .encoder_init = dglnt_encoder_encoder_init, | ||
| 285 | +}; | ||
| 286 | + | ||
| 287 | +static int __init dglnt_encoder_init(void) | ||
| 288 | +{ | ||
| 289 | + return platform_driver_register(&dglnt_encoder_driver.platform_driver); | ||
| 290 | +} | ||
| 291 | + | ||
| 292 | +static void __exit dglnt_encoder_exit(void) | ||
| 293 | +{ | ||
| 294 | + platform_driver_unregister(&dglnt_encoder_driver.platform_driver); | ||
| 295 | +} | ||
| 296 | + | ||
| 297 | +module_init(dglnt_encoder_init); | ||
| 298 | +module_exit(dglnt_encoder_exit); | ||
| 299 | + | ||
| 300 | +MODULE_AUTHOR("Digilent, Inc."); | ||
| 301 | +MODULE_DESCRIPTION("DRM slave encoder for Video-out on Digilent boards"); | ||
| 302 | +MODULE_LICENSE("GPL v2"); | ||
| 303 | -- | ||
| 304 | 2.7.4 | ||
| 305 | |||
diff --git a/meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx/v2023.2/0002-clk-Add-driver-for-axi_dynclk-IP-Core.patch b/meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx/v2023.2/0002-clk-Add-driver-for-axi_dynclk-IP-Core.patch new file mode 100644 index 00000000..9b6229db --- /dev/null +++ b/meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx/v2023.2/0002-clk-Add-driver-for-axi_dynclk-IP-Core.patch | |||
| @@ -0,0 +1,607 @@ | |||
| 1 | From 217e3b6f4393926b8dcad841381527ef3fc808c2 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Jason Wu <jason.wu.misc@gmail.com> | ||
| 3 | Date: Sun, 10 Apr 2016 13:16:06 +1000 | ||
| 4 | Subject: [PATCH 2/3] clk: Add driver for axi_dynclk IP Core | ||
| 5 | |||
| 6 | Add support for the axi_dynclk IP Core available from Digilent. This IP | ||
| 7 | core dynamically configures the clock resources inside a Xilinx FPGA to | ||
| 8 | generate a clock with a software programmable frequency. | ||
| 9 | |||
| 10 | Upstream-Status: Pending | ||
| 11 | |||
| 12 | Signed-off-by: Sam Bobrowicz <sbobrowicz@digilentinc.com> | ||
| 13 | Signed-off-by: Jason Wu <jason.wu.misc@gmail.com> | ||
| 14 | --- | ||
| 15 | drivers/clk/Kconfig | 8 + | ||
| 16 | drivers/clk/Makefile | 1 + | ||
| 17 | drivers/clk/clk-dglnt-dynclk.c | 547 +++++++++++++++++++++++++++++++++++++++++ | ||
| 18 | 3 files changed, 556 insertions(+) | ||
| 19 | create mode 100644 drivers/clk/clk-dglnt-dynclk.c | ||
| 20 | |||
| 21 | diff --git a/drivers/clk/Kconfig b/drivers/clk/Kconfig | ||
| 22 | index dccb111100..7fe65a702b 100644 | ||
| 23 | --- a/drivers/clk/Kconfig | ||
| 24 | +++ b/drivers/clk/Kconfig | ||
| 25 | @@ -148,6 +148,14 @@ config CLK_QORIQ | ||
| 26 | This adds the clock driver support for Freescale QorIQ platforms | ||
| 27 | using common clock framework. | ||
| 28 | |||
| 29 | +config COMMON_CLK_DGLNT_DYNCLK | ||
| 30 | + tristate "Digilent axi_dynclk Driver" | ||
| 31 | + depends on ARCH_ZYNQ || MICROBLAZE | ||
| 32 | + help | ||
| 33 | + ---help--- | ||
| 34 | + Support for the Digilent AXI Dynamic Clock core for Xilinx | ||
| 35 | + FPGAs. | ||
| 36 | + | ||
| 37 | config COMMON_CLK_XGENE | ||
| 38 | bool "Clock driver for APM XGene SoC" | ||
| 39 | default y | ||
| 40 | diff --git a/drivers/clk/Makefile b/drivers/clk/Makefile | ||
| 41 | index 0760449dde..45ce97d053 100644 | ||
| 42 | --- a/drivers/clk/Makefile | ||
| 43 | +++ b/drivers/clk/Makefile | ||
| 44 | @@ -24,6 +24,7 @@ obj-$(CONFIG_COMMON_CLK_CDCE706) += clk-cdce706.o | ||
| 45 | obj-$(CONFIG_COMMON_CLK_CDCE925) += clk-cdce925.o | ||
| 46 | obj-$(CONFIG_ARCH_CLPS711X) += clk-clps711x.o | ||
| 47 | obj-$(CONFIG_COMMON_CLK_CS2000_CP) += clk-cs2000-cp.o | ||
| 48 | +obj-$(CONFIG_COMMON_CLK_DGLNT_DYNCLK) += clk-dglnt-dynclk.o | ||
| 49 | obj-$(CONFIG_ARCH_EFM32) += clk-efm32gg.o | ||
| 50 | obj-$(CONFIG_ARCH_HIGHBANK) += clk-highbank.o | ||
| 51 | obj-$(CONFIG_COMMON_CLK_MAX77686) += clk-max77686.o | ||
| 52 | diff --git a/drivers/clk/clk-dglnt-dynclk.c b/drivers/clk/clk-dglnt-dynclk.c | ||
| 53 | new file mode 100644 | ||
| 54 | index 0000000000..496ad5fc90 | ||
| 55 | --- /dev/null | ||
| 56 | +++ b/drivers/clk/clk-dglnt-dynclk.c | ||
| 57 | @@ -0,0 +1,547 @@ | ||
| 58 | +/* | ||
| 59 | + * clk-dglnt-dynclk.c - Digilent AXI Dynamic Clock (axi_dynclk) Driver | ||
| 60 | + * | ||
| 61 | + * Copyright (C) 2015 Digilent | ||
| 62 | + * Author: Sam Bobrowicz <sbobrowicz@digilentinc.com> | ||
| 63 | + * | ||
| 64 | + * Reused code from clk-axi-clkgen.c, Copyright (C) 2012-2013 Analog Devices Inc. | ||
| 65 | + * | ||
| 66 | + * This software is licensed under the terms of the GNU General Public | ||
| 67 | + * License version 2, as published by the Free Software Foundation, and | ||
| 68 | + * may be copied, distributed, and modified under those terms. | ||
| 69 | + * | ||
| 70 | + * This program is distributed in the hope that it will be useful, | ||
| 71 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 72 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 73 | + * GNU General Public License for more details. | ||
| 74 | + */ | ||
| 75 | + | ||
| 76 | +#include <linux/platform_device.h> | ||
| 77 | +#include <linux/clk-provider.h> | ||
| 78 | +#include <linux/clk.h> | ||
| 79 | +#include <linux/slab.h> | ||
| 80 | +#include <linux/io.h> | ||
| 81 | +#include <linux/of.h> | ||
| 82 | +#include <linux/module.h> | ||
| 83 | +#include <linux/err.h> | ||
| 84 | +#include <linux/kernel.h> | ||
| 85 | + | ||
| 86 | +#define CLK_BIT_WEDGE 13 | ||
| 87 | +#define CLK_BIT_NOCOUNT 12 | ||
| 88 | + | ||
| 89 | +/* This value is used to signal an error */ | ||
| 90 | +#define ERR_CLKCOUNTCALC 0xFFFFFFFF | ||
| 91 | +#define ERR_CLKDIVIDER (1 << CLK_BIT_WEDGE | 1 << CLK_BIT_NOCOUNT) | ||
| 92 | + | ||
| 93 | +#define DYNCLK_DIV_1_REGMASK 0x1041 | ||
| 94 | +/* 25 MHz (125 KHz / 5) */ | ||
| 95 | +#define DYNCLK_DEFAULT_FREQ 125000 | ||
| 96 | + | ||
| 97 | +#define MMCM_FREQ_VCOMIN 600000 | ||
| 98 | +#define MMCM_FREQ_VCOMAX 1200000 | ||
| 99 | +#define MMCM_FREQ_PFDMIN 10000 | ||
| 100 | +#define MMCM_FREQ_PFDMAX 450000 | ||
| 101 | +#define MMCM_FREQ_OUTMIN 4000 | ||
| 102 | +#define MMCM_FREQ_OUTMAX 800000 | ||
| 103 | +#define MMCM_DIV_MAX 106 | ||
| 104 | +#define MMCM_FB_MIN 2 | ||
| 105 | +#define MMCM_FB_MAX 64 | ||
| 106 | +#define MMCM_CLKDIV_MAX 128 | ||
| 107 | +#define MMCM_CLKDIV_MIN 1 | ||
| 108 | + | ||
| 109 | +#define OFST_DISPLAY_CTRL 0x0 | ||
| 110 | +#define OFST_DISPLAY_STATUS 0x4 | ||
| 111 | +#define OFST_DISPLAY_CLK_L 0x8 | ||
| 112 | +#define OFST_DISPLAY_FB_L 0x0C | ||
| 113 | +#define OFST_DISPLAY_FB_H_CLK_H 0x10 | ||
| 114 | +#define OFST_DISPLAY_DIV 0x14 | ||
| 115 | +#define OFST_DISPLAY_LOCK_L 0x18 | ||
| 116 | +#define OFST_DISPLAY_FLTR_LOCK_H 0x1C | ||
| 117 | + | ||
| 118 | +static const u64 lock_lookup[64] = { | ||
| 119 | + 0b0011000110111110100011111010010000000001, | ||
| 120 | + 0b0011000110111110100011111010010000000001, | ||
| 121 | + 0b0100001000111110100011111010010000000001, | ||
| 122 | + 0b0101101011111110100011111010010000000001, | ||
| 123 | + 0b0111001110111110100011111010010000000001, | ||
| 124 | + 0b1000110001111110100011111010010000000001, | ||
| 125 | + 0b1001110011111110100011111010010000000001, | ||
| 126 | + 0b1011010110111110100011111010010000000001, | ||
| 127 | + 0b1100111001111110100011111010010000000001, | ||
| 128 | + 0b1110011100111110100011111010010000000001, | ||
| 129 | + 0b1111111111111000010011111010010000000001, | ||
| 130 | + 0b1111111111110011100111111010010000000001, | ||
| 131 | + 0b1111111111101110111011111010010000000001, | ||
| 132 | + 0b1111111111101011110011111010010000000001, | ||
| 133 | + 0b1111111111101000101011111010010000000001, | ||
| 134 | + 0b1111111111100111000111111010010000000001, | ||
| 135 | + 0b1111111111100011111111111010010000000001, | ||
| 136 | + 0b1111111111100010011011111010010000000001, | ||
| 137 | + 0b1111111111100000110111111010010000000001, | ||
| 138 | + 0b1111111111011111010011111010010000000001, | ||
| 139 | + 0b1111111111011101101111111010010000000001, | ||
| 140 | + 0b1111111111011100001011111010010000000001, | ||
| 141 | + 0b1111111111011010100111111010010000000001, | ||
| 142 | + 0b1111111111011001000011111010010000000001, | ||
| 143 | + 0b1111111111011001000011111010010000000001, | ||
| 144 | + 0b1111111111010111011111111010010000000001, | ||
| 145 | + 0b1111111111010101111011111010010000000001, | ||
| 146 | + 0b1111111111010101111011111010010000000001, | ||
| 147 | + 0b1111111111010100010111111010010000000001, | ||
| 148 | + 0b1111111111010100010111111010010000000001, | ||
| 149 | + 0b1111111111010010110011111010010000000001, | ||
| 150 | + 0b1111111111010010110011111010010000000001, | ||
| 151 | + 0b1111111111010010110011111010010000000001, | ||
| 152 | + 0b1111111111010001001111111010010000000001, | ||
| 153 | + 0b1111111111010001001111111010010000000001, | ||
| 154 | + 0b1111111111010001001111111010010000000001, | ||
| 155 | + 0b1111111111001111101011111010010000000001, | ||
| 156 | + 0b1111111111001111101011111010010000000001, | ||
| 157 | + 0b1111111111001111101011111010010000000001, | ||
| 158 | + 0b1111111111001111101011111010010000000001, | ||
| 159 | + 0b1111111111001111101011111010010000000001, | ||
| 160 | + 0b1111111111001111101011111010010000000001, | ||
| 161 | + 0b1111111111001111101011111010010000000001, | ||
| 162 | + 0b1111111111001111101011111010010000000001, | ||
| 163 | + 0b1111111111001111101011111010010000000001, | ||
| 164 | + 0b1111111111001111101011111010010000000001, | ||
| 165 | + 0b1111111111001111101011111010010000000001, | ||
| 166 | + 0b1111111111001111101011111010010000000001, | ||
| 167 | + 0b1111111111001111101011111010010000000001, | ||
| 168 | + 0b1111111111001111101011111010010000000001, | ||
| 169 | + 0b1111111111001111101011111010010000000001, | ||
| 170 | + 0b1111111111001111101011111010010000000001, | ||
| 171 | + 0b1111111111001111101011111010010000000001, | ||
| 172 | + 0b1111111111001111101011111010010000000001, | ||
| 173 | + 0b1111111111001111101011111010010000000001, | ||
| 174 | + 0b1111111111001111101011111010010000000001, | ||
| 175 | + 0b1111111111001111101011111010010000000001, | ||
| 176 | + 0b1111111111001111101011111010010000000001, | ||
| 177 | + 0b1111111111001111101011111010010000000001, | ||
| 178 | + 0b1111111111001111101011111010010000000001, | ||
| 179 | + 0b1111111111001111101011111010010000000001, | ||
| 180 | + 0b1111111111001111101011111010010000000001, | ||
| 181 | + 0b1111111111001111101011111010010000000001, | ||
| 182 | + 0b1111111111001111101011111010010000000001 | ||
| 183 | +}; | ||
| 184 | + | ||
| 185 | +static const u32 filter_lookup_low[64] = { | ||
| 186 | + 0b0001011111, | ||
| 187 | + 0b0001010111, | ||
| 188 | + 0b0001111011, | ||
| 189 | + 0b0001011011, | ||
| 190 | + 0b0001101011, | ||
| 191 | + 0b0001110011, | ||
| 192 | + 0b0001110011, | ||
| 193 | + 0b0001110011, | ||
| 194 | + 0b0001110011, | ||
| 195 | + 0b0001001011, | ||
| 196 | + 0b0001001011, | ||
| 197 | + 0b0001001011, | ||
| 198 | + 0b0010110011, | ||
| 199 | + 0b0001010011, | ||
| 200 | + 0b0001010011, | ||
| 201 | + 0b0001010011, | ||
| 202 | + 0b0001010011, | ||
| 203 | + 0b0001010011, | ||
| 204 | + 0b0001010011, | ||
| 205 | + 0b0001010011, | ||
| 206 | + 0b0001010011, | ||
| 207 | + 0b0001010011, | ||
| 208 | + 0b0001010011, | ||
| 209 | + 0b0001100011, | ||
| 210 | + 0b0001100011, | ||
| 211 | + 0b0001100011, | ||
| 212 | + 0b0001100011, | ||
| 213 | + 0b0001100011, | ||
| 214 | + 0b0001100011, | ||
| 215 | + 0b0001100011, | ||
| 216 | + 0b0001100011, | ||
| 217 | + 0b0001100011, | ||
| 218 | + 0b0001100011, | ||
| 219 | + 0b0001100011, | ||
| 220 | + 0b0001100011, | ||
| 221 | + 0b0001100011, | ||
| 222 | + 0b0001100011, | ||
| 223 | + 0b0010010011, | ||
| 224 | + 0b0010010011, | ||
| 225 | + 0b0010010011, | ||
| 226 | + 0b0010010011, | ||
| 227 | + 0b0010010011, | ||
| 228 | + 0b0010010011, | ||
| 229 | + 0b0010010011, | ||
| 230 | + 0b0010010011, | ||
| 231 | + 0b0010010011, | ||
| 232 | + 0b0010010011, | ||
| 233 | + 0b0010100011, | ||
| 234 | + 0b0010100011, | ||
| 235 | + 0b0010100011, | ||
| 236 | + 0b0010100011, | ||
| 237 | + 0b0010100011, | ||
| 238 | + 0b0010100011, | ||
| 239 | + 0b0010100011, | ||
| 240 | + 0b0010100011, | ||
| 241 | + 0b0010100011, | ||
| 242 | + 0b0010100011, | ||
| 243 | + 0b0010100011, | ||
| 244 | + 0b0010100011, | ||
| 245 | + 0b0010100011, | ||
| 246 | + 0b0010100011, | ||
| 247 | + 0b0010100011, | ||
| 248 | + 0b0010100011, | ||
| 249 | + 0b0010100011 | ||
| 250 | +}; | ||
| 251 | + | ||
| 252 | +struct dglnt_dynclk_reg; | ||
| 253 | +struct dglnt_dynclk_mode; | ||
| 254 | +struct dglnt_dynclk; | ||
| 255 | + | ||
| 256 | +struct dglnt_dynclk_reg { | ||
| 257 | + u32 clk0L; | ||
| 258 | + u32 clkFBL; | ||
| 259 | + u32 clkFBH_clk0H; | ||
| 260 | + u32 divclk; | ||
| 261 | + u32 lockL; | ||
| 262 | + u32 fltr_lockH; | ||
| 263 | +}; | ||
| 264 | + | ||
| 265 | +struct dglnt_dynclk_mode { | ||
| 266 | + u32 freq; | ||
| 267 | + u32 fbmult; | ||
| 268 | + u32 clkdiv; | ||
| 269 | + u32 maindiv; | ||
| 270 | +}; | ||
| 271 | + | ||
| 272 | +struct dglnt_dynclk { | ||
| 273 | + void __iomem *base; | ||
| 274 | + struct clk_hw clk_hw; | ||
| 275 | + unsigned long freq; | ||
| 276 | +}; | ||
| 277 | + | ||
| 278 | +u32 dglnt_dynclk_divider(u32 divide) | ||
| 279 | +{ | ||
| 280 | + u32 output = 0; | ||
| 281 | + u32 highTime = 0; | ||
| 282 | + u32 lowTime = 0; | ||
| 283 | + | ||
| 284 | + if ((divide < 1) || (divide > 128)) | ||
| 285 | + return ERR_CLKDIVIDER; | ||
| 286 | + | ||
| 287 | + if (divide == 1) | ||
| 288 | + return DYNCLK_DIV_1_REGMASK; | ||
| 289 | + | ||
| 290 | + highTime = divide / 2; | ||
| 291 | + /* if divide is odd */ | ||
| 292 | + if (divide & 0x1) { | ||
| 293 | + lowTime = highTime + 1; | ||
| 294 | + output = 1 << CLK_BIT_WEDGE; | ||
| 295 | + } else { | ||
| 296 | + lowTime = highTime; | ||
| 297 | + } | ||
| 298 | + | ||
| 299 | + output |= 0x03F & lowTime; | ||
| 300 | + output |= 0xFC0 & (highTime << 6); | ||
| 301 | + return output; | ||
| 302 | +} | ||
| 303 | + | ||
| 304 | +u32 dglnt_dynclk_count_calc(u32 divide) | ||
| 305 | +{ | ||
| 306 | + u32 output = 0; | ||
| 307 | + u32 divCalc = 0; | ||
| 308 | + | ||
| 309 | + divCalc = dglnt_dynclk_divider(divide); | ||
| 310 | + if (divCalc == ERR_CLKDIVIDER) | ||
| 311 | + output = ERR_CLKCOUNTCALC; | ||
| 312 | + else | ||
| 313 | + output = (0xFFF & divCalc) | ((divCalc << 10) & 0x00C00000); | ||
| 314 | + return output; | ||
| 315 | +} | ||
| 316 | + | ||
| 317 | + | ||
| 318 | +int dglnt_dynclk_find_reg(struct dglnt_dynclk_reg *regValues, | ||
| 319 | + struct dglnt_dynclk_mode *clkParams) | ||
| 320 | +{ | ||
| 321 | + if ((clkParams->fbmult < 2) || clkParams->fbmult > 64) | ||
| 322 | + return -EINVAL; | ||
| 323 | + | ||
| 324 | + regValues->clk0L = dglnt_dynclk_count_calc(clkParams->clkdiv); | ||
| 325 | + if (regValues->clk0L == ERR_CLKCOUNTCALC) | ||
| 326 | + return -EINVAL; | ||
| 327 | + | ||
| 328 | + regValues->clkFBL = dglnt_dynclk_count_calc(clkParams->fbmult); | ||
| 329 | + if (regValues->clkFBL == ERR_CLKCOUNTCALC) | ||
| 330 | + return -EINVAL; | ||
| 331 | + | ||
| 332 | + regValues->clkFBH_clk0H = 0; | ||
| 333 | + | ||
| 334 | + regValues->divclk = dglnt_dynclk_divider(clkParams->maindiv); | ||
| 335 | + if (regValues->divclk == ERR_CLKDIVIDER) | ||
| 336 | + return -EINVAL; | ||
| 337 | + | ||
| 338 | + regValues->lockL = (u32)(lock_lookup[clkParams->fbmult - 1] & | ||
| 339 | + 0xFFFFFFFF); | ||
| 340 | + | ||
| 341 | + regValues->fltr_lockH = (u32)((lock_lookup[clkParams->fbmult - 1] >> | ||
| 342 | + 32) & 0x000000FF); | ||
| 343 | + regValues->fltr_lockH |= ((filter_lookup_low[clkParams->fbmult - 1] << | ||
| 344 | + 16) & 0x03FF0000); | ||
| 345 | + | ||
| 346 | + return 0; | ||
| 347 | +} | ||
| 348 | + | ||
| 349 | +void dglnt_dynclk_write_reg(struct dglnt_dynclk_reg *regValues, | ||
| 350 | + void __iomem *baseaddr) | ||
| 351 | +{ | ||
| 352 | + writel(regValues->clk0L, baseaddr + OFST_DISPLAY_CLK_L); | ||
| 353 | + writel(regValues->clkFBL, baseaddr + OFST_DISPLAY_FB_L); | ||
| 354 | + writel(regValues->clkFBH_clk0H, baseaddr + OFST_DISPLAY_FB_H_CLK_H); | ||
| 355 | + writel(regValues->divclk, baseaddr + OFST_DISPLAY_DIV); | ||
| 356 | + writel(regValues->lockL, baseaddr + OFST_DISPLAY_LOCK_L); | ||
| 357 | + writel(regValues->fltr_lockH, baseaddr + OFST_DISPLAY_FLTR_LOCK_H); | ||
| 358 | +} | ||
| 359 | + | ||
| 360 | +u32 dglnt_dynclk_find_mode(u32 freq, u32 parentFreq, | ||
| 361 | + struct dglnt_dynclk_mode *bestPick) | ||
| 362 | +{ | ||
| 363 | + u32 bestError = MMCM_FREQ_OUTMAX; | ||
| 364 | + u32 curError; | ||
| 365 | + u32 curClkMult; | ||
| 366 | + u32 curFreq; | ||
| 367 | + u32 divVal; | ||
| 368 | + u32 curFb, curClkDiv; | ||
| 369 | + u32 minFb = 0; | ||
| 370 | + u32 maxFb = 0; | ||
| 371 | + u32 curDiv = 1; | ||
| 372 | + u32 maxDiv; | ||
| 373 | + bool freq_found = false; | ||
| 374 | + | ||
| 375 | + bestPick->freq = 0; | ||
| 376 | + if (parentFreq == 0) | ||
| 377 | + return 0; | ||
| 378 | + | ||
| 379 | + /* minimum frequency is actually dictated by VCOmin */ | ||
| 380 | + if (freq < MMCM_FREQ_OUTMIN) | ||
| 381 | + freq = MMCM_FREQ_OUTMIN; | ||
| 382 | + if (freq > MMCM_FREQ_OUTMAX) | ||
| 383 | + freq = MMCM_FREQ_OUTMAX; | ||
| 384 | + | ||
| 385 | + if (parentFreq > MMCM_FREQ_PFDMAX) | ||
| 386 | + curDiv = 2; | ||
| 387 | + maxDiv = parentFreq / MMCM_FREQ_PFDMIN; | ||
| 388 | + if (maxDiv > MMCM_DIV_MAX) | ||
| 389 | + maxDiv = MMCM_DIV_MAX; | ||
| 390 | + | ||
| 391 | + while (curDiv <= maxDiv && !freq_found) { | ||
| 392 | + minFb = curDiv * DIV_ROUND_UP(MMCM_FREQ_VCOMIN, parentFreq); | ||
| 393 | + maxFb = curDiv * (MMCM_FREQ_VCOMAX / parentFreq); | ||
| 394 | + if (maxFb > MMCM_FB_MAX) | ||
| 395 | + maxFb = MMCM_FB_MAX; | ||
| 396 | + if (minFb < MMCM_FB_MIN) | ||
| 397 | + minFb = MMCM_FB_MIN; | ||
| 398 | + | ||
| 399 | + divVal = curDiv * freq; | ||
| 400 | + /* | ||
| 401 | + * This multiplier is used to find the best clkDiv value for | ||
| 402 | + * each FB value | ||
| 403 | + */ | ||
| 404 | + curClkMult = ((parentFreq * 1000) + (divVal / 2)) / divVal; | ||
| 405 | + | ||
| 406 | + curFb = minFb; | ||
| 407 | + while (curFb <= maxFb && !freq_found) { | ||
| 408 | + curClkDiv = ((curClkMult * curFb) + 500) / 1000; | ||
| 409 | + if (curClkDiv > MMCM_CLKDIV_MAX) | ||
| 410 | + curClkDiv = MMCM_CLKDIV_MAX; | ||
| 411 | + if (curClkDiv < MMCM_CLKDIV_MIN) | ||
| 412 | + curClkDiv = MMCM_CLKDIV_MIN; | ||
| 413 | + curFreq = (((parentFreq * curFb) / curDiv) / curClkDiv); | ||
| 414 | + if (curFreq >= freq) | ||
| 415 | + curError = curFreq - freq; | ||
| 416 | + else | ||
| 417 | + curError = freq - curFreq; | ||
| 418 | + if (curError < bestError) { | ||
| 419 | + bestError = curError; | ||
| 420 | + bestPick->clkdiv = curClkDiv; | ||
| 421 | + bestPick->fbmult = curFb; | ||
| 422 | + bestPick->maindiv = curDiv; | ||
| 423 | + bestPick->freq = curFreq; | ||
| 424 | + } | ||
| 425 | + if (!curError) | ||
| 426 | + freq_found = true; | ||
| 427 | + curFb++; | ||
| 428 | + } | ||
| 429 | + curDiv++; | ||
| 430 | + } | ||
| 431 | + return bestPick->freq; | ||
| 432 | +} | ||
| 433 | + | ||
| 434 | +static struct dglnt_dynclk *clk_hw_to_dglnt_dynclk(struct clk_hw *clk_hw) | ||
| 435 | +{ | ||
| 436 | + return container_of(clk_hw, struct dglnt_dynclk, clk_hw); | ||
| 437 | +} | ||
| 438 | + | ||
| 439 | + | ||
| 440 | +static int dglnt_dynclk_enable(struct clk_hw *clk_hw) | ||
| 441 | +{ | ||
| 442 | + struct dglnt_dynclk *dglnt_dynclk = clk_hw_to_dglnt_dynclk(clk_hw); | ||
| 443 | + unsigned int clock_state; | ||
| 444 | + | ||
| 445 | + if (dglnt_dynclk->freq) { | ||
| 446 | + writel(1, dglnt_dynclk->base + OFST_DISPLAY_CTRL); | ||
| 447 | + do { | ||
| 448 | + clock_state = readl(dglnt_dynclk->base + | ||
| 449 | + OFST_DISPLAY_STATUS); | ||
| 450 | + } while (!clock_state); | ||
| 451 | + } | ||
| 452 | + return 0; | ||
| 453 | +} | ||
| 454 | + | ||
| 455 | +static void dglnt_dynclk_disable(struct clk_hw *clk_hw) | ||
| 456 | +{ | ||
| 457 | + struct dglnt_dynclk *dglnt_dynclk = clk_hw_to_dglnt_dynclk(clk_hw); | ||
| 458 | + | ||
| 459 | + writel(0, dglnt_dynclk->base + OFST_DISPLAY_CTRL); | ||
| 460 | +} | ||
| 461 | + | ||
| 462 | +static int dglnt_dynclk_set_rate(struct clk_hw *clk_hw, | ||
| 463 | + unsigned long rate, unsigned long parent_rate) | ||
| 464 | +{ | ||
| 465 | + struct dglnt_dynclk *dglnt_dynclk = clk_hw_to_dglnt_dynclk(clk_hw); | ||
| 466 | + struct dglnt_dynclk_reg clkReg; | ||
| 467 | + struct dglnt_dynclk_mode clkMode; | ||
| 468 | + | ||
| 469 | + if (parent_rate == 0 || rate == 0) | ||
| 470 | + return -EINVAL; | ||
| 471 | + if (rate == dglnt_dynclk->freq) | ||
| 472 | + return 0; | ||
| 473 | + | ||
| 474 | + /* | ||
| 475 | + * Convert from Hz to KHz, then multiply by five to account for | ||
| 476 | + * BUFR division | ||
| 477 | + */ | ||
| 478 | + rate = (rate + 100) / 200; | ||
| 479 | + /* convert from Hz to KHz */ | ||
| 480 | + parent_rate = (parent_rate + 500) / 1000; | ||
| 481 | + if (!dglnt_dynclk_find_mode(rate, parent_rate, &clkMode)) | ||
| 482 | + return -EINVAL; | ||
| 483 | + | ||
| 484 | + /* | ||
| 485 | + * Write to the PLL dynamic configuration registers to configure it | ||
| 486 | + * with the calculated parameters. | ||
| 487 | + */ | ||
| 488 | + dglnt_dynclk_find_reg(&clkReg, &clkMode); | ||
| 489 | + dglnt_dynclk_write_reg(&clkReg, dglnt_dynclk->base); | ||
| 490 | + dglnt_dynclk->freq = clkMode.freq * 200; | ||
| 491 | + dglnt_dynclk_disable(clk_hw); | ||
| 492 | + dglnt_dynclk_enable(clk_hw); | ||
| 493 | + | ||
| 494 | + return 0; | ||
| 495 | +} | ||
| 496 | + | ||
| 497 | +static long dglnt_dynclk_round_rate(struct clk_hw *hw, unsigned long rate, | ||
| 498 | + unsigned long *parent_rate) | ||
| 499 | +{ | ||
| 500 | + struct dglnt_dynclk_mode clkMode; | ||
| 501 | + | ||
| 502 | + dglnt_dynclk_find_mode(((rate + 100) / 200), | ||
| 503 | + ((*parent_rate) + 500) / 1000, &clkMode); | ||
| 504 | + | ||
| 505 | + return (clkMode.freq * 200); | ||
| 506 | +} | ||
| 507 | + | ||
| 508 | +static unsigned long dglnt_dynclk_recalc_rate(struct clk_hw *clk_hw, | ||
| 509 | + unsigned long parent_rate) | ||
| 510 | +{ | ||
| 511 | + struct dglnt_dynclk *dglnt_dynclk = clk_hw_to_dglnt_dynclk(clk_hw); | ||
| 512 | + | ||
| 513 | + return dglnt_dynclk->freq; | ||
| 514 | +} | ||
| 515 | + | ||
| 516 | + | ||
| 517 | +static const struct clk_ops dglnt_dynclk_ops = { | ||
| 518 | + .recalc_rate = dglnt_dynclk_recalc_rate, | ||
| 519 | + .round_rate = dglnt_dynclk_round_rate, | ||
| 520 | + .set_rate = dglnt_dynclk_set_rate, | ||
| 521 | + .enable = dglnt_dynclk_enable, | ||
| 522 | + .disable = dglnt_dynclk_disable, | ||
| 523 | +}; | ||
| 524 | + | ||
| 525 | +static const struct of_device_id dglnt_dynclk_ids[] = { | ||
| 526 | + { .compatible = "digilent,axi-dynclk", }, | ||
| 527 | + { }, | ||
| 528 | +}; | ||
| 529 | +MODULE_DEVICE_TABLE(of, dglnt_dynclk_ids); | ||
| 530 | + | ||
| 531 | +static int dglnt_dynclk_probe(struct platform_device *pdev) | ||
| 532 | +{ | ||
| 533 | + const struct of_device_id *id; | ||
| 534 | + struct dglnt_dynclk *dglnt_dynclk; | ||
| 535 | + struct clk_init_data init; | ||
| 536 | + const char *parent_name; | ||
| 537 | + const char *clk_name; | ||
| 538 | + struct resource *mem; | ||
| 539 | + struct clk *clk; | ||
| 540 | + | ||
| 541 | + if (!pdev->dev.of_node) | ||
| 542 | + return -ENODEV; | ||
| 543 | + | ||
| 544 | + id = of_match_node(dglnt_dynclk_ids, pdev->dev.of_node); | ||
| 545 | + if (!id) | ||
| 546 | + return -ENODEV; | ||
| 547 | + | ||
| 548 | + dglnt_dynclk = devm_kzalloc(&pdev->dev, sizeof(*dglnt_dynclk), | ||
| 549 | + GFP_KERNEL); | ||
| 550 | + if (!dglnt_dynclk) | ||
| 551 | + return -ENOMEM; | ||
| 552 | + | ||
| 553 | + mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); | ||
| 554 | + dglnt_dynclk->base = devm_ioremap_resource(&pdev->dev, mem); | ||
| 555 | + if (IS_ERR(dglnt_dynclk->base)) | ||
| 556 | + return PTR_ERR(dglnt_dynclk->base); | ||
| 557 | + | ||
| 558 | + parent_name = of_clk_get_parent_name(pdev->dev.of_node, 0); | ||
| 559 | + if (!parent_name) | ||
| 560 | + return -EINVAL; | ||
| 561 | + | ||
| 562 | + clk_name = pdev->dev.of_node->name; | ||
| 563 | + of_property_read_string(pdev->dev.of_node, "clock-output-names", | ||
| 564 | + &clk_name); | ||
| 565 | + | ||
| 566 | + init.name = clk_name; | ||
| 567 | + init.ops = &dglnt_dynclk_ops; | ||
| 568 | + init.flags = 0; | ||
| 569 | + init.parent_names = &parent_name; | ||
| 570 | + init.num_parents = 1; | ||
| 571 | + | ||
| 572 | + dglnt_dynclk->freq = 0; | ||
| 573 | + dglnt_dynclk_disable(&dglnt_dynclk->clk_hw); | ||
| 574 | + | ||
| 575 | + dglnt_dynclk->clk_hw.init = &init; | ||
| 576 | + clk = devm_clk_register(&pdev->dev, &dglnt_dynclk->clk_hw); | ||
| 577 | + if (IS_ERR(clk)) | ||
| 578 | + return PTR_ERR(clk); | ||
| 579 | + | ||
| 580 | + return of_clk_add_provider(pdev->dev.of_node, of_clk_src_simple_get, | ||
| 581 | + clk); | ||
| 582 | +} | ||
| 583 | + | ||
| 584 | +static int dglnt_dynclk_remove(struct platform_device *pdev) | ||
| 585 | +{ | ||
| 586 | + of_clk_del_provider(pdev->dev.of_node); | ||
| 587 | + | ||
| 588 | + return 0; | ||
| 589 | +} | ||
| 590 | + | ||
| 591 | +static struct platform_driver dglnt_dynclk_driver = { | ||
| 592 | + .driver = { | ||
| 593 | + .name = "dglnt-dynclk", | ||
| 594 | + .owner = THIS_MODULE, | ||
| 595 | + .of_match_table = dglnt_dynclk_ids, | ||
| 596 | + }, | ||
| 597 | + .probe = dglnt_dynclk_probe, | ||
| 598 | + .remove = dglnt_dynclk_remove, | ||
| 599 | +}; | ||
| 600 | +module_platform_driver(dglnt_dynclk_driver); | ||
| 601 | + | ||
| 602 | +MODULE_LICENSE("GPL v2"); | ||
| 603 | +MODULE_AUTHOR("Sam Bobrowicz <sbobrowicz@digilentinc.com>"); | ||
| 604 | +MODULE_DESCRIPTION("CCF Driver for Digilent axi_dynclk IP Core"); | ||
| 605 | -- | ||
| 606 | 2.14.2 | ||
| 607 | |||
diff --git a/meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx/v2023.2/0003-drm-xilinx-Fix-DPMS-transition-to-on.patch b/meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx/v2023.2/0003-drm-xilinx-Fix-DPMS-transition-to-on.patch new file mode 100644 index 00000000..a98d84c5 --- /dev/null +++ b/meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx/v2023.2/0003-drm-xilinx-Fix-DPMS-transition-to-on.patch | |||
| @@ -0,0 +1,54 @@ | |||
| 1 | From 1a18e2b514ae9e75145597ac509a87f656c976ba Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Nathan Rossi <nathan@nathanrossi.com> | ||
| 3 | Date: Mon, 2 May 2016 23:46:42 +1000 | ||
| 4 | Subject: [PATCH 3/3] drm: xilinx: Fix DPMS transition to on | ||
| 5 | |||
| 6 | Fix the issues where the VTC is reset (losing its timing config). | ||
| 7 | |||
| 8 | Also fix the issue where the plane destroys its DMA descriptors and | ||
| 9 | marks the DMA channels as inactive but never recreates the descriptors | ||
| 10 | and never updates the active state when turning DPMS back on. | ||
| 11 | |||
| 12 | Signed-off-by: Nathan Rossi <nathan@nathanrossi.com> | ||
| 13 | Upstream-Status: Pending [This is a workaround] | ||
| 14 | --- | ||
| 15 | drivers/gpu/drm/xilinx/xilinx_drm_crtc.c | 1 - | ||
| 16 | drivers/gpu/drm/xilinx/xilinx_drm_plane.c | 3 ++- | ||
| 17 | 2 files changed, 2 insertions(+), 2 deletions(-) | ||
| 18 | |||
| 19 | diff --git a/drivers/gpu/drm/xilinx/xilinx_drm_crtc.c b/drivers/gpu/drm/xilinx/xilinx_drm_crtc.c | ||
| 20 | index 631d35b921..93dbd4b58a 100644 | ||
| 21 | --- a/drivers/gpu/drm/xilinx/xilinx_drm_crtc.c | ||
| 22 | +++ b/drivers/gpu/drm/xilinx/xilinx_drm_crtc.c | ||
| 23 | @@ -88,7 +88,6 @@ static void xilinx_drm_crtc_dpms(struct drm_crtc *base_crtc, int dpms) | ||
| 24 | default: | ||
| 25 | if (crtc->vtc) { | ||
| 26 | xilinx_vtc_disable(crtc->vtc); | ||
| 27 | - xilinx_vtc_reset(crtc->vtc); | ||
| 28 | } | ||
| 29 | if (crtc->cresample) { | ||
| 30 | xilinx_cresample_disable(crtc->cresample); | ||
| 31 | diff --git a/drivers/gpu/drm/xilinx/xilinx_drm_plane.c b/drivers/gpu/drm/xilinx/xilinx_drm_plane.c | ||
| 32 | index 6a248b72d4..d2518a4bdf 100644 | ||
| 33 | --- a/drivers/gpu/drm/xilinx/xilinx_drm_plane.c | ||
| 34 | +++ b/drivers/gpu/drm/xilinx/xilinx_drm_plane.c | ||
| 35 | @@ -140,7 +140,7 @@ void xilinx_drm_plane_commit(struct drm_plane *base_plane) | ||
| 36 | for (i = 0; i < MAX_NUM_SUB_PLANES; i++) { | ||
| 37 | struct xilinx_drm_plane_dma *dma = &plane->dma[i]; | ||
| 38 | |||
| 39 | - if (dma->chan && dma->is_active) { | ||
| 40 | + if (dma->chan) { | ||
| 41 | flags = DMA_CTRL_ACK | DMA_PREP_INTERRUPT; | ||
| 42 | desc = dmaengine_prep_interleaved_dma(dma->chan, | ||
| 43 | &dma->xt, | ||
| 44 | @@ -153,6 +153,7 @@ void xilinx_drm_plane_commit(struct drm_plane *base_plane) | ||
| 45 | dmaengine_submit(desc); | ||
| 46 | |||
| 47 | dma_async_issue_pending(dma->chan); | ||
| 48 | + dma->is_active = true; | ||
| 49 | } | ||
| 50 | } | ||
| 51 | } | ||
| 52 | -- | ||
| 53 | 2.14.2 | ||
| 54 | |||
diff --git a/meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx/v2023.2/0004-minized-wifi-bluetooth.cfg b/meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx/v2023.2/0004-minized-wifi-bluetooth.cfg new file mode 100644 index 00000000..f71e53ab --- /dev/null +++ b/meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx/v2023.2/0004-minized-wifi-bluetooth.cfg | |||
| @@ -0,0 +1,33 @@ | |||
| 1 | # | ||
| 2 | # Bluetooth config | ||
| 3 | # | ||
| 4 | CONFIG_BT=y | ||
| 5 | CONFIG_BT_BREDR=y | ||
| 6 | CONFIG_BT_HS=y | ||
| 7 | CONFIG_BT_LE=y | ||
| 8 | CONFIG_BT_BCM=y | ||
| 9 | CONFIG_BT_HCIUART=y | ||
| 10 | CONFIG_BT_HCIUART_H4=y | ||
| 11 | CONFIG_BT_HCIUART_BCM=y | ||
| 12 | CONFIG_BT_HIDP=y | ||
| 13 | CONFIG_CFG80211=y | ||
| 14 | CONFIG_CFG80211_DEFAULT_PS=y | ||
| 15 | CONFIG_CFG80211_CRDA_SUPPORT=y | ||
| 16 | CONFIG_BRCMUTIL=y | ||
| 17 | CONFIG_BRCMFMAC=y | ||
| 18 | CONFIG_BRCMFMAC_PROTO_BCDC=y | ||
| 19 | CONFIG_BRCMFMAC_SDIO=y | ||
| 20 | CONFIG_CRYPTO_BLKCIPHER=y | ||
| 21 | CONFIG_CRYPTO_MANAGER=y | ||
| 22 | CONFIG_CRYPTO_ECB=y | ||
| 23 | CONFIG_CRYPTO_CMAC=y | ||
| 24 | CONFIG_CRYPTO_SHA256=y | ||
| 25 | |||
| 26 | # | ||
| 27 | # Regulator config | ||
| 28 | # | ||
| 29 | CONFIG_REGMAP_IRQ=y | ||
| 30 | CONFIG_I2C_XILINX=y | ||
| 31 | CONFIG_MFD_DA9062=y | ||
| 32 | CONFIG_REGULATOR_DA9062=y | ||
| 33 | |||
diff --git a/meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx_2023.2.bbappend b/meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx_2023.2.bbappend new file mode 100644 index 00000000..c789c7a9 --- /dev/null +++ b/meta-xilinx-contrib/recipes-kernel/linux/linux-xlnx_2023.2.bbappend | |||
| @@ -0,0 +1,12 @@ | |||
| 1 | FILESEXTRAPATHS:prepend := "${THISDIR}/linux-xlnx/v${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[1] or ''}:" | ||
| 2 | |||
| 3 | # Note: These patches are very old and doesn't apply on top of 5.x | ||
| 4 | # kernel. For more details refer README.md file. | ||
| 5 | |||
| 6 | #SRC_URI:append:zybo-linux-bd-zynq7 = " \ | ||
| 7 | # file://0001-drm-xilinx-Add-encoder-for-Digilent-boards.patch \ | ||
| 8 | # file://0002-clk-Add-driver-for-axi_dynclk-IP-Core.patch \ | ||
| 9 | # file://0003-drm-xilinx-Fix-DPMS-transition-to-on.patch \ | ||
| 10 | # " | ||
| 11 | |||
| 12 | SRC_URI:append:minized-zynq7 = " file://0004-minized-wifi-bluetooth.cfg" | ||
diff --git a/meta-xilinx-core/README.md b/meta-xilinx-core/README.md index 407075a2..ec5b663b 100644 --- a/meta-xilinx-core/README.md +++ b/meta-xilinx-core/README.md | |||
| @@ -60,11 +60,11 @@ In order to use recipes that rely on restricted content the `xilinx` license | |||
| 60 | flag must be white-listed in the build configuration (e.g. `local.conf`). This | 60 | flag must be white-listed in the build configuration (e.g. `local.conf`). This |
| 61 | can be done on a per package basis: | 61 | can be done on a per package basis: |
| 62 | 62 | ||
| 63 | LICENSE_FLAGS_WHITELIST += "xilinx_pmu-rom-native" | 63 | LICENSE_FLAGS_ACCEPTED += "xilinx_pmu-rom-native" |
| 64 | 64 | ||
| 65 | or generally: | 65 | or generally: |
| 66 | 66 | ||
| 67 | LICENSE_FLAGS_WHITELIST += "xilinx" | 67 | LICENSE_FLAGS_ACCEPTED += "xilinx" |
| 68 | 68 | ||
| 69 | Generally speaking Xilinx content that is provided as a restricted download | 69 | Generally speaking Xilinx content that is provided as a restricted download |
| 70 | cannot be obtained without a Xilinx account, in order to use this content you | 70 | cannot be obtained without a Xilinx account, in order to use this content you |
diff --git a/meta-xilinx-core/README.qemu.md b/meta-xilinx-core/README.qemu.md index d3a02a90..941fa937 100644 --- a/meta-xilinx-core/README.qemu.md +++ b/meta-xilinx-core/README.qemu.md | |||
| @@ -10,11 +10,11 @@ The PMU ROM is available for download, and a specific recipe has been created | |||
| 10 | to make this available: pmu-rom-native. | 10 | to make this available: pmu-rom-native. |
| 11 | 11 | ||
| 12 | The license on the software is Xilinx proprietary, so you may be required to | 12 | The license on the software is Xilinx proprietary, so you may be required to |
| 13 | enable the approprate LICENSE_FLAGS_WHITELIST to trigger the download. | 13 | enable the approprate LICENSE_FLAGS_ACCEPTED to trigger the download. |
| 14 | The license itself is available within the download at the URL referred to in | 14 | The license itself is available within the download at the URL referred to in |
| 15 | meta-xilinx-core/recipes-bsp/pmu-firmware/pmu-rom-native_2022.2.bb. | 15 | meta-xilinx-core/recipes-bsp/pmu-firmware/pmu-rom-native_2022.2.bb. |
| 16 | 16 | ||
| 17 | Add the following to your local.conf to acknowledge you accept the proprietary | 17 | Add the following to your local.conf to acknowledge you accept the proprietary |
| 18 | xilinx license. | 18 | xilinx license. |
| 19 | 19 | ||
| 20 | LICENSE_FLAGS_WHITELIST:append = " xilinx" | 20 | LICENSE_FLAGS_ACCEPTED:append = " xilinx" |
diff --git a/meta-xilinx-core/classes/dfx_user_dts.bbclass b/meta-xilinx-core/classes/dfx_user_dts.bbclass new file mode 100644 index 00000000..4404aa05 --- /dev/null +++ b/meta-xilinx-core/classes/dfx_user_dts.bbclass | |||
| @@ -0,0 +1,267 @@ | |||
| 1 | # This bbclass is inherited by flat, DFx Static and DFx RP firmware recipes. | ||
| 2 | # dfx_user_dts.bbclass expects user to generate pl dtsi for flat, DFx Static | ||
| 3 | # and DFx RP xsa outside of yocto. | ||
| 4 | |||
| 5 | inherit devicetree | ||
| 6 | |||
| 7 | DEPENDS = "dtc-native bootgen-native" | ||
| 8 | |||
| 9 | # recipes that inherit from this class need to use an appropriate machine | ||
| 10 | # override for COMPATIBLE_MACHINE to build successfully; don't allow building | ||
| 11 | # for microblaze MACHINE | ||
| 12 | COMPATIBLE_MACHINE ?= "^$" | ||
| 13 | COMPATIBLE_MACHINE:microblaze = "^$" | ||
| 14 | |||
| 15 | PACKAGE_ARCH = "${MACHINE_ARCH}" | ||
| 16 | |||
| 17 | PROVIDES = "" | ||
| 18 | |||
| 19 | do_fetch[cleandirs] = "${B}" | ||
| 20 | |||
| 21 | DT_PADDING_SIZE = "0x1000" | ||
| 22 | BOOTGEN_FLAGS ?= " -arch ${SOC_FAMILY} -w ${@bb.utils.contains('SOC_FAMILY','zynqmp','','-process_bitstream bin',d)}" | ||
| 23 | |||
| 24 | S ?= "${WORKDIR}" | ||
| 25 | FW_DIR ?= "" | ||
| 26 | DTSI_PATH ?= "" | ||
| 27 | DTBO_PATH ?= "" | ||
| 28 | DT_FILES_PATH = "${S}/${DTSI_PATH}" | ||
| 29 | FIRMWARE_NAME_DT_FILE ?= "" | ||
| 30 | USER_DTS_FILE ?= "" | ||
| 31 | |||
| 32 | FIRMWARE_NAME_DT_FILE[doc] = "DT file which has firmware-name device-tree property" | ||
| 33 | USER_DTS_FILE[doc] = "Final DTSI or DTS file which is used for packaging final DT overlay" | ||
| 34 | |||
| 35 | python() { | ||
| 36 | import re | ||
| 37 | soc_family = d.getVar("SOC_FAMILY") | ||
| 38 | if "git://" in d.getVar("SRC_URI") or "https://" in d.getVar("SRC_URI"): | ||
| 39 | d.setVar("S",'${WORKDIR}/git/'+d.getVar("FW_DIR")) | ||
| 40 | else: | ||
| 41 | dtsi_found = False | ||
| 42 | dtbo_found = False | ||
| 43 | bit_found = False | ||
| 44 | bin_found = False | ||
| 45 | pdi_found = False | ||
| 46 | |||
| 47 | # Required Inputs | ||
| 48 | if '.dtsi' in d.getVar("SRC_URI") or '.dts' in d.getVar("SRC_URI"): | ||
| 49 | dtsi_found = True | ||
| 50 | d.setVar("DTSI_PATH",os.path.dirname([a for a in d.getVar('SRC_URI').split() if '.dtsi' in a or '.dts' in a][0].lstrip('file://'))) | ||
| 51 | |||
| 52 | if '.dtbo' in d.getVar("SRC_URI"): | ||
| 53 | dtbo_found = True | ||
| 54 | d.setVar("DTBO_PATH",os.path.dirname([a for a in d.getVar('SRC_URI').split() if '.dtbo' in a][0].lstrip('file://'))) | ||
| 55 | |||
| 56 | if '.bit' in d.getVar("SRC_URI") and soc_family != "versal": | ||
| 57 | bit_found = True | ||
| 58 | d.setVar("BIT_PATH",os.path.dirname([a for a in d.getVar('SRC_URI').split() if '.bit' in a][0].lstrip('file://'))) | ||
| 59 | |||
| 60 | if '.bin' in d.getVar("SRC_URI") and soc_family != "versal": | ||
| 61 | bin_found = True | ||
| 62 | d.setVar("BIT_PATH",os.path.dirname([a for a in d.getVar('SRC_URI').split() if '.bin' in a][0].lstrip('file://'))) | ||
| 63 | |||
| 64 | if '.pdi' in d.getVar("SRC_URI") and soc_family == "versal": | ||
| 65 | pdi_found = True | ||
| 66 | d.setVar("PDI_PATH",os.path.dirname([a for a in d.getVar('SRC_URI').split() if '.pdi' in a][0].lstrip('file://'))) | ||
| 67 | |||
| 68 | # Check for valid combination of input files in SRC_URI | ||
| 69 | if dtsi_found or dtbo_found: | ||
| 70 | bb.debug(2, "dtsi or dtbo found in SRC_URI") | ||
| 71 | if bit_found or pdi_found or bin_found: | ||
| 72 | bb.debug(2, "bitstream or pdi found in SRC_URI") | ||
| 73 | elif bit_found and bin_found: | ||
| 74 | raise bb.parse.SkipRecipe("Both '.bit' and '.bin' file found in SRC_URI, either .bit or .bin file is supported but not both.") | ||
| 75 | else: | ||
| 76 | raise bb.parse.SkipRecipe("Need one '.bit' or one '.pdi' file added to SRC_URI ") | ||
| 77 | else: | ||
| 78 | raise bb.parse.SkipRecipe("Need one '.dtsi' or one '.dtbo' file added to SRC_URI ") | ||
| 79 | |||
| 80 | # Check for valid combination of dtsi and dts files in SRC_URI | ||
| 81 | # Following file combinations are not supported use case. | ||
| 82 | # 1. More than one '.dtsi' and zero '.dts' file. | ||
| 83 | # 2. More than one '.dts' and zero or more than one '.dtsi'file . | ||
| 84 | pattern_dts = re.compile(r'[.]+dts\b') | ||
| 85 | pattern_dtsi = re.compile(r'[.]+dtsi\b') | ||
| 86 | dts_count = len([*re.finditer(pattern_dts, d.getVar('SRC_URI'))]) | ||
| 87 | dtsi_count = len([*re.finditer(pattern_dtsi, d.getVar("SRC_URI"))]) | ||
| 88 | |||
| 89 | if dtsi_count > 1 and dts_count == 0: | ||
| 90 | raise bb.parse.SkipRecipe("Recipe has more than one '.dtsi' and zero '.dts' found, this is an unsupported use case") | ||
| 91 | elif dts_count > 1: | ||
| 92 | raise bb.parse.SkipRecipe("Recipe has more than one '.dts' and zero or more than one '.dtsi' found, this is an unsupported use case") | ||
| 93 | |||
| 94 | # Optional input | ||
| 95 | if '.json' in d.getVar("SRC_URI"): | ||
| 96 | d.setVar("JSON_PATH",os.path.dirname([a for a in d.getVar('SRC_URI').split() if '.json' in a][0].lstrip('file://'))) | ||
| 97 | |||
| 98 | if '.xclbin' in d.getVar("SRC_URI"): | ||
| 99 | d.setVar("XCL_PATH",os.path.dirname([a for a in d.getVar('SRC_URI').split() if '.xclbin' in a][0].lstrip('file://'))) | ||
| 100 | } | ||
| 101 | |||
| 102 | # Function to get dts or dtsi file count. | ||
| 103 | def get_dt_count(d, dt_ext): | ||
| 104 | import glob | ||
| 105 | dt_count = sum(1 for f in glob.iglob((d.getVar('S') + (d.getVar('DTSI_PATH')) + '/*.' + dt_ext),recursive=True) if os.path.isfile(f)) | ||
| 106 | return dt_count | ||
| 107 | |||
| 108 | # Function to search for dt firmware-name property in dts or dtsi file. | ||
| 109 | python find_firmware_file() { | ||
| 110 | import glob | ||
| 111 | pattern_fw = 'firmware-name' | ||
| 112 | search_count = 0 | ||
| 113 | for dt_files in glob.iglob((d.getVar('S') + (d.getVar('DTSI_PATH')) + '/*.dts*'),recursive=True): | ||
| 114 | with open(dt_files, "r") as f: | ||
| 115 | current_fd = f.read() | ||
| 116 | if pattern_fw in current_fd: | ||
| 117 | search_count += 1 | ||
| 118 | if search_count > 1: | ||
| 119 | bb.error("firmware-name dt property found in more than one dt files! Please fix the dts or dtsi file.") | ||
| 120 | break | ||
| 121 | else: | ||
| 122 | d.setVar('FIRMWARE_NAME_DT_FILE', os.path.basename(dt_files)) | ||
| 123 | } | ||
| 124 | |||
| 125 | do_configure[prefuncs] += "find_firmware_file" | ||
| 126 | |||
| 127 | python do_configure() { | ||
| 128 | import glob, re, shutil | ||
| 129 | soc_family = d.getVar("SOC_FAMILY") | ||
| 130 | |||
| 131 | if bb.utils.contains('MACHINE_FEATURES', 'fpga-overlay', False, True, d): | ||
| 132 | bb.warn("Using fpga-manager.bbclass requires fpga-overlay MACHINE_FEATURE to be enabled") | ||
| 133 | |||
| 134 | # Renaming firmware-name using $PN as bitstream/PDI will be renamed using | ||
| 135 | # $PN when generating the bin/pdi file. | ||
| 136 | if os.path.isfile(d.getVar('S') + (d.getVar('DTSI_PATH') or '') + '/' + d.getVar('FIRMWARE_NAME_DT_FILE')): | ||
| 137 | orig_dtsi = glob.glob(d.getVar('S')+ (d.getVar('DTSI_PATH') or '') + '/' + d.getVar('FIRMWARE_NAME_DT_FILE'))[0] | ||
| 138 | new_dtsi = d.getVar('S') + '/pl.dtsi_firmwarename' | ||
| 139 | with open(new_dtsi, 'w') as newdtsi: | ||
| 140 | with open(orig_dtsi) as olddtsi: | ||
| 141 | for line in olddtsi: | ||
| 142 | if soc_family == 'versal': | ||
| 143 | newdtsi.write(re.sub('firmware-name.*\".*\"','firmware-name = \"'+d.getVar('PN')+'.pdi\"',line)) | ||
| 144 | else: | ||
| 145 | newdtsi.write(re.sub('firmware-name.*\".*\"','firmware-name = \"'+d.getVar('PN')+'.bit.bin\"',line)) | ||
| 146 | shutil.move(new_dtsi,orig_dtsi) | ||
| 147 | } | ||
| 148 | |||
| 149 | do_compile[prefuncs] += "find_firmware_file" | ||
| 150 | |||
| 151 | python devicetree_do_compile:append() { | ||
| 152 | import glob, subprocess, shutil | ||
| 153 | soc_family = d.getVar("SOC_FAMILY") | ||
| 154 | |||
| 155 | dtbo_count = sum(1 for f in glob.iglob((d.getVar('S') + '/*.dtbo'),recursive=True) if os.path.isfile(f)) | ||
| 156 | |||
| 157 | # Skip devicetree do_compile task if input file is dtbo in SRC_URI | ||
| 158 | if not dtbo_count: | ||
| 159 | # Convert .bit to bit.bin format only if dtsi is input. | ||
| 160 | # In case of dtbo as input, bbclass doesn't know if firmware-name is .bit or | ||
| 161 | # .bit.bin format and corresponding file name. Hence we are not doing | ||
| 162 | # bit.bin conversion. | ||
| 163 | if soc_family != 'versal' and glob.glob(d.getVar('S') + '/' + d.getVar('FIRMWARE_NAME_DT_FILE')): | ||
| 164 | pn = d.getVar('PN') | ||
| 165 | biffile = pn + '.bif' | ||
| 166 | |||
| 167 | with open(biffile, 'w') as f: | ||
| 168 | f.write('all:\n{\n\t' + glob.glob(d.getVar('S')+(d.getVar('BIT_PATH') or '') + '/*.bit')[0] + '\n}') | ||
| 169 | |||
| 170 | bootgenargs = ["bootgen"] + (d.getVar("BOOTGEN_FLAGS") or "").split() | ||
| 171 | bootgenargs += ["-image", biffile, "-o", pn + ".bit.bin"] | ||
| 172 | subprocess.run(bootgenargs, check = True) | ||
| 173 | |||
| 174 | # In Zynq7k using both "-process_bitstream bin" and "-o" in bootgen flag, | ||
| 175 | # to convert bit file to bin format, "-o" option will not be effective | ||
| 176 | # and generated output file name is ${S}+${BIT_PATH}/<bit_file_name>.bit.bin | ||
| 177 | # file, Hence we need to rename this file from <bit_file_name>.bit.bin to | ||
| 178 | # ${PN}.bit.bin which matches the firmware name in dtbo and move | ||
| 179 | # ${PN}.bit.bin to ${B} directory. | ||
| 180 | if soc_family == 'zynq': | ||
| 181 | src_bitbin_file = glob.glob(d.getVar('S') + (d.getVar('BIT_PATH') or '') + '/*.bit.bin')[0] | ||
| 182 | dst_bitbin_file = d.getVar('B') + '/' + pn + '.bit.bin' | ||
| 183 | shutil.move(src_bitbin_file, dst_bitbin_file) | ||
| 184 | |||
| 185 | if not os.path.isfile(pn + ".bit.bin"): | ||
| 186 | bb.fatal("Couldn't find %s file, Enable '-log trace' in BOOTGEN_FLAGS" \ | ||
| 187 | "and check bootgen_log.txt" % (d.getVar('B') + '/' + pn + '.bit.bin')) | ||
| 188 | } | ||
| 189 | |||
| 190 | # If user inputs both dtsi and dts files then device-tree will generate dtbo | ||
| 191 | # files for each dt file, Hence to package the firmware pick the right user dt | ||
| 192 | # overlay file. | ||
| 193 | python find_user_dts_overlay_file() { | ||
| 194 | import glob | ||
| 195 | dtbo_count = sum(1 for f in glob.iglob((d.getVar('S') + '/*.dtbo'),recursive=True) if os.path.isfile(f)) | ||
| 196 | # Skip if input file is dtbo in SRC_URI | ||
| 197 | if not dtbo_count: | ||
| 198 | dts_count = get_dt_count(d, 'dts') | ||
| 199 | dtsi_count = get_dt_count(d, 'dtsi') | ||
| 200 | if dtsi_count == 1 and dts_count == 0: | ||
| 201 | dts_file =glob.glob(d.getVar('S')+ (d.getVar('DTSI_PATH') or '') + '/*.dtsi')[0] | ||
| 202 | elif dtsi_count >=0 and dts_count == 1: | ||
| 203 | dts_file = glob.glob(d.getVar('S')+ (d.getVar('DTSI_PATH') or '') + '/*.dts')[0] | ||
| 204 | |||
| 205 | d.setVar('USER_DTS_FILE', os.path.splitext(os.path.basename(dts_file))[0]) | ||
| 206 | } | ||
| 207 | |||
| 208 | do_install[prefuncs] += "find_user_dts_overlay_file" | ||
| 209 | |||
| 210 | do_install() { | ||
| 211 | install -d ${D}/${nonarch_base_libdir}/firmware/xilinx/${PN}/ | ||
| 212 | |||
| 213 | # In case of dtbo as input, dtbo will be copied from directly from ${S} | ||
| 214 | # In case of dtsi as input, dtbo will be copied from directly from ${B} | ||
| 215 | if [ `ls ${S}/*.dtbo | wc -l` -eq 1 ]; then | ||
| 216 | install -Dm 0644 ${S}/*.dtbo ${D}/${nonarch_base_libdir}/firmware/xilinx/${PN}/ | ||
| 217 | elif [ `ls ${S}/*.dtbo | wc -l` -gt 1 ]; then | ||
| 218 | bbfatal "Multiple DTBO found, use the right DTBO in SRC_URI from the following:\n$(basename -a ${S}/*.dtbo)" | ||
| 219 | elif [ -f ${B}/${USER_DTS_FILE}.dtbo ]; then | ||
| 220 | install -Dm 0644 ${B}/${USER_DTS_FILE}.dtbo ${D}/${nonarch_base_libdir}/firmware/xilinx/${PN}/${PN}.dtbo | ||
| 221 | else | ||
| 222 | bbfatal "A dtbo ending '.dtbo' expected but not found" | ||
| 223 | fi | ||
| 224 | |||
| 225 | if [ "${SOC_FAMILY}" == "versal" ]; then | ||
| 226 | # In case of dtbo as input, pdi will be copied from directly from ${S} | ||
| 227 | # without renaming the pdi name to ${PN}.pdi | ||
| 228 | if [ `ls ${S}/*.pdi | wc -l` -eq 1 ] && [ `ls ${S}/*.dtbo | wc -l` -eq 1 ]; then | ||
| 229 | install -Dm 0644 ${S}/*.pdi ${D}/${nonarch_base_libdir}/firmware/xilinx/${PN}/ | ||
| 230 | elif [ `ls ${S}/*.pdi | wc -l` -gt 1 ]; then | ||
| 231 | bbfatal "Multiple PDI found, use the right PDI in SRC_URI from the following:\n$(basename -a ${S}/*.pdi)" | ||
| 232 | elif [ `ls ${S}/*.pdi | wc -l` -eq 1 ] && [ -f ${B}/${USER_DTS_FILE}.dtbo ]; then | ||
| 233 | install -Dm 0644 ${S}/*.pdi ${D}/${nonarch_base_libdir}/firmware/xilinx/${PN}/${PN}.pdi | ||
| 234 | else | ||
| 235 | bbfatal "A PDI file with '.pdi' expected but not found" | ||
| 236 | fi | ||
| 237 | else | ||
| 238 | # In case of dtbo as input, .bit or .bin will be copied from directly | ||
| 239 | # from ${S} without renaming the .bit/.bin name to ${PN}.bit/${PN}.bin | ||
| 240 | # if more than one .bit/.bin file is found then fail the task. | ||
| 241 | if [ `ls ${S}/*.bit | wc -l` -gt 1 ]; then | ||
| 242 | bbfatal "Multiple .bit found, use the right .bit in SRC_URI from the following:\n$(basename -a ${S}/*.bit)" | ||
| 243 | elif [ `ls ${S}/*.bin | wc -l` -gt 1 ]; then | ||
| 244 | bbfatal "Multiple .bin found, use the right .bin in SRC_URI from the following:\n$(basename -a ${S}/*.bin)" | ||
| 245 | elif [ `ls ${S}/*.bit | wc -l` -eq 1 ] && [ `ls ${S}/*.dtbo | wc -l` -eq 1 ]; then | ||
| 246 | install -Dm 0644 ${S}/*.bit ${D}/${nonarch_base_libdir}/firmware/xilinx/${PN}/ | ||
| 247 | elif [ `ls ${S}/*.bin | wc -l` -eq 1 ] && [ `ls ${S}/*.dtbo | wc -l` -eq 1 ]; then | ||
| 248 | install -Dm 0644 ${S}/*.bin ${D}/${nonarch_base_libdir}/firmware/xilinx/${PN}/ | ||
| 249 | elif [ -f ${B}/${PN}.bit.bin ] && [ -f ${B}/${USER_DTS_FILE}.dtbo ]; then | ||
| 250 | install -Dm 0644 ${B}/${PN}.bit.bin ${D}/${nonarch_base_libdir}/firmware/xilinx/${PN}/${PN}.bit.bin | ||
| 251 | else | ||
| 252 | bbfatal "A bitstream file with '.bit' or '.bin' expected but not found" | ||
| 253 | fi | ||
| 254 | fi | ||
| 255 | |||
| 256 | if ls ${S}/${XCL_PATH}/*.xclbin >/dev/null 2>&1; then | ||
| 257 | install -Dm 0644 ${S}/${XCL_PATH}/*.xclbin ${D}/${nonarch_base_libdir}/firmware/xilinx/${PN}/${PN}.xclbin | ||
| 258 | fi | ||
| 259 | |||
| 260 | if [ -f ${S}/${JSON_PATH}/shell.json ] || [ -f ${S}/${JSON_PATH}/accel.json ]; then | ||
| 261 | install -Dm 0644 ${S}/${JSON_PATH}/*.json ${D}/${nonarch_base_libdir}/firmware/xilinx/${PN}/ | ||
| 262 | fi | ||
| 263 | } | ||
| 264 | |||
| 265 | do_deploy[noexec] = "1" | ||
| 266 | |||
| 267 | FILES:${PN} += "${nonarch_base_libdir}/firmware/xilinx/${PN}" | ||
diff --git a/meta-xilinx-core/classes/fpgamanager_custom.bbclass b/meta-xilinx-core/classes/fpgamanager_custom.bbclass index e5255783..8c8997a1 100644 --- a/meta-xilinx-core/classes/fpgamanager_custom.bbclass +++ b/meta-xilinx-core/classes/fpgamanager_custom.bbclass | |||
| @@ -1,177 +1,24 @@ | |||
| 1 | # This bbclass is inherited by flat, DFx Static and DFx RP firmware recipes. | 1 | # This class inherits dfx_user_dts.bbclass for below use cases. |
| 2 | # fpgamanager_custom.bbclass expects user to generate pl dtsi for flat, DFx Static | 2 | # Zynq-7000 and ZynqMP: Full bitstream loading. |
| 3 | # and DFx RP xsa outside of yocto. | 3 | # ZynqMP: DFx Static and Partial bitstream loading. |
| 4 | 4 | # Versal: DFx Static and Parial pdi loading. | |
| 5 | inherit devicetree | 5 | # Versal: Full PDI loading. |
| 6 | 6 | ||
| 7 | DEPENDS = "dtc-native bootgen-native" | 7 | inherit dfx_user_dts |
| 8 | 8 | ||
| 9 | # recipes that inherit from this class need to use an appropriate machine | 9 | python fpgamanager_warn_msg () { |
| 10 | # override for COMPATIBLE_MACHINE to build successfully; don't allow building | 10 | if not d.getVar("FPGAMANAGER_NO_WARN"): |
| 11 | # for microblaze MACHINE | 11 | arch = d.getVar('SOC_FAMILY') |
| 12 | COMPATIBLE_MACHINE ?= "^$" | 12 | pn = d.getVar('PN') |
| 13 | COMPATIBLE_MACHINE:microblaze = "^$" | 13 | warn_msg = 'Users should start using dfx_user_dts bbclass for ' |
| 14 | 14 | if arch == 'zynq': | |
| 15 | PACKAGE_ARCH = "${MACHINE_ARCH}" | 15 | warn_msg += 'Zynq-7000 Full bitstream loading use case.' |
| 16 | 16 | elif arch == 'zynqmp': | |
| 17 | PROVIDES = "" | 17 | warn_msg += 'ZynqMP Full or DFx Static or DFx Partial bitstream loading use case.' |
| 18 | 18 | elif arch == 'versal': | |
| 19 | do_fetch[cleandirs] = "${B}" | 19 | warn_msg += 'Versal DFx Static or DFx Partial or Full PDI loading use case.' |
| 20 | 20 | ||
| 21 | DT_PADDING_SIZE = "0x1000" | 21 | bb.warn("Recipe %s has inherited fpgamanager_custom bbclass which will be deprecated in 2024.1 release. \n%s" % (pn, warn_msg)) |
| 22 | BOOTGEN_FLAGS ?= " -arch ${SOC_FAMILY} -w ${@bb.utils.contains('SOC_FAMILY','zynqmp','','-process_bitstream bin',d)}" | ||
| 23 | |||
| 24 | S ?= "${WORKDIR}" | ||
| 25 | FW_DIR ?= "" | ||
| 26 | DTSI_PATH ?= "" | ||
| 27 | DTBO_PATH ?= "" | ||
| 28 | DT_FILES_PATH = "${S}/${DTSI_PATH}" | ||
| 29 | |||
| 30 | python() { | ||
| 31 | soc_family = d.getVar("SOC_FAMILY") | ||
| 32 | if "git://" in d.getVar("SRC_URI") or "https://" in d.getVar("SRC_URI"): | ||
| 33 | d.setVar("S",'${WORKDIR}/git/'+d.getVar("FW_DIR")) | ||
| 34 | else: | ||
| 35 | dtsi_found = False | ||
| 36 | dtbo_found = False | ||
| 37 | bit_found = False | ||
| 38 | pdi_found = False | ||
| 39 | |||
| 40 | # Required Inputs | ||
| 41 | if '.dtsi' in d.getVar("SRC_URI"): | ||
| 42 | dtsi_found = True | ||
| 43 | d.setVar("DTSI_PATH",os.path.dirname([a for a in d.getVar('SRC_URI').split() if '.dtsi' in a][0].lstrip('file://'))) | ||
| 44 | |||
| 45 | if '.dtbo' in d.getVar("SRC_URI"): | ||
| 46 | dtbo_found = True | ||
| 47 | d.setVar("DTBO_PATH",os.path.dirname([a for a in d.getVar('SRC_URI').split() if '.dtbo' in a][0].lstrip('file://'))) | ||
| 48 | |||
| 49 | if '.bit' in d.getVar("SRC_URI") and soc_family != "versal": | ||
| 50 | bit_found = True | ||
| 51 | d.setVar("BIT_PATH",os.path.dirname([a for a in d.getVar('SRC_URI').split() if '.bit' in a][0].lstrip('file://'))) | ||
| 52 | |||
| 53 | if '.pdi' in d.getVar("SRC_URI") and soc_family == "versal": | ||
| 54 | pdi_found = True | ||
| 55 | d.setVar("PDI_PATH",os.path.dirname([a for a in d.getVar('SRC_URI').split() if '.pdi' in a][0].lstrip('file://'))) | ||
| 56 | |||
| 57 | # Check for valid combination of input files in SRC_URI | ||
| 58 | if dtsi_found or dtbo_found: | ||
| 59 | bb.debug(2, "dtsi or dtbo found in SRC_URI") | ||
| 60 | if bit_found or pdi_found: | ||
| 61 | bb.debug(2, "bitstream or pdi found in SRC_URI") | ||
| 62 | else: | ||
| 63 | raise bb.parse.SkipRecipe("Need one '.bit' or one '.pdi' file added to SRC_URI ") | ||
| 64 | else: | ||
| 65 | raise bb.parse.SkipRecipe("Need one '.dtsi' or one '.dtbo' file added to SRC_URI ") | ||
| 66 | |||
| 67 | # Optional input | ||
| 68 | if '.json' in d.getVar("SRC_URI"): | ||
| 69 | d.setVar("JSON_PATH",os.path.dirname([a for a in d.getVar('SRC_URI').split() if '.json' in a][0].lstrip('file://'))) | ||
| 70 | |||
| 71 | if '.xclbin' in d.getVar("SRC_URI"): | ||
| 72 | d.setVar("XCL_PATH",os.path.dirname([a for a in d.getVar('SRC_URI').split() if '.xclbin' in a][0].lstrip('file://'))) | ||
| 73 | } | 22 | } |
| 74 | python do_configure() { | ||
| 75 | import glob, re, shutil | ||
| 76 | soc_family = d.getVar("SOC_FAMILY") | ||
| 77 | |||
| 78 | if bb.utils.contains('MACHINE_FEATURES', 'fpga-overlay', False, True, d): | ||
| 79 | bb.warn("Using fpga-manager.bbclass requires fpga-overlay MACHINE_FEATURE to be enabled") | ||
| 80 | |||
| 81 | # Renaming firmware-name using $PN as bitstream/PDI will be renamed using | ||
| 82 | # $PN when generating the bin/pdi file. | ||
| 83 | if '.dtsi' in d.getVar("SRC_URI"): | ||
| 84 | orig_dtsi = glob.glob(d.getVar('S')+ (d.getVar('DTSI_PATH') or '') + '/*.dtsi')[0] | ||
| 85 | new_dtsi = d.getVar('S') + '/pl.dtsi_firmwarename' | ||
| 86 | with open(new_dtsi, 'w') as newdtsi: | ||
| 87 | with open(orig_dtsi) as olddtsi: | ||
| 88 | for line in olddtsi: | ||
| 89 | if soc_family == 'versal': | ||
| 90 | newdtsi.write(re.sub('firmware-name.*\".*\"','firmware-name = \"'+d.getVar('PN')+'.pdi\"',line)) | ||
| 91 | else: | ||
| 92 | newdtsi.write(re.sub('firmware-name.*\".*\"','firmware-name = \"'+d.getVar('PN')+'.bit.bin\"',line)) | ||
| 93 | shutil.move(new_dtsi,orig_dtsi) | ||
| 94 | } | ||
| 95 | |||
| 96 | python devicetree_do_compile:append() { | ||
| 97 | import glob, subprocess, shutil | ||
| 98 | soc_family = d.getVar("SOC_FAMILY") | ||
| 99 | |||
| 100 | # Convert .bit to bit.bin format only if dtsi is input. | ||
| 101 | # In case of dtbo as input, bbclass doesn't know if firmware-name is .bit or | ||
| 102 | # .bit.bin format and corresponding file name. Hence we are not doing | ||
| 103 | # bit.bin conversion. | ||
| 104 | if soc_family != 'versal' and glob.glob(d.getVar('S') + '/*.dtsi'): | ||
| 105 | pn = d.getVar('PN') | ||
| 106 | biffile = pn + '.bif' | ||
| 107 | |||
| 108 | with open(biffile, 'w') as f: | ||
| 109 | f.write('all:\n{\n\t' + glob.glob(d.getVar('S')+(d.getVar('BIT_PATH') or '') + '/*.bit')[0] + '\n}') | ||
| 110 | |||
| 111 | bootgenargs = ["bootgen"] + (d.getVar("BOOTGEN_FLAGS") or "").split() | ||
| 112 | bootgenargs += ["-image", biffile, "-o", pn + ".bit.bin"] | ||
| 113 | subprocess.run(bootgenargs, check = True) | ||
| 114 | |||
| 115 | # In Zynq7k using both "-process_bitstream bin" and "-o" in bootgen flag, | ||
| 116 | # to convert bit file to bin format, "-o" option will not be effective | ||
| 117 | # and generated output file name is ${S}+${BIT_PATH}/<bit_file_name>.bit.bin | ||
| 118 | # file, Hence we need to rename this file from <bit_file_name>.bit.bin to | ||
| 119 | # ${PN}.bit.bin which matches the firmware name in dtbo and move | ||
| 120 | # ${PN}.bit.bin to ${B} directory. | ||
| 121 | if soc_family == 'zynq': | ||
| 122 | src_bitbin_file = glob.glob(d.getVar('S') + (d.getVar('BIT_PATH') or '') + '/*.bit.bin')[0] | ||
| 123 | dst_bitbin_file = d.getVar('B') + '/' + pn + '.bit.bin' | ||
| 124 | shutil.move(src_bitbin_file, dst_bitbin_file) | ||
| 125 | |||
| 126 | if not os.path.isfile(pn + ".bit.bin"): | ||
| 127 | bb.fatal("Couldn't find %s file, Enable '-log trace' in BOOTGEN_FLAGS" \ | ||
| 128 | "and check bootgen_log.txt" % (d.getVar('B') + '/' + pn + '.bit.bin')) | ||
| 129 | } | ||
| 130 | |||
| 131 | do_install() { | ||
| 132 | install -d ${D}/${nonarch_base_libdir}/firmware/xilinx/${PN}/ | ||
| 133 | |||
| 134 | # In case of dtbo as input, dtbo will be copied from directly from ${S} | ||
| 135 | # In case of dtsi as input, dtbo will be copied from directly from ${B} | ||
| 136 | if [ -f ${S}/*.dtbo ]; then | ||
| 137 | install -Dm 0644 ${S}/*.dtbo ${D}/${nonarch_base_libdir}/firmware/xilinx/${PN}/ | ||
| 138 | elif [ -f ${B}/*.dtbo ]; then | ||
| 139 | install -Dm 0644 ${B}/*.dtbo ${D}/${nonarch_base_libdir}/firmware/xilinx/${PN}/${PN}.dtbo | ||
| 140 | else | ||
| 141 | bbfatal "A dtbo ending '.dtbo' expected but not found" | ||
| 142 | fi | ||
| 143 | |||
| 144 | if [ "${SOC_FAMILY}" == "versal" ]; then | ||
| 145 | # In case of dtbo as input, pdi will be copied from directly from ${S} | ||
| 146 | # without renaming the pdi name to ${PN}.pdi | ||
| 147 | if [ -f ${S}/*.pdi ] && [ -f ${S}/*.dtbo ]; then | ||
| 148 | install -Dm 0644 ${S}/*.pdi ${D}/${nonarch_base_libdir}/firmware/xilinx/${PN}/ | ||
| 149 | elif [ -f ${S}/*.pdi ] && [ -f ${B}/*.dtbo ]; then | ||
| 150 | install -Dm 0644 ${S}/*.pdi ${D}/${nonarch_base_libdir}/firmware/xilinx/${PN}/${PN}.pdi | ||
| 151 | else | ||
| 152 | bbfatal "A PDI file with '.pdi' expected but not found" | ||
| 153 | fi | ||
| 154 | else | ||
| 155 | # In case of dtbo as input, .bit or .bit.in will be copied from directly | ||
| 156 | # from ${S} without renaming the .bit name to ${PN}.bit.bin | ||
| 157 | if [ -f ${S}/*.bit* ] && [ -f ${S}/*.dtbo ]; then | ||
| 158 | install -Dm 0644 ${S}/*.bit* ${D}/${nonarch_base_libdir}/firmware/xilinx/${PN}/ | ||
| 159 | elif [ -f ${B}/${PN}.bit.bin ] && [ -f ${B}/*.dtbo ]; then | ||
| 160 | install -Dm 0644 ${B}/${PN}.bit.bin ${D}/${nonarch_base_libdir}/firmware/xilinx/${PN}/${PN}.bit.bin | ||
| 161 | else | ||
| 162 | bbfatal "A bitstream file with '.bit' or '.bit.bin' expected but not found" | ||
| 163 | fi | ||
| 164 | fi | ||
| 165 | |||
| 166 | if ls ${S}/${XCL_PATH}/*.xclbin >/dev/null 2>&1; then | ||
| 167 | install -Dm 0644 ${S}/${XCL_PATH}/*.xclbin ${D}/${nonarch_base_libdir}/firmware/xilinx/${PN}/${PN}.xclbin | ||
| 168 | fi | ||
| 169 | |||
| 170 | if [ -f ${S}/${JSON_PATH}/shell.json ] || [ -f ${S}/${JSON_PATH}/accel.json ]; then | ||
| 171 | install -Dm 0644 ${S}/${JSON_PATH}/*.json ${D}/${nonarch_base_libdir}/firmware/xilinx/${PN}/ | ||
| 172 | fi | ||
| 173 | } | ||
| 174 | |||
| 175 | do_deploy[noexec] = "1" | ||
| 176 | 23 | ||
| 177 | FILES:${PN} += "${nonarch_base_libdir}/firmware/xilinx/${PN}" | 24 | do_install[postfuncs] += "fpgamanager_warn_msg" \ No newline at end of file |
diff --git a/meta-xilinx-core/conf/layer.conf b/meta-xilinx-core/conf/layer.conf index 740affa0..fccea795 100644 --- a/meta-xilinx-core/conf/layer.conf +++ b/meta-xilinx-core/conf/layer.conf | |||
| @@ -28,6 +28,7 @@ LAYERRECOMMENDS_xilinx = "openembedded-layer" | |||
| 28 | LAYERSERIES_COMPAT_xilinx = "mickledore" | 28 | LAYERSERIES_COMPAT_xilinx = "mickledore" |
| 29 | 29 | ||
| 30 | SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += " \ | 30 | SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += " \ |
| 31 | *->xrt \ | ||
| 31 | *->zocl \ | 32 | *->zocl \ |
| 32 | *->cairo \ | 33 | *->cairo \ |
| 33 | *->libepoxy \ | 34 | *->libepoxy \ |
| @@ -41,26 +42,25 @@ SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += " \ | |||
| 41 | *->xserver-xorg \ | 42 | *->xserver-xorg \ |
| 42 | " | 43 | " |
| 43 | 44 | ||
| 44 | XILINX_RELEASE_VERSION ??= "v2023.1" | 45 | XILINX_RELEASE_VERSION ??= "v2023.2" |
| 45 | 46 | ||
| 46 | BUILDCFG_VARS:append = " SOC_VARIANT XILINX_RELEASE_VERSION" | 47 | BUILDCFG_VARS:append = " SOC_VARIANT XILINX_RELEASE_VERSION" |
| 47 | 48 | ||
| 48 | XILINX_QEMU_VERSION[v2022.1] = "v7.1.0-xilinx-v2022.1%" | 49 | XILINX_QEMU_VERSION[v2022.1] = "v7.1.0-xilinx-v2022.1%" |
| 49 | XILINX_QEMU_VERSION[v2022.2] = "v7.1.0-xilinx-v2022.2%" | 50 | XILINX_QEMU_VERSION[v2022.2] = "v7.1.0-xilinx-v2022.2%" |
| 50 | XILINX_QEMU_VERSION[v2023.1] = "v7.1.0-xilinx-v2023.1%" | 51 | XILINX_QEMU_VERSION[v2023.1] = "v7.1.0-xilinx-v2023.1%" |
| 52 | XILINX_QEMU_VERSION[v2023.2] = "v7.1.0-xilinx-v2023.2%" | ||
| 51 | PREFERRED_VERSION_qemu-xilinx ?= "${@d.getVarFlag('XILINX_QEMU_VERSION', d.getVar('XILINX_RELEASE_VERSION')) or 'undefined'}" | 53 | PREFERRED_VERSION_qemu-xilinx ?= "${@d.getVarFlag('XILINX_QEMU_VERSION', d.getVar('XILINX_RELEASE_VERSION')) or 'undefined'}" |
| 52 | PREFERRED_VERSION_qemu-xilinx-native ?= "${@d.getVarFlag('XILINX_QEMU_VERSION', d.getVar('XILINX_RELEASE_VERSION')) or 'undefined'}" | 54 | PREFERRED_VERSION_qemu-xilinx-native ?= "${@d.getVarFlag('XILINX_QEMU_VERSION', d.getVar('XILINX_RELEASE_VERSION')) or 'undefined'}" |
| 53 | PREFERRED_VERSION_qemu-xilinx-system-native ?= "${@d.getVarFlag('XILINX_QEMU_VERSION', d.getVar('XILINX_RELEASE_VERSION')) or 'undefined'}" | 55 | PREFERRED_VERSION_qemu-xilinx-system-native ?= "${@d.getVarFlag('XILINX_QEMU_VERSION', d.getVar('XILINX_RELEASE_VERSION')) or 'undefined'}" |
| 54 | PREFERRED_VERSION_qemu-devicetrees ?= "xilinx-${XILINX_RELEASE_VERSION}%" | 56 | PREFERRED_VERSION_qemu-devicetrees ?= "xilinx-${XILINX_RELEASE_VERSION}%" |
| 55 | 57 | ||
| 56 | XILINX_ATF_VERSION[v2022.1] = "2.6-xilinx-v2022.1%" | ||
| 57 | XILINX_ATF_VERSION[v2022.2] = "2.6-xilinx-v2022.2%" | ||
| 58 | XILINX_ATF_VERSION[v2023.1] = "2.8-xilinx-v2023.1%" | 58 | XILINX_ATF_VERSION[v2023.1] = "2.8-xilinx-v2023.1%" |
| 59 | XILINX_ATF_VERSION[v2023.2] = "2.8-xilinx-v2023.2%" | ||
| 59 | PREFERRED_VERSION_arm-trusted-firmware ?= "${@d.getVarFlag('XILINX_ATF_VERSION', d.getVar('XILINX_RELEASE_VERSION')) or 'undefined'}" | 60 | PREFERRED_VERSION_arm-trusted-firmware ?= "${@d.getVarFlag('XILINX_ATF_VERSION', d.getVar('XILINX_RELEASE_VERSION')) or 'undefined'}" |
| 60 | 61 | ||
| 61 | XILINX_UBOOT_VERSION[v2022.1] = "v2021.01-xilinx-v2022.1%" | ||
| 62 | XILINX_UBOOT_VERSION[v2022.2] = "v2021.01-xilinx-v2022.2%" | ||
| 63 | XILINX_UBOOT_VERSION[v2023.1] = "v2023.01-xilinx-v2023.1%" | 62 | XILINX_UBOOT_VERSION[v2023.1] = "v2023.01-xilinx-v2023.1%" |
| 63 | XILINX_UBOOT_VERSION[v2023.2] = "v2023.01-xilinx-v2023.2%" | ||
| 64 | 64 | ||
| 65 | PREFERRED_VERSION_u-boot-xlnx ?= "${@d.getVarFlag('XILINX_UBOOT_VERSION', d.getVar('XILINX_RELEASE_VERSION')) or 'undefined'}" | 65 | PREFERRED_VERSION_u-boot-xlnx ?= "${@d.getVarFlag('XILINX_UBOOT_VERSION', d.getVar('XILINX_RELEASE_VERSION')) or 'undefined'}" |
| 66 | PREFERRED_VERSION_u-boot-tools-xlnx ?= "${@d.getVarFlag('XILINX_UBOOT_VERSION', d.getVar('XILINX_RELEASE_VERSION')) or 'undefined'}" | 66 | PREFERRED_VERSION_u-boot-tools-xlnx ?= "${@d.getVarFlag('XILINX_UBOOT_VERSION', d.getVar('XILINX_RELEASE_VERSION')) or 'undefined'}" |
| @@ -68,8 +68,11 @@ PREFERRED_VERSION_u-boot-tools-xlnx ?= "${@d.getVarFlag('XILINX_UBOOT_VERSION', | |||
| 68 | XILINX_LINUX_VERSION[v2022.1] = "5.15.19-xilinx-v2022.1%" | 68 | XILINX_LINUX_VERSION[v2022.1] = "5.15.19-xilinx-v2022.1%" |
| 69 | XILINX_LINUX_VERSION[v2022.2] = "5.15.36-xilinx-v2022.2%" | 69 | XILINX_LINUX_VERSION[v2022.2] = "5.15.36-xilinx-v2022.2%" |
| 70 | XILINX_LINUX_VERSION[v2023.1] = "6.1.30-xilinx-v2023.1%" | 70 | XILINX_LINUX_VERSION[v2023.1] = "6.1.30-xilinx-v2023.1%" |
| 71 | XILINX_LINUX_VERSION[v2023.2] = "6.1.30-xilinx-v2023.2%" | ||
| 71 | PREFERRED_VERSION_linux-xlnx ?= "${@d.getVarFlag('XILINX_LINUX_VERSION', d.getVar('XILINX_RELEASE_VERSION')) or 'undefined'}" | 72 | PREFERRED_VERSION_linux-xlnx ?= "${@d.getVarFlag('XILINX_LINUX_VERSION', d.getVar('XILINX_RELEASE_VERSION')) or 'undefined'}" |
| 72 | 73 | ||
| 73 | # Add support to eSDK for gen-machine-conf if it exists | 74 | # Add support to eSDK for gen-machine-conf if it exists |
| 74 | PLNX_SCRIPTS_PATH = "${LAYERDIR}/gen-machine-conf/gen-machine-scripts" | 75 | PLNX_SCRIPTS_PATH = "${LAYERDIR}/gen-machine-conf/gen-machine-scripts" |
| 76 | BB_HASHEXCLUDE_COMMON:append = " PLNX_SCRIPTS_PATH" | ||
| 77 | |||
| 75 | IMAGE_CLASSES += "gen-machine-conf" | 78 | IMAGE_CLASSES += "gen-machine-conf" |
diff --git a/meta-xilinx-core/conf/machine/README b/meta-xilinx-core/conf/machine/README index 5361dc81..de8cf58d 100644 --- a/meta-xilinx-core/conf/machine/README +++ b/meta-xilinx-core/conf/machine/README | |||
| @@ -142,20 +142,83 @@ you should not use :<machine> override values for the same reason. Note, | |||
| 142 | not every machine file will have all of these variables, only the ones | 142 | not every machine file will have all of these variables, only the ones |
| 143 | you need to override should be set. | 143 | you need to override should be set. |
| 144 | 144 | ||
| 145 | Variables set before required inclusion file: | ||
| 146 | Variables that changes based on hw design or board specific requirement must be | ||
| 147 | set before required inclusion file else pre-expansion value defined in generic | ||
| 148 | machine conf will be set. This way user can also override these variables from | ||
| 149 | local.conf | ||
| 150 | |||
| 145 | System wide setting: | 151 | System wide setting: |
| 146 | TUNE_FEATURES:tune-<tune> - Specific tune features | 152 | TUNE_FEATURES:tune-<tune> - Specific tune features |
| 147 | 153 | ||
| 148 | external-hdf recipe from meta-xilinx-tools: | 154 | external-hdf recipe from meta-xilinx-tools: |
| 149 | HDF_MACHINE - Used by the recipe to find the correct XSA | 155 | HDF_MACHINE - Machine to load from reference defign xsa using hdf-examples recipe |
| 150 | HDF_EXT - only xsa is supported, legacy variable | 156 | HDF_EXT - Only ".xsa" externsion is supported, legacy variable. |
| 151 | HDF_BASE - protocol if not using the default external-hdf repository | 157 | HDF_BASE - Download protocol (file://, git://, http:// or https://) protocol if |
| 152 | HDF_PATH - path to the repository or XSA file | 158 | not using the default external-hdf repository. |
| 159 | HDF_PATH - Path to the repository or XSA file | ||
| 160 | |||
| 161 | fs-boot recipe from meta-xilinx-tools: | ||
| 162 | YAML_SERIAL_CONSOLE_STDIN:pn-fs-boot - YAML based uart stdin configuration for | ||
| 163 | MicroBlaze. Example: axi_uartlite_0 or axi_uart16550_0 etc,. | ||
| 164 | YAML_SERIAL_CONSOLE_STDOUT:pn-fs-boot - YAML based uart stdout configuration for | ||
| 165 | MicroBlaze. Example: axi_uartlite_0 or axi_uart16550_0 etc,. | ||
| 166 | YAML_MAIN_MEMORY_CONFIG:pn-fs-boot - YAML based DDR4 or MIG configuration for | ||
| 167 | MicroBlaze. Example: DDR4_0 or MIG_7SERIES_0 etc,. | ||
| 168 | YAML_FLASH_MEMORY_CONFIG:pn-fs-boot - YAML based flash configuration for | ||
| 169 | MicroBlaze. Example: axi_emc_0 or axi_quad_spi_0 etc,. | ||
| 170 | XSCTH_PROC:pn-fs-boot - Processor IP used while configuring embeddedsw compoments. | ||
| 171 | Example: microblaze_0 or microblaze_1 etc,. | ||
| 172 | |||
| 173 | fsbl-firmware recipe from meta-xilinx-tools: | ||
| 174 | YAML_SERIAL_CONSOLE_STDIN:pn-fsbl-firmware - YAML based FSBL uart stdin configuration | ||
| 175 | for Zynq-7000 and ZynqMP devices. | ||
| 176 | YAML_SERIAL_CONSOLE_STDOUT:pn-fsbl-firmware - YAML based FSBL uart stdout configuration | ||
| 177 | for Zynq-7000 and ZynqMP devices. | ||
| 178 | |||
| 179 | pmu-firmware recipe from meta-xilinx-tools: | ||
| 180 | YAML_SERIAL_CONSOLE_STDIN:pn-pmu-firmware - YAML based PMUFW uart stdin configuration | ||
| 181 | for ZynqMP devices. | ||
| 182 | YAML_SERIAL_CONSOLE_STDOUT:pn-pmu-firmware - YAML based PMUFW uart stdout configuration | ||
| 183 | for ZynqMP devices. | ||
| 184 | |||
| 185 | plm-firmware recipe from meta-xilinx-tools: | ||
| 186 | YAML_SERIAL_CONSOLE_STDIN:pn-plm-firmware - YAML based PLM uart stdin configuration | ||
| 187 | for Versal devices. | ||
| 188 | YAML_SERIAL_CONSOLE_STDOUT:pn-fplmsbl-firmware - YAML based PLM uart stdout | ||
| 189 | configuration for Versal devices. | ||
| 153 | 190 | ||
| 154 | device-tree recipe from meta-xilinx-tools: | 191 | device-tree recipe from meta-xilinx-tools: |
| 155 | YAML_DT_BOARD_FLAGS - flags used for dtgen | 192 | YAML_CONSOLE_DEVICE_CONFIG:pn-device-tree - YAML based uart console configuration |
| 193 | for all device families. Example: axi_uartlite_0 or psu_uart_0 etc,. | ||
| 194 | YAML_MAIN_MEMORY_CONFIG:pn-device-tree - YAML based memory configuration for all | ||
| 195 | device families. Example: DDR4_0 or PS7_DDR_0 or PSU_DDR_0 etc,. | ||
| 196 | XSCTH_PROC:pn-device-tree - Processor IP used while configuring device-tree | ||
| 197 | compoments. Example: microblaze_0 or microblaze_1 etc,. | ||
| 198 | YAML_DT_BOARD_FLAGS:pn-device-tree - YAML based configuration for setting eval | ||
| 199 | board specific dtsi files available in DTG repo. | ||
| 200 | |||
| 201 | arm-trusted-firmware recipe from meta-xilinx-core: | ||
| 202 | ATF_CONSOLE - Uart console configuration for all aarch64 device families. | ||
| 203 | Example: pl011 or cadence or cadence1 etc,. | ||
| 204 | TFA_BL33_LOAD - BL33 preloadded base address to EXTRA_OEMAKE for aarch64. | ||
| 156 | 205 | ||
| 157 | u-boot-xlnx recipe from meta-xilinx-core: | 206 | u-boot-xlnx recipe from meta-xilinx-core: |
| 158 | UBOOT_MACHINE - Name of the defconfig to use | 207 | UBOOT_MACHINE - Name of the defconfig to use |
| 159 | HAS_PLATFORM_INIT - List of defconfig files available for u-boot | 208 | HAS_PLATFORM_INIT - List of defconfig files available for u-boot only for SPL boot. |
| 209 | |||
| 210 | u-boot-xlnx-scr recipe from meta-xilinx-core: | ||
| 211 | DDR_BASEADDR - Base address for DDR used for loading the images from u-boot env. | ||
| 212 | SKIP_APPEND_BASEADDR - Skip appending ${DDR_BASEADDR} for image offsets. | ||
| 213 | |||
| 214 | Varibable set after required inclusion file: | ||
| 215 | Varibables that does not intend to change must be set before required inclusion | ||
| 216 | file. | ||
| 217 | |||
| 218 | external-hdf recipe from meta-xilinx-tools: | ||
| 219 | HDF_MACHINE - Used by the recipe to find the correct XSA | ||
| 220 | HDF_EXT - only xsa is supported, legacy variable | ||
| 221 | HDF_BASE - protocol if not using the default external-hdf repository | ||
| 222 | HDF_PATH - path to the repository or XSA file | ||
| 160 | 223 | ||
| 161 | ...and more... | 224 | ...and more... |
diff --git a/meta-xilinx-core/conf/machine/include/machine-xilinx-default.inc b/meta-xilinx-core/conf/machine/include/machine-xilinx-default.inc index 4a4384a1..e99b1f0e 100644 --- a/meta-xilinx-core/conf/machine/include/machine-xilinx-default.inc +++ b/meta-xilinx-core/conf/machine/include/machine-xilinx-default.inc | |||
| @@ -64,33 +64,38 @@ FIT_CONF_DEFAULT_DTB ?= "${@os.path.basename(d.getVar('CONFIG_DTFILE')).replace( | |||
| 64 | # Define to avoid parsse errors below if undefind elsewhere | 64 | # Define to avoid parsse errors below if undefind elsewhere |
| 65 | INITRAMFS_IMAGE ??= "" | 65 | INITRAMFS_IMAGE ??= "" |
| 66 | 66 | ||
| 67 | # IMAGE_BOOT_FILES is a whitespace-separated list of entries specifying files to be installed into the boot partition | ||
| 68 | # entries can change the installed filename by specifying the destination name after a semicolon (e.g. u-boot.img;uboot) | ||
| 69 | # make sure to use the installed filename when scanning IMAGE_BOOT_FILES | ||
| 70 | IMAGE_BOOT_FILES_INSTALLED = "${@' '.join([x.split(';')[-1] for x in d.getVar('IMAGE_BOOT_FILES').split()])}" | ||
| 71 | |||
| 67 | # Automatically add WKS_FILE_DEPENDS based on the configuration | 72 | # Automatically add WKS_FILE_DEPENDS based on the configuration |
| 68 | # Initial value from oe-core/meta/classes-recipe/image_types_wic.bbclass | 73 | # Initial value from oe-core/meta/classes-recipe/image_types_wic.bbclass |
| 69 | WKS_FILE_DEPENDS ?= "${WKS_FILE_DEPENDS_DEFAULT} ${WKS_FILE_DEPENDS_BOOTLOADERS}" | 74 | WKS_FILE_DEPENDS ?= "${WKS_FILE_DEPENDS_DEFAULT} ${WKS_FILE_DEPENDS_BOOTLOADERS}" |
| 70 | WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'boot.bin', ' virtual/boot-bin', '', d)}" | 75 | WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'boot.bin', ' virtual/boot-bin', '', d)}" |
| 71 | WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'system.dtb', ' virtual/dtb', '', d)}" | 76 | WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'system.dtb', ' virtual/dtb', '', d)}" |
| 72 | WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'boot.scr', ' u-boot-xlnx-scr', '', d)}" | 77 | WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'boot.scr', ' u-boot-xlnx-scr', '', d)}" |
| 73 | WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'uEnv.txt', ' u-boot-xlnx-uenv', '', d)}" | 78 | WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'uEnv.txt', ' u-boot-xlnx-uenv', '', d)}" |
| 74 | WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'atf-uboot.ub', ' arm-trusted-firmware', '', d)}" | 79 | WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'atf-uboot.ub', ' arm-trusted-firmware', '', d)}" |
| 75 | WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'Image', ' virtual/kernel', '', d)}" | 80 | WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'Image', ' virtual/kernel', '', d)}" |
| 76 | WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'uImage', ' virtual/kernel', '', d)}" | 81 | WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'uImage', ' virtual/kernel', '', d)}" |
| 77 | WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'zImage', ' virtual/kernel', '', d)}" | 82 | WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'zImage', ' virtual/kernel', '', d)}" |
| 78 | WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'u-boot.bin', ' virtual/bootloader', '', d)}" | 83 | WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'u-boot.bin', ' virtual/bootloader', '', d)}" |
| 79 | WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'u-boot.elf', ' virtual/bootloader', '', d)}" | 84 | WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'u-boot.elf', ' virtual/bootloader', '', d)}" |
| 80 | WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', '${INITRAMFS_IMAGE}-${MACHINE}.cpio.gz.u-boot', ' ${INITRAMFS_IMAGE}', '', d)}" | 85 | WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', '${INITRAMFS_IMAGE}-${MACHINE}.cpio.gz.u-boot', ' ${INITRAMFS_IMAGE}', '', d)}" |
| 81 | 86 | ||
| 82 | # Automatically add IMAGE_BOOT_FILES to /boot via packages | 87 | # Automatically add IMAGE_BOOT_FILES to /boot via packages |
| 83 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'boot.bin', ' ${PREFERRED_PROVIDER_virtual/boot-bin}', '', d)}" | 88 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'boot.bin', ' ${PREFERRED_PROVIDER_virtual/boot-bin}', '', d)}" |
| 84 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'system.dtb', ' ${PREFERRED_PROVIDER_virtual/dtb}', '', d)}" | 89 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'system.dtb', ' ${PREFERRED_PROVIDER_virtual/dtb}', '', d)}" |
| 85 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'boot.scr', ' u-boot-xlnx-scr', '', d)}" | 90 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'boot.scr', ' u-boot-xlnx-scr', '', d)}" |
| 86 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'uEnv.txt', ' u-boot-xlnx-uenv', '', d)}" | 91 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'uEnv.txt', ' u-boot-xlnx-uenv', '', d)}" |
| 87 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'atf-uboot.ub', ' arm-trusted-firmware', '', d)}" | 92 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'atf-uboot.ub', ' arm-trusted-firmware', '', d)}" |
| 88 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'u-boot.bin', ' ${PREFERRED_PROVIDER_virtual/bootloader}-bin', '', d)}" | 93 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'u-boot.bin', ' ${PREFERRED_PROVIDER_virtual/bootloader}-bin', '', d)}" |
| 89 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'u-boot.elf', ' ${PREFERRED_PROVIDER_virtual/bootloader}-elf', '', d)}" | 94 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'u-boot.elf', ' ${PREFERRED_PROVIDER_virtual/bootloader}-elf', '', d)}" |
| 90 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'Image', ' kernel-image-image', '', d)}" | 95 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'Image', ' kernel-image-image', '', d)}" |
| 91 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'uImage', ' kernel-image-uimage', '', d)}" | 96 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'uImage', ' kernel-image-uimage', '', d)}" |
| 92 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', 'zImage', ' kernel-image-zimage', '', d)}" | 97 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'zImage', ' kernel-image-zimage', '', d)}" |
| 93 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES', '${INITRAMFS_IMAGE}-${MACHINE}.cpio.gz.u-boot', ' initramdisk-${INITRAMFS_IMAGE}', '', d)}" | 98 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', '${INITRAMFS_IMAGE}-${MACHINE}.cpio.gz.u-boot', ' initramdisk-${INITRAMFS_IMAGE}', '', d)}" |
| 94 | 99 | ||
| 95 | # Default SD card wks file, split /boot and / | 100 | # Default SD card wks file, split /boot and / |
| 96 | WKS_FILES ?= "xilinx-default-sd.wks" | 101 | WKS_FILES ?= "xilinx-default-sd.wks" |
| @@ -128,3 +133,6 @@ def get_default_image_boot_files(d): | |||
| 128 | XSERVER_EXT ?= "" | 133 | XSERVER_EXT ?= "" |
| 129 | 134 | ||
| 130 | FPGA_MNGR_RECONFIG_ENABLE ?= "1" | 135 | FPGA_MNGR_RECONFIG_ENABLE ?= "1" |
| 136 | |||
| 137 | # This variable is supported only with SysVinit. | ||
| 138 | SERIAL_CONSOLES_CHECK = "${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', '${SERIAL_CONSOLES}', '', d)}" | ||
diff --git a/meta-xilinx-core/conf/machine/microblaze-generic.conf b/meta-xilinx-core/conf/machine/microblaze-generic.conf index 9916a4ca..5bf87344 100644 --- a/meta-xilinx-core/conf/machine/microblaze-generic.conf +++ b/meta-xilinx-core/conf/machine/microblaze-generic.conf | |||
| @@ -2,23 +2,36 @@ | |||
| 2 | #@NAME: microblaze-generic | 2 | #@NAME: microblaze-generic |
| 3 | #@DESCRIPTION: Machine configuration for the microblaze-generic devices | 3 | #@DESCRIPTION: Machine configuration for the microblaze-generic devices |
| 4 | 4 | ||
| 5 | # Deprecated board config | ||
| 6 | USE_BOARD = "${@"conf/machine/include/xilinx-board-pre.inc" if d.getVar("BOARD") or d.getVar("BOARD_VARIANT") else ""}" | ||
| 7 | require ${USE_BOARD} | ||
| 8 | unset USE_BOARD | ||
| 9 | |||
| 5 | #### Preamble | 10 | #### Preamble |
| 6 | MACHINEOVERRIDES =. "${@['', 'microblaze-generic:']['microblaze-generic' != '${MACHINE}']}" | 11 | MACHINEOVERRIDES =. "${@['', 'microblaze-generic:']['microblaze-generic' != '${MACHINE}']}" |
| 7 | #### Regular settings follow | 12 | #### Regular settings follow |
| 8 | 13 | ||
| 9 | # Set the default for a modern full feature microblaze... | 14 | # Set the default for a modern full feature microblaze... |
| 10 | TUNE_FEATURES:tune-microblaze ?= "microblaze v11.0 barrel-shift pattern-compare reorder divide-hard multiply-high" | 15 | TUNE_FEATURES:tune-microblaze ?= "microblaze v11.0 pattern-compare barrel-shift divide-hard multiply-high fpu-hard reorder" |
| 11 | DEFAULTTUNE ?= "microblaze" | 16 | DEFAULTTUNE ?= "microblaze" |
| 12 | 17 | ||
| 13 | # Variables that changes based on hw design or board specific requirement must be | 18 | # Variables that changes based on hw design or board specific requirement must be |
| 14 | # defined before calling the required inclusion file else pre-expansion value | 19 | # defined before calling the required inclusion file else pre-expansion value |
| 15 | # defined in local.conf without machine override will not be reflected. | 20 | # defined in local.conf without machine override will not be reflected. |
| 16 | 21 | ||
| 22 | # Yocto Microblaze device-tree variables | ||
| 23 | YAML_CONSOLE_DEVICE_CONFIG:pn-device-tree ?= "axi_uartlite_0" | ||
| 24 | YAML_MAIN_MEMORY_CONFIG:pn-device-tree ?= "DDR4_0" | ||
| 25 | DT_PADDING_SIZE:pn-device-tree ?= "0x1000" | ||
| 26 | DTC_FLAGS:pn-device-tree ?= "" | ||
| 27 | XSCTH_PROC:pn-device-tree ?= "microblaze_0" | ||
| 28 | YAML_DT_BOARD_FLAGS ?= "{BOARD kcu105}" | ||
| 29 | |||
| 17 | # Yocto Microblaze FS-Boot variables | 30 | # Yocto Microblaze FS-Boot variables |
| 18 | YAML_SERIAL_CONSOLE_STDIN:pn-fs-boot ?= "axi_uartlite_0" | 31 | YAML_SERIAL_CONSOLE_STDIN:pn-fs-boot ?= "axi_uartlite_0" |
| 19 | YAML_SERIAL_CONSOLE_STDOUT:pn-fs-boot ?= "axi_uartlite_0" | 32 | YAML_SERIAL_CONSOLE_STDOUT:pn-fs-boot ?= "axi_uartlite_0" |
| 20 | YAML_MAIN_MEMORY_CONFIG:pn-fs-boot ?= "MIG_7SERIES_0" | 33 | YAML_MAIN_MEMORY_CONFIG:pn-fs-boot ?= "DDR4_0" |
| 21 | YAML_FLASH_MEMORY_CONFIG:pn-fs-boot ?= "axi_emc_0" | 34 | YAML_FLASH_MEMORY_CONFIG:pn-fs-boot ?= "axi_quad_spi_0" |
| 22 | XSCTH_PROC:pn-fs-boot ?= "microblaze_0" | 35 | XSCTH_PROC:pn-fs-boot ?= "microblaze_0" |
| 23 | 36 | ||
| 24 | # Yocto Microblaze u-boot-xlnx variables | 37 | # Yocto Microblaze u-boot-xlnx variables |
| @@ -26,14 +39,6 @@ UBOOT_MACHINE ?= "microblaze-generic_defconfig" | |||
| 26 | UBOOT_INITIAL_ENV = "" | 39 | UBOOT_INITIAL_ENV = "" |
| 27 | BOOTMODE ?= "generic.root" | 40 | BOOTMODE ?= "generic.root" |
| 28 | 41 | ||
| 29 | # Yocto device-tree variables | ||
| 30 | YAML_CONSOLE_DEVICE_CONFIG:pn-device-tree ?= "axi_uartlite_0" | ||
| 31 | YAML_MAIN_MEMORY_CONFIG:pn-device-tree ?= "MIG_7SERIES_0" | ||
| 32 | DT_PADDING_SIZE:pn-device-tree ?= "0x1000" | ||
| 33 | DTC_FLAGS:pn-device-tree ?= "" | ||
| 34 | XSCTH_PROC:pn-device-tree ?= "microblaze_0" | ||
| 35 | YAML_DT_BOARD_FLAGS ?= "{BOARD kc705-full}" | ||
| 36 | |||
| 37 | # Yocto Microblaze KERNEL Variables | 42 | # Yocto Microblaze KERNEL Variables |
| 38 | UBOOT_ENTRYPOINT ?= "0x80000000" | 43 | UBOOT_ENTRYPOINT ?= "0x80000000" |
| 39 | UBOOT_LOADADDRESS ?= "0x80000000" | 44 | UBOOT_LOADADDRESS ?= "0x80000000" |
| @@ -41,7 +46,6 @@ KERNEL_EXTRA_ARGS += "UIMAGE_LOADADDR=${UBOOT_ENTRYPOINT}" | |||
| 41 | 46 | ||
| 42 | # Microblaze Serial Console settings | 47 | # Microblaze Serial Console settings |
| 43 | SERIAL_CONSOLES ?= "115200;ttyUL0" | 48 | SERIAL_CONSOLES ?= "115200;ttyUL0" |
| 44 | SERIAL_CONSOLES_CHECK = "${SERIAL_CONSOLES}" | ||
| 45 | YAML_SERIAL_CONSOLE_BAUDRATE ?= "115200" | 49 | YAML_SERIAL_CONSOLE_BAUDRATE ?= "115200" |
| 46 | 50 | ||
| 47 | require conf/machine/include/soc-tune-include.inc | 51 | require conf/machine/include/soc-tune-include.inc |
| @@ -56,21 +60,21 @@ MB_MACHINE_ARCH = "${@[d.getVar('TUNE_PKGARCH'), d.getVar('TUNE_PKGARCH') + '-ge | |||
| 56 | 60 | ||
| 57 | MACHINE_ARCH = "${@['${MB_MACHINE_ARCH}', '${DEF_MACHINE_ARCH}']['microblaze-generic' != "${MACHINE}"]}" | 61 | MACHINE_ARCH = "${@['${MB_MACHINE_ARCH}', '${DEF_MACHINE_ARCH}']['microblaze-generic' != "${MACHINE}"]}" |
| 58 | 62 | ||
| 59 | # microblaze-generic.conf uses kc705-microblazeel xsa as reference input. | 63 | # microblaze-generic.conf uses kcu105-microblazeel xsa as reference input. |
| 60 | # User can override with custom xsa using HDF_BASE and HDF_PATH variables from | 64 | # User can override with custom xsa using HDF_BASE and HDF_PATH variables from |
| 61 | # local.conf. | 65 | # local.conf. |
| 62 | HDF_MACHINE = "kc705-microblazeel" | 66 | HDF_MACHINE = "kcu105-microblazeel" |
| 63 | 67 | ||
| 64 | MACHINE_FEATURES = "" | 68 | MACHINE_FEATURES = "" |
| 65 | 69 | ||
| 66 | KERNEL_IMAGETYPE ?= "linux.bin.ub" | 70 | KERNEL_IMAGETYPE ?= "linux.bin.ub" |
| 67 | KERNEL_IMAGETYPES = "" | 71 | KERNEL_IMAGETYPES = "" |
| 68 | 72 | ||
| 69 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "device-tree" | 73 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "${PREFERRED_PROVIDER_virtual/dtb}" |
| 70 | 74 | ||
| 71 | IMAGE_BOOT_FILES += " \ | 75 | IMAGE_BOOT_FILES += " \ |
| 72 | ${@bb.utils.contains('PREFERRED_PROVIDER_virtual/dtb', 'device-tree', 'system.dtb', '', d)} \ | 76 | ${@bb.utils.contains('PREFERRED_PROVIDER_virtual/dtb', 'device-tree', 'system.dtb', '', d)} \ |
| 73 | " | 77 | " |
| 74 | 78 | ||
| 75 | EXTRA_IMAGEDEPENDS += " \ | 79 | EXTRA_IMAGEDEPENDS += " \ |
| 76 | libyaml-native \ | 80 | libyaml-native \ |
| @@ -93,3 +97,8 @@ QB_NETWORK_DEVICE = "-net nic,netdev=net0,macaddr=@MAC@" | |||
| 93 | #### No additional settings should be after the Postamble | 97 | #### No additional settings should be after the Postamble |
| 94 | #### Postamble | 98 | #### Postamble |
| 95 | PACKAGE_EXTRA_ARCHS:append = "${@['', ' ${MB_MACHINE_ARCH}']['microblaze-generic' != "${MACHINE}"]}" | 99 | PACKAGE_EXTRA_ARCHS:append = "${@['', ' ${MB_MACHINE_ARCH}']['microblaze-generic' != "${MACHINE}"]}" |
| 100 | |||
| 101 | # Deprecated board config | ||
| 102 | USE_BOARD = "${@"conf/machine/include/xilinx-board-post.inc" if d.getVar("BOARD") or d.getVar("BOARD_VARIANT") else ""}" | ||
| 103 | require ${USE_BOARD} | ||
| 104 | unset USE_BOARD | ||
diff --git a/meta-xilinx-core/conf/machine/versal-generic.conf b/meta-xilinx-core/conf/machine/versal-generic.conf index e44e99f2..f87dc140 100644 --- a/meta-xilinx-core/conf/machine/versal-generic.conf +++ b/meta-xilinx-core/conf/machine/versal-generic.conf | |||
| @@ -33,7 +33,6 @@ UBOOT_LOADADDRESS ?= "0x200000" | |||
| 33 | 33 | ||
| 34 | # Versal Serial Console | 34 | # Versal Serial Console |
| 35 | SERIAL_CONSOLES ?= "115200;ttyAMA0" | 35 | SERIAL_CONSOLES ?= "115200;ttyAMA0" |
| 36 | SERIAL_CONSOLES_CHECK = "${SERIAL_CONSOLES}" | ||
| 37 | YAML_SERIAL_CONSOLE_BAUDRATE ?= "115200" | 36 | YAML_SERIAL_CONSOLE_BAUDRATE ?= "115200" |
| 38 | 37 | ||
| 39 | require conf/machine/include/soc-versal.inc | 38 | require conf/machine/include/soc-versal.inc |
| @@ -47,7 +46,7 @@ HDF_MACHINE = "vck190-versal" | |||
| 47 | 46 | ||
| 48 | MACHINE_FEATURES += "rtc ext2 ext3 vfat usbhost" | 47 | MACHINE_FEATURES += "rtc ext2 ext3 vfat usbhost" |
| 49 | 48 | ||
| 50 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "device-tree" | 49 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "${PREFERRED_PROVIDER_virtual/dtb}" |
| 51 | 50 | ||
| 52 | # Default SD image build onfiguration, use qemu-sd to pad | 51 | # Default SD image build onfiguration, use qemu-sd to pad |
| 53 | IMAGE_CLASSES += "image-types-xilinx-qemu" | 52 | IMAGE_CLASSES += "image-types-xilinx-qemu" |
diff --git a/meta-xilinx-core/conf/machine/versal-net-generic.conf b/meta-xilinx-core/conf/machine/versal-net-generic.conf index 4b368e83..e1f222e2 100644 --- a/meta-xilinx-core/conf/machine/versal-net-generic.conf +++ b/meta-xilinx-core/conf/machine/versal-net-generic.conf | |||
| @@ -1,3 +1,5 @@ | |||
| 1 | XILINX_DEPRECATED[versal-net] = "Versal-net is not supported in 2023.2" | ||
| 2 | |||
| 1 | #@TYPE: Machine | 3 | #@TYPE: Machine |
| 2 | #@NAME: versal-net-generic | 4 | #@NAME: versal-net-generic |
| 3 | #@DESCRIPTION: Machine configuration for the versal-net-generic devices | 5 | #@DESCRIPTION: Machine configuration for the versal-net-generic devices |
diff --git a/meta-xilinx-core/conf/machine/zynq-generic.conf b/meta-xilinx-core/conf/machine/zynq-generic.conf index df82a683..e97be2ff 100644 --- a/meta-xilinx-core/conf/machine/zynq-generic.conf +++ b/meta-xilinx-core/conf/machine/zynq-generic.conf | |||
| @@ -32,7 +32,6 @@ KERNEL_EXTRA_ARGS += "UIMAGE_LOADADDR=${UBOOT_ENTRYPOINT}" | |||
| 32 | 32 | ||
| 33 | # Zynq-7000 Serial Console settings | 33 | # Zynq-7000 Serial Console settings |
| 34 | SERIAL_CONSOLES ?= "115200;ttyPS0" | 34 | SERIAL_CONSOLES ?= "115200;ttyPS0" |
| 35 | SERIAL_CONSOLES_CHECK = "${SERIAL_CONSOLES}" | ||
| 36 | YAML_SERIAL_CONSOLE_BAUDRATE ?= "115200" | 35 | YAML_SERIAL_CONSOLE_BAUDRATE ?= "115200" |
| 37 | 36 | ||
| 38 | require conf/machine/include/soc-zynq.inc | 37 | require conf/machine/include/soc-zynq.inc |
| @@ -46,7 +45,7 @@ HDF_MACHINE = "zc702-zynq7" | |||
| 46 | 45 | ||
| 47 | MACHINE_FEATURES += "rtc ext2 ext3 vfat usbhost usbgadget" | 46 | MACHINE_FEATURES += "rtc ext2 ext3 vfat usbhost usbgadget" |
| 48 | 47 | ||
| 49 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "device-tree" | 48 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "${PREFERRED_PROVIDER_virtual/dtb}" |
| 50 | 49 | ||
| 51 | EXTRA_IMAGEDEPENDS += " \ | 50 | EXTRA_IMAGEDEPENDS += " \ |
| 52 | libyaml-native \ | 51 | libyaml-native \ |
diff --git a/meta-xilinx-core/conf/machine/zynqmp-generic.conf b/meta-xilinx-core/conf/machine/zynqmp-generic.conf index d24da3b4..b60014df 100644 --- a/meta-xilinx-core/conf/machine/zynqmp-generic.conf +++ b/meta-xilinx-core/conf/machine/zynqmp-generic.conf | |||
| @@ -44,7 +44,6 @@ UBOOT_LOADADDRESS ?= "0x200000" | |||
| 44 | 44 | ||
| 45 | # ZynqMP Serial Console | 45 | # ZynqMP Serial Console |
| 46 | SERIAL_CONSOLES ?= "115200;ttyPS0" | 46 | SERIAL_CONSOLES ?= "115200;ttyPS0" |
| 47 | SERIAL_CONSOLES_CHECK = "${SERIAL_CONSOLES}" | ||
| 48 | YAML_SERIAL_CONSOLE_BAUDRATE ?= "115200" | 47 | YAML_SERIAL_CONSOLE_BAUDRATE ?= "115200" |
| 49 | 48 | ||
| 50 | require conf/machine/include/soc-zynqmp.inc | 49 | require conf/machine/include/soc-zynqmp.inc |
| @@ -65,7 +64,7 @@ IMAGE_CLASSES += "image-types-xilinx-qemu" | |||
| 65 | # Add wic.qemu-sd only if initramfs_image not set due to circular dependecies | 64 | # Add wic.qemu-sd only if initramfs_image not set due to circular dependecies |
| 66 | IMAGE_FSTYPES += "${@'wic.qemu-sd' if (d.getVar('INITRAMFS_IMAGE') or '') == '' else 'cpio.gz.u-boot'}" | 65 | IMAGE_FSTYPES += "${@'wic.qemu-sd' if (d.getVar('INITRAMFS_IMAGE') or '') == '' else 'cpio.gz.u-boot'}" |
| 67 | 66 | ||
| 68 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "device-tree" | 67 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "${PREFERRED_PROVIDER_virtual/dtb}" |
| 69 | 68 | ||
| 70 | EXTRA_IMAGEDEPENDS += " \ | 69 | EXTRA_IMAGEDEPENDS += " \ |
| 71 | libyaml-native \ | 70 | libyaml-native \ |
| @@ -150,8 +149,6 @@ QB_PMU_OPT = " \ | |||
| 150 | 149 | ||
| 151 | QB_OPT_APPEND += " -pmu-args '${QB_PMU_OPT}'" | 150 | QB_OPT_APPEND += " -pmu-args '${QB_PMU_OPT}'" |
| 152 | 151 | ||
| 153 | do_write_qemuboot_conf[depends] += "u-boot-xlnx-uenv:do_deploy" | ||
| 154 | |||
| 155 | #### No additional settings should be after the Postamble | 152 | #### No additional settings should be after the Postamble |
| 156 | #### Postamble | 153 | #### Postamble |
| 157 | PACKAGE_EXTRA_ARCHS:append = "${@['', ' zynqmp_generic']['zynqmp-generic' != "${MACHINE}"]}" | 154 | PACKAGE_EXTRA_ARCHS:append = "${@['', ' zynqmp_generic']['zynqmp-generic' != "${MACHINE}"]}" |
diff --git a/meta-xilinx-core/dynamic-layers/openamp-layer/recipes-bsp/device-tree/device-tree.bbappend b/meta-xilinx-core/dynamic-layers/openamp-layer/recipes-bsp/device-tree/device-tree.bbappend index 4fd8b971..7dcee565 100644 --- a/meta-xilinx-core/dynamic-layers/openamp-layer/recipes-bsp/device-tree/device-tree.bbappend +++ b/meta-xilinx-core/dynamic-layers/openamp-layer/recipes-bsp/device-tree/device-tree.bbappend | |||
| @@ -1,12 +1,5 @@ | |||
| 1 | FILESEXTRAPATHS:prepend := "${THISDIR}/files:" | 1 | FILESEXTRAPATHS:prepend := "${THISDIR}/files:" |
| 2 | 2 | ||
| 3 | SRC_URI = " \ | ||
| 4 | file://zynq-openamp.dtsi \ | ||
| 5 | file://zynqmp-openamp.dtsi \ | ||
| 6 | file://versal-openamp.dtsi \ | ||
| 7 | file://versal-net-openamp.dtsi \ | ||
| 8 | " | ||
| 9 | |||
| 10 | # openamp.dtsi is in the WORKDIR | 3 | # openamp.dtsi is in the WORKDIR |
| 11 | DT_INCLUDE:append = " ${WORKDIR}" | 4 | DT_INCLUDE:append = " ${WORKDIR}" |
| 12 | 5 | ||
| @@ -21,7 +14,7 @@ def set_openamp_extra_overlays(d): | |||
| 21 | distro_features = d.getVar('DISTRO_FEATURES', True) | 14 | distro_features = d.getVar('DISTRO_FEATURES', True) |
| 22 | enable_openamp_dtsi = d.getVar('ENABLE_OPENAMP_DTSI') | 15 | enable_openamp_dtsi = d.getVar('ENABLE_OPENAMP_DTSI') |
| 23 | if 'openamp' in distro_features and enable_openamp_dtsi == '1': | 16 | if 'openamp' in distro_features and enable_openamp_dtsi == '1': |
| 24 | return d.getVar('OPENAMP_EXTRA_OVERLAYS', True) | 17 | return ' ${OPENAMP_EXTRA_OVERLAYS}' |
| 25 | else: | 18 | else: |
| 26 | return '' | 19 | return '' |
| 27 | 20 | ||
diff --git a/meta-xilinx-core/dynamic-layers/openamp-layer/recipes-bsp/device-tree/open-amp-device-tree.bb b/meta-xilinx-core/dynamic-layers/openamp-layer/recipes-bsp/device-tree/open-amp-device-tree.bb index 8f77bd54..9f481fec 100644 --- a/meta-xilinx-core/dynamic-layers/openamp-layer/recipes-bsp/device-tree/open-amp-device-tree.bb +++ b/meta-xilinx-core/dynamic-layers/openamp-layer/recipes-bsp/device-tree/open-amp-device-tree.bb | |||
| @@ -11,6 +11,8 @@ SRC_URI = " \ | |||
| 11 | file://zynqmp-openamp-overlay.dts \ | 11 | file://zynqmp-openamp-overlay.dts \ |
| 12 | file://versal-openamp.dtsi \ | 12 | file://versal-openamp.dtsi \ |
| 13 | file://versal-openamp-overlay.dts \ | 13 | file://versal-openamp-overlay.dts \ |
| 14 | file://versal-net-openamp.dtsi \ | ||
| 15 | file://versal-net-openamp-overlay.dts \ | ||
| 14 | " | 16 | " |
| 15 | 17 | ||
| 16 | # We don't have anything to include from the kernel | 18 | # We don't have anything to include from the kernel |
| @@ -19,6 +21,7 @@ KERNEL_INCLUDE = "" | |||
| 19 | COMPATIBLE_MACHINE:zynq = "${MACHINE}" | 21 | COMPATIBLE_MACHINE:zynq = "${MACHINE}" |
| 20 | COMPATIBLE_MACHINE:zynqmp = "${MACHINE}" | 22 | COMPATIBLE_MACHINE:zynqmp = "${MACHINE}" |
| 21 | COMPATIBLE_MACHINE:versal = "${MACHINE}" | 23 | COMPATIBLE_MACHINE:versal = "${MACHINE}" |
| 24 | COMPATIBLE_MACHINE:versal-net = "${MACHINE}" | ||
| 22 | 25 | ||
| 23 | inherit devicetree image-artifact-names features_check | 26 | inherit devicetree image-artifact-names features_check |
| 24 | 27 | ||
diff --git a/meta-xilinx-core/dynamic-layers/openamp-layer/recipes-openamp/libmetal/libmetal-xlnx_v2023.2.bb b/meta-xilinx-core/dynamic-layers/openamp-layer/recipes-openamp/libmetal/libmetal-xlnx_v2023.2.bb new file mode 100644 index 00000000..5618ae88 --- /dev/null +++ b/meta-xilinx-core/dynamic-layers/openamp-layer/recipes-openamp/libmetal/libmetal-xlnx_v2023.2.bb | |||
| @@ -0,0 +1,15 @@ | |||
| 1 | SRCBRANCH ?= "2023.2" | ||
| 2 | SRCREV = "00fd771adc7adaed664ed6c5bc3d48d25856fe5c" | ||
| 3 | BRANCH = "xlnx_rel_v2023.2" | ||
| 4 | LIC_FILES_CHKSUM ?= "file://LICENSE.md;md5=f4d5df0f12dcea1b1a0124219c0dbab4" | ||
| 5 | PV = "${SRCBRANCH}+git${SRCPV}" | ||
| 6 | |||
| 7 | REPO = "git://github.com/Xilinx/libmetal.git;protocol=https" | ||
| 8 | |||
| 9 | include ${LAYER_PATH_openamp-layer}/recipes-openamp/libmetal/libmetal.inc | ||
| 10 | |||
| 11 | RPROVIDES:${PN}-dbg += "libmetal-dbg" | ||
| 12 | RPROVIDES:${PN}-dev += "libmetal-dev" | ||
| 13 | RPROVIDES:${PN}-lic += "libmetal-lic" | ||
| 14 | RPROVIDES:${PN}-src += "libmetal-src" | ||
| 15 | RPROVIDES:${PN}-staticdev += "libmetal-staticdev" | ||
diff --git a/meta-xilinx-core/dynamic-layers/openamp-layer/recipes-openamp/open-amp/open-amp-xlnx_v2023.2.bb b/meta-xilinx-core/dynamic-layers/openamp-layer/recipes-openamp/open-amp/open-amp-xlnx_v2023.2.bb new file mode 100644 index 00000000..8c6b4431 --- /dev/null +++ b/meta-xilinx-core/dynamic-layers/openamp-layer/recipes-openamp/open-amp/open-amp-xlnx_v2023.2.bb | |||
| @@ -0,0 +1,16 @@ | |||
| 1 | SRCBRANCH ?= "2023.2" | ||
| 2 | SRCREV = "73a546f2b5faffe71680b1e5389f3328be60773f" | ||
| 3 | BRANCH = "xlnx_rel_v2023.2" | ||
| 4 | LIC_FILES_CHKSUM ?= "file://LICENSE.md;md5=ab88daf995c0bd0071c2e1e55f3d3505" | ||
| 5 | PV = "${SRCBRANCH}+git${SRCPV}" | ||
| 6 | REPO = "git://github.com/Xilinx/open-amp.git;protocol=https" | ||
| 7 | |||
| 8 | include ${LAYER_PATH_openamp-layer}/recipes-openamp/open-amp/open-amp.inc | ||
| 9 | require ${LAYER_PATH_openamp-layer}/vendor/xilinx/recipes-openamp/open-amp/open-amp-xlnx.inc | ||
| 10 | |||
| 11 | RPROVIDES:${PN}-dbg += "open-amp-dbg" | ||
| 12 | RPROVIDES:${PN}-dev += "open-amp-dev" | ||
| 13 | RPROVIDES:${PN}-lic += "open-amp-lic" | ||
| 14 | RPROVIDES:${PN}-src += "open-amp-src" | ||
| 15 | RPROVIDES:${PN}-staticdev += "open-amp-staticdev" | ||
| 16 | |||
diff --git a/meta-xilinx-core/dynamic-layers/openembedded-layer/recipes-benchmark/glmark2/glmark2_%.bbappend b/meta-xilinx-core/dynamic-layers/openembedded-layer/recipes-benchmark/glmark2/glmark2_%.bbappend index fb36c842..81aa8e9e 100644 --- a/meta-xilinx-core/dynamic-layers/openembedded-layer/recipes-benchmark/glmark2/glmark2_%.bbappend +++ b/meta-xilinx-core/dynamic-layers/openembedded-layer/recipes-benchmark/glmark2/glmark2_%.bbappend | |||
| @@ -12,6 +12,8 @@ EXTRA_OECONF:append = "${@bb.utils.contains('DISTRO_FEATURES', 'fbdev', ' --with | |||
| 12 | 12 | ||
| 13 | # Links to libmali-xlnx, so it becomes MACHINE_ARCH specific | 13 | # Links to libmali-xlnx, so it becomes MACHINE_ARCH specific |
| 14 | DEFAULT_PACKAGE_ARCH := "${PACKAGE_ARCH}" | 14 | DEFAULT_PACKAGE_ARCH := "${PACKAGE_ARCH}" |
| 15 | MALI_PACKAGE_ARCH[vardepsexclude] = "MACHINE_ARCH" | ||
| 15 | MALI_PACKAGE_ARCH = "${@'${MACHINE_ARCH}' if d.getVar('PREFERRED_PROVIDER_virtual/libgles1') == 'libmali-xlnx' else '${DEFAULT_PACKAGE_ARCH}'}" | 16 | MALI_PACKAGE_ARCH = "${@'${MACHINE_ARCH}' if d.getVar('PREFERRED_PROVIDER_virtual/libgles1') == 'libmali-xlnx' else '${DEFAULT_PACKAGE_ARCH}'}" |
| 17 | PACKAGE_ARCH[vardepsexclude] = "MALI_PACKAGE_ARCH" | ||
| 16 | PACKAGE_ARCH = "${@bb.utils.contains_any('DEPENDS', 'virtual/libgles1 virtual/libgles2 virtual/egl virtual/libgbm', '${MALI_PACKAGE_ARCH}', '${DEFAULT_PACKAGE_ARCH}', d)}" | 18 | PACKAGE_ARCH = "${@bb.utils.contains_any('DEPENDS', 'virtual/libgles1 virtual/libgles2 virtual/egl virtual/libgbm', '${MALI_PACKAGE_ARCH}', '${DEFAULT_PACKAGE_ARCH}', d)}" |
| 17 | 19 | ||
diff --git a/meta-xilinx-core/dynamic-layers/virtualization-layer/recipes-kernel/lopper/lopper_git.bbappend b/meta-xilinx-core/dynamic-layers/virtualization-layer/recipes-kernel/lopper/lopper_git.bbappend index 0440b1bc..56cb8a45 100644 --- a/meta-xilinx-core/dynamic-layers/virtualization-layer/recipes-kernel/lopper/lopper_git.bbappend +++ b/meta-xilinx-core/dynamic-layers/virtualization-layer/recipes-kernel/lopper/lopper_git.bbappend | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | SRC_URI = "git://github.com/devicetree-org/lopper.git;branch=master;protocol=https" | 1 | SRC_URI = "git://github.com/devicetree-org/lopper.git;branch=master;protocol=https" |
| 2 | SRCREV = "395f00d44ee259d5db6fd6165c6cd18c8fe40e2f" | 2 | SRCREV = "807435ae6fa0a07e8c84b458d138f3f54614eb5c" |
| 3 | 3 | ||
| 4 | FILESEXTRAPATHS:prepend := "${THISDIR}/lopper:" | 4 | FILESEXTRAPATHS:prepend := "${THISDIR}/lopper:" |
| 5 | 5 | ||
diff --git a/meta-xilinx-core/gen-machine-conf b/meta-xilinx-core/gen-machine-conf | |||
| Subproject a08b0e9e88b4c70336b12d57d4704343474d608 | Subproject 911941fc094dc0073c2f01a2b94de3cc6e993fe | ||
diff --git a/meta-xilinx-core/recipes-bsp/ai-engine/ai-engine-driver_3.2.bb b/meta-xilinx-core/recipes-bsp/ai-engine/ai-engine-driver_3.4.bb index 810b51fd..f86c5985 100644 --- a/meta-xilinx-core/recipes-bsp/ai-engine/ai-engine-driver_3.2.bb +++ b/meta-xilinx-core/recipes-bsp/ai-engine/ai-engine-driver_3.4.bb | |||
| @@ -12,7 +12,7 @@ I = "${AIEDIR}/include" | |||
| 12 | COMPATIBLE_MACHINE = "^$" | 12 | COMPATIBLE_MACHINE = "^$" |
| 13 | COMPATIBLE_MACHINE:versal-ai-core = "versal-ai-core" | 13 | COMPATIBLE_MACHINE:versal-ai-core = "versal-ai-core" |
| 14 | COMPATIBLE_MACHINE:versal-ai-edge = "${SOC_VARIANT_ARCH}" | 14 | COMPATIBLE_MACHINE:versal-ai-edge = "${SOC_VARIANT_ARCH}" |
| 15 | PV = "3.2" | 15 | PV = "3.3" |
| 16 | 16 | ||
| 17 | IOBACKENDS ?= "Linux" | 17 | IOBACKENDS ?= "Linux" |
| 18 | 18 | ||
| @@ -25,7 +25,7 @@ RPROVIDES:${PN} = "libxaiengine" | |||
| 25 | # The makefile isn't ready for parallel execution at the moment | 25 | # The makefile isn't ready for parallel execution at the moment |
| 26 | PARALLEL_MAKE = "-j 1" | 26 | PARALLEL_MAKE = "-j 1" |
| 27 | 27 | ||
| 28 | CFLAGS += "-Wall -Wextra -fno-thread-jumps -fno-tree-pre" | 28 | CFLAGS += "-Wall -Wextra" |
| 29 | CFLAGS += "${@bb.utils.contains('IOBACKENDS', 'Linux', ' -D__AIELINUX__', '', d)}" | 29 | CFLAGS += "${@bb.utils.contains('IOBACKENDS', 'Linux', ' -D__AIELINUX__', '', d)}" |
| 30 | CFLAGS += "${@bb.utils.contains('IOBACKENDS', 'metal', ' -D__AIEMETAL__', '', d)}" | 30 | CFLAGS += "${@bb.utils.contains('IOBACKENDS', 'metal', ' -D__AIEMETAL__', '', d)}" |
| 31 | EXTRA_OEMAKE = "-C ${AIEDIR}/src -f Makefile.Linux CFLAGS='${CFLAGS}'" | 31 | EXTRA_OEMAKE = "-C ${AIEDIR}/src -f Makefile.Linux CFLAGS='${CFLAGS}'" |
| @@ -45,3 +45,5 @@ do_install(){ | |||
| 45 | } | 45 | } |
| 46 | 46 | ||
| 47 | PACKAGE_ARCH:versal-ai-core = "${SOC_VARIANT_ARCH}" | 47 | PACKAGE_ARCH:versal-ai-core = "${SOC_VARIANT_ARCH}" |
| 48 | PACKAGE_ARCH:versal-ai-edge = "${SOC_VARIANT_ARCH}" | ||
| 49 | |||
diff --git a/meta-xilinx-core/recipes-bsp/ai-engine/aie-rt.inc b/meta-xilinx-core/recipes-bsp/ai-engine/aie-rt.inc index 5eeb69d4..11059465 100644 --- a/meta-xilinx-core/recipes-bsp/ai-engine/aie-rt.inc +++ b/meta-xilinx-core/recipes-bsp/ai-engine/aie-rt.inc | |||
| @@ -2,10 +2,10 @@ SECTION = "libs" | |||
| 2 | 2 | ||
| 3 | REPO ?= "git://github.com/Xilinx/aie-rt.git;protocol=https" | 3 | REPO ?= "git://github.com/Xilinx/aie-rt.git;protocol=https" |
| 4 | 4 | ||
| 5 | BRANCH ?= "xlnx_rel_v2023.1" | 5 | BRANCH ?= "xlnx_rel_v2023.2" |
| 6 | SRCREV ?= "1ad203de0b7f282b1c0659fd2ae3f218652c7274" | 6 | SRCREV ?= "84debe5d22c144fb09269b8410df4cb8a6aa3b2a" |
| 7 | 7 | ||
| 8 | LICENSE = "BSD-3-Clause" | 8 | LICENSE = "BSD-3-Clause" |
| 9 | LIC_FILES_CHKSUM ?= "file://license.txt;md5=b81abf1f508952331dd7d2ab36408f5b" | 9 | LIC_FILES_CHKSUM ?= "file://license.txt;md5=04a153cae61a8a606fc79dff49c2c897" |
| 10 | 10 | ||
| 11 | SRC_URI = "${REPO};branch=${BRANCH}" | 11 | SRC_URI = "${REPO};branch=${BRANCH}" |
diff --git a/meta-xilinx-core/recipes-bsp/ai-engine/aiefal_1.0.bb b/meta-xilinx-core/recipes-bsp/ai-engine/aiefal_1.5.bb index 7bb4b849..2c6c9cd1 100644 --- a/meta-xilinx-core/recipes-bsp/ai-engine/aiefal_1.0.bb +++ b/meta-xilinx-core/recipes-bsp/ai-engine/aiefal_1.5.bb | |||
| @@ -31,3 +31,5 @@ FILES:${PN}-demos = " \ | |||
| 31 | " | 31 | " |
| 32 | 32 | ||
| 33 | PACKAGE_ARCH:versal-ai-core = "${SOC_VARIANT_ARCH}" | 33 | PACKAGE_ARCH:versal-ai-core = "${SOC_VARIANT_ARCH}" |
| 34 | PACKAGE_ARCH:versal-ai-edge = "${SOC_VARIANT_ARCH}" | ||
| 35 | |||
diff --git a/meta-xilinx-core/recipes-bsp/arm-trusted-firmware/arm-trusted-firmware_2023.2.bb b/meta-xilinx-core/recipes-bsp/arm-trusted-firmware/arm-trusted-firmware_2023.2.bb new file mode 100644 index 00000000..6ebd6cb5 --- /dev/null +++ b/meta-xilinx-core/recipes-bsp/arm-trusted-firmware/arm-trusted-firmware_2023.2.bb | |||
| @@ -0,0 +1,8 @@ | |||
| 1 | ATF_VERSION = "2.8" | ||
| 2 | SRCREV = "6be857cb66300fb21e3f61308e4197911c8ac30d" | ||
| 3 | BRANCH = "xlnx_rebase_v2.8" | ||
| 4 | LIC_FILES_CHKSUM = "file://license.rst;md5=1dd070c98a281d18d9eefd938729b031" | ||
| 5 | |||
| 6 | |||
| 7 | include arm-trusted-firmware.inc | ||
| 8 | |||
diff --git a/meta-xilinx-core/recipes-bsp/bitstream/bitstream.bb b/meta-xilinx-core/recipes-bsp/bitstream/bitstream.bb new file mode 100644 index 00000000..f61761f4 --- /dev/null +++ b/meta-xilinx-core/recipes-bsp/bitstream/bitstream.bb | |||
| @@ -0,0 +1,59 @@ | |||
| 1 | DESCRIPTION = "Recipe to provide a bitstream via virtual/bitstream" | ||
| 2 | |||
| 3 | LICENSE = "MIT" | ||
| 4 | LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" | ||
| 5 | |||
| 6 | INHIBIT_DEFAULT_DEPS = "1" | ||
| 7 | |||
| 8 | # We never want to prefer this over another provider | ||
| 9 | DEFAULT_PREFERENCE = "-1" | ||
| 10 | |||
| 11 | PROVIDES = "virtual/bitstream" | ||
| 12 | |||
| 13 | COMPATIBLE_MACHINE = "$^" | ||
| 14 | COMPATIBLE_MACHINE:zynq = ".*" | ||
| 15 | COMPATIBLE_MACHINE:zynqmp = ".*" | ||
| 16 | |||
| 17 | # Since we're just copying, we can run any config | ||
| 18 | COMPATIBLE_HOST = ".*" | ||
| 19 | |||
| 20 | PACKAGE_ARCH = "${MACHINE_ARCH}" | ||
| 21 | |||
| 22 | # Path where the bitstream can be found | ||
| 23 | BITSTREAM_PATH ?= "" | ||
| 24 | |||
| 25 | inherit deploy | ||
| 26 | |||
| 27 | do_install() { | ||
| 28 | if [ ! -e ${BITSTREAM_PATH} ]; then | ||
| 29 | echo "Unable to find BITSTREAM_PATH (${BITSTREAM_PATH})" | ||
| 30 | exit 1 | ||
| 31 | fi | ||
| 32 | |||
| 33 | install -Dm 0644 ${BITSTREAM_PATH} ${D}/boot/. | ||
| 34 | } | ||
| 35 | |||
| 36 | # If the item is already in OUR deploy_image_dir, nothing to deploy! | ||
| 37 | SHOULD_DEPLOY = "${@'false' if (d.getVar('BITSTREAM_PATH')).startswith(d.getVar('DEPLOY_DIR_IMAGE')) else 'true'}" | ||
| 38 | do_deploy() { | ||
| 39 | # If the item is already in OUR deploy_image_dir, nothing to deploy! | ||
| 40 | if ${SHOULD_DEPLOY}; then | ||
| 41 | install -Dm 0644 ${BITSTREAM_PATH} ${DEPLOYDIR}/. | ||
| 42 | fi | ||
| 43 | } | ||
| 44 | |||
| 45 | def check_bitstream_vars(d): | ||
| 46 | # If BITSTREAM_PATH is not defined, we error and instruct the user | ||
| 47 | # Don't cache this, as the items on disk can change! | ||
| 48 | d.setVar('BB_DONT_CACHE', '1') | ||
| 49 | if d.getVar('BITSTREAM_PATH') and not os.path.exists(d.getVar('BITSTREAM_PATH')): | ||
| 50 | raise bb.parse.SkipRecipe("The expected bitstream file %s is not available.\nSee the meta-xilinx-core README.") | ||
| 51 | |||
| 52 | if not d.getVar('BITSTREAM_PATH'): | ||
| 53 | raise bb.parse.SkipRecipe("Something is depending on virtual/bitstream and you have not provided a bitstream using BITSTREAM_PATH variable.\n See the meta-xilinx-core README.") | ||
| 54 | |||
| 55 | python() { | ||
| 56 | # Need to allow bbappends to change the check | ||
| 57 | check_bitstream_vars(d) | ||
| 58 | } | ||
| 59 | |||
diff --git a/meta-xilinx-core/recipes-bsp/bootbin/xilinx-bootbin_1.0.bb b/meta-xilinx-core/recipes-bsp/bootbin/xilinx-bootbin_1.0.bb index 5133fbd8..4c8bfa0e 100644 --- a/meta-xilinx-core/recipes-bsp/bootbin/xilinx-bootbin_1.0.bb +++ b/meta-xilinx-core/recipes-bsp/bootbin/xilinx-bootbin_1.0.bb | |||
| @@ -44,6 +44,10 @@ BOOTGEN_EXTRA_ARGS ?= "" | |||
| 44 | do_patch[noexec] = "1" | 44 | do_patch[noexec] = "1" |
| 45 | 45 | ||
| 46 | def create_bif(config, attrflags, attrimage, ids, common_attr, biffd, d): | 46 | def create_bif(config, attrflags, attrimage, ids, common_attr, biffd, d): |
| 47 | arch = d.getVar("SOC_FAMILY") | ||
| 48 | bb.error("create_bif function not defined for arch: %s" % (arch)) | ||
| 49 | |||
| 50 | def create_zynq_bif(config, attrflags, attrimage, ids, common_attr, biffd, d): | ||
| 47 | import re, os | 51 | import re, os |
| 48 | for cfg in config: | 52 | for cfg in config: |
| 49 | if cfg not in attrflags and common_attr: | 53 | if cfg not in attrflags and common_attr: |
| @@ -117,23 +121,32 @@ def create_versal_bif(config, attrflags, attrimage, ids, common_attr, biffd, d): | |||
| 117 | python do_configure() { | 121 | python do_configure() { |
| 118 | fp = d.getVar("BIF_FILE_PATH") | 122 | fp = d.getVar("BIF_FILE_PATH") |
| 119 | if fp == (d.getVar('B') + '/bootgen.bif'): | 123 | if fp == (d.getVar('B') + '/bootgen.bif'): |
| 120 | arch = d.getVar("SOC_FAMILY") | ||
| 121 | biffunc = {'versal':create_versal_bif, 'zynq':create_bif, 'zynqmp':create_bif} | ||
| 122 | biffd = open(fp, 'w') | 124 | biffd = open(fp, 'w') |
| 123 | biffd.write("the_ROM_image:\n") | 125 | biffd.write("the_ROM_image:\n") |
| 124 | biffd.write("{\n") | 126 | biffd.write("{\n") |
| 125 | 127 | ||
| 128 | arch = d.getVar("SOC_FAMILY") | ||
| 126 | bifattr = (d.getVar("BIF_COMMON_ATTR") or "").split() | 129 | bifattr = (d.getVar("BIF_COMMON_ATTR") or "").split() |
| 127 | if bifattr: | 130 | if bifattr: |
| 128 | attrflags = d.getVarFlags("BIF_COMMON_ATTR") or {} | 131 | attrflags = d.getVarFlags("BIF_COMMON_ATTR") or {} |
| 129 | biffunc[arch](bifattr, attrflags,'','', 1, biffd, d) | 132 | if arch in ['zynq', 'zynqmp']: |
| 133 | create_zynq_bif(bifattr, attrflags,'','', 1, biffd, d) | ||
| 134 | elif arch in ['versal']: | ||
| 135 | create_versal_bif(bifattr, attrflags,'','', 1, biffd, d) | ||
| 136 | else: | ||
| 137 | create_bif(bifattr, attrflags,'','', 1, biffd, d) | ||
| 130 | 138 | ||
| 131 | bifpartition = (d.getVar("BIF_PARTITION_ATTR") or "").split() | 139 | bifpartition = (d.getVar("BIF_PARTITION_ATTR") or "").split() |
| 132 | if bifpartition: | 140 | if bifpartition: |
| 133 | attrflags = d.getVarFlags("BIF_PARTITION_ATTR") or {} | 141 | attrflags = d.getVarFlags("BIF_PARTITION_ATTR") or {} |
| 134 | attrimage = d.getVarFlags("BIF_PARTITION_IMAGE") or {} | 142 | attrimage = d.getVarFlags("BIF_PARTITION_IMAGE") or {} |
| 135 | ids = d.getVarFlags("BIF_PARTITION_ID") or {} | 143 | ids = d.getVarFlags("BIF_PARTITION_ID") or {} |
| 136 | biffunc[arch](bifpartition, attrflags, attrimage, ids, 0, biffd, d) | 144 | if arch in ['zynq', 'zynqmp']: |
| 145 | create_zynq_bif(bifpartition, attrflags, attrimage, ids, 0, biffd, d) | ||
| 146 | elif arch in ['versal']: | ||
| 147 | create_versal_bif(bifpartition, attrflags, attrimage, ids, 0, biffd, d) | ||
| 148 | else: | ||
| 149 | create_bif(bifpartition, attrflags, attrimage, ids, 0, biffd, d) | ||
| 137 | 150 | ||
| 138 | biffd.write("}") | 151 | biffd.write("}") |
| 139 | biffd.close() | 152 | biffd.close() |
diff --git a/meta-xilinx-core/recipes-bsp/bootgen/bootgen_2023.2.bb b/meta-xilinx-core/recipes-bsp/bootgen/bootgen_2023.2.bb new file mode 100644 index 00000000..03f323e1 --- /dev/null +++ b/meta-xilinx-core/recipes-bsp/bootgen/bootgen_2023.2.bb | |||
| @@ -0,0 +1,31 @@ | |||
| 1 | SUMMARY = "Building and installing bootgen" | ||
| 2 | DESCRIPTION = "Building and installing bootgen, a Xilinx tool that lets you stitch binary files together and generate device boot images" | ||
| 3 | |||
| 4 | LICENSE = "Apache-2.0" | ||
| 5 | LIC_FILES_CHKSUM = "file://LICENSE;md5=d526b6d0807bf263b97da1da876f39b1" | ||
| 6 | |||
| 7 | S = "${WORKDIR}/git" | ||
| 8 | |||
| 9 | DEPENDS += "openssl" | ||
| 10 | RDEPENDS:${PN} += "openssl" | ||
| 11 | |||
| 12 | REPO ?= "git://github.com/Xilinx/bootgen.git;protocol=https" | ||
| 13 | BRANCH = "xlnx_rel_v2023.2" | ||
| 14 | SRCREV = "8e6702bb5064b806e45028486de7376962470a36" | ||
| 15 | |||
| 16 | BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}" | ||
| 17 | SRC_URI = "${REPO};${BRANCHARG}" | ||
| 18 | |||
| 19 | EXTRA_OEMAKE += 'CROSS_COMPILER="${CXX}" -C ${S}' | ||
| 20 | CXXFLAGS:append = " -std=c++0x" | ||
| 21 | |||
| 22 | TARGET_CC_ARCH += "${LDFLAGS}" | ||
| 23 | |||
| 24 | do_install() { | ||
| 25 | install -d ${D}${bindir} | ||
| 26 | install -Dm 0755 ${S}/bootgen ${D}${bindir} | ||
| 27 | } | ||
| 28 | |||
| 29 | FILES:${PN} = "${bindir}/bootgen" | ||
| 30 | |||
| 31 | BBCLASSEXTEND = "native nativesdk" | ||
diff --git a/meta-xilinx-core/recipes-bsp/device-tree/device-tree.bb b/meta-xilinx-core/recipes-bsp/device-tree/device-tree.bb index 91a13fa1..8d7211f5 100644 --- a/meta-xilinx-core/recipes-bsp/device-tree/device-tree.bb +++ b/meta-xilinx-core/recipes-bsp/device-tree/device-tree.bb | |||
| @@ -9,6 +9,11 @@ LIC_FILES_CHKSUM = " \ | |||
| 9 | file://${COMMON_LICENSE_DIR}/GPL-2.0-or-later;md5=fed54355545ffd980b814dab4a3b312c \ | 9 | file://${COMMON_LICENSE_DIR}/GPL-2.0-or-later;md5=fed54355545ffd980b814dab4a3b312c \ |
| 10 | " | 10 | " |
| 11 | 11 | ||
| 12 | # Since we're not based on a kernel default to nothing. | ||
| 13 | # This needs to be before the devicetree inherit, as it configured for use | ||
| 14 | # with a linux kernel by default. | ||
| 15 | KERNEL_INCLUDE ?= "" | ||
| 16 | |||
| 12 | inherit devicetree image-artifact-names | 17 | inherit devicetree image-artifact-names |
| 13 | 18 | ||
| 14 | # Fall back to SYSTEM_DTFILE if specified... | 19 | # Fall back to SYSTEM_DTFILE if specified... |
| @@ -17,7 +22,29 @@ inherit devicetree image-artifact-names | |||
| 17 | # system. | 22 | # system. |
| 18 | SYSTEM_DTFILE ??= "" | 23 | SYSTEM_DTFILE ??= "" |
| 19 | CONFIG_DTFILE ??= "${SYSTEM_DTFILE}" | 24 | CONFIG_DTFILE ??= "${SYSTEM_DTFILE}" |
| 20 | DT_FILES_PATH = "${@os.path.dirname(d.getVar('CONFIG_DTFILE')) if d.getVar('CONFIG_DTFILE') else d.getVar('S')}" | 25 | |
| 26 | BASE_DTS ?= "${@os.path.basename(d.getVar('CONFIG_DTFILE') or '').rstrip('.dtb').rstrip('.dts') or 'system-top'}" | ||
| 27 | |||
| 28 | EXTRA_DT_FILES ?= "" | ||
| 29 | EXTRA_DTFILE_PREFIX ?= "system-top" | ||
| 30 | EXTRA_DTFILES_BUNDLE ?= "" | ||
| 31 | UBOOT_DT_FILES ?= "" | ||
| 32 | UBOOT_DTFILE_PREFIX ?= "system-top" | ||
| 33 | UBOOT_DTFILES_BUNDLE ?= "" | ||
| 34 | EXTRA_OVERLAYS ?= "" | ||
| 35 | |||
| 36 | SYSTEM_DTFILE[doc] = "System Device Tree which accepts at 0...1 dts file" | ||
| 37 | CONFIG_DTFILE[doc] = "Domain Specific Device Tree which accepts 0...1 dts file" | ||
| 38 | EXTRA_DT_FILES[doc] = "Add extra files to DT_FILES_PATH, it accepts 1...n dtsi files and adds to SRC_URI" | ||
| 39 | EXTRA_OVERLAYS[doc] = "Add extra files to DT_FILES_PATH and adds a #include for each to the BASE_DTS, it access 1..n dtsi files and adds to SRC_URI" | ||
| 40 | |||
| 41 | # There should only be ONE CONFIG_DTFILE listed | ||
| 42 | # These need to be passed in from global, not from a bbappend | ||
| 43 | FILESEXTRAPATHS:prepend := "${@'%s:' % os.path.dirname(d.getVar('CONFIG_DTFILE') or '') if (d.getVar('CONFIG_DTFILE')) else ''}" | ||
| 44 | SRC_URI:append := " ${@'file://%s' % os.path.basename(d.getVar('CONFIG_DTFILE') or '') if (d.getVar('CONFIG_DTFILE')) else ''}" | ||
| 45 | |||
| 46 | SRC_URI:append = " ${@" ".join(["file://%s" % f for f in (d.getVar('EXTRA_DT_FILES') or "").split()])}" | ||
| 47 | SRC_URI:append = " ${@" ".join(["file://%s" % f for f in (d.getVar('EXTRA_OVERLAYS') or "").split()])}" | ||
| 21 | 48 | ||
| 22 | COMPATIBLE_MACHINE:zynq = ".*" | 49 | COMPATIBLE_MACHINE:zynq = ".*" |
| 23 | COMPATIBLE_MACHINE:zynqmp = ".*" | 50 | COMPATIBLE_MACHINE:zynqmp = ".*" |
| @@ -30,11 +57,71 @@ PROVIDES = "virtual/dtb" | |||
| 30 | # common zynq include | 57 | # common zynq include |
| 31 | SRC_URI:append:zynq = " file://zynq-7000-qspi-dummy.dtsi" | 58 | SRC_URI:append:zynq = " file://zynq-7000-qspi-dummy.dtsi" |
| 32 | 59 | ||
| 33 | DTB_FILE_NAME = "${@os.path.basename(d.getVar('CONFIG_DTFILE')).replace('.dts', '.dtb') if d.getVar('CONFIG_DTFILE') else ''}" | 60 | DTB_FILE_NAME ?= "${BASE_DTS}.dtb" |
| 34 | 61 | ||
| 35 | DTB_BASE_NAME ?= "${MACHINE}-system${IMAGE_VERSION_SUFFIX}" | 62 | DTB_BASE_NAME ?= "${MACHINE}-system${IMAGE_VERSION_SUFFIX}" |
| 36 | 63 | ||
| 64 | # Copy the EXTRA_DT_FILES and EXTRA_OVERLAYS files in prepend operation so that | ||
| 65 | # it can be preprocessed. | ||
| 66 | do_configure:prepend () { | ||
| 67 | # Create DT_FILES_PATH directory if doesn't exist during prepend operation. | ||
| 68 | if [ ! -d ${DT_FILES_PATH} ]; then | ||
| 69 | mkdir -p ${DT_FILES_PATH} | ||
| 70 | fi | ||
| 71 | |||
| 72 | for f in ${EXTRA_DT_FILES} ${EXTRA_OVERLAYS}; do | ||
| 73 | if [ "$(realpath ${WORKDIR}/${f})" != "$(realpath ${DT_FILES_PATH}/`basename ${f}`)" ]; then | ||
| 74 | cp ${WORKDIR}/${f} ${DT_FILES_PATH}/ | ||
| 75 | fi | ||
| 76 | done | ||
| 77 | } | ||
| 78 | |||
| 79 | do_configure:append () { | ||
| 80 | for f in ${EXTRA_OVERLAYS}; do | ||
| 81 | if [ ! -e ${DT_FILES_PATH}/${BASE_DTS}.dts ]; then | ||
| 82 | if [ -e ${DT_FILES_PATH}/${BASE_DTS}.dtb ]; then | ||
| 83 | bberror "Unable to find ${BASE_DTS}.dts, to use EXTRA_OVERLAYS you must use a 'dts' and not 'dtb' in CONFIG_DTFILE" | ||
| 84 | else | ||
| 85 | bberror "Unable to find ${BASE_DTS}.dts, to use EXTRA_OVERLAYS you must set a valid CONFIG_DTFILE or use system-top.dts" | ||
| 86 | fi | ||
| 87 | exit 1 | ||
| 88 | fi | ||
| 89 | echo "/include/ \"$f\"" >> ${DT_FILES_PATH}/${BASE_DTS}.dts | ||
| 90 | done | ||
| 91 | } | ||
| 92 | |||
| 93 | devicetree_do_compile:append() { | ||
| 94 | import subprocess | ||
| 95 | |||
| 96 | dtb_file = d.getVar('DTB_FILE_NAME') or '' | ||
| 97 | if not dtb_file or not os.path.isfile(dtb_file): | ||
| 98 | bb.error("Expected file ${DTB_FILE_NAME} doesn't exist") | ||
| 99 | |||
| 100 | if d.getVar('EXTRA_DTFILES_BUNDLE'): | ||
| 101 | ccdtb_prefix = d.getVar('EXTRA_DTFILE_PREFIX') | ||
| 102 | extra_dt_files = d.getVar('EXTRA_DT_FILES').split() or [] | ||
| 103 | |||
| 104 | for dtsfile in extra_dt_files: | ||
| 105 | dtname = os.path.splitext(os.path.basename(dtsfile))[0] | ||
| 106 | if os.path.isfile(f"{dtname}.dtbo"): | ||
| 107 | fdtargs = ["fdtoverlay", "-o", f"{ccdtb_prefix}-{dtname}.dtb", "-i", dtb_file, f"{dtname}.dtbo"] | ||
| 108 | bb.note("Running {0}".format(" ".join(fdtargs))) | ||
| 109 | subprocess.run(fdtargs, check = True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) | ||
| 110 | |||
| 111 | if d.getVar('UBOOT_DTFILES_BUNDLE'): | ||
| 112 | uboot_ccdtb_prefix = d.getVar('UBOOT_DTFILE_PREFIX') | ||
| 113 | uboot_dt_files = d.getVar('UBOOT_DT_FILES').split() or [] | ||
| 114 | |||
| 115 | for dtsfile in uboot_dt_files: | ||
| 116 | dtname = os.path.splitext(os.path.basename(dtsfile))[0] | ||
| 117 | if os.path.isfile(f"{dtname}.dtbo"): | ||
| 118 | fdtargs = ["fdtoverlay", "-o", f"{uboot_ccdtb_prefix}-{dtname}.dtb", "-i", dtb_file, f"{dtname}.dtbo"] | ||
| 119 | bb.note("Running {0}".format(" ".join(fdtargs))) | ||
| 120 | subprocess.run(fdtargs, check = True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) | ||
| 121 | } | ||
| 122 | |||
| 37 | FILES:${PN} += "/boot/system.dtb" | 123 | FILES:${PN} += "/boot/system.dtb" |
| 124 | |||
| 38 | devicetree_do_install:append() { | 125 | devicetree_do_install:append() { |
| 39 | if [ -n "${DTB_FILE_NAME}" ]; then | 126 | if [ -n "${DTB_FILE_NAME}" ]; then |
| 40 | # If it's already a dtb, we have to copy from the original location | 127 | # If it's already a dtb, we have to copy from the original location |
| @@ -73,14 +160,6 @@ def check_devicetree_variables(d): | |||
| 73 | 160 | ||
| 74 | if not d.getVar('CONFIG_DTFILE'): | 161 | if not d.getVar('CONFIG_DTFILE'): |
| 75 | raise bb.parse.SkipRecipe("CONFIG_DTFILE or SYSTEM_DTFILE is not defined.") | 162 | raise bb.parse.SkipRecipe("CONFIG_DTFILE or SYSTEM_DTFILE is not defined.") |
| 76 | else: | ||
| 77 | if not os.path.exists(d.getVar('CONFIG_DTFILE')): | ||
| 78 | if not d.getVar('WITHIN_EXT_SDK'): | ||
| 79 | raise bb.parse.SkipRecipe("The device tree %s is not available." % d.getVar('CONFIG_DTFILE')) | ||
| 80 | else: | ||
| 81 | d.appendVar('SRC_URI', ' file://${CONFIG_DTFILE}') | ||
| 82 | d.setVarFlag('do_install', 'file-checksums', '${CONFIG_DTFILE}:True') | ||
| 83 | d.setVarFlag('do_deploy', 'file-checksums', '${CONFIG_DTFILE}:True') | ||
| 84 | 163 | ||
| 85 | python() { | 164 | python() { |
| 86 | # Need to allow bbappends to change the check | 165 | # Need to allow bbappends to change the check |
diff --git a/meta-xilinx-core/recipes-bsp/dfx-mgr/dfx-mgr_2023.2.bb b/meta-xilinx-core/recipes-bsp/dfx-mgr/dfx-mgr_2023.2.bb new file mode 100644 index 00000000..0d24c9fc --- /dev/null +++ b/meta-xilinx-core/recipes-bsp/dfx-mgr/dfx-mgr_2023.2.bb | |||
| @@ -0,0 +1,72 @@ | |||
| 1 | SUMMARY = "Xilinx dfx-mgr libraries" | ||
| 2 | DESCRIPTION = "Xilinx Runtime User Space Libraries and Binaries" | ||
| 3 | |||
| 4 | LICENSE = "MIT" | ||
| 5 | LIC_FILES_CHKSUM = "file://LICENSE;md5=d67bcef754e935bf77b6d7051bd62b5e" | ||
| 6 | |||
| 7 | REPO ?= "git://github.com/Xilinx/dfx-mgr.git;protocol=https" | ||
| 8 | BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}" | ||
| 9 | SRC_URI = "${REPO};${BRANCHARG}" | ||
| 10 | |||
| 11 | BRANCH = "xlnx_rel_v2023.2" | ||
| 12 | SRCREV = "4dbd33accb043bd92ecbec2a3507f85a22045c51" | ||
| 13 | SOMAJOR = "1" | ||
| 14 | SOMINOR = "0" | ||
| 15 | SOVERSION = "${SOMAJOR}.${SOMINOR}" | ||
| 16 | |||
| 17 | COMPATIBLE_MACHINE = "^$" | ||
| 18 | COMPATIBLE_MACHINE:zynqmp = "zynqmp" | ||
| 19 | COMPATIBLE_MACHINE:versal = "versal" | ||
| 20 | |||
| 21 | S = "${WORKDIR}/git" | ||
| 22 | |||
| 23 | inherit cmake update-rc.d systemd | ||
| 24 | |||
| 25 | DEPENDS += " libwebsockets inotify-tools libdfx zocl libdrm" | ||
| 26 | RDEPENDS:${PN} += " freeipmi" | ||
| 27 | EXTRA_OECMAKE += " \ | ||
| 28 | -DCMAKE_SYSROOT:PATH=${RECIPE_SYSROOT} \ | ||
| 29 | " | ||
| 30 | |||
| 31 | INITSCRIPT_NAME = "dfx-mgr.sh" | ||
| 32 | INITSCRIPT_PARAMS = "start 99 S ." | ||
| 33 | |||
| 34 | SYSTEMD_PACKAGES="${PN}" | ||
| 35 | SYSTEMD_SERVICE:${PN}="dfx-mgr.service" | ||
| 36 | SYSTEMD_AUTO_ENABLE:${PN}="enable" | ||
| 37 | |||
| 38 | |||
| 39 | do_install(){ | ||
| 40 | install -d ${D}${bindir} | ||
| 41 | install -d ${D}${libdir} | ||
| 42 | install -d ${D}${includedir} | ||
| 43 | install -d ${D}${base_libdir}/firmware/xilinx | ||
| 44 | install -d ${D}${sysconfdir}/dfx-mgrd | ||
| 45 | |||
| 46 | cp ${B}/example/sys/linux/dfx-mgrd-static ${D}${bindir}/dfx-mgrd | ||
| 47 | cp ${B}/example/sys/linux/dfx-mgr-client-static ${D}${bindir}/dfx-mgr-client | ||
| 48 | chrpath -d ${D}${bindir}/dfx-mgrd | ||
| 49 | chrpath -d ${D}${bindir}/dfx-mgr-client | ||
| 50 | install -m 0644 ${S}/src/dfxmgr_client.h ${D}${includedir} | ||
| 51 | |||
| 52 | oe_soinstall ${B}/src/libdfx-mgr.so.${SOVERSION} ${D}${libdir} | ||
| 53 | |||
| 54 | install -m 0755 ${S}/src/daemon.conf ${D}${sysconfdir}/dfx-mgrd/ | ||
| 55 | |||
| 56 | if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then | ||
| 57 | install -d ${D}${sysconfdir}/init.d/ | ||
| 58 | install -m 0755 ${S}/src/dfx-mgr.sh ${D}${sysconfdir}/init.d/ | ||
| 59 | fi | ||
| 60 | |||
| 61 | install -m 0755 ${S}/src/dfx-mgr.sh ${D}${bindir} | ||
| 62 | install -m 0755 ${S}/src/scripts/xlnx-firmware-detect ${D}${bindir} | ||
| 63 | |||
| 64 | install -d ${D}${systemd_system_unitdir} | ||
| 65 | install -m 0644 ${S}/src/dfx-mgr.service ${D}${systemd_system_unitdir} | ||
| 66 | } | ||
| 67 | |||
| 68 | PACKAGES =+ "libdfx-mgr" | ||
| 69 | |||
| 70 | FILES:${PN} += "${base_libdir}/firmware/xilinx" | ||
| 71 | FILES:${PN} += "${@bb.utils.contains('DISTRO_FEATURES','sysvinit','${sysconfdir}/init.d/dfx-mgr.sh', '', d)} ${systemd_system_unitdir}" | ||
| 72 | FILES:libdfx-mgr = "${libdir}/libdfx-mgr.so.${SOVERSION} ${libdir}/libdfx-mgr.so.${SOMAJOR}" | ||
diff --git a/meta-xilinx-core/recipes-bsp/libdfx/libdfx_2023.2.bb b/meta-xilinx-core/recipes-bsp/libdfx/libdfx_2023.2.bb new file mode 100644 index 00000000..b3ccb884 --- /dev/null +++ b/meta-xilinx-core/recipes-bsp/libdfx/libdfx_2023.2.bb | |||
| @@ -0,0 +1,23 @@ | |||
| 1 | SUMMARY = "Xilinx libdfx library" | ||
| 2 | DESCRIPTION = "Xilinx libdfx Library and headers" | ||
| 3 | |||
| 4 | LICENSE = "MIT & GPL-2.0-or-later" | ||
| 5 | LIC_FILES_CHKSUM = "file://LICENSE.md;md5=94aba86aec117f003b958a52f019f1a7" | ||
| 6 | |||
| 7 | BRANCH ?= "xlnx_rel_v2023.2" | ||
| 8 | REPO ?= "git://github.com/Xilinx/libdfx.git;protocol=https" | ||
| 9 | BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}" | ||
| 10 | SRC_URI = "${REPO};${BRANCHARG}" | ||
| 11 | SRCREV = "52c1d83c72a2b2e85d256411a199ed1baed12ae1" | ||
| 12 | |||
| 13 | COMPATIBLE_MACHINE = "^$" | ||
| 14 | COMPATIBLE_MACHINE:zynqmp = "zynqmp" | ||
| 15 | COMPATIBLE_MACHINE:versal = "versal" | ||
| 16 | |||
| 17 | S = "${WORKDIR}/git" | ||
| 18 | |||
| 19 | inherit cmake | ||
| 20 | |||
| 21 | # Due to an update where the soname/version was defined, we need to use an RREPLACES | ||
| 22 | # so updates will work properly. | ||
| 23 | RREPLACES:${PN} = "libdfx" | ||
diff --git a/meta-xilinx-core/recipes-bsp/u-boot/u-boot-tools-xlnx_2023.2.bb b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-tools-xlnx_2023.2.bb new file mode 100644 index 00000000..43fec635 --- /dev/null +++ b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-tools-xlnx_2023.2.bb | |||
| @@ -0,0 +1,21 @@ | |||
| 1 | require u-boot-tools-xlnx.inc | ||
| 2 | require u-boot-xlnx-2023.2.inc | ||
| 3 | |||
| 4 | # MUST clear CONFIG_VIDEO to avoid a compilation failure trying to construct | ||
| 5 | # bmp_logo.h | ||
| 6 | SED_CONFIG_EFI:append = ' -e "s/CONFIG_VIDEO=.*/# CONFIG_VIDEO is not set/"' | ||
| 7 | |||
| 8 | # Default do_compile fails with: | ||
| 9 | # | error: object directory ../downloads/git2/github.com.Xilinx.u-boot-xlnx.git/objects does not exist; check .git/objects/info/alternates. | ||
| 10 | # The regular workaround of calling 'git diff' seems to be problematic. | ||
| 11 | do_compile () { | ||
| 12 | oe_runmake -C ${S} tools-only_defconfig O=${B} | ||
| 13 | |||
| 14 | # Disable CONFIG_CMD_LICENSE, license.h is not used by tools and | ||
| 15 | # generating it requires bin2header tool, which for target build | ||
| 16 | # is built with target tools and thus cannot be executed on host. | ||
| 17 | sed -i -e "s/CONFIG_CMD_LICENSE=.*/# CONFIG_CMD_LICENSE is not set/" ${SED_CONFIG_EFI} ${B}/.config | ||
| 18 | |||
| 19 | oe_runmake -C ${S} cross_tools NO_SDL=1 O=${B} | ||
| 20 | } | ||
| 21 | |||
diff --git a/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-2023.2.inc b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-2023.2.inc new file mode 100644 index 00000000..0cfbd846 --- /dev/null +++ b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-2023.2.inc | |||
| @@ -0,0 +1,17 @@ | |||
| 1 | UBOOT_VERSION = "v2023.01" | ||
| 2 | |||
| 3 | UBRANCH = "xlnx_rebase_v2023.01" | ||
| 4 | |||
| 5 | SRCREV = "0fc19cad5a07a09958443e7a5b6f11e420ef195c" | ||
| 6 | |||
| 7 | LICENSE = "GPL-2.0-or-later" | ||
| 8 | LIC_FILES_CHKSUM = "file://README;beginline=1;endline=4;md5=744e7e3bb0c94b4b9f6b3db3bf893897" | ||
| 9 | |||
| 10 | # u-boot-xlnx has support for these | ||
| 11 | HAS_PLATFORM_INIT ?= " \ | ||
| 12 | xilinx_zynqmp_virt_config \ | ||
| 13 | xilinx_zynq_virt_defconfig \ | ||
| 14 | xilinx_versal_vc_p_a2197_revA_x_prc_01_revA \ | ||
| 15 | " | ||
| 16 | |||
| 17 | DEPENDS += "bc-native dtc-native python3-setuptools-native gnutls-native" | ||
diff --git a/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-blob.inc b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-blob.inc index 86ba4fc6..bbf4125f 100644 --- a/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-blob.inc +++ b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-blob.inc | |||
| @@ -101,7 +101,7 @@ do_blob_generate () { | |||
| 101 | BASE_DTB=$(echo $CC_DTB | cut -d: -f2) | 101 | BASE_DTB=$(echo $CC_DTB | cut -d: -f2) |
| 102 | OUTPUT_DTB=$(echo $CC_DTB | cut -d: -f3) | 102 | OUTPUT_DTB=$(echo $CC_DTB | cut -d: -f3) |
| 103 | if [ "${SYSTEM_DTB_BLOB}" = "1" ]; then | 103 | if [ "${SYSTEM_DTB_BLOB}" = "1" ]; then |
| 104 | BASE_SYS_DTB="${RECIPE_SYSROOT}/${DTB_PATH}/${DTB_NAME}" | 104 | BASE_SYS_DTB="${RECIPE_SYSROOT}/${DTB_PATH}/${DTB_FILE_NAME}" |
| 105 | else | 105 | else |
| 106 | BASE_SYS_DTB="${B}/arch/arm/dts/${BASE_DTB}" | 106 | BASE_SYS_DTB="${B}/arch/arm/dts/${BASE_DTB}" |
| 107 | fi | 107 | fi |
| @@ -125,13 +125,13 @@ do_blob_generate () { | |||
| 125 | its_filename="dtblob.its" | 125 | its_filename="dtblob.its" |
| 126 | dtblob_emit_its_section "${its_filename}" "header" | 126 | dtblob_emit_its_section "${its_filename}" "header" |
| 127 | dtblob_emit_its_section "${its_filename}" "imagestart" | 127 | dtblob_emit_its_section "${its_filename}" "imagestart" |
| 128 | for dtb in ${RECIPE_SYSROOT}/${DTB_PATH}/${DTB_NAME} $(find ${DT_BLOB_DIR} -name '*.dtb' | sort); do | 128 | for dtb in ${RECIPE_SYSROOT}/${DTB_PATH}/${DTB_FILE_NAME} $(find ${DT_BLOB_DIR} -name '*.dtb' | sort); do |
| 129 | dtblob_emit_dtb "${its_filename}" "$(basename $dtb .dtb)" "$dtb" | 129 | dtblob_emit_dtb "${its_filename}" "$(basename $dtb .dtb)" "$dtb" |
| 130 | done | 130 | done |
| 131 | dtblob_emit_its_section "${its_filename}" "sectend" | 131 | dtblob_emit_its_section "${its_filename}" "sectend" |
| 132 | dtblob_emit_its_section "${its_filename}" "confstart" | 132 | dtblob_emit_its_section "${its_filename}" "confstart" |
| 133 | dtbcount=1 | 133 | dtbcount=1 |
| 134 | for dtb in ${RECIPE_SYSROOT}/${DTB_PATH}/${DTB_NAME} $(find ${DT_BLOB_DIR} -name '*.dtb' | sort); do | 134 | for dtb in ${RECIPE_SYSROOT}/${DTB_PATH}/${DTB_FILE_NAME} $(find ${DT_BLOB_DIR} -name '*.dtb' | sort); do |
| 135 | dtblob_emit_config "${its_filename}" "$(basename $dtb .dtb)" "$(basename $dtb .dtb)" "$dtbcount" | 135 | dtblob_emit_config "${its_filename}" "$(basename $dtb .dtb)" "$(basename $dtb .dtb)" "$dtbcount" |
| 136 | dtbcount=`expr $dtbcount + 1` | 136 | dtbcount=`expr $dtbcount + 1` |
| 137 | done | 137 | done |
| @@ -143,6 +143,8 @@ do_blob_generate () { | |||
| 143 | bbnote "Node ${DT_BLOB_DIR}/${DTB} with ${DT_BLOB_DIR}/${DUP_DTB}" | 143 | bbnote "Node ${DT_BLOB_DIR}/${DTB} with ${DT_BLOB_DIR}/${DUP_DTB}" |
| 144 | dtblob_emit_config "${its_filename}" "$DTB" "$DUP_DTB" "$dtbcount" | 144 | dtblob_emit_config "${its_filename}" "$DTB" "$DUP_DTB" "$dtbcount" |
| 145 | dtbcount=`expr $dtbcount + 1` | 145 | dtbcount=`expr $dtbcount + 1` |
| 146 | else | ||
| 147 | bberror "CC_DTBS_DUP file not found ${DT_BLOB_DIR}/${DTB}.dtb" | ||
| 146 | fi | 148 | fi |
| 147 | done | 149 | done |
| 148 | 150 | ||
diff --git a/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-scr.bb b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-scr.bb index 187b01d9..6410fc25 100644 --- a/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-scr.bb +++ b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-scr.bb | |||
| @@ -38,25 +38,25 @@ DDR_BASEADDR:microblaze ?= "0x80000000" | |||
| 38 | PRE_BOOTENV ?= "" | 38 | PRE_BOOTENV ?= "" |
| 39 | 39 | ||
| 40 | SRC_URI = " \ | 40 | SRC_URI = " \ |
| 41 | file://boot.cmd.sd.zynq \ | 41 | file://boot.cmd.sd.zynq \ |
| 42 | file://boot.cmd.sd.zynqmp \ | 42 | file://boot.cmd.sd.zynqmp \ |
| 43 | file://boot.cmd.sd.versal \ | 43 | file://boot.cmd.sd.versal \ |
| 44 | file://boot.cmd.qspi.versal \ | 44 | file://boot.cmd.qspi.versal \ |
| 45 | file://boot.cmd.generic \ | 45 | file://boot.cmd.generic \ |
| 46 | file://boot.cmd.generic.root \ | 46 | file://boot.cmd.generic.root \ |
| 47 | file://boot.cmd.ubifs \ | 47 | file://boot.cmd.ubifs \ |
| 48 | file://pxeboot.pxe \ | 48 | file://pxeboot.pxe \ |
| 49 | " | 49 | " |
| 50 | 50 | ||
| 51 | # Even thought we don't create a package, make sure this is unique to the machine | 51 | # Even thought we don't create a package, make sure this is unique to the machine |
| 52 | PACKAGE_ARCH = "${MACHINE_ARCH}" | 52 | PACKAGE_ARCH = "${MACHINE_ARCH}" |
| 53 | 53 | ||
| 54 | inherit image-artifact-names | 54 | inherit image-artifact-names |
| 55 | UENV_TEXTFILE ?= "uEnv.txt" | 55 | UENV_TEXTFILE ?= "uEnv.txt" |
| 56 | UENV_MMC_OFFSET:zynqmp ?= "0x200000" | 56 | UENV_MMC_OFFSET:zynqmp ??= "0x200000" |
| 57 | UENV_MMC_OFFSET:zynq ?= "0x2080000" | 57 | UENV_MMC_OFFSET:zynq ??= "0x2080000" |
| 58 | UENV_MMC_OFFSET:versal ?= "0x200000" | 58 | UENV_MMC_OFFSET:versal ??= "0x200000" |
| 59 | UENV_MMC_OFFSET:microblaze ?= "0x0" | 59 | UENV_MMC_OFFSET:microblaze ??= "0x0" |
| 60 | 60 | ||
| 61 | UENV_MMC_LOAD_ADDRESS ?= "${@append_baseaddr(d,d.getVar('UENV_MMC_OFFSET'))}" | 61 | UENV_MMC_LOAD_ADDRESS ?= "${@append_baseaddr(d,d.getVar('UENV_MMC_OFFSET'))}" |
| 62 | 62 | ||
| @@ -66,80 +66,87 @@ UBOOTPXE_CONFIG_NAME = "${UBOOTPXE_CONFIG}${IMAGE_VERSION_SUFFIX}" | |||
| 66 | 66 | ||
| 67 | DEVICETREE_ADDRESS ?= "${@append_baseaddr(d,d.getVar('DEVICETREE_OFFSET'))}" | 67 | DEVICETREE_ADDRESS ?= "${@append_baseaddr(d,d.getVar('DEVICETREE_OFFSET'))}" |
| 68 | 68 | ||
| 69 | DEVICETREE_OFFSET:microblaze ?= "0x1e00000" | 69 | DEVICETREE_OFFSET:microblaze ??= "0x1e00000" |
| 70 | DEVICETREE_OFFSET:zynqmp ?= "0x100000" | 70 | DEVICETREE_OFFSET:zynqmp ??= "0x100000" |
| 71 | DEVICETREE_OFFSET:zynq ?= "0x100000" | 71 | DEVICETREE_OFFSET:zynq ??= "0x100000" |
| 72 | DEVICETREE_OFFSET:versal ?= "0x1000" | 72 | DEVICETREE_OFFSET:versal ??= "0x1000" |
| 73 | 73 | ||
| 74 | DEVICETREE_OVERLAY_ADDRESS ?= "${@hex(int(d.getVar("DEVICETREE_ADDRESS"),16) + 0xf00000)}" | 74 | DEVICETREE_OVERLAY_OFFSET:microblaze ??= "0x1e00000" |
| 75 | DEVICETREE_OVERLAY_OFFSET:zynqmp ??= "0x100000" | ||
| 76 | DEVICETREE_OVERLAY_OFFSET:zynq ??= "0x100000" | ||
| 77 | DEVICETREE_OVERLAY_OFFSET:versal ??= "0x1000" | ||
| 78 | DEVICETREE_OVERLAY_PADSIZE ??= "0xf00000" | ||
| 79 | |||
| 80 | DEVICETREE_OVERLAY_ADDRESS ?= "${@hex(int(append_baseaddr(d,d.getVar('DEVICETREE_OVERLAY_OFFSET')),16) \ | ||
| 81 | + int(d.getVar('DEVICETREE_OVERLAY_PADSIZE'),16))}" | ||
| 75 | 82 | ||
| 76 | KERNEL_LOAD_ADDRESS ?= "${@append_baseaddr(d,d.getVar('KERNEL_OFFSET'))}" | 83 | KERNEL_LOAD_ADDRESS ?= "${@append_baseaddr(d,d.getVar('KERNEL_OFFSET'))}" |
| 77 | 84 | ||
| 78 | KERNEL_OFFSET:microblaze ?= "0x0" | 85 | KERNEL_OFFSET:microblaze ??= "0x0" |
| 79 | KERNEL_OFFSET:zynqmp ?= "0x200000" | 86 | KERNEL_OFFSET:zynqmp ??= "0x200000" |
| 80 | KERNEL_OFFSET:zynq ?= "0x200000" | 87 | KERNEL_OFFSET:zynq ??= "0x200000" |
| 81 | KERNEL_OFFSET:versal ?= "0x200000" | 88 | KERNEL_OFFSET:versal ??= "0x200000" |
| 82 | 89 | ||
| 83 | KERNEL_IMAGE ?= "${KERNEL_IMAGETYPE}" | 90 | KERNEL_IMAGE ?= "${KERNEL_IMAGETYPE}" |
| 84 | 91 | ||
| 85 | RAMDISK_IMAGE_ADDRESS ?= "${@append_baseaddr(d,d.getVar('RAMDISK_OFFSET'))}" | 92 | RAMDISK_IMAGE_ADDRESS ?= "${@append_baseaddr(d,d.getVar('RAMDISK_OFFSET'))}" |
| 86 | 93 | ||
| 87 | RAMDISK_OFFSET:microblaze ?= "0x2e00000" | 94 | RAMDISK_OFFSET:microblaze ??= "0x2e00000" |
| 88 | RAMDISK_OFFSET:zynq ?= "0x4000000" | 95 | RAMDISK_OFFSET:zynq ??= "0x4000000" |
| 89 | RAMDISK_OFFSET:zynqmp ?= "0x4000000" | 96 | RAMDISK_OFFSET:zynqmp ??= "0x4000000" |
| 90 | RAMDISK_OFFSET:versal ?= "0x4000000" | 97 | RAMDISK_OFFSET:versal ??= "0x4000000" |
| 91 | 98 | ||
| 92 | FIT_IMAGE_LOAD_ADDRESS ?= "${@append_baseaddr(d,d.getVar('FIT_IMAGE_OFFSET'))}" | 99 | FIT_IMAGE_LOAD_ADDRESS ?= "${@append_baseaddr(d,d.getVar('FIT_IMAGE_OFFSET'))}" |
| 93 | FIT_IMAGE_OFFSET ?= "0x10000000" | 100 | FIT_IMAGE_OFFSET ??= "0x10000000" |
| 94 | FIT_IMAGE ?= "image.ub" | 101 | FIT_IMAGE ?= "image.ub" |
| 95 | 102 | ||
| 96 | ## Below offsets and sizes are based on 32MB QSPI Memory for zynq | 103 | ## Below offsets and sizes are based on 32MB QSPI Memory for zynq |
| 97 | ## For MB | 104 | ## For MB |
| 98 | ## Load boot.scr at 0xFC0000 -> 15MB of QSPI/NAND Memory | 105 | ## Load boot.scr at 0xFC0000 -> 15MB of QSPI/NAND Memory |
| 99 | QSPI_KERNEL_OFFSET:microblaze ?= "0xBC0000" | 106 | QSPI_KERNEL_OFFSET:microblaze ??= "0xBC0000" |
| 100 | QSPI_KERNEL_SIZE:microblaze ?= "0x500000" | 107 | QSPI_KERNEL_SIZE:microblaze ??= "0x500000" |
| 101 | QSPI_RAMDISK_SIZE:microblaze ?= "0xA00000" | 108 | QSPI_RAMDISK_SIZE:microblaze ??= "0xA00000" |
| 102 | QSPI_RAMDISK_SIZE:microblaze ?= "0x4000000" | 109 | QSPI_RAMDISK_SIZE:microblaze ??= "0x4000000" |
| 103 | 110 | ||
| 104 | ## For zynq | 111 | ## For zynq |
| 105 | ## Load boot.scr at 0xFC0000 -> 15MB of QSPI/NAND Memory | 112 | ## Load boot.scr at 0xFC0000 -> 15MB of QSPI/NAND Memory |
| 106 | QSPI_KERNEL_OFFSET:zynq ?= "0xA00000" | 113 | QSPI_KERNEL_OFFSET:zynq ??= "0xA00000" |
| 107 | QSPI_RAMDISK_OFFSET:zynq ?= "0x1000000" | 114 | QSPI_RAMDISK_OFFSET:zynq ??= "0x1000000" |
| 108 | 115 | ||
| 109 | NAND_KERNEL_OFFSET:zynq ?= "0x1000000" | 116 | NAND_KERNEL_OFFSET:zynq ??= "0x1000000" |
| 110 | NAND_RAMDISK_OFFSET:zynq ?= "0x4600000" | 117 | NAND_RAMDISK_OFFSET:zynq ??= "0x4600000" |
| 111 | 118 | ||
| 112 | QSPI_KERNEL_SIZE:zynq ?= "0x600000" | 119 | QSPI_KERNEL_SIZE:zynq ??= "0x600000" |
| 113 | QSPI_RAMDISK_SIZE:zynq ?= "0xF80000" | 120 | QSPI_RAMDISK_SIZE:zynq ??= "0xF80000" |
| 114 | 121 | ||
| 115 | NAND_KERNEL_SIZE ?= "0x3200000" | 122 | NAND_KERNEL_SIZE ??= "0x3200000" |
| 116 | NAND_RAMDISK_SIZE ?= "0x3200000" | 123 | NAND_RAMDISK_SIZE ??= "0x3200000" |
| 117 | 124 | ||
| 118 | ## Below offsets and sizes are based on 128MB QSPI Memory for zynqmp/versal | 125 | ## Below offsets and sizes are based on 128MB QSPI Memory for zynqmp/versal |
| 119 | ## For zynqMP | 126 | ## For zynqMP |
| 120 | ## Load boot.scr at 0x3E80000 -> 62MB of QSPI/NAND Memory | 127 | ## Load boot.scr at 0x3E80000 -> 62MB of QSPI/NAND Memory |
| 121 | QSPI_KERNEL_OFFSET ?= "0xF00000" | 128 | QSPI_KERNEL_OFFSET ??= "0xF00000" |
| 122 | QSPI_KERNEL_OFFSET:zynqmpdr ?= "0x3F00000" | 129 | QSPI_KERNEL_OFFSET:zynqmpdr ??= "0x3F00000" |
| 123 | QSPI_RAMDISK_OFFSET ?= "0x4000000" | 130 | QSPI_RAMDISK_OFFSET ??= "0x4000000" |
| 124 | QSPI_RAMDISK_OFFSET:zynqmpdr ?= "0x5D00000" | 131 | QSPI_RAMDISK_OFFSET:zynqmpdr ??= "0x5D00000" |
| 125 | 132 | ||
| 126 | NAND_KERNEL_OFFSET:zynqmp ?= "0x4100000" | 133 | NAND_KERNEL_OFFSET:zynqmp ??= "0x4100000" |
| 127 | NAND_RAMDISK_OFFSET:zynqmp ?= "0x7800000" | 134 | NAND_RAMDISK_OFFSET:zynqmp ??= "0x7800000" |
| 128 | 135 | ||
| 129 | QSPI_KERNEL_SIZE:zynqmp ?= "0x1D00000" | 136 | QSPI_KERNEL_SIZE:zynqmp ??= "0x1D00000" |
| 130 | QSPI_RAMDISK_SIZE ?= "0x4000000" | 137 | QSPI_RAMDISK_SIZE ??= "0x4000000" |
| 131 | QSPI_RAMDISK_SIZE:zynqmpdr ?= "0x1D00000" | 138 | QSPI_RAMDISK_SIZE:zynqmpdr ??= "0x1D00000" |
| 132 | 139 | ||
| 133 | ## For versal | 140 | ## For versal |
| 134 | ## Load boot.scr at 0x7F80000 -> 127MB of QSPI/NAND Memory | 141 | ## Load boot.scr at 0x7F80000 -> 127MB of QSPI/NAND Memory |
| 135 | QSPI_KERNEL_OFFSET:versal ?= "0xF00000" | 142 | QSPI_KERNEL_OFFSET:versal ??= "0xF00000" |
| 136 | QSPI_RAMDISK_OFFSET:versal ?= "0x2E00000" | 143 | QSPI_RAMDISK_OFFSET:versal ??= "0x2E00000" |
| 137 | 144 | ||
| 138 | NAND_KERNEL_OFFSET:versal ?= "0x4100000" | 145 | NAND_KERNEL_OFFSET:versal ??= "0x4100000" |
| 139 | NAND_RAMDISK_OFFSET:versal ?= "0x8200000" | 146 | NAND_RAMDISK_OFFSET:versal ??= "0x8200000" |
| 140 | 147 | ||
| 141 | QSPI_KERNEL_SIZE:versal ?= "0x1D00000" | 148 | QSPI_KERNEL_SIZE:versal ??= "0x1D00000" |
| 142 | QSPI_RAMDISK_SIZE:versal ?= "0x4000000" | 149 | QSPI_RAMDISK_SIZE:versal ??= "0x4000000" |
| 143 | 150 | ||
| 144 | QSPI_KERNEL_IMAGE:microblaze ?= "image.ub" | 151 | QSPI_KERNEL_IMAGE:microblaze ?= "image.ub" |
| 145 | QSPI_KERNEL_IMAGE:zynq ?= "image.ub" | 152 | QSPI_KERNEL_IMAGE:zynq ?= "image.ub" |
| @@ -148,19 +155,22 @@ QSPI_KERNEL_IMAGE:versal ?= "image.ub" | |||
| 148 | 155 | ||
| 149 | NAND_KERNEL_IMAGE ?= "image.ub" | 156 | NAND_KERNEL_IMAGE ?= "image.ub" |
| 150 | 157 | ||
| 151 | QSPI_FIT_IMAGE_OFFSET ?= "0xF40000" | 158 | QSPI_FIT_IMAGE_OFFSET ??= "0xF40000" |
| 152 | QSPI_FIT_IMAGE_OFFSET:zynqmpdr ?= "0x3F80000" | 159 | QSPI_FIT_IMAGE_OFFSET:zynqmpdr ??= "0x3F80000" |
| 153 | QSPI_FIT_IMAGE_OFFSET:zynq ?= "0xA80000" | 160 | QSPI_FIT_IMAGE_OFFSET:zynq ??= "0xA80000" |
| 154 | QSPI_FIT_IMAGE_OFFSET:microblaze ?= "0xC00000" | 161 | QSPI_FIT_IMAGE_OFFSET:microblaze ??= "0xC00000" |
| 162 | |||
| 163 | QSPI_FIT_IMAGE_SIZE ??= "0x6400000" | ||
| 164 | QSPI_FIT_IMAGE_SIZE:zynqmpdr ??= "0x3F00000" | ||
| 165 | QSPI_FIT_IMAGE_SIZE:zynq ??= "0x1500000" | ||
| 166 | QSPI_FIT_IMAGE_SIZE:microblaze ??= "0xF00000" | ||
| 155 | 167 | ||
| 156 | QSPI_FIT_IMAGE_SIZE ?= "0x6400000" | 168 | NAND_FIT_IMAGE_OFFSET ??= "0x4180000" |
| 157 | QSPI_FIT_IMAGE_SIZE:zynqmpdr ?= "0x3F00000" | 169 | NAND_FIT_IMAGE_OFFSET:zynq ??= "0x1080000" |
| 158 | QSPI_FIT_IMAGE_SIZE:zynq ?= "0x1500000" | 170 | NAND_FIT_IMAGE_SIZE ??= "0x6400000" |
| 159 | QSPI_FIT_IMAGE_SIZE:microblaze ?= "0xF00000" | ||
| 160 | 171 | ||
| 161 | NAND_FIT_IMAGE_OFFSET ?= "0x4180000" | 172 | # Add variables as addendum. |
| 162 | NAND_FIT_IMAGE_OFFSET:zynq ?= "0x1080000" | 173 | SCRIPT_SED_ADDENDUM = "" |
| 163 | NAND_FIT_IMAGE_SIZE ?= "0x6400000" | ||
| 164 | 174 | ||
| 165 | # Default to booting with the rootfs device being partition 2 for SD/eMMC | 175 | # Default to booting with the rootfs device being partition 2 for SD/eMMC |
| 166 | PARTNUM ?= "2" | 176 | PARTNUM ?= "2" |
| @@ -172,6 +182,9 @@ KERNEL_ROOT_SD ?= "root=/dev/\${bootdev}${PARTNUM} ro rootwait" | |||
| 172 | # Set Kernel root filesystem parameter for JTAG/QSPI/OSPI/NAND(using RAMDISK) boot | 182 | # Set Kernel root filesystem parameter for JTAG/QSPI/OSPI/NAND(using RAMDISK) boot |
| 173 | KERNEL_ROOT_RAMDISK ?= "root=/dev/ram0 rw" | 183 | KERNEL_ROOT_RAMDISK ?= "root=/dev/ram0 rw" |
| 174 | 184 | ||
| 185 | # Append the kernel command line | ||
| 186 | KERNEL_COMMAND_APPEND ?= "" | ||
| 187 | |||
| 175 | BITSTREAM_LOAD_ADDRESS ?= "0x100000" | 188 | BITSTREAM_LOAD_ADDRESS ?= "0x100000" |
| 176 | 189 | ||
| 177 | do_configure[noexec] = "1" | 190 | do_configure[noexec] = "1" |
| @@ -180,6 +193,9 @@ def append_baseaddr(d,offset): | |||
| 180 | skip_append = d.getVar('SKIP_APPEND_BASEADDR') or "" | 193 | skip_append = d.getVar('SKIP_APPEND_BASEADDR') or "" |
| 181 | if skip_append == "1": | 194 | if skip_append == "1": |
| 182 | return offset | 195 | return offset |
| 196 | if offset.startswith('$'): | ||
| 197 | # If offset startswith '$' Assuming as uboot env variable. | ||
| 198 | return offset | ||
| 183 | import subprocess | 199 | import subprocess |
| 184 | baseaddr = d.getVar('DDR_BASEADDR') or "0x0" | 200 | baseaddr = d.getVar('DDR_BASEADDR') or "0x0" |
| 185 | subcmd = "$((%s+%s));" % (baseaddr,offset) | 201 | subcmd = "$((%s+%s));" % (baseaddr,offset) |
| @@ -202,41 +218,45 @@ do_compile() { | |||
| 202 | -e 's/@@RAMDISK_IMAGE@@/${RAMDISK_IMAGE}/' \ | 218 | -e 's/@@RAMDISK_IMAGE@@/${RAMDISK_IMAGE}/' \ |
| 203 | -e 's/@@RAMDISK_IMAGE_ADDRESS@@/${RAMDISK_IMAGE_ADDRESS}/' \ | 219 | -e 's/@@RAMDISK_IMAGE_ADDRESS@@/${RAMDISK_IMAGE_ADDRESS}/' \ |
| 204 | -e 's/@@KERNEL_BOOTCMD@@/${KERNEL_BOOTCMD}/' \ | 220 | -e 's/@@KERNEL_BOOTCMD@@/${KERNEL_BOOTCMD}/' \ |
| 205 | -e 's/@@SDBOOTDEV@@/${SDBOOTDEV}/' \ | 221 | -e 's/@@SDBOOTDEV@@/${SDBOOTDEV}/' \ |
| 206 | -e 's/@@BITSTREAM@@/${@boot_files_bitstream(d)[0]}/g' \ | 222 | -e 's/@@BITSTREAM@@/${@boot_files_bitstream(d)[0]}/g' \ |
| 207 | -e 's/@@BITSTREAM_LOAD_ADDRESS@@/${BITSTREAM_LOAD_ADDRESS}/g' \ | 223 | -e 's/@@BITSTREAM_LOAD_ADDRESS@@/${BITSTREAM_LOAD_ADDRESS}/g' \ |
| 208 | -e 's/@@BITSTREAM_IMAGE@@/${@boot_files_bitstream(d)[0]}/g' \ | 224 | -e 's/@@BITSTREAM_IMAGE@@/${@boot_files_bitstream(d)[0]}/g' \ |
| 209 | -e 's/@@BITSTREAM_LOAD_TYPE@@/${@get_bitstream_load_type(d)}/g' \ | 225 | -e 's/@@BITSTREAM_LOAD_TYPE@@/${@get_bitstream_load_type(d)}/g' \ |
| 210 | -e 's/@@QSPI_KERNEL_OFFSET@@/${QSPI_KERNEL_OFFSET}/' \ | 226 | -e 's/@@QSPI_KERNEL_OFFSET@@/${QSPI_KERNEL_OFFSET}/' \ |
| 211 | -e 's/@@NAND_KERNEL_OFFSET@@/${NAND_KERNEL_OFFSET}/' \ | 227 | -e 's/@@NAND_KERNEL_OFFSET@@/${NAND_KERNEL_OFFSET}/' \ |
| 212 | -e 's/@@QSPI_KERNEL_SIZE@@/${QSPI_KERNEL_SIZE}/' \ | 228 | -e 's/@@QSPI_KERNEL_SIZE@@/${QSPI_KERNEL_SIZE}/' \ |
| 213 | -e 's/@@NAND_KERNEL_SIZE@@/${NAND_KERNEL_SIZE}/' \ | 229 | -e 's/@@NAND_KERNEL_SIZE@@/${NAND_KERNEL_SIZE}/' \ |
| 214 | -e 's/@@QSPI_RAMDISK_OFFSET@@/${QSPI_RAMDISK_OFFSET}/' \ | 230 | -e 's/@@QSPI_RAMDISK_OFFSET@@/${QSPI_RAMDISK_OFFSET}/' \ |
| 215 | -e 's/@@NAND_RAMDISK_OFFSET@@/${NAND_RAMDISK_OFFSET}/' \ | 231 | -e 's/@@NAND_RAMDISK_OFFSET@@/${NAND_RAMDISK_OFFSET}/' \ |
| 216 | -e 's/@@QSPI_RAMDISK_SIZE@@/${QSPI_RAMDISK_SIZE}/' \ | 232 | -e 's/@@QSPI_RAMDISK_SIZE@@/${QSPI_RAMDISK_SIZE}/' \ |
| 217 | -e 's/@@NAND_RAMDISK_SIZE@@/${NAND_RAMDISK_SIZE}/' \ | 233 | -e 's/@@NAND_RAMDISK_SIZE@@/${NAND_RAMDISK_SIZE}/' \ |
| 218 | -e 's/@@KERNEL_IMAGE@@/${KERNEL_IMAGE}/' \ | 234 | -e 's/@@KERNEL_IMAGE@@/${KERNEL_IMAGE}/' \ |
| 219 | -e 's/@@QSPI_KERNEL_IMAGE@@/${QSPI_KERNEL_IMAGE}/' \ | 235 | -e 's/@@QSPI_KERNEL_IMAGE@@/${QSPI_KERNEL_IMAGE}/' \ |
| 220 | -e 's/@@NAND_KERNEL_IMAGE@@/${NAND_KERNEL_IMAGE}/' \ | 236 | -e 's/@@NAND_KERNEL_IMAGE@@/${NAND_KERNEL_IMAGE}/' \ |
| 221 | -e 's/@@FIT_IMAGE_LOAD_ADDRESS@@/${FIT_IMAGE_LOAD_ADDRESS}/' \ | 237 | -e 's/@@FIT_IMAGE_LOAD_ADDRESS@@/${FIT_IMAGE_LOAD_ADDRESS}/' \ |
| 222 | -e 's/@@QSPI_FIT_IMAGE_OFFSET@@/${QSPI_FIT_IMAGE_OFFSET}/' \ | 238 | -e 's/@@QSPI_FIT_IMAGE_OFFSET@@/${QSPI_FIT_IMAGE_OFFSET}/' \ |
| 223 | -e 's/@@QSPI_FIT_IMAGE_SIZE@@/${QSPI_FIT_IMAGE_SIZE}/' \ | 239 | -e 's/@@QSPI_FIT_IMAGE_SIZE@@/${QSPI_FIT_IMAGE_SIZE}/' \ |
| 224 | -e 's/@@NAND_FIT_IMAGE_OFFSET@@/${NAND_FIT_IMAGE_OFFSET}/' \ | 240 | -e 's/@@NAND_FIT_IMAGE_OFFSET@@/${NAND_FIT_IMAGE_OFFSET}/' \ |
| 225 | -e 's/@@NAND_FIT_IMAGE_SIZE@@/${NAND_FIT_IMAGE_SIZE}/' \ | 241 | -e 's/@@NAND_FIT_IMAGE_SIZE@@/${NAND_FIT_IMAGE_SIZE}/' \ |
| 226 | -e 's/@@FIT_IMAGE@@/${FIT_IMAGE}/' \ | 242 | -e 's/@@FIT_IMAGE@@/${FIT_IMAGE}/' \ |
| 227 | -e 's/@@PRE_BOOTENV@@/${PRE_BOOTENV}/' \ | 243 | -e 's/@@PRE_BOOTENV@@/${PRE_BOOTENV}/' \ |
| 228 | -e 's/@@UENV_MMC_LOAD_ADDRESS@@/${UENV_MMC_LOAD_ADDRESS}/' \ | 244 | -e 's/@@UENV_MMC_LOAD_ADDRESS@@/${UENV_MMC_LOAD_ADDRESS}/' \ |
| 229 | -e 's/@@UENV_TEXTFILE@@/${UENV_TEXTFILE}/' \ | 245 | -e 's/@@UENV_TEXTFILE@@/${UENV_TEXTFILE}/' \ |
| 230 | -e 's/@@RAMDISK_IMAGE1@@/${RAMDISK_IMAGE1}/' \ | 246 | -e 's/@@RAMDISK_IMAGE1@@/${RAMDISK_IMAGE1}/' \ |
| 231 | -e 's/@@PARTNUM@@/${PARTNUM}/' \ | 247 | -e 's/@@PARTNUM@@/${PARTNUM}/' \ |
| 232 | -e 's:@@KERNEL_ROOT_SD@@:${KERNEL_ROOT_SD}:' \ | 248 | -e 's:@@KERNEL_ROOT_SD@@:${KERNEL_ROOT_SD}:' \ |
| 233 | -e 's:@@KERNEL_ROOT_RAMDISK@@:${KERNEL_ROOT_RAMDISK}:' \ | 249 | -e 's:@@KERNEL_ROOT_RAMDISK@@:${KERNEL_ROOT_RAMDISK}:' \ |
| 250 | -e 's:@@KERNEL_COMMAND_APPEND@@:${KERNEL_COMMAND_APPEND}:' \ | ||
| 251 | ${SCRIPT_SED_ADDENDUM} \ | ||
| 234 | "${WORKDIR}/boot.cmd.${BOOTMODE}${BOOTFILE_EXT}" > "${WORKDIR}/boot.cmd" | 252 | "${WORKDIR}/boot.cmd.${BOOTMODE}${BOOTFILE_EXT}" > "${WORKDIR}/boot.cmd" |
| 253 | |||
| 235 | mkimage -A arm -T script -C none -n "Boot script" -d "${WORKDIR}/boot.cmd" boot.scr | 254 | mkimage -A arm -T script -C none -n "Boot script" -d "${WORKDIR}/boot.cmd" boot.scr |
| 255 | |||
| 236 | sed -e 's/@@KERNEL_IMAGETYPE@@/${KERNEL_IMAGETYPE}/' \ | 256 | sed -e 's/@@KERNEL_IMAGETYPE@@/${KERNEL_IMAGETYPE}/' \ |
| 237 | -e 's/@@DEVICE_TREE_NAME@@/${DEVICE_TREE_NAME}/' \ | 257 | -e 's/@@DEVICE_TREE_NAME@@/${DEVICE_TREE_NAME}/' \ |
| 238 | -e 's/@@RAMDISK_IMAGE@@/${PXERAMDISK_IMAGE}/' \ | 258 | -e 's/@@RAMDISK_IMAGE@@/${PXERAMDISK_IMAGE}/' \ |
| 239 | "${WORKDIR}/pxeboot.pxe" > "pxeboot.pxe" | 259 | "${WORKDIR}/pxeboot.pxe" > "pxeboot.pxe" |
| 240 | } | 260 | } |
| 241 | 261 | ||
| 242 | do_install() { | 262 | do_install() { |
diff --git a/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-scr/boot.cmd.generic b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-scr/boot.cmd.generic index ff2a5688..d99932ed 100644 --- a/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-scr/boot.cmd.generic +++ b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-scr/boot.cmd.generic | |||
| @@ -9,10 +9,16 @@ ramdisk_name=@@RAMDISK_IMAGE1@@ | |||
| 9 | rootfs_name=@@RAMDISK_IMAGE@@ | 9 | rootfs_name=@@RAMDISK_IMAGE@@ |
| 10 | @@PRE_BOOTENV@@ | 10 | @@PRE_BOOTENV@@ |
| 11 | 11 | ||
| 12 | |||
| 13 | setenv get_bootargs 'fdt addr $fdtcontroladdr;fdt get value bootargs /chosen bootargs;' | ||
| 14 | setenv update_bootargs 'if test -n ${launch_ramdisk_init} && test ${bootargs} = "";then if run get_bootargs;then setenv bootargs "\$bootargs launch_ramdisk_init=${launch_ramdisk_init} $extrabootargs";fi;fi' | ||
| 15 | |||
| 16 | |||
| 12 | for boot_target in ${boot_targets}; | 17 | for boot_target in ${boot_targets}; |
| 13 | do | 18 | do |
| 14 | echo "Trying to load boot images from ${boot_target}" | 19 | echo "Trying to load boot images from ${boot_target}" |
| 15 | if test "${boot_target}" = "jtag" ; then | 20 | if test "${boot_target}" = "jtag" ; then |
| 21 | run update_bootargs | ||
| 16 | @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ @@RAMDISK_IMAGE_ADDRESS@@ @@DEVICETREE_ADDRESS@@ | 22 | @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ @@RAMDISK_IMAGE_ADDRESS@@ @@DEVICETREE_ADDRESS@@ |
| 17 | fi | 23 | fi |
| 18 | if test "${boot_target}" = "mmc0" || test "${boot_target}" = "mmc1" || test "${boot_target}" = "usb0" || test "${boot_target}" = "usb1"; then | 24 | if test "${boot_target}" = "mmc0" || test "${boot_target}" = "mmc1" || test "${boot_target}" = "usb0" || test "${boot_target}" = "usb1"; then |
| @@ -34,6 +40,7 @@ do | |||
| 34 | fi | 40 | fi |
| 35 | if test -e ${devtype} ${devnum}:${distro_bootpart} /system.dtb; then | 41 | if test -e ${devtype} ${devnum}:${distro_bootpart} /system.dtb; then |
| 36 | fatload ${devtype} ${devnum}:${distro_bootpart} @@DEVICETREE_ADDRESS@@ system.dtb; | 42 | fatload ${devtype} ${devnum}:${distro_bootpart} @@DEVICETREE_ADDRESS@@ system.dtb; |
| 43 | setenv fdtcontroladdr @@DEVICETREE_ADDRESS@@ | ||
| 37 | fi | 44 | fi |
| 38 | if test -e ${devtype} ${devnum}:${distro_bootpart} /devicetree/openamp.dtbo; then | 45 | if test -e ${devtype} ${devnum}:${distro_bootpart} /devicetree/openamp.dtbo; then |
| 39 | fatload ${devtype} ${devnum}:${distro_bootpart} @@DEVICETREE_OVERLAY_ADDRESS@@ devicetree/openamp.dtbo; | 46 | fatload ${devtype} ${devnum}:${distro_bootpart} @@DEVICETREE_OVERLAY_ADDRESS@@ devicetree/openamp.dtbo; |
| @@ -41,6 +48,7 @@ do | |||
| 41 | fdt resize 8192 | 48 | fdt resize 8192 |
| 42 | fdt apply @@DEVICETREE_OVERLAY_ADDRESS@@ | 49 | fdt apply @@DEVICETREE_OVERLAY_ADDRESS@@ |
| 43 | fi | 50 | fi |
| 51 | run update_bootargs | ||
| 44 | if test -e ${devtype} ${devnum}:${distro_bootpart} /${ramdisk_name} && test "${skip_tinyramdisk}" != "yes"; then | 52 | if test -e ${devtype} ${devnum}:${distro_bootpart} /${ramdisk_name} && test "${skip_tinyramdisk}" != "yes"; then |
| 45 | fatload ${devtype} ${devnum}:${distro_bootpart} @@RAMDISK_IMAGE_ADDRESS@@ ${ramdisk_name}; | 53 | fatload ${devtype} ${devnum}:${distro_bootpart} @@RAMDISK_IMAGE_ADDRESS@@ ${ramdisk_name}; |
| 46 | @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ @@RAMDISK_IMAGE_ADDRESS@@ @@DEVICETREE_ADDRESS@@ | 54 | @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ @@RAMDISK_IMAGE_ADDRESS@@ @@DEVICETREE_ADDRESS@@ |
| @@ -51,7 +59,7 @@ do | |||
| 51 | fi | 59 | fi |
| 52 | @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ - @@DEVICETREE_ADDRESS@@ | 60 | @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ - @@DEVICETREE_ADDRESS@@ |
| 53 | fi | 61 | fi |
| 54 | if test "${boot_target}" = "xspi0" || test "${boot_target}" = "qspi" || test "${boot_target}" = "qspi0"; then | 62 | if test "${boot_target}" = "xspi0" || test "${boot_target}" = "xspi1" || test "${boot_target}" = "qspi" || test "${boot_target}" = "qspi0"; then |
| 55 | sf probe 0 0 0; | 63 | sf probe 0 0 0; |
| 56 | sf read @@FIT_IMAGE_LOAD_ADDRESS@@ @@QSPI_FIT_IMAGE_OFFSET@@ @@QSPI_FIT_IMAGE_SIZE@@ | 64 | sf read @@FIT_IMAGE_LOAD_ADDRESS@@ @@QSPI_FIT_IMAGE_OFFSET@@ @@QSPI_FIT_IMAGE_SIZE@@ |
| 57 | bootm @@FIT_IMAGE_LOAD_ADDRESS@@; | 65 | bootm @@FIT_IMAGE_LOAD_ADDRESS@@; |
| @@ -59,6 +67,7 @@ do | |||
| 59 | 67 | ||
| 60 | sf read @@KERNEL_LOAD_ADDRESS@@ @@QSPI_KERNEL_OFFSET@@ @@QSPI_KERNEL_SIZE@@ | 68 | sf read @@KERNEL_LOAD_ADDRESS@@ @@QSPI_KERNEL_OFFSET@@ @@QSPI_KERNEL_SIZE@@ |
| 61 | sf read @@RAMDISK_IMAGE_ADDRESS@@ @@QSPI_RAMDISK_OFFSET@@ @@QSPI_RAMDISK_SIZE@@ | 69 | sf read @@RAMDISK_IMAGE_ADDRESS@@ @@QSPI_RAMDISK_OFFSET@@ @@QSPI_RAMDISK_SIZE@@ |
| 70 | run update_bootargs | ||
| 62 | @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ @@RAMDISK_IMAGE_ADDRESS@@ @@DEVICETREE_ADDRESS@@; | 71 | @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ @@RAMDISK_IMAGE_ADDRESS@@ @@DEVICETREE_ADDRESS@@; |
| 63 | echo "Booting using Separate images failed" | 72 | echo "Booting using Separate images failed" |
| 64 | fi | 73 | fi |
| @@ -70,6 +79,7 @@ do | |||
| 70 | 79 | ||
| 71 | nand read @@KERNEL_LOAD_ADDRESS@@ @@NAND_KERNEL_OFFSET@@ @@NAND_KERNEL_SIZE@@ | 80 | nand read @@KERNEL_LOAD_ADDRESS@@ @@NAND_KERNEL_OFFSET@@ @@NAND_KERNEL_SIZE@@ |
| 72 | nand read @@RAMDISK_IMAGE_ADDRESS@@ @@NAND_RAMDISK_OFFSET@@ @@NAND_RAMDISK_SIZE@@ | 81 | nand read @@RAMDISK_IMAGE_ADDRESS@@ @@NAND_RAMDISK_OFFSET@@ @@NAND_RAMDISK_SIZE@@ |
| 82 | run update_bootargs | ||
| 73 | @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ @@RAMDISK_IMAGE_ADDRESS@@ @@DEVICETREE_ADDRESS@@; | 83 | @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ @@RAMDISK_IMAGE_ADDRESS@@ @@DEVICETREE_ADDRESS@@; |
| 74 | echo "Booting using Separate images failed" | 84 | echo "Booting using Separate images failed" |
| 75 | fi | 85 | fi |
diff --git a/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-scr/boot.cmd.generic.root b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-scr/boot.cmd.generic.root index 816707cb..ed12f941 100644 --- a/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-scr/boot.cmd.generic.root +++ b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-scr/boot.cmd.generic.root | |||
| @@ -15,7 +15,7 @@ do | |||
| 15 | if test "${boot_target}" = "jtag" ; then | 15 | if test "${boot_target}" = "jtag" ; then |
| 16 | fdt addr @@DEVICETREE_ADDRESS@@ | 16 | fdt addr @@DEVICETREE_ADDRESS@@ |
| 17 | fdt get value bootargs /chosen bootargs | 17 | fdt get value bootargs /chosen bootargs |
| 18 | setenv bootargs $bootargs @@KERNEL_ROOT_RAMDISK@@ | 18 | setenv bootargs $bootargs @@KERNEL_COMMAND_APPEND@@ @@KERNEL_ROOT_RAMDISK@@ |
| 19 | @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ @@RAMDISK_IMAGE_ADDRESS@@ @@DEVICETREE_ADDRESS@@ | 19 | @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ @@RAMDISK_IMAGE_ADDRESS@@ @@DEVICETREE_ADDRESS@@ |
| 20 | fi | 20 | fi |
| 21 | if test "${boot_target}" = "mmc0" || test "${boot_target}" = "mmc1" || test "${boot_target}" = "usb0" || test "${boot_target}" = "usb1"; then | 21 | if test "${boot_target}" = "mmc0" || test "${boot_target}" = "mmc1" || test "${boot_target}" = "usb0" || test "${boot_target}" = "usb1"; then |
| @@ -65,7 +65,7 @@ do | |||
| 65 | fatload ${devtype} ${devnum}:${distro_bootpart} @@RAMDISK_IMAGE_ADDRESS@@ ${ramdisk_name}; | 65 | fatload ${devtype} ${devnum}:${distro_bootpart} @@RAMDISK_IMAGE_ADDRESS@@ ${ramdisk_name}; |
| 66 | fdt addr @@DEVICETREE_ADDRESS@@ | 66 | fdt addr @@DEVICETREE_ADDRESS@@ |
| 67 | fdt get value bootargs /chosen bootargs | 67 | fdt get value bootargs /chosen bootargs |
| 68 | setenv bootargs $bootargs @@KERNEL_ROOT_RAMDISK@@ | 68 | setenv bootargs $bootargs @@KERNEL_COMMAND_APPEND@@ @@KERNEL_ROOT_RAMDISK@@ |
| 69 | @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ @@RAMDISK_IMAGE_ADDRESS@@ @@DEVICETREE_ADDRESS@@ | 69 | @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ @@RAMDISK_IMAGE_ADDRESS@@ @@DEVICETREE_ADDRESS@@ |
| 70 | fi | 70 | fi |
| 71 | echo "Checking for /${rootfs_name}" | 71 | echo "Checking for /${rootfs_name}" |
| @@ -74,12 +74,12 @@ do | |||
| 74 | fatload ${devtype} ${devnum}:${distro_bootpart} @@RAMDISK_IMAGE_ADDRESS@@ ${rootfs_name}; | 74 | fatload ${devtype} ${devnum}:${distro_bootpart} @@RAMDISK_IMAGE_ADDRESS@@ ${rootfs_name}; |
| 75 | fdt addr @@DEVICETREE_ADDRESS@@ | 75 | fdt addr @@DEVICETREE_ADDRESS@@ |
| 76 | fdt get value bootargs /chosen bootargs | 76 | fdt get value bootargs /chosen bootargs |
| 77 | setenv bootargs $bootargs @@KERNEL_ROOT_RAMDISK@@ | 77 | setenv bootargs $bootargs @@KERNEL_COMMAND_APPEND@@ @@KERNEL_ROOT_RAMDISK@@ |
| 78 | @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ @@RAMDISK_IMAGE_ADDRESS@@ @@DEVICETREE_ADDRESS@@ | 78 | @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ @@RAMDISK_IMAGE_ADDRESS@@ @@DEVICETREE_ADDRESS@@ |
| 79 | fi | 79 | fi |
| 80 | fdt addr @@DEVICETREE_ADDRESS@@ | 80 | fdt addr @@DEVICETREE_ADDRESS@@ |
| 81 | fdt get value bootargs /chosen bootargs | 81 | fdt get value bootargs /chosen bootargs |
| 82 | setenv bootargs $bootargs @@KERNEL_ROOT_SD@@ | 82 | setenv bootargs $bootargs @@KERNEL_COMMAND_APPEND@@ @@KERNEL_ROOT_SD@@ |
| 83 | @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ - @@DEVICETREE_ADDRESS@@ | 83 | @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ - @@DEVICETREE_ADDRESS@@ |
| 84 | fi | 84 | fi |
| 85 | if test "${boot_target}" = "xspi0" || test "${boot_target}" = "qspi" || test "${boot_target}" = "qspi0"; then | 85 | if test "${boot_target}" = "xspi0" || test "${boot_target}" = "qspi" || test "${boot_target}" = "qspi0"; then |
| @@ -93,7 +93,7 @@ do | |||
| 93 | sf read @@RAMDISK_IMAGE_ADDRESS@@ @@QSPI_RAMDISK_OFFSET@@ @@QSPI_RAMDISK_SIZE@@ | 93 | sf read @@RAMDISK_IMAGE_ADDRESS@@ @@QSPI_RAMDISK_OFFSET@@ @@QSPI_RAMDISK_SIZE@@ |
| 94 | fdt addr @@DEVICETREE_ADDRESS@@ | 94 | fdt addr @@DEVICETREE_ADDRESS@@ |
| 95 | fdt get value bootargs /chosen bootargs | 95 | fdt get value bootargs /chosen bootargs |
| 96 | setenv bootargs $bootargs @@KERNEL_ROOT_RAMDISK@@ | 96 | setenv bootargs $bootargs @@KERNEL_COMMAND_APPEND@@ @@KERNEL_ROOT_RAMDISK@@ |
| 97 | @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ @@RAMDISK_IMAGE_ADDRESS@@ @@DEVICETREE_ADDRESS@@; | 97 | @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ @@RAMDISK_IMAGE_ADDRESS@@ @@DEVICETREE_ADDRESS@@; |
| 98 | echo "Booting using Separate images failed" | 98 | echo "Booting using Separate images failed" |
| 99 | fi | 99 | fi |
| @@ -108,7 +108,7 @@ do | |||
| 108 | nand read @@RAMDISK_IMAGE_ADDRESS@@ @@NAND_RAMDISK_OFFSET@@ @@NAND_RAMDISK_SIZE@@ | 108 | nand read @@RAMDISK_IMAGE_ADDRESS@@ @@NAND_RAMDISK_OFFSET@@ @@NAND_RAMDISK_SIZE@@ |
| 109 | fdt addr @@DEVICETREE_ADDRESS@@ | 109 | fdt addr @@DEVICETREE_ADDRESS@@ |
| 110 | fdt get value bootargs /chosen bootargs | 110 | fdt get value bootargs /chosen bootargs |
| 111 | setenv bootargs $bootargs @@KERNEL_ROOT_RAMDISK@@ | 111 | setenv bootargs $bootargs @@KERNEL_COMMAND_APPEND@@ @@KERNEL_ROOT_RAMDISK@@ |
| 112 | @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ @@RAMDISK_IMAGE_ADDRESS@@ @@DEVICETREE_ADDRESS@@; | 112 | @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ @@RAMDISK_IMAGE_ADDRESS@@ @@DEVICETREE_ADDRESS@@; |
| 113 | echo "Booting using Separate images failed" | 113 | echo "Booting using Separate images failed" |
| 114 | fi | 114 | fi |
diff --git a/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-scr/boot.cmd.qspi.versal b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-scr/boot.cmd.qspi.versal index d56b7c8c..b9e2f3ec 100644 --- a/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-scr/boot.cmd.qspi.versal +++ b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-scr/boot.cmd.qspi.versal | |||
| @@ -1 +1,3 @@ | |||
| 1 | @@PRE_BOOTENV@@ | ||
| 2 | |||
| 1 | @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ @@RAMDISK_IMAGE_ADDRESS@@ @@DEVICETREE_ADDRESS@@ | 3 | @@KERNEL_BOOTCMD@@ @@KERNEL_LOAD_ADDRESS@@ @@RAMDISK_IMAGE_ADDRESS@@ @@DEVICETREE_ADDRESS@@ |
diff --git a/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-scr/boot.cmd.sd.versal b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-scr/boot.cmd.sd.versal index 8eff483a..d726187a 100644 --- a/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-scr/boot.cmd.sd.versal +++ b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-scr/boot.cmd.sd.versal | |||
| @@ -1,3 +1,5 @@ | |||
| 1 | @@PRE_BOOTENV@@ | ||
| 2 | |||
| 1 | setenv sdbootdev @@SDBOOTDEV@@ | 3 | setenv sdbootdev @@SDBOOTDEV@@ |
| 2 | setenv bootargs $bootargs root=/dev/mmcblk${sdbootdev}p2 rw rootwait earlycon clk_ignore_unused | 4 | setenv bootargs $bootargs root=/dev/mmcblk${sdbootdev}p2 rw rootwait earlycon clk_ignore_unused |
| 3 | fatload mmc $sdbootdev @@DEVICETREE_ADDRESS@@ @@DEVICE_TREE_NAME@@ | 5 | fatload mmc $sdbootdev @@DEVICETREE_ADDRESS@@ @@DEVICE_TREE_NAME@@ |
diff --git a/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-scr/boot.cmd.sd.zynq b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-scr/boot.cmd.sd.zynq index bbd2e01e..abc5ae00 100644 --- a/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-scr/boot.cmd.sd.zynq +++ b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-scr/boot.cmd.sd.zynq | |||
| @@ -1,3 +1,5 @@ | |||
| 1 | @@PRE_BOOTENV@@ | ||
| 2 | |||
| 1 | if test -n "@@BITSTREAM@@"; then | 3 | if test -n "@@BITSTREAM@@"; then |
| 2 | fatload mmc $sdbootdev @@BITSTREAM_LOAD_ADDRESS@@ @@BITSTREAM_IMAGE@@ && fpga @@BITSTREAM_LOAD_TYPE@@ 0 @@BITSTREAM_LOAD_ADDRESS@@ ${filesize} | 4 | fatload mmc $sdbootdev @@BITSTREAM_LOAD_ADDRESS@@ @@BITSTREAM_IMAGE@@ && fpga @@BITSTREAM_LOAD_TYPE@@ 0 @@BITSTREAM_LOAD_ADDRESS@@ ${filesize} |
| 3 | fi | 5 | fi |
diff --git a/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-scr/boot.cmd.sd.zynqmp b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-scr/boot.cmd.sd.zynqmp index b234a8df..bddab5d0 100644 --- a/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-scr/boot.cmd.sd.zynqmp +++ b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx-scr/boot.cmd.sd.zynqmp | |||
| @@ -1,3 +1,5 @@ | |||
| 1 | @@PRE_BOOTENV@@ | ||
| 2 | |||
| 1 | setenv sdbootdev @@SDBOOTDEV@@ | 3 | setenv sdbootdev @@SDBOOTDEV@@ |
| 2 | setenv bootargs $bootargs root=/dev/mmcblk${sdbootdev}p2 rw rootwait earlycon clk_ignore_unused | 4 | setenv bootargs $bootargs root=/dev/mmcblk${sdbootdev}p2 rw rootwait earlycon clk_ignore_unused |
| 3 | if test -n "@@BITSTREAM@@"; then | 5 | if test -n "@@BITSTREAM@@"; then |
diff --git a/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx.inc b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx.inc index 10dfbb60..4c7ea934 100644 --- a/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx.inc +++ b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx.inc | |||
| @@ -9,7 +9,7 @@ SYSROOT_DIRS += "/boot" | |||
| 9 | 9 | ||
| 10 | BASE_DTS ?= "${@os.path.basename(d.getVar('CONFIG_DTFILE') or '').rstrip('.dtb').rstrip('.dts') or 'system-top'}" | 10 | BASE_DTS ?= "${@os.path.basename(d.getVar('CONFIG_DTFILE') or '').rstrip('.dtb').rstrip('.dts') or 'system-top'}" |
| 11 | DTB_PATH ?= "boot/devicetree/" | 11 | DTB_PATH ?= "boot/devicetree/" |
| 12 | DTB_NAME ?= "" | 12 | DTB_FILE_NAME ?= "" |
| 13 | 13 | ||
| 14 | # This vairable is used for U-boot user specified dts from u-boot repo path | 14 | # This vairable is used for U-boot user specified dts from u-boot repo path |
| 15 | # u-boot-xlnx/arch/arm/dts/versal-vck190-revA-x-ebm-01-revA.dts. | 15 | # u-boot-xlnx/arch/arm/dts/versal-vck190-revA-x-ebm-01-revA.dts. |
| @@ -17,7 +17,7 @@ DTB_NAME ?= "" | |||
| 17 | # Example: UBOOT_USER_SPECIFIED_DTS = "versal-vck190-revA-x-ebm-01-revA" | 17 | # Example: UBOOT_USER_SPECIFIED_DTS = "versal-vck190-revA-x-ebm-01-revA" |
| 18 | UBOOT_USER_SPECIFIED_DTS ?= "" | 18 | UBOOT_USER_SPECIFIED_DTS ?= "" |
| 19 | 19 | ||
| 20 | EXTRA_OEMAKE += "${@'EXT_DTB=${RECIPE_SYSROOT}/${DTB_PATH}/${DTB_NAME}' if (d.getVar('DTB_NAME') != '' and d.getVar('UBOOT_USER_SPECIFIED_DTS') == '') else '' }" | 20 | EXTRA_OEMAKE += "${@'EXT_DTB=${RECIPE_SYSROOT}/${DTB_PATH}/${DTB_FILE_NAME}' if (d.getVar('DTB_FILE_NAME') != '' and d.getVar('UBOOT_USER_SPECIFIED_DTS') == '') else '' }" |
| 21 | EXTRA_OEMAKE += "${@'DEVICE_TREE=${UBOOT_USER_SPECIFIED_DTS}' if (d.getVar('UBOOT_USER_SPECIFIED_DTS') != '') else '' }" | 21 | EXTRA_OEMAKE += "${@'DEVICE_TREE=${UBOOT_USER_SPECIFIED_DTS}' if (d.getVar('UBOOT_USER_SPECIFIED_DTS') != '') else '' }" |
| 22 | 22 | ||
| 23 | python __anonymous () { | 23 | python __anonymous () { |
| @@ -25,8 +25,8 @@ python __anonymous () { | |||
| 25 | providerdtb = d.getVar("PREFERRED_PROVIDER_virtual/dtb") | 25 | providerdtb = d.getVar("PREFERRED_PROVIDER_virtual/dtb") |
| 26 | if providerdtb: | 26 | if providerdtb: |
| 27 | d.appendVarFlag('do_configure', 'depends', ' virtual/dtb:do_populate_sysroot') | 27 | d.appendVarFlag('do_configure', 'depends', ' virtual/dtb:do_populate_sysroot') |
| 28 | if d.getVar("DTB_NAME") is not None: | 28 | if d.getVar("DTB_FILE_NAME") is not None: |
| 29 | d.setVar('DTB_NAME', d.getVar('BASE_DTS')+ '.dtb') | 29 | d.setVar('DTB_FILE_NAME', d.getVar('BASE_DTS')+ '.dtb') |
| 30 | } | 30 | } |
| 31 | 31 | ||
| 32 | do_configure:prepend () { | 32 | do_configure:prepend () { |
diff --git a/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx_2023.2.bb b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx_2023.2.bb new file mode 100644 index 00000000..22075424 --- /dev/null +++ b/meta-xilinx-core/recipes-bsp/u-boot/u-boot-xlnx_2023.2.bb | |||
| @@ -0,0 +1,4 @@ | |||
| 1 | |||
| 2 | require u-boot-xlnx.inc | ||
| 3 | require u-boot-spl-zynq-init.inc | ||
| 4 | require u-boot-xlnx-2023.2.inc | ||
diff --git a/meta-xilinx-core/recipes-devtools/qemu/qemu-devicetrees_2023.2.bb b/meta-xilinx-core/recipes-devtools/qemu/qemu-devicetrees_2023.2.bb new file mode 100644 index 00000000..d41743c1 --- /dev/null +++ b/meta-xilinx-core/recipes-devtools/qemu/qemu-devicetrees_2023.2.bb | |||
| @@ -0,0 +1,6 @@ | |||
| 1 | |||
| 2 | require qemu-devicetrees.inc | ||
| 3 | |||
| 4 | BRANCH ?= "xlnx_rel_v2023.2" | ||
| 5 | SRCREV ?= "d1013382d9a5ef816cd020e7840813b7a2d65c51" | ||
| 6 | |||
diff --git a/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-2023.2.inc b/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-2023.2.inc new file mode 100644 index 00000000..db6e1528 --- /dev/null +++ b/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-2023.2.inc | |||
| @@ -0,0 +1,3 @@ | |||
| 1 | XILINX_QEMU_VERSION = "v7.1.0" | ||
| 2 | BRANCH = "xlnx_rel_v2023.2" | ||
| 3 | SRCREV = "23b643ba1683a47ef49447a45643fe2172d6f8ca" | ||
diff --git a/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-native_2023.2.bb b/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-native_2023.2.bb new file mode 100644 index 00000000..ccfa9956 --- /dev/null +++ b/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-native_2023.2.bb | |||
| @@ -0,0 +1,9 @@ | |||
| 1 | require qemu-xilinx-2023.2.inc | ||
| 2 | require qemu-xilinx-native-7.1.inc | ||
| 3 | require qemu-native-alt.inc | ||
| 4 | |||
| 5 | BPN = "qemu-xilinx" | ||
| 6 | |||
| 7 | EXTRA_OECONF:append = " --target-list=${@get_qemu_usermode_target_list(d)} --disable-tools --disable-blobs --disable-guest-agent" | ||
| 8 | |||
| 9 | PACKAGECONFIG ??= "pie" | ||
diff --git a/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-system-native_%.bbappend b/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-system-native_%.bbappend index 91b223b9..7c152d60 100644 --- a/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-system-native_%.bbappend +++ b/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-system-native_%.bbappend | |||
| @@ -1,2 +1,5 @@ | |||
| 1 | # Automatically enable pmu-rom-native for ZynqMP support, or warn the user | 1 | # Automatically enable pmu-rom-native for ZynqMP support |
| 2 | DEPENDS .= "${@' pmu-rom-native' if 'xilinx' in (d.getVar('LICENSE_FLAGS_ACCEPTED') or '').split() else ''}" | 2 | PMU_ROM_DEP[vardepsexclude] = "LICENSE_FLAGS_ACCEPTED" |
| 3 | PMU_ROM_DEP = "${@bb.utils.contains("LICENSE_FLAGS_ACCEPTED", "xilinx", " pmu-rom-native", "", d)}" | ||
| 4 | |||
| 5 | DEPENDS .= "${PMU_ROM_DEP}" | ||
diff --git a/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-system-native_2023.2.bb b/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-system-native_2023.2.bb new file mode 100644 index 00000000..21208f72 --- /dev/null +++ b/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx-system-native_2023.2.bb | |||
| @@ -0,0 +1,26 @@ | |||
| 1 | require qemu-system-native-alt.inc | ||
| 2 | require qemu-xilinx-2023.2.inc | ||
| 3 | require qemu-xilinx-native-7.1.inc | ||
| 4 | |||
| 5 | PROVIDES = "qemu-system-native" | ||
| 6 | |||
| 7 | EXTRA_OECONF:append = " --target-list=${@get_qemu_system_target_list(d)}" | ||
| 8 | |||
| 9 | PACKAGECONFIG ??= "fdt alsa kvm gcrypt pie slirp" | ||
| 10 | |||
| 11 | PACKAGECONFIG:remove = "${@'kvm' if not os.path.exists('/usr/include/linux/kvm.h') else ''}" | ||
| 12 | |||
| 13 | DEPENDS += "pixman-native qemu-xilinx-native bison-native ninja-native meson-native" | ||
| 14 | DEPENDS += "qemu-xilinx-multiarch-helper-native" | ||
| 15 | |||
| 16 | do_install:append() { | ||
| 17 | # The following is also installed by qemu-native | ||
| 18 | rm -f ${D}${datadir}/qemu/trace-events-all | ||
| 19 | rm -rf ${D}${datadir}/qemu/keymaps | ||
| 20 | rm -rf ${D}${datadir}/icons | ||
| 21 | rm -rf ${D}${includedir}/qemu-plugin.h | ||
| 22 | |||
| 23 | # Install qmp.py to be used with testimage | ||
| 24 | install -d ${D}${libdir}/qemu-python/qmp/ | ||
| 25 | install -D ${S}/python/qemu/qmp/* ${D}${libdir}/qemu-python/qmp/ | ||
| 26 | } | ||
diff --git a/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx_2023.1.bb b/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx_2023.1.bb index 6c1851ba..3b12d161 100644 --- a/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx_2023.1.bb +++ b/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx_2023.1.bb | |||
| @@ -5,7 +5,9 @@ require qemu-alt.inc | |||
| 5 | 5 | ||
| 6 | # Links to libmali-xlnx, so it becomes MACHINE_ARCH specific | 6 | # Links to libmali-xlnx, so it becomes MACHINE_ARCH specific |
| 7 | DEFAULT_PACKAGE_ARCH := "${PACKAGE_ARCH}" | 7 | DEFAULT_PACKAGE_ARCH := "${PACKAGE_ARCH}" |
| 8 | MALI_PACKAGE_ARCH[vardepsexclude] = "MACHINE_ARCH" | ||
| 8 | MALI_PACKAGE_ARCH = "${@'${MACHINE_ARCH}' if d.getVar('PREFERRED_PROVIDER_virtual/libgles1') == 'libmali-xlnx' else '${DEFAULT_PACKAGE_ARCH}'}" | 9 | MALI_PACKAGE_ARCH = "${@'${MACHINE_ARCH}' if d.getVar('PREFERRED_PROVIDER_virtual/libgles1') == 'libmali-xlnx' else '${DEFAULT_PACKAGE_ARCH}'}" |
| 10 | PACKAGE_ARCH[vardepsexclude] = "MALI_PACKAGE_ARCH" | ||
| 9 | PACKAGE_ARCH:class-target = "${@bb.utils.contains_any('DEPENDS', 'libepoxy virglrenderer', '${MALI_PACKAGE_ARCH}', '${DEFAULT_PACKAGE_ARCH}', d)}" | 11 | PACKAGE_ARCH:class-target = "${@bb.utils.contains_any('DEPENDS', 'libepoxy virglrenderer', '${MALI_PACKAGE_ARCH}', '${DEFAULT_PACKAGE_ARCH}', d)}" |
| 10 | 12 | ||
| 11 | BBCLASSEXTEND = "nativesdk" | 13 | BBCLASSEXTEND = "nativesdk" |
diff --git a/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx_2023.2.bb b/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx_2023.2.bb new file mode 100644 index 00000000..e79df9d7 --- /dev/null +++ b/meta-xilinx-core/recipes-devtools/qemu/qemu-xilinx_2023.2.bb | |||
| @@ -0,0 +1,26 @@ | |||
| 1 | require qemu-xilinx-2023.2.inc | ||
| 2 | require recipes-devtools/qemu/qemu.inc | ||
| 3 | require qemu-xilinx-7.1.inc | ||
| 4 | require qemu-alt.inc | ||
| 5 | |||
| 6 | # Links to libmali-xlnx, so it becomes MACHINE_ARCH specific | ||
| 7 | DEFAULT_PACKAGE_ARCH := "${PACKAGE_ARCH}" | ||
| 8 | MALI_PACKAGE_ARCH[vardepsexclude] = "MACHINE_ARCH" | ||
| 9 | MALI_PACKAGE_ARCH = "${@'${MACHINE_ARCH}' if d.getVar('PREFERRED_PROVIDER_virtual/libgles1') == 'libmali-xlnx' else '${DEFAULT_PACKAGE_ARCH}'}" | ||
| 10 | PACKAGE_ARCH[vardepsexclude] = "MALI_PACKAGE_ARCH" | ||
| 11 | PACKAGE_ARCH:class-target = "${@bb.utils.contains_any('DEPENDS', 'libepoxy virglrenderer', '${MALI_PACKAGE_ARCH}', '${DEFAULT_PACKAGE_ARCH}', d)}" | ||
| 12 | |||
| 13 | BBCLASSEXTEND = "nativesdk" | ||
| 14 | |||
| 15 | RDEPENDS:${PN}:class-target += "bash" | ||
| 16 | |||
| 17 | PROVIDES:class-nativesdk = "nativesdk-qemu" | ||
| 18 | RPROVIDES:${PN}:class-nativesdk = "nativesdk-qemu" | ||
| 19 | |||
| 20 | EXTRA_OECONF:append:class-target = " --target-list=${@get_qemu_target_list(d)}" | ||
| 21 | EXTRA_OECONF:append:class-nativesdk = " --target-list=${@get_qemu_target_list(d)}" | ||
| 22 | EXTRA_OECONF:append:class-target:mipsarcho32 = "${@bb.utils.contains('BBEXTENDCURR', 'multilib', ' --disable-capstone', '', d)}" | ||
| 23 | |||
| 24 | do_install:append:class-nativesdk() { | ||
| 25 | ${@bb.utils.contains('PACKAGECONFIG', 'gtk+', 'make_qemu_wrapper', '', d)} | ||
| 26 | } | ||
diff --git a/meta-xilinx-core/recipes-devtools/qemu/qemu_%.bbappend b/meta-xilinx-core/recipes-devtools/qemu/qemu_%.bbappend index 83768622..04c89b83 100644 --- a/meta-xilinx-core/recipes-devtools/qemu/qemu_%.bbappend +++ b/meta-xilinx-core/recipes-devtools/qemu/qemu_%.bbappend | |||
| @@ -2,5 +2,7 @@ require qemu-alt.inc | |||
| 2 | 2 | ||
| 3 | # Links to libmali-xlnx, so it becomes MACHINE_ARCH specific | 3 | # Links to libmali-xlnx, so it becomes MACHINE_ARCH specific |
| 4 | DEFAULT_PACKAGE_ARCH := "${PACKAGE_ARCH}" | 4 | DEFAULT_PACKAGE_ARCH := "${PACKAGE_ARCH}" |
| 5 | MALI_PACKAGE_ARCH[vardepsexclude] = "MACHINE_ARCH" | ||
| 5 | MALI_PACKAGE_ARCH = "${@'${MACHINE_ARCH}' if d.getVar('PREFERRED_PROVIDER_virtual/libgles1') == 'libmali-xlnx' else '${DEFAULT_PACKAGE_ARCH}'}" | 6 | MALI_PACKAGE_ARCH = "${@'${MACHINE_ARCH}' if d.getVar('PREFERRED_PROVIDER_virtual/libgles1') == 'libmali-xlnx' else '${DEFAULT_PACKAGE_ARCH}'}" |
| 7 | PACKAGE_ARCH[vardepsexclude] = "MALI_PACKAGE_ARCH" | ||
| 6 | PACKAGE_ARCH:class-target = "${@bb.utils.contains_any('DEPENDS', 'libepoxy virglrenderer', '${MALI_PACKAGE_ARCH}', '${DEFAULT_PACKAGE_ARCH}', d)}" | 8 | PACKAGE_ARCH:class-target = "${@bb.utils.contains_any('DEPENDS', 'libepoxy virglrenderer', '${MALI_PACKAGE_ARCH}', '${DEFAULT_PACKAGE_ARCH}', d)}" |
diff --git a/meta-xilinx-core/recipes-gnome/gtk+/gtk+3_%.bbappend b/meta-xilinx-core/recipes-gnome/gtk+/gtk+3_%.bbappend index 83fd7fa6..03823f6e 100644 --- a/meta-xilinx-core/recipes-gnome/gtk+/gtk+3_%.bbappend +++ b/meta-xilinx-core/recipes-gnome/gtk+/gtk+3_%.bbappend | |||
| @@ -1,4 +1,6 @@ | |||
| 1 | # Links to libmali-xlnx, so it becomes MACHINE_ARCH specific | 1 | # Links to libmali-xlnx, so it becomes MACHINE_ARCH specific |
| 2 | DEFAULT_PACKAGE_ARCH := "${PACKAGE_ARCH}" | 2 | DEFAULT_PACKAGE_ARCH := "${PACKAGE_ARCH}" |
| 3 | MALI_PACKAGE_ARCH[vardepsexclude] = "MACHINE_ARCH" | ||
| 3 | MALI_PACKAGE_ARCH = "${@'${MACHINE_ARCH}' if d.getVar('PREFERRED_PROVIDER_virtual/libgles1') == 'libmali-xlnx' else '${DEFAULT_PACKAGE_ARCH}'}" | 4 | MALI_PACKAGE_ARCH = "${@'${MACHINE_ARCH}' if d.getVar('PREFERRED_PROVIDER_virtual/libgles1') == 'libmali-xlnx' else '${DEFAULT_PACKAGE_ARCH}'}" |
| 5 | PACKAGE_ARCH[vardepsexclude] = "MALI_PACKAGE_ARCH" | ||
| 4 | PACKAGE_ARCH = "${@bb.utils.contains_any('DEPENDS', 'virtual/libgles1 virtual/libgles2 virtual/egl virtual/libgbm', '${MALI_PACKAGE_ARCH}', '${DEFAULT_PACKAGE_ARCH}', d)}" | 6 | PACKAGE_ARCH = "${@bb.utils.contains_any('DEPENDS', 'virtual/libgles1 virtual/libgles2 virtual/egl virtual/libgbm', '${MALI_PACKAGE_ARCH}', '${DEFAULT_PACKAGE_ARCH}', d)}" |
diff --git a/meta-xilinx-core/recipes-graphics/cairo/cairo_%.bbappend b/meta-xilinx-core/recipes-graphics/cairo/cairo_%.bbappend index 4b8d9935..61b4d1da 100644 --- a/meta-xilinx-core/recipes-graphics/cairo/cairo_%.bbappend +++ b/meta-xilinx-core/recipes-graphics/cairo/cairo_%.bbappend | |||
| @@ -12,6 +12,8 @@ PACKAGECONFIG = "${@'${PACKAGECONFIG_LIBMALI}' if d.getVar('PREFERRED_PROVIDER_v | |||
| 12 | 12 | ||
| 13 | # Links to libmali-xlnx, so it becomes MACHINE_ARCH specific | 13 | # Links to libmali-xlnx, so it becomes MACHINE_ARCH specific |
| 14 | DEFAULT_PACKAGE_ARCH := "${PACKAGE_ARCH}" | 14 | DEFAULT_PACKAGE_ARCH := "${PACKAGE_ARCH}" |
| 15 | MALI_PACKAGE_ARCH[vardepsexclude] = "MACHINE_ARCH" | ||
| 15 | MALI_PACKAGE_ARCH = "${@'${MACHINE_ARCH}' if d.getVar('PREFERRED_PROVIDER_virtual/libgles1') == 'libmali-xlnx' else '${DEFAULT_PACKAGE_ARCH}'}" | 16 | MALI_PACKAGE_ARCH = "${@'${MACHINE_ARCH}' if d.getVar('PREFERRED_PROVIDER_virtual/libgles1') == 'libmali-xlnx' else '${DEFAULT_PACKAGE_ARCH}'}" |
| 17 | PACKAGE_ARCH[vardepsexclude] = "MALI_PACKAGE_ARCH" | ||
| 16 | PACKAGE_ARCH = "${@bb.utils.contains_any('DEPENDS', 'virtual/libgles1 virtual/libgles2 virtual/egl virtual/libgbm', '${MALI_PACKAGE_ARCH}', '${DEFAULT_PACKAGE_ARCH}', d)}" | 18 | PACKAGE_ARCH = "${@bb.utils.contains_any('DEPENDS', 'virtual/libgles1 virtual/libgles2 virtual/egl virtual/libgbm', '${MALI_PACKAGE_ARCH}', '${DEFAULT_PACKAGE_ARCH}', d)}" |
| 17 | 19 | ||
diff --git a/meta-xilinx-core/recipes-graphics/libepoxy/libepoxy_%.bbappend b/meta-xilinx-core/recipes-graphics/libepoxy/libepoxy_%.bbappend index 83fd7fa6..03823f6e 100644 --- a/meta-xilinx-core/recipes-graphics/libepoxy/libepoxy_%.bbappend +++ b/meta-xilinx-core/recipes-graphics/libepoxy/libepoxy_%.bbappend | |||
| @@ -1,4 +1,6 @@ | |||
| 1 | # Links to libmali-xlnx, so it becomes MACHINE_ARCH specific | 1 | # Links to libmali-xlnx, so it becomes MACHINE_ARCH specific |
| 2 | DEFAULT_PACKAGE_ARCH := "${PACKAGE_ARCH}" | 2 | DEFAULT_PACKAGE_ARCH := "${PACKAGE_ARCH}" |
| 3 | MALI_PACKAGE_ARCH[vardepsexclude] = "MACHINE_ARCH" | ||
| 3 | MALI_PACKAGE_ARCH = "${@'${MACHINE_ARCH}' if d.getVar('PREFERRED_PROVIDER_virtual/libgles1') == 'libmali-xlnx' else '${DEFAULT_PACKAGE_ARCH}'}" | 4 | MALI_PACKAGE_ARCH = "${@'${MACHINE_ARCH}' if d.getVar('PREFERRED_PROVIDER_virtual/libgles1') == 'libmali-xlnx' else '${DEFAULT_PACKAGE_ARCH}'}" |
| 5 | PACKAGE_ARCH[vardepsexclude] = "MALI_PACKAGE_ARCH" | ||
| 4 | PACKAGE_ARCH = "${@bb.utils.contains_any('DEPENDS', 'virtual/libgles1 virtual/libgles2 virtual/egl virtual/libgbm', '${MALI_PACKAGE_ARCH}', '${DEFAULT_PACKAGE_ARCH}', d)}" | 6 | PACKAGE_ARCH = "${@bb.utils.contains_any('DEPENDS', 'virtual/libgles1 virtual/libgles2 virtual/egl virtual/libgbm', '${MALI_PACKAGE_ARCH}', '${DEFAULT_PACKAGE_ARCH}', d)}" |
diff --git a/meta-xilinx-core/recipes-graphics/libgles/libmali-xlnx.bb b/meta-xilinx-core/recipes-graphics/libgles/libmali-xlnx.bb index 07de26dc..db99c4d7 100644 --- a/meta-xilinx-core/recipes-graphics/libgles/libmali-xlnx.bb +++ b/meta-xilinx-core/recipes-graphics/libgles/libmali-xlnx.bb | |||
| @@ -13,7 +13,7 @@ PROVIDES += "virtual/libgles1 virtual/libgles2 virtual/egl virtual/libgbm" | |||
| 13 | FILESEXTRAPATHS:prepend := "${THISDIR}/files:" | 13 | FILESEXTRAPATHS:prepend := "${THISDIR}/files:" |
| 14 | 14 | ||
| 15 | REPO ?= "git://github.com/Xilinx/mali-userspace-binaries.git;protocol=https" | 15 | REPO ?= "git://github.com/Xilinx/mali-userspace-binaries.git;protocol=https" |
| 16 | BRANCH ?= "xlnx_rel_v2023.1" | 16 | BRANCH ?= "xlnx_rel_v2023.2" |
| 17 | SRCREV ?= "b3a772aad859cdadc8513b11c3e995546c20e75e" | 17 | SRCREV ?= "b3a772aad859cdadc8513b11c3e995546c20e75e" |
| 18 | BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}" | 18 | BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}" |
| 19 | 19 | ||
diff --git a/meta-xilinx-core/recipes-graphics/libglu/libglu_%.bbappend b/meta-xilinx-core/recipes-graphics/libglu/libglu_%.bbappend index 815ec69f..e824a179 100644 --- a/meta-xilinx-core/recipes-graphics/libglu/libglu_%.bbappend +++ b/meta-xilinx-core/recipes-graphics/libglu/libglu_%.bbappend | |||
| @@ -4,6 +4,8 @@ DEPENDS:append = "${@bb.utils.contains('MACHINE_FEATURES', 'mali400', ' ${MALI_ | |||
| 4 | 4 | ||
| 5 | # Links to libmali-xlnx, so it becomes MACHINE_ARCH specific | 5 | # Links to libmali-xlnx, so it becomes MACHINE_ARCH specific |
| 6 | DEFAULT_PACKAGE_ARCH := "${PACKAGE_ARCH}" | 6 | DEFAULT_PACKAGE_ARCH := "${PACKAGE_ARCH}" |
| 7 | MALI_PACKAGE_ARCH[vardepsexclude] = "MACHINE_ARCH" | ||
| 7 | MALI_PACKAGE_ARCH = "${@'${MACHINE_ARCH}' if d.getVar('PREFERRED_PROVIDER_virtual/libgles1') == 'libmali-xlnx' else '${DEFAULT_PACKAGE_ARCH}'}" | 8 | MALI_PACKAGE_ARCH = "${@'${MACHINE_ARCH}' if d.getVar('PREFERRED_PROVIDER_virtual/libgles1') == 'libmali-xlnx' else '${DEFAULT_PACKAGE_ARCH}'}" |
| 9 | PACKAGE_ARCH[vardepsexclude] = "MALI_PACKAGE_ARCH" | ||
| 8 | PACKAGE_ARCH = "${@bb.utils.contains_any('DEPENDS', 'virtual/libgles1 virtual/libgles2 virtual/egl virtual/libgbm', '${MALI_PACKAGE_ARCH}', '${DEFAULT_PACKAGE_ARCH}', d)}" | 10 | PACKAGE_ARCH = "${@bb.utils.contains_any('DEPENDS', 'virtual/libgles1 virtual/libgles2 virtual/egl virtual/libgbm', '${MALI_PACKAGE_ARCH}', '${DEFAULT_PACKAGE_ARCH}', d)}" |
| 9 | 11 | ||
diff --git a/meta-xilinx-core/recipes-graphics/libsdl2/libsdl2_%.bbappend b/meta-xilinx-core/recipes-graphics/libsdl2/libsdl2_%.bbappend index 83fd7fa6..03823f6e 100644 --- a/meta-xilinx-core/recipes-graphics/libsdl2/libsdl2_%.bbappend +++ b/meta-xilinx-core/recipes-graphics/libsdl2/libsdl2_%.bbappend | |||
| @@ -1,4 +1,6 @@ | |||
| 1 | # Links to libmali-xlnx, so it becomes MACHINE_ARCH specific | 1 | # Links to libmali-xlnx, so it becomes MACHINE_ARCH specific |
| 2 | DEFAULT_PACKAGE_ARCH := "${PACKAGE_ARCH}" | 2 | DEFAULT_PACKAGE_ARCH := "${PACKAGE_ARCH}" |
| 3 | MALI_PACKAGE_ARCH[vardepsexclude] = "MACHINE_ARCH" | ||
| 3 | MALI_PACKAGE_ARCH = "${@'${MACHINE_ARCH}' if d.getVar('PREFERRED_PROVIDER_virtual/libgles1') == 'libmali-xlnx' else '${DEFAULT_PACKAGE_ARCH}'}" | 4 | MALI_PACKAGE_ARCH = "${@'${MACHINE_ARCH}' if d.getVar('PREFERRED_PROVIDER_virtual/libgles1') == 'libmali-xlnx' else '${DEFAULT_PACKAGE_ARCH}'}" |
| 5 | PACKAGE_ARCH[vardepsexclude] = "MALI_PACKAGE_ARCH" | ||
| 4 | PACKAGE_ARCH = "${@bb.utils.contains_any('DEPENDS', 'virtual/libgles1 virtual/libgles2 virtual/egl virtual/libgbm', '${MALI_PACKAGE_ARCH}', '${DEFAULT_PACKAGE_ARCH}', d)}" | 6 | PACKAGE_ARCH = "${@bb.utils.contains_any('DEPENDS', 'virtual/libgles1 virtual/libgles2 virtual/egl virtual/libgbm', '${MALI_PACKAGE_ARCH}', '${DEFAULT_PACKAGE_ARCH}', d)}" |
diff --git a/meta-xilinx-core/recipes-graphics/mesa/mesa-demos_%.bbappend b/meta-xilinx-core/recipes-graphics/mesa/mesa-demos_%.bbappend index b7714a39..5c84f56e 100644 --- a/meta-xilinx-core/recipes-graphics/mesa/mesa-demos_%.bbappend +++ b/meta-xilinx-core/recipes-graphics/mesa/mesa-demos_%.bbappend | |||
| @@ -10,5 +10,7 @@ DEPENDS += "wayland-protocols" | |||
| 10 | 10 | ||
| 11 | # Links to libmali-xlnx, so it becomes MACHINE_ARCH specific | 11 | # Links to libmali-xlnx, so it becomes MACHINE_ARCH specific |
| 12 | DEFAULT_PACKAGE_ARCH := "${PACKAGE_ARCH}" | 12 | DEFAULT_PACKAGE_ARCH := "${PACKAGE_ARCH}" |
| 13 | MALI_PACKAGE_ARCH[vardepsexclude] = "MACHINE_ARCH" | ||
| 13 | MALI_PACKAGE_ARCH = "${@'${MACHINE_ARCH}' if d.getVar('PREFERRED_PROVIDER_virtual/libgles1') == 'libmali-xlnx' else '${DEFAULT_PACKAGE_ARCH}'}" | 14 | MALI_PACKAGE_ARCH = "${@'${MACHINE_ARCH}' if d.getVar('PREFERRED_PROVIDER_virtual/libgles1') == 'libmali-xlnx' else '${DEFAULT_PACKAGE_ARCH}'}" |
| 15 | PACKAGE_ARCH[vardepsexclude] = "MALI_PACKAGE_ARCH" | ||
| 14 | PACKAGE_ARCH = "${@bb.utils.contains_any('DEPENDS', 'virtual/libgles1 virtual/libgles2 virtual/egl virtual/libgbm', '${MALI_PACKAGE_ARCH}', '${DEFAULT_PACKAGE_ARCH}', d)}" | 16 | PACKAGE_ARCH = "${@bb.utils.contains_any('DEPENDS', 'virtual/libgles1 virtual/libgles2 virtual/egl virtual/libgbm', '${MALI_PACKAGE_ARCH}', '${DEFAULT_PACKAGE_ARCH}', d)}" |
diff --git a/meta-xilinx-core/recipes-graphics/mesa/mesa-gl_%.bbappend b/meta-xilinx-core/recipes-graphics/mesa/mesa-gl_%.bbappend index d322b480..a8e18a57 100644 --- a/meta-xilinx-core/recipes-graphics/mesa/mesa-gl_%.bbappend +++ b/meta-xilinx-core/recipes-graphics/mesa/mesa-gl_%.bbappend | |||
| @@ -12,4 +12,7 @@ do_install:append () { | |||
| 12 | 12 | ||
| 13 | # If we require libmali-xlnx, this becomes MACHINE_ARCH specific | 13 | # If we require libmali-xlnx, this becomes MACHINE_ARCH specific |
| 14 | DEFAULT_PACKAGE_ARCH := "${PACKAGE_ARCH}" | 14 | DEFAULT_PACKAGE_ARCH := "${PACKAGE_ARCH}" |
| 15 | PACKAGE_ARCH = "${@'${MACHINE_ARCH}' if d.getVar('PREFERRED_PROVIDER_virtual/libgles1') == 'libmali-xlnx' else '${DEFAULT_PACKAGE_ARCH}'}" | 15 | MALI_PACKAGE_ARCH[vardepsexclude] = "MACHINE_ARCH" |
| 16 | MALI_PACKAGE_ARCH = "${MACHINE_ARCH}" | ||
| 17 | PACKAGE_ARCH[vardepsexclude] = "MALI_PACKAGE_ARCH" | ||
| 18 | PACKAGE_ARCH = "${@'${MALI_PACKAGE_ARCH}' if d.getVar('PREFERRED_PROVIDER_virtual/libgles1') == 'libmali-xlnx' else '${DEFAULT_PACKAGE_ARCH}'}" | ||
diff --git a/meta-xilinx-core/recipes-graphics/mesa/mesa_%.bbappend b/meta-xilinx-core/recipes-graphics/mesa/mesa_%.bbappend index 8c0e7898..d148e679 100644 --- a/meta-xilinx-core/recipes-graphics/mesa/mesa_%.bbappend +++ b/meta-xilinx-core/recipes-graphics/mesa/mesa_%.bbappend | |||
| @@ -9,4 +9,7 @@ PACKAGECONFIG_MALI = "${@bb.utils.contains('DISTRO_FEATURES', 'libmali', '', 'li | |||
| 9 | PACKAGECONFIG:append:class-target = "${@bb.utils.contains('MACHINE_FEATURES', 'mali400', '${PACKAGECONFIG_MALI}', '', d)}" | 9 | PACKAGECONFIG:append:class-target = "${@bb.utils.contains('MACHINE_FEATURES', 'mali400', '${PACKAGECONFIG_MALI}', '', d)}" |
| 10 | 10 | ||
| 11 | PACKAGE_ARCH_DEFAULT := "${PACKAGE_ARCH}" | 11 | PACKAGE_ARCH_DEFAULT := "${PACKAGE_ARCH}" |
| 12 | PACKAGE_ARCH = "${@bb.utils.contains('MACHINE_FEATURES', 'mali400', '${MACHINE_ARCH}', '${PACKAGE_ARCH_DEFAULT}', d)}" | 12 | MALI_PACKAGE_ARCH[vardepsexclude] = "MACHINE_ARCH" |
| 13 | MALI_PACKAGE_ARCH = "${MACHINE_ARCH}" | ||
| 14 | PACKAGE_ARCH[vardepsexclude] = "MALI_PACKAGE_ARCH" | ||
| 15 | PACKAGE_ARCH = "${@bb.utils.contains('MACHINE_FEATURES', 'mali400', '${MALI_PACKAGE_ARCH}', '${PACKAGE_ARCH_DEFAULT}', d)}" | ||
diff --git a/meta-xilinx-core/recipes-graphics/virglrenderer/virglrenderer_%.bbappend b/meta-xilinx-core/recipes-graphics/virglrenderer/virglrenderer_%.bbappend index 83fd7fa6..03823f6e 100644 --- a/meta-xilinx-core/recipes-graphics/virglrenderer/virglrenderer_%.bbappend +++ b/meta-xilinx-core/recipes-graphics/virglrenderer/virglrenderer_%.bbappend | |||
| @@ -1,4 +1,6 @@ | |||
| 1 | # Links to libmali-xlnx, so it becomes MACHINE_ARCH specific | 1 | # Links to libmali-xlnx, so it becomes MACHINE_ARCH specific |
| 2 | DEFAULT_PACKAGE_ARCH := "${PACKAGE_ARCH}" | 2 | DEFAULT_PACKAGE_ARCH := "${PACKAGE_ARCH}" |
| 3 | MALI_PACKAGE_ARCH[vardepsexclude] = "MACHINE_ARCH" | ||
| 3 | MALI_PACKAGE_ARCH = "${@'${MACHINE_ARCH}' if d.getVar('PREFERRED_PROVIDER_virtual/libgles1') == 'libmali-xlnx' else '${DEFAULT_PACKAGE_ARCH}'}" | 4 | MALI_PACKAGE_ARCH = "${@'${MACHINE_ARCH}' if d.getVar('PREFERRED_PROVIDER_virtual/libgles1') == 'libmali-xlnx' else '${DEFAULT_PACKAGE_ARCH}'}" |
| 5 | PACKAGE_ARCH[vardepsexclude] = "MALI_PACKAGE_ARCH" | ||
| 4 | PACKAGE_ARCH = "${@bb.utils.contains_any('DEPENDS', 'virtual/libgles1 virtual/libgles2 virtual/egl virtual/libgbm', '${MALI_PACKAGE_ARCH}', '${DEFAULT_PACKAGE_ARCH}', d)}" | 6 | PACKAGE_ARCH = "${@bb.utils.contains_any('DEPENDS', 'virtual/libgles1 virtual/libgles2 virtual/egl virtual/libgbm', '${MALI_PACKAGE_ARCH}', '${DEFAULT_PACKAGE_ARCH}', d)}" |
diff --git a/meta-xilinx-core/recipes-graphics/wayland/weston_%.bbappend b/meta-xilinx-core/recipes-graphics/wayland/weston_%.bbappend index edb77fc5..ca77f0d3 100644 --- a/meta-xilinx-core/recipes-graphics/wayland/weston_%.bbappend +++ b/meta-xilinx-core/recipes-graphics/wayland/weston_%.bbappend | |||
| @@ -11,5 +11,7 @@ PACKAGE_ARCH = "${DEFAULT_PACKAGE_ARCH}" | |||
| 11 | 11 | ||
| 12 | # Links to libmali-xlnx, so it becomes MACHINE_ARCH specific | 12 | # Links to libmali-xlnx, so it becomes MACHINE_ARCH specific |
| 13 | DEFAULT_PACKAGE_ARCH := "${PACKAGE_ARCH}" | 13 | DEFAULT_PACKAGE_ARCH := "${PACKAGE_ARCH}" |
| 14 | MALI_PACKAGE_ARCH[vardepsexclude] = "MACHINE_ARCH" | ||
| 14 | MALI_PACKAGE_ARCH = "${@'${MACHINE_ARCH}' if d.getVar('PREFERRED_PROVIDER_virtual/libgles1') == 'libmali-xlnx' else '${DEFAULT_PACKAGE_ARCH}'}" | 15 | MALI_PACKAGE_ARCH = "${@'${MACHINE_ARCH}' if d.getVar('PREFERRED_PROVIDER_virtual/libgles1') == 'libmali-xlnx' else '${DEFAULT_PACKAGE_ARCH}'}" |
| 16 | PACKAGE_ARCH[vardepsexclude] = "MALI_PACKAGE_ARCH" | ||
| 15 | PACKAGE_ARCH = "${@bb.utils.contains_any('DEPENDS', 'virtual/libgles1 virtual/libgles2 virtual/egl virtual/libgbm', '${MALI_PACKAGE_ARCH}', '${DEFAULT_PACKAGE_ARCH}', d)}" | 17 | PACKAGE_ARCH = "${@bb.utils.contains_any('DEPENDS', 'virtual/libgles1 virtual/libgles2 virtual/egl virtual/libgbm', '${MALI_PACKAGE_ARCH}', '${DEFAULT_PACKAGE_ARCH}', d)}" |
diff --git a/meta-xilinx-core/recipes-graphics/xorg-xserver/xserver-xorg/99-monitor-hotplug.rules b/meta-xilinx-core/recipes-graphics/xorg-xserver/xserver-xorg/99-monitor-hotplug.rules new file mode 100644 index 00000000..eeb7d671 --- /dev/null +++ b/meta-xilinx-core/recipes-graphics/xorg-xserver/xserver-xorg/99-monitor-hotplug.rules | |||
| @@ -0,0 +1 @@ | |||
| ACTION=="change", SUBSYSTEM=="drm", ENV{HOTPLUG}=="1", RUN+="/usr/bin/monitor-hotplug.sh" | |||
diff --git a/meta-xilinx-core/recipes-graphics/xorg-xserver/xserver-xorg/monitor-hotplug.sh b/meta-xilinx-core/recipes-graphics/xorg-xserver/xserver-xorg/monitor-hotplug.sh new file mode 100755 index 00000000..bceb5607 --- /dev/null +++ b/meta-xilinx-core/recipes-graphics/xorg-xserver/xserver-xorg/monitor-hotplug.sh | |||
| @@ -0,0 +1,65 @@ | |||
| 1 | #! /bin/sh | ||
| 2 | |||
| 3 | # Copyright (C) 2018 Xilinx, Inc. All rights reserved. | ||
| 4 | # Copyright (C) 2023 Advanced Micro Devices, Inc. All rights reserved. | ||
| 5 | # | ||
| 6 | # Permission is hereby granted, free of charge, to any person obtaining a copy | ||
| 7 | # of this software and associated documentation files (the "Software"), to deal | ||
| 8 | # in the Software without restriction, including without limitation the rights | ||
| 9 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
| 10 | # copies of the Software, and to permit persons to whom the Software is | ||
| 11 | # furnished to do so, subject to the following conditions: | ||
| 12 | # | ||
| 13 | # The above copyright notice and this permission notice shall be included in | ||
| 14 | # all copies or substantial portions of the Software. | ||
| 15 | # | ||
| 16 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
| 17 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
| 18 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
| 19 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
| 20 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
| 21 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||
| 22 | # THE SOFTWARE. | ||
| 23 | |||
| 24 | # Adapt this script to your needs. | ||
| 25 | |||
| 26 | DEVICES=$(find /sys/class/drm/*/status) | ||
| 27 | |||
| 28 | # inspired by /etc/acpd/lid.sh and the function it sources. | ||
| 29 | |||
| 30 | # Read first X display number from the list. | ||
| 31 | displaynum=`ls /tmp/.X11-unix/* | sed s#/tmp/.X11-unix/X## | head -n 1` | ||
| 32 | displaynum=${displaynum%% *} | ||
| 33 | |||
| 34 | display=":$displaynum.0" | ||
| 35 | export DISPLAY=":$displaynum.0" | ||
| 36 | |||
| 37 | # from https://wiki.archlinux.org/index.php/Acpid#Laptop_Monitor_Power_Off | ||
| 38 | |||
| 39 | # Clear XAUTHORITY by default in case X session is not using display manager. | ||
| 40 | unset XAUTHORITY | ||
| 41 | |||
| 42 | # Detect X session command line started for the display $displaynum and extract | ||
| 43 | # -auth argument if any. | ||
| 44 | ps -eo args | grep -e "Xorg\W*:$displaynum" | grep -e -auth | while read -r line | ||
| 45 | do | ||
| 46 | if [[ "${line%% *}" == *Xorg ]]; then | ||
| 47 | export XAUTHORITY=`echo $line | sed -n 's/.*-auth //; s/ -[^ ].*//; p'` | ||
| 48 | break | ||
| 49 | fi | ||
| 50 | done | ||
| 51 | |||
| 52 | for i in /sys/class/drm/*/*/status ; | ||
| 53 | do | ||
| 54 | status=$(cat $i); | ||
| 55 | connector=${i%/status*}; | ||
| 56 | connector=${connector#*-}; | ||
| 57 | if [ "$status" == "disconnected" ]; then | ||
| 58 | xset dpms force off | ||
| 59 | elif [ "$status" == "connected" ]; then | ||
| 60 | xset dpms force on | ||
| 61 | if [ "$(xrandr | grep '\*')" = "" ]; then | ||
| 62 | xrandr --output $connector --auto | ||
| 63 | fi | ||
| 64 | fi | ||
| 65 | done | ||
diff --git a/meta-xilinx-core/recipes-graphics/xorg-xserver/xserver-xorg_%.bbappend b/meta-xilinx-core/recipes-graphics/xorg-xserver/xserver-xorg_%.bbappend index 83fd7fa6..7486200d 100644 --- a/meta-xilinx-core/recipes-graphics/xorg-xserver/xserver-xorg_%.bbappend +++ b/meta-xilinx-core/recipes-graphics/xorg-xserver/xserver-xorg_%.bbappend | |||
| @@ -1,4 +1,23 @@ | |||
| 1 | # Links to libmali-xlnx, so it becomes MACHINE_ARCH specific | 1 | # Links to libmali-xlnx, so it becomes MACHINE_ARCH specific |
| 2 | DEFAULT_PACKAGE_ARCH := "${PACKAGE_ARCH}" | 2 | DEFAULT_PACKAGE_ARCH := "${PACKAGE_ARCH}" |
| 3 | MALI_PACKAGE_ARCH[vardepsexclude] = "MACHINE_ARCH" | ||
| 3 | MALI_PACKAGE_ARCH = "${@'${MACHINE_ARCH}' if d.getVar('PREFERRED_PROVIDER_virtual/libgles1') == 'libmali-xlnx' else '${DEFAULT_PACKAGE_ARCH}'}" | 4 | MALI_PACKAGE_ARCH = "${@'${MACHINE_ARCH}' if d.getVar('PREFERRED_PROVIDER_virtual/libgles1') == 'libmali-xlnx' else '${DEFAULT_PACKAGE_ARCH}'}" |
| 5 | PACKAGE_ARCH[vardepsexclude] = "MALI_PACKAGE_ARCH" | ||
| 4 | PACKAGE_ARCH = "${@bb.utils.contains_any('DEPENDS', 'virtual/libgles1 virtual/libgles2 virtual/egl virtual/libgbm', '${MALI_PACKAGE_ARCH}', '${DEFAULT_PACKAGE_ARCH}', d)}" | 6 | PACKAGE_ARCH = "${@bb.utils.contains_any('DEPENDS', 'virtual/libgles1 virtual/libgles2 virtual/egl virtual/libgbm', '${MALI_PACKAGE_ARCH}', '${DEFAULT_PACKAGE_ARCH}', d)}" |
| 7 | |||
| 8 | FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:" | ||
| 9 | |||
| 10 | SRC_URI += " \ | ||
| 11 | file://monitor-hotplug.sh \ | ||
| 12 | file://99-monitor-hotplug.rules \ | ||
| 13 | " | ||
| 14 | |||
| 15 | do_install:append() { | ||
| 16 | install -d ${D}${bindir} | ||
| 17 | install -m 0755 ${WORKDIR}/monitor-hotplug.sh ${D}${bindir} | ||
| 18 | |||
| 19 | install -d ${D}${sysconfdir}/udev/rules.d | ||
| 20 | install -m 0644 ${WORKDIR}/99-monitor-hotplug.rules ${D}${sysconfdir}/udev/rules.d/local.rules | ||
| 21 | } | ||
| 22 | |||
| 23 | FILES:${PN} += "${sysconfdir}/udev/rules.d/*" | ||
diff --git a/meta-xilinx-core/recipes-graphics/xwayland/xwayland_%.bbappend b/meta-xilinx-core/recipes-graphics/xwayland/xwayland_%.bbappend index 4d9963b8..c1005f11 100644 --- a/meta-xilinx-core/recipes-graphics/xwayland/xwayland_%.bbappend +++ b/meta-xilinx-core/recipes-graphics/xwayland/xwayland_%.bbappend | |||
| @@ -1,5 +1,7 @@ | |||
| 1 | # Links to libmali-xlnx, so it becomes MACHINE_ARCH specific | 1 | # Links to libmali-xlnx, so it becomes MACHINE_ARCH specific |
| 2 | DEFAULT_PACKAGE_ARCH := "${PACKAGE_ARCH}" | 2 | DEFAULT_PACKAGE_ARCH := "${PACKAGE_ARCH}" |
| 3 | MALI_PACKAGE_ARCH[vardepsexclude] = "MACHINE_ARCH" | ||
| 3 | MALI_PACKAGE_ARCH = "${@'${MACHINE_ARCH}' if d.getVar('PREFERRED_PROVIDER_virtual/libgles1') == 'libmali-xlnx' else '${DEFAULT_PACKAGE_ARCH}'}" | 4 | MALI_PACKAGE_ARCH = "${@'${MACHINE_ARCH}' if d.getVar('PREFERRED_PROVIDER_virtual/libgles1') == 'libmali-xlnx' else '${DEFAULT_PACKAGE_ARCH}'}" |
| 5 | PACKAGE_ARCH[vardepsexclude] = "MALI_PACKAGE_ARCH" | ||
| 4 | PACKAGE_ARCH = "${@bb.utils.contains_any('DEPENDS', 'virtual/libgles1 virtual/libgles2 virtual/egl virtual/libgbm', '${MALI_PACKAGE_ARCH}', '${DEFAULT_PACKAGE_ARCH}', d)}" | 6 | PACKAGE_ARCH = "${@bb.utils.contains_any('DEPENDS', 'virtual/libgles1 virtual/libgles2 virtual/egl virtual/libgbm', '${MALI_PACKAGE_ARCH}', '${DEFAULT_PACKAGE_ARCH}', d)}" |
| 5 | 7 | ||
diff --git a/meta-xilinx-core/recipes-kernel/dp/kernel-module-dp_2023.2.bb b/meta-xilinx-core/recipes-kernel/dp/kernel-module-dp_2023.2.bb new file mode 100644 index 00000000..d1c6bd3d --- /dev/null +++ b/meta-xilinx-core/recipes-kernel/dp/kernel-module-dp_2023.2.bb | |||
| @@ -0,0 +1,24 @@ | |||
| 1 | SUMMARY = "Xilinx DisplayPort Linux Kernel module" | ||
| 2 | DESCRIPTION = "Out-of-tree DisplayPort(DP) kernel modules provider for aarch64 devices" | ||
| 3 | SECTION = "kernel/modules" | ||
| 4 | LICENSE = "GPL-2.0-only" | ||
| 5 | LIC_FILES_CHKSUM = "file://LICENSE.md;md5=eb723b61539feef013de476e68b5c50a" | ||
| 6 | |||
| 7 | XLNX_DP_VERSION = "6.1.0" | ||
| 8 | PV = "${XLNX_DP_VERSION}+xilinx-v${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[1] or ''}+git${SRCPV}" | ||
| 9 | |||
| 10 | S = "${WORKDIR}/git" | ||
| 11 | |||
| 12 | BRANCH ?= "xlnx_rel_v2023.2" | ||
| 13 | REPO ?= "git://github.com/xilinx/dp-modules.git;protocol=https" | ||
| 14 | SRCREV ?= "5b0969ac09f301c33bccc140c8f60e832f5cf222" | ||
| 15 | |||
| 16 | BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}" | ||
| 17 | SRC_URI = "${REPO};${BRANCHARG}" | ||
| 18 | |||
| 19 | inherit module | ||
| 20 | |||
| 21 | EXTRA_OEMAKE += "O=${STAGING_KERNEL_BUILDDIR}" | ||
| 22 | COMPATIBLE_MACHINE = "^$" | ||
| 23 | COMPATIBLE_MACHINE:zynqmp = "zynqmp" | ||
| 24 | COMPATIBLE_MACHINE:versal = "versal" | ||
diff --git a/meta-xilinx-core/recipes-kernel/hdmi/kernel-module-hdmi_2023.2.bb b/meta-xilinx-core/recipes-kernel/hdmi/kernel-module-hdmi_2023.2.bb new file mode 100644 index 00000000..bc89f5f3 --- /dev/null +++ b/meta-xilinx-core/recipes-kernel/hdmi/kernel-module-hdmi_2023.2.bb | |||
| @@ -0,0 +1,24 @@ | |||
| 1 | SUMMARY = "Xilinx HDMI Linux Kernel module" | ||
| 2 | DESCRIPTION = "Out-of-tree HDMI kernel modules provider for MPSoC EG/EV devices" | ||
| 3 | SECTION = "kernel/modules" | ||
| 4 | LICENSE = "GPL-2.0-only" | ||
| 5 | LIC_FILES_CHKSUM = "file://LICENSE.md;md5=b34277fe156508fd5a650609dc36d1fe" | ||
| 6 | |||
| 7 | XLNX_HDMI_VERSION = "6.1" | ||
| 8 | PV = "${XLNX_HDMI_VERSION}+xilinx-v${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[1] or ''}+git${SRCPV}" | ||
| 9 | |||
| 10 | S = "${WORKDIR}/git" | ||
| 11 | |||
| 12 | BRANCH ?= "xlnx_rel_v2023.2" | ||
| 13 | REPO ?= "git://github.com/Xilinx/hdmi-modules.git;protocol=https" | ||
| 14 | SRCREV = "82209b0021a7b5d7ef71a859eed4bafeb541ed08" | ||
| 15 | |||
| 16 | BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}" | ||
| 17 | SRC_URI = "${REPO};${BRANCHARG}" | ||
| 18 | |||
| 19 | inherit module | ||
| 20 | |||
| 21 | EXTRA_OEMAKE += "O=${STAGING_KERNEL_BUILDDIR}" | ||
| 22 | COMPATIBLE_MACHINE = "^$" | ||
| 23 | COMPATIBLE_MACHINE:zynqmp = "zynqmp" | ||
| 24 | COMPATIBLE_MACHINE:versal = "versal" | ||
diff --git a/meta-xilinx-core/recipes-kernel/linux/linux-xlnx_2023.2.bb b/meta-xilinx-core/recipes-kernel/linux/linux-xlnx_2023.2.bb new file mode 100644 index 00000000..8842cb10 --- /dev/null +++ b/meta-xilinx-core/recipes-kernel/linux/linux-xlnx_2023.2.bb | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | LINUX_VERSION = "6.1.30" | ||
| 2 | YOCTO_META ?= "git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-6.1;destsuffix=yocto-kmeta" | ||
| 3 | KBRANCH="xlnx_rebase_v6.1_LTS" | ||
| 4 | SRCREV = "a19da02cf5b44420ec6afb1eef348c21d9e8cda2" | ||
| 5 | SRCREV_meta = "185bcfcbe480c742247d9117011794c69682914f" | ||
| 6 | |||
| 7 | KCONF_AUDIT_LEVEL="0" | ||
| 8 | |||
| 9 | include linux-xlnx.inc | ||
| 10 | |||
| 11 | FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:" | ||
diff --git a/meta-xilinx-core/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_%.bbappend b/meta-xilinx-core/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_%.bbappend index 83fd7fa6..03823f6e 100644 --- a/meta-xilinx-core/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_%.bbappend +++ b/meta-xilinx-core/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_%.bbappend | |||
| @@ -1,4 +1,6 @@ | |||
| 1 | # Links to libmali-xlnx, so it becomes MACHINE_ARCH specific | 1 | # Links to libmali-xlnx, so it becomes MACHINE_ARCH specific |
| 2 | DEFAULT_PACKAGE_ARCH := "${PACKAGE_ARCH}" | 2 | DEFAULT_PACKAGE_ARCH := "${PACKAGE_ARCH}" |
| 3 | MALI_PACKAGE_ARCH[vardepsexclude] = "MACHINE_ARCH" | ||
| 3 | MALI_PACKAGE_ARCH = "${@'${MACHINE_ARCH}' if d.getVar('PREFERRED_PROVIDER_virtual/libgles1') == 'libmali-xlnx' else '${DEFAULT_PACKAGE_ARCH}'}" | 4 | MALI_PACKAGE_ARCH = "${@'${MACHINE_ARCH}' if d.getVar('PREFERRED_PROVIDER_virtual/libgles1') == 'libmali-xlnx' else '${DEFAULT_PACKAGE_ARCH}'}" |
| 5 | PACKAGE_ARCH[vardepsexclude] = "MALI_PACKAGE_ARCH" | ||
| 4 | PACKAGE_ARCH = "${@bb.utils.contains_any('DEPENDS', 'virtual/libgles1 virtual/libgles2 virtual/egl virtual/libgbm', '${MALI_PACKAGE_ARCH}', '${DEFAULT_PACKAGE_ARCH}', d)}" | 6 | PACKAGE_ARCH = "${@bb.utils.contains_any('DEPENDS', 'virtual/libgles1 virtual/libgles2 virtual/egl virtual/libgbm', '${MALI_PACKAGE_ARCH}', '${DEFAULT_PACKAGE_ARCH}', d)}" |
diff --git a/meta-xilinx-core/recipes-multimedia/vcu/kernel-module-vcu_2023.2.bb b/meta-xilinx-core/recipes-multimedia/vcu/kernel-module-vcu_2023.2.bb new file mode 100644 index 00000000..e8bd3397 --- /dev/null +++ b/meta-xilinx-core/recipes-multimedia/vcu/kernel-module-vcu_2023.2.bb | |||
| @@ -0,0 +1,39 @@ | |||
| 1 | SUMMARY = "Linux kernel module for Video Code Unit" | ||
| 2 | DESCRIPTION = "Out-of-tree VCU decoder, encoder and common kernel modules provider for MPSoC EV devices" | ||
| 3 | SECTION = "kernel/modules" | ||
| 4 | LICENSE = "GPL-2.0-only" | ||
| 5 | LIC_FILES_CHKSUM = "file://LICENSE.md;md5=eb723b61539feef013de476e68b5c50a" | ||
| 6 | |||
| 7 | XILINX_VCU_VERSION = "1.0.0" | ||
| 8 | PV = "${XILINX_VCU_VERSION}-xilinx-v${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[1] or ''}+git${SRCPV}" | ||
| 9 | |||
| 10 | S = "${WORKDIR}/git" | ||
| 11 | |||
| 12 | FILESEXTRAPATHS:prepend := "${THISDIR}/files:" | ||
| 13 | |||
| 14 | BRANCH = "xlnx_rel_v2023.2" | ||
| 15 | REPO = "git://github.com/Xilinx/vcu-modules.git;protocol=https" | ||
| 16 | SRCREV = "689c8d823b383e2a8a5249be49de627f866cfaf2" | ||
| 17 | |||
| 18 | BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}" | ||
| 19 | SRC_URI = " \ | ||
| 20 | ${REPO};${BRANCHARG} \ | ||
| 21 | file://99-vcu-enc-dec.rules \ | ||
| 22 | " | ||
| 23 | |||
| 24 | inherit module features_check | ||
| 25 | |||
| 26 | REQUIRED_MACHINE_FEATURES = "vcu" | ||
| 27 | |||
| 28 | EXTRA_OEMAKE += "O=${STAGING_KERNEL_BUILDDIR}" | ||
| 29 | |||
| 30 | RDEPENDS:${PN} = "vcu-firmware" | ||
| 31 | |||
| 32 | KERNEL_MODULE_AUTOLOAD += "dmaproxy" | ||
| 33 | |||
| 34 | do_install:append() { | ||
| 35 | install -d ${D}${sysconfdir}/udev/rules.d | ||
| 36 | install -m 0644 ${WORKDIR}/99-vcu-enc-dec.rules ${D}${sysconfdir}/udev/rules.d/ | ||
| 37 | } | ||
| 38 | |||
| 39 | FILES:${PN} = "${sysconfdir}/udev/rules.d/*" | ||
diff --git a/meta-xilinx-core/recipes-multimedia/vcu/libomxil-xlnx_2023.2.bb b/meta-xilinx-core/recipes-multimedia/vcu/libomxil-xlnx_2023.2.bb new file mode 100644 index 00000000..2c77e2b4 --- /dev/null +++ b/meta-xilinx-core/recipes-multimedia/vcu/libomxil-xlnx_2023.2.bb | |||
| @@ -0,0 +1,50 @@ | |||
| 1 | SUMMARY = "OpenMAX Integration layer for VCU" | ||
| 2 | DESCRIPTION = "OMX IL Libraries,test applications and headers for VCU" | ||
| 3 | LICENSE = "MIT" | ||
| 4 | LIC_FILES_CHKSUM = "file://LICENSE.md;md5=ef69c2bb405668101824f0b644631e2e" | ||
| 5 | |||
| 6 | XILINX_VCU_VERSION = "1.0.0" | ||
| 7 | PV = "${XILINX_VCU_VERSION}-xilinx-v${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[1] or ''}+git${SRCPV}" | ||
| 8 | |||
| 9 | BRANCH ?= "xlnx_rel_v2023.2" | ||
| 10 | REPO ?= "git://github.com/Xilinx/vcu-omx-il.git;protocol=https" | ||
| 11 | SRCREV = "3a04b5adc661a0eced626c1373dbbfe699ae6fe0" | ||
| 12 | |||
| 13 | BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}" | ||
| 14 | SRC_URI = "${REPO};${BRANCHARG}" | ||
| 15 | |||
| 16 | S = "${WORKDIR}/git" | ||
| 17 | |||
| 18 | inherit features_check | ||
| 19 | |||
| 20 | REQUIRED_MACHINE_FEATURES = "vcu" | ||
| 21 | |||
| 22 | PACKAGE_ARCH = "${MACHINE_ARCH}" | ||
| 23 | |||
| 24 | DEPENDS = "libvcu-xlnx" | ||
| 25 | RDEPENDS:${PN} = "kernel-module-vcu libvcu-xlnx" | ||
| 26 | |||
| 27 | EXTERNAL_INCLUDE="${STAGING_INCDIR}/vcu-ctrl-sw/include" | ||
| 28 | |||
| 29 | EXTRA_OEMAKE = " \ | ||
| 30 | CC='${CC}' CXX='${CXX} ${CXXFLAGS}' \ | ||
| 31 | EXTERNAL_INCLUDE='${EXTERNAL_INCLUDE}' \ | ||
| 32 | " | ||
| 33 | |||
| 34 | do_install() { | ||
| 35 | install -d ${D}${libdir} | ||
| 36 | install -d ${D}${includedir}/vcu-omx-il | ||
| 37 | |||
| 38 | install -m 0644 ${S}/omx_header/*.h ${D}${includedir}/vcu-omx-il | ||
| 39 | |||
| 40 | oe_runmake install INSTALL_PATH=${D}${bindir} | ||
| 41 | |||
| 42 | oe_libinstall -C ${S}/bin/ -so libOMX.allegro.core ${D}/${libdir}/ | ||
| 43 | oe_libinstall -C ${S}/bin/ -so libOMX.allegro.video_decoder ${D}/${libdir}/ | ||
| 44 | oe_libinstall -C ${S}/bin/ -so libOMX.allegro.video_encoder ${D}/${libdir}/ | ||
| 45 | } | ||
| 46 | |||
| 47 | # These libraries shouldn't get installed in world builds unless something | ||
| 48 | # explicitly depends upon them. | ||
| 49 | |||
| 50 | EXCLUDE_FROM_WORLD = "1" | ||
diff --git a/meta-xilinx-core/recipes-multimedia/vcu/libvcu-xlnx_2023.2.bb b/meta-xilinx-core/recipes-multimedia/vcu/libvcu-xlnx_2023.2.bb new file mode 100644 index 00000000..e6d38a4a --- /dev/null +++ b/meta-xilinx-core/recipes-multimedia/vcu/libvcu-xlnx_2023.2.bb | |||
| @@ -0,0 +1,41 @@ | |||
| 1 | SUMMARY = "Control Software for VCU" | ||
| 2 | DESCRIPTION = "Control software libraries, test applications and headers provider for VCU" | ||
| 3 | LICENSE = "MIT" | ||
| 4 | LIC_FILES_CHKSUM = "file://LICENSE.md;md5=ef69c2bb405668101824f0b644631e2e" | ||
| 5 | |||
| 6 | XILINX_VCU_VERSION = "1.0.0" | ||
| 7 | PV = "${XILINX_VCU_VERSION}-xilinx-v${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[1] or ''}+git${SRCPV}" | ||
| 8 | |||
| 9 | BRANCH ?= "xlnx_rel_v2023.2" | ||
| 10 | REPO ?= "git://github.com/Xilinx/vcu-ctrl-sw.git;protocol=https" | ||
| 11 | SRCREV = "84b0856cad7844d69f57ac4d9447c20930875475" | ||
| 12 | |||
| 13 | BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}" | ||
| 14 | SRC_URI = "${REPO};${BRANCHARG}" | ||
| 15 | |||
| 16 | S = "${WORKDIR}/git" | ||
| 17 | |||
| 18 | inherit features_check | ||
| 19 | |||
| 20 | REQUIRED_MACHINE_FEATURES = "vcu" | ||
| 21 | |||
| 22 | RDEPENDS:${PN} = "kernel-module-vcu" | ||
| 23 | |||
| 24 | EXTRA_OEMAKE = "CC='${CC}' CXX='${CXX} ${CXXFLAGS}'" | ||
| 25 | |||
| 26 | do_install() { | ||
| 27 | install -d ${D}${libdir} | ||
| 28 | install -d ${D}${includedir}/vcu-ctrl-sw/include | ||
| 29 | |||
| 30 | oe_runmake install_headers INSTALL_HDR_PATH=${D}${includedir}/vcu-ctrl-sw/include INSTALL_PATH=${D}/${bindir} | ||
| 31 | oe_libinstall -C ${S}/bin/ -so liballegro_decode ${D}/${libdir}/ | ||
| 32 | oe_libinstall -C ${S}/bin/ -so liballegro_encode ${D}/${libdir}/ | ||
| 33 | } | ||
| 34 | |||
| 35 | # These libraries shouldn't get installed in world builds unless something | ||
| 36 | # explicitly depends upon them. | ||
| 37 | |||
| 38 | EXCLUDE_FROM_WORLD = "1" | ||
| 39 | |||
| 40 | # Disable buildpaths QA check warnings. | ||
| 41 | INSANE_SKIP:${PN} += "buildpaths" | ||
diff --git a/meta-xilinx-core/recipes-multimedia/vcu/vcu-firmware_2023.2.bb b/meta-xilinx-core/recipes-multimedia/vcu/vcu-firmware_2023.2.bb new file mode 100644 index 00000000..b4cb66df --- /dev/null +++ b/meta-xilinx-core/recipes-multimedia/vcu/vcu-firmware_2023.2.bb | |||
| @@ -0,0 +1,38 @@ | |||
| 1 | SUMMARY = "Firmware for VCU" | ||
| 2 | DESCRIPTION = "Firmware binaries provider for VCU" | ||
| 3 | LICENSE = "Proprietary" | ||
| 4 | LIC_FILES_CHKSUM = "file://LICENSE.md;md5=52eb1e8f27e0e189b175c7d75f028cc6" | ||
| 5 | |||
| 6 | XILINX_VCU_VERSION = "1.0.0" | ||
| 7 | PV = "${XILINX_VCU_VERSION}-xilinx-v${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[1] or ''}+git${SRCPV}" | ||
| 8 | |||
| 9 | S = "${WORKDIR}/git" | ||
| 10 | |||
| 11 | BRANCH ?= "xlnx_rel_v2023.2" | ||
| 12 | REPO ?= "git://github.com/Xilinx/vcu-firmware.git;protocol=https" | ||
| 13 | SRCREV = "f4ab98d26aa3e244a487f518f5a76071137c8402" | ||
| 14 | |||
| 15 | BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}" | ||
| 16 | SRC_URI = "${REPO};${BRANCHARG}" | ||
| 17 | |||
| 18 | inherit features_check | ||
| 19 | |||
| 20 | REQUIRED_MACHINE_FEATURES = "vcu" | ||
| 21 | |||
| 22 | do_install() { | ||
| 23 | install -Dm 0644 ${S}/${XILINX_VCU_VERSION}/lib/firmware/al5d_b.fw ${D}/lib/firmware/al5d_b.fw | ||
| 24 | install -Dm 0644 ${S}/${XILINX_VCU_VERSION}/lib/firmware/al5d.fw ${D}/lib/firmware/al5d.fw | ||
| 25 | install -Dm 0644 ${S}/${XILINX_VCU_VERSION}/lib/firmware/al5e_b.fw ${D}/lib/firmware/al5e_b.fw | ||
| 26 | install -Dm 0644 ${S}/${XILINX_VCU_VERSION}/lib/firmware/al5e.fw ${D}/lib/firmware/al5e.fw | ||
| 27 | } | ||
| 28 | |||
| 29 | # Inhibit warnings about files being stripped | ||
| 30 | INHIBIT_PACKAGE_DEBUG_SPLIT = "1" | ||
| 31 | INHIBIT_PACKAGE_STRIP = "1" | ||
| 32 | FILES:${PN} = "/lib/firmware/*" | ||
| 33 | |||
| 34 | # These libraries shouldn't get installed in world builds unless something | ||
| 35 | # explicitly depends upon them. | ||
| 36 | EXCLUDE_FROM_WORLD = "1" | ||
| 37 | |||
| 38 | INSANE_SKIP:${PN} = "ldflags" | ||
diff --git a/meta-xilinx-core/recipes-multimedia/vdu/kernel-module-vdu_2023.1.bb b/meta-xilinx-core/recipes-multimedia/vdu/kernel-module-vdu_2023.1.bb index a1396278..9b835490 100644 --- a/meta-xilinx-core/recipes-multimedia/vdu/kernel-module-vdu_2023.1.bb +++ b/meta-xilinx-core/recipes-multimedia/vdu/kernel-module-vdu_2023.1.bb | |||
| @@ -5,7 +5,8 @@ LICENSE = "GPLv2" | |||
| 5 | LIC_FILES_CHKSUM = "file://LICENSE.md;md5=eb723b61539feef013de476e68b5c50a" | 5 | LIC_FILES_CHKSUM = "file://LICENSE.md;md5=eb723b61539feef013de476e68b5c50a" |
| 6 | 6 | ||
| 7 | XILINX_VDU_VERSION = "1.0.0" | 7 | XILINX_VDU_VERSION = "1.0.0" |
| 8 | PV = "${XILINX_VDU_VERSION}-xilinx-${XILINX_RELEASE_VERSION}+git${SRCPV}" | 8 | PV =. "${XILINX_VDU_VERSION}-xilinx-v" |
| 9 | PV .= "+git${SRCPV}" | ||
| 9 | 10 | ||
| 10 | S = "${WORKDIR}/git" | 11 | S = "${WORKDIR}/git" |
| 11 | FILESEXTRAPATHS:prepend := "${THISDIR}/files:" | 12 | FILESEXTRAPATHS:prepend := "${THISDIR}/files:" |
diff --git a/meta-xilinx-core/recipes-multimedia/vdu/kernel-module-vdu_2023.2.bb b/meta-xilinx-core/recipes-multimedia/vdu/kernel-module-vdu_2023.2.bb new file mode 100644 index 00000000..1c9ba8ad --- /dev/null +++ b/meta-xilinx-core/recipes-multimedia/vdu/kernel-module-vdu_2023.2.bb | |||
| @@ -0,0 +1,42 @@ | |||
| 1 | SUMMARY = "Linux kernel module for Video Decode Unit" | ||
| 2 | DESCRIPTION = "Out-of-tree VDU decoder common kernel modules" | ||
| 3 | SECTION = "kernel/modules" | ||
| 4 | LICENSE = "GPLv2" | ||
| 5 | LIC_FILES_CHKSUM = "file://LICENSE.md;md5=eb723b61539feef013de476e68b5c50a" | ||
| 6 | |||
| 7 | XILINX_VDU_VERSION = "1.0.0" | ||
| 8 | PV =. "${XILINX_VDU_VERSION}-xilinx-v" | ||
| 9 | PV .= "+git${SRCPV}" | ||
| 10 | |||
| 11 | S = "${WORKDIR}/git" | ||
| 12 | FILESEXTRAPATHS:prepend := "${THISDIR}/files:" | ||
| 13 | |||
| 14 | BRANCH ?= "xlnx_rel_v2023.2" | ||
| 15 | REPO ?= "git://github.com/Xilinx/vdu-modules.git;protocol=https" | ||
| 16 | SRCREV ?= "4d5134f54006f904f0b28f00e05dd3febd5fcfd3" | ||
| 17 | |||
| 18 | BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}" | ||
| 19 | SRC_URI = "${REPO};${BRANCHARG} \ | ||
| 20 | file://99-vdu-enc-dec.rules \ | ||
| 21 | " | ||
| 22 | |||
| 23 | inherit module features_check | ||
| 24 | |||
| 25 | REQUIRED_MACHINE_FEATURES = "vdu" | ||
| 26 | |||
| 27 | EXTRA_OEMAKE += "O=${STAGING_KERNEL_BUILDDIR}" | ||
| 28 | |||
| 29 | RDEPENDS:${PN} = "vdu-firmware" | ||
| 30 | |||
| 31 | COMPATIBLE_MACHINE = "^$" | ||
| 32 | COMPATIBLE_MACHINE:versal-ai-core = "versal-ai-core" | ||
| 33 | COMPATIBLE_MACHINE:versal-ai-edge = "versal-ai-edge" | ||
| 34 | |||
| 35 | PACKAGE_ARCH = "${SOC_FAMILY_ARCH}" | ||
| 36 | |||
| 37 | do_install:append() { | ||
| 38 | install -d ${D}${sysconfdir}/udev/rules.d | ||
| 39 | install -m 0644 ${WORKDIR}/99-vdu-enc-dec.rules ${D}${sysconfdir}/udev/rules.d/ | ||
| 40 | } | ||
| 41 | |||
| 42 | FILES:${PN} = "${sysconfdir}/udev/rules.d/*" | ||
diff --git a/meta-xilinx-core/recipes-multimedia/vdu/libvdu-ctrlsw_2023.1.bb b/meta-xilinx-core/recipes-multimedia/vdu/libvdu-ctrlsw_2023.1.bb index 82f3c4f5..602dc2fc 100644 --- a/meta-xilinx-core/recipes-multimedia/vdu/libvdu-ctrlsw_2023.1.bb +++ b/meta-xilinx-core/recipes-multimedia/vdu/libvdu-ctrlsw_2023.1.bb | |||
| @@ -4,7 +4,8 @@ LICENSE = "MIT" | |||
| 4 | LIC_FILES_CHKSUM = "file://LICENSE.md;md5=aaf483d309243c4596f6373eb9c8325f" | 4 | LIC_FILES_CHKSUM = "file://LICENSE.md;md5=aaf483d309243c4596f6373eb9c8325f" |
| 5 | 5 | ||
| 6 | XILINX_VDU_VERSION = "1.0.0" | 6 | XILINX_VDU_VERSION = "1.0.0" |
| 7 | PV = "${XILINX_VDU_VERSION}-xilinx-${XILINX_RELEASE_VERSION}+git${SRCPV}" | 7 | PV =. "${XILINX_VDU_VERSION}-xilinx-v" |
| 8 | PV .= "+git${SRCPV}" | ||
| 8 | 9 | ||
| 9 | inherit autotools features_check | 10 | inherit autotools features_check |
| 10 | 11 | ||
diff --git a/meta-xilinx-core/recipes-multimedia/vdu/libvdu-ctrlsw_2023.2.bb b/meta-xilinx-core/recipes-multimedia/vdu/libvdu-ctrlsw_2023.2.bb new file mode 100644 index 00000000..2b9af94f --- /dev/null +++ b/meta-xilinx-core/recipes-multimedia/vdu/libvdu-ctrlsw_2023.2.bb | |||
| @@ -0,0 +1,45 @@ | |||
| 1 | SUMMARY = "Control Software for VDU" | ||
| 2 | DESCRIPTION = "Control software libraries, test applications and headers provider for VDU" | ||
| 3 | LICENSE = "MIT" | ||
| 4 | LIC_FILES_CHKSUM = "file://LICENSE.md;md5=aaf483d309243c4596f6373eb9c8325f" | ||
| 5 | |||
| 6 | XILINX_VDU_VERSION = "1.0.0" | ||
| 7 | PV =. "${XILINX_VDU_VERSION}-xilinx-v" | ||
| 8 | PV .= "+git${SRCPV}" | ||
| 9 | |||
| 10 | inherit autotools features_check | ||
| 11 | |||
| 12 | REQUIRED_MACHINE_FEATURES = "vdu" | ||
| 13 | |||
| 14 | BRANCH ?= "xlnx_rel_v2023.2" | ||
| 15 | REPO ?= "git://github.com/Xilinx/vdu-ctrl-sw.git;protocol=https" | ||
| 16 | SRCREV ?= "1beb8f247d01b1a728faea36ce8f7847c895482f" | ||
| 17 | |||
| 18 | BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}" | ||
| 19 | SRC_URI = "${REPO};${BRANCHARG}" | ||
| 20 | |||
| 21 | S = "${WORKDIR}/git" | ||
| 22 | |||
| 23 | COMPATIBLE_MACHINE = "^$" | ||
| 24 | COMPATIBLE_MACHINE:versal-ai-core = "versal-ai-core" | ||
| 25 | COMPATIBLE_MACHINE:versal-ai-edge = "versal-ai-edge" | ||
| 26 | |||
| 27 | PACKAGE_ARCH = "${SOC_FAMILY_ARCH}" | ||
| 28 | |||
| 29 | RDEPENDS:${PN} = "kernel-module-vdu" | ||
| 30 | |||
| 31 | do_compile[dirs] = "${S}" | ||
| 32 | do_install[dirs] = "${S}" | ||
| 33 | |||
| 34 | EXTRA_OEMAKE = "CC='${CC}' CXX='${CXX} ${CXXFLAGS}'" | ||
| 35 | EXTRA_OEMAKE +=" INSTALL_HDR_PATH=${D}${includedir}/vdu-ctrl-sw/include INSTALL_PATH=${D}${bindir}" | ||
| 36 | |||
| 37 | do_install:append() { | ||
| 38 | |||
| 39 | oe_libinstall -C ${S}/bin/ -so liballegro_decode ${D}/${libdir}/ | ||
| 40 | } | ||
| 41 | |||
| 42 | # These libraries shouldn't get installed in world builds unless something | ||
| 43 | # explicitly depends upon them. | ||
| 44 | |||
| 45 | EXCLUDE_FROM_WORLD = "1" | ||
diff --git a/meta-xilinx-core/recipes-multimedia/vdu/libvdu-omxil_2023.1.bb b/meta-xilinx-core/recipes-multimedia/vdu/libvdu-omxil_2023.1.bb index 88b50193..b4fc482e 100644 --- a/meta-xilinx-core/recipes-multimedia/vdu/libvdu-omxil_2023.1.bb +++ b/meta-xilinx-core/recipes-multimedia/vdu/libvdu-omxil_2023.1.bb | |||
| @@ -4,7 +4,8 @@ LICENSE = "MIT" | |||
| 4 | LIC_FILES_CHKSUM = "file://LICENSE.md;md5=aaf483d309243c4596f6373eb9c8325f" | 4 | LIC_FILES_CHKSUM = "file://LICENSE.md;md5=aaf483d309243c4596f6373eb9c8325f" |
| 5 | 5 | ||
| 6 | XILINX_VDU_VERSION = "1.0.0" | 6 | XILINX_VDU_VERSION = "1.0.0" |
| 7 | PV = "${XILINX_VDU_VERSION}-xilinx-${XILINX_RELEASE_VERSION}+git${SRCPV}" | 7 | PV =. "${XILINX_VDU_VERSION}-xilinx-v" |
| 8 | PV .= "+git${SRCPV}" | ||
| 8 | 9 | ||
| 9 | BRANCH ?= "xlnx_rel_v2023.1" | 10 | BRANCH ?= "xlnx_rel_v2023.1" |
| 10 | REPO ?= "git://github.com/Xilinx/vdu-omx-il.git;protocol=https" | 11 | REPO ?= "git://github.com/Xilinx/vdu-omx-il.git;protocol=https" |
diff --git a/meta-xilinx-core/recipes-multimedia/vdu/libvdu-omxil_2023.2.bb b/meta-xilinx-core/recipes-multimedia/vdu/libvdu-omxil_2023.2.bb new file mode 100644 index 00000000..f6f159d2 --- /dev/null +++ b/meta-xilinx-core/recipes-multimedia/vdu/libvdu-omxil_2023.2.bb | |||
| @@ -0,0 +1,54 @@ | |||
| 1 | SUMMARY = "OpenMAX Integration layer for VDU" | ||
| 2 | DESCRIPTION = "OMX IL Libraries,test application and headers for VDU" | ||
| 3 | LICENSE = "MIT" | ||
| 4 | LIC_FILES_CHKSUM = "file://LICENSE.md;md5=aaf483d309243c4596f6373eb9c8325f" | ||
| 5 | |||
| 6 | XILINX_VDU_VERSION = "1.0.0" | ||
| 7 | PV =. "${XILINX_VDU_VERSION}-xilinx-v" | ||
| 8 | PV .= "+git${SRCPV}" | ||
| 9 | |||
| 10 | BRANCH ?= "xlnx_rel_v2023.2" | ||
| 11 | REPO ?= "git://github.com/Xilinx/vdu-omx-il.git;protocol=https" | ||
| 12 | SRCREV ?= "811eefac953fd5e098c69cada97a0dd35f5e9015" | ||
| 13 | |||
| 14 | BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}" | ||
| 15 | SRC_URI = "${REPO};${BRANCHARG} \ | ||
| 16 | " | ||
| 17 | S = "${WORKDIR}/git" | ||
| 18 | |||
| 19 | inherit autotools features_check | ||
| 20 | |||
| 21 | REQUIRED_MACHINE_FEATURES = "vdu" | ||
| 22 | |||
| 23 | COMPATIBLE_MACHINE = "^$" | ||
| 24 | COMPATIBLE_MACHINE:versal-ai-core = "versal-ai-core" | ||
| 25 | COMPATIBLE_MACHINE:versal-ai-edge = "versal-ai-edge" | ||
| 26 | |||
| 27 | PACKAGE_ARCH = "${SOC_FAMILY_ARCH}" | ||
| 28 | |||
| 29 | DEPENDS = "libvdu-ctrlsw" | ||
| 30 | RDEPENDS:${PN} = "kernel-module-vdu libvdu-ctrlsw" | ||
| 31 | |||
| 32 | EXTERNAL_INCLUDE="${STAGING_INCDIR}/vdu-ctrl-sw/include" | ||
| 33 | |||
| 34 | do_compile[dirs] = "${S}" | ||
| 35 | do_install[dirs] = "${S}" | ||
| 36 | |||
| 37 | EXTRA_OEMAKE = " \ | ||
| 38 | CC='${CC}' CXX='${CXX} ${CXXFLAGS}' \ | ||
| 39 | EXTERNAL_INCLUDE='${EXTERNAL_INCLUDE}' \ | ||
| 40 | INSTALL_PATH=${D}${bindir} \ | ||
| 41 | INCLUDE_INST_PATH=${D}${includedir} \ | ||
| 42 | " | ||
| 43 | |||
| 44 | do_install:append() { | ||
| 45 | install -d ${D}${libdir} | ||
| 46 | |||
| 47 | oe_libinstall -C ${S}/bin/ -so libOMX.allegro.core ${D}/${libdir}/ | ||
| 48 | oe_libinstall -C ${S}/bin/ -so libOMX.allegro.video_decoder ${D}/${libdir}/ | ||
| 49 | } | ||
| 50 | |||
| 51 | # These libraries shouldn't get installed in world builds unless something | ||
| 52 | # explicitly depends upon them. | ||
| 53 | |||
| 54 | EXCLUDE_FROM_WORLD = "1" | ||
diff --git a/meta-xilinx-core/recipes-multimedia/vdu/vdu-firmware_2023.1.bb b/meta-xilinx-core/recipes-multimedia/vdu/vdu-firmware_2023.1.bb index e96e0d24..8cc2cce1 100755 --- a/meta-xilinx-core/recipes-multimedia/vdu/vdu-firmware_2023.1.bb +++ b/meta-xilinx-core/recipes-multimedia/vdu/vdu-firmware_2023.1.bb | |||
| @@ -4,7 +4,8 @@ LICENSE = "Proprietary" | |||
| 4 | LIC_FILES_CHKSUM = "file://LICENSE.md;md5=c5784f63397086d836580d8785d1deb9" | 4 | LIC_FILES_CHKSUM = "file://LICENSE.md;md5=c5784f63397086d836580d8785d1deb9" |
| 5 | 5 | ||
| 6 | XILINX_VDU_VERSION = "1.0.0" | 6 | XILINX_VDU_VERSION = "1.0.0" |
| 7 | PV = "${XILINX_VDU_VERSION}-xilinx-${XILINX_RELEASE_VERSION}+git${SRCPV}" | 7 | PV =. "${XILINX_VDU_VERSION}-xilinx-v" |
| 8 | PV .= "+git${SRCPV}" | ||
| 8 | 9 | ||
| 9 | S = "${WORKDIR}/git" | 10 | S = "${WORKDIR}/git" |
| 10 | 11 | ||
diff --git a/meta-xilinx-core/recipes-multimedia/vdu/vdu-firmware_2023.2.bb b/meta-xilinx-core/recipes-multimedia/vdu/vdu-firmware_2023.2.bb new file mode 100644 index 00000000..e9ef222b --- /dev/null +++ b/meta-xilinx-core/recipes-multimedia/vdu/vdu-firmware_2023.2.bb | |||
| @@ -0,0 +1,43 @@ | |||
| 1 | SUMMARY = "Firmware for VDU" | ||
| 2 | DESCRIPTION = "Firmware binaries provider for VDU" | ||
| 3 | LICENSE = "Proprietary" | ||
| 4 | LIC_FILES_CHKSUM = "file://LICENSE.md;md5=c5784f63397086d836580d8785d1deb9" | ||
| 5 | |||
| 6 | XILINX_VDU_VERSION = "1.0.0" | ||
| 7 | PV =. "${XILINX_VDU_VERSION}-xilinx-v" | ||
| 8 | PV .= "+git${SRCPV}" | ||
| 9 | |||
| 10 | S = "${WORKDIR}/git" | ||
| 11 | |||
| 12 | inherit autotools features_check | ||
| 13 | |||
| 14 | REQUIRED_MACHINE_FEATURES = "vdu" | ||
| 15 | |||
| 16 | BRANCH ?= "xlnx_rel_v2023.2" | ||
| 17 | REPO ?= "git://github.com/Xilinx/vdu-firmware.git;protocol=https" | ||
| 18 | SRCREV ?= "731897772730178f6a4e77eedeb4fb53faa1ab4d" | ||
| 19 | |||
| 20 | BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}" | ||
| 21 | SRC_URI = "${REPO};${BRANCHARG}" | ||
| 22 | |||
| 23 | COMPATIBLE_MACHINE = "^$" | ||
| 24 | COMPATIBLE_MACHINE:versal-ai-core = "versal-ai-core" | ||
| 25 | COMPATIBLE_MACHINE:versal-ai-edge = "versal-ai-edge" | ||
| 26 | |||
| 27 | PACKAGE_ARCH = "${SOC_FAMILY_ARCH}" | ||
| 28 | EXTRA_OEMAKE +="INSTALL_PATH=${D}/lib/firmware" | ||
| 29 | |||
| 30 | do_compile[noexec] = "1" | ||
| 31 | do_install[dirs] = "${S}" | ||
| 32 | |||
| 33 | # Inhibit warnings about files being stripped | ||
| 34 | INHIBIT_PACKAGE_DEBUG_SPLIT = "1" | ||
| 35 | INHIBIT_PACKAGE_STRIP = "1" | ||
| 36 | FILES:${PN} = "/lib/firmware/*" | ||
| 37 | |||
| 38 | |||
| 39 | # These libraries shouldn't get installed in world builds unless something | ||
| 40 | # explicitly depends upon them. | ||
| 41 | EXCLUDE_FROM_WORLD = "1" | ||
| 42 | |||
| 43 | INSANE_SKIP:${PN} = "ldflags" | ||
diff --git a/meta-xilinx-core/recipes-xrt/xrt/xrt.inc b/meta-xilinx-core/recipes-xrt/xrt/xrt.inc index 3b150673..14b2b968 100644 --- a/meta-xilinx-core/recipes-xrt/xrt/xrt.inc +++ b/meta-xilinx-core/recipes-xrt/xrt/xrt.inc | |||
| @@ -1,8 +1,14 @@ | |||
| 1 | REPO ?= "git://github.com/Xilinx/XRT.git;protocol=https" | 1 | REPO ?= "git://github.com/Xilinx/XRT.git;protocol=https" |
| 2 | BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}" | 2 | BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}" |
| 3 | SRC_URI = "${REPO};${BRANCHARG}" | 3 | SRC_URI = "${REPO};${BRANCHARG};name=xrt" |
| 4 | 4 | ||
| 5 | BRANCH= "2023.1" | 5 | BRANCH= "2023.2" |
| 6 | SRCREV= "64c933573e7e50a8aba939a74209590c2b739e8b" | 6 | SRCREV_xrt = "2865a62b6a417dea523d2d5646154aa94a2cbc28" |
| 7 | PV = "202310.2.15.0" | 7 | PV = "202320.2.16.0" |
| 8 | 8 | ||
| 9 | SRC_URI += "git://github.com/Xilinx/dma_ip_drivers.git;branch=master;name=dma_ip_drivers;destsuffix=git/src/runtime_src/core/pcie/driver/linux/xocl/lib/libqdma;protocol=https" | ||
| 10 | SRCREV_dma_ip_drivers = "9f02769a2eddde008158c96efa39d7edb6512578" | ||
| 11 | |||
| 12 | SRC_URI += "git://github.com/serge1/ELFIO.git;branch=main;name=ELFIO;destsuffix=git/src/runtime_src/core/common/elf;protocol=https" | ||
| 13 | SRCREV_ELFIO = "a04810f12625207cce72665d783babb80f0175a8" | ||
| 14 | SRCREV_FORMAT = "xrt" | ||
diff --git a/meta-xilinx-core/recipes-xrt/xrt/xrt_git.bb b/meta-xilinx-core/recipes-xrt/xrt/xrt_git.bb index ae786884..f4e7b5de 100644 --- a/meta-xilinx-core/recipes-xrt/xrt/xrt_git.bb +++ b/meta-xilinx-core/recipes-xrt/xrt/xrt_git.bb | |||
| @@ -3,12 +3,13 @@ DESCRIPTION = "Xilinx Runtime User Space Libraries and headers" | |||
| 3 | 3 | ||
| 4 | require xrt.inc | 4 | require xrt.inc |
| 5 | 5 | ||
| 6 | LICENSE = "GPL-2.0-or-later & Apache-2.0" | 6 | LICENSE = "GPL-2.0-or-later & Apache-2.0 & MIT" |
| 7 | LIC_FILES_CHKSUM = "file://../LICENSE;md5=da5408f748bce8a9851dac18e66f4bcf \ | 7 | LIC_FILES_CHKSUM = "file://../LICENSE;md5=de2c993ac479f02575bcbfb14ef9b485 \ |
| 8 | file://runtime_src/core/edge/drm/zocl/LICENSE;md5=7d040f51aae6ac6208de74e88a3795f8 \ | 8 | file://runtime_src/core/edge/drm/zocl/LICENSE;md5=7d040f51aae6ac6208de74e88a3795f8 \ |
| 9 | file://runtime_src/core/pcie/driver/linux/xocl/LICENSE;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ | 9 | file://runtime_src/core/pcie/driver/linux/xocl/LICENSE;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ |
| 10 | file://runtime_src/core/pcie/linux/LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57 \ | 10 | file://runtime_src/core/pcie/linux/LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57 \ |
| 11 | file://runtime_src/core/tools/xbutil2/LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57 " | 11 | file://runtime_src/core/tools/xbutil2/LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57 \ |
| 12 | file://runtime_src/core/common/elf/LICENSE.txt;md5=b996e8b74af169e7e72e22d9e7d05b06 " | ||
| 12 | 13 | ||
| 13 | COMPATIBLE_MACHINE ?= "^$" | 14 | COMPATIBLE_MACHINE ?= "^$" |
| 14 | COMPATIBLE_MACHINE:zynqmp = ".*" | 15 | COMPATIBLE_MACHINE:zynqmp = ".*" |
diff --git a/meta-xilinx-standalone-experimental/README.md b/meta-xilinx-standalone-experimental/README.md index 8014265b..31aa0f63 100644 --- a/meta-xilinx-standalone-experimental/README.md +++ b/meta-xilinx-standalone-experimental/README.md | |||
| @@ -34,7 +34,7 @@ $ bitbake meta-xilinx-setup | |||
| 34 | ``` | 34 | ``` |
| 35 | 3. Install the setup SDK: | 35 | 3. Install the setup SDK: |
| 36 | ``` | 36 | ``` |
| 37 | $ .${TMPDIR}/tmp/deploy/sdk/x86_64-xilinx-nativesdk-prestep-2023.1....sh -d prestep -y | 37 | $ .${TMPDIR}/tmp/deploy/sdk/x86_64-xilinx-nativesdk-prestep-2023.2....sh -d prestep -y |
| 38 | ``` | 38 | ``` |
| 39 | 39 | ||
| 40 | Then follow the instructions in the 'prestep/README-setup' file. | 40 | Then follow the instructions in the 'prestep/README-setup' file. |
diff --git a/meta-xilinx-standalone-experimental/conf/dtb-embeddedsw.inc b/meta-xilinx-standalone-experimental/conf/dtb-embeddedsw.inc index b252e609..a9192f62 100644 --- a/meta-xilinx-standalone-experimental/conf/dtb-embeddedsw.inc +++ b/meta-xilinx-standalone-experimental/conf/dtb-embeddedsw.inc | |||
| @@ -2,13 +2,10 @@ | |||
| 2 | # meta-xilinx/meta-xilinx-standalone/classes/xlnx-embeddedsw.bbclass | 2 | # meta-xilinx/meta-xilinx-standalone/classes/xlnx-embeddedsw.bbclass |
| 3 | 3 | ||
| 4 | # Make it clear decoupling is 'experimental' in the version | 4 | # Make it clear decoupling is 'experimental' in the version |
| 5 | ESW_VER = "2023.1_sdt_experimental" | 5 | ESW_VER = "2023_sdt_experimental" |
| 6 | 6 | ||
| 7 | REPO = "git://github.com/Xilinx/embeddedsw-experimental-dt-support.git;protocol=https" | 7 | REPO = "git://github.com/Xilinx/embeddedsw-experimental-dt-support.git;protocol=https" |
| 8 | 8 | ||
| 9 | ESW_BRANCH[2023.1_sdt_experimental] = "xlnx_rel_v2023.1_sdt" | 9 | ESW_BRANCH[2023_sdt_experimental] = "xlnx_rel_v2023.2_sdt" |
| 10 | ESW_REV[2023.1_sdt_experimental] = "b47bfef27d7af0690add590b9c98e6fc51a1a1f6" | 10 | ESW_REV[2023_sdt_experimental] = "742a608800e7621fb7c376daf5124333b5826d6d" |
| 11 | LIC_FILES_CHKSUM[master] = '7c92de7a21a6613265035c28f4a92f48' | 11 | LIC_FILES_CHKSUM[xlnx_rel_v2023.2_sdt] = 'ce611484168a6000bd35df68fc4f4290' |
| 12 | LIC_FILES_CHKSUM[xlnx_rel_v2022.1_sdt_experimental_beta] = 'e26f53a7d6f58f4b1a9687099417225c' | ||
| 13 | LIC_FILES_CHKSUM[xlnx_rel_v2023.1_sdt_experimental] = 'ce611484168a6000bd35df68fc4f4290' | ||
| 14 | LIC_FILES_CHKSUM[xlnx_rel_v2023.1_sdt] = 'ce611484168a6000bd35df68fc4f4290' | ||
diff --git a/meta-xilinx-standalone-experimental/recipes-core/meta/files/dt-processor.sh b/meta-xilinx-standalone-experimental/recipes-core/meta/files/dt-processor.sh index 939fabe4..1c754689 100755 --- a/meta-xilinx-standalone-experimental/recipes-core/meta/files/dt-processor.sh +++ b/meta-xilinx-standalone-experimental/recipes-core/meta/files/dt-processor.sh | |||
| @@ -1,6 +1,7 @@ | |||
| 1 | #! /bin/bash | 1 | #! /bin/bash |
| 2 | 2 | ||
| 3 | # Copyright (c) 2021 Xilinx Inc | 3 | # Copyright (c) 2021-2022 Xilinx Inc |
| 4 | # Copyright (C) 2022-2023 Advanced Micro Devices, Inc. All rights reserved. | ||
| 4 | # | 5 | # |
| 5 | # Permission is hereby granted, free of charge, to any person obtaining a copy | 6 | # Permission is hereby granted, free of charge, to any person obtaining a copy |
| 6 | # of this software and associated documentation files (the "Software"), to deal | 7 | # of this software and associated documentation files (the "Software"), to deal |
| @@ -39,10 +40,13 @@ $0 | |||
| 39 | [-o <overlay_dts>] Generate overlay dts | 40 | [-o <overlay_dts>] Generate overlay dts |
| 40 | [-e <external_fpga>] Apply a partial overlay | 41 | [-e <external_fpga>] Apply a partial overlay |
| 41 | [-m <machine_conf>] The name of the machine .conf to generate | 42 | [-m <machine_conf>] The name of the machine .conf to generate |
| 43 | [-D <dts_path>] Absolute path or subdirectory of conf/dts to place DTS files in (usually auto detected from DTS) | ||
| 42 | [-t <machine>] Machine type: zynqmp or versal (usually auto detected) | 44 | [-t <machine>] Machine type: zynqmp or versal (usually auto detected) |
| 43 | [-v <soc_variant>] SOC Variant: cg, dr, eg, ev, ai-prime, premium (usually auto detected) | 45 | [-v <soc_variant>] SOC Variant: cg, dr, eg, ev, ai-prime, premium (usually auto detected) |
| 46 | [-r <require_machine>] This machine will be required, instead of the generic machine if defined | ||
| 47 | [-O <overrides>] Optional, can add additional overrides to the generated machine | ||
| 44 | [-p <psu_init_path>] Path to psu_init files, defaults to system_dts path | 48 | [-p <psu_init_path>] Path to psu_init files, defaults to system_dts path |
| 45 | [-i <pdu_path>] Path to the pdi file | 49 | [-i <pdi_path>] Path to the pdi file |
| 46 | [-l <config_file>] write local.conf changes to this file | 50 | [-l <config_file>] write local.conf changes to this file |
| 47 | [-P <petalinux_schema>] Path to petalinux schema file | 51 | [-P <petalinux_schema>] Path to petalinux schema file |
| 48 | 52 | ||
| @@ -54,7 +58,7 @@ parse_args() { | |||
| 54 | [ $# -eq 0 ] && usage | 58 | [ $# -eq 0 ] && usage |
| 55 | [ $1 = "--help" ] && usage | 59 | [ $1 = "--help" ] && usage |
| 56 | 60 | ||
| 57 | while getopts ":c:s:d:o:e:m:l:hP:p:i:t:v:" opt; do | 61 | while getopts ":c:s:d:o:e:m:D:l:hP:p:i:t:v:r:O:" opt; do |
| 58 | case ${opt} in | 62 | case ${opt} in |
| 59 | c) config_dir=$OPTARG ;; | 63 | c) config_dir=$OPTARG ;; |
| 60 | s) system_dts=$OPTARG ;; | 64 | s) system_dts=$OPTARG ;; |
| @@ -62,8 +66,11 @@ parse_args() { | |||
| 62 | d) domain_file=$OPTARG ;; | 66 | d) domain_file=$OPTARG ;; |
| 63 | e) external_fpga=$OPTARG ;; | 67 | e) external_fpga=$OPTARG ;; |
| 64 | m) mach_conf=$OPTARG ; mach_conf=${mach_conf%%.conf} ;; | 68 | m) mach_conf=$OPTARG ; mach_conf=${mach_conf%%.conf} ;; |
| 69 | D) dts_path=$OPTARG ;; | ||
| 65 | t) machine=$OPTARG ;; | 70 | t) machine=$OPTARG ;; |
| 66 | v) soc_variant=$OPTARG ;; | 71 | v) soc_variant=$OPTARG ;; |
| 72 | r) incmachine=$OPTARG ;; | ||
| 73 | O) overrides=$OPTARG ;; | ||
| 67 | p) psu_init_path=$OPTARG ;; | 74 | p) psu_init_path=$OPTARG ;; |
| 68 | i) pdi_path=$OPTARG ;; | 75 | i) pdi_path=$OPTARG ;; |
| 69 | l) localconf=$OPTARG ;; | 76 | l) localconf=$OPTARG ;; |
| @@ -133,11 +140,15 @@ detect_machine() { | |||
| 133 | soc_variant="hbm" ;; | 140 | soc_variant="hbm" ;; |
| 134 | # Special Case Starter Kit SOMs | 141 | # Special Case Starter Kit SOMs |
| 135 | xck26) | 142 | xck26) |
| 136 | incmachine="k26-smk.conf" | 143 | if [ -z "${incmachine}" ]; then |
| 144 | incmachine="k26-smk.conf" | ||
| 145 | fi | ||
| 137 | machine="zynqmp" | 146 | machine="zynqmp" |
| 138 | soc_variant="ev" ;; | 147 | soc_variant="ev" ;; |
| 139 | xck24) | 148 | xck24) |
| 140 | incmachine="k24-smk.conf" | 149 | if [ -z "${incmachine}" ]; then |
| 150 | incmachine="k24-smk.conf" | ||
| 151 | fi | ||
| 141 | machine="zynqmp" | 152 | machine="zynqmp" |
| 142 | soc_variant="eg" ;; | 153 | soc_variant="eg" ;; |
| 143 | esac | 154 | esac |
| @@ -199,7 +210,7 @@ cortex_a53_linux() { | |||
| 199 | 210 | ||
| 200 | # Check if it is overlay dts otherwise just create linux dts | 211 | # Check if it is overlay dts otherwise just create linux dts |
| 201 | ( | 212 | ( |
| 202 | cd dts || error "Unable to cd to dts dir" | 213 | cd ${dts_path} || error "Unable to cd to ${dts_path} dir" |
| 203 | if [ "${overlay_dts}" = "true" ]; then | 214 | if [ "${overlay_dts}" = "true" ]; then |
| 204 | if [ "${external_fpga}" = "true" ]; then | 215 | if [ "${external_fpga}" = "true" ]; then |
| 205 | LOPPER_DTC_FLAGS="-b 0 -@" ${lopper} -f "${system_dts}" -- xlnx_overlay_dt ${machine} full \ | 216 | LOPPER_DTC_FLAGS="-b 0 -@" ${lopper} -f "${system_dts}" -- xlnx_overlay_dt ${machine} full \ |
| @@ -232,7 +243,7 @@ cortex_a53_linux() { | |||
| 232 | 243 | ||
| 233 | ## Generate a multiconfig | 244 | ## Generate a multiconfig |
| 234 | cat <<EOF >"${conf_file}" | 245 | cat <<EOF >"${conf_file}" |
| 235 | CONFIG_DTFILE = "\${TOPDIR}/conf/dts/${dts_file}" | 246 | CONFIG_DTFILE = "${dts_file_path}/${dts_file}" |
| 236 | 247 | ||
| 237 | TMPDIR = "\${BASE_TMPDIR}/tmp-${mc_name}" | 248 | TMPDIR = "\${BASE_TMPDIR}/tmp-${mc_name}" |
| 238 | EOF | 249 | EOF |
| @@ -268,7 +279,7 @@ cortex_a53_baremetal() { | |||
| 268 | 279 | ||
| 269 | # Build device tree | 280 | # Build device tree |
| 270 | ( | 281 | ( |
| 271 | cd dts || error "Unable to cd to dts dir" | 282 | cd ${dts_path} || error "Unable to cd to ${dts_path} dir" |
| 272 | if [ -n "${domain_file}" ]; then | 283 | if [ -n "${domain_file}" ]; then |
| 273 | LOPPER_DTC_FLAGS="-b 0 -@" ${lopper} -f --enhanced -x '*.yaml' \ | 284 | LOPPER_DTC_FLAGS="-b 0 -@" ${lopper} -f --enhanced -x '*.yaml' \ |
| 274 | -i "${domain_file}" -i "${lops_dir}/lop-a53-imux.dts" "${system_dts}" "${dts_file}" \ | 285 | -i "${domain_file}" -i "${lops_dir}/lop-a53-imux.dts" "${system_dts}" "${dts_file}" \ |
| @@ -309,7 +320,7 @@ EOF | |||
| 309 | cat /dev/null >"${conf_file}" | 320 | cat /dev/null >"${conf_file}" |
| 310 | fi | 321 | fi |
| 311 | cat <<EOF >>"${conf_file}" | 322 | cat <<EOF >>"${conf_file}" |
| 312 | CONFIG_DTFILE = "\${TOPDIR}/conf/dts/${dts_file}" | 323 | CONFIG_DTFILE = "${dts_file_path}/${dts_file}" |
| 313 | 324 | ||
| 314 | ESW_MACHINE = "$3" | 325 | ESW_MACHINE = "$3" |
| 315 | DEFAULTTUNE = "cortexa53" | 326 | DEFAULTTUNE = "cortexa53" |
| @@ -335,7 +346,7 @@ cortex_a53_freertos() { | |||
| 335 | 346 | ||
| 336 | # Build device tree | 347 | # Build device tree |
| 337 | ( | 348 | ( |
| 338 | cd dts || error "Unable to cd to dts dir" | 349 | cd ${dts_path} || error "Unable to cd to ${dts_path} dir" |
| 339 | if [ -n "${domain_file}" ]; then | 350 | if [ -n "${domain_file}" ]; then |
| 340 | LOPPER_DTC_FLAGS="-b 0 -@" ${lopper} -f --enhanced -x '*.yaml' \ | 351 | LOPPER_DTC_FLAGS="-b 0 -@" ${lopper} -f --enhanced -x '*.yaml' \ |
| 341 | -i "${domain_file}" -i "${lops_dir}/lop-a53-imux.dts" "${system_dts}" "${dts_file}" \ | 352 | -i "${domain_file}" -i "${lops_dir}/lop-a53-imux.dts" "${system_dts}" "${dts_file}" \ |
| @@ -361,7 +372,7 @@ cortex_a53_freertos() { | |||
| 361 | sed -i ${features} -e "s,DISTRO_FEATURES,MACHINE_FEATURES," | 372 | sed -i ${features} -e "s,DISTRO_FEATURES,MACHINE_FEATURES," |
| 362 | 373 | ||
| 363 | cat <<EOF >"${conf_file}" | 374 | cat <<EOF >"${conf_file}" |
| 364 | CONFIG_DTFILE = "\${TOPDIR}/conf/dts/${dts_file}" | 375 | CONFIG_DTFILE = "${dts_file_path}/${dts_file}" |
| 365 | 376 | ||
| 366 | ESW_MACHINE = "$3" | 377 | ESW_MACHINE = "$3" |
| 367 | DEFAULTTUNE = "cortexa53" | 378 | DEFAULTTUNE = "cortexa53" |
| @@ -396,10 +407,10 @@ cortex_a72_linux() { | |||
| 396 | fi | 407 | fi |
| 397 | 408 | ||
| 398 | ( | 409 | ( |
| 399 | cd dts || error "Unable to cd to dts dir" | 410 | cd ${dts_path} || error "Unable to cd to ${dts_path} dir" |
| 400 | # Check if it is overlay dts otherwise just create linux dts | 411 | # Check if it is overlay dts otherwise just create linux dts |
| 401 | if [ "${overlay_dts}" = "true" ]; then | 412 | if [ "${overlay_dts}" = "true" ]; then |
| 402 | # As there is no partial support on Versal, As per fpga manager implementatin there is | 413 | # As there is no partial support on Versal, As per fpga manager implementation there is |
| 403 | # a flag "external_fpga" which says apply overlay without loading the bit file. | 414 | # a flag "external_fpga" which says apply overlay without loading the bit file. |
| 404 | if [ "${external_fpga}" = "true" ]; then | 415 | if [ "${external_fpga}" = "true" ]; then |
| 405 | LOPPER_DTC_FLAGS="-b 0 -@" ${lopper} -f "${system_dts}" -- xlnx_overlay_dt \ | 416 | LOPPER_DTC_FLAGS="-b 0 -@" ${lopper} -f "${system_dts}" -- xlnx_overlay_dt \ |
| @@ -432,7 +443,7 @@ cortex_a72_linux() { | |||
| 432 | 443 | ||
| 433 | ## Generate a multiconfig | 444 | ## Generate a multiconfig |
| 434 | cat <<EOF >"${conf_file}" | 445 | cat <<EOF >"${conf_file}" |
| 435 | CONFIG_DTFILE = "\${TOPDIR}/conf/dts/${dts_file}" | 446 | CONFIG_DTFILE = "${dts_file_path}/${dts_file}" |
| 436 | 447 | ||
| 437 | TMPDIR = "\${BASE_TMPDIR}/tmp-${mc_name}" | 448 | TMPDIR = "\${BASE_TMPDIR}/tmp-${mc_name}" |
| 438 | EOF | 449 | EOF |
| @@ -453,7 +464,7 @@ cortex_a72_baremetal() { | |||
| 453 | 464 | ||
| 454 | # Build device tree | 465 | # Build device tree |
| 455 | ( | 466 | ( |
| 456 | cd dts || error "Unable to cd to dts dir" | 467 | cd ${dts_path} || error "Unable to cd to ${dts_path} dir" |
| 457 | if [ -n "${domain_file}" ]; then | 468 | if [ -n "${domain_file}" ]; then |
| 458 | LOPPER_DTC_FLAGS="-b 0 -@" ${lopper} -f --enhanced -x '*.yaml' \ | 469 | LOPPER_DTC_FLAGS="-b 0 -@" ${lopper} -f --enhanced -x '*.yaml' \ |
| 459 | -i "${domain_file}" -i "${lops_dir}/lop-a72-imux.dts" "${system_dts}" "${dts_file}" \ | 470 | -i "${domain_file}" -i "${lops_dir}/lop-a72-imux.dts" "${system_dts}" "${dts_file}" \ |
| @@ -479,7 +490,7 @@ cortex_a72_baremetal() { | |||
| 479 | sed -i ${features} -e "s,DISTRO_FEATURES,MACHINE_FEATURES," | 490 | sed -i ${features} -e "s,DISTRO_FEATURES,MACHINE_FEATURES," |
| 480 | 491 | ||
| 481 | cat <<EOF >"${conf_file}" | 492 | cat <<EOF >"${conf_file}" |
| 482 | CONFIG_DTFILE = "\${TOPDIR}/conf/dts/${dts_file}" | 493 | CONFIG_DTFILE = "${dts_file_path}/${dts_file}" |
| 483 | 494 | ||
| 484 | ESW_MACHINE = "$3" | 495 | ESW_MACHINE = "$3" |
| 485 | DEFAULTTUNE = "cortexa72" | 496 | DEFAULTTUNE = "cortexa72" |
| @@ -505,7 +516,7 @@ cortex_a72_freertos() { | |||
| 505 | 516 | ||
| 506 | # Build device tree | 517 | # Build device tree |
| 507 | ( | 518 | ( |
| 508 | cd dts || error "Unable to cd to dts dir" | 519 | cd ${dts_path} || error "Unable to cd to ${dts_path} dir" |
| 509 | if [ -n "${domain_file}" ]; then | 520 | if [ -n "${domain_file}" ]; then |
| 510 | LOPPER_DTC_FLAGS="-b 0 -@" lopper -f --enhanced -x '*.yaml' \ | 521 | LOPPER_DTC_FLAGS="-b 0 -@" lopper -f --enhanced -x '*.yaml' \ |
| 511 | -i "${domain_file}" -i "${lops_dir}/lop-a72-imux.dts" "${system_dts}" "${dts_file}" \ | 522 | -i "${domain_file}" -i "${lops_dir}/lop-a72-imux.dts" "${system_dts}" "${dts_file}" \ |
| @@ -531,7 +542,7 @@ cortex_a72_freertos() { | |||
| 531 | sed -i ${features} -e "s,DISTRO_FEATURES,MACHINE_FEATURES," | 542 | sed -i ${features} -e "s,DISTRO_FEATURES,MACHINE_FEATURES," |
| 532 | 543 | ||
| 533 | cat <<EOF >"${conf_file}" | 544 | cat <<EOF >"${conf_file}" |
| 534 | CONFIG_DTFILE = "\${TOPDIR}/conf/dts/${dts_file}" | 545 | CONFIG_DTFILE = "${dts_file_path}/${dts_file}" |
| 535 | 546 | ||
| 536 | ESW_MACHINE = "$3" | 547 | ESW_MACHINE = "$3" |
| 537 | DEFAULTTUNE = "cortexa72" | 548 | DEFAULTTUNE = "cortexa72" |
| @@ -572,7 +583,7 @@ cortex_r5_baremetal() { | |||
| 572 | 583 | ||
| 573 | # Build device tree | 584 | # Build device tree |
| 574 | ( | 585 | ( |
| 575 | cd dts || error "Unable to cd to dts dir" | 586 | cd ${dts_path} || error "Unable to cd to ${dts_path} dir" |
| 576 | if [ -n "$domain_file" ]; then | 587 | if [ -n "$domain_file" ]; then |
| 577 | LOPPER_DTC_FLAGS="-b 0 -@" ${lopper} -f --enhanced -x '*.yaml' \ | 588 | LOPPER_DTC_FLAGS="-b 0 -@" ${lopper} -f --enhanced -x '*.yaml' \ |
| 578 | -i "${domain_file}" -i "${lops_dir}/lop-r5-imux.dts" "${system_dts}" "${dts_file}" \ | 589 | -i "${domain_file}" -i "${lops_dir}/lop-r5-imux.dts" "${system_dts}" "${dts_file}" \ |
| @@ -612,7 +623,7 @@ EOF | |||
| 612 | cat /dev/null >"${conf_file}" | 623 | cat /dev/null >"${conf_file}" |
| 613 | fi | 624 | fi |
| 614 | cat <<EOF >>"${conf_file}" | 625 | cat <<EOF >>"${conf_file}" |
| 615 | CONFIG_DTFILE = "\${TOPDIR}/conf/dts/${dts_file}" | 626 | CONFIG_DTFILE = "${dts_file_path}/${dts_file}" |
| 616 | 627 | ||
| 617 | ESW_MACHINE = "$3" | 628 | ESW_MACHINE = "$3" |
| 618 | DEFAULTTUNE = "cortexr5" | 629 | DEFAULTTUNE = "cortexr5" |
| @@ -638,7 +649,7 @@ cortex_r5_freertos() { | |||
| 638 | 649 | ||
| 639 | # Build device tree | 650 | # Build device tree |
| 640 | ( | 651 | ( |
| 641 | cd dts || error "Unable to cd to dts dir" | 652 | cd ${dts_path} || error "Unable to cd to ${dts_path} dir" |
| 642 | if [ -n "$domain_file" ]; then | 653 | if [ -n "$domain_file" ]; then |
| 643 | LOPPER_DTC_FLAGS="-b 0 -@" ${lopper} -f --enhanced -x '*.yaml' \ | 654 | LOPPER_DTC_FLAGS="-b 0 -@" ${lopper} -f --enhanced -x '*.yaml' \ |
| 644 | -i "${domain_file}" -i "${lops_dir}/lop-r5-imux.dts" "${system_dts}" "${dts_file}" \ | 655 | -i "${domain_file}" -i "${lops_dir}/lop-r5-imux.dts" "${system_dts}" "${dts_file}" \ |
| @@ -664,7 +675,7 @@ cortex_r5_freertos() { | |||
| 664 | sed -i ${features} -e "s,DISTRO_FEATURES,MACHINE_FEATURES," | 675 | sed -i ${features} -e "s,DISTRO_FEATURES,MACHINE_FEATURES," |
| 665 | 676 | ||
| 666 | cat <<EOF >"${conf_file}" | 677 | cat <<EOF >"${conf_file}" |
| 667 | CONFIG_DTFILE = "\${TOPDIR}/conf/dts/${dts_file}" | 678 | CONFIG_DTFILE = "${dts_file_path}/${dts_file}" |
| 668 | 679 | ||
| 669 | ESW_MACHINE = "$3" | 680 | ESW_MACHINE = "$3" |
| 670 | DEFAULTTUNE = "cortexr5" | 681 | DEFAULTTUNE = "cortexr5" |
| @@ -684,7 +695,7 @@ process_microblaze() { | |||
| 684 | 695 | ||
| 685 | mkdir -p machine/include/${mach_conf} | 696 | mkdir -p machine/include/${mach_conf} |
| 686 | ( | 697 | ( |
| 687 | cd dts || error "Unable to cd to dts dir" | 698 | cd ${dts_path} || error "Unable to cd to ${dts_path} dir" |
| 688 | LOPPER_DTC_FLAGS="-b 0 -@" ${lopper} -f --enhanced -i "${lops_dir}/lop-microblaze-yocto.dts" "${system_dts}" \ | 699 | LOPPER_DTC_FLAGS="-b 0 -@" ${lopper} -f --enhanced -i "${lops_dir}/lop-microblaze-yocto.dts" "${system_dts}" \ |
| 689 | || error "lopper failed" | 700 | || error "lopper failed" |
| 690 | rm -f lop-microblaze-yocto.dts.dtb | 701 | rm -f lop-microblaze-yocto.dts.dtb |
| @@ -714,7 +725,7 @@ pmu-microblaze() { | |||
| 714 | 725 | ||
| 715 | # Build device tree | 726 | # Build device tree |
| 716 | ( | 727 | ( |
| 717 | cd dts || error "Unable to cd to dts dir" | 728 | cd ${dts_path} || error "Unable to cd to ${dts_path} dir" |
| 718 | LOPPER_DTC_FLAGS="-b 0 -@" ${lopper} -f "${system_dts}" "${dts_file}" || error "lopper failed" | 729 | LOPPER_DTC_FLAGS="-b 0 -@" ${lopper} -f "${system_dts}" "${dts_file}" || error "lopper failed" |
| 719 | ) | 730 | ) |
| 720 | 731 | ||
| @@ -732,7 +743,7 @@ pmu-microblaze() { | |||
| 732 | sed -i ${features} -e "s,DISTRO_FEATURES,MACHINE_FEATURES," | 743 | sed -i ${features} -e "s,DISTRO_FEATURES,MACHINE_FEATURES," |
| 733 | 744 | ||
| 734 | cat <<EOF >"${conf_file}" | 745 | cat <<EOF >"${conf_file}" |
| 735 | CONFIG_DTFILE = "\${TOPDIR}/conf/dts/${dts_file}" | 746 | CONFIG_DTFILE = "${dts_file_path}/${dts_file}" |
| 736 | 747 | ||
| 737 | ESW_MACHINE = "$1" | 748 | ESW_MACHINE = "$1" |
| 738 | 749 | ||
| @@ -765,7 +776,7 @@ pmc-microblaze() { | |||
| 765 | 776 | ||
| 766 | # Build device tree | 777 | # Build device tree |
| 767 | ( | 778 | ( |
| 768 | cd dts || error "Unable to cd to dts dir" | 779 | cd ${dts_path} || error "Unable to cd to ${dts_path} dir" |
| 769 | LOPPER_DTC_FLAGS="-b 0 -@" ${lopper} -f "${system_dts}" "${dts_file}" || error "lopper failed" | 780 | LOPPER_DTC_FLAGS="-b 0 -@" ${lopper} -f "${system_dts}" "${dts_file}" || error "lopper failed" |
| 770 | ) | 781 | ) |
| 771 | 782 | ||
| @@ -783,7 +794,7 @@ pmc-microblaze() { | |||
| 783 | sed -i ${features} -e "s,DISTRO_FEATURES,MACHINE_FEATURES," | 794 | sed -i ${features} -e "s,DISTRO_FEATURES,MACHINE_FEATURES," |
| 784 | 795 | ||
| 785 | cat <<EOF >"${conf_file}" | 796 | cat <<EOF >"${conf_file}" |
| 786 | CONFIG_DTFILE = "\${TOPDIR}/conf/dts/${dts_file}" | 797 | CONFIG_DTFILE = "${dts_file_path}/${dts_file}" |
| 787 | 798 | ||
| 788 | ESW_MACHINE = "$1" | 799 | ESW_MACHINE = "$1" |
| 789 | 800 | ||
| @@ -816,7 +827,7 @@ psm-microblaze() { | |||
| 816 | 827 | ||
| 817 | # Build device tree | 828 | # Build device tree |
| 818 | ( | 829 | ( |
| 819 | cd dts || error "Unable to cd to dts dir" | 830 | cd ${dts_path} || error "Unable to cd to ${dts_path} dir" |
| 820 | LOPPER_DTC_FLAGS="-b 0 -@" ${lopper} -f "${system_dts}" "${dts_file}" || error "lopper failed" | 831 | LOPPER_DTC_FLAGS="-b 0 -@" ${lopper} -f "${system_dts}" "${dts_file}" || error "lopper failed" |
| 821 | ) | 832 | ) |
| 822 | 833 | ||
| @@ -834,7 +845,7 @@ psm-microblaze() { | |||
| 834 | sed -i ${features} -e "s,DISTRO_FEATURES,MACHINE_FEATURES," | 845 | sed -i ${features} -e "s,DISTRO_FEATURES,MACHINE_FEATURES," |
| 835 | 846 | ||
| 836 | cat <<EOF >"${conf_file}" | 847 | cat <<EOF >"${conf_file}" |
| 837 | CONFIG_DTFILE = "\${TOPDIR}/conf/dts/${dts_file}" | 848 | CONFIG_DTFILE = "${dts_file_path}/${dts_file}" |
| 838 | 849 | ||
| 839 | ESW_MACHINE = "$1" | 850 | ESW_MACHINE = "$1" |
| 840 | 851 | ||
| @@ -874,6 +885,13 @@ MACHINEOVERRIDES =. "\${@['', '${mach_conf}:']['${mach_conf}' != '\${MACHINE}']} | |||
| 874 | 885 | ||
| 875 | EOF | 886 | EOF |
| 876 | 887 | ||
| 888 | if [ -n "${overrides}" ]; then | ||
| 889 | cat <<EOF >>"${conf_file}" | ||
| 890 | MACHINEOVERRIDES .= ":${overrides}" | ||
| 891 | |||
| 892 | EOF | ||
| 893 | fi | ||
| 894 | |||
| 877 | if [ "${machine}" == "zynqmp" ]; then | 895 | if [ "${machine}" == "zynqmp" ]; then |
| 878 | cat <<EOF >>"${conf_file}" | 896 | cat <<EOF >>"${conf_file}" |
| 879 | TUNEFILE[microblaze-pmu] = "conf/machine/include/${mach_conf}/microblaze.inc" | 897 | TUNEFILE[microblaze-pmu] = "conf/machine/include/${mach_conf}/microblaze.inc" |
| @@ -890,7 +908,7 @@ EOF | |||
| 890 | cat <<EOF >>"${conf_file}" | 908 | cat <<EOF >>"${conf_file}" |
| 891 | 909 | ||
| 892 | # Set the default (linux) domain device tree | 910 | # Set the default (linux) domain device tree |
| 893 | CONFIG_DTFILE ?= "\${TOPDIR}/conf/dts/${system_conf}" | 911 | CONFIG_DTFILE ?= "${dts_file_path}/${system_conf}" |
| 894 | CONFIG_DTFILE[vardepsexclude] += "TOPDIR" | 912 | CONFIG_DTFILE[vardepsexclude] += "TOPDIR" |
| 895 | 913 | ||
| 896 | require conf/machine/${incmachine} | 914 | require conf/machine/${incmachine} |
| @@ -969,10 +987,10 @@ EOF | |||
| 969 | 987 | ||
| 970 | cat <<EOF >>"${conf_file}" | 988 | cat <<EOF >>"${conf_file}" |
| 971 | # Enable the correct version of the firmware components | 989 | # Enable the correct version of the firmware components |
| 972 | PREFERRED_VERSION_fsbl-firmware = "2023.1_sdt_experimental%" | 990 | PREFERRED_VERSION_fsbl-firmware = "2023_sdt_experimental%" |
| 973 | PREFERRED_VERSION_pmu-firmware = "2023.1_sdt_experimental%" | 991 | PREFERRED_VERSION_pmu-firmware = "2023_sdt_experimental%" |
| 974 | PREFERRED_VERSION_plm-firmware = "2023.1_sdt_experimental%" | 992 | PREFERRED_VERSION_plm-firmware = "2023_sdt_experimental%" |
| 975 | PREFERRED_VERSION_psm-firmware = "2023.1_sdt_experimental%" | 993 | PREFERRED_VERSION_psm-firmware = "2023_sdt_experimental%" |
| 976 | 994 | ||
| 977 | # Exclude BASE_TMPDIR from hash calculations | 995 | # Exclude BASE_TMPDIR from hash calculations |
| 978 | BB_HASHEXCLUDE_COMMON:append = " BASE_TMPDIR" | 996 | BB_HASHEXCLUDE_COMMON:append = " BASE_TMPDIR" |
| @@ -1125,9 +1143,9 @@ BASE_TMPDIR ?= "\${TOPDIR}" | |||
| 1125 | 1143 | ||
| 1126 | # The following is the full set of multiconfigs for this configuration | 1144 | # The following is the full set of multiconfigs for this configuration |
| 1127 | # A large list can cause a slow parse. | 1145 | # A large list can cause a slow parse. |
| 1128 | BBMULTICONFIG ?= "${multiconf}" | 1146 | #BBMULTICONFIG ?= "${multiconf}" |
| 1129 | # Alternatively trim the list to the minimum | 1147 | # Alternatively trim the list to the minimum |
| 1130 | #BBMULTICONFIG = "${multiconf_min}" | 1148 | BBMULTICONFIG = "${multiconf_min}" |
| 1131 | EOF | 1149 | EOF |
| 1132 | } | 1150 | } |
| 1133 | 1151 | ||
| @@ -1171,6 +1189,22 @@ if [ -z "${mach_conf}" ]; then | |||
| 1171 | mach_conf=${local_mach_conf} | 1189 | mach_conf=${local_mach_conf} |
| 1172 | fi | 1190 | fi |
| 1173 | 1191 | ||
| 1192 | if [ -z "${dts_path}"]; then | ||
| 1193 | dts_path=${local_mach_conf} | ||
| 1194 | fi | ||
| 1195 | # Is it relative? If so, relative to conf/dts | ||
| 1196 | if [ "${dts_path##/}" = "${dts_path}" ]; then | ||
| 1197 | dts_path="dts/${dts_path}" | ||
| 1198 | else | ||
| 1199 | dts_path=$(realpath ${dts_path}) | ||
| 1200 | fi | ||
| 1201 | # Convert the DTS_PATH into something we can put in a config file | ||
| 1202 | if [ "${dts_path##/}" = "${dts_path}" ]; then | ||
| 1203 | dts_file_path="\${TOPDIR}/conf/${dts_path}" | ||
| 1204 | else | ||
| 1205 | dts_file_path="${dts_path}" | ||
| 1206 | fi | ||
| 1207 | |||
| 1174 | # Generate CPU list | 1208 | # Generate CPU list |
| 1175 | ( | 1209 | ( |
| 1176 | cd dts || error "Unable to cd to dts dir" | 1210 | cd dts || error "Unable to cd to dts dir" |
| @@ -1182,6 +1216,7 @@ fi | |||
| 1182 | detect_machine | 1216 | detect_machine |
| 1183 | # Now that we know the machine name, we can create the directory | 1217 | # Now that we know the machine name, we can create the directory |
| 1184 | mkdir -p machine/include/${mach_conf} | 1218 | mkdir -p machine/include/${mach_conf} |
| 1219 | mkdir -p ${dts_path} | ||
| 1185 | 1220 | ||
| 1186 | echo "System Configuration:" | 1221 | echo "System Configuration:" |
| 1187 | echo "MODEL = \"${model}\"" | 1222 | echo "MODEL = \"${model}\"" |
diff --git a/meta-xilinx-standalone-experimental/recipes-drivers/dmaps_git.bb b/meta-xilinx-standalone-experimental/recipes-drivers/dmaps_git.bb index 0891fb86..1dcd8404 100644 --- a/meta-xilinx-standalone-experimental/recipes-drivers/dmaps_git.bb +++ b/meta-xilinx-standalone-experimental/recipes-drivers/dmaps_git.bb | |||
| @@ -1,3 +1,18 @@ | |||
| 1 | inherit esw_examples | 1 | inherit features_check |
| 2 | 2 | ||
| 3 | ESW_COMPONENT_SRC = "/XilinxProcessorIPLib/drivers/dmaps/examples/" | 3 | REQUIRED_MACHINE_FEATURES = "dmaps" |
| 4 | |||
| 5 | inherit esw python3native | ||
| 6 | |||
| 7 | DEPENDS += "xilstandalone " | ||
| 8 | |||
| 9 | ESW_COMPONENT_SRC = "/XilinxProcessorIPLib/drivers/dmaps/src/" | ||
| 10 | ESW_COMPONENT_NAME = "libdmaps.a" | ||
| 11 | |||
| 12 | addtask do_generate_driver_data before do_configure after do_prepare_recipe_sysroot | ||
| 13 | do_prepare_recipe_sysroot[rdeptask] = "do_unpack" | ||
| 14 | |||
| 15 | do_configure:prepend() { | ||
| 16 | LOPPER_DTC_FLAGS="-b 0 -@" lopper ${DTS_FILE} -- baremetal_xparameters_xlnx.py ${ESW_MACHINE} ${S} | ||
| 17 | install -m 0755 xparameters.h ${S}/${ESW_COMPONENT_SRC}/ | ||
| 18 | } | ||
diff --git a/meta-xilinx-standalone-experimental/recipes-libraries/xilffs_git.bb b/meta-xilinx-standalone-experimental/recipes-libraries/xilffs_git.bb index 298e3033..b8dc3b33 100644 --- a/meta-xilinx-standalone-experimental/recipes-libraries/xilffs_git.bb +++ b/meta-xilinx-standalone-experimental/recipes-libraries/xilffs_git.bb | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | inherit esw features_check | 1 | inherit esw |
| 2 | 2 | ||
| 3 | ESW_COMPONENT_SRC = "/lib/sw_services/xilffs/src/" | 3 | ESW_COMPONENT_SRC = "/lib/sw_services/xilffs/src/" |
| 4 | ESW_COMPONENT_NAME = "libxilffs.a" | 4 | ESW_COMPONENT_NAME = "libxilffs.a" |
diff --git a/meta-xilinx-standalone/classes/xlnx-embeddedsw.bbclass b/meta-xilinx-standalone/classes/xlnx-embeddedsw.bbclass index 51c8bdde..15b91fdb 100644 --- a/meta-xilinx-standalone/classes/xlnx-embeddedsw.bbclass +++ b/meta-xilinx-standalone/classes/xlnx-embeddedsw.bbclass | |||
| @@ -6,11 +6,13 @@ REPO ??= "git://github.com/Xilinx/embeddedsw.git;protocol=https" | |||
| 6 | ESW_BRANCH[2022.1] = "xlnx_rel_v2022.1_update" | 6 | ESW_BRANCH[2022.1] = "xlnx_rel_v2022.1_update" |
| 7 | ESW_BRANCH[2022.2] = "xlnx_rel_v2022.2" | 7 | ESW_BRANCH[2022.2] = "xlnx_rel_v2022.2" |
| 8 | ESW_BRANCH[2023.1] = "xlnx_rel_v2023.1_update" | 8 | ESW_BRANCH[2023.1] = "xlnx_rel_v2023.1_update" |
| 9 | ESW_BRANCH[2023.2] = "xlnx_rel_v2023.2" | ||
| 9 | BRANCH ??= "${@d.getVarFlag('ESW_BRANCH', d.getVar('ESW_VER')) or '${ESW_VER}'}" | 10 | BRANCH ??= "${@d.getVarFlag('ESW_BRANCH', d.getVar('ESW_VER')) or '${ESW_VER}'}" |
| 10 | 11 | ||
| 11 | ESW_REV[2022.1] = "56d94a506fd9f80949f4cff08e13015928603f01" | 12 | ESW_REV[2022.1] = "56d94a506fd9f80949f4cff08e13015928603f01" |
| 12 | ESW_REV[2022.2] = "5330a64c8efd14f0eef09befdbb8d3d738c33ec2" | 13 | ESW_REV[2022.2] = "5330a64c8efd14f0eef09befdbb8d3d738c33ec2" |
| 13 | ESW_REV[2023.1] = "af784f742dad0ca6e69e05baf8de51152c396b9a" | 14 | ESW_REV[2023.1] = "af784f742dad0ca6e69e05baf8de51152c396b9a" |
| 15 | ESW_REV[2023.2] = "c9a0ee31b2a14cbcfcb56ca369037319b4ad4847" | ||
| 14 | SRCREV ??= "${@d.getVarFlag('ESW_REV', d.getVar('ESW_VER')) or 'invalid'}" | 16 | SRCREV ??= "${@d.getVarFlag('ESW_REV', d.getVar('ESW_VER')) or 'invalid'}" |
| 15 | 17 | ||
| 16 | EMBEDDEDSW_BRANCHARG ?= "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH') != '']}" | 18 | EMBEDDEDSW_BRANCHARG ?= "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH') != '']}" |
| @@ -20,6 +22,7 @@ LICENSE = "MIT" | |||
| 20 | LIC_FILES_CHKSUM[xlnx_rel_v2022.1_update] = 'e62cb7a722c4430999e0a55a7234035d' | 22 | LIC_FILES_CHKSUM[xlnx_rel_v2022.1_update] = 'e62cb7a722c4430999e0a55a7234035d' |
| 21 | LIC_FILES_CHKSUM[xlnx_rel_v2022.2] = 'ce611484168a6000bd35df68fc4f4290' | 23 | LIC_FILES_CHKSUM[xlnx_rel_v2022.2] = 'ce611484168a6000bd35df68fc4f4290' |
| 22 | LIC_FILES_CHKSUM[xlnx_rel_v2023.1_update] = '3c310a3ee2197a4c92c6a0e2937c207c' | 24 | LIC_FILES_CHKSUM[xlnx_rel_v2023.1_update] = '3c310a3ee2197a4c92c6a0e2937c207c' |
| 25 | LIC_FILES_CHKSUM[xlnx_rel_v2023.2] = '9fceecdbcad88698f265578f3d4cb26c' | ||
| 23 | LIC_FILES_CHKSUM ??= "file://license.txt;md5=${@d.getVarFlag('LIC_FILES_CHKSUM', d.getVar('BRANCH')) or '0'}" | 26 | LIC_FILES_CHKSUM ??= "file://license.txt;md5=${@d.getVarFlag('LIC_FILES_CHKSUM', d.getVar('BRANCH')) or '0'}" |
| 24 | 27 | ||
| 25 | SRC_URI = "${EMBEDDEDSW_SRCURI}" | 28 | SRC_URI = "${EMBEDDEDSW_SRCURI}" |
diff --git a/meta-xilinx-standalone/conf/distro/xilinx-standalone.inc b/meta-xilinx-standalone/conf/distro/xilinx-standalone.inc index 4b51dd1b..814cb9cd 100644 --- a/meta-xilinx-standalone/conf/distro/xilinx-standalone.inc +++ b/meta-xilinx-standalone/conf/distro/xilinx-standalone.inc | |||
| @@ -39,13 +39,11 @@ TOOLCHAIN_HOST_TASK:append:sdkmingw32 = " nativesdk-mingw-w64-winpthreads" | |||
| 39 | # do so. | 39 | # do so. |
| 40 | DISABLE_STATIC:class-target ?= "" | 40 | DISABLE_STATIC:class-target ?= "" |
| 41 | 41 | ||
| 42 | SECURITY_CFLAGS:class-target ?= "" | ||
| 43 | SECURITY_LDFLAGS:class-target ?= "" | ||
| 44 | |||
| 45 | require conf/distro/include/no-static-libs.inc | 42 | require conf/distro/include/no-static-libs.inc |
| 46 | require conf/distro/include/yocto-uninative.inc | 43 | require conf/distro/include/yocto-uninative.inc |
| 47 | require conf/distro/include/security_flags.inc | ||
| 48 | INHERIT += "uninative" | 44 | INHERIT += "uninative" |
| 49 | 45 | ||
| 50 | BB_SIGNATURE_HANDLER ?= "OEEquivHash" | 46 | BB_SIGNATURE_HANDLER ?= "OEEquivHash" |
| 51 | BB_HASHSERVE ??= "auto" | 47 | BB_HASHSERVE ??= "auto" |
| 48 | |||
| 49 | MACHINE_FEATURES_BACKFILL_CONSIDERED += "rtc qemu-usermode" | ||
diff --git a/meta-xilinx-standalone/recipes-bsp/embeddedsw/fsbl-firmware_2023.2.bb b/meta-xilinx-standalone/recipes-bsp/embeddedsw/fsbl-firmware_2023.2.bb new file mode 100644 index 00000000..8816dc4d --- /dev/null +++ b/meta-xilinx-standalone/recipes-bsp/embeddedsw/fsbl-firmware_2023.2.bb | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | require fsbl-firmware.inc | ||
| 2 | |||
| 3 | FILESPATH .= ":${FILE_DIRNAME}/embeddedsw/2023.1:${FILE_DIRNAME}/embeddedsw" | ||
| 4 | |||
| 5 | SRC_URI += " \ | ||
| 6 | file://makefile-skip-copy_bsp.sh.patch \ | ||
| 7 | file://fsbl-fixups.patch \ | ||
| 8 | " | ||
| 9 | |||
| 10 | # This version does not build for zynq | ||
| 11 | COMPATIBLE_MACHINE:zynq = "none" | ||
diff --git a/meta-xilinx-standalone/recipes-bsp/embeddedsw/plm-firmware_2023.2.bb b/meta-xilinx-standalone/recipes-bsp/embeddedsw/plm-firmware_2023.2.bb new file mode 100644 index 00000000..37861b75 --- /dev/null +++ b/meta-xilinx-standalone/recipes-bsp/embeddedsw/plm-firmware_2023.2.bb | |||
| @@ -0,0 +1,29 @@ | |||
| 1 | require plm-firmware.inc | ||
| 2 | |||
| 3 | # Separate build directories for versal and versal-net | ||
| 4 | SOC_DIR = "versal" | ||
| 5 | SOC_DIR:versal-net = "versal_net" | ||
| 6 | B = "${S}/lib/sw_apps/versal_plm/src/${SOC_DIR}" | ||
| 7 | |||
| 8 | BSP_DIR ?= "${B}/../../misc/versal_plm_bsp" | ||
| 9 | |||
| 10 | FILESPATH .= ":${FILE_DIRNAME}/embeddedsw/2023.1:${FILE_DIRNAME}/embeddedsw" | ||
| 11 | |||
| 12 | SRC_URI += " \ | ||
| 13 | file://makefile-skip-copy_bsp.sh.patch \ | ||
| 14 | file://0001-versal_fw-Fixup-core-makefiles.patch \ | ||
| 15 | " | ||
| 16 | |||
| 17 | EXTRA_COMPILER_FLAGS = "-g -ffunction-sections -fdata-sections -Wall -Wextra -Os -flto -ffat-lto-objects" | ||
| 18 | |||
| 19 | do_configure() { | ||
| 20 | # manually do the copy_bsp step first, so as to be able to fix up use of | ||
| 21 | # mb-* commands | ||
| 22 | ${B}/../../misc/${SOC_DIR}/copy_bsp.sh | ||
| 23 | } | ||
| 24 | |||
| 25 | do_compile() { | ||
| 26 | oe_runmake | ||
| 27 | |||
| 28 | ${MB_OBJCOPY} -O binary ${B}/${ESW_COMPONENT} ${B}/${ESW_COMPONENT}.bin | ||
| 29 | } | ||
diff --git a/meta-xilinx-standalone/recipes-bsp/embeddedsw/pmu-firmware_2023.2.bb b/meta-xilinx-standalone/recipes-bsp/embeddedsw/pmu-firmware_2023.2.bb new file mode 100644 index 00000000..fe6deddc --- /dev/null +++ b/meta-xilinx-standalone/recipes-bsp/embeddedsw/pmu-firmware_2023.2.bb | |||
| @@ -0,0 +1,16 @@ | |||
| 1 | require pmu-firmware.inc | ||
| 2 | |||
| 3 | FILESPATH .= ":${FILE_DIRNAME}/embeddedsw/2023.1:${FILE_DIRNAME}/embeddedsw" | ||
| 4 | |||
| 5 | SRC_URI += " \ | ||
| 6 | file://makefile-skip-copy_bsp.sh.patch \ | ||
| 7 | file://0001-zynqmp_pmufw-Fixup-core-makefiles.patch \ | ||
| 8 | " | ||
| 9 | |||
| 10 | EXTRA_COMPILER_FLAGS = "-ffunction-sections -fdata-sections -Wall -Wextra -Os -flto -ffat-lto-objects" | ||
| 11 | |||
| 12 | do_compile() { | ||
| 13 | oe_runmake | ||
| 14 | |||
| 15 | ${MB_OBJCOPY} -O binary ${B}/${ESW_COMPONENT} ${B}/${ESW_COMPONENT}.bin | ||
| 16 | } | ||
diff --git a/meta-xilinx-standalone/recipes-bsp/embeddedsw/psm-firmware_2023.2.bb b/meta-xilinx-standalone/recipes-bsp/embeddedsw/psm-firmware_2023.2.bb new file mode 100644 index 00000000..569c5a46 --- /dev/null +++ b/meta-xilinx-standalone/recipes-bsp/embeddedsw/psm-firmware_2023.2.bb | |||
| @@ -0,0 +1,34 @@ | |||
| 1 | require psm-firmware.inc | ||
| 2 | |||
| 3 | # Separate build directories for versal and versal-net | ||
| 4 | SOC_DIR = "versal" | ||
| 5 | SOC_DIR:versal-net = "versal_net" | ||
| 6 | B = "${S}/lib/sw_apps/versal_psmfw/src/${SOC_DIR}" | ||
| 7 | |||
| 8 | BSP_DIR ?= "${B}/../../misc/versal_psmfw_bsp" | ||
| 9 | |||
| 10 | FILESPATH .= ":${FILE_DIRNAME}/embeddedsw/2023.1:${FILE_DIRNAME}/embeddedsw" | ||
| 11 | |||
| 12 | SRC_URI += " \ | ||
| 13 | file://makefile-skip-copy_bsp.sh.patch \ | ||
| 14 | file://0001-versal_fw-Fixup-core-makefiles.patch \ | ||
| 15 | " | ||
| 16 | |||
| 17 | EXTRA_COMPILER_FLAGS = "-g -ffunction-sections -fdata-sections -Wall -Wextra" | ||
| 18 | |||
| 19 | # Override default since we're in a subdirectory deeper now... | ||
| 20 | do_configure() { | ||
| 21 | # manually do the copy_bsp step first, so as to be able to fix up use of | ||
| 22 | # mb-* commands | ||
| 23 | if [ ${SOC_DIR} != "versal" ]; then | ||
| 24 | ${B}/../../misc/${SOC_DIR}/copy_bsp.sh | ||
| 25 | else | ||
| 26 | ${B}/../../misc/copy_bsp.sh | ||
| 27 | fi | ||
| 28 | } | ||
| 29 | |||
| 30 | do_compile() { | ||
| 31 | oe_runmake | ||
| 32 | |||
| 33 | ${MB_OBJCOPY} -O binary ${B}/${ESW_COMPONENT} ${B}/${ESW_COMPONENT}.bin | ||
| 34 | } | ||
diff --git a/meta-xilinx-vendor/conf/machine/include/board/ultra96.inc b/meta-xilinx-vendor/conf/machine/include/board/ultra96.inc deleted file mode 100644 index bfb57e00..00000000 --- a/meta-xilinx-vendor/conf/machine/include/board/ultra96.inc +++ /dev/null | |||
| @@ -1,12 +0,0 @@ | |||
| 1 | # Ultra96 items that need to be configured from zynqmp-generic | ||
| 2 | KERNEL_DEVICETREE:ultra96 = "xilinx/zynqmp-zcu100-revC.dtb" | ||
| 3 | |||
| 4 | # Affects meta-xilinx-tools xsctyaml.bbclass related items | ||
| 5 | YAML_SERIAL_CONSOLE_STDIN:ultra96 ?= "psu_uart_1" | ||
| 6 | YAML_SERIAL_CONSOLE_STDOUT:ultra96 ?= "psu_uart_1" | ||
| 7 | |||
| 8 | YAML_COMPILER_FLAGS:append:ultra96 = " -DBOARD_SHUTDOWN_PIN=2 -DBOARD_SHUTDOWN_PIN_STATE=0 " | ||
| 9 | |||
| 10 | # Enable bluetooth and wifi module | ||
| 11 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS:append:ultra96 = " linux-firmware-wl18xx linux-firmware-ti-bt-wl180x" | ||
| 12 | |||
diff --git a/meta-xilinx-vendor/conf/machine/ultra96-zynqmp.conf b/meta-xilinx-vendor/conf/machine/ultra96-zynqmp.conf index 6a88d757..daa73f2a 100644 --- a/meta-xilinx-vendor/conf/machine/ultra96-zynqmp.conf +++ b/meta-xilinx-vendor/conf/machine/ultra96-zynqmp.conf | |||
| @@ -2,10 +2,6 @@ | |||
| 2 | #@NAME: ultra96-zynqmp | 2 | #@NAME: ultra96-zynqmp |
| 3 | #@DESCRIPTION: Machine support for Ultra96 Evaluation Board. | 3 | #@DESCRIPTION: Machine support for Ultra96 Evaluation Board. |
| 4 | 4 | ||
| 5 | # Compatibility with old BOARD value. | ||
| 6 | # TODO - Remove these once removed from petalinux bsp | ||
| 7 | MACHINEOVERRIDES =. "ultra96:" | ||
| 8 | |||
| 9 | #### Preamble | 5 | #### Preamble |
| 10 | MACHINEOVERRIDES =. "${@['', 'ultra96-zynqmp:']['ultra96-zynqmp' !='${MACHINE}']}" | 6 | MACHINEOVERRIDES =. "${@['', 'ultra96-zynqmp:']['ultra96-zynqmp' !='${MACHINE}']}" |
| 11 | #### Regular settings follow | 7 | #### Regular settings follow |
| @@ -51,6 +47,10 @@ require conf/machine/zynqmp-eg-generic.conf | |||
| 51 | # from local.conf. | 47 | # from local.conf. |
| 52 | HDF_MACHINE = "ultra96-zynqmp" | 48 | HDF_MACHINE = "ultra96-zynqmp" |
| 53 | 49 | ||
| 50 | # KERNEL_DEVICETREE is disabled as we use board device tree from DTG to match | ||
| 51 | # the xsa. User can enable explicitly if required from local.conf. | ||
| 52 | # KERNEL_DEVICETREE = "xilinx/zynqmp-zcu100-revC.dtb" | ||
| 53 | |||
| 54 | # Ultra96 has 2GB memory only but default zynqmp-generic has QB_MEM set to 4G, | 54 | # Ultra96 has 2GB memory only but default zynqmp-generic has QB_MEM set to 4G, |
| 55 | # Hence set QB_MEM to 2GB. | 55 | # Hence set QB_MEM to 2GB. |
| 56 | QB_MEM = "-m 2G" | 56 | QB_MEM = "-m 2G" |
| @@ -71,3 +71,7 @@ MACHINE_ESSENTIAL_EXTRA_RDEPENDS += " \ | |||
| 71 | linux-firmware-wl18xx \ | 71 | linux-firmware-wl18xx \ |
| 72 | linux-firmware-ti-bt-wl180x \ | 72 | linux-firmware-ti-bt-wl180x \ |
| 73 | " | 73 | " |
| 74 | |||
| 75 | #### No additional settings should be after the Postamble | ||
| 76 | #### Postamble | ||
| 77 | PACKAGE_EXTRA_ARCHS:append = "${@['', ' ultra96_zynqmp']['ultra96-zynqmp' != '${MACHINE}']}" | ||
