Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add new TVBox aml-c400-plus: Magicsee C400 Plus #7581

Merged
merged 1 commit into from
Dec 18, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 51 additions & 0 deletions config/boards/aml-c400-plus.tvb
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# Amlogic S912 octa core 3Gb RAM SoC eMMC
BOARD_NAME="Magicsee C400 Plus"
BOARDFAMILY="meson-gxl"
BOARD_MAINTAINER="jomadeto"
BOOTSIZE="512"
BOOTFS_TYPE="fat"
KERNEL_TARGET="current,edge"
MODULES_BLACKLIST="simpledrm" # SimpleDRM conflicts with Panfrost
KERNEL_TEST_TARGET="current"
SERIALCON="ttyAML0"
FULL_DESKTOP="yes"
ASOUND_STATE="asound.state.mesongx"
BOOT_FDT_FILE="amlogic/meson-gxm-c400-plus.dtb"
BOOT_LOGO="desktop"
SRC_EXTLINUX="no"
SRC_CMDLINE='rootflags=data=writeback console=ttyAML0,115200n8 console=tty0'

function post_family_config__uboot_aml-c400-plus() {
# This board type relies on the vendor installed u-boot on emmc to boot
display_alert "$BOARD" "Configuring ($BOARD) non-u-boot" "info"
unset BOOTSOURCE
declare -g BOOTCONFIG='none'
}

function post_family_tweaks_bsp__config_aml-c400-plus_bsp() {
: "${destination:?destination is not set}"

# Important: this board has board-specific bsp-cli files in config/optional/boards/aml-c400-plus/_packages/bsp-cli
# that path is hashed by the bsp-cli hashing function automatically
display_alert "${BOARD}" "Adjusting perms of bsp-cli files for ${BOARD} in /root" "info"
run_host_command_logged chmod -v 744 "${destination}"/root/install-aml.sh
run_host_command_logged chmod -v 644 "${destination}"/root/fstab.template

display_alert "${BOARD}" "Removing armbian-install" "info"
run_host_command_logged rm -v "${destination}"/usr/bin/armbian-install

display_alert "${BOARD}" "Adding bsp-cli preinst logic" "info"
# Inline function! So this function is automatically hashed when this hook is hashed.
function aml-c400-plus-bsp-cli-preinst() {
#update of the board bsp-cli package fails because the filesystem type is
#fat and dpkg tries to create a hard link for the existing files as backup
#so rm the files instead in a preinst step
[ -f /boot/armbianEnv.txt ] && rm /boot/armbianEnv.txt
[ -f /boot/aml_autoscript ] && rm /boot/aml_autoscript
[ -f /boot/emmc_autoscript ] && rm /boot/emmc_autoscript
return 0 # short-circuits above, avoid errors
}
preinst_functions+=('aml-c400-plus-bsp-cli-preinst')
if false; then aml-c400-plus-bsp-cli-preinst; fi # so shellcheck stops complaining the function is unused. sorry

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
extraargs=earlycon rootflags=data=writeback rw no_console_suspend consoleblank=0 fsck.fix=yes fsck.repair=yes net.ifnames=0
bootlogo=false
verbosity=7
console=both
fdtfile=amlogic/meson-gxm-c400-plus.dtb
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#/var/swap none swap sw 0 0
#/dev/root / auto noatime,errors=remount-ro 0 1
#proc /proc proc defaults 0 0

/dev/root / ext4 defaults,noatime,errors=remount-ro 0 1
tmpfs /tmp tmpfs defaults,nosuid 0 0
LABEL=BOOT_EMMC /boot vfat defaults 0 2
Original file line number Diff line number Diff line change
@@ -0,0 +1,198 @@
#!/bin/sh

echo "Start script create MBR and filesystem"

hasdrives=$(lsblk | grep -oE '(mmcblk[0-9])' | sort | uniq)
if [ "$hasdrives" = "" ]
then
echo "UNABLE TO FIND ANY EMMC OR SD DRIVES ON THIS SYSTEM!!! "
exit 1
fi
avail=$(lsblk | grep -oE '(mmcblk[0-9]|sda[0-9])' | sort | uniq)
if [ "$avail" = "" ]
then
echo "UNABLE TO FIND ANY DRIVES ON THIS SYSTEM!!!"
exit 1
fi

#unmount /var/log.hdd so logic below can find the root partition
umount /var/log.hdd

runfrom=$(lsblk | grep /$ | grep -oE '(mmcblk[0-9]|sda[0-9])')
if [ "$runfrom" = "" ]
then
echo " UNABLE TO FIND ROOT OF THE RUNNING SYSTEM!!! "
exit 1
fi
emmc=$(echo $avail | sed "s/$runfrom//" | sed "s/sd[a-z][0-9]//g" | sed "s/ //g")
if [ "$emmc" = "" ]
then
echo " UNABLE TO FIND YOUR EMMC DRIVE OR YOU ALREADY RUN FROM EMMC!!!"
exit 1
fi
if [ "$runfrom" = "$avail" ]
then
echo " YOU ARE RUNNING ALREADY FROM EMMC!!! "
exit 1
fi
if [ $runfrom = $emmc ]
then
echo " YOU ARE RUNNING ALREADY FROM EMMC!!! "
exit 1
fi
if [ "$(echo $emmc | grep mmcblk)" = "" ]
then
echo " YOU DO NOT APPEAR TO HAVE AN EMMC DRIVE!!! "
exit 1
fi

DEV_EMMC="/dev/$emmc"

echo $DEV_EMMC

echo "Start backup u-boot default"

dd if="${DEV_EMMC}" of=/root/u-boot-default-aml.img bs=1M count=4

echo "Start create MBR and partittion"

parted -s "${DEV_EMMC}" mklabel msdos
parted -s "${DEV_EMMC}" mkpart primary fat32 512M 1024M
parted -s "${DEV_EMMC}" mkpart primary ext4 1025M 100%

echo "Start restore u-boot"

dd if=/root/u-boot-default-aml.img of="${DEV_EMMC}" conv=fsync bs=1 count=442
dd if=/root/u-boot-default-aml.img of="${DEV_EMMC}" conv=fsync bs=512 skip=1 seek=1

sync

echo "Done"

echo "Start copy system for eMMC."

mkdir -p /ddbr
chmod 777 /ddbr

PART_BOOT="${DEV_EMMC}p1"
PART_ROOT="${DEV_EMMC}p2"
DIR_INSTALL="/ddbr/install"

if [ -d $DIR_INSTALL ] ; then
rm -rf $DIR_INSTALL
fi
mkdir -p $DIR_INSTALL

if grep -q $PART_BOOT /proc/mounts ; then
echo "Unmounting BOOT partiton."
umount -f $PART_BOOT
fi
echo -n "Formatting BOOT partition..."
mkfs.vfat -n "BOOT_EMMC" $PART_BOOT
echo "done."

mount -o rw $PART_BOOT $DIR_INSTALL

echo -n "Copying BOOT..."
cp -r /boot/* $DIR_INSTALL && sync
echo "done."

echo -n "Edit init config..."
sed -e "s/\(rootdev=UUID\)\([[:graph:]]\)*/rootdev=LABEL=ROOT_EMMC/gi" \
-i "$DIR_INSTALL/armbianEnv.txt"
echo "done."

rm $DIR_INSTALL/s9*
rm $DIR_INSTALL/aml*

if [ -f /boot/u-boot.ext ] ; then
mv -f $DIR_INSTALL/u-boot.ext $DIR_INSTALL/u-boot.emmc

sed -e "s/u-boot.ext/u-boot.emmc/g" \
-i "$DIR_INSTALL/boot.ini"
echo "done."

sync
fi

umount $DIR_INSTALL

if grep -q $PART_ROOT /proc/mounts ; then
echo "Unmounting ROOT partiton."
umount -f $PART_ROOT
fi

echo "Formatting ROOT partition..."
mke2fs -F -q -t ext4 -L ROOT_EMMC -m 0 $PART_ROOT
e2fsck -n $PART_ROOT
echo "done."

echo "Copying ROOTFS."

mount -o rw $PART_ROOT $DIR_INSTALL

cd /
echo "Copy BIN"
tar -cf - bin | (cd $DIR_INSTALL; tar -xpf -)
#echo "Copy BOOT"
#mkdir -p $DIR_INSTALL/boot
#tar -cf - boot | (cd $DIR_INSTALL; tar -xpf -)
echo "Create DEV"
mkdir -p $DIR_INSTALL/dev
#tar -cf - dev | (cd $DIR_INSTALL; tar -xpf -)
echo "Copy ETC"
tar -cf - etc | (cd $DIR_INSTALL; tar -xpf -)
echo "Copy HOME"
tar -cf - home | (cd $DIR_INSTALL; tar -xpf -)
echo "Copy LIB"
tar -cf - lib | (cd $DIR_INSTALL; tar -xpf -)
echo "Copy LIB64"
tar -cf - lib64 | (cd $DIR_INSTALL; tar -xpf -)
echo "Create MEDIA"
mkdir -p $DIR_INSTALL/media
#tar -cf - media | (cd $DIR_INSTALL; tar -xpf -)
echo "Create MNT"
mkdir -p $DIR_INSTALL/mnt
#tar -cf - mnt | (cd $DIR_INSTALL; tar -xpf -)
echo "Copy OPT"
tar -cf - opt | (cd $DIR_INSTALL; tar -xpf -)
echo "Create PROC"
mkdir -p $DIR_INSTALL/proc
echo "Copy ROOT"
tar -cf - root | (cd $DIR_INSTALL; tar -xpf -)
echo "Create RUN"
mkdir -p $DIR_INSTALL/run
echo "Copy SBIN"
tar -cf - sbin | (cd $DIR_INSTALL; tar -xpf -)
echo "Copy SELINUX"
tar -cf - selinux | (cd $DIR_INSTALL; tar -xpf -)
echo "Copy SRV"
tar -cf - srv | (cd $DIR_INSTALL; tar -xpf -)
echo "Create SYS"
mkdir -p $DIR_INSTALL/sys
echo "Create TMP"
mkdir -p $DIR_INSTALL/tmp
echo "Copy USR"
tar -cf - usr | (cd $DIR_INSTALL; tar -xpf -)
echo "Copy VAR"
tar -cf - var | (cd $DIR_INSTALL; tar -xpf -)
sync

echo "Copy fstab"

rm $DIR_INSTALL/etc/fstab
cp -a /root/fstab.template $DIR_INSTALL/etc/fstab

rm $DIR_INSTALL/root/install*.sh
rm $DIR_INSTALL/root/fstab.template
rm $DIR_INSTALL/usr/bin/ddbr


cd /
sync

umount $DIR_INSTALL

echo "*******************************************"
echo "Complete copy OS to eMMC "
echo "*******************************************"
2 changes: 1 addition & 1 deletion config/sources/families/include/meson64_common.inc
Original file line number Diff line number Diff line change
Expand Up @@ -268,7 +268,7 @@ family_tweaks_bsp() {

mkdir -p "$destination"/etc/X11/xorg.conf.d
case "${BOARD}" in
"odroidc2" | "nanopik2-s905" | "lepotato" | "lafrite" | "khadas-vim1" | "khadas-vim2" | "aml-s9xx-box")
"odroidc2" | "nanopik2-s905" | "lepotato" | "lafrite" | "khadas-vim1" | "khadas-vim2" | "aml-c400-plus" | "aml-s9xx-box")
cat <<- EOF > "$destination"/etc/X11/xorg.conf.d/02-driver.conf
Section "OutputClass"
Identifier "Amlogic"
Expand Down
4 changes: 4 additions & 0 deletions config/sources/families/meson-gxl.conf
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,10 @@ uboot_custom_postprocess() {
uboot_gxl_postprocess $SRC/cache/sources/odroidc2-blobs/ gxl
fi

if [[ $BOARD == aml-c400-plus ]]; then
uboot_gxl_postprocess $SRC/cache/sources/odroidc2-blobs/ gxl
fi

if [[ $BOARD == aml-s9xx-box ]]; then
uboot_gxl_postprocess $SRC/cache/sources/odroidc2-blobs/ gxl
fi
Expand Down
Loading