This patch was submitted to the U-Boot mailing list to fix an issue
initializing the PHY on the rock-pi-e.
Signed-off-by: Trevor Woerner <twoerner@gmail.com>
The T-Firefly ROC-RK3308-CC is a miniature and compact main board which is
equipped with a cost-effective RK3308 Core Processor and a high-performance
CODEC.
Features:
- Rockchip RK3308, 64-bit, quad-core, Arm Cortex-A35 processor @ 1.3GHz
- 100M ethernet
- PoE
- USB 2.0 and Type-C (OTG and power)
- 802.11 b/g/n WiFi and Bluetooth 4.2
https://en.t-firefly.com/product/rocrk3308cc
Signed-off-by: Trevor Woerner <twoerner@gmail.com>
In upstream mainline U-Boot commit 9e13fef00b8d ("rockchip: Kconfig: Enable
external TPL binary for rk3308") U-Boot was changed to incorporate the DDR TPL
using the same mechanism as the RK3568 and RK3588 platforms.
Signed-off-by: Trevor Woerner <twoerner@gmail.com>
AKA the "renegade"
The ROC-RK3328-CC platform is built on the Rockchip RK3328 system-on-chip
optimized for low cost, low power, and high performance IO. It features a
high performance native USB 3.0 interface and Gigabit MAC.
Specs:
- RaspberryPi 2/3 form factor
- quad-core ARM Cortex-A53 @ 1.5GHz
- ARM Mali-450 MP2
- DDR4 RAM
- USB 3.0
- GbE MAC
https://libre.computer/products/roc-rk3328-cc/https://wiki.t-firefly.com/ROC-RK3328-CC/intro.html
Signed-off-by: Trevor Woerner <twoerner@gmail.com>
The Radxa ROCK 5 Model A is an SBC in roughly a RaspberryPi-ish form factor
packed with a wide range of class-leading functionality, features and
expansion options. The ROCK 5A board comes in several LPDDR4x RAM memory
options: 4GB, 8GB, 16GB, and 32GB.
It uses the Rockchip RK3588S SoC (quad A76 @ 2.2GHz + quad A55 @ 1.8GHz,
Mali G610mp4 GPU), has both 8k and 4k HDMI, Gb ethernet with PoE support,
USB2/3, M.2 E Key (NVMe or SATA), a 40-pin RaspberryPi-ish 3V3 GPIO header,
USB Type-C power, MIPI DSI/CSI, SDcard slot, optional eMMC, and more.
https://wiki.radxa.com/Rock5/5bhttps://radxa.com/products/rock5/5a/
[
with the following tweaks by Trevor:
- switch to information URL to one that points to information in english
- improved the commit message
- add rock-5a to README
]
Signed-off-by: Stephen Chen <stephen@radxa.com>
Signed-off-by: Trevor Woerner <twoerner@gmail.com>
Update machine include files to allow overriding of KERNEL_IMAGETYPE.
[
with the following 2 tweaks by Trevor:
- remove the "v3" from the commit's subject
- extended patch to rk3308 and rk3588s, which were added in between this patch
being submitted, and this patch being applied
]
Signed-off-by: Anthony Davies <anthony.t.davies@gmail.com>
Signed-off-by: Trevor Woerner <twoerner@gmail.com>
ROCK Pi S is a Rockchip RK3308 based SBC from Radxa. It contains a 64-bit
quad core processor, USB, ethernet, wireless connectivity, and voice
detection engine in 1.7-inches square. The ROCK Pi S comes in two RAM sizes
256MB or 512MB DDR3, and uses an sdmmc card for OS and storage. Optionally,
some versions of the ROCK Pi S provide on-board storage via 1Gb/2Gb/4Gb/8Gb
of SLC NAND flash.
"S" stands for "small square" since the total board size of the rock-pi-s
is 1.7-inches square.
This BSP assumes booting from sdmmc, and using ttyS0 for the serial console
(similar to Raspberry Pi).
The latest version of the binary ddr initializer code from rkbin does not
provide a uart0 option, therefore all diagnostic output from rkbin and u-boot
is lost on the console (and replaced with a stream of gibberish until the
Linux kernel starts). Therefore, by default, the build assumes the user would
prefer to see this information and have the option to interact with U-Boot,
which means an older version of rkbin is used. The user can override this
decision by setting:
RKBIN_RK3308_LATEST = "1"
Signed-off-by: Trevor Woerner <twoerner@gmail.com>
NanoPi M4B is a RK3399-based (dual-core A72, quad-core A53 with NEON) board
in the same form factor as the RPi B3+ (including compatible connectors) with
onboard 2.4/5.0 dual-band WiFi + Bluetooth 5.0 with USB type-C power from
FriendlyElec.
https://www.friendlyelec.com/index.php?route=product/product&product_id=275
Signed-off-by: Trevor Woerner <twoerner@gmail.com>
Looking forward, rkbin should only be used by specific Rockchip platforms
for which TF-A support is not (yet?) available. If rkbin gets added by
accident without an override, add a bbfatal to let the user know an
override is required.
Signed-off-by: Trevor Woerner <twoerner@gmail.com>
The goal of the default COMPATIBLE_MACHINE was to not allow
rockchip-rkbin to be even parsed if a MACHINE isn't part of the
COMPATIBLE_MACHINE.
However, COMPATIBLE_MACHINE is a regexp checked using Python's re module
approximately like:
"""
if re.match(COMPATIBLE_MACHINE, MACHINE):
return True
"""
and re.match() returns a match whatever MACHINE is if COMPATIBLE_MACHINE
is the empty string.
Therefore, let's change it to `^$` which only matches the empty string,
which shouldn't be possible for anything in MACHINEOVERRIDES, and if it
is there are probably bigger problems than parsing rockchip-rkbin.
Fixes: f8af59dd7c ("rock-5b: add")
Cc: Quentin Schulz <foss+yocto@0leil.net>
Signed-off-by: Quentin Schulz <quentin.schulz@theobroma-systems.com>
Group the EXTRA_OEMAKE items together and sort.
Reviewed-by: Quentin Schulz <quentin.schulz@theobroma-systems.com>
Signed-off-by: Trevor Woerner <twoerner@gmail.com>
Group the INIT_FIRMWARE_DEPENDS together and sort.
Reviewed-by: Quentin Schulz <quentin.schulz@theobroma-systems.com>
Signed-off-by: Trevor Woerner <twoerner@gmail.com>
The NanoPi R2S is a mini router with edge computing and dual GbE ports by
FriendlyElec. It is based on the Rockchip RK3328 - a quad A53 core, 64-bit SoC
running at 1.2GHz with at least 1GB of DDR4 RAM. It has one USB 2.0 host and
is powered via a USB type-C connector (5V/2A).
https://www.friendlyelec.com/index.php?route=product/product&product_id=282
Reviewed-by: Quentin Schulz <quentin.schulz@theobroma-systems.com>
Signed-off-by: Trevor Woerner <twoerner@gmail.com>
The MACHINE name is already added to the MACHINEOVERRIDES implicitly, no need
to add it explicitly.
Reviewed-by: Quentin Schulz <quentin.schulz@theobroma-systems.com>
Signed-off-by: Trevor Woerner <twoerner@gmail.com>
Add support for the Radxa Rock 5B
https://wiki.radxa.com/Rock5/5b
The device-tree for this board is better in the 6.5 (and later) kernels,
therefore set the kernel to linux-yocto-dev for now (eventually this won't be
needed as linux-yocto moves forward).
Unfortunately the TF-A project does not currently have support for
the rk3588. Therefore, for the time-being, the only way to supply a
TPL/DDR-init for the rk3588 is to use the closed-source rkbin binaries
from Rockchip. If/when TF-A adds support for the rk3588 we can investigate
switching.
The rk3588 comes in two variants: rk3588 and rk3588s. The "s" option is a
stripped-down version of the rk3588. In the Linux kernel these two SoCs are
kept separate, with the rk3588 building on the rk3588s, so we've mimicked that
same behaviour here.
Signed-off-by: Quentin Schulz <quentin.schulz@theobroma-systems.com>
Signed-off-by: Trevor Woerner <twoerner@gmail.com>
In anticipation of Rockchip SoC families to which the TF-A project has not
been ported, the initial boot firmware needs to come from other sources (e.g.
Rockchip's rkbin binaries). Update the variable used to describe this
dependency to be more generic and not TF-A specific.
Signed-off-by: Trevor Woerner <twoerner@gmail.com>
Remove the non-rockchip architectures from the kernel build since these are
all a waste of build time, filesystem space, and runtime memory.
Signed-off-by: Trevor Woerner <twoerner@gmail.com>
Change virtual/arm-none-eabi-gcc-native to gcc-arm-none-eabi-native
following the recent modification in layer meta-arm (git commit
a64fb4a40d707795d9adb7736920fcbeaa7ce5e2) to remove provides.
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Various machines require pyelftools Python3 library for parsing dtb files
so it should be added to DEPENDS.
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Trevor Woerner <twoerner@gmail.com>
The last kernel to not split the rock-pi-4[abc] MACHINEs into separate
device trees was 5.10. The linux-yocto kernels supported in this release
are all after 5.10. Therefore remove the rock-pi-4 MACHINE. By now, on master,
everyone should be selecting specific MACHINEs from one of the variants and
not using "rock-pi-4".
NOTE: this layer will continue to use "rock-pi-4" as a MACHINEOVERRIDE when
the specific variant doesn't matter
Signed-off-by: Trevor Woerner <twoerner@gmail.com>
The U-Boot build for rock-pi-4[abc] was recently changed to add information
for UEFI. The build now DEPENDS on gnutls-native.
U-Boot: e86c789ca372 ("rockpi4: board: Add firmware image information for capsule updates")
Signed-off-by: Trevor Woerner <twoerner@gmail.com>
The commit ed3a97f7b2 ("rockchip-wic.inc: don't let wic edit fstab")
removing this ability was introduced to fix an issue in the wic tool in
OE-Core in which wic partitions whose "mountpoint" is not a valid path
are still added to fstab.
This was eventually fixed in OE-Core in commit 7aa678ce804c
("wic:direct.py: ignore invalid mountpoints during fstab update") which
is part of release Honister (3.4) and later.
Therefore, it should be safe to now let wic update fstab again for
partitions with a valid mountpoint path. The benefit being that the wic
partitions with a mountpoint are now automounted at boot.
Cc: Quentin Schulz <foss+yocto@0leil.net>
Signed-off-by: Quentin Schulz <quentin.schulz@theobroma-systems.com>
xf86-input-keyboard was removed from openembedded-core at its commit:
f1d7c33b64 (xf86-input-keyboard: remove the recipe, 2022-07-20). Therefore
remove it from the XSERVER definition.
Reviewed-by: Quentin Schulz <foss+yocto@0leil.net>
Signed-off-by: Trevor Woerner <twoerner@gmail.com>
Rockchip PX30 SoC is a quad-core ARM Cortex-A35 CPU fully implementing
the ARMv8-A instruction set with ARM Neon Advanced SIMD and Cryptography
Extensions.
This adds a base configuration file which can be included by PX30-based
boards and the required changes in U-Boot and TF-A for proper support.
Cc: Quentin Schulz <foss+yocto@0leil.net>
Signed-off-by: Quentin Schulz <quentin.schulz@theobroma-systems.com>
Started seeing the following error in my builds:
ERROR: A native program mkfs.ext4 required to build the image was not found
Please make sure wic-tools have e2fsprogs-native in its DEPENDS
Signed-off-by: Trevor Woerner <twoerner@gmail.com>
Not all Rockchip boards have their console running at 1500000 baud in
U-Boot and the kernel. Such is the case for puma-haikou RK3399-based
SoM+Carrierboard.
In order to prepare for the addition of puma-haikou to meta-rockchip,
let's replace the baudrate in TF-A by the one defined in the machine
conf file in the RK_CONSOLE_BAUD variable.
Cc: Quentin Schulz <foss+yocto@0leil.net>
Signed-off-by: Quentin Schulz <quentin.schulz@theobroma-systems.com>
The _virtual notation is not an override. These syntax "fixes" need to be
reverted.
In the case of the kernel override, when it was added, the rock-pi-e needed
the latest kernel (linux-yocto-dev) but now the default linux-yocto kernel
will suffice. So this mistake actually switched the rock-pi-e from
linux-yocto-dev back to linux-yocto inadvertently but at a time when
linux-yocto-dev was no longer required.
In the case of the bootloader overrides, u-boot was always the default, so
these overrides were always redundant.
Therefore, in the end, simply removing these overrides is the best way
forward (considering these aren't doing anything, and the builds are working
fine regardless).
Signed-off-by: Trevor Woerner <twoerner@gmail.com>
tf-a built with clang is bloated for rk3399 SOCs with 2.6+
it needs looking into, until then use gcc always to build it
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Cc: Jon Mason <jon.mason@arm.com>
Cc: Ross Burton <ross.burton@arm.com>
The latest trusted-firmware-a recipe in meta-arm no longer considers
trusted-firmware-a to have potentially multiple providers.
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Trevor Woerner <twoerner@gmail.com>
Since the recent patch to switch to UUIDs [0aa5e600: "use uuid
instead of hard-coding root device"] wic fstab-update is not able
to get the correct value for the used device anymore and falls to
the default 'sda'. Thus wrong /dev/sda entries are generated in fstab.
For partitions that should be updated automatically this can be avoided
by either generate entries using uuid or label.
[NOTE: I rearranged the order of the arguments so they line up]
Signed-off-by: MarkusVolk <f_l_k@t-online.de>
There is no "nanopi-m4" defined in any yocto kernel metadata (yet?), therefore
remove this superfluous line.
Build (core-image-base) and run tested (both systemd and sysvinit) on:
- nanopi-m4
Signed-off-by: Trevor Woerner <twoerner@gmail.com>
Now that we're booting via UUID, we no longer need these aliases in the DT.
Personally I wasn't able to prove to myself that they actually worked (at
least not with 5.13.y) and fiddling with these aliases didn't seem to affect
the mmc probe order on boot. Additionally it looks like some of these aliases
will be landing upstream shortly.
Build (core-image-base) and run tested (both systemd and sysvinit) on:
- rock64
- rock-pi-e
(i.e. the two rk3328 MACHINEs)
Signed-off-by: Trevor Woerner <twoerner@gmail.com>
For a while we've noticed that /etc/fstab ends up with "junk" appended to the
end e.g.:
/dev/sda1 loader1 vfat defaults 0 0
/dev/sda2 reserved1 vfat defaults 0 0
/dev/sda3 reserved2 vfat defaults 0 0
/dev/sda4 loader2 vfat defaults 0 0
/dev/sda5 atf vfat defaults 0 0
/dev/sda6 /boot vfat defaults 0 0
In most cases this doesn't appear to affect the systems negatively.
However, with the recent patch to switch to UUIDs [0aa5e600: "use uuid
instead of hard-coding root device"] this started becoming an issue on systems
using systemd. Therefore we need to stop wic from adding these junk entries so
that systems continue to boot correctly.
Build tested with core-image-base, nodistro, with both sysvinit and systemd
for:
- marsboard-rk3066
- rock2-square
- firefly-rk3288
- vyasa-rk3288
- nanopi-m4[-2gb]
- tinker-board[-s]
- rock-pi-e
- rock-pi-4[abc]
- rock64
Run tested, core-image-base, both sysvinit and systemd on:
- tinker-board
- rock-pi-e
- rock-pi-4b
- rock64
Commit message updated by Trevor Woerner <twoerner@gmail.com>
Tested-by: Trevor Woerner <twoerner@gmail.com>
Signed-off-by: MarkusVolk <f_l_k@t-online.de>
Recent upstream kernel changes have made the mmc probing order unpredictable.
Therefore, boards with both an emmc and sdmmc interface aren't guaranteed to
boot with a hard-coded root device selected.
For example, on the rock64, with linux-yocto 5.10.y, using the uSD card (i.e.
the sdmmc interface) about 50% of the time the boot would succeed, and roughly
50% of the time it wouldn't:
...
[ 0.612233] Waiting for root device /dev/mmcblk1p7...
[ 0.634551] mmc_host mmc1: Bus speed (slot 0) = 300000Hz (slot req 300000Hz, actual 300000HZ div = 0)
[ 0.639064] mmc_host mmc0: Bus speed (slot 0) = 50000000Hz (slot req 50000000Hz, actual 50000000HZ di)
[ 0.640007] mmc0: new high speed SDXC card at address 5048
[ 0.641176] mmcblk0: mmc0:5048 SD64G 58.0 GiB
[ 0.647610] random: fast init done
[ 0.648279] GPT:Primary header thinks Alt. header is not at the end of the disk.
[ 0.648941] GPT:376479 != 121634815
[ 0.649252] GPT:Alternate GPT header not at the end of the disk.
[ 0.649796] GPT:376479 != 121634815
[ 0.650106] GPT: Use GNU Parted to correct GPT errors.
[ 0.650598] mmcblk0: p1 p2 p3 p4 p5 p6 p7
NOTE the discrepancy between the kernel waiting for device /dev/mmcblk1p7,
which comes from the hard-coded kernel cmdline, and the kernel probing putting
the sdmmc on mmcblk0.
With linux-yocto 5.13.y on the rock64 using the uSD card the board would never
boot, the sdmmc always appears on mmcblk0.
Instead of simply changing the hard-coded root device (i.e. from mmcblk0 to
mmcblk1) switch to using partition UUIDs instead. Hard-coding the boot device
would work with 5.13.y but would fail 50% of the time with 5.10.y; who knows
what other kernels will do?
In any case, switching to UUIDs works regardless of board, kernel, or
available mmc interfaces.
Boot tested on:
- rock64
- nanopi-m4-2gb
- tinker-board
- rock-pi-e
- rock-pi-4b
Signed-off-by: Trevor Woerner <twoerner@gmail.com>
The rock64 has an ARM Mali 450 MP2 GPU, therefore enable mesa's lima for
accelerated, open-source graphics.
Signed-off-by: Trevor Woerner <twoerner@gmail.com>