diff options
author | Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org> | 2022-05-23 23:40:35 +0200 |
---|---|---|
committer | Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org> | 2022-05-24 00:54:32 +0200 |
commit | 26258c970a5de46a243ffccd74a30ecdaed85b9c (patch) | |
tree | c5520924fb822771235f31a299569794cfd8f69c /libre-testing/uboot4extlinux-sunxi/install-uboot4extlinux.sh.in | |
parent | 88462e5cc21168872df53543d9607335bb4ba625 (diff) | |
download | abslibre-26258c970a5de46a243ffccd74a30ecdaed85b9c.tar.gz abslibre-26258c970a5de46a243ffccd74a30ecdaed85b9c.tar.bz2 abslibre-26258c970a5de46a243ffccd74a30ecdaed85b9c.zip |
move WIP u-boot modifications in libre-testing
I asked bill-auger to push his modifications so he uploaded the
packages to libre-testing and the PKGBUILD modifications to abslibre.
Since the pakcages have been uploaded to libre-testing it's better to
move them here.
While the code is not ready yet, it enables users to test the new
u-boot which fixes the Ethernet PHY. From linux-sunxi we have[1]:
Proper fix for rev. F and newer is to apply trace length
compensation at the PHY.
This is done by default (also for rev. H and newer despite commit
message mentioning only realtek not Micrel) since mainline linux
v5.15 and since mainline u-boot v2022.04;
[1]https://linux-sunxi.org/Olimex_A20-OLinuXino-Lime2#calibrate_at_PHY
That page also has more background on the issue being fixed here
(basically making all the various Lime 2 A20 revisions (which have
different Ethernet PHY) work with the same u-boot binary / package.
Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Diffstat (limited to 'libre-testing/uboot4extlinux-sunxi/install-uboot4extlinux.sh.in')
-rw-r--r-- | libre-testing/uboot4extlinux-sunxi/install-uboot4extlinux.sh.in | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/libre-testing/uboot4extlinux-sunxi/install-uboot4extlinux.sh.in b/libre-testing/uboot4extlinux-sunxi/install-uboot4extlinux.sh.in new file mode 100644 index 000000000..1c744f313 --- /dev/null +++ b/libre-testing/uboot4extlinux-sunxi/install-uboot4extlinux.sh.in @@ -0,0 +1,88 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0+ +# Copyright (C) 2020 Denis 'GNUtoo' Carikli + +progname="install-uboot4extlinux.sh" +u_boot_with_spl="@u_boot_with_spl@" +u_boot_with_spl_offset=@u_boot_with_spl_offset@ + +usage() +{ + echo "Usage: ${progname} [INSTALL_DEVICE]" +} + +install_image() +{ + install_device="$1" + offset="$2" + image="$3" + + # We need root permissions for now: + # - blkid is used to bypass caching and it needs root access + if [ "$(id -u)" != 0 ] ; then + echo "Error: This script needs to be run as root" + exit 1 + fi + + # We only support MBR for now + # It will also catch errors like /dev/sdb1 and mmcbk0p1 as they + # don't have the PTTYPE tag + PTTYPE="$(blkid --probe --match-tag PTTYPE ${install_device} | \ + awk '{print $2}' | sed 's#^PTTYPE="##' | sed 's#"$##')" + if [ -z "${PTTYPE}" ] ; then + echo "Error: Could not find an (MBR) formating inside " \ + "${install_device}" + echo " Possible causes:" + echo " - Maybe {instal_device} is a partition" + echo " - or Maybe it's completelyor unformated" + exit 1 + elif [ "${PTTYPE}" != "dos" ] ; then + echo "Error: ${install_device} is not in MBR format" + echo " Currently, only the MBR format is supported" + exit 1 + fi + + # Check if offset > MBR partition table part end + if [ ${offset} -lt 512 ] ; then + echo "Error: The offset (${offset}) is < 512" + echo " offsets < 512 aren't supported (yet)" + exit 1 + fi + + # Get the image size + image_size="$(du --bytes --apparent-size ${image} | awk '{print $1}')" + + # With MBR, most partitioning tools leave makes the first partition + # start at 1MiB. So we need to check if the bootloader doesn't end + # up overwriting the first partition. + if [ $(expr ${image_size} + ${offset}) -gt $(expr 1024 \* 1024) ] ; then + echo "Error: ${image} is too big:" + echo " offset: ${offset}" + echo " size: ${image_size}" + echo " By default, "\ + "partitioing tools makes the first partition start at 1MiB" + echo " Instaling ${images} "\ + "would overwrite that first partition (if it's present)." + echo " Please contact the Parabola developers " \ + "so they could fix that issue" + exit 1 + fi + + # Copies with with a block size of 1 can be quite slow in practice + if [ "$(expr ${offset} % 512)" = 0 ] ; then + dd conv=notrunc "if=${image}" "of=${install_device}" \ + bs=512 "seek=$(expr ${offset} / 512)" + else + echo "Warning: slow copy" + dd conv=notrunc "if=${image}" "of=${install_device}" \ + bs=1 "seek=${offset}" + fi + + sync "${install_device}" +} + +if [ $# -ne 1 ] ; then + usage +else + install_image "$1" "${u_boot_with_spl_offset}" "${u_boot_with_spl}" +fi |