Selecting the Active Boot Chain by BootROM
The BootROM, which is the root boot chain, is responsible for selecting the Active Boot Chain after the system powers up. The selection sequence is as follows:
- Read
bf_bl_gpio_select_boot_chain_1b
,u32_num_boot_chains
andu32_non_gpio_select_boot_chain
information from BR BCT. - If
bf_bl_gpio_select_boot_chain_1b
is enabled, read the value ofu32_num_boot_chains
.If
u32_num_boot_chains
is less than 3, then read onlySOC_GPIO31
and use the input value as a Boot Chain. A GPIO value of 0 sets Boot Chain A as an Active Boot Chain, while a GPIO value of 1 sets Boot Chain B as an Active Boot Chain.If
u32_num_boot_chains
is 3, then readSOC_GPIO31
for bit 0 andSOC_GPIO41
for bit 1 of chain selection. For GPIOs value of 00b sets Boot Chain A as an Active Boot Chain, for GPIOs value of 01b sets Boot Chain B as an Active Boot Chain, and for GPIOs value of 10b sets Boot Chain C as an Active Boot Chain. - If
bf_bl_gpio_select_boot_chain_1b
is not enabled and it is a cold boot, BootROM usesu32_non_gpio_select_boot_chain
value in BR BCT as an Active Boot Chain. Value 0 sets Boot Chain A, value of 1 sets Boot Chain B as Active Boot Chain, and value of 2 set Boot Chain C if supported. - If
bf_bl_gpio_select_boot_chain_1b
is not enabled and it is not a cold boot, BootROM uses the active boot chain defined in theSCRATCHr
register.
The flow is as follows:
