Refresh jetson-nano board config.

This commit is contained in:
Kevin Schmidt
2023-11-19 09:17:39 +01:00
committed by Igor
parent 45b8406f8d
commit 72922908c5
16 changed files with 11 additions and 493 deletions

View File

@@ -1,32 +1,11 @@
# Nvidia Jetson Nano quad core 2G/4GB SoC 4 x USB3 HDMI & DP # Nvidia Jetson Nano quad core 2G/4GB SoC 4 x USB3 HDMI & DP
BOARD_NAME="Jetson Nano" declare -g BOARD_NAME="Jetson Nano"
BOARDFAMILY="media" declare -g BOARDFAMILY="uefi-arm64"
BOARD_MAINTAINER="150balbes" declare -g BOARD_MAINTAINER="150balbes"
BOOTCONFIG="none" declare -g KERNEL_TARGET="current,edge"
KERNEL_TARGET="current,edge"
FULL_DESKTOP="yes"
BOOT_LOGO="desktop"
BOOT_FDT_FILE="nvidia/tegra210-p3450-0000.dtb"
SRC_EXTLINUX="yes"
SRC_CMDLINE="console=ttyS0,115200n8 console=tty0"
function post_family_tweaks__Jetson-nano() { declare -g BOOT_LOGO=desktop
display_alert "$BOARD" "Installing bsp firmware and fixups" "info"
install -m 755 $SRC/packages/blobs/jetson/jetson.sh $SDCARD/etc/initramfs-tools/hooks/jetson.sh declare -g GRUB_CMDLINE_LINUX_DEFAULT="console=ttyS0,115200n8"
if [[ $BRANCH == legacy ]]; then declare -g BOOT_FDT_FILE="nvidia/tegra210-p3450-0000.dtb"
install -m 755 $SRC/packages/blobs/jetson/tegra21x_xusb_firmware $SDCARD/lib/firmware/tegra21x_xusb_firmware enable_extension "grub-with-dtb"
install -m 755 $SRC/packages/blobs/jetson/asound.conf.tegrahda $SDCARD/etc/asound.conf.tegrahda
install -m 755 $SRC/packages/blobs/jetson/asound.conf.tegrahda $SDCARD/etc/asound.conf
install -m 755 $SRC/packages/blobs/jetson/asound.conf.tegrasndt210ref $SDCARD/etc/asound.conf.tegrasndt210ref
install -m 755 $SRC/packages/blobs/jetson/tegra-hda.conf $SDCARD/usr/share/alsa/cards/tegra-hda.conf
install -m 755 $SRC/packages/blobs/jetson/tegra-snd-t210r.conf $SDCARD/usr/share/alsa/cards/tegra-snd-t210r.conf
sed -e 's/exit 0//g' -i $SDCARD/etc/rc.local
echo "su -c 'echo 255 > /sys/devices/pwm-fan/target_pwm'" >> $SDCARD/etc/rc.local
echo "exit 0" >> $SDCARD/etc/rc.local
else
cp -R $SRC/packages/blobs/jetson/firmware/* $SDCARD/lib/firmware/
fi
return 0
}

View File

@@ -5906,7 +5906,7 @@ CONFIG_AMLOGIC_THERMAL=m
# #
# NVIDIA Tegra thermal drivers # NVIDIA Tegra thermal drivers
# #
# CONFIG_TEGRA_SOCTHERM is not set CONFIG_TEGRA_SOCTHERM=m
CONFIG_TEGRA_BPMP_THERMAL=m CONFIG_TEGRA_BPMP_THERMAL=m
# end of NVIDIA Tegra thermal drivers # end of NVIDIA Tegra thermal drivers

View File

@@ -3690,7 +3690,7 @@ CONFIG_DWMAC_SOCFPGA=m
# CONFIG_DWMAC_SUNXI is not set # CONFIG_DWMAC_SUNXI is not set
CONFIG_DWMAC_SUN8I=m CONFIG_DWMAC_SUN8I=m
CONFIG_DWMAC_INTEL_PLAT=m CONFIG_DWMAC_INTEL_PLAT=m
# CONFIG_DWMAC_TEGRA is not set CONFIG_DWMAC_TEGRA=m
CONFIG_DWMAC_VISCONTI=m CONFIG_DWMAC_VISCONTI=m
# CONFIG_DWMAC_LOONGSON is not set # CONFIG_DWMAC_LOONGSON is not set
CONFIG_STMMAC_PCI=m CONFIG_STMMAC_PCI=m
@@ -6021,7 +6021,7 @@ CONFIG_AMLOGIC_THERMAL=m
# #
# NVIDIA Tegra thermal drivers # NVIDIA Tegra thermal drivers
# #
# CONFIG_TEGRA_SOCTHERM is not set CONFIG_TEGRA_SOCTHERM=m
CONFIG_TEGRA_BPMP_THERMAL=m CONFIG_TEGRA_BPMP_THERMAL=m
# end of NVIDIA Tegra thermal drivers # end of NVIDIA Tegra thermal drivers

View File

@@ -1,18 +0,0 @@
l2tp_ppp
l2tp_netlink
l2tp_core
pppox
ppp_generic
slhc
cpufreq_interactive
cpufreq_conservative
cpufreq_powersave
cpufreq_userspace
cpufreq_ondemand
zram
sch_fq_codel
binfmt_misc
ip_tables
x_tables
ipv6
spidev

View File

@@ -8,10 +8,6 @@
# #
source "${BASH_SOURCE%/*}/include/rockchip64_common.inc" source "${BASH_SOURCE%/*}/include/rockchip64_common.inc"
if [[ $BOARD = jetson-nano ]]; then
enable_extension "grub-sbc-media"
fi
if [[ $BOARD == station-p2 || $BOARD == station-m2 || $BOARD == bananapir2pro ]]; then if [[ $BOARD == station-p2 || $BOARD == station-m2 || $BOARD == bananapir2pro ]]; then
BOOTSOURCE='https://github.com/150balbes/u-boot-rk' BOOTSOURCE='https://github.com/150balbes/u-boot-rk'
BOOTBRANCH='branch:rk356x' BOOTBRANCH='branch:rk356x'

View File

@@ -1,145 +0,0 @@
#!/usr/bin/env bash
# @TODO: rpardini: there's no good reason for this ("grub-sbc-media") to exist. "grub" could be refactored to allow configuration to do the same.
# This runs *after* user_config. Don't change anything not coming from other variables or meant to be configured by the user.
function extension_prepare_config__prepare_grub-sbc-media() {
display_alert "Prepare config" "${EXTENSION}" "info"
# Extension configuration defaults.
declare -g DISTRO_GENERIC_KERNEL=${DISTRO_GENERIC_KERNEL:-no} # if yes, does not build our own kernel, instead, uses generic one from distro
declare -g UEFI_GRUB_DISABLE_OS_PROBER="${UEFI_GRUB_DISABLE_OS_PROBER:-}" # 'true' will disable os-probing, useful for SD cards.
declare -g UEFI_GRUB_DISTRO_NAME="${UEFI_GRUB_DISTRO_NAME:-Armbian}" # Will be used on grub menu display
declare -g UEFI_GRUB_TIMEOUT=${UEFI_GRUB_TIMEOUT:-3} # Small timeout by default
declare -g UEFI_GRUB_RECORDFAIL_TIMEOUT=${UEFI_GRUB_RECORDFAIL_TIMEOUT:-3}
declare -g GRUB_CMDLINE_LINUX_DEFAULT="${GRUB_CMDLINE_LINUX_DEFAULT:-}" # Cmdline by default
declare -g UEFI_ENABLE_BIOS_AMD64="${UEFI_ENABLE_BIOS_AMD64:-no}" # Enable BIOS too if target is amd64
# User config overrides.
declare -g IMAGE_PARTITION_TABLE="gpt" # GPT partition table is essential for many UEFI-like implementations, eg Apple+Intel stuff.
declare -g UEFISIZE=256 # in MiB - grub EFI is tiny - but some EFI BIOSes ignore small too small EFI partitions
declare -g BOOTSIZE=0 # No separate /boot when using UEFI.
declare -g CLOUD_INIT_CONFIG_LOCATION="${CLOUD_INIT_CONFIG_LOCATION:-/boot/efi}" # use /boot/efi for cloud-init as default when using Grub.
declare -g EXTRA_BSP_NAME="${EXTRA_BSP_NAME}-grub" # Unique bsp name.
declare -g UEFI_GRUB_TARGET_BIOS="" # Target for BIOS GRUB install, set to i386-pc when UEFI_ENABLE_BIOS_AMD64=yes and target is amd64
# local
declare -a packages=()
packages+=(efibootmgr efivar os-prober "grub-efi-${ARCH}-bin")
if [[ "${ARCH}" == "arm64" ]]; then
packages+=("grub-efi-${ARCH}")
declare -g UEFI_GRUB_TARGET="arm64-efi" # Default for arm64-efi
fi
add_packages_to_image "${packages[@]}"
}
pre_umount_final_image__install_grub() {
configure_grub
local chroot_target=$MOUNT
display_alert "Installing bootloader" "GRUB" "info"
# SBC-MEDIA: copy the dtbs to ESP
display_alert "Copying DTBs to ESP" "${EXTENSION}" "info"
run_host_command_logged mkdir -pv "$MOUNT"/boot/efi/dtb
run_host_command_logged cp -vr "$MOUNT"/boot/dtb/* "$MOUNT"/boot/efi/dtb/
display_alert "Copying Splash to ESP" "${EXTENSION}" "info"
run_host_command_logged cp -rv ${SRC}/packages/blobs/splash/grub.png "$MOUNT"/boot/grub
# add config to disable os-prober, otherwise image will have the host's other OSes boot entries.
cat <<- grubCfgFragHostSide >> "${MOUNT}"/etc/default/grub.d/99-armbian-host-side.cfg
GRUB_DISABLE_OS_PROBER=true
grubCfgFragHostSide
# copy Armbian GRUB wallpaper
run_host_command_logged mkdir -pv "${chroot_target}"/usr/share/images/grub/
run_host_command_logged cp -v "${SRC}"/packages/blobs/splash/grub.png "${chroot_target}"/usr/share/images/grub/wallpaper.png
# Mount the chroot...
mount_chroot "$chroot_target/" # this already handles /boot/efi which is required for it to work.
# SBC-MEDIA specific...
sed -i '/devicetree/c echo' "$MOUNT"/etc/grub.d/10_linux
# update-grub is secretly `grub-mkconfig` under wraps, but the actual work is done by /etc/grub.d/10-linux
# that decides based on 'test -e "/dev/disk/by-uuid/${GRUB_DEVICE_UUID}"' so that _must_ exist.
# If it does NOT exist, then a reference to a /dev/devYpX is used, and will fail to boot.
# Irony: let's use grub-probe to find out the UUID of the root partition, and then create a symlink to it.
# Another: on some systems (eg, not Docker) the thing might already exist due to udev actually working.
# shellcheck disable=SC2016 # some wierd escaping going on there.
chroot_custom "$chroot_target" mkdir -pv '/dev/disk/by-uuid/"$(grub-probe --target=fs_uuid /)"' "||" true
display_alert "Creating GRUB config..." "${EXTENSION}: grub-mkconfig / update-grub"
chroot_custom "$chroot_target" update-grub || {
exit_with_error "update-grub failed!"
}
local install_grub_cmdline="grub-install --target=${UEFI_GRUB_TARGET} --no-nvram --removable" # nvram is global to the host, even across chroot. take care.
display_alert "Installing GRUB EFI..." "${EXTENSION}: ${UEFI_GRUB_TARGET}"
chroot_custom "$chroot_target" "$install_grub_cmdline" || {
exit_with_error "${install_grub_cmdline} failed!"
}
### Sanity check. The produced "/boot/grub/grub.cfg" should:
declare -i has_failed_sanity_check=0
# - NOT have any mention of `/dev` inside; otherwise something is going to fail
if grep -q '/dev' "${chroot_target}/boot/grub/grub.cfg"; then
display_alert "GRUB sanity check failed" "grub.cfg contains /dev" "err"
SHOW_LOG=yes run_host_command_logged grep '/dev' "${chroot_target}/boot/grub/grub.cfg" "||" true
has_failed_sanity_check=1
else
display_alert "GRUB config sanity check passed" "no '/dev' found in grub.cfg" "info"
fi
# - HAVE references to initrd, otherwise going to fail.
if ! grep -q 'initrd.img' "${chroot_target}/boot/grub/grub.cfg"; then
display_alert "GRUB config sanity check failed" "no initrd.img references found in /boot/grub/grub.cfg" "err"
has_failed_sanity_check=1
else
display_alert "GRUB config sanity check passed" "initrd.img references found OK in /boot/grub/grub.cfg" "debug"
fi
if [[ ${has_failed_sanity_check} -gt 0 ]]; then
exit_with_error "GRUB config sanity check failed, image will be unbootable; see above errors"
fi
# Remove host-side config.
rm -f "${MOUNT}"/etc/default/grub.d/99-armbian-host-side.cfg
if [[ $BOARD == jetson-nano ]]; then
run_host_command_logged cp -v "${SRC}/packages/blobs/jetson/boot.scr" "${MOUNT}"/boot/efi/boot.scr
fi
umount_chroot "$chroot_target/"
}
configure_grub() {
[[ -n "$SRC_CMDLINE" ]] &&
GRUB_CMDLINE_LINUX_DEFAULT+=" ${SRC_CMDLINE}"
[[ -n "$MAIN_CMDLINE" ]] &&
GRUB_CMDLINE_LINUX_DEFAULT+=" ${MAIN_CMDLINE}"
display_alert "GRUB EFI kernel cmdline" "${GRUB_CMDLINE_LINUX_DEFAULT} distro=${UEFI_GRUB_DISTRO_NAME} timeout=${UEFI_GRUB_TIMEOUT}" ""
cat <<- grubCfgFrag >> "${MOUNT}"/etc/default/grub.d/98-armbian.cfg
GRUB_CMDLINE_LINUX_DEFAULT="${GRUB_CMDLINE_LINUX_DEFAULT}"
GRUB_TIMEOUT_STYLE=menu # Show the menu with Kernel options (Armbian or -generic)...
GRUB_TIMEOUT=${UEFI_GRUB_TIMEOUT} # ... for ${UEFI_GRUB_TIMEOUT} seconds, then boot the Armbian default.
GRUB_RECORDFAIL_TIMEOUT=${UEFI_GRUB_RECORDFAIL_TIMEOUT}
GRUB_DISTRIBUTOR="${UEFI_GRUB_DISTRO_NAME}" # On GRUB menu will show up as "Armbian GNU/Linux" (will show up in some UEFI BIOS boot menu (F8?) as "armbian", not on others)
GRUB_BACKGROUND="/boot/grub/grub.png"
grubCfgFrag
if [[ "a${UEFI_GRUB_DISABLE_OS_PROBER}" != "a" ]]; then
cat <<- grubCfgFragHostSide >> "${MOUNT}"/etc/default/grub.d/98-armbian.cfg
GRUB_DISABLE_OS_PROBER=${UEFI_GRUB_DISABLE_OS_PROBER}
grubCfgFragHostSide
fi
if [[ "a${UEFI_GRUB_TERMINAL}" != "a" ]]; then
cat <<- grubCfgFragTerminal >> "${MOUNT}"/etc/default/grub.d/98-armbian.cfg
GRUB_TERMINAL="${UEFI_GRUB_TERMINAL}"
grubCfgFragTerminal
fi
}

View File

@@ -1,91 +0,0 @@
#
# ALSA library configuration file
#
# Copyright (c) 2016-2017 NVIDIA Corporation. All Rights Reserved.
#
# NVIDIA Corporation and its licensors retain all intellectual property and
# proprietary rights in and to this software and related documentation. Any
# use, reproduction, disclosure or distribution of this software and related
# documentation without an express license agreement from NVIDIA Corporation
# is strictly prohibited.
pcm.!default {
type plug
slave {
pcm "hw:tegrahda,3"
channels 2
rate 48000
}
hint.description "Tegra HDA Soundcard (tegrahda,3)"
}
ctl.!default {
type hw
card Tegra
}
pcm.music {
type plug
slave {
pcm "hw:tegrahda,3"
channels 2
rate 48000
}
}
pcm.demixer {
type plug
slave {
pcm "dmix:tegrahda"
channels 2
rate 48000
}
}
pcm.aux {
type hw
card "tegrahda"
device 7
}
pcm.voice {
type plug
slave {
pcm "hw:tegrahda,3"
channels 1
rate 8000
}
}
pcm.aux_plug {
type plug
slave.pcm "aux"
}
pcm.music_and_voice {
type asym
playback.pcm {
type plug
slave.pcm {
type multi
slaves.a.pcm music
slaves.b.pcm voice
slaves.a.channels 2
slaves.b.channels 1
bindings.0.slave a
bindings.0.channel 0
bindings.1.slave a
bindings.1.channel 1
bindings.2.slave b
bindings.2.channel 0
}
route_policy duplicate
}
capture.pcm "voice"
}

View File

@@ -1,91 +0,0 @@
#
# ALSA library configuration file
#
# Copyright (c) 2015 NVIDIA Corporation. All Rights Reserved.
#
# NVIDIA Corporation and its licensors retain all intellectual property and
# proprietary rights in and to this software and related documentation. Any
# use, reproduction, disclosure or distribution of this software and related
# documentation without an express license agreement from NVIDIA Corporation
# is strictly prohibited.
pcm.!default {
type plug
slave {
pcm "hw:tegrasndt210ref,0"
channels 2
rate 48000
}
hint.description "Tegra APE Soundcard (tegrasndt210ref,0)"
}
ctl.!default {
type hw
card tegrasndt210ref
}
pcm.music {
type plug
slave {
pcm "hw:tegrasndt210ref,0"
channels 2
rate 48000
}
}
pcm.demixer {
type plug
slave {
pcm "dmix:tegrasndt210ref"
channels 2
rate 48000
}
}
pcm.aux {
type hw
card "Tegra"
device 3
}
pcm.voice {
type plug
slave {
pcm "hw:tegrasndt210ref,2"
channels 1
rate 8000
}
}
pcm.aux_plug {
type plug
slave.pcm "aux"
}
pcm.music_and_voice {
type asym
playback.pcm {
type plug
slave.pcm {
type multi
slaves.a.pcm music
slaves.b.pcm voice
slaves.a.channels 2
slaves.b.channels 1
bindings.0.slave a
bindings.0.channel 0
bindings.1.slave a
bindings.1.channel 1
bindings.2.slave b
bindings.2.channel 0
}
route_policy duplicate
}
capture.pcm "voice"
}

Binary file not shown.

View File

@@ -1,17 +0,0 @@
#!/bin/sh
# Copy xusb file to initrd
#
mkdir -p "${DESTDIR}"/lib/firmware/nvidia/tegra210
xusbfile=/lib/firmware/nvidia/tegra210/xusb.bin
if [ -f "${xusbfile}" ]; then
cp "${xusbfile}" "${DESTDIR}"/lib/firmware/nvidia/tegra210
fi
usbold=/lib/firmware/tegra21x_xusb_firmware
if [ -f "${usbold}" ]; then
cp "${usbold}" "${DESTDIR}"/lib/firmware
fi
exit 0

View File

@@ -1,19 +0,0 @@
# Configuration for the Tegra HD audio
<confdir:pcm/hdmi.conf>
tegra-hda.pcm.hdmi.0 {
@args [ CARD AES0 AES1 AES2 AES3 ]
@args.CARD { type string }
@args.AES0 { type integer }
@args.AES1 { type integer }
@args.AES2 { type integer }
@args.AES3 { type integer }
type hooks
slave.pcm {
type hw
card $CARD
device 3
}
hint.device 3
}

View File

@@ -1,22 +0,0 @@
#
# ALSA configuration for the Tegra210 APE soundcard
#
# Copyright (c) 2018 NVIDIA Corporation. All Rights Reserved.
#
# NVIDIA Corporation and its licensors retain all intellectual property and
# proprietary rights in and to this software and related documentation. Any
# use, reproduction, disclosure or distribution of this software and related
# documentation without an express license agreement from NVIDIA Corporation
# is strictly prohibited.
#
<confdir:pcm/front.conf>
tegra-snd-t210r.pcm.front.0 {
@args [ CARD ]
@args.CARD {
type string
}
type hw
card $CARD
}

View File

@@ -1,54 +0,0 @@
--- a/scripts/package/builddeb
+++ b/scripts/package/builddeb
@@ -119,10 +119,9 @@
libc_headers_dir="$objtree/debian/headertmp"
dtb_dir="$objtree/debian/dtbtmp"
dbg_dir="$objtree/debian/dbgtmp"
-packagename=linux-image"$LOCALVERSION"
-fwpackagename=linux-firmware-image"$LOCALVERSION"
-kernel_headers_packagename=linux-headers"$LOCALVERSION"
-dtb_packagename=linux-dtb"$LOCALVERSION"
+packagename=linux-image-legacy"$LOCALVERSION"
+kernel_headers_packagename=linux-headers-legacy"$LOCALVERSION"
+dtb_packagename=linux-dtb-legacy"$LOCALVERSION"
libc_headers_packagename=linux-libc-dev"$LOCALVERSION"
dbg_packagename=$packagename-dbg
debarch=
@@ -150,12 +149,11 @@
BUILD_DEBUG="$(grep -s '^CONFIG_DEBUG_INFO=y' $KCONFIG_CONFIG || true)"
# Setup the directory structure
-rm -rf "$tmpdir" "$fwdir" "$kernel_headers_dir" "$libc_headers_dir" "$dbg_dir" "$dtb_dir" $objtree/debian/files
+rm -rf "$tmpdir" "$kernel_headers_dir" "$libc_headers_dir" "$dbg_dir" "$dtb_dir" $objtree/debian/files
mkdir -m 755 -p "$dtb_dir/DEBIAN"
mkdir -p "$dtb_dir/boot/dtb-$version" "$dtb_dir/usr/share/doc/$dtb_packagename"
mkdir -m 755 -p "$tmpdir/DEBIAN"
mkdir -p "$tmpdir/lib" "$tmpdir/boot"
-mkdir -p "$fwdir/lib/firmware/$version/"
mkdir -p "$kernel_headers_dir/lib/modules/$version/"
# Build and install the kernel
@@ -425,22 +423,6 @@
This is useful for people who need to build external modules
EOF
-# Do we have firmware? Move it out of the way and build it into a package.
-if [ -e "$tmpdir/lib/firmware" ]; then
- mv "$tmpdir/lib/firmware"/* "$fwdir/lib/firmware/$version/"
- rmdir "$tmpdir/lib/firmware"
-
- cat <<EOF >> debian/control
-
-Package: $fwpackagename
-Architecture: all
-Description: Linux kernel firmware, version $version
- This package contains firmware from the Linux kernel, version $version.
-EOF
-
- create_package "$fwpackagename" "$fwdir"
-fi
-
cat <<EOF >> debian/control
Package: $dtb_packagename