diff mbox series

[meta-rockchip,v3] rock-3a add

Message ID 20231016104344.401706-1-anthony.t.davies@gmail.com
State New
Headers show
Series [meta-rockchip,v3] rock-3a add | expand

Commit Message

Anthony Davies Oct. 16, 2023, 10:43 a.m. UTC
From: Anthony Davies <anthony.t.davies@gmail.com>

Add support for the Radxa Rock 3A
https://wiki.radxa.com/Rock3/3a

The TF-A project does not currently have support for
the rk3568. Therefore, for the time-being, the only way to supply a
TPL/DDR-init for the rk3568 is to use the closed-source rkbin binaries
from Rockchip. If/when TF-A adds support for the rk3588 we can investigate
switching.

recipes-bsp/rkbin/rockchip-rkbin_git.bb was modified to allow a machine
override to allow both rk3568 and rk3588s to use differnet binary blobs

Signed-off-by: Anthony Davies <anthony.t.davies@gmail.com>
---
 README                                  |  1 +
 conf/machine/include/rk3568.inc         | 17 +++++++++++++++++
 conf/machine/rock-3a.conf               | 12 ++++++++++++
 recipes-bsp/rkbin/rockchip-rkbin_git.bb | 16 +++++++++++++++-
 recipes-bsp/u-boot/u-boot%.bbappend     |  5 +++++
 5 files changed, 50 insertions(+), 1 deletion(-)
 create mode 100644 conf/machine/include/rk3568.inc
 create mode 100644 conf/machine/rock-3a.conf

Comments

Trevor Woerner Oct. 25, 2023, 1:56 p.m. UTC | #1
Hi Anthony,

Thanks for working on this.

On Mon 2023-10-16 @ 09:43:45 PM, anthony.t.davies@gmail.com wrote:
> From: Anthony Davies <anthony.t.davies@gmail.com>
> 
> Add support for the Radxa Rock 3A
> https://wiki.radxa.com/Rock3/3a
> 
> The TF-A project does not currently have support for
> the rk3568. Therefore, for the time-being, the only way to supply a
> TPL/DDR-init for the rk3568 is to use the closed-source rkbin binaries
> from Rockchip. If/when TF-A adds support for the rk3588 we can investigate
> switching.
> 
> recipes-bsp/rkbin/rockchip-rkbin_git.bb was modified to allow a machine
> override to allow both rk3568 and rk3588s to use differnet binary blobs
> 
> Signed-off-by: Anthony Davies <anthony.t.davies@gmail.com>
> ---
>  README                                  |  1 +
>  conf/machine/include/rk3568.inc         | 17 +++++++++++++++++
>  conf/machine/rock-3a.conf               | 12 ++++++++++++
>  recipes-bsp/rkbin/rockchip-rkbin_git.bb | 16 +++++++++++++++-
>  recipes-bsp/u-boot/u-boot%.bbappend     |  5 +++++
>  5 files changed, 50 insertions(+), 1 deletion(-)
>  create mode 100644 conf/machine/include/rk3568.inc
>  create mode 100644 conf/machine/rock-3a.conf
> 
> diff --git a/README b/README
> index 8104474..3357b47 100644
> --- a/README
> +++ b/README
> @@ -32,6 +32,7 @@ Status of supported boards:
>  		nanopi-r4s
>  		rock-5b
>  		nanopi-r2s
> +    rock-3a

There's still an issue with indents/tabs.

