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 and u32_non_gpio_select_boot_chain information from BR BCT.
  • If bf_bl_gpio_select_boot_chain_1b is enabled, read the value of u32_num_boot_chains.

    If u32_num_boot_chains is less than 3, then read only SOC_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 read SOC_GPIO31 for bit 0 and SOC_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 uses u32_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 the SCRATCHr register.

The flow is as follows:

media/image3.png