Loading...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 | /* SPDX-License-Identifier: GPL-2.0+ */ /* * Boot related environment variable definitions on TI boards. * * (C) Copyright 2017 Linaro Ltd. * Sam Protsenko <semen.protsenko@linaro.org> */ #ifndef __TI_BOOT_H #define __TI_BOOT_H #ifndef CONSOLEDEV #define CONSOLEDEV "ttyS2" #endif #define VBMETA_PART_SIZE (64 * 1024) #if defined(CONFIG_LIBAVB) #define VBMETA_PART \ "name=vbmeta,size=" __stringify(VBMETA_PART_SIZE) \ ",uuid=${uuid_gpt_vbmeta};" #else #define VBMETA_PART "" #endif #if defined(CONFIG_CMD_AB_SELECT) #define COMMON_PARTS \ "name=boot_a,size=20M,uuid=${uuid_gpt_boot_a};" \ "name=boot_b,size=20M,uuid=${uuid_gpt_boot_b};" \ "name=system_a,size=1024M,uuid=${uuid_gpt_system_a};" \ "name=system_b,size=1024M,uuid=${uuid_gpt_system_b};" #else #define COMMON_PARTS \ "name=boot,size=20M,uuid=${uuid_gpt_boot};" \ "name=system,size=1024M,uuid=${uuid_gpt_system};" #endif #ifndef PARTS_DEFAULT /* Define the default GPT table for eMMC */ #define PARTS_DEFAULT \ /* Linux partitions */ \ "uuid_disk=${uuid_gpt_disk};" \ "name=bootloader,start=384K,size=1792K,uuid=${uuid_gpt_bootloader};" \ "name=rootfs,start=2688K,size=-,uuid=${uuid_gpt_rootfs}\0" \ /* Android partitions */ \ "partitions_android=" \ "uuid_disk=${uuid_gpt_disk};" \ "name=xloader,start=128K,size=256K,uuid=${uuid_gpt_xloader};" \ "name=bootloader,size=2048K,uuid=${uuid_gpt_bootloader};" \ "name=uboot-env,start=2432K,size=256K,uuid=${uuid_gpt_reserved};" \ "name=misc,size=128K,uuid=${uuid_gpt_misc};" \ "name=recovery,size=40M,uuid=${uuid_gpt_recovery};" \ COMMON_PARTS \ "name=vendor,size=256M,uuid=${uuid_gpt_vendor};" \ VBMETA_PART \ "name=userdata,size=-,uuid=${uuid_gpt_userdata}" #endif /* PARTS_DEFAULT */ #if defined(CONFIG_CMD_AVB) #define AVB_VERIFY_CHECK "if run avb_verify; then " \ "echo AVB verification OK.;" \ "set bootargs $bootargs $avb_bootargs;" \ "else " \ "echo AVB verification failed.;" \ "exit; fi;" #define AVB_VERIFY_CMD "avb_verify=avb init 1; avb verify;\0" #else #define AVB_VERIFY_CHECK "" #define AVB_VERIFY_CMD "" #endif #define CONTROL_PARTITION "misc" #if defined(CONFIG_CMD_AB_SELECT) #define AB_SELECT \ "if part number mmc 1 " CONTROL_PARTITION " control_part_number; " \ "then " \ "echo " CONTROL_PARTITION \ " partition number:${control_part_number};" \ "ab_select slot_name mmc ${mmcdev}:${control_part_number};" \ "else " \ "echo " CONTROL_PARTITION " partition not found;" \ "exit;" \ "fi;" \ "setenv slot_suffix _${slot_name};" \ "if part number mmc ${mmcdev} system${slot_suffix} " \ "system_part_number; then " \ "setenv bootargs_ab " \ "ro root=/dev/mmcblk${mmcdev}p${system_part_number} " \ "rootwait init=/init skip_initramfs " \ "androidboot.slot_suffix=${slot_suffix};" \ "echo A/B cmdline addition: ${bootargs_ab};" \ "setenv bootargs ${bootargs} ${bootargs_ab};" \ "else " \ "echo system${slot_suffix} partition not found;" \ "fi;" #else #define AB_SELECT "" #endif #define FASTBOOT_CMD \ "echo Booting into fastboot ...; " \ "fastboot " __stringify(CONFIG_FASTBOOT_USB_DEV) "; " #define DEFAULT_COMMON_BOOT_TI_ARGS \ "console=" CONSOLEDEV ",115200n8\0" \ "fdtfile=undefined\0" \ "bootpart=0:2\0" \ "bootdir=/boot\0" \ "bootfile=zImage\0" \ "usbtty=cdc_acm\0" \ "vram=16M\0" \ AVB_VERIFY_CMD \ "partitions=" PARTS_DEFAULT "\0" \ "optargs=\0" \ "dofastboot=0\0" \ "emmc_linux_boot=" \ "echo Trying to boot Linux from eMMC ...; " \ "setenv mmcdev 1; " \ "setenv bootpart 1:2; " \ "setenv mmcroot /dev/mmcblk0p2 rw; " \ "run mmcboot;\0" \ "emmc_android_boot=" \ "if bcb load " __stringify(CONFIG_FASTBOOT_FLASH_MMC_DEV) " " \ CONTROL_PARTITION "; then " \ "if bcb test command = bootonce-bootloader; then " \ "echo BCB: Bootloader boot...; " \ "bcb clear command; bcb store; " \ FASTBOOT_CMD \ "elif bcb test command = boot-recovery; then " \ "echo BCB: Recovery boot...; " \ "echo Warning: recovery is not implemented; " \ "echo Performing normal boot for now...; " \ "bcb clear command; bcb store; " \ "run emmc_android_normal_boot; " \ "else " \ "echo BCB: Normal boot requested...; " \ "run emmc_android_normal_boot; " \ "fi; " \ "else " \ "echo Warning: BCB is corrupted or does not exist; " \ "echo Performing normal boot...; " \ "run emmc_android_normal_boot; " \ "fi;\0" \ "emmc_android_normal_boot=" \ "echo Trying to boot Android from eMMC ...; " \ "run update_to_fit; " \ "setenv eval_bootargs setenv bootargs $bootargs; " \ "run eval_bootargs; " \ "setenv mmcdev 1; " \ "setenv machid fe6; " \ "mmc dev $mmcdev; " \ "mmc rescan; " \ AVB_VERIFY_CHECK \ AB_SELECT \ "if part start mmc ${mmcdev} boot${slot_suffix} boot_start; " \ "then " \ "part size mmc ${mmcdev} boot${slot_suffix} " \ "boot_size; " \ "mmc read ${loadaddr} ${boot_start} ${boot_size}; " \ "bootm ${loadaddr}#${fdtfile}; " \ "else " \ "echo boot${slot_suffix} partition not found; " \ "fi;\0" #ifdef CONFIG_OMAP54XX #define DEFAULT_FDT_TI_ARGS \ "findfdt="\ "if test $board_name = omap5_uevm; then " \ "setenv fdtfile omap5-uevm.dtb; fi; " \ "if test $board_name = dra7xx; then " \ "setenv fdtfile dra7-evm.dtb; fi;" \ "if test $board_name = dra72x-revc; then " \ "setenv fdtfile dra72-evm-revc.dtb; fi;" \ "if test $board_name = dra72x; then " \ "setenv fdtfile dra72-evm.dtb; fi;" \ "if test $board_name = dra71x; then " \ "setenv fdtfile dra71-evm.dtb; fi;" \ "if test $board_name = dra76x_acd; then " \ "setenv fdtfile dra76-evm.dtb; fi;" \ "if test $board_name = beagle_x15; then " \ "setenv fdtfile am57xx-beagle-x15.dtb; fi;" \ "if test $board_name = beagle_x15_revb1; then " \ "setenv fdtfile am57xx-beagle-x15-revb1.dtb; fi;" \ "if test $board_name = beagle_x15_revc; then " \ "setenv fdtfile am57xx-beagle-x15-revc.dtb; fi;" \ "if test $board_name = am572x_idk; then " \ "setenv fdtfile am572x-idk.dtb; fi;" \ "if test $board_name = am574x_idk; then " \ "setenv fdtfile am574x-idk.dtb; fi;" \ "if test $board_name = am57xx_evm; then " \ "setenv fdtfile am57xx-beagle-x15.dtb; fi;" \ "if test $board_name = am57xx_evm_reva3; then " \ "setenv fdtfile am57xx-beagle-x15.dtb; fi;" \ "if test $board_name = am571x_idk; then " \ "setenv fdtfile am571x-idk.dtb; fi;" \ "if test $fdtfile = undefined; then " \ "echo WARNING: Could not determine device tree to use; fi; \0" #define CONFIG_BOOTCOMMAND \ "if test ${dofastboot} -eq 1; then " \ "echo Boot fastboot requested, resetting dofastboot ...;" \ "setenv dofastboot 0; saveenv;" \ FASTBOOT_CMD \ "fi;" \ "if test ${boot_fit} -eq 1; then " \ "run update_to_fit;" \ "fi;" \ "run findfdt; " \ "run envboot; " \ "run mmcboot;" \ "run emmc_linux_boot; " \ "run emmc_android_boot; " \ "" #endif /* CONFIG_OMAP54XX */ #endif /* __TI_BOOT_H */ |