Multi SKU Support#
A single software package to support multiple software SKU configuration based on set GPIO value. To make it possible, multiple SKU configurations such as Kernel DTs, BPMP DTs, and BCT are made available at build time to choose from at the time of flashing the board.
..note:
DriveOS provides reference files and architecture (for board p3960-10-sw01) for user to create their own configuration files for platforms/boards they use to support this feature.
Selecting SKU to Bind and Flash#
To select the SKU configuration used to flash on the board, you must update a few parameters in the following file before creating BSP image to flash:
${NV_WORKSPACE}/drive-foundation/platform-config/hardware/nvidia/platform/t264/common/bct/mb1bct/defaults/tegra264-mb1-bct-defaults.dtsi
multi_sku {
test_sku_selection = <0x0>;
num_sku_select_gpios = <0x3>;
sku_select_gpio_cfg_addr = <0xac310ae0 0xac310c00 0xac3104c0>;
sku_select_gpio_padctl_addr = <0xac28b038 0xac28b040 0xac287048>;
};
..note:
You select the set of GPIO pins as per their boards for the addressess presented as values in elements - "sku_select_gpio_cfg_addr" and "sku_select_gpio_padctl_addr".
Enable Multi SKU feature#
To enable multi SKU feature, you must pass the ENABLE_MULTI_SKU_SUPPORT argument along with the bind_partitions command as follows:
$ ./make/bind_partitions -b p3960-10-sw01 linux ENABLE_MULTI_SKU_SUPPORT=y
By default this feature is disabled.
To create BSP and Flash after the multi SKU feature is enabled user should pass following argument along with the commands:
$ <command to create BSP and Flash> --board_config <path to multi SKU json file for the board>/p3960-10-sw01-multisku.json
Configuration Files#
Kernel DT#
The Kernel DT configuration files for multi-SKU feature are available at:
${NV_WORKSPACE}/drive-foundation/platform-config/hardware/nvidia/platform/t264/automotive/kernel-dts/p3960/tegra264-p3960-0<sku no.>-sw01-av-l-linux-gos.dts
where <sku no.> - 010, 120, 130, ... , 180
To use multi SKU feature for prod_nsr or test_nsr variant, user needs create files similar to files listed above with appropriate pct variant suffix and add those file entries into Kernel DT Makefile.
<path to kernel DT files>/tegra264-p3960-0<sku no.>-sw01-av-l-linux-gos-<pct_variant_suffix>.dts
where <sku no.> - 010, 120, 130, ... , 180
<pct_variant_suffix> - test_nsr, prod_nsr
<path to kernel DT files>(for above example) - ${NV_WORKSPACE}/drive-foundation/platform-config/hardware/nvidia/platform/t264/automotive/kernel-dts/p3960
${NV_WORKSPACE}/drive-foundation/platform-config/hardware/nvidia/t264/nv-automotive/automotive/Makefile
dtb-p3960-multi-sku-y += p3960/tegra264-p3960-0010-sw01-av-l-linux-gos-prod-nsr.dtb
dtb-p3960-multi-sku-y += p3960/tegra264-p3960-0120-sw01-av-l-linux-gos-prod-nsr.dtb
dtb-p3960-multi-sku-y += p3960/tegra264-p3960-0130-sw01-av-l-linux-gos-prod-nsr.dtb
dtb-p3960-multi-sku-y += p3960/tegra264-p3960-0140-sw01-av-l-linux-gos-prod-nsr.dtb
dtb-p3960-multi-sku-y += p3960/tegra264-p3960-0150-sw01-av-l-linux-gos-prod-nsr.dtb
dtb-p3960-multi-sku-y += p3960/tegra264-p3960-0160-sw01-av-l-linux-gos-prod-nsr.dtb
dtb-p3960-multi-sku-y += p3960/tegra264-p3960-0170-sw01-av-l-linux-gos-prod-nsr.dtb
dtb-p3960-multi-sku-y += p3960/tegra264-p3960-0180-sw01-av-l-linux-gos-prod-nsr.dtb
BPMP DT#
The BPMP DT configuration files for multi-SKU feature are available at:
${NV_WORKSPACE}/drive-foundation/platform-config/hardware/nvidia/platform/t264/bpmp-dtb/tegra264-bpmp-3834-xxxx-3961-x<sku no.>.dts
where <sku no.> - 010, 012, 130, ... , 180
Pinmux and GPIO (BCT)#
The pinmux configuration file provides pinmux and GPIO configuration information. The typical format for this data is register address and data, as a pair. MB1 configures pinmux and GPIO registers from pinmux configuration table. The pinmux configuration file is available at:
${NV_WORKSPACE}/drive-foundation/platform-config/hardware/nvidia/platform/t264/automotive/bct/p3960-10/tegra264-mb1-bct-platform-param-p3960.dts
which includes different sku configurations present at:
${NV_WORKSPACE}/hardware/nvidia/platform/t264/automotive/bct/p3960-10/pinmux/tegra264-mb1-bct-<config>-p3960-0<sku no.>.dts
where <sku no.> - 010, 012, 130, ... , 180
<config> - pinmux, gpio
Board Config (Flashing)#
The board configuration JSON files provide path/filenames of the configuration to be used during creating BSP image. The JSON file used for mulisku has list of different SKU configuration file to be used for Kernel DT and BPMP DT in following name value pair respectively:
s_Kernel_Dtb_Variant
s_BPMP_Dtb_Variant
The board config file is present at:
- ::
${NV_WORKSPACE}/drive-foundation/platform-config/hardware/nvidia/platform/t264/automotive/automotive-platform-configs/p3960/p3960-10/p3960-10-sw01/board_configs/p3960-10-sw01-multisku.json
..note:
For all configuraitions(Kernel DT, BPMP DT and BCT) mentioned above, all SKU configuration files are just copy of original configuration (i.e., copy of sku 010). User may update the above mentioned files with SKU [120, 130, ... , 180] with different SKU configurations to create different SKU configurations.