Miscellaneous Configuration#
The different settings that do not fit into the other categories are documented in miscellaneous configuration file.
MB1 Feature Fields#
These features are Boolean flags that enable or disable functionality in MB1:
Field |
Description |
|---|---|
disable_spe |
|
enable_dram_page_blacklisting |
|
disable_sc7 |
|
disable_fuse_visibility |
Certain fuses cannot be read or written by default because they are not visible.
|
l2_mss_encrypt_regeneration |
On L2 RAMDUMP reset, regenerate MSS encryption keys for the carveouts. This is a bit field with the following bit mapping:
|
se_ctx_save_tz_lock |
Restrict SE context save and SHA_CTX_INTEGRITY operation to TZ. |
disable_mb2_glitch_protection |
Disable checks on DCLS faults, TCM parity errors, and TCM and cache ECC. |
enable_dram_error_injection |
|
enable_dram_staged_scrubbing |
|
wait_for_debugger_connection |
|
limit_l1_boot_client_freq |
|
Clock Data#
The following fields allow certain clock-related customization.
Field |
Description |
|---|---|
bpmp_cpu_nic_divider |
Controls the BPMP CPU frequency:
|
bpmp_apb_divider |
Controls the BPMP APB frequency:
|
axi_cbb_divider |
Controls the control backbone (CBB) frequency:
|
se_divider |
Controls the SE (security engine) frequency:
|
aon_cpu_nic_divider |
Controls the AON/SPE CPU frequency:
|
aon_apb_divider |
Controls the AON APB frequency:
|
aon_can0_divider |
Controls the AON CAN1 frequency:
|
aon_can1_divider |
Controls the AON CAN2 frequency:
|
osc_drive_strength |
Oscillator drive strength. |
pllaon_divn |
DIVN value of PLLAON:
|
pllaon_divm |
DIVN value of PLLAON:
|
pllaon_divp |
DIVN value of PLLAON:
|
pllaon_divn_frac |
Value to be programmed. |
AST Data#
MB1/MB2 uses AST (address-translation) module for mapping the DRAM carveout for different firmware into the 32-bit virtual address space of the various auxiliary processor clusters.
MB1 AST Data#
Field |
Description |
|---|---|
mb2_va |
Virtual address for MB2 carveout in BPMP-R5 address space. |
spe_fw_va |
Virtual address for SPE-FW carveout in AON-R5 address space. |
misc_carveout_va |
Virtual address for MISC carveout in SCE-R5 address space. |
rcm_blob_carveout_va |
Virtual address for RCM-blob carveout in SCE-R5 address space. |
temp_map_a_carveout_va |
Virtual address for temporary mapping A used while loading binaries. |
temp_map_a_carveout_size |
Size for temporary mapping A used while loading binaries. |
temp_map_a_carveout_va |
Virtual address for temporary mapping B used while loading binaries. |
temp_map_a_carveout_size |
Size for temporary mapping B used while loading binaries. |
Note
None of the preceding VA spaces should overlap with an MMIO region or with each other.
Each size field should be a power of 2.
Each VA field should be aligned to its mapping or carveout.
Carveout Configuration#
Although SDRAM Configuration has MC carveout’s preferred base, size and permissions, it does not have the information that is required to allocate the carveouts by MB1. This information is specified by using the miscellaneous configuration file.
For carveouts that are not protected by MC, all information (including size and preferred base address) is specified using miscellaneous configuration file.
Each MC carveout configuration parameter has the following form:
/{
misc {
carveout {
<carveout-type {
<parameter = <value>;
};
};
};
};
where:
<carveout-type>identifies the carveout and is one of the following:Carveout Type
Description
gsc@[1–31]
GSC carveout for various purposes.
mts
MTS/CPU-uCode carveout.
tzdram
TZDRAM carveout used for SecureOS.
os
OS carveout used for loading OS kernel.
rcm
RCM carveout used for loading RCM-blob during RCM mode (temporary boot carveout).
<parameter>is one of the following:Parameter
Description
pref_base
Preferred base address of carveout.
size
Size of carveout (in bytes).
alignment
Alignment of base address of carveout (in bytes).
ecc_protected
When DRAM region-based ECC is enabled and there are non-ECC protected DRAM regions, whether to allocate the carveout from ECC protected region:
0: Allocate from non-ECC protected region.
1: Allocate from ECC protected region.
bad_page_tolerant
When DRAM page blacklisting is enabled, whether it is OK to have bad pages in the carveout (only possible for very large carveouts that are handled completely by components that can avoid bad pages using SMMU/MMU):
0: No bad pages allowed for the carveout.
1: Bad pages allowed for the carveout. Allocation can be done without filtering bad pages.
The valid combination of the carveouts and their parameters are specified in following table:
Supported carveout-type |
pref_base |
size |
alignment |
ecc_protected |
bad_page_tolerant |
|---|---|---|---|---|---|
gsc-[1-31]/mts |
n/a |
n/a |
Yes |
Yes |
Yes |
tzdram/mb2/cpubl/misc/os/rcm |
Yes |
Yes |
Yes |
Yes |
Yes |
Coresight Data#
Field |
Description |
|---|---|
cfg_system_ctl |
Value to be programmed to CORESIGHT_CFG_SYSTEM_CTL. |
cfg_csite_mc_wr_ctrl |
Value to be programmed to CORESIGHT_CFG_CSITE_MC_WR_CTRL. |
cfg_csite_mc_rd_ctrl |
Value to be programmed to CORESIGHT_CFG_CSITE_MC_RD_CTRL. |
cfg_etr_mc_wr_ctrl |
Value to be programmed to CORESIGHT_CFG_ETR_MC_WR_CTRL. |
cfg_etr_mc_rd_ctrl |
Value to be programmed to CORESIGHT_CFG_ETR_MC_RD_CTRL. |
cfg_csite_cbb_wr_ctrl |
Value to be programmed to CORESIGHT_CFG_CSITE_CBB_WR_CTRL. |
cfg_csite_cbb_rd_ctrl |
Value to be programmed to CORESIGHT_CFG_CSITE_CBB_RD_CTRL. |
Firmware Load and Entry Configuration#
The firmware configuration is specified as follows:
/{
misc {
...
...
firmware {
<firmware-type> {
<parameter> = <value>;
};
};
};
};
where <firmware-type> is one of the MB2 or TZDRAM-E13 and <parameter> is specified in the following table:
Field |
Description |
|---|---|
load-offset |
Offset in the |
entry-offset |
Offset of the |
CPU Configuration#
Field |
Description |
|---|---|
ccplex_platform_features |
CPU platform features (should be 0). |
clock_mode.clock_burst_policy |
CCPLEX clock burst policy. |
clock_mode.max_avfs_mode |
Highest CCPLEX AVFS mode. |
nafll_cfg2/fll_init |
CCPLEX NAFLL CFG2 [Fll Init] |
nafll_cfg2/fll_ldmem |
CCPLEX NAFLL CFG2 [Fll Ldmem]. |
nafll_cfg2/fll_switch_ldmem |
CCPLEX NAFLL CFG2 [Fll Switch Ldmem]. |
nafll_cfg3 |
CCPLEX NAFLL CFG3. |
nafll_ctrl1 |
CCPLEX NAFLL CTRL1. |
nafll_ctrl2 |
CCPLEX NAFLL CTRL2. |
lut_sw_freq_req/sw_override_ndiv |
SW override for CCPLEX LUT frequency request. |
lut_sw_freq_req/ndiv |
NDIV for CCPLEX LUT frequency request. |
lut_sw_freq_req/vfgain |
VFGAIN for CCPLEX LUT frequency request. |
lut_sw_freq_req/sw_override_vfgain |
VFGAIN override for CCPLEX LUT frequency request. |
nafll_coeff/mdiv |
MDIV for NAFLL coefficient. |
nafll_coeff/pdiv |
PDIV for NAFLL coefficient. |
nafll_coeff/fll_frug_main |
FLL frug main for NAFLL coefficient. |
nafll_coeff/fll_frug_fast |
FLL frug fast for NAFLL coefficient. |
adc_vmon.enable |
Enable CCPLEX ADC voltage monitor. |
min_adc_fuse_rev |
Minimum ADC fuse revision. |
pllx_base/divm |
PLLX DIVM. |
pllx_base/divn |
PLLX DIVN. |
pllx_base/divp |
PLLX DIVP. |
pllx_base/enable |
Enable PLLX. |
pllx_base/bypass |
PLLX Bypass Enable. |
Other Configuration#
Field |
Description |
|---|---|
aocluster.evp_reset_addr |
AON/SPE reset vector (in SPE BTCM). |
carveout_alloc_direction |
Carveout allocation direction:
|
se_oem_group |
Value to be programmed to SE0_OEM_GROUP_0/SE_RNG1_RNG1_OEM_GROUP_0. (NVHS / NVLS / Lock bits are forced set.) |
i2c-freq |
List of |
MB1 Soft Fuse Configurations#
Certain platform-specific configurations or decisions in MB1 are required from the early stages of MB1 even before storage is initialized and MB1-BCT is read (for example, debug port details, certain boot-mode controls, behavior in case of failure, and so on.). To address this requirement, an array of 64 fields is added to signed section of BR-BCT, which is opaque to BR but is consumed by MB1. In recovery mode, BR does not read BR-BCT, so this array is kept part of RCM message and is copied by BR to the same location where BR will have kept it in coldboot as part of BR-BCT. This array is called MB1 software fuses (soft-fuse).
Debug Controls#
Field |
Description |
|---|---|
verbosity |
Controls verbosity of debug logs on UART (verbosity increases with increasing value):
|
uart_instance |
UART controller number where debug logs are saved:
|
usb_2_nvjtag |
On-chip controller connected to the USB2 pins:
|
swd_usb_port_sel |
USB2 port over which SWD should be configured:
|
uart8_usb_port_sel |
USB2 port over which UART should be configured:
|
wdt_enable |
Enable BPMP WDT 5th-expiry during the execution of MB1/MB2 (boolean). |
wdt_period_secs |
BPMP WDT time period (in seconds) per expiry. |
Boot Failure Controls#
Field |
Description |
|---|---|
switch_bootchain |
Switch boot chain in case of failure (boolean). |
reset_to_recovery |
Trigger L1 RCM reset on failure (boolean). |
bootchain_switch_mechanism |
Used if
|
bootchain_retry_count |
Maximum number of retries for a single boot-chain (0–15). |
On/Off IST Mode Controls#
Field |
Description |
|---|---|
platform_detection_flow |
In RCM mode, enter platform detection flow (boolean). |
enable_tegrashell |
In RCM mode, enter tegrashell mode; allowed only if FUSE_SECURITY_MODE_0 is not blown (boolean). |
enable_IST |
Enable Key On/Off IST boot (boolean). |
enable_LO_IST |
Enable Key ON (L0) IST boot mode (boolean). Used only if |
enable_dgpu_IST |
Enable dGPU IST during IST boot modes (boolean). |
Frequency Monitor Controls#
Field |
Description |
|---|---|
vrefRO_calib_override |
Override VrefRO calibration based on SoftFuse instead of fuse (boolean). |
vrefRO_min_rev_threshold |
Program VrefRO frequency adjustment target based on |
vrefRO_calib_val |
VrefRO calibration value used to program VrefRO frequency adjustment target. Used if |
osc_threshold_low |
Lower threshold of the FMON counter for OSC clock. |
osc_threshold_high |
Upper threshold of the FMON counter for OSC clock. |
pmc_threshold_low |
Lower threshold of the FMON counter for 32K clock. |
pmc_threshold_high |
Upper threshold of the FMON counter for 32K clock. |
The miscellaneous configuration files are in the Linux_for_Tegra/bootloader/generic/BCT directory.
Here is a DTS example of the new miscellaneous configuration file:
/dts-v1/;
#include "tegrabl_carveout_id.h"
#include "tegra234-mb1-bct-misc-common.dtsi"
#include "tegra234-mb1-bct-carveout-l4t.dtsi"
#include "tegra234-mb1-bct-disable-fsi-carveouts.dtsi"
/ {
misc {
disable_sc7 = <0>;
enable_tsec = <0>;
enable_4pin_ram_code = <1>;
///////// SOCTHERM ///////////
soctherm {
max_chip_limit = <0x69>;
min_chip_limit = <0xFFFFFFE4>;
};
carveout {
aux_info@CARVEOUT_CCPLEX_IST {
pref_base = <0x0 0x0>;
size = <0x0 0x0>; // 0MB
alignment = <0x0 0x0>; // 0MB
};
};
vmon {
vdd_soc {
soc_vmon_config@0 {
sku_info = <0x0>;
vmin_threshold = <0x1a>;
vmax_threshold = <0x76>;
};
};
vdd_cpu {
cpu_vmon_config@0 {
sku_info = <0x0>;
vmin_threshold = <0x15>;
vmax_threshold = <0x7b>;
};
};
};
};
};