add files

This commit is contained in:
tmakin committed 2026-08-11 12:29:19 -08:00
1 parent 1ff017b837
commit 88d6415042
4 files changed
+712

No files matched your search

+443
View File
@@ -0,0 +1,443 @@
# Set defaults for missing env variables.
setenv boot_dir ${prefix}
test -n ${loader_rev} || setenv loader_rev 0
test -n ${id} || setenv id SWANDR
test -n ${emmc} || setenv emmc 0
test -n ${fbconsole} || setenv fbconsole 9
test -n ${uart_port} || setenv uart_port 0
test -n ${earlycon} || setenv earlycon 0
test -n ${r2p_action} || setenv r2p_action bootloader
test -n ${autoboot} || setenv autoboot 0
test -n ${autoboot_list} || setenv autoboot_list 0
test -n ${usb3_enable} || setenv usb3_enable 0
test -n ${4k60_disable} || setenv 4k60_disable 0
test -n ${dvfsb} || setenv dvfsb 0
test -n ${gpu_dvfsc} || setenv gpu_dvfsc 0
test -n ${limit_gpu_clk} || setenv limit_gpu_clk 0
test -n ${jc_rail_disable} || setenv jc_rail_disable 0
test -n ${cec_disable} || setenv cec_disable 0
test -n ${touch_skip_tuning} || setenv touch_skip_tuning 0
test -n ${bt_ertm_disable} || setenv bt_ertm_disable 0
test -n ${wifi_disable_vht80} || setenv wifi_disable_vht80 0
test -n ${alarms_disable} || setenv alarms_disable 0
test -n ${oc} || setenv oc 0
test -n ${ddr200_enable} || setenv ddr200_enable 0
# Built-in IMU.
test -n ${acc_cal_off_x} || setenv acc_cal_off_x 0x0
test -n ${acc_cal_off_y} || setenv acc_cal_off_y 0x0
test -n ${acc_cal_off_z} || setenv acc_cal_off_z 0x0
test -n ${acc_cal_scl_x} || setenv acc_cal_scl_x 0x0
test -n ${acc_cal_scl_y} || setenv acc_cal_scl_y 0x0
test -n ${acc_cal_scl_z} || setenv acc_cal_scl_z 0x0
test -n ${gyr_cal_off_x} || setenv gyr_cal_off_x 0x0
test -n ${gyr_cal_off_y} || setenv gyr_cal_off_y 0x0
test -n ${gyr_cal_off_z} || setenv gyr_cal_off_z 0x0
test -n ${gyr_cal_scl_x} || setenv gyr_cal_scl_x 0x0
test -n ${gyr_cal_scl_y} || setenv gyr_cal_scl_y 0x0
test -n ${gyr_cal_scl_z} || setenv gyr_cal_scl_z 0x0
# Lite Gamepad analog sticks calibration.
test -n ${lite_cal_lx_lof} || setenv lite_cal_lx_lof 0x0
test -n ${lite_cal_lx_cnt} || setenv lite_cal_lx_cnt 0x0
test -n ${lite_cal_lx_rof} || setenv lite_cal_lx_rof 0x0
test -n ${lite_cal_ly_dof} || setenv lite_cal_ly_dof 0x0
test -n ${lite_cal_ly_cnt} || setenv lite_cal_ly_cnt 0x0
test -n ${lite_cal_ly_uof} || setenv lite_cal_ly_uof 0x0
test -n ${lite_cal_rx_lof} || setenv lite_cal_rx_lof 0x0
test -n ${lite_cal_rx_cnt} || setenv lite_cal_rx_cnt 0x0
test -n ${lite_cal_rx_rof} || setenv lite_cal_rx_rof 0x0
test -n ${lite_cal_ry_dof} || setenv lite_cal_ry_dof 0x0
test -n ${lite_cal_ry_cnt} || setenv lite_cal_ry_cnt 0x0
test -n ${lite_cal_ry_uof} || setenv lite_cal_ry_uof 0x0
# Set logging params for each serial type.
setenv uarta "no_console_suspend console=ttyS0,115200,8n1 loglevel=8 androidboot.console=ttyS0"
setenv uartb "no_console_suspend console=ttyS1,115200,8n1 loglevel=8 androidboot.console=ttyS1"
setenv uartc "no_console_suspend console=ttyS2,115200,8n1 loglevel=8 androidboot.console=ttyS2"
setenv no_args "console=null"
setenv usblg "usb_logging loglevel=8"
setenv uarta_early "earlycon=uart,mmio32,0x70006000"
setenv uartb_early "earlycon=uart,mmio32,0x70006040"
setenv uartc_early "earlycon=uart,mmio32,0x70006200"
# Set important addresses.
setenv kernload 0xA0000000
setenv initaddr 0x92000000
setenv fdtrload 0xA8000000
setenv fdtraddr 0x8d000000
# Set temp addresses.
setenv enviraddr 0x8d100000
setenv fdtovaddr 0x8d200000
# L4T Loader check. Min rev 4.
if test "${loader_rev}" < 4; then echoe Old L4T Loader! Update bootloader folder!; echoe Rebooting in 10s..; sleep 10; reset; fi
# Set SoC info.
if test ${t210b01} = 1; then setenv plat_info T210B01; else setenv plat_info T210; fi
# Set SKU info. Frig is used instead of Fric for compatibility reasons.
if test ${sku} = 0; then setenv sku_info ODIN; setenv sku_rev a00; setenv variant odin
elif test ${sku} = 1; then setenv sku_info ODIN; setenv sku_rev b01; setenv variant modin
elif test ${sku} = 2; then setenv sku_info VALI; setenv sku_rev a00; setenv variant vali
elif test ${sku} = 3; then setenv sku_info FRIG; setenv sku_rev a00; setenv variant fric
fi
# Print platform info.
echo PLAT: ${plat_info} SKU: ${sku_info}
echo Serial: ${device_serial_restricted}
echo BT MAC: ${device_bt_mac}
echo WF MAC: ${device_wifi_mac}
# Set MMC device.
setenv mmcnum 1
if test ${emmc} = 1; then
echoe emmc enabled
setenv mmcnum 0
fi
mmc dev ${mmcnum}
# Load Kernel.
if gpio input 190 && test ${recovery} = "0"; then
# Normal Kernel.
if part start mmc ${mmcnum} boot boot_start; then echo Boot partition found
else echoe Boot partition not found!; echoe Rebooting in 10s..; sleep 10; reset; fi
part size mmc ${mmcnum} boot boot_size
else
# Recovery.
if part start mmc ${mmcnum} recovery boot_start; then echo Recovery partition found
else echoe Recovery partition not found!; echoe Rebooting in 10s..; sleep 10; reset; fi
part size mmc ${mmcnum} recovery boot_size
echo Applying WAR: USB3 required for recovery
setenv usb3_enable 1
fi
mmc read ${kernload} ${boot_start} ${boot_size};
# Load DT img.
if part start mmc ${mmcnum} dtb dtb_start; then echo DTB partition found
else echoe DTB partition not found!; echoe Rebooting in 10s..; sleep 10; reset; fi
part size mmc ${mmcnum} dtb dtb_size
mmc read ${fdtrload} ${dtb_start} ${dtb_size}
# Check for Super.
if part start mmc ${mmcnum} super super_start; then echo Super partition found
else echoe Super partition not found!; echoe Rebooting in 10s..; sleep 10; reset; fi
# Get DT from image.
if dtimg load ${fdtrload} ${sku} ${fdtraddr} fdtrsize; then echo Device Tree for SKU ${sku_info} loaded
else echoe Device Tree load for SKU ${sku_info} failed!; echoe Rebooting in 10s..; sleep 10; reset; fi
# Load dtb and resize to fit overlays.
fdt addr ${fdtraddr} ${fdtrsize}
fdt resize 16384
# Dtb sanity checks.
if test ${sku_info} != ${fdt_id_text} -o ${sku_rev} != ${fdt_rev}; then
echoe Device Tree loaded not correct! (SKU: ${fdt_id_text}, Rev: ${fdt_rev})
echoe Expected SKU: ${sku_info}, Rev: ${sku_rev}
echoe Rebooting in 10s..; sleep 10; reset
fi
# Patch dtb with overlays if they exist.
if test -n ${dtb_overlays}; then
echo loading dtb overlays: ${dtb_overlays}
for ov in ${dtb_overlays}; do
echo Setting ${ov}...
# Check if DT overlay and apply it.
if load mmc ${devnum}:${distro_bootpart} ${fdtovaddr} ${boot_dir}/overlays/${ov}.dtbo; then
if fdt apply ${fdtovaddr}; then echo Successfully loaded ${ov}.dtbo...
else echoe Overlay ${ov}.dtbo loading failed!; echoe Rebooting in 10s..; sleep 10; reset; fi
fi
done
fi
# UART Logging.
if test ${uart_port} = 1; then
echoe UART-A logging enabled
setenv bootargs_extra ${bootargs_extra} ${uarta}
fdt set /serial@70006000 compatible nvidia,tegra20-uart
fdt set /serial@70006000 status okay
if test ${earlycon} = 1; then
echoe Early logging enabled
setenv bootargs_extra ${bootargs_extra} ${uarta_early}
fdt set /serial@70006000 reset-names noreset
fi
elif test ${uart_port} = 2; then
echoe UART-B logging enabled
setenv bootargs_extra ${bootargs_extra} ${uartb}
fdt set /serial@70006040 compatible nvidia,tegra20-uart
fdt set /serial@70006040/joyconr status disabled
if test ${earlycon} = 1; then
echoe Early logging enabled
setenv bootargs_extra ${bootargs_extra} ${uartb_early}
fdt set /serial@70006040 reset-names noreset
fi
elif test ${uart_port} = 3; then
echoe UART-C logging enabled
setenv bootargs_extra ${bootargs_extra} ${uartc}
fdt set /serial@70006200 compatible nvidia,tegra20-uart
fdt set /serial@70006200/joyconl status disabled
if test ${earlycon} = 1; then
echoe Early logging enabled
setenv bootargs_extra ${bootargs_extra} ${uartc_early}
fdt set /serial@70006200 reset-names noreset
fi
else
setenv bootargs_extra ${bootargs_extra} ${no_args}
fi
# USB Serial Logging.
if test ${uart_port} = 4; then setenv bootargs_extra ${usblg} ${bootargs_extra}; echoe USB Serial logging enabled; fi
# Disable Joycon Rails.
if test ${jc_rail_disable} = 1; then
echoe Joycon Rails disabled
fdt set /serial@70006040 status disabled
fdt set /serial@70006040/joyconr status disabled
fdt set /serial@70006200 status disabled
fdt set /serial@70006200/joyconl status disabled
fi
# Disable CEC.
if test ${sku} = 2 -o ${cec_disable} = 1; then setenv bootargs_extra ${bootargs_extra} "androidboot.cec_disable=1"; fi
# Disable Touch panel tuning.
if test ${touch_skip_tuning} = 1; then setenv bootargs_extra ${bootargs_extra} "ftm4.skip_tuning=1"; fi
# Disable Bluetooth ERTM.
if test ${bt_ertm_disable} = 1; then setenv bootargs_extra ${bootargs_extra} "bluetooth.disable_ertm=1"; fi
# Enable eMMC.
if test ${emmc} = 1; then
fdt set /sdhci@700b0600 status okay
fdt set /firmware/android boot_devices sdhci-tegra.3
# Check if eMMC is initialized in 1-bit mode.
if test "${mmc_1bit}" = 1; then
echoe eMMC is initialized in 1-bit mode!
fdt set /sdhci@700b0600 bus-width <0x1>
fdt set /sdhci@700b0600 uhs-mask <0x7F>
fi
else
fdt set /firmware/android boot_devices sdhci-tegra.0
fi
# Check if SD is initialized in 1-bit mode.
if test "${sd_1bit}" = 1; then
echoe SD Card is initialized in 1-bit mode!
fdt set /sdhci@700b0000 bus-width <0x1>
fdt set /sdhci@700b0000 uhs-mask <0x7F>
fi
# Enable DDR200 if user explicitly enables it
if test ${ddr200_enable} = 1; then
echoe SD DDR200 mode enabled
fdt set /sdhci@700b0000 enable-ddr200
fi
# Force PLLP for 408/204MHz Host/Card clock if set.
if test "${ddr200_mode}" = 2; then
echoe SD DDR200 PLLP enabled
fdt set /sdhci@700b0000 ddr200-clk-limit 210000000
fi
# Disable WiFi VHT80 bonding.
if test ${wifi_disable_vht80} = 1; then setenv bootargs_extra ${bootargs_extra} "brcmfmac.vht_mask=12"; fi
# Set calibration data.
if load mmc ${devnum}:${distro_bootpart} ${enviraddr} /switchroot/switch.cal; then
env import -t -r ${enviraddr} ${filesize}
if test ${sku} = 2; then
echo Sio Calibration set
fdt set /serial@70006200/sio sio-stick-cal-l <$lite_cal_lx_lof $lite_cal_lx_cnt $lite_cal_lx_rof $lite_cal_ly_dof $lite_cal_ly_cnt $lite_cal_ly_uof>
fdt set /serial@70006200/sio sio-stick-cal-r <$lite_cal_rx_lof $lite_cal_rx_cnt $lite_cal_rx_rof $lite_cal_ry_dof $lite_cal_ry_cnt $lite_cal_ry_uof>
fdt set /serial@70006200/sio sio-acc-cal <$acc_cal_off_x $acc_cal_off_y $acc_cal_off_z $acc_cal_scl_x $acc_cal_scl_y $acc_cal_scl_z>
fdt set /serial@70006200/sio sio-gyr-cal <$gyr_cal_off_x $gyr_cal_off_y $gyr_cal_off_z $gyr_cal_scl_x $gyr_cal_scl_y $gyr_cal_scl_z>
fi
fi
# Get display handle.
if test ${display_id} = f20; then echo Display is INN 6.2; fdt get value DHANDLE /host1x/dsi/panel-i-720p-6-2 phandle
elif test ${display_id} = f30; then echo Display is AUO 6.2; fdt get value DHANDLE /host1x/dsi/panel-a-720p-6-2 phandle
elif test ${display_id} = 10; then echo Display is JDI 6.2; fdt get value DHANDLE /host1x/dsi/panel-j-720p-6-2 phandle
elif test ${display_id} = 1020; then echo Display is INN 5.5; fdt get value DHANDLE /host1x/dsi/panel-i-720p-5-5 phandle
elif test ${display_id} = 1030; then echo Display is AUO 5.5; fdt get value DHANDLE /host1x/dsi/panel-a-720p-5-5 phandle
elif test ${display_id} = 1040; then echo Display is SHP 5.5; fdt get value DHANDLE /host1x/dsi/panel-s-720p-5-5 phandle
elif test ${display_id} = 2050; then echo Display is SAM 7.0
elif test ${display_id} = f83; then echo Display is Clone 6.2
elif test ${display_id} = B3; then echo Display is Clone 5.5
elif test ${display_id} = 0; then echo Display is Clone 5.5
else echoe Unknown Display ID: ${display_id}! Please report it!; fi
# Set active display handle.
if test -n "${DHANDLE}" -a ${sku} != 3; then echo Setting Display panel; fdt set /host1x/dsi nvidia,active-panel <$DHANDLE>; fi
# Disable USB3.
if test ${usb3_enable} = 0; then
echo USB3 disabled
fdt get value DHANDLE_USB2 /xusb_padctl@7009f000/pads/usb2/lanes/usb2-0 phandle
fdt set /xusb@70090000 phys <$DHANDLE_USB2>
fdt set /xusb@70090000 phy-names usb2-0
fdt set /xudc@700d0000 phys <$DHANDLE_USB2>
fdt set /xudc@700d0000 phy-names usb2
fdt set /xusb_padctl@7009f000 usb3-no-mapping-war <0x1>
fdt set /xusb_padctl@7009f000/ports/usb2-0 nvidia,usb3-port-fake <0xffffffff>
fdt set /xusb_padctl@7009f000/ports/usb3-0 status disabled
else
echoe USB3 enabled
fi
# Disable 4 DP lanes (4K@60) on Fric.
if test ${sku} = 3 -a ${4k60_disable} = 1 -a ${usb3_enable} != 0; then
echoe 4K60 disabled
fdt set /i2c@7000c000/bm92t@18 rohm,dp-lanes <2>
fi
# Set battery voltage limit via cell age for Vali.
if test ${sku} = 2 -a -n "${VLIM}"; then
echo VALI: voltage limits [${VLIM}, ${SOCLIM}]
if test "${VLIM}" != 1070; then
# Newer Vali. 4320 mV / 1664 mA.
fdt set /i2c@7000c000/battery-charger@6b/charger ti,charge-voltage-limit-millivolt <0x$VLIM>
fdt set /i2c@7000c000/battery-charger@6b/charger ti,charge-thermal-voltage-limit <0x$VLIM 0x$VLIM 0x$VLIM 0xFF0>
fdt set /i2c@7000c000/battery-gauge@36 maxim,kernel-maximum-soc <0x$SOCLIM>
else
# Old Vali. 4208 mV / 1536 mA. (Unreleased?)
fdt set /i2c@7000c000/battery-charger@6b/charger ti,charge-voltage-limit-millivolt <0x1070>
fdt set /i2c@7000c000/battery-charger@6b/charger ti,charge-thermal-voltage-limit <0x1070 0x1070 0x1070 0xF70>
fdt set /i2c@7000c000/battery-charger@6b/charger ti,fast-charge-current-limit-milliamp <0x600>
fdt set /i2c@7000c000/battery-charger@6b/charger ti,charge-current-limit <0x200 0x240 0x600 0x600>
fi
fi
# DVFS B-Side.
if test ${t210b01} = 1 -a ${dvfsb} = 1; then
echoe DVFS B-Side enabled
setenv bootargs_extra ${bootargs_extra} "speedo_tegra210.sku_id=0x83 speedo_tegra210.cspd_id=2 speedo_tegra210.sspd_id=2"
fdt set /cpufreq/cpu-scaling-data max-frequency <0x249348>
if test ${gpu_dvfsc} = 0; then
setenv bootargs_extra ${bootargs_extra} "speedo_tegra210.gspd_id=2"
fi
if test ${sku} = 2; then
# 2091 MHz CPU and 844 MHz GPU hard limit. Vali.
fdt set /cpufreq/cpu-scaling-data max-frequency <0x1FE7F8>
fdt set /dvfs nvidia,gpu-max-freq-khz <0xCE400>
fi
fi
# GPU DVFS C-Side.
if test ${t210b01} = 1 -a ${gpu_dvfsc} = 1; then
echoe DVFS C-Side GPU enabled
if test ${dvfsb} != 1; then
setenv bootargs_extra ${bootargs_extra} "speedo_tegra210.sku_id=0x83 speedo_tegra210.gspd_id=3"
else
setenv bootargs_extra ${bootargs_extra} "speedo_tegra210.gspd_id=3"
fi
fi
# Allow overclocking.
if test ${oc} = 1; then
echoe "CPU OC enabled"
setenv bootargs_extra ${bootargs_extra} "androidboot.oc=1"
fi
if test -n ${max_cpu_freq}; then
echoe "Max CPU freq applied: ${max_cpu_freq} KHz"
fdt set /cpufreq/cpu-scaling-data max-frequency <${max_cpu_freq}>
fi
if test -n ${max_gpu_freq}; then
echoe "Max GPU freq applied: ${max_gpu_freq} KHz"
fdt set /dvfs nvidia,gpu-max-freq-khz <${max_gpu_freq}>
fi
# Limit GPU clock.
if test ${t210b01} = 1 -a ${limit_gpu_clk} = 1; then
if test ${sku} != 2; then
# If not Vali set GPU hard limit to 1075 MHz.
echoe GPU clock limited
fdt set /dvfs nvidia,gpu-max-freq-khz <0x106800>
fi
fi
# Set pmic type if devboard.
if test ${t210b01} = 1 -a -n "${pmic_type}" -a ${pmic_type} = 1; then
echoe GPU 15A Regulator enabled
fdt set /i2c@7000d000/max77812@33 reg <0x31>
fdt set /i2c@7000d000/max77812@33/m3vout status disabled
fdt set /i2c@7000d000/fan53528@52 status okay
fdt set /dvfs nvidia,gpu-max-volt-mv <0x3B6>
fi
# Disable Wake up from RTC.
if test ${alarms_disable} = 1; then
echoe Wakeup Alarms disabled
fdt set /rtc nvidia,pmc-wakeup <0>
fdt set /pcie@1003000 nvidia,wake-gpio <0>
fdt set /brcmfmac@0 nvidia,pmc-wakeup <0>
fi
# Set serial number.
if test -n ${device_serial_restricted}; then fdt set / serial-number ${device_serial_restricted}; fi
# Load mac address info file from sd
if fatload mmc 1:1 ${enviraddr} switchroot/joycon_mac.ini; then
if ini "joycon_00" ${enviraddr}; then echo Found Joycon Pairing Info; else echoe Malformed joycon_mac.ini!; fi
if test -n "${host}" -a "${host}" = "00:00:00:00:00:00"; then ini "joycon_01" ${enviraddr}; fi
fi
# Set BT mac.
if test ! -n "${bt_mac}"; then
if test -n "${host}" -a "${host}" != "00:00:00:00:00:00"; then setenv bt_mac ${host}; else setenv bt_mac ${device_bt_mac}; fi;
fi
# Set Wi-Fi mac. Use BT MAC with FF as the last byte.
if test ! -n "${wifi_mac}"; then
if test -n "${host}" -a "${host}" != "00:00:00:00:00:00"; then setexpr wifi_mac sub "\:..$" ":FF" ${host}; else setenv wifi_mac ${device_wifi_mac}; fi;
fi
echo CAL0 BT MAC: ${bt_mac}
echo CAL0 WF MAC: ${wifi_mac}
# Import to DT.
fdt set /chosen nvidia,wifi-mac ${wifi_mac}
fdt set /chosen nvidia,bluetooth-mac ${bt_mac}
# Set kernel cmdline.
setenv bootargs ${bootargs_extra} "ro init=/init firmware_class.path=/vendor/firmware \
pmc_r2p.enabled=1 pmc_r2p.action=${r2p_action} \
pmc_r2p.param1=${autoboot} pmc_r2p.param2=${autoboot_list} \
fbcon=map:${fbconsole} consoleblank=0 \
latency_allowance.ptsa_rework \
nvdec_enabled=0 tegra_fbmem=0x800000@0xf5a00000 \
androidboot.bootloader=${blver} androidboot.hardware=nx \
androidboot.hardware.sku=${variant} androidboot.serialno=${device_serial_restricted} \
androidboot.modem=none androidboot.dtb_idx=${sku} "
# Boot kernel.
echo Launching Kernel!
bootm ${kernload} ${kernload} ${fdtraddr}
echoe Failed to launch Kernel!
echoe
echoe Rebooting in 10s..
sleep 10
reset