mirror of
https://codeberg.org/libreboot/lbmk.git
synced 2026-03-25 21:39:03 +02:00
Compare commits
18 Commits
a88hm_test
...
c20230710
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e1df640578 | ||
|
|
9202ffa85a | ||
|
|
b5afcdaa04 | ||
|
|
fb30ec87ed | ||
|
|
d3d0288bd0 | ||
|
|
f6a3190a4e | ||
|
|
3f8a243d84 | ||
|
|
cb4a1ec4d1 | ||
|
|
1ab8514882 | ||
|
|
b55cc19f41 | ||
|
|
b7d22a9c36 | ||
|
|
41757a3b25 | ||
|
|
77d9d94997 | ||
|
|
947eb446f9 | ||
|
|
0f09c0d72b | ||
|
|
2bbb4c839a | ||
|
|
6bc619db90 | ||
|
|
cc30a1c6fa |
82
.gitcheck
Executable file
82
.gitcheck
Executable file
@@ -0,0 +1,82 @@
|
||||
#!/usr/bin/env sh
|
||||
# SPDX-FileCopyrightText: 2022 Caleb La Grange <thonkpeasant@protonmail.com>
|
||||
# SPDX-FileCopyrightText: 2023 Leah Rowe <leah@libreboot.org>
|
||||
# SPDX-License-Identifier: GPL-3.0-only
|
||||
|
||||
git_name="lbmkplaceholder"
|
||||
git_email="placeholder@lbmkplaceholder.com"
|
||||
|
||||
main()
|
||||
{
|
||||
if [ $# -gt 0 ]; then
|
||||
if [ "${1}" = "clean" ]; then
|
||||
clean > /dev/null 2> /dev/null
|
||||
else
|
||||
printf "%s: Unsupported argument\n" $0
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
set_placeholders > /dev/null 2> /dev/null
|
||||
fi
|
||||
}
|
||||
|
||||
set_placeholders()
|
||||
{
|
||||
set_git_credentials
|
||||
|
||||
# Check coreboot as well to prevent errors during building
|
||||
if [ ! -d coreboot ]; then
|
||||
return
|
||||
fi
|
||||
for x in coreboot/*; do
|
||||
if [ ! -d "${x}" ]; then
|
||||
continue
|
||||
fi
|
||||
(
|
||||
cd "${x}"
|
||||
set_git_credentials
|
||||
)
|
||||
done
|
||||
}
|
||||
|
||||
set_git_credentials()
|
||||
{
|
||||
# Check if username and or email is set.
|
||||
if ! git config user.name || git config user.email ; then
|
||||
git config user.name \
|
||||
|| git config user.name "${git_name}"
|
||||
git config user.email \
|
||||
|| git config user.email "${git_email}"
|
||||
fi
|
||||
}
|
||||
|
||||
clean()
|
||||
{
|
||||
unset_placeholders
|
||||
|
||||
if [ ! -d coreboot ]; then
|
||||
return
|
||||
fi
|
||||
for x in coreboot/*; do
|
||||
if [ ! -d "${x}" ]; then
|
||||
continue
|
||||
fi
|
||||
(
|
||||
cd "${x}"
|
||||
unset_placeholders
|
||||
)
|
||||
done
|
||||
}
|
||||
|
||||
unset_placeholders()
|
||||
{
|
||||
if [ "$(git config user.name)" = "${git_name}" ]; then
|
||||
git config --unset user.name
|
||||
fi
|
||||
|
||||
if [ "$(git config user.email)" = "${git_email}" ]; then
|
||||
git config --unset user.email
|
||||
fi
|
||||
}
|
||||
|
||||
main $@
|
||||
31
.gitignore
vendored
31
.gitignore
vendored
@@ -1,14 +1,19 @@
|
||||
*~
|
||||
*.o
|
||||
/lbmk.err.log
|
||||
/docs/
|
||||
/cbutils/
|
||||
/pciroms/
|
||||
/util/dell-flash-unlock/dell_flash_unlock
|
||||
/util/e6400-flash-unlock/e6400_flash_unlock
|
||||
/util/ich9utils/*.bin
|
||||
/util/ich9utils/demefactory
|
||||
/util/ich9utils/ich9deblob
|
||||
/util/ich9utils/ich9show
|
||||
/util/ich9utils/ich9gen
|
||||
/TODO
|
||||
/ec/
|
||||
/bios_extract/
|
||||
/tmp/
|
||||
/elf/
|
||||
/payload/
|
||||
/me_cleaner/
|
||||
*.s[a-w]?
|
||||
*.vim
|
||||
/*.elf
|
||||
@@ -16,16 +21,22 @@
|
||||
/*.rom
|
||||
/build_error
|
||||
/TODO/
|
||||
/config/*/*/seen
|
||||
/docs/version
|
||||
/bucts/
|
||||
/coreboot/
|
||||
/crossgcc/
|
||||
/depthcharge/
|
||||
/flashrom/
|
||||
/resources/coreboot/*/seen
|
||||
/grub/
|
||||
/memtest86plus/
|
||||
/seabios/
|
||||
/u-boot/
|
||||
/bin/
|
||||
/release/
|
||||
/descriptors/
|
||||
/*.bin
|
||||
/push
|
||||
/version
|
||||
/versiondate
|
||||
/vendorfiles/
|
||||
*me.bin
|
||||
*sch5545ec.bin
|
||||
/mrc/
|
||||
/util/nvmutil/nvm
|
||||
/src/
|
||||
|
||||
86
Makefile
Normal file
86
Makefile
Normal file
@@ -0,0 +1,86 @@
|
||||
#
|
||||
# Makefile for meme purposes
|
||||
# You can use this, but it just runs lbmk commands.
|
||||
#
|
||||
# See docs/maintain/ and docs/git/ for information about the build system:
|
||||
# https://libreboot.org/docs/maintain/
|
||||
# https://libreboot.org/docs/build/
|
||||
#
|
||||
# Copyright (C) 2020, 2021, 2023 Leah Rowe <info@minifree.org>
|
||||
# Copyright (C) 2022 Ferass El Hafidi <vitali64pmemail@protonmail.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
.POSIX:
|
||||
|
||||
#.PHONY: all check download modules ich9m-descriptors payloads roms release \
|
||||
# clean crossgcc-clean install-dependencies-ubuntu \
|
||||
# install-dependencies-debian install-dependencies-arch \
|
||||
# install-dependencies-void install-dependencies-fedora38 \
|
||||
# install-dependencies-parabola
|
||||
|
||||
all: roms
|
||||
|
||||
download:
|
||||
./download all
|
||||
|
||||
modules:
|
||||
./build module all
|
||||
|
||||
ich9m-descriptors:
|
||||
./build descriptors ich9m
|
||||
|
||||
payloads:
|
||||
./build payload all
|
||||
|
||||
roms:
|
||||
./build boot roms all
|
||||
|
||||
release:
|
||||
./build release src
|
||||
./build release roms
|
||||
|
||||
clean:
|
||||
./build clean cbutils
|
||||
./build clean flashrom
|
||||
./build clean ich9utils
|
||||
./build clean payloads
|
||||
./build clean seabios
|
||||
./build clean grub
|
||||
./build clean memtest86plus
|
||||
./build clean rom_images
|
||||
./build clean u-boot
|
||||
./build clean bios_extract
|
||||
|
||||
crossgcc-clean:
|
||||
./build clean crossgcc
|
||||
|
||||
install-dependencies-ubuntu:
|
||||
./build dependencies ubuntu2004
|
||||
|
||||
install-dependencies-debian:
|
||||
./build dependencies debian
|
||||
|
||||
install-dependencies-arch:
|
||||
./build dependencies arch
|
||||
|
||||
install-dependencies-void:
|
||||
./build dependencies void
|
||||
|
||||
install-dependencies-fedora38:
|
||||
./build dependencies fedora38
|
||||
|
||||
install-dependencies-parabola:
|
||||
./build dependencies parabola
|
||||
@@ -28,7 +28,7 @@ Your freedom matters.
|
||||
Many people use proprietary (non-libre)
|
||||
boot firmware, even if they use [a libre OS](https://www.openbsd.org/).
|
||||
Proprietary firmware often contains backdoors (more info on the FAQ), and it
|
||||
and can be buggy. The libreboot project was founded in December 2013,
|
||||
and can be buggy. The libreboot project was founded in in December 2013,
|
||||
with the express purpose of making coreboot firmware accessible for
|
||||
non-technical users.
|
||||
|
||||
@@ -111,7 +111,7 @@ written in Markdown and hosted in a [separate
|
||||
repository](https://codeberg.org/libreboot/lbwww) where you can send patches.
|
||||
|
||||
Any and all development discussion and user support are all done on the IRC
|
||||
channel. More information is on https://libreboot.org/contact.html.
|
||||
channel. More information is on the contact page of libreboot.org.
|
||||
|
||||
LICENSE FOR THIS README
|
||||
=======================
|
||||
|
||||
165
build
165
build
@@ -1,165 +0,0 @@
|
||||
#!/usr/bin/env sh
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# SPDX-FileCopyrightText: 2014,2015,2020,2021,2023 Leah Rowe <leah@libreboot.org>
|
||||
# SPDX-FileCopyrightText: 2015 Patrick "P. J." McDermott <pj@pehjota.net>
|
||||
# SPDX-FileCopyrightText: 2015, 2016 Klemens Nanni <contact@autoboot.org>
|
||||
# SPDX-FileCopyrightText: 2022, Caleb La Grange <thonkpeasant@protonmail.com>
|
||||
|
||||
[ "x${DEBUG+set}" = 'xset' ] && set -v
|
||||
set -u -e
|
||||
|
||||
export LC_COLLATE=C
|
||||
export LC_ALL=C
|
||||
|
||||
. "include/err.sh"
|
||||
. "include/option.sh"
|
||||
|
||||
eval "$(setvars "" option aur_notice tmpdir)"
|
||||
|
||||
tmpdir_was_set="y"
|
||||
set | grep TMPDIR 1>/dev/null 2>/dev/null || tmpdir_was_set="n"
|
||||
if [ "${tmpdir_was_set}" = "y" ]; then
|
||||
tmpdir="${TMPDIR##*/}"
|
||||
tmpdir="${TMPDIR%_*}"
|
||||
if [ "${tmpdir}" = "lbmk" ]; then
|
||||
tmpdir=""
|
||||
tmpdir_was_set="n"
|
||||
fi
|
||||
fi
|
||||
if [ "${tmpdir_was_set}" = "n" ]; then
|
||||
export TMPDIR="/tmp"
|
||||
tmpdir="$(mktemp -d -t lbmk_XXXXXXXX)"
|
||||
export TMPDIR="${tmpdir}"
|
||||
else
|
||||
export TMPDIR="${TMPDIR}"
|
||||
fi
|
||||
tmpdir="${TMPDIR}"
|
||||
|
||||
linkpath="${0}"
|
||||
linkname="${linkpath##*/}"
|
||||
buildpath="./script/${linkname}"
|
||||
|
||||
main()
|
||||
{
|
||||
xx_ id -u 1>/dev/null 2>/dev/null
|
||||
[ $# -lt 1 ] && fail "Too few arguments. Try: ${0} help"
|
||||
if [ "${1}" = "dependencies" ]; then
|
||||
xx_ install_packages $@
|
||||
lbmk_exit 0
|
||||
fi
|
||||
|
||||
initialise_command $@ && shift 1
|
||||
|
||||
check_git
|
||||
check_project "fail"
|
||||
git_init
|
||||
|
||||
execute_command $@
|
||||
lbmk_exit 0
|
||||
}
|
||||
|
||||
initialise_command()
|
||||
{
|
||||
[ "$(id -u)" != "0" ] || fail "this command as root is not permitted"
|
||||
|
||||
check_project
|
||||
|
||||
case "${1}" in
|
||||
help)
|
||||
usage ${0}
|
||||
lbmk_exit 0 ;;
|
||||
list)
|
||||
items "${buildpath}"
|
||||
lbmk_exit 0 ;;
|
||||
version)
|
||||
mkversion
|
||||
lbmk_exit 0 ;;
|
||||
esac
|
||||
option="${1}"
|
||||
}
|
||||
|
||||
install_packages()
|
||||
{
|
||||
if [ $# -lt 2 ]; then
|
||||
printf "You must specify a distro, namely:\n" 1>&2
|
||||
printf "Look at files under config/dependencies/\n" 1>&2
|
||||
printf "Example: ./build dependencies debian\n" 1>&2
|
||||
fail "install_packages: target not specified"
|
||||
fi
|
||||
|
||||
[ -f "config/dependencies/${2}" ] || fail "Unsupported target"
|
||||
|
||||
. "config/dependencies/${2}"
|
||||
|
||||
xx_ ${pkg_add} ${pkglist}
|
||||
[ -z "${aur_notice}" ] && return 0
|
||||
printf "You must install AUR packages: %s\n" "${aur_notice}" 1>&2
|
||||
}
|
||||
|
||||
# release archives contain .gitignore, but not .git.
|
||||
# lbmk can be run from lbmk.git, or an archive.
|
||||
git_init()
|
||||
{
|
||||
[ -L ".git" ] && fail "Reference .git is a symlink"
|
||||
[ -e ".git" ] && return 0
|
||||
eval "$(setvars "$(date -Rd @${versiondate})" cdate _nogit)"
|
||||
|
||||
git init || fail "${PWD}: cannot initialise Git repository"
|
||||
git add -A . || fail "${PWD}: cannot add files to Git repository"
|
||||
git commit -m "${projectname} ${version}" --date "${cdate}" \
|
||||
--author="lbmk <lbmk@libreboot.org>" || \
|
||||
fail "${PWD}: can't commit ${projectname}/${version}, date ${cdate}"
|
||||
git tag -a "${version}" -m "${projectname} ${version}" || \
|
||||
fail "${PWD}: cannot git-tag ${projectname}/${version}"
|
||||
}
|
||||
|
||||
execute_command()
|
||||
{
|
||||
lbmkcmd="${buildpath}/${option}"
|
||||
[ -f "${lbmkcmd}" ] || fail "Invalid command. Run: ${linkpath} help"
|
||||
"${lbmkcmd}" $@ || fail "execute_command: ${lbmkcmd} ${@}"
|
||||
}
|
||||
|
||||
usage()
|
||||
{
|
||||
progname=${0}
|
||||
cat <<- EOF
|
||||
$(mkversion)
|
||||
|
||||
USAGE: ${progname} <OPTION>
|
||||
|
||||
possible values for 'OPTION':
|
||||
$(items "${buildpath}")
|
||||
|
||||
To know what ${projectname} version you're on, type:
|
||||
${progname} version
|
||||
|
||||
Refer to ${projectname} documentation for more info.
|
||||
EOF
|
||||
}
|
||||
|
||||
mkversion()
|
||||
{
|
||||
printf "revision: %s %s\n" "${projectname}" "${version}"
|
||||
printf "revision date: %s\n" "$(date -Rud @${versiondate})"
|
||||
}
|
||||
|
||||
lbmk_exit()
|
||||
{
|
||||
tmp_cleanup || err "lbmk_exit: can't rm tmpdir upon exit $1: ${tmpdir}"
|
||||
exit $1
|
||||
}
|
||||
|
||||
fail()
|
||||
{
|
||||
tmp_cleanup || printf "WARNING: can't rm tmpdir: %s\n" "${tmpdir}" 1>&2
|
||||
err "${1}"
|
||||
}
|
||||
|
||||
tmp_cleanup()
|
||||
{
|
||||
[ "${tmpdir_was_set}" = "n" ] || return 0
|
||||
rm -Rf "${tmpdir}" || return 1
|
||||
}
|
||||
|
||||
main $@
|
||||
@@ -1,8 +0,0 @@
|
||||
tree="default"
|
||||
romtype="normal"
|
||||
arch="x86_64"
|
||||
payload_seabios="y"
|
||||
payload_seabios_withgrub="y"
|
||||
payload_seabios_grubonly="y"
|
||||
payload_memtest="y"
|
||||
grub_scan_disk="ahci"
|
||||
@@ -1 +0,0 @@
|
||||
build/coreboot.rom
|
||||
@@ -1,4 +0,0 @@
|
||||
tree="default"
|
||||
romtype="normal"
|
||||
rev="54d0cc9a3cf31963ebf0ca85a87a7e464ef678a7" # 4.18_branch
|
||||
arch="x86_64"
|
||||
@@ -1,11 +0,0 @@
|
||||
pkg_add="pacman -S --needed --noconfirm"
|
||||
pkglist=" \
|
||||
acpica arm-none-eabi-binutils arm-none-eabi-gcc arm-none-eabi-newlib \
|
||||
autogen base-devel bison cmake curl device-mapper doxygen \
|
||||
dtc e2fsprogs flex freetype2 fuse2 gawk gcc-ada gdb gettext git \
|
||||
help2man innoextract libftdi libpciaccess libusb nasm ncurses openssl p7zip \
|
||||
parted pciutils perl perl-libwww python python-setuptools rsync sharutils \
|
||||
subversion swig texinfo ttf-dejavu unarchiver unzip wget xz zlib \
|
||||
"
|
||||
|
||||
aur_notice="bdf-unifont unifont"
|
||||
@@ -1,15 +0,0 @@
|
||||
pkg_add="apt-get -y install"
|
||||
pkglist=" \
|
||||
acpica-tools autoconf autogen automake autopoint autotools-dev bc \
|
||||
binutils-arm-none-eabi bison build-essential cmake curl device-tree-compiler \
|
||||
doxygen e2fsprogs efitools flex fonts-unifont gawk gcc-arm-linux-gnueabi \
|
||||
gcc-arm-none-eabi gdb gettext git gnat help2man innoextract libdevmapper-dev \
|
||||
libfdt-dev libfont-freetype-perl libfreetype6-dev libftdi-dev libfuse-dev \
|
||||
libgnutls28-dev liblz4-tool liblzma-dev libncurses5-dev libncurses-dev \
|
||||
libnewlib-arm-none-eabi libopts25 libopts25-dev libpci-dev libpython3-dev \
|
||||
libsdl2-dev libselinux1-dev libssl-dev libtool libusb-1.0 libusb-1.0-0-dev \
|
||||
libusb-dev lz4 lzma lzma-alone m4 nasm openssl p7zip p7zip-full parted pciutils \
|
||||
perl pkg-config python3 python3-distutils python3-pkg-resources python3-pycryptodome \
|
||||
python3-pyelftools python3-setuptools python-is-python3 sharutils swig unar \
|
||||
unifont unzip uuid-dev wget zlib1g-dev \
|
||||
"
|
||||
@@ -1,12 +0,0 @@
|
||||
pkg_add="dnf -y install"
|
||||
pkglist=" \
|
||||
acpica-tools arm-none-eabi-binutils arm-none-eabi-gcc \
|
||||
arm-none-eabi-gcc arm-none-eabi-newlib autogen bison bzip2 cmake curl \
|
||||
dejavu-fonts-all device-mapper doxygen e2fsprogs flex freetype-devel fuse \
|
||||
gawk gcc gcc-gnat gdb gettext gettext-devel git gprbuild help2man \
|
||||
innoextract intltool libftdi-devel libselinux-devel libusb1 libusb1-devel \
|
||||
nasm ncurses-devel openssl-devel p7zip p7zip-plugins pandoc parted \
|
||||
pciutils-devel perl perl-libwww-perl python-unversioned-command python3 \
|
||||
python3-setuptools rsync sharutils subversion texinfo unar unifont \
|
||||
unifont-fonts unifont-ttf-fonts unzip wget xz zlib-devel \
|
||||
"
|
||||
@@ -1 +0,0 @@
|
||||
debian
|
||||
@@ -1,10 +0,0 @@
|
||||
pkg_add="pacman -S --needed --noconfirm"
|
||||
pkglist=" \
|
||||
acpica arm-none-eabi-binutils arm-none-eabi-gcc arm-none-eabi-newlib \
|
||||
autogen base-devel bdf-unifont bison cmake curl device-mapper doxygen \
|
||||
dtc e2fsprogs flex freetype2 fuse2 gawk gcc-ada gdb gettext git \
|
||||
help2man innoextract libftdi libpciaccess libusb nasm ncurses openssl p7zip \
|
||||
parted pciutils perl perl-libwww python python-setuptools rsync sharutils \
|
||||
subversion swig texinfo ttf-dejavu unarchiver unifont-utils unzip wget xz \
|
||||
zlib \
|
||||
"
|
||||
@@ -1 +0,0 @@
|
||||
debian
|
||||
@@ -1 +0,0 @@
|
||||
ubuntu2004
|
||||
@@ -1 +0,0 @@
|
||||
debian
|
||||
@@ -1,14 +0,0 @@
|
||||
pkg_add="apt-get -y install"
|
||||
pkglist=" \
|
||||
autoconf autogen automake autopoint autotools-dev bc binutils-arm-none-eabi \
|
||||
bison build-essential cmake curl device-tree-compiler doxygen e2fsprogs efitools \
|
||||
flex gawk gcc-arm-linux-gnueabi gcc-arm-none-eabi gdb gettext git gnat help2man \
|
||||
innoextract libdevmapper-dev libfdt-dev libfont-freetype-perl libfreetype6-dev \
|
||||
libftdi-dev libfuse-dev libgnutls28-dev liblz4-tool liblzma-dev libncurses5-dev \
|
||||
libncurses-dev libnewlib-arm-none-eabi libopts25 libopts25-dev libpci-dev \
|
||||
libpython3-dev libsdl2-dev libselinux1-dev libssl-dev libtool libusb-1.0-0 \
|
||||
libusb-1.0-0-dev lz4 lzma lzma-alone m4 nasm openssl p7zip p7zip-full parted \
|
||||
pciutils perl pkg-config python3 python3-distutils python3-pkg-resources \
|
||||
python3-pycryptodome python3-pyelftools python3-setuptools python-is-python3 \
|
||||
sharutils swig ttf-unifont unar unifont unzip uuid-dev wget zlib1g-dev \
|
||||
"
|
||||
@@ -1,11 +0,0 @@
|
||||
pkg_add="xbps-install -y"
|
||||
pkglist=" \
|
||||
acpica-utils autogen base-devel bison cmake \
|
||||
cross-arm-none-eabi-binutils cross-arm-none-eabi-gcc \
|
||||
cross-arm-none-eabi-libstdc++ cross-arm-none-eabi-newlib curl \
|
||||
dejavu-fonts-ttf device-mapper doxygen e2fsprogs flexflex font-unifont-bdf \
|
||||
freetype fuse gawk gcc-ada gdb gettext gettext-devel git help2man \
|
||||
innoextract libftdi1 libpciaccess libusb nasm ncurses ncurses-devel openssl
|
||||
p7zip parted pciutils perl perl-LWP python python3 python3-setuptools rsync \
|
||||
sharutils subversion texinfo unar unzip wget xz zlib \
|
||||
"
|
||||
@@ -1,6 +0,0 @@
|
||||
{bios_extract}{
|
||||
rev: 0a7bc1d71735ef97b00dfec0fd54a02fcc5d1bb0
|
||||
loc: bios_extract
|
||||
url: https://review.coreboot.org/bios_extract
|
||||
bkup_url: https://github.com/coreboot/bios_extract/
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
{biosutilities}{
|
||||
rev: 03ae0cf0706ede5a2a15da0986c19c776d0e6b26
|
||||
loc: biosutilities
|
||||
url: https://codeberg.org/libreboot/BIOSUtilities
|
||||
bkup_url: https://github.com/platomav/BIOSUtilities
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
{coreboot}{
|
||||
rev: HEAD
|
||||
loc: coreboot/coreboot
|
||||
url: https://review.coreboot.org/coreboot
|
||||
bkup_url: https://github.com/coreboot/coreboot.git
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
{docs}{
|
||||
rev: 06ac864b9a738b5daec3736ddb0fb2f94f127ee0
|
||||
loc: docs
|
||||
url: https://codeberg.org/vimuser/untitled
|
||||
bkup_url: https://notabug.org/untitled/untitled
|
||||
depend: mdfiles
|
||||
depend: untitledwww
|
||||
}
|
||||
|
||||
{mdfiles}{
|
||||
rev: 6ebb88528e342cae48ee75a6f1bfa1b71002e1c3
|
||||
loc: docs/www/html
|
||||
url: https://codeberg.org/libreboot/lbwww
|
||||
bkup_url: https://git.disroot.org/libreboot/lbwww
|
||||
depend: imgfiles
|
||||
}
|
||||
|
||||
{imgfiles}{
|
||||
rev: 918c0ba07cf45f07836fa8c312fc51b48db32e0a
|
||||
loc: docs/www/html/site/img
|
||||
url: https://codeberg.org/libreboot/lbwww-img
|
||||
bkup_url: https://git.disroot.org/libreboot/lbwww-img
|
||||
}
|
||||
|
||||
{untitledwww}{
|
||||
rev: 78cdadea40143a7e55b8eae48f4239d31ebb5c16
|
||||
loc: docs/www/untitled
|
||||
url: https://codeberg.org/vimuser/untitled-website
|
||||
bkup_url: https://notabug.org/untitled/untitled-website
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
{flashrom}{
|
||||
rev: fba29da188b4a3aa8a3cf6f5a3d13c37a5d9e1d7
|
||||
loc: flashrom
|
||||
url: https://review.coreboot.org/flashrom.git
|
||||
bkup_url: https://github.com/flashrom/flashrom
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
{grub}{
|
||||
rev: 64e3cee72ab8f5876abfebb263b5e6cf7c4a9a4e
|
||||
loc: grub
|
||||
url: git://git.savannah.gnu.org/grub.git
|
||||
bkup_url: https://codeberg.org/libreboot/grub
|
||||
depend: gnulib
|
||||
}
|
||||
|
||||
{gnulib}{
|
||||
rev: 9f48fb992a3d7e96610c4ce8be969cff2d61a01b
|
||||
loc: grub/gnulib
|
||||
url: git://git.sv.gnu.org/gnulib
|
||||
bkup_url: https://codeberg.org/libreboot/gnulib
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
{memtest86plus}{
|
||||
rev: 5dcd424ea7afb857c1171e747ef064d98d26afeb
|
||||
loc: memtest86plus
|
||||
url: https://codeberg.org/libreboot/memtest86plus
|
||||
bkup_url: https://github.com/memtest86plus/memtest86plus.git
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
{pico-sdk}{
|
||||
rev: 6a7db34ff63345a7badec79ebea3aaef1712f374
|
||||
loc: pico-sdk
|
||||
url: https://codeberg.org/libreboot/pico-sdk
|
||||
bkup_url: https://github.com/raspberrypi/pico-sdk
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
{pico-serprog}{
|
||||
rev: c8c16e9c11fe9e5b7230ff358f79de3f1951e1d9
|
||||
loc: pico-serprog
|
||||
url: https://codeberg.org/libreboot/pico-serprog
|
||||
bkup_url: https://git.disroot.org/libreboot/pico-serprog
|
||||
depend: pico-sdk
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
{seabios}{
|
||||
rev: HEAD
|
||||
loc: seabios/seabios
|
||||
url: https://review.coreboot.org/seabios
|
||||
bkup_url: https://github.com/coreboot/seabios
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
{stm32-vserprog}{
|
||||
rev: 8fcf0a4d41800631b571fa7bbd1d8b251f0a2111
|
||||
loc: stm32-vserprog
|
||||
url: https://codeberg.org/libreboot/stm32-vserprog
|
||||
bkup_url: https://git.disroot.org/libreboot/stm32-vserprog
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
{u-boot}{
|
||||
rev: HEAD
|
||||
loc: u-boot/u-boot
|
||||
url: https://source.denx.de/u-boot/u-boot.git
|
||||
bkup_url: https://github.com/u-boot/u-boot.git
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
{uefitool}{
|
||||
rev: 4a41c33596e9bc3ae812e763965d91ac57553e02
|
||||
loc: uefitool
|
||||
url: https://codeberg.org/libreboot/UEFITool
|
||||
bkup_url: https://github.com/LongSoft/UEFITool
|
||||
}
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 4.8 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 3.4 KiB |
@@ -1,2 +0,0 @@
|
||||
Copyright (C) 2014, 2015, 2016, 2020, 2021, 2023 Leah Rowe <leah@libreboot.org>
|
||||
Copyright (C) 2015 Klemens Nanni <contact@autoboot.org>
|
||||
@@ -1,7 +0,0 @@
|
||||
set prefix=(memdisk)/boot/grub
|
||||
|
||||
if [ -f (cbfsdisk)/grub.cfg ]; then
|
||||
source (cbfsdisk)/grub.cfg
|
||||
else
|
||||
source (memdisk)/boot/grub/grub_default.cfg
|
||||
fi
|
||||
@@ -1,42 +0,0 @@
|
||||
From de6e7cc62522ce1be21bd2f06e7c15cd234b5426 Mon Sep 17 00:00:00 2001
|
||||
From: Ax333l <main@axelen.xyz>
|
||||
Date: Thu, 17 Aug 2023 00:00:00 +0000
|
||||
Subject: [PATCH 1/6] Add CC0 license
|
||||
|
||||
Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch>
|
||||
---
|
||||
grub-core/kern/dl.c | 3 ++-
|
||||
util/grub-module-verifierXX.c | 3 ++-
|
||||
2 files changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/grub-core/kern/dl.c b/grub-core/kern/dl.c
|
||||
index 0bf40caa6..4011e2d15 100644
|
||||
--- a/grub-core/kern/dl.c
|
||||
+++ b/grub-core/kern/dl.c
|
||||
@@ -470,7 +470,8 @@ grub_dl_check_license (grub_dl_t mod, Elf_Ehdr *e)
|
||||
|
||||
if (grub_strcmp ((char *) e + s->sh_offset, "LICENSE=GPLv3") == 0
|
||||
|| grub_strcmp ((char *) e + s->sh_offset, "LICENSE=GPLv3+") == 0
|
||||
- || grub_strcmp ((char *) e + s->sh_offset, "LICENSE=GPLv2+") == 0)
|
||||
+ || grub_strcmp ((char *) e + s->sh_offset, "LICENSE=GPLv2+") == 0
|
||||
+ || grub_strcmp ((char *) e + s->sh_offset, "LICENSE=CC0") == 0)
|
||||
return GRUB_ERR_NONE;
|
||||
|
||||
return grub_error (GRUB_ERR_BAD_MODULE,
|
||||
diff --git a/util/grub-module-verifierXX.c b/util/grub-module-verifierXX.c
|
||||
index a42c20bd1..7157a30aa 100644
|
||||
--- a/util/grub-module-verifierXX.c
|
||||
+++ b/util/grub-module-verifierXX.c
|
||||
@@ -236,7 +236,8 @@ check_license (const char * const filename,
|
||||
Elf_Shdr *s = find_section (arch, e, ".module_license", module_size);
|
||||
if (s && (strcmp ((char *) e + grub_target_to_host(s->sh_offset), "LICENSE=GPLv3") == 0
|
||||
|| strcmp ((char *) e + grub_target_to_host(s->sh_offset), "LICENSE=GPLv3+") == 0
|
||||
- || strcmp ((char *) e + grub_target_to_host(s->sh_offset), "LICENSE=GPLv2+") == 0))
|
||||
+ || strcmp ((char *) e + grub_target_to_host(s->sh_offset), "LICENSE=GPLv2+") == 0
|
||||
+ || strcmp ((char *) e + grub_target_to_host(s->sh_offset), "LICENSE=CC0") == 0))
|
||||
return;
|
||||
grub_util_error ("%s: incompatible license", filename);
|
||||
}
|
||||
--
|
||||
2.39.2
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
From 9edaaffac91d593a439e44bac3b6f5558f5a8245 Mon Sep 17 00:00:00 2001
|
||||
From: Ax333l <main@axelen.xyz>
|
||||
Date: Thu, 17 Aug 2023 00:00:00 +0000
|
||||
Subject: [PATCH 2/6] Define GRUB_UINT32_MAX
|
||||
|
||||
Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch>
|
||||
---
|
||||
include/grub/types.h | 8 ++++++++
|
||||
1 file changed, 8 insertions(+)
|
||||
|
||||
diff --git a/include/grub/types.h b/include/grub/types.h
|
||||
index 0d96006fe..a13f3a60b 100644
|
||||
--- a/include/grub/types.h
|
||||
+++ b/include/grub/types.h
|
||||
@@ -156,6 +156,7 @@ typedef grub_int32_t grub_ssize_t;
|
||||
#define GRUB_SHRT_MAX 0x7fff
|
||||
#define GRUB_SHRT_MIN (-GRUB_SHRT_MAX - 1)
|
||||
#define GRUB_UINT_MAX 4294967295U
|
||||
+#define GRUB_UINT32_MAX 4294967295U
|
||||
#define GRUB_INT_MAX 0x7fffffff
|
||||
#define GRUB_INT_MIN (-GRUB_INT_MAX - 1)
|
||||
#define GRUB_INT32_MAX 2147483647
|
||||
@@ -177,6 +178,13 @@ typedef grub_int32_t grub_ssize_t;
|
||||
#define GRUB_TYPE_U_MAX(type) ((unsigned long long)((typeof (type))(~0)))
|
||||
#define GRUB_TYPE_U_MIN(type) 0ULL
|
||||
|
||||
+# define GRUB_UINT32_C(x) x ## U
|
||||
+# if GRUB_ULONG_MAX >> 31 >> 31 >> 1 == 1
|
||||
+# define GRUB_UINT64_C(x) x##UL
|
||||
+# elif 1
|
||||
+# define GRUB_UINT64_C(x) x##ULL
|
||||
+# endif
|
||||
+
|
||||
typedef grub_uint64_t grub_properly_aligned_t;
|
||||
|
||||
#define GRUB_PROPERLY_ALIGNED_ARRAY(name, size) grub_properly_aligned_t name[((size) + sizeof (grub_properly_aligned_t) - 1) / sizeof (grub_properly_aligned_t)]
|
||||
--
|
||||
2.39.2
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,58 +0,0 @@
|
||||
From 0044d32121bf52c4547c6b3c78f12d7305f57e6b Mon Sep 17 00:00:00 2001
|
||||
From: Ax333l <main@axelen.xyz>
|
||||
Date: Thu, 17 Aug 2023 00:00:00 +0000
|
||||
Subject: [PATCH 4/6] Error on missing Argon2id parameters
|
||||
|
||||
Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch>
|
||||
---
|
||||
grub-core/disk/luks2.c | 13 ++++++++-----
|
||||
1 file changed, 8 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/grub-core/disk/luks2.c b/grub-core/disk/luks2.c
|
||||
index d5106402f..bc818ea69 100644
|
||||
--- a/grub-core/disk/luks2.c
|
||||
+++ b/grub-core/disk/luks2.c
|
||||
@@ -38,6 +38,7 @@ GRUB_MOD_LICENSE ("GPLv3+");
|
||||
enum grub_luks2_kdf_type
|
||||
{
|
||||
LUKS2_KDF_TYPE_ARGON2I,
|
||||
+ LUKS2_KDF_TYPE_ARGON2ID,
|
||||
LUKS2_KDF_TYPE_PBKDF2
|
||||
};
|
||||
typedef enum grub_luks2_kdf_type grub_luks2_kdf_type_t;
|
||||
@@ -90,7 +91,7 @@ struct grub_luks2_keyslot
|
||||
grub_int64_t time;
|
||||
grub_int64_t memory;
|
||||
grub_int64_t cpus;
|
||||
- } argon2i;
|
||||
+ } argon2;
|
||||
struct
|
||||
{
|
||||
const char *hash;
|
||||
@@ -160,10 +161,11 @@ luks2_parse_keyslot (grub_luks2_keyslot_t *out, const grub_json_t *keyslot)
|
||||
return grub_error (GRUB_ERR_BAD_ARGUMENT, "Missing or invalid KDF");
|
||||
else if (!grub_strcmp (type, "argon2i") || !grub_strcmp (type, "argon2id"))
|
||||
{
|
||||
- out->kdf.type = LUKS2_KDF_TYPE_ARGON2I;
|
||||
- if (grub_json_getint64 (&out->kdf.u.argon2i.time, &kdf, "time") ||
|
||||
- grub_json_getint64 (&out->kdf.u.argon2i.memory, &kdf, "memory") ||
|
||||
- grub_json_getint64 (&out->kdf.u.argon2i.cpus, &kdf, "cpus"))
|
||||
+ out->kdf.type = !grub_strcmp (type, "argon2i")
|
||||
+ ? LUKS2_KDF_TYPE_ARGON2I : LUKS2_KDF_TYPE_ARGON2ID;
|
||||
+ if (grub_json_getint64 (&out->kdf.u.argon2.time, &kdf, "time") ||
|
||||
+ grub_json_getint64 (&out->kdf.u.argon2.memory, &kdf, "memory") ||
|
||||
+ grub_json_getint64 (&out->kdf.u.argon2.cpus, &kdf, "cpus"))
|
||||
return grub_error (GRUB_ERR_BAD_ARGUMENT, "Missing Argon2i parameters");
|
||||
}
|
||||
else if (!grub_strcmp (type, "pbkdf2"))
|
||||
@@ -459,6 +461,7 @@ luks2_decrypt_key (grub_uint8_t *out_key,
|
||||
switch (k->kdf.type)
|
||||
{
|
||||
case LUKS2_KDF_TYPE_ARGON2I:
|
||||
+ case LUKS2_KDF_TYPE_ARGON2ID:
|
||||
ret = grub_error (GRUB_ERR_BAD_ARGUMENT, "Argon2 not supported");
|
||||
goto err;
|
||||
case LUKS2_KDF_TYPE_PBKDF2:
|
||||
--
|
||||
2.39.2
|
||||
|
||||
@@ -1,83 +0,0 @@
|
||||
From 0a21695c55f76f1c958bb633481d55b3168562f7 Mon Sep 17 00:00:00 2001
|
||||
From: Ax333l <main@axelen.xyz>
|
||||
Date: Thu, 17 Aug 2023 00:00:00 +0000
|
||||
Subject: [PATCH 5/6] Compile with Argon2id support
|
||||
|
||||
Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch>
|
||||
---
|
||||
Makefile.util.def | 6 +++++-
|
||||
grub-core/Makefile.core.def | 2 +-
|
||||
grub-core/disk/luks2.c | 13 +++++++++++--
|
||||
3 files changed, 17 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/Makefile.util.def b/Makefile.util.def
|
||||
index 1e9a13d3e..a167825c3 100644
|
||||
--- a/Makefile.util.def
|
||||
+++ b/Makefile.util.def
|
||||
@@ -3,7 +3,7 @@ AutoGen definitions Makefile.tpl;
|
||||
library = {
|
||||
name = libgrubkern.a;
|
||||
cflags = '$(CFLAGS_GNULIB)';
|
||||
- cppflags = '$(CPPFLAGS_GNULIB) -I$(srcdir)/grub-core/lib/json';
|
||||
+ cppflags = '$(CPPFLAGS_GNULIB) -I$(srcdir)/grub-core/lib/json -I$(srcdir)/grub-core/lib/argon2';
|
||||
|
||||
common = util/misc.c;
|
||||
common = grub-core/kern/command.c;
|
||||
@@ -36,6 +36,10 @@ library = {
|
||||
common = grub-core/kern/misc.c;
|
||||
common = grub-core/kern/partition.c;
|
||||
common = grub-core/lib/crypto.c;
|
||||
+ common = grub-core/lib/argon2/argon2.c;
|
||||
+ common = grub-core/lib/argon2/core.c;
|
||||
+ common = grub-core/lib/argon2/ref.c;
|
||||
+ common = grub-core/lib/argon2/blake2/blake2b.c;
|
||||
common = grub-core/lib/json/json.c;
|
||||
common = grub-core/disk/luks.c;
|
||||
common = grub-core/disk/luks2.c;
|
||||
diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
|
||||
index 4a06789e5..e939dcc99 100644
|
||||
--- a/grub-core/Makefile.core.def
|
||||
+++ b/grub-core/Makefile.core.def
|
||||
@@ -1238,7 +1238,7 @@ module = {
|
||||
common = disk/luks2.c;
|
||||
common = lib/gnulib/base64.c;
|
||||
cflags = '$(CFLAGS_POSIX) $(CFLAGS_GNULIB)';
|
||||
- cppflags = '$(CPPFLAGS_POSIX) $(CPPFLAGS_GNULIB) -I$(srcdir)/lib/json';
|
||||
+ cppflags = '$(CPPFLAGS_POSIX) $(CPPFLAGS_GNULIB) -I$(srcdir)/lib/json -I$(srcdir)/lib/argon2';
|
||||
};
|
||||
|
||||
module = {
|
||||
diff --git a/grub-core/disk/luks2.c b/grub-core/disk/luks2.c
|
||||
index bc818ea69..5b9eaa599 100644
|
||||
--- a/grub-core/disk/luks2.c
|
||||
+++ b/grub-core/disk/luks2.c
|
||||
@@ -27,6 +27,7 @@
|
||||
#include <grub/partition.h>
|
||||
#include <grub/i18n.h>
|
||||
|
||||
+#include <argon2.h>
|
||||
#include <base64.h>
|
||||
#include <json.h>
|
||||
|
||||
@@ -462,8 +463,16 @@ luks2_decrypt_key (grub_uint8_t *out_key,
|
||||
{
|
||||
case LUKS2_KDF_TYPE_ARGON2I:
|
||||
case LUKS2_KDF_TYPE_ARGON2ID:
|
||||
- ret = grub_error (GRUB_ERR_BAD_ARGUMENT, "Argon2 not supported");
|
||||
- goto err;
|
||||
+ ret = argon2_hash (k->kdf.u.argon2.time, k->kdf.u.argon2.memory, k->kdf.u.argon2.cpus,
|
||||
+ passphrase, passphraselen, salt, saltlen, area_key, k->area.key_size,
|
||||
+ k->kdf.type == LUKS2_KDF_TYPE_ARGON2I ? Argon2_i : Argon2_id,
|
||||
+ ARGON2_VERSION_NUMBER);
|
||||
+ if (ret)
|
||||
+ {
|
||||
+ grub_dprintf ("luks2", "Argon2 failed: %s\n", argon2_error_message (ret));
|
||||
+ goto err;
|
||||
+ }
|
||||
+ break;
|
||||
case LUKS2_KDF_TYPE_PBKDF2:
|
||||
hash = grub_crypto_lookup_md_by_name (k->kdf.u.pbkdf2.hash);
|
||||
if (!hash)
|
||||
--
|
||||
2.39.2
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
From 6c9a6625c0dc038d1bdbdc13665f40e269e86496 Mon Sep 17 00:00:00 2001
|
||||
From: Ax333l <main@axelen.xyz>
|
||||
Date: Thu, 17 Aug 2023 00:00:00 +0000
|
||||
Subject: [PATCH 6/6] Make grub-install work with Argon2
|
||||
|
||||
Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch>
|
||||
---
|
||||
util/grub-install.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/util/grub-install.c b/util/grub-install.c
|
||||
index 1ad04db36..a8a3330b8 100644
|
||||
--- a/util/grub-install.c
|
||||
+++ b/util/grub-install.c
|
||||
@@ -448,6 +448,8 @@ probe_mods (grub_disk_t disk)
|
||||
{
|
||||
grub_util_cryptodisk_get_abstraction (disk,
|
||||
push_cryptodisk_module, NULL);
|
||||
+ /* HACK: always push argon2 */
|
||||
+ grub_install_push_module ("argon2");
|
||||
have_abstractions = 1;
|
||||
have_cryptodisk = 1;
|
||||
}
|
||||
--
|
||||
2.39.2
|
||||
|
||||
@@ -1,107 +0,0 @@
|
||||
From 96c0bbe5d406b616360a7fce7cee67d7692c0d6d Mon Sep 17 00:00:00 2001
|
||||
From: Leah Rowe <leah@libreboot.org>
|
||||
Date: Mon, 30 Oct 2023 22:19:21 +0000
|
||||
Subject: [PATCH 1/1] at_keyboard coreboot: force scancodes2+translate
|
||||
|
||||
Scan code set 2 with translation should be assumed in
|
||||
every case, as the default starting position.
|
||||
|
||||
However, GRUB is trying to detect and use other modes
|
||||
such as set 2 without translation, or set 1 without
|
||||
translation from set 2; it also detects no-mode and
|
||||
assumes mode 1, on really old keyboards.
|
||||
|
||||
The current behaviour has been retained, for everything
|
||||
except GRUB_MACHINE_COREBOOT; for the latter, scan code
|
||||
set 2 with translation is hardcoded, and forced in code.
|
||||
|
||||
This is required to make keyboard initialisation work on
|
||||
the MEC5035 EC used by the Dell Latitude E6400, when
|
||||
running GRUB as a coreboot payload on that laptop. The
|
||||
EC reports scancode set 2 with translation when probed,
|
||||
but actually only outputs scancode set 1.
|
||||
|
||||
Since GRUB is attempting to use it without translation,
|
||||
and since the machine reports set 2 with translation,
|
||||
but only ever outputs set 1 scancodes, this results in
|
||||
wrong keypresses for every key.
|
||||
|
||||
This fix fixed that, by forcing set 2 with translation,
|
||||
treating it as set 1, but only on coreboot. This is the
|
||||
same behaviour used in GNU+Linux systems and SeaBIOS.
|
||||
With this change, GRUB keyboard initialisation now works
|
||||
just fine on those machines.
|
||||
|
||||
This has *also* been tested on other coreboot machines
|
||||
running GRUB; several HP EliteBooks, ThinkPads and
|
||||
Dell Precision T1650. All seems to work just fine.
|
||||
|
||||
Signed-off-by: Leah Rowe <leah@libreboot.org>
|
||||
---
|
||||
grub-core/term/at_keyboard.c | 20 ++++++++++++++++++--
|
||||
1 file changed, 18 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/grub-core/term/at_keyboard.c b/grub-core/term/at_keyboard.c
|
||||
index f8a129eb7..8207225c2 100644
|
||||
--- a/grub-core/term/at_keyboard.c
|
||||
+++ b/grub-core/term/at_keyboard.c
|
||||
@@ -138,6 +138,7 @@ write_mode (int mode)
|
||||
return (i != GRUB_AT_TRIES);
|
||||
}
|
||||
|
||||
+#if !defined (GRUB_MACHINE_COREBOOT)
|
||||
static int
|
||||
query_mode (void)
|
||||
{
|
||||
@@ -161,10 +162,12 @@ query_mode (void)
|
||||
return 3;
|
||||
return 0;
|
||||
}
|
||||
+#endif
|
||||
|
||||
static void
|
||||
set_scancodes (void)
|
||||
{
|
||||
+#if !defined (GRUB_MACHINE_COREBOOT)
|
||||
/* You must have visited computer museum. Keyboard without scancode set
|
||||
knowledge. Assume XT. */
|
||||
if (!grub_keyboard_orig_set)
|
||||
@@ -173,20 +176,33 @@ set_scancodes (void)
|
||||
ps2_state.current_set = 1;
|
||||
return;
|
||||
}
|
||||
+#endif
|
||||
|
||||
#if !USE_SCANCODE_SET
|
||||
ps2_state.current_set = 1;
|
||||
return;
|
||||
-#else
|
||||
+#endif
|
||||
|
||||
+#if defined (GRUB_MACHINE_COREBOOT)
|
||||
+ /* enable translation */
|
||||
+ grub_keyboard_controller_write (grub_keyboard_controller_orig
|
||||
+ & ~KEYBOARD_AT_DISABLE);
|
||||
+#else
|
||||
+ /* if not coreboot, disable translation and try mode 2 first, before 1 */
|
||||
grub_keyboard_controller_write (grub_keyboard_controller_orig
|
||||
& ~KEYBOARD_AT_TRANSLATE
|
||||
& ~KEYBOARD_AT_DISABLE);
|
||||
+#endif
|
||||
|
||||
keyboard_controller_wait_until_ready ();
|
||||
grub_outb (KEYBOARD_COMMAND_ENABLE, KEYBOARD_REG_DATA);
|
||||
-
|
||||
write_mode (2);
|
||||
+
|
||||
+#if defined (GRUB_MACHINE_COREBOOT)
|
||||
+ /* mode 2 with translation, so make grub treat as set 1 */
|
||||
+ ps2_state.current_set = 1;
|
||||
+#else
|
||||
+ /* if not coreboot, translation isn't set; test 2 and fall back to 1 */
|
||||
ps2_state.current_set = query_mode ();
|
||||
grub_dprintf ("atkeyb", "returned set %d\n", ps2_state.current_set);
|
||||
if (ps2_state.current_set == 2)
|
||||
--
|
||||
2.39.2
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
From 0a6abeb40ac4284fbff6ef5958989d561b6290a7 Mon Sep 17 00:00:00 2001
|
||||
From: Leah Rowe <leah@libreboot.org>
|
||||
Date: Tue, 31 Oct 2023 10:33:28 +0000
|
||||
Subject: [PATCH 1/1] keylayouts: don't print "Unknown key" message
|
||||
|
||||
on keyboards with stuck keys, this results in GRUB just
|
||||
spewing it repeatedly, preventing use of GRUB.
|
||||
|
||||
in such cases, it's still possible to use the keyboard,
|
||||
and we should let the user at least boot.
|
||||
|
||||
it often appears when people plug in faulty usb keyboards,
|
||||
but can appear for laptop keyboards too; one of my e6400
|
||||
has stuck keys.
|
||||
|
||||
with this patch, grub should be a bit more reliable in
|
||||
terms of user experience, when the keyboard is faulty.
|
||||
|
||||
Signed-off-by: Leah Rowe <leah@libreboot.org>
|
||||
---
|
||||
grub-core/commands/keylayouts.c | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/grub-core/commands/keylayouts.c b/grub-core/commands/keylayouts.c
|
||||
index aa3ba34f2..445fa0601 100644
|
||||
--- a/grub-core/commands/keylayouts.c
|
||||
+++ b/grub-core/commands/keylayouts.c
|
||||
@@ -174,7 +174,6 @@ grub_term_map_key (grub_keyboard_key_t code, int status)
|
||||
key = map_key_core (code, status, &alt_gr_consumed);
|
||||
|
||||
if (key == 0 || key == GRUB_TERM_SHIFT) {
|
||||
- grub_printf ("Unknown key 0x%x detected\n", code);
|
||||
return GRUB_TERM_NO_KEY;
|
||||
}
|
||||
|
||||
--
|
||||
2.39.2
|
||||
|
||||
@@ -1,102 +0,0 @@
|
||||
From 9e7a651a0f15f2e9dec65a77765c3c4fd97b4165 Mon Sep 17 00:00:00 2001
|
||||
From: Leah Rowe <leah@libreboot.org>
|
||||
Date: Sun, 5 Nov 2023 16:14:58 +0000
|
||||
Subject: [PATCH 1/1] don't print missing prefix errors on the screen
|
||||
|
||||
we do actually set the prefix. this patch modifies
|
||||
grub to still set grub_errno and return accordingly,
|
||||
so the behaviour is otherwise identical, but it will
|
||||
no longer print a warning message on the screen.
|
||||
|
||||
Signed-off-by: Leah Rowe <leah@libreboot.org>
|
||||
---
|
||||
grub-core/commands/keylayouts.c | 2 +-
|
||||
grub-core/commands/loadenv.c | 2 +-
|
||||
grub-core/commands/nativedisk.c | 2 +-
|
||||
grub-core/efiemu/main.c | 3 +--
|
||||
grub-core/font/font.c | 2 +-
|
||||
grub-core/kern/dl.c | 2 +-
|
||||
6 files changed, 6 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/grub-core/commands/keylayouts.c b/grub-core/commands/keylayouts.c
|
||||
index 445fa0601..00bcf7025 100644
|
||||
--- a/grub-core/commands/keylayouts.c
|
||||
+++ b/grub-core/commands/keylayouts.c
|
||||
@@ -211,7 +211,7 @@ grub_cmd_keymap (struct grub_command *cmd __attribute__ ((unused)),
|
||||
{
|
||||
const char *prefix = grub_env_get ("prefix");
|
||||
if (!prefix)
|
||||
- return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("variable `%s' isn't set"), "prefix");
|
||||
+ return (grub_errno = GRUB_ERR_BAD_ARGUMENT);
|
||||
filename = grub_xasprintf ("%s/layouts/%s.gkb", prefix, argv[0]);
|
||||
if (!filename)
|
||||
return grub_errno;
|
||||
diff --git a/grub-core/commands/loadenv.c b/grub-core/commands/loadenv.c
|
||||
index 166445849..699b39bfa 100644
|
||||
--- a/grub-core/commands/loadenv.c
|
||||
+++ b/grub-core/commands/loadenv.c
|
||||
@@ -58,7 +58,7 @@ open_envblk_file (char *filename,
|
||||
prefix = grub_env_get ("prefix");
|
||||
if (! prefix)
|
||||
{
|
||||
- grub_error (GRUB_ERR_FILE_NOT_FOUND, N_("variable `%s' isn't set"), "prefix");
|
||||
+ grub_errno = GRUB_ERR_FILE_NOT_FOUND;
|
||||
return 0;
|
||||
}
|
||||
|
||||
diff --git a/grub-core/commands/nativedisk.c b/grub-core/commands/nativedisk.c
|
||||
index 580c8d3b0..6806bff9c 100644
|
||||
--- a/grub-core/commands/nativedisk.c
|
||||
+++ b/grub-core/commands/nativedisk.c
|
||||
@@ -186,7 +186,7 @@ grub_cmd_nativedisk (grub_command_t cmd __attribute__ ((unused)),
|
||||
prefix = grub_env_get ("prefix");
|
||||
|
||||
if (! prefix)
|
||||
- return grub_error (GRUB_ERR_FILE_NOT_FOUND, N_("variable `%s' isn't set"), "prefix");
|
||||
+ return (grub_errno = GRUB_ERR_FILE_NOT_FOUND);
|
||||
|
||||
if (prefix)
|
||||
path_prefix = (prefix[0] == '(') ? grub_strchr (prefix, ')') : NULL;
|
||||
diff --git a/grub-core/efiemu/main.c b/grub-core/efiemu/main.c
|
||||
index e7037f4ed..e5d4dbff1 100644
|
||||
--- a/grub-core/efiemu/main.c
|
||||
+++ b/grub-core/efiemu/main.c
|
||||
@@ -231,8 +231,7 @@ grub_efiemu_autocore (void)
|
||||
prefix = grub_env_get ("prefix");
|
||||
|
||||
if (! prefix)
|
||||
- return grub_error (GRUB_ERR_FILE_NOT_FOUND,
|
||||
- N_("variable `%s' isn't set"), "prefix");
|
||||
+ return (grub_errno = GRUB_ERR_FILE_NOT_FOUND);
|
||||
|
||||
suffix = grub_efiemu_get_default_core_name ();
|
||||
|
||||
diff --git a/grub-core/font/font.c b/grub-core/font/font.c
|
||||
index 18de52562..2a0fea6c8 100644
|
||||
--- a/grub-core/font/font.c
|
||||
+++ b/grub-core/font/font.c
|
||||
@@ -461,7 +461,7 @@ grub_font_load (const char *filename)
|
||||
|
||||
if (!prefix)
|
||||
{
|
||||
- grub_error (GRUB_ERR_FILE_NOT_FOUND, N_("variable `%s' isn't set"), "prefix");
|
||||
+ grub_errno = GRUB_ERR_FILE_NOT_FOUND;
|
||||
goto fail;
|
||||
}
|
||||
file = try_open_from_prefix (prefix, filename);
|
||||
diff --git a/grub-core/kern/dl.c b/grub-core/kern/dl.c
|
||||
index 4011e2d15..af3bd00d0 100644
|
||||
--- a/grub-core/kern/dl.c
|
||||
+++ b/grub-core/kern/dl.c
|
||||
@@ -758,7 +758,7 @@ grub_dl_load (const char *name)
|
||||
return 0;
|
||||
|
||||
if (! grub_dl_dir) {
|
||||
- grub_error (GRUB_ERR_FILE_NOT_FOUND, N_("variable `%s' isn't set"), "prefix");
|
||||
+ grub_errno = GRUB_ERR_FILE_NOT_FOUND;
|
||||
return 0;
|
||||
}
|
||||
|
||||
--
|
||||
2.39.2
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
From 6237c5762edccc1e1fa4746b1d4aa5e8d81e4883 Mon Sep 17 00:00:00 2001
|
||||
From: Leah Rowe <leah@libreboot.org>
|
||||
Date: Sun, 5 Nov 2023 16:36:22 +0000
|
||||
Subject: [PATCH 1/1] don't print error if module not found
|
||||
|
||||
still set grub_errno accordingly, and otherwise
|
||||
behave the same. in libreboot, we remove a lot of
|
||||
modules but then rely on loading a grub.cfg
|
||||
provided by a distro; in almost all cases that works,
|
||||
but also in almost all cases, that will try to load
|
||||
a module we don't actually need, but then it prints
|
||||
a message. this can annoy some users, so silence it.
|
||||
|
||||
Signed-off-by: Leah Rowe <leah@libreboot.org>
|
||||
---
|
||||
grub-core/kern/dl.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/grub-core/kern/dl.c b/grub-core/kern/dl.c
|
||||
index af3bd00d0..21d0cedb1 100644
|
||||
--- a/grub-core/kern/dl.c
|
||||
+++ b/grub-core/kern/dl.c
|
||||
@@ -486,7 +486,7 @@ grub_dl_resolve_name (grub_dl_t mod, Elf_Ehdr *e)
|
||||
|
||||
s = grub_dl_find_section (e, ".modname");
|
||||
if (!s)
|
||||
- return grub_error (GRUB_ERR_BAD_MODULE, "no module name found");
|
||||
+ return (grub_errno = GRUB_ERR_BAD_MODULE);
|
||||
|
||||
mod->name = grub_strdup ((char *) e + s->sh_offset);
|
||||
if (! mod->name)
|
||||
--
|
||||
2.39.2
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
From e5b7ec81421487e71bcaf8b6b5a27f3649a62753 Mon Sep 17 00:00:00 2001
|
||||
From: Leah Rowe <leah@libreboot.org>
|
||||
Date: Sun, 5 Nov 2023 17:25:20 +0000
|
||||
Subject: [PATCH 1/1] don't print empty error messages
|
||||
|
||||
this is part two of the quest to kill the prefix
|
||||
error message. after i disabled prefix-related
|
||||
messages, it still printed "error: ." on screen.
|
||||
|
||||
Signed-off-by: Leah Rowe <leah@libreboot.org>
|
||||
---
|
||||
grub-core/kern/err.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/grub-core/kern/err.c b/grub-core/kern/err.c
|
||||
index 53c734de7..7cac53983 100644
|
||||
--- a/grub-core/kern/err.c
|
||||
+++ b/grub-core/kern/err.c
|
||||
@@ -107,7 +107,8 @@ grub_print_error (void)
|
||||
{
|
||||
if (grub_errno != GRUB_ERR_NONE)
|
||||
{
|
||||
- grub_err_printf (_("error: %s.\n"), grub_errmsg);
|
||||
+ if (grub_strlen(grub_errmsg) > 0)
|
||||
+ grub_err_printf (_("error: %s.\n"), grub_errmsg);
|
||||
grub_err_printed_errors++;
|
||||
}
|
||||
}
|
||||
--
|
||||
2.39.2
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,41 +0,0 @@
|
||||
From 81d850494c3cde1da33cc2df44837c839c1f2c60 Mon Sep 17 00:00:00 2001
|
||||
From: Leah Rowe <leah@libreboot.org>
|
||||
Date: Fri, 6 Oct 2023 23:17:06 +0100
|
||||
Subject: [PATCH 1/1] add central Makefile in main directory
|
||||
|
||||
it only does build64. i'm disabling use of 32-bit memtest in lbmk,
|
||||
until i can figure out a more consistent cross-compile method,
|
||||
rather than relying on hostcc.
|
||||
|
||||
a user on irc reported build issues on pop os
|
||||
|
||||
it's not pop's fault. lbmk needs to start handling cross
|
||||
compilers properly. (alternatively, i could rig memtest86+
|
||||
to use crossgcc. i'll explore that later)
|
||||
|
||||
Signed-off-by: Leah Rowe <leah@libreboot.org>
|
||||
---
|
||||
Makefile | 11 +++++++++++
|
||||
1 file changed, 11 insertions(+)
|
||||
create mode 100644 Makefile
|
||||
|
||||
diff --git a/Makefile b/Makefile
|
||||
new file mode 100644
|
||||
index 0000000..59fcbef
|
||||
--- /dev/null
|
||||
+++ b/Makefile
|
||||
@@ -0,0 +1,11 @@
|
||||
+# SPDX-License-Identifier: MIT
|
||||
+# SPDX-FileCopyrightText: 2023 Leah Rowe <leah@libreboot.org>
|
||||
+
|
||||
+all:
|
||||
+ make -C build64
|
||||
+
|
||||
+clean:
|
||||
+ make -C build64 clean
|
||||
+
|
||||
+distclean:
|
||||
+ make -C build64 clean
|
||||
--
|
||||
2.39.2
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
out/bios.bin.elf
|
||||
out/vgabios.bin
|
||||
@@ -1,3 +0,0 @@
|
||||
arch="x86_32"
|
||||
tree="default"
|
||||
rev="1e1da7a963007d03a4e0e9a9e0ff17990bb1608d"
|
||||
@@ -1,6 +0,0 @@
|
||||
u-boot
|
||||
u-boot.bin
|
||||
u-boot.dtb
|
||||
u-boot.img
|
||||
u-boot.itb
|
||||
u-boot.elf
|
||||
@@ -1,513 +0,0 @@
|
||||
From ac31b6bc4bcfc328342ec1677db5b80548d43b35 Mon Sep 17 00:00:00 2001
|
||||
From: Andre Przywara <andre.przywara@arm.com>
|
||||
Date: Mon, 10 Jan 2022 00:56:31 +0000
|
||||
Subject: [PATCH 1/4] video: Add cursor support for video consoles
|
||||
|
||||
So far the video console is completely lacking any cursor, which makes
|
||||
typing and correcting quite irritating.
|
||||
|
||||
Add a simple cursor display by writing a SPACE glyph in the background
|
||||
colour to the next character position on the screen. Any typed character
|
||||
will naturally overwrite it, so we need to only explicitly clear it if
|
||||
the next character will appear somewhere else (newline, backspace).
|
||||
|
||||
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
|
||||
Reviewed-by: Simon Glass <sjg@chromium.org>
|
||||
Tested-by: Simon Glass <sjg@chromium.org>
|
||||
Link: https://lore.kernel.org/r/20220110005638.21599-2-andre.przywara@arm.com
|
||||
[Alper: Rebase for console_set_font(), reword for CONFIG_VIDEO]
|
||||
Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com>
|
||||
---
|
||||
drivers/video/console_core.c | 1 +
|
||||
drivers/video/vidconsole-uclass.c | 42 +++++++++++++++++++++++++++++++
|
||||
include/video_console.h | 1 +
|
||||
3 files changed, 44 insertions(+)
|
||||
|
||||
diff --git a/drivers/video/console_core.c b/drivers/video/console_core.c
|
||||
index b5d0e3dceca3..60de5fcacb82 100644
|
||||
--- a/drivers/video/console_core.c
|
||||
+++ b/drivers/video/console_core.c
|
||||
@@ -30,6 +30,7 @@ static int console_set_font(struct udevice *dev, struct video_fontdata *fontdata
|
||||
debug("height: %d\n", fontdata->height);
|
||||
|
||||
priv->fontdata = fontdata;
|
||||
+ vc_priv->cursor_visible = true;
|
||||
vc_priv->x_charsize = fontdata->width;
|
||||
vc_priv->y_charsize = fontdata->height;
|
||||
if (vid_priv->rot % 2) {
|
||||
diff --git a/drivers/video/vidconsole-uclass.c b/drivers/video/vidconsole-uclass.c
|
||||
index b5b3b6625902..a6d994bd637c 100644
|
||||
--- a/drivers/video/vidconsole-uclass.c
|
||||
+++ b/drivers/video/vidconsole-uclass.c
|
||||
@@ -56,6 +56,26 @@ static int vidconsole_entry_start(struct udevice *dev)
|
||||
return ops->entry_start(dev);
|
||||
}
|
||||
|
||||
+static void draw_cursor(struct udevice *dev, bool state)
|
||||
+{
|
||||
+ struct vidconsole_priv *priv = dev_get_uclass_priv(dev);
|
||||
+ struct video_priv *vid_priv = dev_get_uclass_priv(dev->parent);
|
||||
+ u32 tmp;
|
||||
+
|
||||
+ if (!priv->cursor_visible)
|
||||
+ return;
|
||||
+
|
||||
+ if (state) {
|
||||
+ tmp = vid_priv->colour_bg;
|
||||
+ vid_priv->colour_bg = vid_priv->colour_fg;
|
||||
+ }
|
||||
+
|
||||
+ vidconsole_putc_xy(dev, priv->xcur_frac, priv->ycur, ' ');
|
||||
+
|
||||
+ if (state)
|
||||
+ vid_priv->colour_bg = tmp;
|
||||
+}
|
||||
+
|
||||
/* Move backwards one space */
|
||||
static int vidconsole_back(struct udevice *dev)
|
||||
{
|
||||
@@ -63,6 +83,8 @@ static int vidconsole_back(struct udevice *dev)
|
||||
struct vidconsole_ops *ops = vidconsole_get_ops(dev);
|
||||
int ret;
|
||||
|
||||
+ draw_cursor(dev, false);
|
||||
+
|
||||
if (ops->backspace) {
|
||||
ret = ops->backspace(dev);
|
||||
if (ret != -ENOSYS)
|
||||
@@ -89,6 +111,8 @@ static void vidconsole_newline(struct udevice *dev)
|
||||
const int rows = CONFIG_VAL(CONSOLE_SCROLL_LINES);
|
||||
int i, ret;
|
||||
|
||||
+ draw_cursor(dev, false);
|
||||
+
|
||||
priv->xcur_frac = priv->xstart_frac;
|
||||
priv->ycur += priv->y_charsize;
|
||||
|
||||
@@ -282,6 +306,14 @@ static void vidconsole_escape_char(struct udevice *dev, char ch)
|
||||
|
||||
break;
|
||||
}
|
||||
+ case 'l':
|
||||
+ draw_cursor(dev, false);
|
||||
+ priv->cursor_visible = 0;
|
||||
+ break;
|
||||
+ case 'h':
|
||||
+ priv->cursor_visible = 1;
|
||||
+ draw_cursor(dev, true);
|
||||
+ break;
|
||||
case 'J': {
|
||||
int mode;
|
||||
|
||||
@@ -456,6 +488,11 @@ int vidconsole_put_char(struct udevice *dev, char ch)
|
||||
struct vidconsole_priv *priv = dev_get_uclass_priv(dev);
|
||||
int ret;
|
||||
|
||||
+ /*
|
||||
+ * We don't need to clear the cursor since we are going to overwrite
|
||||
+ * that character anyway.
|
||||
+ */
|
||||
+
|
||||
if (priv->escape) {
|
||||
vidconsole_escape_char(dev, ch);
|
||||
return 0;
|
||||
@@ -470,6 +507,7 @@ int vidconsole_put_char(struct udevice *dev, char ch)
|
||||
/* beep */
|
||||
break;
|
||||
case '\r':
|
||||
+ draw_cursor(dev, false);
|
||||
priv->xcur_frac = priv->xstart_frac;
|
||||
break;
|
||||
case '\n':
|
||||
@@ -477,6 +515,7 @@ int vidconsole_put_char(struct udevice *dev, char ch)
|
||||
vidconsole_entry_start(dev);
|
||||
break;
|
||||
case '\t': /* Tab (8 chars alignment) */
|
||||
+ draw_cursor(dev, false);
|
||||
priv->xcur_frac = ((priv->xcur_frac / priv->tab_width_frac)
|
||||
+ 1) * priv->tab_width_frac;
|
||||
|
||||
@@ -494,6 +533,8 @@ int vidconsole_put_char(struct udevice *dev, char ch)
|
||||
break;
|
||||
}
|
||||
|
||||
+ draw_cursor(dev, true);
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -646,6 +687,7 @@ static int vidconsole_pre_probe(struct udevice *dev)
|
||||
struct video_priv *vid_priv = dev_get_uclass_priv(vid);
|
||||
|
||||
priv->xsize_frac = VID_TO_POS(vid_priv->xsize);
|
||||
+ priv->cursor_visible = false;
|
||||
|
||||
return 0;
|
||||
}
|
||||
diff --git a/include/video_console.h b/include/video_console.h
|
||||
index 2694e44f6ecf..949abb3861e7 100644
|
||||
--- a/include/video_console.h
|
||||
+++ b/include/video_console.h
|
||||
@@ -59,6 +59,7 @@ struct vidconsole_priv {
|
||||
int escape_len;
|
||||
int row_saved;
|
||||
int col_saved;
|
||||
+ bool cursor_visible;
|
||||
char escape_buf[32];
|
||||
};
|
||||
|
||||
--
|
||||
2.42.0
|
||||
|
||||
|
||||
From ab8ddf81c1442717f6ffddc3460d4e4adbd5b570 Mon Sep 17 00:00:00 2001
|
||||
From: Andre Przywara <andre.przywara@arm.com>
|
||||
Date: Mon, 10 Jan 2022 00:56:36 +0000
|
||||
Subject: [PATCH 2/4] efi-selftest: Add international characters test
|
||||
|
||||
UEFI relies entirely on unicode output, which actual fonts displayed on
|
||||
the screen might not be ready for.
|
||||
|
||||
Add a test displaying some international characters, to reveal missing
|
||||
glyphs, especially in our builtin fonts.
|
||||
This would be needed to be manually checked on the screen for
|
||||
correctness.
|
||||
|
||||
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
|
||||
Link: https://lore.kernel.org/r/20220110005638.21599-7-andre.przywara@arm.com
|
||||
---
|
||||
lib/efi_selftest/efi_selftest_textoutput.c | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/lib/efi_selftest/efi_selftest_textoutput.c b/lib/efi_selftest/efi_selftest_textoutput.c
|
||||
index cc44b38bc23a..175731ae96b6 100644
|
||||
--- a/lib/efi_selftest/efi_selftest_textoutput.c
|
||||
+++ b/lib/efi_selftest/efi_selftest_textoutput.c
|
||||
@@ -118,6 +118,11 @@ static int execute(void)
|
||||
efi_st_printf("Unicode not handled properly\n");
|
||||
return EFI_ST_FAILURE;
|
||||
}
|
||||
+ ret = con_out->output_string(con_out, L"Österreich Edelweiß Smørrebrød Smörgås Niño René >Ἑλλάς<\n");
|
||||
+ if (ret != EFI_ST_SUCCESS) {
|
||||
+ efi_st_error("OutputString failed for international chars\n");
|
||||
+ return EFI_ST_FAILURE;
|
||||
+ }
|
||||
efi_st_printf("\n");
|
||||
|
||||
return EFI_ST_SUCCESS;
|
||||
--
|
||||
2.42.0
|
||||
|
||||
|
||||
From 48e918c31a46815325ffd7a77eb7a3ffedf8e59c Mon Sep 17 00:00:00 2001
|
||||
From: Andre Przywara <andre.przywara@arm.com>
|
||||
Date: Mon, 10 Jan 2022 00:56:37 +0000
|
||||
Subject: [PATCH 3/4] efi_selftest: Add box drawing character selftest
|
||||
|
||||
UEFI applications rely on Unicode output capability, and might use that
|
||||
for drawing pseudo-graphical interfaces using Unicode defined box
|
||||
drawing characters.
|
||||
|
||||
Add a simple test to display the most basic box characters, which would
|
||||
need to be checked manually on the screen for correctness.
|
||||
To facilitate this, add a three second delay after the output at this
|
||||
point.
|
||||
|
||||
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
|
||||
Link: https://lore.kernel.org/r/20220110005638.21599-8-andre.przywara@arm.com
|
||||
---
|
||||
lib/efi_selftest/efi_selftest_textoutput.c | 11 +++++++++++
|
||||
1 file changed, 11 insertions(+)
|
||||
|
||||
diff --git a/lib/efi_selftest/efi_selftest_textoutput.c b/lib/efi_selftest/efi_selftest_textoutput.c
|
||||
index 175731ae96b6..3c6870f74241 100644
|
||||
--- a/lib/efi_selftest/efi_selftest_textoutput.c
|
||||
+++ b/lib/efi_selftest/efi_selftest_textoutput.c
|
||||
@@ -123,6 +123,17 @@ static int execute(void)
|
||||
efi_st_error("OutputString failed for international chars\n");
|
||||
return EFI_ST_FAILURE;
|
||||
}
|
||||
+ ret = con_out->output_string(con_out, L"┌─┬─┐\n");
|
||||
+ ret |= con_out->output_string(con_out, L"│ │ │\n");
|
||||
+ ret |= con_out->output_string(con_out, L"├─┼─┤\n");
|
||||
+ ret |= con_out->output_string(con_out, L"│ │ │\n");
|
||||
+ ret |= con_out->output_string(con_out, L"└─┴─┘\n");
|
||||
+ if (ret != EFI_ST_SUCCESS) {
|
||||
+ efi_st_error("OutputString failed for box drawing chars\n");
|
||||
+ return EFI_ST_FAILURE;
|
||||
+ }
|
||||
+ con_out->output_string(con_out, L"waiting for admiration...\n");
|
||||
+ EFI_CALL(systab.boottime->stall(3000000));
|
||||
efi_st_printf("\n");
|
||||
|
||||
return EFI_ST_SUCCESS;
|
||||
--
|
||||
2.42.0
|
||||
|
||||
|
||||
From 407ca7e821aabf240c2602dd0db56d6398a0c03b Mon Sep 17 00:00:00 2001
|
||||
From: Andre Przywara <andre.przywara@arm.com>
|
||||
Date: Mon, 10 Jan 2022 00:56:38 +0000
|
||||
Subject: [PATCH 4/4] video: Convert UTF-8 input stream to the 437 code page
|
||||
|
||||
The bitmap fonts (VGA 8x16 and friends) we import from Linux use the
|
||||
437 code page to map their glyphs. For U-Boot's own purposes this is
|
||||
probably fine, but UEFI applications output Unicode, which only matches
|
||||
in the very basic first 127 characters.
|
||||
|
||||
Add a function that converts UTF-8 character sequences into the
|
||||
respective CP437 code point, as far as the characters defined in there
|
||||
allow this. This includes quite some international and box drawing
|
||||
characters, which are used by UEFI applications.
|
||||
|
||||
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
|
||||
Link: https://lore.kernel.org/r/20220110005638.21599-9-andre.przywara@arm.com
|
||||
[Alper: Rebase for makefile changes, use $(SPL_TPL_)VIDEO]
|
||||
Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com>
|
||||
---
|
||||
drivers/video/Makefile | 1 +
|
||||
drivers/video/utf8_cp437.c | 169 ++++++++++++++++++++++++++++++
|
||||
drivers/video/vidconsole-uclass.c | 6 +-
|
||||
include/video_console.h | 9 ++
|
||||
4 files changed, 184 insertions(+), 1 deletion(-)
|
||||
create mode 100644 drivers/video/utf8_cp437.c
|
||||
|
||||
diff --git a/drivers/video/Makefile b/drivers/video/Makefile
|
||||
index d13af9f3b19b..4b1983990aba 100644
|
||||
--- a/drivers/video/Makefile
|
||||
+++ b/drivers/video/Makefile
|
||||
@@ -20,6 +20,7 @@ obj-$(CONFIG_DISPLAY) += display-uclass.o
|
||||
obj-$(CONFIG_VIDEO_MIPI_DSI) += dsi-host-uclass.o
|
||||
obj-$(CONFIG_$(SPL_TPL_)VIDEO) += video-uclass.o vidconsole-uclass.o
|
||||
obj-$(CONFIG_$(SPL_TPL_)VIDEO) += video_bmp.o
|
||||
+obj-$(CONFIG_$(SPL_TPL_)VIDEO) += utf8_cp437.o
|
||||
obj-$(CONFIG_$(SPL_TPL_)PANEL) += panel-uclass.o
|
||||
obj-$(CONFIG_PANEL_HX8238D) += hx8238d.o
|
||||
obj-$(CONFIG_$(SPL_TPL_)SIMPLE_PANEL) += simple_panel.o
|
||||
diff --git a/drivers/video/utf8_cp437.c b/drivers/video/utf8_cp437.c
|
||||
new file mode 100644
|
||||
index 000000000000..cab68b92b6e3
|
||||
--- /dev/null
|
||||
+++ b/drivers/video/utf8_cp437.c
|
||||
@@ -0,0 +1,169 @@
|
||||
+/*
|
||||
+ * Convert UTF-8 bytes into a code page 437 character.
|
||||
+ * Based on the table in the Code_page_437 Wikipedia page.
|
||||
+ */
|
||||
+
|
||||
+#include <linux/types.h>
|
||||
+
|
||||
+uint8_t code_points_00a0[] = {
|
||||
+ 255, 173, 155, 156, 7, 157, 7, 21,
|
||||
+ 7, 7, 166, 174, 170, 7, 7, 7,
|
||||
+ 248, 241, 253, 7, 7, 230, 20, 250,
|
||||
+ 7, 7, 167, 175, 172, 171, 7, 168,
|
||||
+ 7, 7, 7, 7, 142, 143, 146, 128,
|
||||
+ 7, 144, 7, 7, 7, 7, 7, 7,
|
||||
+ 7, 165, 7, 7, 7, 7, 153, 7,
|
||||
+ 7, 7, 7, 7, 154, 7, 7, 225,
|
||||
+ 133, 160, 131, 7, 132, 134, 145, 135,
|
||||
+ 138, 130, 136, 137, 141, 161, 140, 139,
|
||||
+ 7, 164, 149, 162, 147, 7, 148, 246,
|
||||
+ 7, 151, 163, 150, 129, 7, 7, 152,
|
||||
+};
|
||||
+
|
||||
+uint8_t code_points_2550[] = {
|
||||
+ 205, 186, 213, 214, 201, 184, 183, 187,
|
||||
+ 212, 211, 200, 190, 189, 188, 198, 199,
|
||||
+ 204, 181, 182, 185, 209, 210, 203, 207,
|
||||
+ 208, 202, 216, 215, 206
|
||||
+};
|
||||
+
|
||||
+static uint8_t utf8_convert_11bit(uint16_t code)
|
||||
+{
|
||||
+ switch (code) {
|
||||
+ case 0x0192: return 159;
|
||||
+ case 0x0393: return 226;
|
||||
+ case 0x0398: return 233;
|
||||
+ case 0x03A3: return 228;
|
||||
+ case 0x03A6: return 232;
|
||||
+ case 0x03A9: return 234;
|
||||
+ case 0x03B1: return 224;
|
||||
+ case 0x03B4: return 235;
|
||||
+ case 0x03B5: return 238;
|
||||
+ case 0x03C0: return 227;
|
||||
+ case 0x03C3: return 229;
|
||||
+ case 0x03C4: return 231;
|
||||
+ case 0x03C6: return 237;
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+};
|
||||
+
|
||||
+static uint8_t utf8_convert_2xxx(uint16_t code)
|
||||
+{
|
||||
+ switch (code) {
|
||||
+ case 0x2022: return 7;
|
||||
+ case 0x203C: return 19;
|
||||
+ case 0x207F: return 252;
|
||||
+ case 0x20A7: return 158;
|
||||
+ case 0x2190: return 27;
|
||||
+ case 0x2191: return 24;
|
||||
+ case 0x2192: return 26;
|
||||
+ case 0x2193: return 25;
|
||||
+ case 0x2194: return 29;
|
||||
+ case 0x2195: return 18;
|
||||
+ case 0x21A8: return 23;
|
||||
+ case 0x2219: return 249;
|
||||
+ case 0x221A: return 251;
|
||||
+ case 0x221E: return 236;
|
||||
+ case 0x221F: return 28;
|
||||
+ case 0x2229: return 239;
|
||||
+ case 0x2248: return 247;
|
||||
+ case 0x2261: return 240;
|
||||
+ case 0x2264: return 243;
|
||||
+ case 0x2265: return 242;
|
||||
+ case 0x2310: return 169;
|
||||
+ case 0x2320: return 244;
|
||||
+ case 0x2321: return 245;
|
||||
+ case 0x2500: return 196;
|
||||
+ case 0x2502: return 179;
|
||||
+ case 0x250C: return 218;
|
||||
+ case 0x2510: return 191;
|
||||
+ case 0x2514: return 192;
|
||||
+ case 0x2518: return 217;
|
||||
+ case 0x251C: return 195;
|
||||
+ case 0x2524: return 180;
|
||||
+ case 0x252C: return 194;
|
||||
+ case 0x2534: return 193;
|
||||
+ case 0x253C: return 197;
|
||||
+ case 0x2580: return 223;
|
||||
+ case 0x2584: return 220;
|
||||
+ case 0x2588: return 219;
|
||||
+ case 0x258C: return 221;
|
||||
+ case 0x2590: return 222;
|
||||
+ case 0x2591: return 176;
|
||||
+ case 0x2592: return 177;
|
||||
+ case 0x2593: return 178;
|
||||
+ case 0x25A0: return 254;
|
||||
+ case 0x25AC: return 22;
|
||||
+ case 0x25B2: return 30;
|
||||
+ case 0x25BA: return 16;
|
||||
+ case 0x25BC: return 31;
|
||||
+ case 0x25C4: return 17;
|
||||
+ case 0x25CB: return 9;
|
||||
+ case 0x25D8: return 8;
|
||||
+ case 0x25D9: return 10;
|
||||
+ case 0x263A: return 1;
|
||||
+ case 0x263B: return 2;
|
||||
+ case 0x263C: return 15;
|
||||
+ case 0x2640: return 12;
|
||||
+ case 0x2642: return 11;
|
||||
+ case 0x2660: return 6;
|
||||
+ case 0x2663: return 5;
|
||||
+ case 0x2665: return 3;
|
||||
+ case 0x2666: return 4;
|
||||
+ case 0x266A: return 13;
|
||||
+ case 0x266B: return 14;
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+uint8_t convert_uc16_to_cp437(uint16_t code)
|
||||
+{
|
||||
+ if (code < 0x7f) // ASCII
|
||||
+ return code;
|
||||
+ if (code < 0xa0) // high control characters
|
||||
+ return code;
|
||||
+ if (code < 0x100) // international characters
|
||||
+ return code_points_00a0[code - 0xa0];
|
||||
+ if (code < 0x800)
|
||||
+ return utf8_convert_11bit(code);
|
||||
+ if (code >= 0x2550 && code < 0x256d) // block graphics
|
||||
+ return code_points_2550[code - 0x2550];
|
||||
+
|
||||
+ return utf8_convert_2xxx(code);
|
||||
+}
|
||||
+
|
||||
+uint8_t convert_utf8_to_cp437(uint8_t c, uint32_t *esc)
|
||||
+{
|
||||
+ int shift;
|
||||
+ uint16_t ucs;
|
||||
+
|
||||
+ if (c < 127) // ASCII
|
||||
+ return c;
|
||||
+ if (c == 127)
|
||||
+ return 8; // DEL (?)
|
||||
+
|
||||
+ switch (c & 0xf0) {
|
||||
+ case 0xc0: case 0xd0: // two bytes sequence
|
||||
+ *esc = (1U << 24) | ((c & 0x1f) << 6);
|
||||
+ return 0;
|
||||
+ case 0xe0: // three bytes sequence
|
||||
+ *esc = (2U << 24) | ((c & 0x0f) << 12);
|
||||
+ return 0;
|
||||
+ case 0xf0: // four bytes sequence
|
||||
+ *esc = (3U << 24) | ((c & 0x07) << 18);
|
||||
+ return 0;
|
||||
+ case 0x80: case 0x90: case 0xa0: case 0xb0: // continuation
|
||||
+ shift = (*esc >> 24) - 1;
|
||||
+ ucs = *esc & 0xffffff;
|
||||
+ if (shift) {
|
||||
+ *esc = (shift << 24) | ucs | (c & 0x3f) << (shift * 6);
|
||||
+ return 0;
|
||||
+ }
|
||||
+ *esc = 0;
|
||||
+ return convert_uc16_to_cp437(ucs | (c & 0x3f));
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
diff --git a/drivers/video/vidconsole-uclass.c b/drivers/video/vidconsole-uclass.c
|
||||
index a6d994bd637c..a4029a58660b 100644
|
||||
--- a/drivers/video/vidconsole-uclass.c
|
||||
+++ b/drivers/video/vidconsole-uclass.c
|
||||
@@ -486,6 +486,7 @@ static int vidconsole_output_glyph(struct udevice *dev, char ch)
|
||||
int vidconsole_put_char(struct udevice *dev, char ch)
|
||||
{
|
||||
struct vidconsole_priv *priv = dev_get_uclass_priv(dev);
|
||||
+ uint8_t cp437;
|
||||
int ret;
|
||||
|
||||
/*
|
||||
@@ -527,7 +528,10 @@ int vidconsole_put_char(struct udevice *dev, char ch)
|
||||
priv->last_ch = 0;
|
||||
break;
|
||||
default:
|
||||
- ret = vidconsole_output_glyph(dev, ch);
|
||||
+ cp437 = convert_utf8_to_cp437(ch, &priv->ucs);
|
||||
+ if (cp437 == 0)
|
||||
+ return 0;
|
||||
+ ret = vidconsole_output_glyph(dev, cp437);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
break;
|
||||
diff --git a/include/video_console.h b/include/video_console.h
|
||||
index 949abb3861e7..dbfb389f324f 100644
|
||||
--- a/include/video_console.h
|
||||
+++ b/include/video_console.h
|
||||
@@ -59,6 +59,7 @@ struct vidconsole_priv {
|
||||
int escape_len;
|
||||
int row_saved;
|
||||
int col_saved;
|
||||
+ u32 ucs;
|
||||
bool cursor_visible;
|
||||
char escape_buf[32];
|
||||
};
|
||||
@@ -457,4 +458,12 @@ static inline int vidconsole_memmove(struct udevice *dev, void *dst,
|
||||
|
||||
#endif
|
||||
|
||||
+/*
|
||||
+ * Convert an UTF-8 byte into the corresponding character in the CP437
|
||||
+ * code page. Returns 0 if that character is part of a multi-byte sequence.
|
||||
+ * for which *esc holds the state of. Repeatedly feed in more bytes until
|
||||
+ * the return value returns a non-0 character.
|
||||
+ */
|
||||
+uint8_t convert_utf8_to_cp437(uint8_t c, uint32_t *esc);
|
||||
+
|
||||
#endif
|
||||
--
|
||||
2.42.0
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,42 +0,0 @@
|
||||
From 2ab104621dc97a89bc8f75e3b5903b83e793baf8 Mon Sep 17 00:00:00 2001
|
||||
From: Alper Nebi Yasak <alpernebiyasak@gmail.com>
|
||||
Date: Sat, 19 Aug 2023 16:43:58 +0300
|
||||
Subject: [PATCH] HACK: regulator: Don't error on reentrant regulator actions
|
||||
|
||||
Commit 4fcba5d556b42 ("regulator: implement basic reference counter")
|
||||
implements reference counting for regulator enable/disable actions, but
|
||||
does not update its callers to handle the error cases it adds. This
|
||||
breaks gru-kevin, report enabling the regulator as a success as a
|
||||
workaround. It would be better to fix the callers but that needs more
|
||||
debugging.
|
||||
|
||||
Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com>
|
||||
---
|
||||
drivers/power/regulator/regulator_common.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/power/regulator/regulator_common.c b/drivers/power/regulator/regulator_common.c
|
||||
index e26f5ebec347..1c2dfdf9b19d 100644
|
||||
--- a/drivers/power/regulator/regulator_common.c
|
||||
+++ b/drivers/power/regulator/regulator_common.c
|
||||
@@ -75,7 +75,7 @@ int regulator_common_set_enable(const struct udevice *dev,
|
||||
/* If previously enabled, increase count */
|
||||
if (enable && plat->enable_count > 0) {
|
||||
plat->enable_count++;
|
||||
- return -EALREADY;
|
||||
+ return 0;
|
||||
}
|
||||
|
||||
if (!enable) {
|
||||
@@ -85,7 +85,7 @@ int regulator_common_set_enable(const struct udevice *dev,
|
||||
return -EBUSY;
|
||||
} else if (!plat->enable_count) {
|
||||
/* If already disabled, do nothing */
|
||||
- return -EALREADY;
|
||||
+ return 0;
|
||||
}
|
||||
}
|
||||
|
||||
--
|
||||
2.42.0
|
||||
|
||||
@@ -1,307 +0,0 @@
|
||||
From b14bc4a5d8dc31294dde4ee9ce8008d763c695de Mon Sep 17 00:00:00 2001
|
||||
From: Alper Nebi Yasak <alpernebiyasak@gmail.com>
|
||||
Date: Fri, 13 Oct 2023 14:06:26 +0300
|
||||
Subject: [PATCH] HACK: rockchip: Remove binman image descriptions
|
||||
|
||||
For Rockchip boards binman tries to build SPI and MMC images that
|
||||
require an externally built BL31 file to be provided, and the build
|
||||
fails otherwise. This is not really as configurable as it should be.
|
||||
|
||||
Some downstreams only care about build outputs for U-Boot proper. As a
|
||||
hack to make sure they can do so without building BL31, remove the
|
||||
binman image descriptions from the device-tree sources. However,
|
||||
BINMAN_FDT expects these to be present and has to be disabled as well.
|
||||
|
||||
Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com>
|
||||
---
|
||||
arch/arm/dts/rk3288-u-boot.dtsi | 24 ----
|
||||
arch/arm/dts/rk3399-gru-u-boot.dtsi | 6 -
|
||||
arch/arm/dts/rk3399-u-boot.dtsi | 25 ----
|
||||
arch/arm/dts/rockchip-u-boot.dtsi | 186 ----------------------------
|
||||
4 files changed, 241 deletions(-)
|
||||
|
||||
diff --git a/arch/arm/dts/rk3288-u-boot.dtsi b/arch/arm/dts/rk3288-u-boot.dtsi
|
||||
index c4c5a2d225c4..432ab92d97c9 100644
|
||||
--- a/arch/arm/dts/rk3288-u-boot.dtsi
|
||||
+++ b/arch/arm/dts/rk3288-u-boot.dtsi
|
||||
@@ -55,30 +55,6 @@ noc: syscon@ffac0000 {
|
||||
};
|
||||
};
|
||||
|
||||
-#if defined(CONFIG_ROCKCHIP_SPI_IMAGE) && defined(CONFIG_HAS_ROM)
|
||||
-&binman {
|
||||
- rom {
|
||||
- filename = "u-boot.rom";
|
||||
- size = <0x400000>;
|
||||
- pad-byte = <0xff>;
|
||||
-
|
||||
- mkimage {
|
||||
- args = "-n rk3288 -T rkspi";
|
||||
- u-boot-spl {
|
||||
- };
|
||||
- };
|
||||
- u-boot-img {
|
||||
- offset = <0x20000>;
|
||||
- };
|
||||
- u-boot {
|
||||
- offset = <0x300000>;
|
||||
- };
|
||||
- fdtmap {
|
||||
- };
|
||||
- };
|
||||
-};
|
||||
-#endif
|
||||
-
|
||||
&bus_intmem {
|
||||
ddr_sram: ddr-sram@1000 {
|
||||
compatible = "rockchip,rk3288-ddr-sram";
|
||||
diff --git a/arch/arm/dts/rk3399-gru-u-boot.dtsi b/arch/arm/dts/rk3399-gru-u-boot.dtsi
|
||||
index b1604a6872c0..54296b4d7a1c 100644
|
||||
--- a/arch/arm/dts/rk3399-gru-u-boot.dtsi
|
||||
+++ b/arch/arm/dts/rk3399-gru-u-boot.dtsi
|
||||
@@ -15,12 +15,6 @@ config {
|
||||
};
|
||||
};
|
||||
|
||||
-&binman {
|
||||
- rom {
|
||||
- size = <0x800000>;
|
||||
- };
|
||||
-};
|
||||
-
|
||||
&cros_ec {
|
||||
ec-interrupt = <&gpio0 RK_PA1 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
diff --git a/arch/arm/dts/rk3399-u-boot.dtsi b/arch/arm/dts/rk3399-u-boot.dtsi
|
||||
index 3423b882c437..0bf4c481b39a 100644
|
||||
--- a/arch/arm/dts/rk3399-u-boot.dtsi
|
||||
+++ b/arch/arm/dts/rk3399-u-boot.dtsi
|
||||
@@ -60,31 +60,6 @@ pmusgrf: syscon@ff330000 {
|
||||
|
||||
};
|
||||
|
||||
-#if defined(CONFIG_ROCKCHIP_SPI_IMAGE) && defined(CONFIG_HAS_ROM)
|
||||
-&binman {
|
||||
- multiple-images;
|
||||
- rom {
|
||||
- filename = "u-boot.rom";
|
||||
- size = <0x400000>;
|
||||
- pad-byte = <0xff>;
|
||||
-
|
||||
- mkimage {
|
||||
- args = "-n rk3399 -T rkspi";
|
||||
- u-boot-spl {
|
||||
- };
|
||||
- };
|
||||
- u-boot-img {
|
||||
- offset = <0x40000>;
|
||||
- };
|
||||
- u-boot {
|
||||
- offset = <0x300000>;
|
||||
- };
|
||||
- fdtmap {
|
||||
- };
|
||||
- };
|
||||
-};
|
||||
-#endif /* CONFIG_ROCKCHIP_SPI_IMAGE && CONFIG_HAS_ROM */
|
||||
-
|
||||
&cru {
|
||||
bootph-all;
|
||||
};
|
||||
diff --git a/arch/arm/dts/rockchip-u-boot.dtsi b/arch/arm/dts/rockchip-u-boot.dtsi
|
||||
index be2658e8ef18..3d55553e4401 100644
|
||||
--- a/arch/arm/dts/rockchip-u-boot.dtsi
|
||||
+++ b/arch/arm/dts/rockchip-u-boot.dtsi
|
||||
@@ -10,189 +10,3 @@ binman: binman {
|
||||
multiple-images;
|
||||
};
|
||||
};
|
||||
-
|
||||
-#ifdef CONFIG_SPL
|
||||
-&binman {
|
||||
- simple-bin {
|
||||
- filename = "u-boot-rockchip.bin";
|
||||
- pad-byte = <0xff>;
|
||||
-
|
||||
- mkimage {
|
||||
- filename = "idbloader.img";
|
||||
- args = "-n", CONFIG_SYS_SOC, "-T", "rksd";
|
||||
- multiple-data-files;
|
||||
-
|
||||
-#ifdef CONFIG_ROCKCHIP_EXTERNAL_TPL
|
||||
- rockchip-tpl {
|
||||
- };
|
||||
-#elif defined(CONFIG_TPL)
|
||||
- u-boot-tpl {
|
||||
- };
|
||||
-#endif
|
||||
- u-boot-spl {
|
||||
- };
|
||||
- };
|
||||
-
|
||||
-#if defined(CONFIG_SPL_FIT) && (defined(CONFIG_ARM64) || defined(CONFIG_SPL_OPTEE_IMAGE))
|
||||
- fit: fit {
|
||||
-#ifdef CONFIG_ARM64
|
||||
- description = "FIT image for U-Boot with bl31 (TF-A)";
|
||||
-#else
|
||||
- description = "FIT image with OP-TEE";
|
||||
-#endif
|
||||
- #address-cells = <1>;
|
||||
- fit,fdt-list = "of-list";
|
||||
- filename = "u-boot.itb";
|
||||
- fit,external-offset = <CONFIG_FIT_EXTERNAL_OFFSET>;
|
||||
- fit,align = <512>;
|
||||
- offset = <CONFIG_SPL_PAD_TO>;
|
||||
- images {
|
||||
- u-boot {
|
||||
- description = "U-Boot";
|
||||
- type = "standalone";
|
||||
- os = "U-Boot";
|
||||
-#ifdef CONFIG_ARM64
|
||||
- arch = "arm64";
|
||||
-#else
|
||||
- arch = "arm";
|
||||
-#endif
|
||||
- compression = "none";
|
||||
- load = <CONFIG_TEXT_BASE>;
|
||||
- entry = <CONFIG_TEXT_BASE>;
|
||||
- u-boot-nodtb {
|
||||
- };
|
||||
-#ifdef CONFIG_SPL_FIT_SIGNATURE
|
||||
- hash {
|
||||
- algo = "sha256";
|
||||
- };
|
||||
-#endif
|
||||
- };
|
||||
-
|
||||
-#ifdef CONFIG_ARM64
|
||||
- @atf-SEQ {
|
||||
- fit,operation = "split-elf";
|
||||
- description = "ARM Trusted Firmware";
|
||||
- type = "firmware";
|
||||
- arch = "arm64";
|
||||
- os = "arm-trusted-firmware";
|
||||
- compression = "none";
|
||||
- fit,load;
|
||||
- fit,entry;
|
||||
- fit,data;
|
||||
-
|
||||
- atf-bl31 {
|
||||
- };
|
||||
-#ifdef CONFIG_SPL_FIT_SIGNATURE
|
||||
- hash {
|
||||
- algo = "sha256";
|
||||
- };
|
||||
-#endif
|
||||
- };
|
||||
- @tee-SEQ {
|
||||
- fit,operation = "split-elf";
|
||||
- description = "TEE";
|
||||
- type = "tee";
|
||||
- arch = "arm64";
|
||||
- os = "tee";
|
||||
- compression = "none";
|
||||
- fit,load;
|
||||
- fit,entry;
|
||||
- fit,data;
|
||||
-
|
||||
- tee-os {
|
||||
- optional;
|
||||
- };
|
||||
-#ifdef CONFIG_SPL_FIT_SIGNATURE
|
||||
- hash {
|
||||
- algo = "sha256";
|
||||
- };
|
||||
-#endif
|
||||
- };
|
||||
-#else
|
||||
- op-tee {
|
||||
- description = "OP-TEE";
|
||||
- type = "tee";
|
||||
- arch = "arm";
|
||||
- os = "tee";
|
||||
- compression = "none";
|
||||
- load = <(CFG_SYS_SDRAM_BASE + 0x8400000)>;
|
||||
- entry = <(CFG_SYS_SDRAM_BASE + 0x8400000)>;
|
||||
-
|
||||
- tee-os {
|
||||
- };
|
||||
-#ifdef CONFIG_SPL_FIT_SIGNATURE
|
||||
- hash {
|
||||
- algo = "sha256";
|
||||
- };
|
||||
-#endif
|
||||
- };
|
||||
-#endif
|
||||
-
|
||||
- @fdt-SEQ {
|
||||
- description = "fdt-NAME";
|
||||
- compression = "none";
|
||||
- type = "flat_dt";
|
||||
-#ifdef CONFIG_SPL_FIT_SIGNATURE
|
||||
- hash {
|
||||
- algo = "sha256";
|
||||
- };
|
||||
-#endif
|
||||
- };
|
||||
- };
|
||||
-
|
||||
- configurations {
|
||||
- default = "@config-DEFAULT-SEQ";
|
||||
- @config-SEQ {
|
||||
- description = "NAME.dtb";
|
||||
- fdt = "fdt-SEQ";
|
||||
-#ifdef CONFIG_ARM64
|
||||
- fit,firmware = "atf-1", "u-boot";
|
||||
-#else
|
||||
- fit,firmware = "op-tee", "u-boot";
|
||||
-#endif
|
||||
- fit,loadables;
|
||||
- };
|
||||
- };
|
||||
- };
|
||||
-#else
|
||||
- u-boot-img {
|
||||
- offset = <CONFIG_SPL_PAD_TO>;
|
||||
- };
|
||||
-#endif
|
||||
- };
|
||||
-
|
||||
-#ifdef CONFIG_ROCKCHIP_SPI_IMAGE
|
||||
- simple-bin-spi {
|
||||
- filename = "u-boot-rockchip-spi.bin";
|
||||
- pad-byte = <0xff>;
|
||||
-
|
||||
- mkimage {
|
||||
- filename = "idbloader-spi.img";
|
||||
- args = "-n", CONFIG_SYS_SOC, "-T", "rkspi";
|
||||
- multiple-data-files;
|
||||
-
|
||||
-#ifdef CONFIG_ROCKCHIP_EXTERNAL_TPL
|
||||
- rockchip-tpl {
|
||||
- };
|
||||
-#elif defined(CONFIG_TPL)
|
||||
- u-boot-tpl {
|
||||
- };
|
||||
-#endif
|
||||
- u-boot-spl {
|
||||
- };
|
||||
- };
|
||||
-
|
||||
-#if defined(CONFIG_ARM64) || defined(CONFIG_SPL_OPTEE_IMAGE)
|
||||
- fit {
|
||||
- type = "blob";
|
||||
- filename = "u-boot.itb";
|
||||
-#else
|
||||
- u-boot-img {
|
||||
-#endif
|
||||
- /* Sync with u-boot,spl-payload-offset if present */
|
||||
- offset = <CONFIG_SYS_SPI_U_BOOT_OFFS>;
|
||||
- };
|
||||
- };
|
||||
-#endif /* CONFIG_ROCKCHIP_SPI_IMAGE */
|
||||
-};
|
||||
-#endif /* CONFIG_SPL */
|
||||
--
|
||||
2.42.0
|
||||
|
||||
@@ -1,348 +0,0 @@
|
||||
From 2957e8bf43edf8de6e579ce1ed7f95e5bb4a1437 Mon Sep 17 00:00:00 2001
|
||||
From: Alper Nebi Yasak <alpernebiyasak@gmail.com>
|
||||
Date: Mon, 14 Aug 2023 20:39:41 +0300
|
||||
Subject: [PATCH 1/4] arm: qemu: Enable Bochs video support
|
||||
|
||||
Commit 716161663ec49 ("riscv: qemu: Enable Bochs video support") enables
|
||||
a video console for QEMU RISC-V virtual machines using an emulated Bochs
|
||||
VGA card. Similarly, enable it for ARM virtual machines as well.
|
||||
|
||||
Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com>
|
||||
Reviewed-by: Bin Meng <bmeng@tinylab.org>
|
||||
Link: https://lore.kernel.org/u-boot/20230814173944.288356-2-alpernebiyasak@gmail.com/
|
||||
---
|
||||
arch/arm/Kconfig | 4 ++++
|
||||
board/emulation/qemu-arm/qemu-arm.env | 3 +++
|
||||
doc/board/emulation/qemu-arm.rst | 4 ++++
|
||||
3 files changed, 11 insertions(+)
|
||||
|
||||
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
|
||||
index 328e2ddc33af..d96e230e9ee8 100644
|
||||
--- a/arch/arm/Kconfig
|
||||
+++ b/arch/arm/Kconfig
|
||||
@@ -1036,6 +1036,10 @@ config ARCH_QEMU
|
||||
imply DM_RTC
|
||||
imply RTC_PL031
|
||||
imply OF_HAS_PRIOR_STAGE
|
||||
+ imply VIDEO
|
||||
+ imply VIDEO_BOCHS
|
||||
+ imply SYS_WHITE_ON_BLACK
|
||||
+ imply SYS_CONSOLE_IS_IN_ENV
|
||||
|
||||
config ARCH_RMOBILE
|
||||
bool "Renesas ARM SoCs"
|
||||
diff --git a/board/emulation/qemu-arm/qemu-arm.env b/board/emulation/qemu-arm/qemu-arm.env
|
||||
index e658d5ee7d63..86a99a2e8713 100644
|
||||
--- a/board/emulation/qemu-arm/qemu-arm.env
|
||||
+++ b/board/emulation/qemu-arm/qemu-arm.env
|
||||
@@ -2,6 +2,9 @@
|
||||
|
||||
/* environment for qemu-arm and qemu-arm64 */
|
||||
|
||||
+stdin=serial
|
||||
+stdout=serial,vidconsole
|
||||
+stderr=serial,vidconsole
|
||||
fdt_high=0xffffffff
|
||||
initrd_high=0xffffffff
|
||||
fdt_addr=0x40000000
|
||||
diff --git a/doc/board/emulation/qemu-arm.rst b/doc/board/emulation/qemu-arm.rst
|
||||
index 7291fa4a3150..c423fce76edd 100644
|
||||
--- a/doc/board/emulation/qemu-arm.rst
|
||||
+++ b/doc/board/emulation/qemu-arm.rst
|
||||
@@ -67,6 +67,10 @@ Additional persistent U-Boot environment support can be added as follows:
|
||||
Additional peripherals that have been tested to work in both U-Boot and Linux
|
||||
can be enabled with the following command line parameters:
|
||||
|
||||
+- To add a video console, remove "-nographic" and add e.g.::
|
||||
+
|
||||
+ -serial stdio -device VGA
|
||||
+
|
||||
- To add a Serial ATA disk via an Intel ICH9 AHCI controller, pass e.g.::
|
||||
|
||||
-drive if=none,file=disk.img,format=raw,id=mydisk \
|
||||
--
|
||||
2.42.0
|
||||
|
||||
|
||||
From 5330bc1c2ad84ba9ecc473f8c24d6e15b366adf9 Mon Sep 17 00:00:00 2001
|
||||
From: Alper Nebi Yasak <alpernebiyasak@gmail.com>
|
||||
Date: Mon, 14 Aug 2023 20:39:42 +0300
|
||||
Subject: [PATCH 2/4] arm: qemu: Enable PRE_CONSOLE_BUFFER
|
||||
|
||||
Commit 608b80b5b855 ("riscv: qemu: Enable PRE_CONSOLE_BUFFER") enables
|
||||
buffering console messages for QEMU RISC-V virtual machines so those
|
||||
printed before the video console is available will still show up on the
|
||||
display. Similarly, enable it for ARM virtual machines as well.
|
||||
|
||||
Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com>
|
||||
Reviewed-by: Simon Glass <sjg@chromium.org>
|
||||
Reviewed-by: Bin Meng <bmeng@tinylab.org>
|
||||
Link: https://lore.kernel.org/u-boot/20230814173944.288356-3-alpernebiyasak@gmail.com/
|
||||
---
|
||||
arch/arm/Kconfig | 1 +
|
||||
board/emulation/qemu-arm/Kconfig | 4 ++++
|
||||
2 files changed, 5 insertions(+)
|
||||
|
||||
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
|
||||
index d96e230e9ee8..1cc2be55140a 100644
|
||||
--- a/arch/arm/Kconfig
|
||||
+++ b/arch/arm/Kconfig
|
||||
@@ -1040,6 +1040,7 @@ config ARCH_QEMU
|
||||
imply VIDEO_BOCHS
|
||||
imply SYS_WHITE_ON_BLACK
|
||||
imply SYS_CONSOLE_IS_IN_ENV
|
||||
+ imply PRE_CONSOLE_BUFFER
|
||||
|
||||
config ARCH_RMOBILE
|
||||
bool "Renesas ARM SoCs"
|
||||
diff --git a/board/emulation/qemu-arm/Kconfig b/board/emulation/qemu-arm/Kconfig
|
||||
index ed9949651c4b..09c95413a541 100644
|
||||
--- a/board/emulation/qemu-arm/Kconfig
|
||||
+++ b/board/emulation/qemu-arm/Kconfig
|
||||
@@ -12,6 +12,10 @@ config BOARD_SPECIFIC_OPTIONS # dummy
|
||||
imply VIRTIO_NET
|
||||
imply VIRTIO_BLK
|
||||
|
||||
+config PRE_CON_BUF_ADDR
|
||||
+ hex
|
||||
+ default 0x40100000
|
||||
+
|
||||
endif
|
||||
|
||||
if TARGET_QEMU_ARM_64BIT && !TFABOOT
|
||||
--
|
||||
2.42.0
|
||||
|
||||
|
||||
From 7f666214855d062dc939ff54a0fa52fbde9f0391 Mon Sep 17 00:00:00 2001
|
||||
From: Alper Nebi Yasak <alpernebiyasak@gmail.com>
|
||||
Date: Mon, 14 Aug 2023 20:39:43 +0300
|
||||
Subject: [PATCH 3/4] arm: qemu: Enable usb keyboard as an input device
|
||||
|
||||
Commit 02be57caf730 ("riscv: qemu: Enable usb keyboard as an input
|
||||
device") adds PCI xHCI support to QEMU RISC-V virtual machines and
|
||||
enables using a USB keyboard as one of the input devices. Similarly,
|
||||
enable those for ARM virtual machines as well.
|
||||
|
||||
Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com>
|
||||
Reviewed-by: Simon Glass <sjg@chromium.org>
|
||||
Reviewed-by: Bin Meng <bmeng@tinylab.org>
|
||||
Link: https://lore.kernel.org/u-boot/20230814173944.288356-4-alpernebiyasak@gmail.com/
|
||||
---
|
||||
arch/arm/Kconfig | 5 +++++
|
||||
board/emulation/qemu-arm/qemu-arm.c | 5 +++++
|
||||
board/emulation/qemu-arm/qemu-arm.env | 2 +-
|
||||
configs/qemu_arm64_defconfig | 2 --
|
||||
configs/qemu_arm_defconfig | 2 --
|
||||
doc/board/emulation/qemu-arm.rst | 4 ++++
|
||||
6 files changed, 15 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
|
||||
index 1cc2be55140a..4c739bd9bc82 100644
|
||||
--- a/arch/arm/Kconfig
|
||||
+++ b/arch/arm/Kconfig
|
||||
@@ -1041,6 +1041,11 @@ config ARCH_QEMU
|
||||
imply SYS_WHITE_ON_BLACK
|
||||
imply SYS_CONSOLE_IS_IN_ENV
|
||||
imply PRE_CONSOLE_BUFFER
|
||||
+ imply USB
|
||||
+ imply USB_XHCI_HCD
|
||||
+ imply USB_XHCI_PCI
|
||||
+ imply USB_KEYBOARD
|
||||
+ imply CMD_USB
|
||||
|
||||
config ARCH_RMOBILE
|
||||
bool "Renesas ARM SoCs"
|
||||
diff --git a/board/emulation/qemu-arm/qemu-arm.c b/board/emulation/qemu-arm/qemu-arm.c
|
||||
index dfea0d92a3c8..942f1fff5717 100644
|
||||
--- a/board/emulation/qemu-arm/qemu-arm.c
|
||||
+++ b/board/emulation/qemu-arm/qemu-arm.c
|
||||
@@ -11,6 +11,7 @@
|
||||
#include <fdtdec.h>
|
||||
#include <init.h>
|
||||
#include <log.h>
|
||||
+#include <usb.h>
|
||||
#include <virtio_types.h>
|
||||
#include <virtio.h>
|
||||
|
||||
@@ -114,6 +115,10 @@ int board_late_init(void)
|
||||
*/
|
||||
virtio_init();
|
||||
|
||||
+ /* start usb so that usb keyboard can be used as input device */
|
||||
+ if (CONFIG_IS_ENABLED(USB_KEYBOARD))
|
||||
+ usb_init();
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
|
||||
diff --git a/board/emulation/qemu-arm/qemu-arm.env b/board/emulation/qemu-arm/qemu-arm.env
|
||||
index 86a99a2e8713..fb4adef281ed 100644
|
||||
--- a/board/emulation/qemu-arm/qemu-arm.env
|
||||
+++ b/board/emulation/qemu-arm/qemu-arm.env
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
/* environment for qemu-arm and qemu-arm64 */
|
||||
|
||||
-stdin=serial
|
||||
+stdin=serial,usbkbd
|
||||
stdout=serial,vidconsole
|
||||
stderr=serial,vidconsole
|
||||
fdt_high=0xffffffff
|
||||
diff --git a/configs/qemu_arm64_defconfig b/configs/qemu_arm64_defconfig
|
||||
index 94bd96678443..f6b8ae530a4a 100644
|
||||
--- a/configs/qemu_arm64_defconfig
|
||||
+++ b/configs/qemu_arm64_defconfig
|
||||
@@ -35,7 +35,6 @@ CONFIG_CMD_NVEDIT_EFI=y
|
||||
CONFIG_CMD_DFU=y
|
||||
CONFIG_CMD_MTD=y
|
||||
CONFIG_CMD_PCI=y
|
||||
-CONFIG_CMD_USB=y
|
||||
CONFIG_CMD_TPM=y
|
||||
CONFIG_CMD_MTDPARTS=y
|
||||
CONFIG_ENV_IS_IN_FLASH=y
|
||||
@@ -68,7 +67,6 @@ CONFIG_SYSRESET=y
|
||||
CONFIG_SYSRESET_CMD_POWEROFF=y
|
||||
CONFIG_SYSRESET_PSCI=y
|
||||
CONFIG_TPM2_MMIO=y
|
||||
-CONFIG_USB=y
|
||||
CONFIG_USB_EHCI_HCD=y
|
||||
CONFIG_USB_EHCI_PCI=y
|
||||
CONFIG_TPM=y
|
||||
diff --git a/configs/qemu_arm_defconfig b/configs/qemu_arm_defconfig
|
||||
index 7cb1e9f037ff..1347b86f34b1 100644
|
||||
--- a/configs/qemu_arm_defconfig
|
||||
+++ b/configs/qemu_arm_defconfig
|
||||
@@ -36,7 +36,6 @@ CONFIG_CMD_NVEDIT_EFI=y
|
||||
CONFIG_CMD_DFU=y
|
||||
CONFIG_CMD_MTD=y
|
||||
CONFIG_CMD_PCI=y
|
||||
-CONFIG_CMD_USB=y
|
||||
CONFIG_CMD_TPM=y
|
||||
CONFIG_CMD_MTDPARTS=y
|
||||
CONFIG_ENV_IS_IN_FLASH=y
|
||||
@@ -69,7 +68,6 @@ CONFIG_SYSRESET=y
|
||||
CONFIG_SYSRESET_CMD_POWEROFF=y
|
||||
CONFIG_SYSRESET_PSCI=y
|
||||
CONFIG_TPM2_MMIO=y
|
||||
-CONFIG_USB=y
|
||||
CONFIG_USB_EHCI_HCD=y
|
||||
CONFIG_USB_EHCI_PCI=y
|
||||
CONFIG_TPM=y
|
||||
diff --git a/doc/board/emulation/qemu-arm.rst b/doc/board/emulation/qemu-arm.rst
|
||||
index c423fce76edd..5481ef6da328 100644
|
||||
--- a/doc/board/emulation/qemu-arm.rst
|
||||
+++ b/doc/board/emulation/qemu-arm.rst
|
||||
@@ -84,6 +84,10 @@ can be enabled with the following command line parameters:
|
||||
|
||||
-device usb-ehci,id=ehci
|
||||
|
||||
+- To add a USB keyboard attached to an emulated xHCI controller, pass e.g.::
|
||||
+
|
||||
+ -device qemu-xhci,id=xhci -device usb-kbd,bus=xhci.0
|
||||
+
|
||||
- To add an NVMe disk, pass e.g.::
|
||||
|
||||
-drive if=none,file=disk.img,id=mydisk -device nvme,drive=mydisk,serial=foo
|
||||
--
|
||||
2.42.0
|
||||
|
||||
|
||||
From fcc1b6cb56beaaf90bf80928627a606f33a42c3c Mon Sep 17 00:00:00 2001
|
||||
From: Alper Nebi Yasak <alpernebiyasak@gmail.com>
|
||||
Date: Mon, 14 Aug 2023 20:39:44 +0300
|
||||
Subject: [PATCH 4/4] doc: qemu: arm: Add a section on booting Linux distros
|
||||
|
||||
Add an example qemu-system-aarch64 command that can make U-Boot on QEMU
|
||||
boot into the Debian Installer, along with resulting console messages
|
||||
from U-Boot, based on the existing documentation section for the x86
|
||||
version.
|
||||
|
||||
Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com>
|
||||
Link: https://lore.kernel.org/u-boot/20230814173944.288356-5-alpernebiyasak@gmail.com/
|
||||
---
|
||||
doc/board/emulation/qemu-arm.rst | 68 ++++++++++++++++++++++++++++++++
|
||||
1 file changed, 68 insertions(+)
|
||||
|
||||
diff --git a/doc/board/emulation/qemu-arm.rst b/doc/board/emulation/qemu-arm.rst
|
||||
index 5481ef6da328..1c91c7f3ac67 100644
|
||||
--- a/doc/board/emulation/qemu-arm.rst
|
||||
+++ b/doc/board/emulation/qemu-arm.rst
|
||||
@@ -98,6 +98,74 @@ can be enabled with the following command line parameters:
|
||||
|
||||
These have been tested in QEMU 2.9.0 but should work in at least 2.5.0 as well.
|
||||
|
||||
+Booting distros
|
||||
+---------------
|
||||
+
|
||||
+It is possible to install and boot a standard Linux distribution using
|
||||
+qemu_arm64 by setting up a root disk::
|
||||
+
|
||||
+ qemu-img create root.img 20G
|
||||
+
|
||||
+then using the installer to install. For example, with Debian 12::
|
||||
+
|
||||
+ qemu-system-aarch64 \
|
||||
+ -machine virt -cpu cortex-a53 -m 4G -smp 4 \
|
||||
+ -bios u-boot.bin \
|
||||
+ -serial stdio -device VGA \
|
||||
+ -nic user,model=virtio-net-pci \
|
||||
+ -device virtio-rng-pci \
|
||||
+ -device qemu-xhci,id=xhci \
|
||||
+ -device usb-kbd -device usb-tablet \
|
||||
+ -drive if=virtio,file=debian-12.0.0-arm64-netinst.iso,format=raw,readonly=on,media=cdrom \
|
||||
+ -drive if=virtio,file=root.img,format=raw,media=disk
|
||||
+
|
||||
+The output will be something like this::
|
||||
+
|
||||
+ U-Boot 2023.10-rc2-00075-gbe8fbe718e35 (Aug 11 2023 - 08:38:49 +0000)
|
||||
+
|
||||
+ DRAM: 4 GiB
|
||||
+ Core: 51 devices, 14 uclasses, devicetree: board
|
||||
+ Flash: 64 MiB
|
||||
+ Loading Environment from Flash... *** Warning - bad CRC, using default environment
|
||||
+
|
||||
+ In: serial,usbkbd
|
||||
+ Out: serial,vidconsole
|
||||
+ Err: serial,vidconsole
|
||||
+ Bus xhci_pci: Register 8001040 NbrPorts 8
|
||||
+ Starting the controller
|
||||
+ USB XHCI 1.00
|
||||
+ scanning bus xhci_pci for devices... 3 USB Device(s) found
|
||||
+ Net: eth0: virtio-net#32
|
||||
+ Hit any key to stop autoboot: 0
|
||||
+ Scanning for bootflows in all bootdevs
|
||||
+ Seq Method State Uclass Part Name Filename
|
||||
+ --- ----------- ------ -------- ---- ------------------------ ----------------
|
||||
+ Scanning global bootmeth 'efi_mgr':
|
||||
+ Scanning bootdev 'fw-cfg@9020000.bootdev':
|
||||
+ fatal: no kernel available
|
||||
+ scanning bus for devices...
|
||||
+ Scanning bootdev 'virtio-blk#34.bootdev':
|
||||
+ 0 efi ready virtio 2 virtio-blk#34.bootdev.par efi/boot/bootaa64.efi
|
||||
+ ** Booting bootflow 'virtio-blk#34.bootdev.part_2' with efi
|
||||
+ Using prior-stage device tree
|
||||
+ Failed to load EFI variables
|
||||
+ Error: writing contents
|
||||
+ ** Unable to write file ubootefi.var **
|
||||
+ Failed to persist EFI variables
|
||||
+ Missing TPMv2 device for EFI_TCG_PROTOCOL
|
||||
+ Booting /efi\boot\bootaa64.efi
|
||||
+ Error: writing contents
|
||||
+ ** Unable to write file ubootefi.var **
|
||||
+ Failed to persist EFI variables
|
||||
+ Welcome to GRUB!
|
||||
+
|
||||
+Standard boot looks through various available devices and finds the virtio
|
||||
+disks, then boots from the first one. After a second or so the grub menu appears
|
||||
+and you can work through the installer flow normally.
|
||||
+
|
||||
+After the installation, you can boot into the installed system by running QEMU
|
||||
+again without the drive argument corresponding to the installer CD image.
|
||||
+
|
||||
Enabling TPMv2 support
|
||||
----------------------
|
||||
|
||||
--
|
||||
2.42.0
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
tree="default"
|
||||
rev="4459ed60cb1e0562bc5b40405e2b4b9bbf766d57" # v2023.10
|
||||
arch="AArch64"
|
||||
@@ -1,2 +0,0 @@
|
||||
tree="default"
|
||||
arch="AArch64"
|
||||
@@ -1,2 +0,0 @@
|
||||
tree="default"
|
||||
arch="AArch64"
|
||||
@@ -1,2 +0,0 @@
|
||||
tree="default"
|
||||
arch="AArch64"
|
||||
@@ -1,2 +0,0 @@
|
||||
tree="default"
|
||||
arch="x86_64"
|
||||
128
config/vendor/sources
vendored
128
config/vendor/sources
vendored
@@ -1,128 +0,0 @@
|
||||
# This file holds the download sources for various intel blobs
|
||||
# board shortnames are listed and enclosed by '{}' followed by an opening
|
||||
# and closing '{}' for all blobs available for the board.
|
||||
# The board shortname must be the name of the board minus the trailing rom size.
|
||||
# If you want to make additions, try to add a backup url for download links and
|
||||
# list hashes as sha1 sums.
|
||||
|
||||
# NOTE: this file now defines checksums as sha512 (of the sha-2 family),
|
||||
# where previously we used 160-bit SHA-1 algorithm; SHA-1 is not secure,
|
||||
# having demonstrated collisions, so we have switched to using sha512sum
|
||||
|
||||
{x230 x230t x230i x230edp t430 t530 w530}{
|
||||
DL_hash 4dc908050c91c1227645c900ddee88652937540af4ba222b0239b7f459f260cdf6e5e8113ac14e5543d00cf53abdd6c7bd23e61f690de1ce45a3709a30cbb91c
|
||||
DL_url https://download.lenovo.com/pccbbs/mobiles/g1rg24ww.exe
|
||||
DL_url_bkup https://web.archive.org/web/20210706183911/https://download.lenovo.com/pccbbs/mobiles/g1rg24ww.exe
|
||||
}
|
||||
|
||||
{x220 x220t t420 t520 t420s}{
|
||||
DL_hash 81c9917938c4a2a4f128c976250451931efd0f25b51ff34f058ddacb8eec27272691371864a683ec7abcb924fea32592d061584c7b2571a5d3e84eb870281cc3
|
||||
DL_url https://download.lenovo.com/ibmdl/pub/pc/pccbbs/mobiles/83rf46ww.exe
|
||||
DL_url_bkup https://web.archive.org/web/20220202201637/https://download.lenovo.com/ibmdl/pub/pc/pccbbs/mobiles/83rf46ww.exe
|
||||
}
|
||||
|
||||
# NOTE: google's manifest for archives containing mrc.bin, used here:
|
||||
# https://web.archive.org/web/20210211071412/https://dl.google.com/dl/edgedl/chromeos/recovery/recovery.conf
|
||||
{t440pmrc w541mrc t440plibremrc w541}{
|
||||
DL_hash f3d79aec805c8b0094a4081be76b3a22d329c479ad18210449b7acc3236ccfc4a2103eaa7c5b79a4872bfd699eede047efd46dfb06dc8f47e3216fc254612998
|
||||
DL_url https://download.lenovo.com/pccbbs/mobiles/glrg22ww.exe
|
||||
DL_url_bkup https://web.archive.org/web/20211120031520/https://download.lenovo.com/pccbbs/mobiles/glrg22ww.exe
|
||||
MRC_url https://dl.google.com/dl/edgedl/chromeos/recovery/chromeos_12239.92.0_peppy_recovery_stable-channel_mp-v3.bin.zip
|
||||
MRC_url_bkup https://web.archive.org/web/20200516070928/https://dl.google.com/dl/edgedl/chromeos/recovery/chromeos_12239.92.0_peppy_recovery_stable-channel_mp-v3.bin.zip
|
||||
MRC_hash 340a1cd41136a3ba0de9d306db0e65f51640a2efe63aee9934f326b276adc1af0a2df80c0731c5a749161ec32546909eedfa8ba95801faeb5dcfe1aa4e0840c7
|
||||
MRC_board peppy
|
||||
}
|
||||
|
||||
{hp8200sff}{
|
||||
DL_hash 8fcb691bf84dc1feefc3c84f7cc59eadaabb200477bb3ecba1b050f23f133b0a8c2539015a523f676544c2dff64599bcba7e844e8c31757b90d70bb4485b5664
|
||||
DL_url https://ftp.ext.hp.com/pub/softpaq/sp96001-96500/sp96026.exe
|
||||
DL_url_bkup https://web.archive.org/web/20220708171920/https://ftp.ext.hp.com/pub/softpaq/sp96001-96500/sp96026.exe
|
||||
}
|
||||
|
||||
{hp8300usdt}{
|
||||
DL_hash 4dc908050c91c1227645c900ddee88652937540af4ba222b0239b7f459f260cdf6e5e8113ac14e5543d00cf53abdd6c7bd23e61f690de1ce45a3709a30cbb91c
|
||||
DL_url https://download.lenovo.com/pccbbs/mobiles/g1rg24ww.exe
|
||||
DL_url_bkup https://web.archive.org/web/20210706183911/https://download.lenovo.com/pccbbs/mobiles/g1rg24ww.exe
|
||||
}
|
||||
|
||||
{hp2560p}{
|
||||
DL_hash 81c9917938c4a2a4f128c976250451931efd0f25b51ff34f058ddacb8eec27272691371864a683ec7abcb924fea32592d061584c7b2571a5d3e84eb870281cc3
|
||||
DL_url https://download.lenovo.com/ibmdl/pub/pc/pccbbs/mobiles/83rf46ww.exe
|
||||
DL_url_bkup https://web.archive.org/web/20220202201637/https://download.lenovo.com/ibmdl/pub/pc/pccbbs/mobiles/83rf46ww.exe
|
||||
|
||||
EC_hash a602cc7627c569bc423a5857cf506fbc3bcd68cb6b43a7c1b99d12a569b4107c412748cf49605ef4d5b930eb14b6815c4d1b1dc20145fe9d707e445fc201cea2
|
||||
EC_url https://ftp.hp.com/pub/softpaq/sp85501-86000/sp85526.exe
|
||||
EC_url_bkup https://web.archive.org/web/20230416125725/https://ftp.hp.com/pub/softpaq/sp85501-86000/sp85526.exe
|
||||
}
|
||||
|
||||
{hp2570p}{
|
||||
DL_hash 4dc908050c91c1227645c900ddee88652937540af4ba222b0239b7f459f260cdf6e5e8113ac14e5543d00cf53abdd6c7bd23e61f690de1ce45a3709a30cbb91c
|
||||
DL_url https://download.lenovo.com/pccbbs/mobiles/g1rg24ww.exe
|
||||
DL_url_bkup https://web.archive.org/web/20210706183911/https://download.lenovo.com/pccbbs/mobiles/g1rg24ww.exe
|
||||
|
||||
EC_hash 61ed284bdf938c5f36ad3267263fb3963a6608339425bc41aaef3ab0cd98f07c998d816b0233735ca35dc6cb771257da3f09a40d5cfc96bb6388b4366348275e
|
||||
EC_url https://ftp.hp.com/pub/softpaq/sp96001-96500/sp96085.exe
|
||||
EC_url_bkup https://web.archive.org/web/20230610174558/https://ftp.hp.com/pub/softpaq/sp96001-96500/sp96085.exe
|
||||
}
|
||||
|
||||
{hp9470m}{
|
||||
DL_hash 4dc908050c91c1227645c900ddee88652937540af4ba222b0239b7f459f260cdf6e5e8113ac14e5543d00cf53abdd6c7bd23e61f690de1ce45a3709a30cbb91c
|
||||
DL_url https://download.lenovo.com/pccbbs/mobiles/g1rg24ww.exe
|
||||
DL_url_bkup https://web.archive.org/web/20210706183911/https://download.lenovo.com/pccbbs/mobiles/g1rg24ww.exe
|
||||
|
||||
EC_hash 563422bf5420da18b89439f28a38ea28a175f0ad3588f0f5ea39b08dfdd14c8d513cbf11c2125ec3869fc3b7222c7dc3d111415185ea9b73f41410b1b57f13bd
|
||||
EC_url https://ftp.hp.com/pub/softpaq/sp96001-96500/sp96090.exe
|
||||
EC_url_bkup http://web.archive.org/web/20220504072602/https://ftp.ext.hp.com/pub/softpaq/sp96001-96500/sp96090.exe
|
||||
}
|
||||
|
||||
{hp2170p}{
|
||||
DL_hash 4dc908050c91c1227645c900ddee88652937540af4ba222b0239b7f459f260cdf6e5e8113ac14e5543d00cf53abdd6c7bd23e61f690de1ce45a3709a30cbb91c
|
||||
DL_url https://download.lenovo.com/pccbbs/mobiles/g1rg24ww.exe
|
||||
DL_url_bkup https://web.archive.org/web/20210706183911/https://download.lenovo.com/pccbbs/mobiles/g1rg24ww.exe
|
||||
|
||||
EC_hash 940e533b6a276c13a6e46a93795ca84b19877b05e82c0c1795b7fea9cbea63c28e606ef994352fc77c4fdfb2e0c31c5edeefa98b989e1990364dfc6417b25460
|
||||
EC_url https://ftp.hp.com/pub/softpaq/sp96001-96500/sp96088.exe
|
||||
EC_url_bkup https://web.archive.org/web/20230909164345/https://ftp.hp.com/pub/softpaq/sp96001-96500/sp96088.exe
|
||||
}
|
||||
|
||||
{t1650}{
|
||||
DL_hash 4dc908050c91c1227645c900ddee88652937540af4ba222b0239b7f459f260cdf6e5e8113ac14e5543d00cf53abdd6c7bd23e61f690de1ce45a3709a30cbb91c
|
||||
DL_url https://download.lenovo.com/pccbbs/mobiles/g1rg24ww.exe
|
||||
DL_url_bkup https://web.archive.org/web/20210706183911/https://download.lenovo.com/pccbbs/mobiles/g1rg24ww.exe
|
||||
|
||||
SCH5545EC_DL_url https://dl.dell.com/FOLDER05065992M/1/T1650A28.exe
|
||||
SCH5545EC_DL_url_bkup https://web.archive.org/web/20230811151654/https://dl.dell.com/FOLDER05065992M/1/T1650A28.exe
|
||||
SCH5545EC_DL_hash 18261d0f7f27e9de3b0b5a25019b9a934ef1a61cd3f0140e34f38553695e91e671e227a8fa962774edceab5c7804d13ed9fe1c518c5643c7c8f15632f903a6c4
|
||||
}
|
||||
|
||||
{hp8470pintel}{
|
||||
DL_hash 4dc908050c91c1227645c900ddee88652937540af4ba222b0239b7f459f260cdf6e5e8113ac14e5543d00cf53abdd6c7bd23e61f690de1ce45a3709a30cbb91c
|
||||
DL_url https://download.lenovo.com/pccbbs/mobiles/g1rg24ww.exe
|
||||
DL_url_bkup https://web.archive.org/web/20210706183911/https://download.lenovo.com/pccbbs/mobiles/g1rg24ww.exe
|
||||
|
||||
EC_hash b95c9cf909ed537fb448e2be69eddcb57459efbaf0a979a73cd2bce90a7014b110f4dbbeecfd596c072636396b8f20c229c59ffe34e45500ce9edb000c6ccaf9
|
||||
EC_url https://ftp.hp.com/pub/softpaq/sp77501-78000/sp77818.exe
|
||||
EC_url_bkup https://web.archive.org/web/20230909173821/https://ftp.hp.com/pub/softpaq/sp77501-78000/sp77818.exe
|
||||
}
|
||||
|
||||
# nvidia vga option rom for dgpu models of Dell Latitude E6400
|
||||
# for downloading the nvidia rom to pciroms/pci10de,06eb.rom
|
||||
{e6400}{
|
||||
E6400_VGA_DL_hash 6217d5fce2291d15bb0649fd2faaeb78e4c48962b07a2bea6af60466bfdc5f233af0d077c2c6e71dd96047bdbb1f612324cef0a5e728ba9a9ec5c69a4022cd8d
|
||||
E6400_VGA_DL_url https://dl.dell.com/FOLDER01530530M/1/E6400A34.exe
|
||||
E6400_VGA_DL_url_bkup https://web.archive.org/web/20230506014903/https://dl.dell.com/FOLDER01530530M/1/E6400A34.exe
|
||||
E6400_VGA_offset 274451
|
||||
E6400_VGA_romname mod_21.bin
|
||||
}
|
||||
|
||||
{e6430 e6530}{
|
||||
DL_hash 4dc908050c91c1227645c900ddee88652937540af4ba222b0239b7f459f260cdf6e5e8113ac14e5543d00cf53abdd6c7bd23e61f690de1ce45a3709a30cbb91c
|
||||
DL_url https://download.lenovo.com/pccbbs/mobiles/g1rg24ww.exe
|
||||
DL_url_bkup https://web.archive.org/web/20210706183911/https://download.lenovo.com/pccbbs/mobiles/g1rg24ww.exe
|
||||
}
|
||||
|
||||
{x201}{
|
||||
DL_hash x201_factory.rom
|
||||
DL_url rom
|
||||
DL_url_bkup rom
|
||||
}
|
||||
122
gitclone
Executable file
122
gitclone
Executable file
@@ -0,0 +1,122 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
# SPDX-FileCopyrightText: 2022 Caleb La Grange <thonkpeasant@protonmail.com>
|
||||
# SPDX-FileCopyrightText: 2022 Ferass El Hafidi <vitali64pmemail@protonmail.com>
|
||||
# SPDX-FileCopyrightText: 2023 Leah Rowe <leah@libreboot.org>
|
||||
# SPDX-License-Identifier: GPL-3.0-only
|
||||
|
||||
name=""
|
||||
revision=""
|
||||
location=""
|
||||
url=""
|
||||
bkup_url=""
|
||||
tmp_dir=""
|
||||
|
||||
main()
|
||||
{
|
||||
if [ -z "${1+x}" ]; then
|
||||
err 'Error: name not set'
|
||||
fi
|
||||
|
||||
name=${1}
|
||||
|
||||
read_config
|
||||
verify_config
|
||||
|
||||
clone_project
|
||||
|
||||
# clean in case of failure
|
||||
rm -rf ${tmp_dir} >/dev/null 2>&1 || exit 1
|
||||
}
|
||||
|
||||
read_config()
|
||||
{
|
||||
awkstr=" /\{.*${name}.*}{/ {flag=1;next} /\}/{flag=0} flag { print }"
|
||||
while read -r line ; do
|
||||
set ${line} >/dev/null 2>&1
|
||||
case ${line} in
|
||||
rev:*)
|
||||
revision=${2}
|
||||
;;
|
||||
loc:*)
|
||||
location=${2}
|
||||
;;
|
||||
url:*)
|
||||
url=${2}
|
||||
;;
|
||||
bkup_url:*)
|
||||
bkup_url=${2}
|
||||
;;
|
||||
esac
|
||||
done << EOF
|
||||
$(eval "awk '${awkstr}' resources/git/revisions")
|
||||
EOF
|
||||
}
|
||||
|
||||
verify_config()
|
||||
{
|
||||
if [ -z "${revision+x}" ]; then
|
||||
err 'Error: revision not set'
|
||||
elif [ -z "${location+x}" ]; then
|
||||
err 'Error: location not set'
|
||||
elif [ -z "${url+x}" ]; then
|
||||
err 'Error: url not set'
|
||||
fi
|
||||
}
|
||||
|
||||
clone_project()
|
||||
{
|
||||
tmp_dir=$(mktemp -dt "${name}_XXXXX")
|
||||
|
||||
git clone ${url} ${tmp_dir} || git clone ${bkup_url} ${tmp_dir} \
|
||||
|| err "ERROR: could not download ${name}"
|
||||
|
||||
(
|
||||
cd ${tmp_dir} || exit 1
|
||||
git reset --hard ${revision} || err "Cannot reset revision"
|
||||
)
|
||||
|
||||
patch_project
|
||||
|
||||
if [ -d "${location}" ]; then
|
||||
rm -Rf ${location} || exit 1
|
||||
fi
|
||||
mv ${tmp_dir} ${location} && return 0
|
||||
|
||||
printf "ERROR: Could not copy temp file to destination.\n"
|
||||
err " ${tmp_dir} > ${location} check permissions"
|
||||
}
|
||||
|
||||
patch_project()
|
||||
{
|
||||
patchdir="resources/${name}/patches"
|
||||
|
||||
for patchfile in ${PWD}/${patchdir}/*.patch ; do
|
||||
if [ ! -f "${patchfile}" ]; then
|
||||
continue
|
||||
fi
|
||||
(
|
||||
cd ${tmp_dir} || exit 1
|
||||
git am ${patchfile} || err "Cannot patch project: $name"
|
||||
)
|
||||
done
|
||||
}
|
||||
|
||||
usage()
|
||||
{
|
||||
cat <<- EOF
|
||||
Usage: ./gitclone [name]
|
||||
|
||||
Options:
|
||||
name: Module name as specified in resources/git/revisions
|
||||
EOF
|
||||
}
|
||||
|
||||
err()
|
||||
{
|
||||
printf "${@}\n"
|
||||
usage
|
||||
exit 1
|
||||
}
|
||||
|
||||
main $@
|
||||
@@ -1,80 +0,0 @@
|
||||
# SPDX-License-Identifier: MIT
|
||||
# SPDX-FileCopyrightText: 2022, 2023 Leah Rowe <leah@libreboot.org>
|
||||
|
||||
version=""; versiondate=""; projectname=""; _nogit=""
|
||||
|
||||
x_() {
|
||||
[ $# -lt 1 ] || ${@} || err_exit err ${@}
|
||||
}
|
||||
xx_() {
|
||||
[ $# -lt 1 ] || ${@} || err_exit fail ${@}
|
||||
}
|
||||
|
||||
err_exit()
|
||||
{
|
||||
_fail="${1}" && shift 1
|
||||
echo "Non-zero exit: $@"
|
||||
$_fail "Unhandled error"
|
||||
}
|
||||
|
||||
check_git()
|
||||
{
|
||||
which git 1>/dev/null 2>/dev/null || \
|
||||
git_err "git not installed. please install git-scm."
|
||||
git config --global user.name 1>/dev/null 2>/dev/null || \
|
||||
git_err "git config --global user.name \"John Doe\""
|
||||
git config --global user.email 1>/dev/null 2>/dev/null || \
|
||||
git_err "git config --global user.email \"john.doe@example.com\""
|
||||
}
|
||||
|
||||
git_err()
|
||||
{
|
||||
printf "You need to set git name/email, like so:\n%s\n\n" "${1}" 1>&2
|
||||
fail "Git name/email not configured" || \
|
||||
err "Git name/email not configured"
|
||||
}
|
||||
|
||||
check_project()
|
||||
{
|
||||
read projectname < projectname || :
|
||||
|
||||
[ ! -f version ] || read version < version || :
|
||||
version_="${version}"
|
||||
[ ! -e ".git" ] || version="$(git describe --tags HEAD 2>&1)" || \
|
||||
version="git-$(git rev-parse HEAD 2>&1)" || version="${version_}"
|
||||
|
||||
[ ! -f versiondate ] || read versiondate < versiondate || :
|
||||
versiondate_="${versiondate}"
|
||||
[ ! -e ".git" ] || versiondate="$(git show --no-patch --no-notes \
|
||||
--pretty='%ct' HEAD)" || versiondate="${versiondate_}"
|
||||
|
||||
[ ! -z ${versiondate} ] || fail "Unknown version date" || \
|
||||
err "Unknown version date"
|
||||
[ ! -z ${version} ] || fail "Unknown version" || \
|
||||
err "Unknown version"
|
||||
[ ! -z ${projectname} ] || fail "Unknown project" || \
|
||||
err "Unknown project"
|
||||
|
||||
xx_ printf "%s\n" "${version}" > version || \
|
||||
x_ printf "%s\n" "${version}" > version
|
||||
xx_ printf "%s\n" "${versiondate}" > versiondate || \
|
||||
x_ printf "%s\n" "${versiondate}" > versiondate
|
||||
}
|
||||
|
||||
setvars()
|
||||
{
|
||||
_setvars=""
|
||||
[ $# -lt 2 ] && err "setvars: too few arguments"
|
||||
val="${1}"
|
||||
shift 1
|
||||
for var in $@; do
|
||||
_setvars="${var}=\"${val}\"; ${_setvars}"
|
||||
done
|
||||
printf "%s\n" "${_setvars% }"
|
||||
}
|
||||
|
||||
err()
|
||||
{
|
||||
printf "ERROR %s: %s\n" "${0}" "${1}" 1>&2
|
||||
exit 1
|
||||
}
|
||||
153
include/git.sh
153
include/git.sh
@@ -1,153 +0,0 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# SPDX-FileCopyrightText: 2020,2021,2023 Leah Rowe <leah@libreboot.org>
|
||||
# SPDX-FileCopyrightText: 2022 Caleb La Grange <thonkpeasant@protonmail.com>
|
||||
|
||||
# This file is only used by update/project/trees
|
||||
|
||||
eval "$(setvars "" _target rev _xm loc url bkup_url depend)"
|
||||
tmp_git_dir="${PWD}/tmp/gitclone"
|
||||
|
||||
fetch_project_trees()
|
||||
{
|
||||
_target="${target}"
|
||||
[ -d "src/${project}/${project}" ] || fetch_from_upstream
|
||||
fetch_config
|
||||
[ -z "${rev}" ] && err "fetch_project_trees $target: undefined rev"
|
||||
if [ -d "src/${project}/${tree}" ]; then
|
||||
printf "download/%s %s (%s): exists\n" \
|
||||
"${project}" "${tree}" "${_target}" 1>&2
|
||||
return 0
|
||||
fi
|
||||
prepare_new_tree
|
||||
}
|
||||
|
||||
fetch_from_upstream()
|
||||
{
|
||||
[ -d "src/${project}/${project}" ] && return 0
|
||||
|
||||
x_ mkdir -p "src/${project}"
|
||||
fetch_project_repo "${project}"
|
||||
}
|
||||
|
||||
fetch_config()
|
||||
{
|
||||
rm -f "${cfgsdir}/"*/seen || err "fetch_config ${cfgsdir}: !rm seen"
|
||||
while true; do
|
||||
eval "$(setvars "" rev tree)"
|
||||
_xm="fetch_config ${project}/${_target}"
|
||||
load_target_config "${_target}"
|
||||
[ "${_target}" != "${tree}" ] && _target="${tree}" && continue
|
||||
break
|
||||
done
|
||||
}
|
||||
|
||||
load_target_config()
|
||||
{
|
||||
[ -f "${cfgsdir}/${1}/target.cfg" ] || \
|
||||
err "${_xm} check: target.cfg does not exist"
|
||||
[ -f "${cfgsdir}/${1}/seen" ] && \
|
||||
err "${_xm} check: infinite loop in tree definitions"
|
||||
|
||||
. "${cfgsdir}/${1}/target.cfg" || \
|
||||
err "load_target_config ${cfgsdir}/${1}: cannot load config"
|
||||
|
||||
touch "${cfgsdir}/${1}/seen" || err "load_config $cfgsdir/$1: !mk seen"
|
||||
}
|
||||
|
||||
prepare_new_tree()
|
||||
{
|
||||
printf "Creating %s tree %s (%s)\n" "${project}" "${tree}" "${_target}"
|
||||
|
||||
x_ cp -R "src/${project}/${project}" "src/${project}/${tree}"
|
||||
git_reset_rev "src/${project}/${tree}" "${rev}"
|
||||
(
|
||||
x_ cd "src/${project}/${tree}"
|
||||
if [ -f ".gitmodules" ]; then
|
||||
git submodule update --init --checkout || \
|
||||
err "prepare_new_tree ${project}/${tree}: !submodules"
|
||||
fi
|
||||
)
|
||||
git_am_patches "$PWD/src/$project/$tree" "$PWD/$cfgsdir/$tree/patches"
|
||||
}
|
||||
|
||||
fetch_project_repo()
|
||||
{
|
||||
scan_config "${project}" "config/git" "err"
|
||||
verify_config
|
||||
|
||||
clone_project
|
||||
[ -z "${depend}" ] || for d in ${depend} ; do
|
||||
x_ ./update trees -f ${d}
|
||||
done
|
||||
rm -Rf "${tmp_git_dir}" || err "fetch_repo: !rm -Rf ${tmp_git_dir}"
|
||||
}
|
||||
|
||||
verify_config()
|
||||
{
|
||||
[ -z "${rev+x}" ] && err 'verify_config: rev not set'
|
||||
[ -z "${loc+x}" ] && err 'verify_config: loc not set'
|
||||
[ -z "${url+x}" ] && err 'verify_config: url not set'
|
||||
return 0
|
||||
}
|
||||
|
||||
clone_project()
|
||||
{
|
||||
rm -Rf "${tmp_git_dir}" || err "clone_project: !rm -Rf ${tmp_git_dir}"
|
||||
mkdir -p "${tmp_git_dir%/*}" || \
|
||||
err "clone_project: !mkdir -p ${tmp_git_dir%/*}"
|
||||
|
||||
loc="${loc#src/}"
|
||||
loc="src/${loc}"
|
||||
if [ -d "${loc}" ]; then
|
||||
printf "%s already exists, so skipping download\n" "$loc" 1>&2
|
||||
return 0
|
||||
fi
|
||||
|
||||
git clone ${url} "${tmp_git_dir}" || \
|
||||
git clone ${bkup_url} "${tmp_git_dir}" || \
|
||||
err "clone_project: could not download ${project}"
|
||||
git_reset_rev "${tmp_git_dir}" "${rev}"
|
||||
git_am_patches "${tmp_git_dir}" "${PWD}/config/${project}/patches"
|
||||
|
||||
x_ rm -Rf "${loc}"
|
||||
[ "${loc}" = "${loc%/*}" ] || x_ mkdir -p ${loc%/*}
|
||||
mv "${tmp_git_dir}" "${loc}" || \
|
||||
err "clone_project: !mv ${tmp_git_dir} ${loc}"
|
||||
}
|
||||
|
||||
git_reset_rev()
|
||||
{
|
||||
(
|
||||
cd "${1}" || err "git_reset_rev: !cd ${1}"
|
||||
git reset --hard ${2} || err "!git reset ${1} <- ${2}"
|
||||
if [ "${project}" != "coreboot" ] && [ "${project}" != "u-boot" ] && \
|
||||
[ -f ".gitmodules" ]; then
|
||||
git submodule update --init --checkout || \
|
||||
err "git_reset_rev ${1}: can't download submodules"
|
||||
fi
|
||||
)
|
||||
}
|
||||
|
||||
git_am_patches()
|
||||
{
|
||||
sdir="${1}" # assumed to be absolute path
|
||||
patchdir="${2}" # ditto
|
||||
(
|
||||
cd "${sdir}" || err "git_am_patches: !cd ${sdir}"
|
||||
for patch in "${patchdir}/"*; do
|
||||
[ -L "${patch}" ] && continue
|
||||
[ -f "${patch}" ] || continue
|
||||
patchfail="n"
|
||||
git am "${patch}" || patchfail="y"
|
||||
if [ "${patchfail}" = "y" ]; then
|
||||
git am --abort || err "${sdir}: !git am --abort"
|
||||
err "!git am ${patch} -> ${sdir}"
|
||||
fi
|
||||
done
|
||||
)
|
||||
for patches in "${patchdir}/"*; do
|
||||
[ -L "${patches}" ] && continue
|
||||
[ ! -d "${patches}" ] && continue
|
||||
git_am_patches "${sdir}" "${patches}"
|
||||
done
|
||||
}
|
||||
@@ -1,76 +0,0 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
|
||||
# Logic based on util/chromeos/crosfirmware.sh in coreboot cfc26ce278.
|
||||
# Modifications in this version are Copyright 2021 and 2023 Leah Rowe.
|
||||
# Original copyright detailed in repo: https://review.coreboot.org/coreboot/
|
||||
|
||||
eval "$(setvars "" MRC_url MRC_url_bkup MRC_hash MRC_board ROOTFS SHELLBALL)"
|
||||
|
||||
extract_mrc()
|
||||
{
|
||||
[ -z "${MRC_board}" ] && err "extract_mrc $MRC_hash: MRC_board not set"
|
||||
[ -z "${CONFIG_MRC_FILE}" ] && \
|
||||
err "extract_mrc $MRC_hash: CONFIG_MRC_FILE not set"
|
||||
|
||||
ROOTFS="root-a.ext2"
|
||||
SHELLBALL="chromeos-firmwareupdate-${MRC_board}"
|
||||
|
||||
(
|
||||
x_ cd "${appdir}"
|
||||
extract_partition
|
||||
extract_shellball
|
||||
extract_coreboot
|
||||
)
|
||||
|
||||
"${cbfstool}" "${appdir}/"coreboot-*.bin extract -n mrc.bin \
|
||||
-f "${_dest}" -r RO_SECTION || err "extract_mrc: cbfstool ${_dest}"
|
||||
}
|
||||
|
||||
extract_partition()
|
||||
{
|
||||
NAME="ROOT-A"
|
||||
FILE="${MRC_url##*/}"
|
||||
FILE="${FILE%.zip}"
|
||||
_bs=1024
|
||||
|
||||
printf "Extracting ROOT-A partition\n"
|
||||
ROOTP=$( printf "unit\nB\nprint\nquit\n" | \
|
||||
parted "${FILE}" 2>/dev/null | grep "${NAME}" )
|
||||
|
||||
START=$(( $( echo ${ROOTP} | cut -f2 -d\ | tr -d "B" ) ))
|
||||
SIZE=$(( $( echo ${ROOTP} | cut -f4 -d\ | tr -d "B" ) ))
|
||||
|
||||
dd if="${FILE}" of="${ROOTFS}" bs=${_bs} \
|
||||
skip=$(( ${START} / ${_bs} )) count=$(( ${SIZE} / ${_bs} )) || \
|
||||
err "extract_partition, dd ${FILE}, ${ROOTFS}"
|
||||
}
|
||||
|
||||
extract_shellball()
|
||||
{
|
||||
printf "Extracting chromeos-firmwareupdate\n"
|
||||
printf "cd /usr/sbin\ndump chromeos-firmwareupdate ${SHELLBALL}\nquit" \
|
||||
| debugfs "${ROOTFS}" || err "extract_shellball: debugfs"
|
||||
}
|
||||
|
||||
extract_coreboot()
|
||||
{
|
||||
_unpacked=$( mktemp -d )
|
||||
|
||||
printf "Extracting coreboot image\n"
|
||||
[ -f "${SHELLBALL}" ] || \
|
||||
err "extract_coreboot: shellball missing in google cros image"
|
||||
sh "${SHELLBALL}" --unpack "${_unpacked}" || err "shellball, ${SHELLBALL}"
|
||||
|
||||
# TODO: audit the f* out of that shellball, for each mrc version.
|
||||
# it has to be updated for each mrc update. we should ideally
|
||||
# implement the functionality ourselves.
|
||||
|
||||
[ -f "${_unpacked}/VERSION" ] || \
|
||||
err "extract_coreboot: VERSION file missing on google coreboot rom"
|
||||
|
||||
_version=$( cat "${_unpacked}/VERSION" | grep BIOS\ version: | \
|
||||
cut -f2 -d: | tr -d \ )
|
||||
|
||||
cp "${_unpacked}/bios.bin" "coreboot-${_version}.bin" || \
|
||||
err "!cp unpacked, ${_unpacked}/bios.bin, coreboot-${_version}.rom"
|
||||
}
|
||||
@@ -1,72 +0,0 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-only
|
||||
# SPDX-FileCopyrightText: 2022 Caleb La Grange <thonkpeasant@protonmail.com>
|
||||
# SPDX-FileCopyrightText: 2022 Ferass El Hafidi <vitali64pmemail@protonmail.com>
|
||||
# SPDX-FileCopyrightText: 2023 Leah Rowe <leah@libreboot.org>
|
||||
|
||||
vendir="vendorfiles"
|
||||
appdir="${vendir}/app"
|
||||
cbdir="src/coreboot/default"
|
||||
cbcfgsdir="config/coreboot"
|
||||
ifdtool="cbutils/default/ifdtool"
|
||||
cbfstool="cbutils/default/cbfstool"
|
||||
|
||||
eval "$(setvars "" CONFIG_BOARD_DELL_E6400 CONFIG_HAVE_MRC CONFIG_HAVE_ME_BIN \
|
||||
CONFIG_ME_BIN_PATH CONFIG_KBC1126_FIRMWARE CONFIG_KBC1126_FW1 \
|
||||
CONFIG_KBC1126_FW1_OFFSET CONFIG_KBC1126_FW2 CONFIG_KBC1126_FW2_OFFSET \
|
||||
CONFIG_VGA_BIOS_FILE CONFIG_VGA_BIOS_ID CONFIG_GBE_BIN_PATH \
|
||||
CONFIG_INCLUDE_SMSC_SCH5545_EC_FW CONFIG_SMSC_SCH5545_EC_FW_FILE \
|
||||
CONFIG_IFD_BIN_PATH CONFIG_MRC_FILE _dest board boarddir)"
|
||||
|
||||
items()
|
||||
{
|
||||
rval=1
|
||||
[ ! -d "${1}" ] && \
|
||||
printf "items: directory '%s' doesn't exist" "${1}" && \
|
||||
return 1
|
||||
for x in "${1}/"*; do
|
||||
# -e used because this is for files *or* directories
|
||||
[ -e "${x}" ] || continue
|
||||
[ "${x##*/}" = "build.list" ] && continue
|
||||
printf "%s\n" "${x##*/}" 2>/dev/null
|
||||
rval=0
|
||||
done
|
||||
return ${rval}
|
||||
}
|
||||
|
||||
scan_config()
|
||||
{
|
||||
awkstr=" /\{.*${1}.*}{/ {flag=1;next} /\}/{flag=0} flag { print }"
|
||||
confdir="${2}"
|
||||
_fail="${3}"
|
||||
revfile="$(mktemp -t sources.XXXXXXXXXX)"
|
||||
cat "${confdir}/"* > "${revfile}" || \
|
||||
"${_fail}" "scan_config ${confdir}: Cannot concatenate files"
|
||||
while read -r line ; do
|
||||
set ${line} 1>/dev/null 2>/dev/null || :
|
||||
[ "${1%:}" = "depend" ] && depend="${depend} ${2}" && continue
|
||||
eval "${1%:}=\"${2}\""
|
||||
done << EOF
|
||||
$(eval "awk '${awkstr}' \"${revfile}\"")
|
||||
EOF
|
||||
rm -f "${revfile}" || "${_fail}" "scan_config: Cannot remove tmpfile"
|
||||
}
|
||||
|
||||
check_defconfig()
|
||||
{
|
||||
for x in "${1}"/config/*; do
|
||||
[ -f "${x}" ] && return 0
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
||||
handle_coreboot_utils()
|
||||
{
|
||||
for util in cbfstool ifdtool; do
|
||||
x_ ./update trees ${_f} "src/coreboot/${1}/util/${util}"
|
||||
[ -z "${mode}" ] && [ ! -f "cbutils/${1}/${util}" ] && \
|
||||
x_ mkdir -p "cbutils/${1}" && \
|
||||
x_ cp "src/coreboot/${1}/util/${util}/${util}" \
|
||||
"cbutils/${1}"
|
||||
[ -z "${mode}" ] || x_ rm -Rf "cbutils/${1}"
|
||||
done
|
||||
}
|
||||
126
lbmk
Executable file
126
lbmk
Executable file
@@ -0,0 +1,126 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
# generic script for calling other scripts in lbmk
|
||||
#
|
||||
# Copyright (C) 2014,2015,2020,2021,2023 Leah Rowe <info@minifree.org>
|
||||
# Copyright (C) 2015 Patrick "P. J." McDermott <pj@pehjota.net>
|
||||
# Copyright (C) 2015, 2016 Klemens Nanni <contact@autoboot.org>
|
||||
# Copyright (C) 2022, Caleb La Grange <thonkpeasant@protonmail.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
[ "x${DEBUG+set}" = 'xset' ] && set -v
|
||||
set -u -e
|
||||
|
||||
projectname="$(cat projectname)"
|
||||
buildpath=""
|
||||
mode=""
|
||||
option=""
|
||||
|
||||
main()
|
||||
{
|
||||
if [ "${0##*/}" = "lbmk" ]; then
|
||||
die "Do not run the lbmk script directly!"
|
||||
elif [ "${0##*/}" = "download" ]; then
|
||||
./update module $@ || exit 1
|
||||
exit 0
|
||||
elif [ $# -lt 1 ]; then
|
||||
die "Too few arguments. Try: ${0} help"
|
||||
fi
|
||||
|
||||
buildpath="./resources/scripts/${0##*/}"
|
||||
|
||||
mode="${1}"
|
||||
./.gitcheck
|
||||
if [ "${mode}" != "dependencies" ]; then
|
||||
./resources/scripts/misc/versioncheck
|
||||
fi
|
||||
if [ "${mode}" = help ]; then
|
||||
usage $0
|
||||
exit 0
|
||||
elif [ $# -lt 2 ]; then
|
||||
usage $0
|
||||
exit 0
|
||||
fi
|
||||
|
||||
option="${2}"
|
||||
shift 2
|
||||
|
||||
case "${option}" in
|
||||
list)
|
||||
printf "Options for mode '%s':\n\n" ${mode}
|
||||
listoptions "${mode}"
|
||||
;;
|
||||
all)
|
||||
for option in $(listoptions "${mode}"); do
|
||||
"${buildpath}/${mode}/${option}" $@
|
||||
done
|
||||
;;
|
||||
*)
|
||||
if [ ! -d "${buildpath}/${mode}" ]; then
|
||||
usage $0
|
||||
die "Invalid mode '${mode}'. Run: ${0} help"
|
||||
elif [ ! -f "${buildpath}/${mode}/${option}" ]; then
|
||||
usage $0
|
||||
printf "Invalid option for '%s'." ${mode}
|
||||
die "Run: ${0} ${mode} list'."
|
||||
fi
|
||||
"${buildpath}/${mode}/${option}" $@ || die "lbmk error"
|
||||
esac
|
||||
|
||||
./.gitcheck clean
|
||||
}
|
||||
|
||||
# Takes exactly one mode as parameter
|
||||
listoptions()
|
||||
{
|
||||
for option in "${buildpath}/${1}/"*; do
|
||||
printf '%s\n' ${option##*/}
|
||||
done
|
||||
}
|
||||
|
||||
usage()
|
||||
{
|
||||
progname=${0}
|
||||
cat <<- EOF
|
||||
USAGE: ${progname} <MODE> <OPTION>
|
||||
|
||||
possible values for 'mode':
|
||||
$(listmodes)
|
||||
|
||||
Example: ${progname} module all
|
||||
Example: ${progname} module flashrom [static]
|
||||
Example: ${progname} roms withgrub
|
||||
Example: ${progname} clean all
|
||||
|
||||
Refer to ${projectname} documentation for more info.
|
||||
EOF
|
||||
}
|
||||
|
||||
listmodes()
|
||||
{
|
||||
for mode in "${buildpath}"/*; do
|
||||
printf '%s\n' ${mode##*/}
|
||||
done
|
||||
}
|
||||
|
||||
die()
|
||||
{
|
||||
./.gitcheck clean
|
||||
printf "Error: %s\n" "${@}" 1>&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
main $@
|
||||
@@ -1 +1 @@
|
||||
libreboot
|
||||
censored-libreboot
|
||||
|
||||
42
resources/coreboot/cros/blobs.list
Normal file
42
resources/coreboot/cros/blobs.list
Normal file
@@ -0,0 +1,42 @@
|
||||
src/vendorcode/amd/agesa/f14/Proc/CPU/Family/0x14/F14MicrocodePatch05000119.c
|
||||
3rdparty/arm-trusted-firmware/plat/mediatek/mt8173/drivers/spm/spm_hotplug.c
|
||||
3rdparty/arm-trusted-firmware/plat/mediatek/mt8173/drivers/spm/spm_mcdi.c
|
||||
3rdparty/arm-trusted-firmware/plat/mediatek/mt8173/drivers/spm/spm_suspend.c
|
||||
3rdparty/arm-trusted-firmware/plat/rockchip/rk3368/drivers/ddr/rk3368_ddr_reg_resume_V1.05.bin
|
||||
3rdparty/chromeec/test/legacy_nvmem_dump.h
|
||||
3rdparty/vboot/tests/futility/data/bios_link_mp.bin
|
||||
3rdparty/vboot/tests/futility/data/bios_peppy_mp.bin
|
||||
src/vendorcode/amd/agesa/f14/Proc/CPU/Family/0x14/F14MicrocodePatch0500000B.c
|
||||
src/vendorcode/amd/agesa/f14/Proc/CPU/Family/0x14/F14MicrocodePatch0500001A.c
|
||||
src/vendorcode/amd/agesa/f14/Proc/CPU/Family/0x14/F14MicrocodePatch05000029.c
|
||||
src/vendorcode/amd/agesa/f14/Proc/GNB/Nb/Family/0x14/F14NbSmuFirmware.h
|
||||
src/vendorcode/amd/agesa/f14/Proc/GNB/PCIe/Family/0x14/F14PcieAlibSsdt.h
|
||||
src/vendorcode/amd/agesa/f15tn/Proc/CPU/Family/0x15/TN/F15TnMicrocodePatch0600111F_Enc.c
|
||||
src/vendorcode/amd/agesa/f15tn/Proc/GNB/Modules/GnbInitTN/GnbSmuFirmwareTN.h
|
||||
src/vendorcode/amd/agesa/f15tn/Proc/GNB/Modules/GnbInitTN/PcieAlibSsdtTNFM2.h
|
||||
src/vendorcode/amd/agesa/f15tn/Proc/GNB/Modules/GnbInitTN/PcieAlibSsdtTNFS1.h
|
||||
src/vendorcode/amd/agesa/f16kb/Proc/CPU/Family/0x16/KB/F16KbId7001MicrocodePatch.c
|
||||
src/vendorcode/amd/agesa/f16kb/Proc/GNB/Modules/GnbInitKB/AlibSsdtKB.h
|
||||
src/vendorcode/amd/agesa/f16kb/Proc/GNB/Modules/GnbInitKB/GnbSamuPatchKB.h
|
||||
src/vendorcode/amd/agesa/f16kb/Proc/GNB/Modules/GnbInitKB/GnbSmuFirmwareKB.h
|
||||
3rdparty/chromeec/third_party/bmi260/accelgyro_bmi260_config_tbin.h
|
||||
3rdparty/arm-trusted-firmware/plat/mediatek/mt8173/drivers/spm/spm_hotplug.c
|
||||
3rdparty/arm-trusted-firmware/plat/mediatek/mt8173/drivers/spm/spm_mcdi.c
|
||||
3rdparty/arm-trusted-firmware/plat/mediatek/mt8173/drivers/spm/spm_suspend.c
|
||||
3rdparty/arm-trusted-firmware/plat/rockchip/rk3368/drivers/ddr/rk3368_ddr_reg_resume_V1.05.bin
|
||||
3rdparty/vboot/tests/futility/data/bios_link_mp.bin
|
||||
3rdparty/vboot/tests/futility/data/bios_peppy_mp.bin
|
||||
src/vendorcode/amd/agesa/f14/Proc/CPU/Family/0x14/F14MicrocodePatch0500000B.c
|
||||
src/vendorcode/amd/agesa/f14/Proc/CPU/Family/0x14/F14MicrocodePatch0500001A.c
|
||||
src/vendorcode/amd/agesa/f14/Proc/CPU/Family/0x14/F14MicrocodePatch05000029.c
|
||||
src/vendorcode/amd/agesa/f14/Proc/CPU/Family/0x14/F14MicrocodePatch05000119.c
|
||||
src/vendorcode/amd/agesa/f14/Proc/GNB/Nb/Family/0x14/F14NbSmuFirmware.h
|
||||
src/vendorcode/amd/agesa/f14/Proc/GNB/PCIe/Family/0x14/F14PcieAlibSsdt.h
|
||||
src/vendorcode/amd/agesa/f15tn/Proc/CPU/Family/0x15/TN/F15TnMicrocodePatch0600111F_Enc.c
|
||||
src/vendorcode/amd/agesa/f15tn/Proc/GNB/Modules/GnbInitTN/GnbSmuFirmwareTN.h
|
||||
src/vendorcode/amd/agesa/f15tn/Proc/GNB/Modules/GnbInitTN/PcieAlibSsdtTNFM2.h
|
||||
src/vendorcode/amd/agesa/f15tn/Proc/GNB/Modules/GnbInitTN/PcieAlibSsdtTNFS1.h
|
||||
src/vendorcode/amd/agesa/f16kb/Proc/CPU/Family/0x16/KB/F16KbId7001MicrocodePatch.c
|
||||
src/vendorcode/amd/agesa/f16kb/Proc/GNB/Modules/GnbInitKB/AlibSsdtKB.h
|
||||
src/vendorcode/amd/agesa/f16kb/Proc/GNB/Modules/GnbInitKB/GnbSamuPatchKB.h
|
||||
src/vendorcode/amd/agesa/f16kb/Proc/GNB/Modules/GnbInitKB/GnbSmuFirmwareKB.h
|
||||
4
resources/coreboot/cros/board.cfg
Normal file
4
resources/coreboot/cros/board.cfg
Normal file
@@ -0,0 +1,4 @@
|
||||
cbtree="cros"
|
||||
arch="spaghettimonster"
|
||||
cbrevision="8da4bfe5b573f395057fbfb5a9d99b376e25c2a4" # 4.17
|
||||
romtype="normal"
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user