>  	builds:
>  		marsboard-rk3066
>  		radxarock
> diff --git a/conf/machine/include/rk3568.inc b/conf/machine/include/rk3568.inc
> new file mode 100644
> index 0000000..5382b58
> --- /dev/null
> +++ b/conf/machine/include/rk3568.inc
> @@ -0,0 +1,17 @@
> +MACHINEOVERRIDES =. "rk3568:"
> +DEFAULTTUNE ?= "cortexa55"
> +
> +require conf/machine/include/arm/armv8-2a/tune-cortexa55.inc
> +require conf/machine/include/rockchip-defaults.inc
> +require conf/machine/include/rockchip-wic.inc
> +
> +KBUILD_DEFCONFIG ?= "defconfig"
> +KERNEL_FEATURES:append:rk3568 = " bsp/rockchip/remove-non-rockchip-arch-arm64.scc"
> +KERNEL_CLASSES ??= "kernel-fitimage"
> +KERNEL_IMAGETYPE ??= "fitImage"
> +
> +PREFERRED_PROVIDER_trusted-firmware-a = "rockchip-rkbin"
> +PREFERRED_PROVIDER_optee-os = "rockchip-rkbin"
> +
> +UBOOT_SUFFIX ?= "itb"
> +UBOOT_ENTRYPOINT ?= "0x06000000"
> diff --git a/conf/machine/rock-3a.conf b/conf/machine/rock-3a.conf
> new file mode 100644
> index 0000000..2ed83a3
> --- /dev/null
> +++ b/conf/machine/rock-3a.conf
> @@ -0,0 +1,12 @@
> +#@TYPE: Machine
> +#@NAME: Radxa Rock 3a
> +#@DESCRIPTION: ROCK3 is a series of Rockchip RK3566/RK3568 based
> +#SBC(Single Board Computer) and Compute Module by Radxa.
> +#https://wiki.radxa.com/Rock3
> +
> +require conf/machine/include/rk3568.inc
> +
> +KERNEL_DEVICETREE = "rockchip/rk3568-rock-3a.dtb"
> +MACHINE_EXTRA_RRECOMMENDS += "kernel-modules"
> +
> +UBOOT_MACHINE = "rock-3a-rk3568_defconfig"
> diff --git a/recipes-bsp/rkbin/rockchip-rkbin_git.bb b/recipes-bsp/rkbin/rockchip-rkbin_git.bb
> index 7fefb01..ad5593c 100644
> --- a/recipes-bsp/rkbin/rockchip-rkbin_git.bb
> +++ b/recipes-bsp/rkbin/rockchip-rkbin_git.bb
> @@ -14,6 +14,7 @@ S = "${WORKDIR}/git"
>  
>  COMPATIBLE_MACHINE = ""
>  COMPATIBLE_MACHINE:rk3588s = "rk3588s"
> +COMPATIBLE_MACHINE:rk3568 = "rk3568"
>  
>  PACKAGE_ARCH = "${MACHINE_ARCH}"
>  
> @@ -25,7 +26,16 @@ do_install() {
>  PACKAGES = "${PN}"
>  ALLOW_EMPTY:${PN} = "1"
>  
> -do_deploy() {
> +do_deploy:rk3568() {
> +	# Prebuilt TF-A
> +	install -m 644 ${S}/bin/rk35/rk3568_bl31_v*.elf ${DEPLOYDIR}/bl31-rk3568.elf
> +	# Prebuilt OPTEE-OS
> +	install -m 644 ${S}/bin/rk35/rk3568_bl32_v*.bin ${DEPLOYDIR}/tee-rk3568.bin
> +	# Prebuilt U-Boot TPL (DDR init)
> +	install -m 644 ${S}/bin/rk35/rk3568_ddr_1560MHz_v1.18.bin ${DEPLOYDIR}/ddr-rk3568.bin
> +}
> +
> +do_deploy:rk3588s() {
>  	# Prebuilt TF-A
>  	install -m 644 ${S}/bin/rk35/rk3588_bl31_v*.elf ${DEPLOYDIR}/bl31-rk3588.elf
>  	# Prebuilt OPTEE-OS
> @@ -34,4 +44,8 @@ do_deploy() {
>  	install -m 644 ${S}/bin/rk35/rk3588_ddr_lp4_2112MHz_lp5_2736MHz_v*.bin ${DEPLOYDIR}/ddr-rk3588.bin
>  }
>  
> +do_deploy() {
> +  bbfatal "COMPATIBLE_MACHINE requires a corressponding do_deploy:<MACHINE>() override"
> +}
> +

This is not related to adding support for rock3a.

>  addtask deploy after do_install
> diff --git a/recipes-bsp/u-boot/u-boot%.bbappend b/recipes-bsp/u-boot/u-boot%.bbappend
> index e79c471..66c81da 100644
> --- a/recipes-bsp/u-boot/u-boot%.bbappend
> +++ b/recipes-bsp/u-boot/u-boot%.bbappend
> @@ -9,12 +9,17 @@ EXTRA_OEMAKE:append:rk3588s = " \
>  	BL31=${DEPLOY_DIR_IMAGE}/bl31-rk3588.elf \
>  	ROCKCHIP_TPL=${DEPLOY_DIR_IMAGE}/ddr-rk3588.bin \
>  	"
> +EXTRA_OEMAKE:append:rk3568 = " \
> +	BL31=${DEPLOY_DIR_IMAGE}/bl31-rk3568.elf \
> +	ROCKCHIP_TPL=${DEPLOY_DIR_IMAGE}/ddr-rk3568.bin \
> +	"
>  
>  INIT_FIRMWARE_DEPENDS ??= ""
>  INIT_FIRMWARE_DEPENDS:px30 = " trusted-firmware-a:do_deploy"
>  INIT_FIRMWARE_DEPENDS:rk3328 = " trusted-firmware-a:do_deploy"
>  INIT_FIRMWARE_DEPENDS:rk3399 = " trusted-firmware-a:do_deploy"
>  INIT_FIRMWARE_DEPENDS:rk3588s = " rockchip-rkbin:do_deploy"
> +INIT_FIRMWARE_DEPENDS:rk3568 = " rockchip-rkbin:do_deploy"
>  do_compile[depends] .= "${INIT_FIRMWARE_DEPENDS}"
>  
>  do_compile:append:rock2-square () {
> -- 
> 2.34.1
>
Quentin Schulz Oct. 25, 2023, 2:22 p.m. UTC | #2
Hi Trevor,

On 10/25/23 15:56, Trevor Woerner via lists.yoctoproject.org wrote:
> Hi Anthony,
> 
> Thanks for working on this.
> 
> On Mon 2023-10-16 @ 09:43:45 PM, anthony.t.davies@gmail.com wrote:
>> From: Anthony Davies <anthony.t.davies@gmail.com>
>>
>> Add support for the Radxa Rock 3A
>> https://wiki.radxa.com/Rock3/3a
>>
>> The TF-A project does not currently have support for
>> the rk3568. Therefore, for the time-being, the only way to supply a
>> TPL/DDR-init for the rk3568 is to use the closed-source rkbin binaries
>> from Rockchip. If/when TF-A adds support for the rk3588 we can investigate
>> switching.
>>
>> recipes-bsp/rkbin/rockchip-rkbin_git.bb was modified to allow a machine
>> override to allow both rk3568 and rk3588s to use differnet binary blobs
>>
>> Signed-off-by: Anthony Davies <anthony.t.davies@gmail.com>
>> ---
>>   README                                  |  1 +
>>   conf/machine/include/rk3568.inc         | 17 +++++++++++++++++
>>   conf/machine/rock-3a.conf               | 12 ++++++++++++
>>   recipes-bsp/rkbin/rockchip-rkbin_git.bb | 16 +++++++++++++++-
>>   recipes-bsp/u-boot/u-boot%.bbappend     |  5 +++++
>>   5 files changed, 50 insertions(+), 1 deletion(-)
>>   create mode 100644 conf/machine/include/rk3568.inc
>>   create mode 100644 conf/machine/rock-3a.conf
>>
>> diff --git a/README b/README
>> index 8104474..3357b47 100644
>> --- a/README
>> +++ b/README
>> @@ -32,6 +32,7 @@ Status of supported boards:
>>   		nanopi-r4s
>>   		rock-5b
>>   		nanopi-r2s
>> +    rock-3a
> 
> There's still an issue with indents/tabs.
> 
>>   	builds:
>>   		marsboard-rk3066
>>   		radxarock
>> diff --git a/conf/machine/include/rk3568.inc b/conf/machine/include/rk3568.inc
>> new file mode 100644
>> index 0000000..5382b58
>> --- /dev/null
>> +++ b/conf/machine/include/rk3568.inc
>> @@ -0,0 +1,17 @@
>> +MACHINEOVERRIDES =. "rk3568:"
>> +DEFAULTTUNE ?= "cortexa55"
>> +
>> +require conf/machine/include/arm/armv8-2a/tune-cortexa55.inc
>> +require conf/machine/include/rockchip-defaults.inc
>> +require conf/machine/include/rockchip-wic.inc
>> +
>> +KBUILD_DEFCONFIG ?= "defconfig"
>> +KERNEL_FEATURES:append:rk3568 = " bsp/rockchip/remove-non-rockchip-arch-arm64.scc"
>> +KERNEL_CLASSES ??= "kernel-fitimage"
>> +KERNEL_IMAGETYPE ??= "fitImage"
>> +
>> +PREFERRED_PROVIDER_trusted-firmware-a = "rockchip-rkbin"
>> +PREFERRED_PROVIDER_optee-os = "rockchip-rkbin"
>> +
>> +UBOOT_SUFFIX ?= "itb"
>> +UBOOT_ENTRYPOINT ?= "0x06000000"
>> diff --git a/conf/machine/rock-3a.conf b/conf/machine/rock-3a.conf
>> new file mode 100644
>> index 0000000..2ed83a3
>> --- /dev/null
>> +++ b/conf/machine/rock-3a.conf
>> @@ -0,0 +1,12 @@
>> +#@TYPE: Machine
>> +#@NAME: Radxa Rock 3a
>> +#@DESCRIPTION: ROCK3 is a series of Rockchip RK3566/RK3568 based
>> +#SBC(Single Board Computer) and Compute Module by Radxa.
>> +#https://wiki.radxa.com/Rock3
>> +
>> +require conf/machine/include/rk3568.inc
>> +
>> +KERNEL_DEVICETREE = "rockchip/rk3568-rock-3a.dtb"
>> +MACHINE_EXTRA_RRECOMMENDS += "kernel-modules"
>> +
>> +UBOOT_MACHINE = "rock-3a-rk3568_defconfig"
>> diff --git a/recipes-bsp/rkbin/rockchip-rkbin_git.bb b/recipes-bsp/rkbin/rockchip-rkbin_git.bb
>> index 7fefb01..ad5593c 100644
>> --- a/recipes-bsp/rkbin/rockchip-rkbin_git.bb
>> +++ b/recipes-bsp/rkbin/rockchip-rkbin_git.bb
>> @@ -14,6 +14,7 @@ S = "${WORKDIR}/git"
>>   
>>   COMPATIBLE_MACHINE = ""
>>   COMPATIBLE_MACHINE:rk3588s = "rk3588s"
>> +COMPATIBLE_MACHINE:rk3568 = "rk3568"
>>   
>>   PACKAGE_ARCH = "${MACHINE_ARCH}"
>>   
>> @@ -25,7 +26,16 @@ do_install() {
>>   PACKAGES = "${PN}"
>>   ALLOW_EMPTY:${PN} = "1"
>>   
>> -do_deploy() {
>> +do_deploy:rk3568() {
>> +	# Prebuilt TF-A
>> +	install -m 644 ${S}/bin/rk35/rk3568_bl31_v*.elf ${DEPLOYDIR}/bl31-rk3568.elf
>> +	# Prebuilt OPTEE-OS
>> +	install -m 644 ${S}/bin/rk35/rk3568_bl32_v*.bin ${DEPLOYDIR}/tee-rk3568.bin
>> +	# Prebuilt U-Boot TPL (DDR init)
>> +	install -m 644 ${S}/bin/rk35/rk3568_ddr_1560MHz_v1.18.bin ${DEPLOYDIR}/ddr-rk3568.bin
>> +}
>> +
>> +do_deploy:rk3588s() {
>>   	# Prebuilt TF-A
>>   	install -m 644 ${S}/bin/rk35/rk3588_bl31_v*.elf ${DEPLOYDIR}/bl31-rk3588.elf
>>   	# Prebuilt OPTEE-OS
>> @@ -34,4 +44,8 @@ do_deploy() {
>>   	install -m 644 ${S}/bin/rk35/rk3588_ddr_lp4_2112MHz_lp5_2736MHz_v*.bin ${DEPLOYDIR}/ddr-rk3588.bin
>>   }
>>   
>> +do_deploy() {
>> +  bbfatal "COMPATIBLE_MACHINE requires a corressponding do_deploy:<MACHINE>() override"
>> +}
>> +
> 
> This is not related to adding support for rock3a.
> 

In a way it is, but would benefit in being in a different commit I agree.

So basically Anthony's issue (if I remember correctly) was that if 
you're not overriding the default do_deploy, the recipe will pass but 
install the wrong files with the wrong names, without telling you.

So instead, the thought was to make do_deploy fail by default (with 
bbfatal) unless it is overridden (e.g. for rk3588s and rk3568) so that 
people adding support for new SoCs don't wonder what's missing.

I could see a commit with a diff like:
"""
-do_deploy() {
+do_deploy:rk3588s() {
    	# Prebuilt TF-A
    	install -m 644 ${S}/bin/rk35/rk3588_bl31_v*.elf 
${DEPLOYDIR}/bl31-rk3588.elf
    	# Prebuilt OPTEE-OS
@@ -34,4 +44,8 @@ do_deploy() {
   	install -m 644 
${S}/bin/rk35/rk3588_ddr_lp4_2112MHz_lp5_2736MHz_v*.bin 
${DEPLOYDIR}/ddr-rk3588.bin
   }

+do_deploy() {
+  bbfatal "COMPATIBLE_MACHINE requires a corressponding 
do_deploy:<MACHINE>() override"
+}
+
"""

with a proper explanation in the commit log, and then a commit that adds 
one for rk3568.

Cheers,
Quentin

>>   addtask deploy after do_install
>> diff --git a/recipes-bsp/u-boot/u-boot%.bbappend b/recipes-bsp/u-boot/u-boot%.bbappend
>> index e79c471..66c81da 100644
>> --- a/recipes-bsp/u-boot/u-boot%.bbappend
>> +++ b/recipes-bsp/u-boot/u-boot%.bbappend
>> @@ -9,12 +9,17 @@ EXTRA_OEMAKE:append:rk3588s = " \
>>   	BL31=${DEPLOY_DIR_IMAGE}/bl31-rk3588.elf \
>>   	ROCKCHIP_TPL=${DEPLOY_DIR_IMAGE}/ddr-rk3588.bin \
>>   	"
>> +EXTRA_OEMAKE:append:rk3568 = " \
>> +	BL31=${DEPLOY_DIR_IMAGE}/bl31-rk3568.elf \
>> +	ROCKCHIP_TPL=${DEPLOY_DIR_IMAGE}/ddr-rk3568.bin \
>> +	"
>>   
>>   INIT_FIRMWARE_DEPENDS ??= ""
>>   INIT_FIRMWARE_DEPENDS:px30 = " trusted-firmware-a:do_deploy"
>>   INIT_FIRMWARE_DEPENDS:rk3328 = " trusted-firmware-a:do_deploy"
>>   INIT_FIRMWARE_DEPENDS:rk3399 = " trusted-firmware-a:do_deploy"
>>   INIT_FIRMWARE_DEPENDS:rk3588s = " rockchip-rkbin:do_deploy"
>> +INIT_FIRMWARE_DEPENDS:rk3568 = " rockchip-rkbin:do_deploy"
>>   do_compile[depends] .= "${INIT_FIRMWARE_DEPENDS}"
>>   
>>   do_compile:append:rock2-square () {
>> -- 
>> 2.34.1
>>
>>
>>
>> -=-=-=-=-=-=-=-=-=-=-=-
>> Links: You receive all messages sent to this group.
>> View/Reply Online (#61481): https://lists.yoctoproject.org/g/yocto/message/61481
>> Mute This Topic: https://lists.yoctoproject.org/mt/101992957/6293953
>> Group Owner: yocto+owner@lists.yoctoproject.org
>> Unsubscribe: https://lists.yoctoproject.org/g/yocto/unsub [quentin.schulz@theobroma-systems.com]
>> -=-=-=-=-=-=-=-=-=-=-=-
>>
Trevor Woerner Oct. 25, 2023, 2:42 p.m. UTC | #3
On Wed 2023-10-25 @ 04:22:17 PM, Quentin Schulz wrote:
> Hi Trevor,
> 
> On 10/25/23 15:56, Trevor Woerner via lists.yoctoproject.org wrote:
> > Hi Anthony,
> > 
> > Thanks for working on this.
> > 
> > On Mon 2023-10-16 @ 09:43:45 PM, anthony.t.davies@gmail.com wrote:
> > > From: Anthony Davies <anthony.t.davies@gmail.com>
> > > 
> > > Add support for the Radxa Rock 3A
> > > https://wiki.radxa.com/Rock3/3a
> > > 
> > > The TF-A project does not currently have support for
> > > the rk3568. Therefore, for the time-being, the only way to supply a
> > > TPL/DDR-init for the rk3568 is to use the closed-source rkbin binaries
> > > from Rockchip. If/when TF-A adds support for the rk3588 we can investigate
> > > switching.
> > > 
> > > recipes-bsp/rkbin/rockchip-rkbin_git.bb was modified to allow a machine
> > > override to allow both rk3568 and rk3588s to use differnet binary blobs
> > > 
> > > Signed-off-by: Anthony Davies <anthony.t.davies@gmail.com>
> > > ---
> > >   README                                  |  1 +
> > >   conf/machine/include/rk3568.inc         | 17 +++++++++++++++++
> > >   conf/machine/rock-3a.conf               | 12 ++++++++++++
> > >   recipes-bsp/rkbin/rockchip-rkbin_git.bb | 16 +++++++++++++++-
> > >   recipes-bsp/u-boot/u-boot%.bbappend     |  5 +++++
> > >   5 files changed, 50 insertions(+), 1 deletion(-)
> > >   create mode 100644 conf/machine/include/rk3568.inc
> > >   create mode 100644 conf/machine/rock-3a.conf
> > > 
> > > diff --git a/README b/README
> > > index 8104474..3357b47 100644
> > > --- a/README
> > > +++ b/README
> > > @@ -32,6 +32,7 @@ Status of supported boards:
> > >   		nanopi-r4s
> > >   		rock-5b
> > >   		nanopi-r2s
> > > +    rock-3a
> > 
> > There's still an issue with indents/tabs.
> > 
> > >   	builds:
> > >   		marsboard-rk3066
> > >   		radxarock
> > > diff --git a/conf/machine/include/rk3568.inc b/conf/machine/include/rk3568.inc
> > > new file mode 100644
> > > index 0000000..5382b58
> > > --- /dev/null
> > > +++ b/conf/machine/include/rk3568.inc
> > > @@ -0,0 +1,17 @@
> > > +MACHINEOVERRIDES =. "rk3568:"
> > > +DEFAULTTUNE ?= "cortexa55"
> > > +
> > > +require conf/machine/include/arm/armv8-2a/tune-cortexa55.inc
> > > +require conf/machine/include/rockchip-defaults.inc
> > > +require conf/machine/include/rockchip-wic.inc
> > > +
> > > +KBUILD_DEFCONFIG ?= "defconfig"
> > > +KERNEL_FEATURES:append:rk3568 = " bsp/rockchip/remove-non-rockchip-arch-arm64.scc"
> > > +KERNEL_CLASSES ??= "kernel-fitimage"
> > > +KERNEL_IMAGETYPE ??= "fitImage"
> > > +
> > > +PREFERRED_PROVIDER_trusted-firmware-a = "rockchip-rkbin"
> > > +PREFERRED_PROVIDER_optee-os = "rockchip-rkbin"
> > > +
> > > +UBOOT_SUFFIX ?= "itb"
> > > +UBOOT_ENTRYPOINT ?= "0x06000000"
> > > diff --git a/conf/machine/rock-3a.conf b/conf/machine/rock-3a.conf
> > > new file mode 100644
> > > index 0000000..2ed83a3
> > > --- /dev/null
> > > +++ b/conf/machine/rock-3a.conf
> > > @@ -0,0 +1,12 @@
> > > +#@TYPE: Machine
> > > +#@NAME: Radxa Rock 3a
> > > +#@DESCRIPTION: ROCK3 is a series of Rockchip RK3566/RK3568 based
> > > +#SBC(Single Board Computer) and Compute Module by Radxa.
> > > +#https://wiki.radxa.com/Rock3
> > > +
> > > +require conf/machine/include/rk3568.inc
> > > +
> > > +KERNEL_DEVICETREE = "rockchip/rk3568-rock-3a.dtb"
> > > +MACHINE_EXTRA_RRECOMMENDS += "kernel-modules"
> > > +
> > > +UBOOT_MACHINE = "rock-3a-rk3568_defconfig"
> > > diff --git a/recipes-bsp/rkbin/rockchip-rkbin_git.bb b/recipes-bsp/rkbin/rockchip-rkbin_git.bb
> > > index 7fefb01..ad5593c 100644
> > > --- a/recipes-bsp/rkbin/rockchip-rkbin_git.bb
> > > +++ b/recipes-bsp/rkbin/rockchip-rkbin_git.bb
> > > @@ -14,6 +14,7 @@ S = "${WORKDIR}/git"
> > >   COMPATIBLE_MACHINE = ""
> > >   COMPATIBLE_MACHINE:rk3588s = "rk3588s"
> > > +COMPATIBLE_MACHINE:rk3568 = "rk3568"
> > >   PACKAGE_ARCH = "${MACHINE_ARCH}"
> > > @@ -25,7 +26,16 @@ do_install() {
> > >   PACKAGES = "${PN}"
> > >   ALLOW_EMPTY:${PN} = "1"
> > > -do_deploy() {
> > > +do_deploy:rk3568() {
> > > +	# Prebuilt TF-A
> > > +	install -m 644 ${S}/bin/rk35/rk3568_bl31_v*.elf ${DEPLOYDIR}/bl31-rk3568.elf
> > > +	# Prebuilt OPTEE-OS
> > > +	install -m 644 ${S}/bin/rk35/rk3568_bl32_v*.bin ${DEPLOYDIR}/tee-rk3568.bin
> > > +	# Prebuilt U-Boot TPL (DDR init)
> > > +	install -m 644 ${S}/bin/rk35/rk3568_ddr_1560MHz_v1.18.bin ${DEPLOYDIR}/ddr-rk3568.bin
> > > +}
> > > +
> > > +do_deploy:rk3588s() {
> > >   	# Prebuilt TF-A
> > >   	install -m 644 ${S}/bin/rk35/rk3588_bl31_v*.elf ${DEPLOYDIR}/bl31-rk3588.elf
> > >   	# Prebuilt OPTEE-OS
> > > @@ -34,4 +44,8 @@ do_deploy() {
> > >   	install -m 644 ${S}/bin/rk35/rk3588_ddr_lp4_2112MHz_lp5_2736MHz_v*.bin ${DEPLOYDIR}/ddr-rk3588.bin
> > >   }
> > > +do_deploy() {
> > > +  bbfatal "COMPATIBLE_MACHINE requires a corressponding do_deploy:<MACHINE>() override"
> > > +}
> > > +
> > 
> > This is not related to adding support for rock3a.
> > 
> 
> In a way it is, but would benefit in being in a different commit I agree.
> 
> So basically Anthony's issue (if I remember correctly) was that if you're
> not overriding the default do_deploy, the recipe will pass but install the
> wrong files with the wrong names, without telling you.
> 
> So instead, the thought was to make do_deploy fail by default (with bbfatal)
> unless it is overridden (e.g. for rk3588s and rk3568) so that people adding
> support for new SoCs don't wonder what's missing.
> 
> I could see a commit with a diff like:
> """
> -do_deploy() {
> +do_deploy:rk3588s() {
>    	# Prebuilt TF-A
>    	install -m 644 ${S}/bin/rk35/rk3588_bl31_v*.elf
> ${DEPLOYDIR}/bl31-rk3588.elf
>    	# Prebuilt OPTEE-OS
> @@ -34,4 +44,8 @@ do_deploy() {
>   	install -m 644 ${S}/bin/rk35/rk3588_ddr_lp4_2112MHz_lp5_2736MHz_v*.bin
> ${DEPLOYDIR}/ddr-rk3588.bin
>   }
> 
> +do_deploy() {
> +  bbfatal "COMPATIBLE_MACHINE requires a corressponding
> do_deploy:<MACHINE>() override"
> +}
> +
> """
> 
> with a proper explanation in the commit log, and then a commit that adds one
> for rk3568.

...and then another set for kirkstone, no doubt?

> 
> Cheers,
> Quentin
> 
> > >   addtask deploy after do_install
> > > diff --git a/recipes-bsp/u-boot/u-boot%.bbappend b/recipes-bsp/u-boot/u-boot%.bbappend
> > > index e79c471..66c81da 100644
> > > --- a/recipes-bsp/u-boot/u-boot%.bbappend
> > > +++ b/recipes-bsp/u-boot/u-boot%.bbappend
> > > @@ -9,12 +9,17 @@ EXTRA_OEMAKE:append:rk3588s = " \
> > >   	BL31=${DEPLOY_DIR_IMAGE}/bl31-rk3588.elf \
> > >   	ROCKCHIP_TPL=${DEPLOY_DIR_IMAGE}/ddr-rk3588.bin \
> > >   	"
> > > +EXTRA_OEMAKE:append:rk3568 = " \
> > > +	BL31=${DEPLOY_DIR_IMAGE}/bl31-rk3568.elf \
> > > +	ROCKCHIP_TPL=${DEPLOY_DIR_IMAGE}/ddr-rk3568.bin \
> > > +	"
> > >   INIT_FIRMWARE_DEPENDS ??= ""
> > >   INIT_FIRMWARE_DEPENDS:px30 = " trusted-firmware-a:do_deploy"
> > >   INIT_FIRMWARE_DEPENDS:rk3328 = " trusted-firmware-a:do_deploy"
> > >   INIT_FIRMWARE_DEPENDS:rk3399 = " trusted-firmware-a:do_deploy"
> > >   INIT_FIRMWARE_DEPENDS:rk3588s = " rockchip-rkbin:do_deploy"
> > > +INIT_FIRMWARE_DEPENDS:rk3568 = " rockchip-rkbin:do_deploy"
> > >   do_compile[depends] .= "${INIT_FIRMWARE_DEPENDS}"
> > >   do_compile:append:rock2-square () {
> > > -- 
> > > 2.34.1
> > > 
> > > 
> > > 
> > > -=-=-=-=-=-=-=-=-=-=-=-
> > > Links: You receive all messages sent to this group.
> > > View/Reply Online (#61481): https://lists.yoctoproject.org/g/yocto/message/61481
> > > Mute This Topic: https://lists.yoctoproject.org/mt/101992957/6293953
> > > Group Owner: yocto+owner@lists.yoctoproject.org
> > > Unsubscribe: https://lists.yoctoproject.org/g/yocto/unsub [quentin.schulz@theobroma-systems.com]
> > > -=-=-=-=-=-=-=-=-=-=-=-
> > >
Quentin Schulz Oct. 25, 2023, 3:49 p.m. UTC | #4
Hi Trevor,

On 10/25/23 16:42, Trevor Woerner wrote:
> On Wed 2023-10-25 @ 04:22:17 PM, Quentin Schulz wrote:
>> Hi Trevor,
>>
>> On 10/25/23 15:56, Trevor Woerner via lists.yoctoproject.org wrote:
>>> Hi Anthony,
>>>
>>> Thanks for working on this.
>>>
>>> On Mon 2023-10-16 @ 09:43:45 PM, anthony.t.davies@gmail.com wrote:
>>>> From: Anthony Davies <anthony.t.davies@gmail.com>
>>>>
>>>> Add support for the Radxa Rock 3A
>>>> https://wiki.radxa.com/Rock3/3a
>>>>
>>>> The TF-A project does not currently have support for
>>>> the rk3568. Therefore, for the time-being, the only way to supply a
>>>> TPL/DDR-init for the rk3568 is to use the closed-source rkbin binaries
>>>> from Rockchip. If/when TF-A adds support for the rk3588 we can investigate
>>>> switching.
>>>>
>>>> recipes-bsp/rkbin/rockchip-rkbin_git.bb was modified to allow a machine
>>>> override to allow both rk3568 and rk3588s to use differnet binary blobs
>>>>
>>>> Signed-off-by: Anthony Davies <anthony.t.davies@gmail.com>
>>>> ---
>>>>    README                                  |  1 +
>>>>    conf/machine/include/rk3568.inc         | 17 +++++++++++++++++
>>>>    conf/machine/rock-3a.conf               | 12 ++++++++++++
>>>>    recipes-bsp/rkbin/rockchip-rkbin_git.bb | 16 +++++++++++++++-
>>>>    recipes-bsp/u-boot/u-boot%.bbappend     |  5 +++++
>>>>    5 files changed, 50 insertions(+), 1 deletion(-)
>>>>    create mode 100644 conf/machine/include/rk3568.inc
>>>>    create mode 100644 conf/machine/rock-3a.conf
>>>>
>>>> diff --git a/README b/README
>>>> index 8104474..3357b47 100644
>>>> --- a/README
>>>> +++ b/README
>>>> @@ -32,6 +32,7 @@ Status of supported boards:
>>>>    		nanopi-r4s
>>>>    		rock-5b
>>>>    		nanopi-r2s
>>>> +    rock-3a
>>>
>>> There's still an issue with indents/tabs.
>>>
>>>>    	builds:
>>>>    		marsboard-rk3066
>>>>    		radxarock
>>>> diff --git a/conf/machine/include/rk3568.inc b/conf/machine/include/rk3568.inc
>>>> new file mode 100644
>>>> index 0000000..5382b58
>>>> --- /dev/null
>>>> +++ b/conf/machine/include/rk3568.inc
>>>> @@ -0,0 +1,17 @@
>>>> +MACHINEOVERRIDES =. "rk3568:"
>>>> +DEFAULTTUNE ?= "cortexa55"
>>>> +
>>>> +require conf/machine/include/arm/armv8-2a/tune-cortexa55.inc
>>>> +require conf/machine/include/rockchip-defaults.inc
>>>> +require conf/machine/include/rockchip-wic.inc
>>>> +
>>>> +KBUILD_DEFCONFIG ?= "defconfig"
>>>> +KERNEL_FEATURES:append:rk3568 = " bsp/rockchip/remove-non-rockchip-arch-arm64.scc"
>>>> +KERNEL_CLASSES ??= "kernel-fitimage"
>>>> +KERNEL_IMAGETYPE ??= "fitImage"
>>>> +
>>>> +PREFERRED_PROVIDER_trusted-firmware-a = "rockchip-rkbin"
>>>> +PREFERRED_PROVIDER_optee-os = "rockchip-rkbin"
>>>> +
>>>> +UBOOT_SUFFIX ?= "itb"
>>>> +UBOOT_ENTRYPOINT ?= "0x06000000"
>>>> diff --git a/conf/machine/rock-3a.conf b/conf/machine/rock-3a.conf
>>>> new file mode 100644
>>>> index 0000000..2ed83a3
>>>> --- /dev/null
>>>> +++ b/conf/machine/rock-3a.conf
>>>> @@ -0,0 +1,12 @@
>>>> +#@TYPE: Machine
>>>> +#@NAME: Radxa Rock 3a
>>>> +#@DESCRIPTION: ROCK3 is a series of Rockchip RK3566/RK3568 based
>>>> +#SBC(Single Board Computer) and Compute Module by Radxa.
>>>> +#https://wiki.radxa.com/Rock3
>>>> +
>>>> +require conf/machine/include/rk3568.inc
>>>> +
>>>> +KERNEL_DEVICETREE = "rockchip/rk3568-rock-3a.dtb"
>>>> +MACHINE_EXTRA_RRECOMMENDS += "kernel-modules"
>>>> +
>>>> +UBOOT_MACHINE = "rock-3a-rk3568_defconfig"
>>>> diff --git a/recipes-bsp/rkbin/rockchip-rkbin_git.bb b/recipes-bsp/rkbin/rockchip-rkbin_git.bb
>>>> index 7fefb01..ad5593c 100644
>>>> --- a/recipes-bsp/rkbin/rockchip-rkbin_git.bb
>>>> +++ b/recipes-bsp/rkbin/rockchip-rkbin_git.bb
>>>> @@ -14,6 +14,7 @@ S = "${WORKDIR}/git"
>>>>    COMPATIBLE_MACHINE = ""
>>>>    COMPATIBLE_MACHINE:rk3588s = "rk3588s"
>>>> +COMPATIBLE_MACHINE:rk3568 = "rk3568"
>>>>    PACKAGE_ARCH = "${MACHINE_ARCH}"
>>>> @@ -25,7 +26,16 @@ do_install() {
>>>>    PACKAGES = "${PN}"
>>>>    ALLOW_EMPTY:${PN} = "1"
>>>> -do_deploy() {
>>>> +do_deploy:rk3568() {
>>>> +	# Prebuilt TF-A
>>>> +	install -m 644 ${S}/bin/rk35/rk3568_bl31_v*.elf ${DEPLOYDIR}/bl31-rk3568.elf
>>>> +	# Prebuilt OPTEE-OS
>>>> +	install -m 644 ${S}/bin/rk35/rk3568_bl32_v*.bin ${DEPLOYDIR}/tee-rk3568.bin
>>>> +	# Prebuilt U-Boot TPL (DDR init)
>>>> +	install -m 644 ${S}/bin/rk35/rk3568_ddr_1560MHz_v1.18.bin ${DEPLOYDIR}/ddr-rk3568.bin
>>>> +}
>>>> +
>>>> +do_deploy:rk3588s() {
>>>>    	# Prebuilt TF-A
>>>>    	install -m 644 ${S}/bin/rk35/rk3588_bl31_v*.elf ${DEPLOYDIR}/bl31-rk3588.elf
>>>>    	# Prebuilt OPTEE-OS
>>>> @@ -34,4 +44,8 @@ do_deploy() {
>>>>    	install -m 644 ${S}/bin/rk35/rk3588_ddr_lp4_2112MHz_lp5_2736MHz_v*.bin ${DEPLOYDIR}/ddr-rk3588.bin
>>>>    }
>>>> +do_deploy() {
>>>> +  bbfatal "COMPATIBLE_MACHINE requires a corressponding do_deploy:<MACHINE>() override"
>>>> +}
>>>> +
>>>
>>> This is not related to adding support for rock3a.
>>>
>>
>> In a way it is, but would benefit in being in a different commit I agree.
>>
>> So basically Anthony's issue (if I remember correctly) was that if you're
>> not overriding the default do_deploy, the recipe will pass but install the
>> wrong files with the wrong names, without telling you.
>>
>> So instead, the thought was to make do_deploy fail by default (with bbfatal)
>> unless it is overridden (e.g. for rk3588s and rk3568) so that people adding
>> support for new SoCs don't wonder what's missing.
>>
>> I could see a commit with a diff like:
>> """
>> -do_deploy() {
>> +do_deploy:rk3588s() {
>>     	# Prebuilt TF-A
>>     	install -m 644 ${S}/bin/rk35/rk3588_bl31_v*.elf
>> ${DEPLOYDIR}/bl31-rk3588.elf
>>     	# Prebuilt OPTEE-OS
>> @@ -34,4 +44,8 @@ do_deploy() {
>>    	install -m 644 ${S}/bin/rk35/rk3588_ddr_lp4_2112MHz_lp5_2736MHz_v*.bin
>> ${DEPLOYDIR}/ddr-rk3588.bin
>>    }
>>
>> +do_deploy() {
>> +  bbfatal "COMPATIBLE_MACHINE requires a corressponding
>> do_deploy:<MACHINE>() override"
>> +}
>> +
>> """
>>
>> with a proper explanation in the commit log, and then a commit that adds one
>> for rk3568.
> 
> ...and then another set for kirkstone, no doubt?
> 

I don't have a personal need for supporting anything else other than 
RK3588 on kirkstone, so I will not be pushing for it. Therefore, this is 
a decision for you to make as a maintainer if you actively want people 
to do it as part of follow-up of commits to master branch, do it 
yourself or wait for people to contribute backports to kirkstone 
whenever they need them.

Cheers,
Quentin
Trevor Woerner Oct. 25, 2023, 4:20 p.m. UTC | #5
On Wed 2023-10-25 @ 05:49:06 PM, Quentin Schulz wrote:
> Hi Trevor,
> 
> On 10/25/23 16:42, Trevor Woerner wrote:
> > On Wed 2023-10-25 @ 04:22:17 PM, Quentin Schulz wrote:
> > > Hi Trevor,
> > > 
> > > On 10/25/23 15:56, Trevor Woerner via lists.yoctoproject.org wrote:
> > > > Hi Anthony,
> > > > 
> > > > Thanks for working on this.
> > > > 
> > > > On Mon 2023-10-16 @ 09:43:45 PM, anthony.t.davies@gmail.com wrote:
> > > > > From: Anthony Davies <anthony.t.davies@gmail.com>
> > > > > 
> > > > > Add support for the Radxa Rock 3A
> > > > > https://wiki.radxa.com/Rock3/3a
> > > > > 
> > > > > The TF-A project does not currently have support for
> > > > > the rk3568. Therefore, for the time-being, the only way to supply a
> > > > > TPL/DDR-init for the rk3568 is to use the closed-source rkbin binaries
> > > > > from Rockchip. If/when TF-A adds support for the rk3588 we can investigate
> > > > > switching.
> > > > > 
> > > > > recipes-bsp/rkbin/rockchip-rkbin_git.bb was modified to allow a machine
> > > > > override to allow both rk3568 and rk3588s to use differnet binary blobs
> > > > > 
> > > > > Signed-off-by: Anthony Davies <anthony.t.davies@gmail.com>
> > > > > ---
> > > > >    README                                  |  1 +
> > > > >    conf/machine/include/rk3568.inc         | 17 +++++++++++++++++
> > > > >    conf/machine/rock-3a.conf               | 12 ++++++++++++
> > > > >    recipes-bsp/rkbin/rockchip-rkbin_git.bb | 16 +++++++++++++++-
> > > > >    recipes-bsp/u-boot/u-boot%.bbappend     |  5 +++++
> > > > >    5 files changed, 50 insertions(+), 1 deletion(-)
> > > > >    create mode 100644 conf/machine/include/rk3568.inc
> > > > >    create mode 100644 conf/machine/rock-3a.conf
> > > > > 
> > > > > diff --git a/README b/README
> > > > > index 8104474..3357b47 100644
> > > > > --- a/README
> > > > > +++ b/README
> > > > > @@ -32,6 +32,7 @@ Status of supported boards:
> > > > >    		nanopi-r4s
> > > > >    		rock-5b
> > > > >    		nanopi-r2s
> > > > > +    rock-3a
> > > > 
> > > > There's still an issue with indents/tabs.
> > > > 
> > > > >    	builds:
> > > > >    		marsboard-rk3066
> > > > >    		radxarock
> > > > > diff --git a/conf/machine/include/rk3568.inc b/conf/machine/include/rk3568.inc
> > > > > new file mode 100644
> > > > > index 0000000..5382b58
> > > > > --- /dev/null
> > > > > +++ b/conf/machine/include/rk3568.inc
> > > > > @@ -0,0 +1,17 @@
> > > > > +MACHINEOVERRIDES =. "rk3568:"
> > > > > +DEFAULTTUNE ?= "cortexa55"
> > > > > +
> > > > > +require conf/machine/include/arm/armv8-2a/tune-cortexa55.inc
> > > > > +require conf/machine/include/rockchip-defaults.inc
> > > > > +require conf/machine/include/rockchip-wic.inc
> > > > > +
> > > > > +KBUILD_DEFCONFIG ?= "defconfig"
> > > > > +KERNEL_FEATURES:append:rk3568 = " bsp/rockchip/remove-non-rockchip-arch-arm64.scc"
> > > > > +KERNEL_CLASSES ??= "kernel-fitimage"
> > > > > +KERNEL_IMAGETYPE ??= "fitImage"
> > > > > +
> > > > > +PREFERRED_PROVIDER_trusted-firmware-a = "rockchip-rkbin"
> > > > > +PREFERRED_PROVIDER_optee-os = "rockchip-rkbin"
> > > > > +
> > > > > +UBOOT_SUFFIX ?= "itb"
> > > > > +UBOOT_ENTRYPOINT ?= "0x06000000"
> > > > > diff --git a/conf/machine/rock-3a.conf b/conf/machine/rock-3a.conf
> > > > > new file mode 100644
> > > > > index 0000000..2ed83a3
> > > > > --- /dev/null
> > > > > +++ b/conf/machine/rock-3a.conf
> > > > > @@ -0,0 +1,12 @@
> > > > > +#@TYPE: Machine
> > > > > +#@NAME: Radxa Rock 3a
> > > > > +#@DESCRIPTION: ROCK3 is a series of Rockchip RK3566/RK3568 based
> > > > > +#SBC(Single Board Computer) and Compute Module by Radxa.
> > > > > +#https://wiki.radxa.com/Rock3
> > > > > +
> > > > > +require conf/machine/include/rk3568.inc
> > > > > +
> > > > > +KERNEL_DEVICETREE = "rockchip/rk3568-rock-3a.dtb"
> > > > > +MACHINE_EXTRA_RRECOMMENDS += "kernel-modules"
> > > > > +
> > > > > +UBOOT_MACHINE = "rock-3a-rk3568_defconfig"
> > > > > diff --git a/recipes-bsp/rkbin/rockchip-rkbin_git.bb b/recipes-bsp/rkbin/rockchip-rkbin_git.bb
> > > > > index 7fefb01..ad5593c 100644
> > > > > --- a/recipes-bsp/rkbin/rockchip-rkbin_git.bb
> > > > > +++ b/recipes-bsp/rkbin/rockchip-rkbin_git.bb
> > > > > @@ -14,6 +14,7 @@ S = "${WORKDIR}/git"
> > > > >    COMPATIBLE_MACHINE = ""
> > > > >    COMPATIBLE_MACHINE:rk3588s = "rk3588s"
> > > > > +COMPATIBLE_MACHINE:rk3568 = "rk3568"
> > > > >    PACKAGE_ARCH = "${MACHINE_ARCH}"
> > > > > @@ -25,7 +26,16 @@ do_install() {
> > > > >    PACKAGES = "${PN}"
> > > > >    ALLOW_EMPTY:${PN} = "1"
> > > > > -do_deploy() {
> > > > > +do_deploy:rk3568() {
> > > > > +	# Prebuilt TF-A
> > > > > +	install -m 644 ${S}/bin/rk35/rk3568_bl31_v*.elf ${DEPLOYDIR}/bl31-rk3568.elf
> > > > > +	# Prebuilt OPTEE-OS
> > > > > +	install -m 644 ${S}/bin/rk35/rk3568_bl32_v*.bin ${DEPLOYDIR}/tee-rk3568.bin
> > > > > +	# Prebuilt U-Boot TPL (DDR init)
> > > > > +	install -m 644 ${S}/bin/rk35/rk3568_ddr_1560MHz_v1.18.bin ${DEPLOYDIR}/ddr-rk3568.bin
> > > > > +}
> > > > > +
> > > > > +do_deploy:rk3588s() {
> > > > >    	# Prebuilt TF-A
> > > > >    	install -m 644 ${S}/bin/rk35/rk3588_bl31_v*.elf ${DEPLOYDIR}/bl31-rk3588.elf
> > > > >    	# Prebuilt OPTEE-OS
> > > > > @@ -34,4 +44,8 @@ do_deploy() {
> > > > >    	install -m 644 ${S}/bin/rk35/rk3588_ddr_lp4_2112MHz_lp5_2736MHz_v*.bin ${DEPLOYDIR}/ddr-rk3588.bin
> > > > >    }
> > > > > +do_deploy() {
> > > > > +  bbfatal "COMPATIBLE_MACHINE requires a corressponding do_deploy:<MACHINE>() override"
> > > > > +}
> > > > > +
> > > > 
> > > > This is not related to adding support for rock3a.
> > > > 
> > > 
> > > In a way it is, but would benefit in being in a different commit I agree.
> > > 
> > > So basically Anthony's issue (if I remember correctly) was that if you're
> > > not overriding the default do_deploy, the recipe will pass but install the
> > > wrong files with the wrong names, without telling you.
> > > 
> > > So instead, the thought was to make do_deploy fail by default (with bbfatal)
> > > unless it is overridden (e.g. for rk3588s and rk3568) so that people adding
> > > support for new SoCs don't wonder what's missing.
> > > 
> > > I could see a commit with a diff like:
> > > """
> > > -do_deploy() {
> > > +do_deploy:rk3588s() {
> > >     	# Prebuilt TF-A
> > >     	install -m 644 ${S}/bin/rk35/rk3588_bl31_v*.elf
> > > ${DEPLOYDIR}/bl31-rk3588.elf
> > >     	# Prebuilt OPTEE-OS
> > > @@ -34,4 +44,8 @@ do_deploy() {
> > >    	install -m 644 ${S}/bin/rk35/rk3588_ddr_lp4_2112MHz_lp5_2736MHz_v*.bin
> > > ${DEPLOYDIR}/ddr-rk3588.bin
> > >    }
> > > 
> > > +do_deploy() {
> > > +  bbfatal "COMPATIBLE_MACHINE requires a corressponding
> > > do_deploy:<MACHINE>() override"
> > > +}
> > > +
> > > """
> > > 
> > > with a proper explanation in the commit log, and then a commit that adds one
> > > for rk3568.
> > 
> > ...and then another set for kirkstone, no doubt?
> > 
> 
> I don't have a personal need for supporting anything else other than RK3588
> on kirkstone, so I will not be pushing for it. Therefore, this is a decision
> for you to make as a maintainer if you actively want people to do it as part
> of follow-up of commits to master branch, do it yourself or wait for people
> to contribute backports to kirkstone whenever they need them.

Okay, sounds good. I won't backport until/unless I know someone is interested.
Also, rk3568 support is probably poor in kirkstone anyway (same as rk3588/s).
Anthony Davies Oct. 26, 2023, 4:17 a.m. UTC | #6
Hi,

It is in that the rk3568 won't boot without rkbin and it needed to be
modified to allow multiple machines to be able to have their own
rkbin.

I never had a problem with not having the catchall, just old habits of
never have a conditional without a catchall explaining the problem of
getting there (if it should never get there)

On Thu, 26 Oct 2023 at 01:22, Quentin Schulz
<quentin.schulz@theobroma-systems.com> wrote:
>
> Hi Trevor,
>
> On 10/25/23 15:56, Trevor Woerner via lists.yoctoproject.org wrote:
> > Hi Anthony,
> >
> > Thanks for working on this.
> >
> > On Mon 2023-10-16 @ 09:43:45 PM, anthony.t.davies@gmail.com wrote:
> >> From: Anthony Davies <anthony.t.davies@gmail.com>
> >>
> >> Add support for the Radxa Rock 3A
> >> https://wiki.radxa.com/Rock3/3a
> >>
> >> The TF-A project does not currently have support for
> >> the rk3568. Therefore, for the time-being, the only way to supply a
> >> TPL/DDR-init for the rk3568 is to use the closed-source rkbin binaries
> >> from Rockchip. If/when TF-A adds support for the rk3588 we can investigate
> >> switching.
> >>
> >> recipes-bsp/rkbin/rockchip-rkbin_git.bb was modified to allow a machine
> >> override to allow both rk3568 and rk3588s to use differnet binary blobs
> >>
> >> Signed-off-by: Anthony Davies <anthony.t.davies@gmail.com>
> >> ---
> >>   README                                  |  1 +
> >>   conf/machine/include/rk3568.inc         | 17 +++++++++++++++++
> >>   conf/machine/rock-3a.conf               | 12 ++++++++++++
> >>   recipes-bsp/rkbin/rockchip-rkbin_git.bb | 16 +++++++++++++++-
> >>   recipes-bsp/u-boot/u-boot%.bbappend     |  5 +++++
> >>   5 files changed, 50 insertions(+), 1 deletion(-)
> >>   create mode 100644 conf/machine/include/rk3568.inc
> >>   create mode 100644 conf/machine/rock-3a.conf
> >>
> >> diff --git a/README b/README
> >> index 8104474..3357b47 100644
> >> --- a/README
> >> +++ b/README
> >> @@ -32,6 +32,7 @@ Status of supported boards:
> >>              nanopi-r4s
> >>              rock-5b
> >>              nanopi-r2s
> >> +    rock-3a
> >
> > There's still an issue with indents/tabs.
> >
> >>      builds:
> >>              marsboard-rk3066
> >>              radxarock
> >> diff --git a/conf/machine/include/rk3568.inc b/conf/machine/include/rk3568.inc
> >> new file mode 100644
> >> index 0000000..5382b58
> >> --- /dev/null
> >> +++ b/conf/machine/include/rk3568.inc
> >> @@ -0,0 +1,17 @@
> >> +MACHINEOVERRIDES =. "rk3568:"
> >> +DEFAULTTUNE ?= "cortexa55"
> >> +
> >> +require conf/machine/include/arm/armv8-2a/tune-cortexa55.inc
> >> +require conf/machine/include/rockchip-defaults.inc
> >> +require conf/machine/include/rockchip-wic.inc
> >> +
> >> +KBUILD_DEFCONFIG ?= "defconfig"
> >> +KERNEL_FEATURES:append:rk3568 = " bsp/rockchip/remove-non-rockchip-arch-arm64.scc"
> >> +KERNEL_CLASSES ??= "kernel-fitimage"
> >> +KERNEL_IMAGETYPE ??= "fitImage"
> >> +
> >> +PREFERRED_PROVIDER_trusted-firmware-a = "rockchip-rkbin"
> >> +PREFERRED_PROVIDER_optee-os = "rockchip-rkbin"
> >> +
> >> +UBOOT_SUFFIX ?= "itb"
> >> +UBOOT_ENTRYPOINT ?= "0x06000000"
> >> diff --git a/conf/machine/rock-3a.conf b/conf/machine/rock-3a.conf
> >> new file mode 100644
> >> index 0000000..2ed83a3
> >> --- /dev/null
> >> +++ b/conf/machine/rock-3a.conf
> >> @@ -0,0 +1,12 @@
> >> +#@TYPE: Machine
> >> +#@NAME: Radxa Rock 3a
> >> +#@DESCRIPTION: ROCK3 is a series of Rockchip RK3566/RK3568 based
> >> +#SBC(Single Board Computer) and Compute Module by Radxa.
> >> +#https://wiki.radxa.com/Rock3
> >> +
> >> +require conf/machine/include/rk3568.inc
> >> +
> >> +KERNEL_DEVICETREE = "rockchip/rk3568-rock-3a.dtb"
> >> +MACHINE_EXTRA_RRECOMMENDS += "kernel-modules"
> >> +
> >> +UBOOT_MACHINE = "rock-3a-rk3568_defconfig"
> >> diff --git a/recipes-bsp/rkbin/rockchip-rkbin_git.bb b/recipes-bsp/rkbin/rockchip-rkbin_git.bb
> >> index 7fefb01..ad5593c 100644
> >> --- a/recipes-bsp/rkbin/rockchip-rkbin_git.bb
> >> +++ b/recipes-bsp/rkbin/rockchip-rkbin_git.bb
> >> @@ -14,6 +14,7 @@ S = "${WORKDIR}/git"
> >>
> >>   COMPATIBLE_MACHINE = ""
> >>   COMPATIBLE_MACHINE:rk3588s = "rk3588s"
> >> +COMPATIBLE_MACHINE:rk3568 = "rk3568"
> >>
> >>   PACKAGE_ARCH = "${MACHINE_ARCH}"
> >>
> >> @@ -25,7 +26,16 @@ do_install() {
> >>   PACKAGES = "${PN}"
> >>   ALLOW_EMPTY:${PN} = "1"
> >>
> >> -do_deploy() {
> >> +do_deploy:rk3568() {
> >> +    # Prebuilt TF-A
> >> +    install -m 644 ${S}/bin/rk35/rk3568_bl31_v*.elf ${DEPLOYDIR}/bl31-rk3568.elf
> >> +    # Prebuilt OPTEE-OS
> >> +    install -m 644 ${S}/bin/rk35/rk3568_bl32_v*.bin ${DEPLOYDIR}/tee-rk3568.bin
> >> +    # Prebuilt U-Boot TPL (DDR init)
> >> +    install -m 644 ${S}/bin/rk35/rk3568_ddr_1560MHz_v1.18.bin ${DEPLOYDIR}/ddr-rk3568.bin
> >> +}
> >> +
> >> +do_deploy:rk3588s() {
> >>      # Prebuilt TF-A
> >>      install -m 644 ${S}/bin/rk35/rk3588_bl31_v*.elf ${DEPLOYDIR}/bl31-rk3588.elf
> >>      # Prebuilt OPTEE-OS
> >> @@ -34,4 +44,8 @@ do_deploy() {
> >>      install -m 644 ${S}/bin/rk35/rk3588_ddr_lp4_2112MHz_lp5_2736MHz_v*.bin ${DEPLOYDIR}/ddr-rk3588.bin
> >>   }
> >>
> >> +do_deploy() {
> >> +  bbfatal "COMPATIBLE_MACHINE requires a corressponding do_deploy:<MACHINE>() override"
> >> +}
> >> +
> >
> > This is not related to adding support for rock3a.
> >
>
> In a way it is, but would benefit in being in a different commit I agree.
>
> So basically Anthony's issue (if I remember correctly) was that if
> you're not overriding the default do_deploy, the recipe will pass but
> install the wrong files with the wrong names, without telling you.
>
> So instead, the thought was to make do_deploy fail by default (with
> bbfatal) unless it is overridden (e.g. for rk3588s and rk3568) so that
> people adding support for new SoCs don't wonder what's missing.
>
> I could see a commit with a diff like:
> """
> -do_deploy() {
> +do_deploy:rk3588s() {
>         # Prebuilt TF-A
>         install -m 644 ${S}/bin/rk35/rk3588_bl31_v*.elf
> ${DEPLOYDIR}/bl31-rk3588.elf
>         # Prebuilt OPTEE-OS
> @@ -34,4 +44,8 @@ do_deploy() {
>         install -m 644
> ${S}/bin/rk35/rk3588_ddr_lp4_2112MHz_lp5_2736MHz_v*.bin
> ${DEPLOYDIR}/ddr-rk3588.bin
>    }
>
> +do_deploy() {
> +  bbfatal "COMPATIBLE_MACHINE requires a corressponding
> do_deploy:<MACHINE>() override"
> +}
> +
> """
>
> with a proper explanation in the commit log, and then a commit that adds
> one for rk3568.
>
> Cheers,
> Quentin
>
> >>   addtask deploy after do_install
> >> diff --git a/recipes-bsp/u-boot/u-boot%.bbappend b/recipes-bsp/u-boot/u-boot%.bbappend
> >> index e79c471..66c81da 100644
> >> --- a/recipes-bsp/u-boot/u-boot%.bbappend
> >> +++ b/recipes-bsp/u-boot/u-boot%.bbappend
> >> @@ -9,12 +9,17 @@ EXTRA_OEMAKE:append:rk3588s = " \
> >>      BL31=${DEPLOY_DIR_IMAGE}/bl31-rk3588.elf \
> >>      ROCKCHIP_TPL=${DEPLOY_DIR_IMAGE}/ddr-rk3588.bin \
> >>      "
> >> +EXTRA_OEMAKE:append:rk3568 = " \
> >> +    BL31=${DEPLOY_DIR_IMAGE}/bl31-rk3568.elf \
> >> +    ROCKCHIP_TPL=${DEPLOY_DIR_IMAGE}/ddr-rk3568.bin \
> >> +    "
> >>
> >>   INIT_FIRMWARE_DEPENDS ??= ""
> >>   INIT_FIRMWARE_DEPENDS:px30 = " trusted-firmware-a:do_deploy"
> >>   INIT_FIRMWARE_DEPENDS:rk3328 = " trusted-firmware-a:do_deploy"
> >>   INIT_FIRMWARE_DEPENDS:rk3399 = " trusted-firmware-a:do_deploy"
> >>   INIT_FIRMWARE_DEPENDS:rk3588s = " rockchip-rkbin:do_deploy"
> >> +INIT_FIRMWARE_DEPENDS:rk3568 = " rockchip-rkbin:do_deploy"
> >>   do_compile[depends] .= "${INIT_FIRMWARE_DEPENDS}"
> >>
> >>   do_compile:append:rock2-square () {
> >> --
> >> 2.34.1
> >>
> >>
> >>
> >> -=-=-=-=-=-=-=-=-=-=-=-
> >> Links: You receive all messages sent to this group.
> >> View/Reply Online (#61481): https://lists.yoctoproject.org/g/yocto/message/61481
> >> Mute This Topic: https://lists.yoctoproject.org/mt/101992957/6293953
> >> Group Owner: yocto+owner@lists.yoctoproject.org
> >> Unsubscribe: https://lists.yoctoproject.org/g/yocto/unsub [quentin.schulz@theobroma-systems.com]
> >> -=-=-=-=-=-=-=-=-=-=-=-
> >>
Trevor Woerner Jan. 21, 2024, 2:41 a.m. UTC | #7
On Mon 2023-10-16 @ 09:43:45 PM, anthony.t.davies@gmail.com wrote:
> From: Anthony Davies <anthony.t.davies@gmail.com>
> 
> Add support for the Radxa Rock 3A
> https://wiki.radxa.com/Rock3/3a
> 
> The TF-A project does not currently have support for
> the rk3568. Therefore, for the time-being, the only way to supply a
> TPL/DDR-init for the rk3568 is to use the closed-source rkbin binaries
> from Rockchip. If/when TF-A adds support for the rk3588 we can investigate
> switching.
> 
> recipes-bsp/rkbin/rockchip-rkbin_git.bb was modified to allow a machine
> override to allow both rk3568 and rk3588s to use differnet binary blobs
> 
> Signed-off-by: Anthony Davies <anthony.t.davies@gmail.com>
> ---
>  README                                  |  1 +
>  conf/machine/include/rk3568.inc         | 17 +++++++++++++++++
>  conf/machine/rock-3a.conf               | 12 ++++++++++++
>  recipes-bsp/rkbin/rockchip-rkbin_git.bb | 16 +++++++++++++++-
>  recipes-bsp/u-boot/u-boot%.bbappend     |  5 +++++
>  5 files changed, 50 insertions(+), 1 deletion(-)
>  create mode 100644 conf/machine/include/rk3568.inc
>  create mode 100644 conf/machine/rock-3a.conf

Applied some form of this patch to meta-rockchip, master branch.
Thanks!
diff mbox series

Patch

diff --git a/README b/README
index 8104474..3357b47 100644
--- a/README
+++ b/README
@@ -32,6 +32,7 @@  Status of supported boards:
 		nanopi-r4s
 		rock-5b
 		nanopi-r2s
+    rock-3a
 	builds:
 		marsboard-rk3066
 		radxarock
diff --git a/conf/machine/include/rk3568.inc b/conf/machine/include/rk3568.inc
new file mode 100644
index 0000000..5382b58
--- /dev/null
+++ b/conf/machine/include/rk3568.inc
@@ -0,0 +1,17 @@ 
+MACHINEOVERRIDES =. "rk3568:"
+DEFAULTTUNE ?= "cortexa55"
+
+require conf/machine/include/arm/armv8-2a/tune-cortexa55.inc
+require conf/machine/include/rockchip-defaults.inc
+require conf/machine/include/rockchip-wic.inc
+
+KBUILD_DEFCONFIG ?= "defconfig"
+KERNEL_FEATURES:append:rk3568 = " bsp/rockchip/remove-non-rockchip-arch-arm64.scc"
+KERNEL_CLASSES ??= "kernel-fitimage"
+KERNEL_IMAGETYPE ??= "fitImage"
+
+PREFERRED_PROVIDER_trusted-firmware-a = "rockchip-rkbin"
+PREFERRED_PROVIDER_optee-os = "rockchip-rkbin"
+
+UBOOT_SUFFIX ?= "itb"
+UBOOT_ENTRYPOINT ?= "0x06000000"
diff --git a/conf/machine/rock-3a.conf b/conf/machine/rock-3a.conf
new file mode 100644
index 0000000..2ed83a3
--- /dev/null
+++ b/conf/machine/rock-3a.conf
@@ -0,0 +1,12 @@ 
+#@TYPE: Machine
+#@NAME: Radxa Rock 3a
+#@DESCRIPTION: ROCK3 is a series of Rockchip RK3566/RK3568 based
+#SBC(Single Board Computer) and Compute Module by Radxa.
+#https://wiki.radxa.com/Rock3
+
+require conf/machine/include/rk3568.inc
+
+KERNEL_DEVICETREE = "rockchip/rk3568-rock-3a.dtb"
+MACHINE_EXTRA_RRECOMMENDS += "kernel-modules"
+
+UBOOT_MACHINE = "rock-3a-rk3568_defconfig"
diff --git a/recipes-bsp/rkbin/rockchip-rkbin_git.bb b/recipes-bsp/rkbin/rockchip-rkbin_git.bb
index 7fefb01..ad5593c 100644
--- a/recipes-bsp/rkbin/rockchip-rkbin_git.bb
+++ b/recipes-bsp/rkbin/rockchip-rkbin_git.bb
@@ -14,6 +14,7 @@  S = "${WORKDIR}/git"
 
 COMPATIBLE_MACHINE = ""
 COMPATIBLE_MACHINE:rk3588s = "rk3588s"
+COMPATIBLE_MACHINE:rk3568 = "rk3568"
 
 PACKAGE_ARCH = "${MACHINE_ARCH}"
 
@@ -25,7 +26,16 @@  do_install() {
 PACKAGES = "${PN}"
 ALLOW_EMPTY:${PN} = "1"
 
-do_deploy() {
+do_deploy:rk3568() {
+	# Prebuilt TF-A
+	install -m 644 ${S}/bin/rk35/rk3568_bl31_v*.elf ${DEPLOYDIR}/bl31-rk3568.elf
+	# Prebuilt OPTEE-OS
+	install -m 644 ${S}/bin/rk35/rk3568_bl32_v*.bin ${DEPLOYDIR}/tee-rk3568.bin
+	# Prebuilt U-Boot TPL (DDR init)
+	install -m 644 ${S}/bin/rk35/rk3568_ddr_1560MHz_v1.18.bin ${DEPLOYDIR}/ddr-rk3568.bin
+}
+
+do_deploy:rk3588s() {
 	# Prebuilt TF-A
 	install -m 644 ${S}/bin/rk35/rk3588_bl31_v*.elf ${DEPLOYDIR}/bl31-rk3588.elf
 	# Prebuilt OPTEE-OS
@@ -34,4 +44,8 @@  do_deploy() {
 	install -m 644 ${S}/bin/rk35/rk3588_ddr_lp4_2112MHz_lp5_2736MHz_v*.bin ${DEPLOYDIR}/ddr-rk3588.bin
 }
 
+do_deploy() {
+  bbfatal "COMPATIBLE_MACHINE requires a corressponding do_deploy:<MACHINE>() override"
+}
+
 addtask deploy after do_install
diff --git a/recipes-bsp/u-boot/u-boot%.bbappend b/recipes-bsp/u-boot/u-boot%.bbappend
index e79c471..66c81da 100644
--- a/recipes-bsp/u-boot/u-boot%.bbappend
+++ b/recipes-bsp/u-boot/u-boot%.bbappend
@@ -9,12 +9,17 @@  EXTRA_OEMAKE:append:rk3588s = " \
 	BL31=${DEPLOY_DIR_IMAGE}/bl31-rk3588.elf \
 	ROCKCHIP_TPL=${DEPLOY_DIR_IMAGE}/ddr-rk3588.bin \
 	"
+EXTRA_OEMAKE:append:rk3568 = " \
+	BL31=${DEPLOY_DIR_IMAGE}/bl31-rk3568.elf \
+	ROCKCHIP_TPL=${DEPLOY_DIR_IMAGE}/ddr-rk3568.bin \
+	"
 
 INIT_FIRMWARE_DEPENDS ??= ""
 INIT_FIRMWARE_DEPENDS:px30 = " trusted-firmware-a:do_deploy"
 INIT_FIRMWARE_DEPENDS:rk3328 = " trusted-firmware-a:do_deploy"
 INIT_FIRMWARE_DEPENDS:rk3399 = " trusted-firmware-a:do_deploy"
 INIT_FIRMWARE_DEPENDS:rk3588s = " rockchip-rkbin:do_deploy"
+INIT_FIRMWARE_DEPENDS:rk3568 = " rockchip-rkbin:do_deploy"
 do_compile[depends] .= "${INIT_FIRMWARE_DEPENDS}"
 
 do_compile:append:rock2-square () {