mail archive of the barebox mailing list
 help / color / mirror / Atom feed
From: Ahmad Fatoum <a.fatoum@pengutronix.de>
To: Sascha Hauer <s.hauer@pengutronix.de>,
	"open list:BAREBOX" <barebox@lists.infradead.org>
Subject: Re: [PATCH v3 17/23] scripts: k3: add script to generate cfg files from yaml
Date: Tue, 14 Jan 2025 10:29:55 +0100	[thread overview]
Message-ID: <79fbd9f8-b538-4446-8b02-d1225edb883b@pengutronix.de> (raw)
In-Reply-To: <20250113-k3-r5-v3-17-065fcdcc28d3@pengutronix.de>

Hi,

On 13.01.25 12:27, Sascha Hauer wrote:
> The K3 images need some config binary snippets. In U-Boot these snippets
> are generated from board specific YAML files using binman. This patch
> adds a small python which does the same for barebox. The python script
> is based on the corresponding binman code in U-Boot.
> 
> The YAML files are board specific in U-Boot, but mostly are identical
> for all boards of a specific SoC type, so we provide common SoC specific
> YAML files in barebox for now.

I thought the YAML files are only required for the Cortex-R5? This adds
a yamllint dependency to multi_v8_defconfig now:

K3CFG   arch/arm/mach-k3/combined-dm-cfg-am625.k3cfg
  K3CFG   arch/arm/mach-k3/combined-sysfw-cfg-am625.k3cfg
Traceback (most recent call last):
  File "/src/barebox-sandbox/scripts/ti-board-config.py", line 13, in <module>
Traceback (most recent call last):
  File "/src/barebox-sandbox/scripts/ti-board-config.py", line 13, in <module>
    import yamllint
ModuleNotFoundError: No module named 'yamllint'
    import yamllint
ModuleNotFoundError: No module named 'yamllint'

Thanks,
Ahmad

> 
> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
> ---
>  arch/arm/mach-k3/Makefile             |  16 +
>  arch/arm/mach-k3/board-cfg-am625.yaml |  36 ++
>  arch/arm/mach-k3/pm-cfg-am625.yaml    |  12 +
>  arch/arm/mach-k3/rm-cfg-am625.yaml    | 981 ++++++++++++++++++++++++++++++++++
>  arch/arm/mach-k3/schema.yaml          | 436 +++++++++++++++
>  arch/arm/mach-k3/sec-cfg-am625.yaml   | 379 +++++++++++++
>  scripts/Makefile.lib                  |   3 +
>  scripts/ti-board-config.py            | 170 ++++++
>  8 files changed, 2033 insertions(+)
> 
> diff --git a/arch/arm/mach-k3/Makefile b/arch/arm/mach-k3/Makefile
> index 0efc1e0239..6e105095da 100644
> --- a/arch/arm/mach-k3/Makefile
> +++ b/arch/arm/mach-k3/Makefile
> @@ -1,2 +1,18 @@
>  obj-y += common.o
>  obj-pbl-$(CONFIG_MACH_K3_CORTEX_R5) += r5.o
> +
> +extra-y += combined-dm-cfg-am625.k3cfg combined-sysfw-cfg-am625.k3cfg
> +
> +$(obj)/combined-dm-cfg-am625.k3cfg: $(srctree)/arch/arm/mach-k3/schema.yaml \
> +				    $(obj)/pm-cfg-am625.yaml \
> +				    $(obj)/rm-cfg-am625.yaml \
> +				    FORCE
> +	$(call if_changed,k3_cfg)
> +
> +$(obj)/combined-sysfw-cfg-am625.k3cfg: $(srctree)/arch/arm/mach-k3/schema.yaml \
> +				       $(obj)/board-cfg-am625.yaml \
> +				       $(obj)/sec-cfg-am625.yaml \
> +				       $(obj)/pm-cfg-am625.yaml \
> +				       $(obj)/rm-cfg-am625.yaml \
> +				       FORCE
> +	$(call if_changed,k3_cfg)
> diff --git a/arch/arm/mach-k3/board-cfg-am625.yaml b/arch/arm/mach-k3/board-cfg-am625.yaml
> new file mode 100644
> index 0000000000..45c89dd15f
> --- /dev/null
> +++ b/arch/arm/mach-k3/board-cfg-am625.yaml
> @@ -0,0 +1,36 @@
> +# SPDX-License-Identifier: GPL-2.0+
> +# Copyright (C) 2022-2023 Texas Instruments Incorporated - https://www.ti.com/
> +#
> +# Board configuration for AM62
> +#
> +
> +---
> +
> +board-cfg:
> +    rev:
> +        boardcfg_abi_maj: 0x0
> +        boardcfg_abi_min: 0x1
> +    control:
> +        subhdr:
> +            magic: 0xC1D3
> +            size: 7
> +        main_isolation_enable: 0x5A
> +        main_isolation_hostid: 0x2
> +    secproxy:
> +        subhdr:
> +            magic: 0x1207
> +            size: 7
> +        scaling_factor: 0x1
> +        scaling_profile: 0x1
> +        disable_main_nav_secure_proxy: 0
> +    msmc:
> +        subhdr:
> +            magic: 0xA5C3
> +            size: 5
> +        msmc_cache_size: 0x0
> +    debug_cfg:
> +        subhdr:
> +            magic: 0x020C
> +            size: 8
> +        trace_dst_enables: 0x00
> +        trace_src_enables: 0x00
> diff --git a/arch/arm/mach-k3/pm-cfg-am625.yaml b/arch/arm/mach-k3/pm-cfg-am625.yaml
> new file mode 100644
> index 0000000000..9853a25eb8
> --- /dev/null
> +++ b/arch/arm/mach-k3/pm-cfg-am625.yaml
> @@ -0,0 +1,12 @@
> +# SPDX-License-Identifier: GPL-2.0+
> +# Copyright (C) 2022-2023 Texas Instruments Incorporated - https://www.ti.com/
> +#
> +# Power management configuration for AM62
> +#
> +
> +---
> +
> +pm-cfg:
> +    rev:
> +        boardcfg_abi_maj: 0x0
> +        boardcfg_abi_min: 0x1
> diff --git a/arch/arm/mach-k3/rm-cfg-am625.yaml b/arch/arm/mach-k3/rm-cfg-am625.yaml
> new file mode 100644
> index 0000000000..725f7c83f0
> --- /dev/null
> +++ b/arch/arm/mach-k3/rm-cfg-am625.yaml
> @@ -0,0 +1,981 @@
> +# SPDX-License-Identifier: GPL-2.0+
> +# Copyright (C) 2022-2023 Texas Instruments Incorporated - https://www.ti.com/
> +#
> +# Resource management configuration for AM62X
> +#
> +
> +---
> +
> +rm-cfg:
> +    rm_boardcfg:
> +        rev:
> +            boardcfg_abi_maj: 0x0
> +            boardcfg_abi_min: 0x1
> +        host_cfg:
> +            subhdr:
> +                magic: 0x4C41
> +                size: 356
> +            host_cfg_entries:
> +                -  # 1
> +                    host_id: 12
> +                    allowed_atype: 0x2A
> +                    allowed_qos: 0xAAAA
> +                    allowed_orderid: 0xAAAAAAAA
> +                    allowed_priority: 0xAAAA
> +                    allowed_sched_priority: 0xAA
> +                -  # 2
> +                    host_id: 30
> +                    allowed_atype: 0x2A
> +                    allowed_qos: 0xAAAA
> +                    allowed_orderid: 0xAAAAAAAA
> +                    allowed_priority: 0xAAAA
> +                    allowed_sched_priority: 0xAA
> +                -  # 3
> +                    host_id: 36
> +                    allowed_atype: 0x2A
> +                    allowed_qos: 0xAAAA
> +                    allowed_orderid: 0xAAAAAAAA
> +                    allowed_priority: 0xAAAA
> +                    allowed_sched_priority: 0xAA
> +                -  # 4
> +                    host_id: 0
> +                    allowed_atype: 0
> +                    allowed_qos: 0
> +                    allowed_orderid: 0
> +                    allowed_priority: 0
> +                    allowed_sched_priority: 0
> +                -  # 5
> +                    host_id: 0
> +                    allowed_atype: 0
> +                    allowed_qos: 0
> +                    allowed_orderid: 0
> +                    allowed_priority: 0
> +                    allowed_sched_priority: 0
> +                -  # 6
> +                    host_id: 0
> +                    allowed_atype: 0
> +                    allowed_qos: 0
> +                    allowed_orderid: 0
> +                    allowed_priority: 0
> +                    allowed_sched_priority: 0
> +                -  # 7
> +                    host_id: 0
> +                    allowed_atype: 0
> +                    allowed_qos: 0
> +                    allowed_orderid: 0
> +                    allowed_priority: 0
> +                    allowed_sched_priority: 0
> +                -  # 8
> +                    host_id: 0
> +                    allowed_atype: 0
> +                    allowed_qos: 0
> +                    allowed_orderid: 0
> +                    allowed_priority: 0
> +                    allowed_sched_priority: 0
> +                -  # 9
> +                    host_id: 0
> +                    allowed_atype: 0
> +                    allowed_qos: 0
> +                    allowed_orderid: 0
> +                    allowed_priority: 0
> +                    allowed_sched_priority: 0
> +                -  # 10
> +                    host_id: 0
> +                    allowed_atype: 0
> +                    allowed_qos: 0
> +                    allowed_orderid: 0
> +                    allowed_priority: 0
> +                    allowed_sched_priority: 0
> +                -  # 11
> +                    host_id: 0
> +                    allowed_atype: 0
> +                    allowed_qos: 0
> +                    allowed_orderid: 0
> +                    allowed_priority: 0
> +                    allowed_sched_priority: 0
> +                -  # 12
> +                    host_id: 0
> +                    allowed_atype: 0
> +                    allowed_qos: 0
> +                    allowed_orderid: 0
> +                    allowed_priority: 0
> +                    allowed_sched_priority: 0
> +                -  # 13
> +                    host_id: 0
> +                    allowed_atype: 0
> +                    allowed_qos: 0
> +                    allowed_orderid: 0
> +                    allowed_priority: 0
> +                    allowed_sched_priority: 0
> +                -  # 14
> +                    host_id: 0
> +                    allowed_atype: 0
> +                    allowed_qos: 0
> +                    allowed_orderid: 0
> +                    allowed_priority: 0
> +                    allowed_sched_priority: 0
> +                -  # 15
> +                    host_id: 0
> +                    allowed_atype: 0
> +                    allowed_qos: 0
> +                    allowed_orderid: 0
> +                    allowed_priority: 0
> +                    allowed_sched_priority: 0
> +                -  # 16
> +                    host_id: 0
> +                    allowed_atype: 0
> +                    allowed_qos: 0
> +                    allowed_orderid: 0
> +                    allowed_priority: 0
> +                    allowed_sched_priority: 0
> +                -  # 17
> +                    host_id: 0
> +                    allowed_atype: 0
> +                    allowed_qos: 0
> +                    allowed_orderid: 0
> +                    allowed_priority: 0
> +                    allowed_sched_priority: 0
> +                -  # 18
> +                    host_id: 0
> +                    allowed_atype: 0
> +                    allowed_qos: 0
> +                    allowed_orderid: 0
> +                    allowed_priority: 0
> +                    allowed_sched_priority: 0
> +                -  # 19
> +                    host_id: 0
> +                    allowed_atype: 0
> +                    allowed_qos: 0
> +                    allowed_orderid: 0
> +                    allowed_priority: 0
> +                    allowed_sched_priority: 0
> +                -  # 20
> +                    host_id: 0
> +                    allowed_atype: 0
> +                    allowed_qos: 0
> +                    allowed_orderid: 0
> +                    allowed_priority: 0
> +                    allowed_sched_priority: 0
> +                -  # 21
> +                    host_id: 0
> +                    allowed_atype: 0
> +                    allowed_qos: 0
> +                    allowed_orderid: 0
> +                    allowed_priority: 0
> +                    allowed_sched_priority: 0
> +                -  # 22
> +                    host_id: 0
> +                    allowed_atype: 0
> +                    allowed_qos: 0
> +                    allowed_orderid: 0
> +                    allowed_priority: 0
> +                    allowed_sched_priority: 0
> +                -  # 23
> +                    host_id: 0
> +                    allowed_atype: 0
> +                    allowed_qos: 0
> +                    allowed_orderid: 0
> +                    allowed_priority: 0
> +                    allowed_sched_priority: 0
> +                -  # 24
> +                    host_id: 0
> +                    allowed_atype: 0
> +                    allowed_qos: 0
> +                    allowed_orderid: 0
> +                    allowed_priority: 0
> +                    allowed_sched_priority: 0
> +                -  # 25
> +                    host_id: 0
> +                    allowed_atype: 0
> +                    allowed_qos: 0
> +                    allowed_orderid: 0
> +                    allowed_priority: 0
> +                    allowed_sched_priority: 0
> +                -  # 26
> +                    host_id: 0
> +                    allowed_atype: 0
> +                    allowed_qos: 0
> +                    allowed_orderid: 0
> +                    allowed_priority: 0
> +                    allowed_sched_priority: 0
> +                -  # 27
> +                    host_id: 0
> +                    allowed_atype: 0
> +                    allowed_qos: 0
> +                    allowed_orderid: 0
> +                    allowed_priority: 0
> +                    allowed_sched_priority: 0
> +                -  # 28
> +                    host_id: 0
> +                    allowed_atype: 0
> +                    allowed_qos: 0
> +                    allowed_orderid: 0
> +                    allowed_priority: 0
> +                    allowed_sched_priority: 0
> +                -  # 29
> +                    host_id: 0
> +                    allowed_atype: 0
> +                    allowed_qos: 0
> +                    allowed_orderid: 0
> +                    allowed_priority: 0
> +                    allowed_sched_priority: 0
> +                -  # 30
> +                    host_id: 0
> +                    allowed_atype: 0
> +                    allowed_qos: 0
> +                    allowed_orderid: 0
> +                    allowed_priority: 0
> +                    allowed_sched_priority: 0
> +                -  # 31
> +                    host_id: 0
> +                    allowed_atype: 0
> +                    allowed_qos: 0
> +                    allowed_orderid: 0
> +                    allowed_priority: 0
> +                    allowed_sched_priority: 0
> +                -  # 32
> +                    host_id: 0
> +                    allowed_atype: 0
> +                    allowed_qos: 0
> +                    allowed_orderid: 0
> +                    allowed_priority: 0
> +                    allowed_sched_priority: 0
> +        resasg:
> +            subhdr:
> +                magic: 0x7B25
> +                size: 8
> +            resasg_entries_size: 976
> +            reserved: 0
> +    resasg_entries:
> +        -
> +            start_resource: 0
> +            num_resource: 16
> +            type: 64
> +            host_id: 12
> +            reserved: 0
> +        -
> +            start_resource: 16
> +            num_resource: 4
> +            type: 64
> +            host_id: 35
> +            reserved: 0
> +        -
> +            start_resource: 16
> +            num_resource: 4
> +            type: 64
> +            host_id: 36
> +            reserved: 0
> +        -
> +            start_resource: 20
> +            num_resource: 22
> +            type: 64
> +            host_id: 30
> +            reserved: 0
> +        -
> +            start_resource: 0
> +            num_resource: 16
> +            type: 192
> +            host_id: 12
> +            reserved: 0
> +        -
> +            start_resource: 34
> +            num_resource: 2
> +            type: 192
> +            host_id: 30
> +            reserved: 0
> +        -
> +            start_resource: 0
> +            num_resource: 2
> +            type: 320
> +            host_id: 12
> +            reserved: 0
> +        -
> +            start_resource: 2
> +            num_resource: 2
> +            type: 320
> +            host_id: 35
> +            reserved: 0
> +        -
> +            start_resource: 2
> +            num_resource: 2
> +            type: 320
> +            host_id: 36
> +            reserved: 0
> +        -
> +            start_resource: 4
> +            num_resource: 4
> +            type: 320
> +            host_id: 30
> +            reserved: 0
> +        -
> +            start_resource: 0
> +            num_resource: 26
> +            type: 384
> +            host_id: 128
> +            reserved: 0
> +        -
> +            start_resource: 50176
> +            num_resource: 164
> +            type: 1666
> +            host_id: 128
> +            reserved: 0
> +        -
> +            start_resource: 0
> +            num_resource: 1
> +            type: 1667
> +            host_id: 128
> +            reserved: 0
> +        -
> +            start_resource: 0
> +            num_resource: 18
> +            type: 1677
> +            host_id: 12
> +            reserved: 0
> +        -
> +            start_resource: 18
> +            num_resource: 6
> +            type: 1677
> +            host_id: 35
> +            reserved: 0
> +        -
> +            start_resource: 18
> +            num_resource: 6
> +            type: 1677
> +            host_id: 36
> +            reserved: 0
> +        -
> +            start_resource: 24
> +            num_resource: 2
> +            type: 1677
> +            host_id: 30
> +            reserved: 0
> +        -
> +            start_resource: 26
> +            num_resource: 6
> +            type: 1677
> +            host_id: 128
> +            reserved: 0
> +        -
> +            start_resource: 54
> +            num_resource: 18
> +            type: 1678
> +            host_id: 12
> +            reserved: 0
> +        -
> +            start_resource: 72
> +            num_resource: 6
> +            type: 1678
> +            host_id: 35
> +            reserved: 0
> +        -
> +            start_resource: 72
> +            num_resource: 6
> +            type: 1678
> +            host_id: 36
> +            reserved: 0
> +        -
> +            start_resource: 78
> +            num_resource: 2
> +            type: 1678
> +            host_id: 30
> +            reserved: 0
> +        -
> +            start_resource: 80
> +            num_resource: 2
> +            type: 1678
> +            host_id: 128
> +            reserved: 0
> +        -
> +            start_resource: 32
> +            num_resource: 12
> +            type: 1679
> +            host_id: 12
> +            reserved: 0
> +        -
> +            start_resource: 44
> +            num_resource: 6
> +            type: 1679
> +            host_id: 35
> +            reserved: 0
> +        -
> +            start_resource: 44
> +            num_resource: 6
> +            type: 1679
> +            host_id: 36
> +            reserved: 0
> +        -
> +            start_resource: 50
> +            num_resource: 2
> +            type: 1679
> +            host_id: 30
> +            reserved: 0
> +        -
> +            start_resource: 52
> +            num_resource: 2
> +            type: 1679
> +            host_id: 128
> +            reserved: 0
> +        -
> +            start_resource: 0
> +            num_resource: 18
> +            type: 1696
> +            host_id: 12
> +            reserved: 0
> +        -
> +            start_resource: 18
> +            num_resource: 6
> +            type: 1696
> +            host_id: 35
> +            reserved: 0
> +        -
> +            start_resource: 18
> +            num_resource: 6
> +            type: 1696
> +            host_id: 36
> +            reserved: 0
> +        -
> +            start_resource: 24
> +            num_resource: 2
> +            type: 1696
> +            host_id: 30
> +            reserved: 0
> +        -
> +            start_resource: 26
> +            num_resource: 6
> +            type: 1696
> +            host_id: 128
> +            reserved: 0
> +        -
> +            start_resource: 0
> +            num_resource: 18
> +            type: 1697
> +            host_id: 12
> +            reserved: 0
> +        -
> +            start_resource: 18
> +            num_resource: 6
> +            type: 1697
> +            host_id: 35
> +            reserved: 0
> +        -
> +            start_resource: 18
> +            num_resource: 6
> +            type: 1697
> +            host_id: 36
> +            reserved: 0
> +        -
> +            start_resource: 24
> +            num_resource: 2
> +            type: 1697
> +            host_id: 30
> +            reserved: 0
> +        -
> +            start_resource: 26
> +            num_resource: 2
> +            type: 1697
> +            host_id: 128
> +            reserved: 0
> +        -
> +            start_resource: 0
> +            num_resource: 12
> +            type: 1698
> +            host_id: 12
> +            reserved: 0
> +        -
> +            start_resource: 12
> +            num_resource: 6
> +            type: 1698
> +            host_id: 35
> +            reserved: 0
> +        -
> +            start_resource: 12
> +            num_resource: 6
> +            type: 1698
> +            host_id: 36
> +            reserved: 0
> +        -
> +            start_resource: 18
> +            num_resource: 2
> +            type: 1698
> +            host_id: 30
> +            reserved: 0
> +        -
> +            start_resource: 20
> +            num_resource: 2
> +            type: 1698
> +            host_id: 128
> +            reserved: 0
> +        -
> +            start_resource: 5
> +            num_resource: 35
> +            type: 1802
> +            host_id: 12
> +            reserved: 0
> +        -
> +            start_resource: 44
> +            num_resource: 36
> +            type: 1802
> +            host_id: 35
> +            reserved: 0
> +        -
> +            start_resource: 44
> +            num_resource: 36
> +            type: 1802
> +            host_id: 36
> +            reserved: 0
> +        -
> +            start_resource: 168
> +            num_resource: 8
> +            type: 1802
> +            host_id: 30
> +            reserved: 0
> +        -
> +            start_resource: 13
> +            num_resource: 512
> +            type: 1805
> +            host_id: 12
> +            reserved: 0
> +        -
> +            start_resource: 525
> +            num_resource: 256
> +            type: 1805
> +            host_id: 35
> +            reserved: 0
> +        -
> +            start_resource: 525
> +            num_resource: 256
> +            type: 1805
> +            host_id: 36
> +            reserved: 0
> +        -
> +            start_resource: 781
> +            num_resource: 128
> +            type: 1805
> +            host_id: 30
> +            reserved: 0
> +        -
> +            start_resource: 909
> +            num_resource: 627
> +            type: 1805
> +            host_id: 128
> +            reserved: 0
> +        -
> +            start_resource: 0
> +            num_resource: 1024
> +            type: 1807
> +            host_id: 128
> +            reserved: 0
> +        -
> +            start_resource: 4096
> +            num_resource: 29
> +            type: 1808
> +            host_id: 128
> +            reserved: 0
> +        -
> +            start_resource: 4608
> +            num_resource: 99
> +            type: 1809
> +            host_id: 128
> +            reserved: 0
> +        -
> +            start_resource: 5120
> +            num_resource: 24
> +            type: 1810
> +            host_id: 128
> +            reserved: 0
> +        -
> +            start_resource: 5632
> +            num_resource: 51
> +            type: 1811
> +            host_id: 128
> +            reserved: 0
> +        -
> +            start_resource: 6144
> +            num_resource: 51
> +            type: 1812
> +            host_id: 128
> +            reserved: 0
> +        -
> +            start_resource: 6656
> +            num_resource: 51
> +            type: 1813
> +            host_id: 128
> +            reserved: 0
> +        -
> +            start_resource: 8192
> +            num_resource: 32
> +            type: 1814
> +            host_id: 128
> +            reserved: 0
> +        -
> +            start_resource: 8704
> +            num_resource: 32
> +            type: 1815
> +            host_id: 128
> +            reserved: 0
> +        -
> +            start_resource: 9216
> +            num_resource: 32
> +            type: 1816
> +            host_id: 128
> +            reserved: 0
> +        -
> +            start_resource: 9728
> +            num_resource: 22
> +            type: 1817
> +            host_id: 128
> +            reserved: 0
> +        -
> +            start_resource: 10240
> +            num_resource: 22
> +            type: 1818
> +            host_id: 128
> +            reserved: 0
> +        -
> +            start_resource: 10752
> +            num_resource: 22
> +            type: 1819
> +            host_id: 128
> +            reserved: 0
> +        -
> +            start_resource: 11264
> +            num_resource: 28
> +            type: 1820
> +            host_id: 128
> +            reserved: 0
> +        -
> +            start_resource: 11776
> +            num_resource: 28
> +            type: 1821
> +            host_id: 128
> +            reserved: 0
> +        -
> +            start_resource: 12288
> +            num_resource: 28
> +            type: 1822
> +            host_id: 128
> +            reserved: 0
> +        -
> +            start_resource: 0
> +            num_resource: 1
> +            type: 1923
> +            host_id: 128
> +            reserved: 0
> +        -
> +            start_resource: 0
> +            num_resource: 10
> +            type: 1936
> +            host_id: 12
> +            reserved: 0
> +        -
> +            start_resource: 10
> +            num_resource: 3
> +            type: 1936
> +            host_id: 35
> +            reserved: 0
> +        -
> +            start_resource: 10
> +            num_resource: 3
> +            type: 1936
> +            host_id: 36
> +            reserved: 0
> +        -
> +            start_resource: 13
> +            num_resource: 3
> +            type: 1936
> +            host_id: 30
> +            reserved: 0
> +        -
> +            start_resource: 16
> +            num_resource: 3
> +            type: 1936
> +            host_id: 128
> +            reserved: 0
> +        -
> +            start_resource: 19
> +            num_resource: 64
> +            type: 1937
> +            host_id: 12
> +            reserved: 0
> +        -
> +            start_resource: 19
> +            num_resource: 64
> +            type: 1937
> +            host_id: 36
> +            reserved: 0
> +        -
> +            start_resource: 83
> +            num_resource: 8
> +            type: 1938
> +            host_id: 12
> +            reserved: 0
> +        -
> +            start_resource: 91
> +            num_resource: 8
> +            type: 1939
> +            host_id: 12
> +            reserved: 0
> +        -
> +            start_resource: 99
> +            num_resource: 10
> +            type: 1942
> +            host_id: 12
> +            reserved: 0
> +        -
> +            start_resource: 109
> +            num_resource: 3
> +            type: 1942
> +            host_id: 35
> +            reserved: 0
> +        -
> +            start_resource: 109
> +            num_resource: 3
> +            type: 1942
> +            host_id: 36
> +            reserved: 0
> +        -
> +            start_resource: 112
> +            num_resource: 3
> +            type: 1942
> +            host_id: 30
> +            reserved: 0
> +        -
> +            start_resource: 115
> +            num_resource: 3
> +            type: 1942
> +            host_id: 128
> +            reserved: 0
> +        -
> +            start_resource: 118
> +            num_resource: 16
> +            type: 1943
> +            host_id: 12
> +            reserved: 0
> +        -
> +            start_resource: 118
> +            num_resource: 16
> +            type: 1943
> +            host_id: 36
> +            reserved: 0
> +        -
> +            start_resource: 134
> +            num_resource: 8
> +            type: 1944
> +            host_id: 12
> +            reserved: 0
> +        -
> +            start_resource: 134
> +            num_resource: 8
> +            type: 1945
> +            host_id: 12
> +            reserved: 0
> +        -
> +            start_resource: 142
> +            num_resource: 8
> +            type: 1946
> +            host_id: 12
> +            reserved: 0
> +        -
> +            start_resource: 142
> +            num_resource: 8
> +            type: 1947
> +            host_id: 12
> +            reserved: 0
> +        -
> +            start_resource: 0
> +            num_resource: 10
> +            type: 1955
> +            host_id: 12
> +            reserved: 0
> +        -
> +            start_resource: 10
> +            num_resource: 3
> +            type: 1955
> +            host_id: 35
> +            reserved: 0
> +        -
> +            start_resource: 10
> +            num_resource: 3
> +            type: 1955
> +            host_id: 36
> +            reserved: 0
> +        -
> +            start_resource: 13
> +            num_resource: 3
> +            type: 1955
> +            host_id: 30
> +            reserved: 0
> +        -
> +            start_resource: 16
> +            num_resource: 3
> +            type: 1955
> +            host_id: 128
> +            reserved: 0
> +        -
> +            start_resource: 19
> +            num_resource: 8
> +            type: 1956
> +            host_id: 12
> +            reserved: 0
> +        -
> +            start_resource: 19
> +            num_resource: 8
> +            type: 1956
> +            host_id: 36
> +            reserved: 0
> +        -
> +            start_resource: 27
> +            num_resource: 1
> +            type: 1957
> +            host_id: 12
> +            reserved: 0
> +        -
> +            start_resource: 28
> +            num_resource: 1
> +            type: 1958
> +            host_id: 12
> +            reserved: 0
> +        -
> +            start_resource: 0
> +            num_resource: 10
> +            type: 1961
> +            host_id: 12
> +            reserved: 0
> +        -
> +            start_resource: 10
> +            num_resource: 3
> +            type: 1961
> +            host_id: 35
> +            reserved: 0
> +        -
> +            start_resource: 10
> +            num_resource: 3
> +            type: 1961
> +            host_id: 36
> +            reserved: 0
> +        -
> +            start_resource: 13
> +            num_resource: 3
> +            type: 1961
> +            host_id: 30
> +            reserved: 0
> +        -
> +            start_resource: 16
> +            num_resource: 3
> +            type: 1961
> +            host_id: 128
> +            reserved: 0
> +        -
> +            start_resource: 0
> +            num_resource: 10
> +            type: 1962
> +            host_id: 12
> +            reserved: 0
> +        -
> +            start_resource: 10
> +            num_resource: 3
> +            type: 1962
> +            host_id: 35
> +            reserved: 0
> +        -
> +            start_resource: 10
> +            num_resource: 3
> +            type: 1962
> +            host_id: 36
> +            reserved: 0
> +        -
> +            start_resource: 13
> +            num_resource: 3
> +            type: 1962
> +            host_id: 30
> +            reserved: 0
> +        -
> +            start_resource: 16
> +            num_resource: 3
> +            type: 1962
> +            host_id: 128
> +            reserved: 0
> +        -
> +            start_resource: 19
> +            num_resource: 1
> +            type: 1963
> +            host_id: 12
> +            reserved: 0
> +        -
> +            start_resource: 19
> +            num_resource: 1
> +            type: 1963
> +            host_id: 36
> +            reserved: 0
> +        -
> +            start_resource: 19
> +            num_resource: 16
> +            type: 1964
> +            host_id: 12
> +            reserved: 0
> +        -
> +            start_resource: 19
> +            num_resource: 16
> +            type: 1964
> +            host_id: 36
> +            reserved: 0
> +        -
> +            start_resource: 20
> +            num_resource: 1
> +            type: 1965
> +            host_id: 12
> +            reserved: 0
> +        -
> +            start_resource: 35
> +            num_resource: 8
> +            type: 1966
> +            host_id: 12
> +            reserved: 0
> +        -
> +            start_resource: 21
> +            num_resource: 1
> +            type: 1967
> +            host_id: 12
> +            reserved: 0
> +        -
> +            start_resource: 35
> +            num_resource: 8
> +            type: 1968
> +            host_id: 12
> +            reserved: 0
> +        -
> +            start_resource: 22
> +            num_resource: 1
> +            type: 1969
> +            host_id: 12
> +            reserved: 0
> +        -
> +            start_resource: 43
> +            num_resource: 8
> +            type: 1970
> +            host_id: 12
> +            reserved: 0
> +        -
> +            start_resource: 23
> +            num_resource: 1
> +            type: 1971
> +            host_id: 12
> +            reserved: 0
> +        -
> +            start_resource: 43
> +            num_resource: 8
> +            type: 1972
> +            host_id: 12
> +            reserved: 0
> +        -
> +            start_resource: 0
> +            num_resource: 1
> +            type: 2112
> +            host_id: 128
> +            reserved: 0
> +        -
> +            start_resource: 2
> +            num_resource: 2
> +            type: 2122
> +            host_id: 12
> +            reserved: 0
> diff --git a/arch/arm/mach-k3/schema.yaml b/arch/arm/mach-k3/schema.yaml
> new file mode 100644
> index 0000000000..c8dd2e79e7
> --- /dev/null
> +++ b/arch/arm/mach-k3/schema.yaml
> @@ -0,0 +1,436 @@
> +# SPDX-License-Identifier: GPL-2.0+
> +# Copyright (C) 2022-2023 Texas Instruments Incorporated - https://www.ti.com/
> +#
> +# Config schema for TI K3 devices
> +#
> +
> +---
> +
> +definitions:
> +    u8:
> +        type: integer
> +        minimum: 0
> +        maximum: 0xff
> +    u16:
> +        type: integer
> +        minimum: 0
> +        maximum: 0xffff
> +    u32:
> +        type: integer
> +        minimum: 0
> +        maximum: 0xffffffff
> +
> +
> +
> +type: object
> +properties:
> +    pm-cfg:
> +        type: object
> +        properties:
> +            rev:
> +                type: object
> +                properties:
> +                    boardcfg_abi_maj:
> +                        $ref: "#/definitions/u8"
> +                    boardcfg_abi_min:
> +                        $ref: "#/definitions/u8"
> +    board-cfg:
> +        type: object
> +        properties:
> +            rev:
> +                type: object
> +                properties:
> +                    boardcfg_abi_maj:
> +                        $ref: "#/definitions/u8"
> +                    boardcfg_abi_min:
> +                        $ref: "#/definitions/u8"
> +            control:
> +                type: object
> +                properties:
> +                    subhdr:
> +                        type: object
> +                        properties:
> +                            magic:
> +                                $ref: "#/definitions/u16"
> +                            size:
> +                                $ref: "#/definitions/u16"
> +                    main_isolation_enable:
> +                        $ref: "#/definitions/u8"
> +                    main_isolation_hostid:
> +                        $ref: "#/definitions/u16"
> +
> +
> +            secproxy:
> +                type: object
> +                properties:
> +                    subhdr:
> +                        type: object
> +                        properties:
> +                            magic:
> +                                $ref: "#/definitions/u16"
> +                            size:
> +                                $ref: "#/definitions/u16"
> +                    scaling_factor:
> +                        $ref: "#/definitions/u8"
> +                    scaling_profile:
> +                        $ref: "#/definitions/u8"
> +                    disable_main_nav_secure_proxy:
> +                        $ref: "#/definitions/u8"
> +
> +            msmc:
> +                type: object
> +                properties:
> +                    subhdr:
> +                        type: object
> +                        properties:
> +                            magic:
> +                                $ref: "#/definitions/u16"
> +                            size:
> +                                $ref: "#/definitions/u16"
> +                    msmc_cache_size:
> +                        $ref: "#/definitions/u8"
> +            debug_cfg:
> +                type: object
> +                properties:
> +                    subhdr:
> +                        type: object
> +                        properties:
> +                            magic:
> +                                $ref: "#/definitions/u16"
> +                            size:
> +                                $ref: "#/definitions/u16"
> +                    trace_dst_enables:
> +                        $ref: "#/definitions/u16"
> +                    trace_src_enables:
> +                        $ref: "#/definitions/u16"
> +
> +    sec-cfg:
> +        type: object
> +        properties:
> +            rev:
> +                type: object
> +                properties:
> +                    boardcfg_abi_maj:
> +                        $ref: "#/definitions/u8"
> +                    boardcfg_abi_min:
> +                        $ref: "#/definitions/u8"
> +
> +            processor_acl_list:
> +                type: object
> +                properties:
> +                    subhdr:
> +                        type: object
> +                        properties:
> +                            magic:
> +                                $ref: "#/definitions/u16"
> +                            size:
> +                                $ref: "#/definitions/u16"
> +                    proc_acl_entries:
> +                        type: array
> +                        minItems: 32
> +                        maxItems: 32
> +                        items:
> +                            type: object
> +                            properties:
> +                                processor_id:
> +                                    $ref: "#/definitions/u8"
> +                                proc_access_master:
> +                                    $ref: "#/definitions/u8"
> +                                proc_access_secondary:
> +                                    type: array
> +                                    minItems: 3
> +                                    maxItems: 3
> +                                    items:
> +                                        $ref: "#/definitions/u8"
> +            host_hierarchy:
> +                type: object
> +                properties:
> +                    subhdr:
> +                        type: object
> +                        properties:
> +                            magic:
> +                                $ref: "#/definitions/u16"
> +                            size:
> +                                $ref: "#/definitions/u16"
> +                    host_hierarchy_entries:
> +                        type: array
> +                        minItems: 32
> +                        maxItems: 32
> +                        items:
> +                            type: object
> +                            properties:
> +                                host_id:
> +                                    $ref: "#/definitions/u8"
> +                                supervisor_host_id:
> +                                    $ref: "#/definitions/u8"
> +
> +            otp_config:
> +                type: object
> +                properties:
> +                    subhdr:
> +                        type: object
> +                        properties:
> +                            magic:
> +                                $ref: "#/definitions/u16"
> +                            size:
> +                                $ref: "#/definitions/u16"
> +                    otp_entry:
> +                        type: array
> +                        minItems: 32
> +                        maxItems: 32
> +                        items:
> +                            type: object
> +                            properties:
> +                                host_id:
> +                                    $ref: "#/definitions/u8"
> +                                host_perms:
> +                                    $ref: "#/definitions/u8"
> +                    write_host_id:
> +                        $ref: "#/definitions/u8"
> +
> +            dkek_config:
> +                type: object
> +                properties:
> +                    subhdr:
> +                        type: object
> +                        properties:
> +                            magic:
> +                                $ref: "#/definitions/u16"
> +                            size:
> +                                $ref: "#/definitions/u16"
> +                    allowed_hosts:
> +                        type: array
> +                        minItems: 4
> +                        maxItems: 4
> +                        items:
> +                            $ref: "#/definitions/u8"
> +                    allow_dkek_export_tisci:
> +                        $ref: "#/definitions/u8"
> +                    rsvd:
> +                        type: array
> +                        minItems: 3
> +                        maxItems: 3
> +                        items:
> +                            $ref: "#/definitions/u8"
> +
> +            sa2ul_cfg:
> +                type: object
> +                properties:
> +                    subhdr:
> +                        type: object
> +                        properties:
> +                            magic:
> +                                $ref: "#/definitions/u16"
> +                            size:
> +                                $ref: "#/definitions/u16"
> +                    rsvd:
> +                        type: array
> +                        minItems: 2
> +                        maxItems: 4
> +                        items:
> +                            $ref: "#/definitions/u8"
> +                    enable_saul_psil_global_config_writes:
> +                        $ref: "#/definitions/u8"
> +                    auth_resource_owner:
> +                        $ref: "#/definitions/u8"
> +
> +            sec_dbg_config:
> +                type: object
> +                properties:
> +                    subhdr:
> +                        type: object
> +                        properties:
> +                            magic:
> +                                $ref: "#/definitions/u16"
> +                            size:
> +                                $ref: "#/definitions/u16"
> +                    allow_jtag_unlock:
> +                        $ref: "#/definitions/u8"
> +                    allow_wildcard_unlock:
> +                        $ref: "#/definitions/u8"
> +                    allowed_debug_level_rsvd:
> +                        $ref: "#/definitions/u8"
> +                    rsvd:
> +                        $ref: "#/definitions/u8"
> +                    min_cert_rev:
> +                        $ref: "#/definitions/u32"
> +                    jtag_unlock_hosts:
> +                        type: array
> +                        minItems: 4
> +                        maxItems: 4
> +                        items:
> +                            $ref: "#/definitions/u8"
> +
> +
> +            sec_handover_cfg:
> +                type: object
> +                properties:
> +                    subhdr:
> +                        type: object
> +                        properties:
> +                            magic:
> +                                $ref: "#/definitions/u16"
> +                            size:
> +                                $ref: "#/definitions/u16"
> +                    handover_msg_sender:
> +                        $ref: "#/definitions/u8"
> +                    handover_to_host_id:
> +                        $ref: "#/definitions/u8"
> +                    rsvd:
> +                        type: array
> +                        minItems: 4
> +                        maxItems: 4
> +                        items:
> +                            $ref: "#/definitions/u8"
> +
> +    rm-cfg:
> +        type: object
> +        properties:
> +            rm_boardcfg:
> +                type: object
> +                properties:
> +                    rev:
> +                        type: object
> +                        properties:
> +                            boardcfg_abi_maj:
> +                                $ref: "#/definitions/u8"
> +                            boardcfg_abi_min:
> +                                $ref: "#/definitions/u8"
> +
> +                    host_cfg:
> +                        type: object
> +                        properties:
> +                            subhdr:
> +                                type: object
> +                                properties:
> +                                    magic:
> +                                        $ref: "#/definitions/u16"
> +                                    size:
> +                                        $ref: "#/definitions/u16"
> +                            host_cfg_entries:
> +                                type: array
> +                                minItems: 0
> +                                maxItems: 32
> +                                items:
> +                                    type: object
> +                                    properties:
> +                                        host_id:
> +                                            $ref: "#/definitions/u8"
> +                                        allowed_atype:
> +                                            $ref: "#/definitions/u8"
> +                                        allowed_qos:
> +                                            $ref: "#/definitions/u16"
> +                                        allowed_orderid:
> +                                            $ref: "#/definitions/u32"
> +                                        allowed_priority:
> +                                            $ref: "#/definitions/u16"
> +                                        allowed_sched_priority:
> +                                            $ref: "#/definitions/u8"
> +                    resasg:
> +                        type: object
> +                        properties:
> +                            subhdr:
> +                                type: object
> +                                properties:
> +                                    magic:
> +                                        $ref: "#/definitions/u16"
> +                                    size:
> +                                        $ref: "#/definitions/u16"
> +                            resasg_entries_size:
> +                                        $ref: "#/definitions/u16"
> +                            reserved:
> +                                        $ref: "#/definitions/u16"
> +
> +            resasg_entries:
> +                type: array
> +                minItems: 0
> +                maxItems: 468
> +                items:
> +                    type: object
> +                    properties:
> +                        start_resource:
> +                            $ref: "#/definitions/u16"
> +                        num_resource:
> +                            $ref: "#/definitions/u16"
> +                        type:
> +                            $ref: "#/definitions/u16"
> +                        host_id:
> +                            $ref: "#/definitions/u8"
> +                        reserved:
> +                            $ref: "#/definitions/u8"
> +
> +    tifs-rm-cfg:
> +        type: object
> +        properties:
> +            rm_boardcfg:
> +                type: object
> +                properties:
> +                    rev:
> +                        type: object
> +                        properties:
> +                            boardcfg_abi_maj:
> +                                $ref: "#/definitions/u8"
> +                            boardcfg_abi_min:
> +                                $ref: "#/definitions/u8"
> +
> +                    host_cfg:
> +                        type: object
> +                        properties:
> +                            subhdr:
> +                                type: object
> +                                properties:
> +                                    magic:
> +                                        $ref: "#/definitions/u16"
> +                                    size:
> +                                        $ref: "#/definitions/u16"
> +                            host_cfg_entries:
> +                                type: array
> +                                minItems: 0
> +                                maxItems: 32
> +                                items:
> +                                    type: object
> +                                    properties:
> +                                        host_id:
> +                                            $ref: "#/definitions/u8"
> +                                        allowed_atype:
> +                                            $ref: "#/definitions/u8"
> +                                        allowed_qos:
> +                                            $ref: "#/definitions/u16"
> +                                        allowed_orderid:
> +                                            $ref: "#/definitions/u32"
> +                                        allowed_priority:
> +                                            $ref: "#/definitions/u16"
> +                                        allowed_sched_priority:
> +                                            $ref: "#/definitions/u8"
> +                    resasg:
> +                        type: object
> +                        properties:
> +                            subhdr:
> +                                type: object
> +                                properties:
> +                                    magic:
> +                                        $ref: "#/definitions/u16"
> +                                    size:
> +                                        $ref: "#/definitions/u16"
> +                            resasg_entries_size:
> +                                        $ref: "#/definitions/u16"
> +                            reserved:
> +                                        $ref: "#/definitions/u16"
> +
> +            resasg_entries:
> +                type: array
> +                minItems: 0
> +                maxItems: 468
> +                items:
> +                    type: object
> +                    properties:
> +                        start_resource:
> +                            $ref: "#/definitions/u16"
> +                        num_resource:
> +                            $ref: "#/definitions/u16"
> +                        type:
> +                            $ref: "#/definitions/u16"
> +                        host_id:
> +                            $ref: "#/definitions/u8"
> +                        reserved:
> +                            $ref: "#/definitions/u8"
> diff --git a/arch/arm/mach-k3/sec-cfg-am625.yaml b/arch/arm/mach-k3/sec-cfg-am625.yaml
> new file mode 100644
> index 0000000000..088b2dbaf1
> --- /dev/null
> +++ b/arch/arm/mach-k3/sec-cfg-am625.yaml
> @@ -0,0 +1,379 @@
> +# SPDX-License-Identifier: GPL-2.0+
> +# Copyright (C) 2022-2023 Texas Instruments Incorporated - https://www.ti.com/
> +#
> +# Security management configuration for AM62
> +#
> +
> +---
> +
> +sec-cfg:
> +    rev:
> +        boardcfg_abi_maj: 0x0
> +        boardcfg_abi_min: 0x1
> +    processor_acl_list:
> +        subhdr:
> +            magic: 0xF1EA
> +            size: 164
> +        proc_acl_entries:
> +            -  # 1
> +                processor_id: 0
> +                proc_access_master: 0
> +                proc_access_secondary: [0, 0, 0]
> +            -  # 2
> +                processor_id: 0
> +                proc_access_master: 0
> +                proc_access_secondary: [0, 0, 0]
> +            -  # 3
> +                processor_id: 0
> +                proc_access_master: 0
> +                proc_access_secondary: [0, 0, 0]
> +            -  # 4
> +                processor_id: 0
> +                proc_access_master: 0
> +                proc_access_secondary: [0, 0, 0]
> +            -  # 5
> +                processor_id: 0
> +                proc_access_master: 0
> +                proc_access_secondary: [0, 0, 0]
> +            -  # 6
> +                processor_id: 0
> +                proc_access_master: 0
> +                proc_access_secondary: [0, 0, 0]
> +            -  # 7
> +                processor_id: 0
> +                proc_access_master: 0
> +                proc_access_secondary: [0, 0, 0]
> +            -  # 8
> +                processor_id: 0
> +                proc_access_master: 0
> +                proc_access_secondary: [0, 0, 0]
> +            -  # 9
> +                processor_id: 0
> +                proc_access_master: 0
> +                proc_access_secondary: [0, 0, 0]
> +            -  # 10
> +                processor_id: 0
> +                proc_access_master: 0
> +                proc_access_secondary: [0, 0, 0]
> +            -  # 11
> +                processor_id: 0
> +                proc_access_master: 0
> +                proc_access_secondary: [0, 0, 0]
> +            -  # 12
> +                processor_id: 0
> +                proc_access_master: 0
> +                proc_access_secondary: [0, 0, 0]
> +            -  # 13
> +                processor_id: 0
> +                proc_access_master: 0
> +                proc_access_secondary: [0, 0, 0]
> +            -  # 14
> +                processor_id: 0
> +                proc_access_master: 0
> +                proc_access_secondary: [0, 0, 0]
> +            -  # 15
> +                processor_id: 0
> +                proc_access_master: 0
> +                proc_access_secondary: [0, 0, 0]
> +            -  # 16
> +                processor_id: 0
> +                proc_access_master: 0
> +                proc_access_secondary: [0, 0, 0]
> +            -  # 17
> +                processor_id: 0
> +                proc_access_master: 0
> +                proc_access_secondary: [0, 0, 0]
> +            -  # 18
> +                processor_id: 0
> +                proc_access_master: 0
> +                proc_access_secondary: [0, 0, 0]
> +            -  # 19
> +                processor_id: 0
> +                proc_access_master: 0
> +                proc_access_secondary: [0, 0, 0]
> +            -  # 20
> +                processor_id: 0
> +                proc_access_master: 0
> +                proc_access_secondary: [0, 0, 0]
> +            -  # 21
> +                processor_id: 0
> +                proc_access_master: 0
> +                proc_access_secondary: [0, 0, 0]
> +            -  # 22
> +                processor_id: 0
> +                proc_access_master: 0
> +                proc_access_secondary: [0, 0, 0]
> +            -  # 23
> +                processor_id: 0
> +                proc_access_master: 0
> +                proc_access_secondary: [0, 0, 0]
> +            -  # 24
> +                processor_id: 0
> +                proc_access_master: 0
> +                proc_access_secondary: [0, 0, 0]
> +            -  # 25
> +                processor_id: 0
> +                proc_access_master: 0
> +                proc_access_secondary: [0, 0, 0]
> +            -  # 26
> +                processor_id: 0
> +                proc_access_master: 0
> +                proc_access_secondary: [0, 0, 0]
> +            -  # 27
> +                processor_id: 0
> +                proc_access_master: 0
> +                proc_access_secondary: [0, 0, 0]
> +            -  # 28
> +                processor_id: 0
> +                proc_access_master: 0
> +                proc_access_secondary: [0, 0, 0]
> +            -  # 29
> +                processor_id: 0
> +                proc_access_master: 0
> +                proc_access_secondary: [0, 0, 0]
> +            -  # 30
> +                processor_id: 0
> +                proc_access_master: 0
> +                proc_access_secondary: [0, 0, 0]
> +            -  # 31
> +                processor_id: 0
> +                proc_access_master: 0
> +                proc_access_secondary: [0, 0, 0]
> +            -  # 32
> +                processor_id: 0
> +                proc_access_master: 0
> +                proc_access_secondary: [0, 0, 0]
> +    host_hierarchy:
> +        subhdr:
> +            magic: 0x8D27
> +            size: 68
> +        host_hierarchy_entries:
> +            -  # 1
> +                host_id: 0
> +                supervisor_host_id: 0
> +            -  # 2
> +                host_id: 0
> +                supervisor_host_id: 0
> +            -  # 3
> +                host_id: 0
> +                supervisor_host_id: 0
> +            -  # 4
> +                host_id: 0
> +                supervisor_host_id: 0
> +            -  # 5
> +                host_id: 0
> +                supervisor_host_id: 0
> +            -  # 6
> +                host_id: 0
> +                supervisor_host_id: 0
> +            -  # 7
> +                host_id: 0
> +                supervisor_host_id: 0
> +            -  # 8
> +                host_id: 0
> +                supervisor_host_id: 0
> +            -  # 9
> +                host_id: 0
> +                supervisor_host_id: 0
> +            -  # 10
> +                host_id: 0
> +                supervisor_host_id: 0
> +            -  # 11
> +                host_id: 0
> +                supervisor_host_id: 0
> +            -  # 12
> +                host_id: 0
> +                supervisor_host_id: 0
> +            -  # 13
> +                host_id: 0
> +                supervisor_host_id: 0
> +            -  # 14
> +                host_id: 0
> +                supervisor_host_id: 0
> +            -  # 15
> +                host_id: 0
> +                supervisor_host_id: 0
> +            -  # 16
> +                host_id: 0
> +                supervisor_host_id: 0
> +            -  # 17
> +                host_id: 0
> +                supervisor_host_id: 0
> +            -  # 18
> +                host_id: 0
> +                supervisor_host_id: 0
> +            -  # 19
> +                host_id: 0
> +                supervisor_host_id: 0
> +            -  # 20
> +                host_id: 0
> +                supervisor_host_id: 0
> +            -  # 21
> +                host_id: 0
> +                supervisor_host_id: 0
> +            -  # 22
> +                host_id: 0
> +                supervisor_host_id: 0
> +            -  # 23
> +                host_id: 0
> +                supervisor_host_id: 0
> +            -  # 24
> +                host_id: 0
> +                supervisor_host_id: 0
> +            -  # 25
> +                host_id: 0
> +                supervisor_host_id: 0
> +            -  # 26
> +                host_id: 0
> +                supervisor_host_id: 0
> +            -  # 27
> +                host_id: 0
> +                supervisor_host_id: 0
> +            -  # 28
> +                host_id: 0
> +                supervisor_host_id: 0
> +            -  # 29
> +                host_id: 0
> +                supervisor_host_id: 0
> +            -  # 30
> +                host_id: 0
> +                supervisor_host_id: 0
> +            -  # 31
> +                host_id: 0
> +                supervisor_host_id: 0
> +            -  # 32
> +                host_id: 0
> +                supervisor_host_id: 0
> +    otp_config:
> +        subhdr:
> +            magic: 0x4081
> +            size: 69
> +        write_host_id: 0
> +        otp_entry:
> +            -  # 1
> +                host_id: 0
> +                host_perms: 0
> +            -  # 2
> +                host_id: 0
> +                host_perms: 0
> +            -  # 3
> +                host_id: 0
> +                host_perms: 0
> +            -  # 4
> +                host_id: 0
> +                host_perms: 0
> +            -  # 5
> +                host_id: 0
> +                host_perms: 0
> +            -  # 6
> +                host_id: 0
> +                host_perms: 0
> +            -  # 7
> +                host_id: 0
> +                host_perms: 0
> +            -  # 8
> +                host_id: 0
> +                host_perms: 0
> +            -  # 9
> +                host_id: 0
> +                host_perms: 0
> +            -  # 10
> +                host_id: 0
> +                host_perms: 0
> +            -  # 11
> +                host_id: 0
> +                host_perms: 0
> +            -  # 12
> +                host_id: 0
> +                host_perms: 0
> +            -  # 13
> +                host_id: 0
> +                host_perms: 0
> +            -  # 14
> +                host_id: 0
> +                host_perms: 0
> +            -  # 15
> +                host_id: 0
> +                host_perms: 0
> +            -  # 16
> +                host_id: 0
> +                host_perms: 0
> +            -  # 17
> +                host_id: 0
> +                host_perms: 0
> +            -  # 18
> +                host_id: 0
> +                host_perms: 0
> +            -  # 19
> +                host_id: 0
> +                host_perms: 0
> +            -  # 20
> +                host_id: 0
> +                host_perms: 0
> +            -  # 21
> +                host_id: 0
> +                host_perms: 0
> +            -  # 22
> +                host_id: 0
> +                host_perms: 0
> +            -  # 23
> +                host_id: 0
> +                host_perms: 0
> +            -  # 24
> +                host_id: 0
> +                host_perms: 0
> +            -  # 25
> +                host_id: 0
> +                host_perms: 0
> +            -  # 26
> +                host_id: 0
> +                host_perms: 0
> +            -  # 27
> +                host_id: 0
> +                host_perms: 0
> +            -  # 28
> +                host_id: 0
> +                host_perms: 0
> +            -  # 29
> +                host_id: 0
> +                host_perms: 0
> +            -  # 30
> +                host_id: 0
> +                host_perms: 0
> +            -  # 31
> +                host_id: 0
> +                host_perms: 0
> +            -  # 32
> +                host_id: 0
> +                host_perms: 0
> +    dkek_config:
> +        subhdr:
> +            magic: 0x5170
> +            size: 12
> +        allowed_hosts: [128, 0, 0, 0]
> +        allow_dkek_export_tisci: 0x5A
> +        rsvd: [0, 0, 0]
> +    sa2ul_cfg:
> +        subhdr:
> +            magic: 0x23BE
> +            size: 0
> +        auth_resource_owner: 0
> +        enable_saul_psil_global_config_writes: 0x5A
> +        rsvd: [0, 0]
> +    sec_dbg_config:
> +        subhdr:
> +            magic: 0x42AF
> +            size: 16
> +        allow_jtag_unlock: 0x5A
> +        allow_wildcard_unlock: 0x5A
> +        allowed_debug_level_rsvd: 0
> +        rsvd: 0
> +        min_cert_rev: 0x0
> +        jtag_unlock_hosts: [0, 0, 0, 0]
> +    sec_handover_cfg:
> +        subhdr:
> +            magic: 0x608F
> +            size: 10
> +        handover_msg_sender: 0
> +        handover_to_host_id: 0
> +        rsvd: [0, 0, 0, 0]
> diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
> index c32adf07cc..6e8f1c8e9a 100644
> --- a/scripts/Makefile.lib
> +++ b/scripts/Makefile.lib
> @@ -539,6 +539,9 @@ quiet_cmd_check_missing_fw = # no message as we collect info for later
>  	$(OBJCOPY) -O binary --only-section=.missing_fw	$3 $2.missing-firmware;	    \
>  	[ -s $2.missing-firmware ] || rm -f $2.missing-firmware
>  
> +quiet_cmd_k3_cfg = K3CFG   $@
> +      cmd_k3_cfg = $(srctree)/scripts/ti-board-config.py $@ $(filter-out FORCE,$^)
> +
>  quiet_cmd_imximage__S_dcd= DCD_S   $@
>  cmd_imximage_S_dcd=						\
>  (								\
> diff --git a/scripts/ti-board-config.py b/scripts/ti-board-config.py
> new file mode 100755
> index 0000000000..4b6214c299
> --- /dev/null
> +++ b/scripts/ti-board-config.py
> @@ -0,0 +1,170 @@
> +#!/usr/bin/env python3
> +# SPDX-License-Identifier: GPL-2.0+
> +# Copyright (c) 2022-2023 Texas Instruments Incorporated - https://www.ti.com/
> +# Written by Neha Malcom Francis <n-francis@ti.com>
> +#
> +# Entry-type module for generating schema validated TI board
> +# configuration binary
> +#
> +
> +import os
> +import struct
> +import yaml
> +import yamllint
> +import sys
> +
> +from jsonschema import validate
> +
> +from yamllint import config
> +
> +BOARDCFG = 0xB
> +BOARDCFG_SEC = 0xD
> +BOARDCFG_PM = 0xE
> +BOARDCFG_RM = 0xC
> +
> +class cfgentry:
> +    def __init__(self, cfgtype, data):
> +        self.cfgtype = cfgtype
> +        self.data = data
> +
> +class Entry_ti_board_config:
> +    def __init__(self, schema):
> +        self._config = None
> +        self._schema = None
> +        self._fmt = '<HHHBB'
> +        self._index = 0
> +        self._sw_rev = 1
> +        self._devgrp = 0
> +        self.cfgentries = []
> +        self.header = struct.pack('<BB', 4, 1)
> +        self._binary_offset = len(self.header)
> +        self._schema_file = schema
> +
> +    def _convert_to_byte_chunk(self, val, data_type):
> +        """Convert value into byte array
> +
> +        Args:
> +            val: value to convert into byte array
> +            data_type: data type used in schema, supported data types are u8,
> +                u16 and u32
> +
> +        Returns:
> +            array of bytes representing value
> +        """
> +        size = 0
> +        if (data_type == '#/definitions/u8'):
> +            size = 1
> +        elif (data_type == '#/definitions/u16'):
> +            size = 2
> +        else:
> +            size = 4
> +        if type(val) == int:
> +            br = val.to_bytes(size, byteorder='little')
> +        return br
> +
> +    def _compile_yaml(self, schema_yaml, file_yaml):
> +        """Convert YAML file into byte array based on YAML schema
> +
> +        Args:
> +            schema_yaml: file containing YAML schema
> +            file_yaml: file containing config to compile
> +
> +        Returns:
> +            array of bytes repesenting YAML file against YAML schema
> +        """
> +        br = bytearray()
> +        for key, node in file_yaml.items():
> +            node_schema = schema_yaml['properties'][key]
> +            node_type = node_schema.get('type')
> +            if not 'type' in node_schema:
> +                br += self._convert_to_byte_chunk(node,
> +                                                node_schema.get('$ref'))
> +            elif node_type == 'object':
> +                br += self._compile_yaml(node_schema, node)
> +            elif node_type == 'array':
> +                for item in node:
> +                    if not isinstance(item, dict):
> +                        br += self._convert_to_byte_chunk(
> +                            item, schema_yaml['properties'][key]['items']['$ref'])
> +                    else:
> +                        br += self._compile_yaml(node_schema.get('items'), item)
> +        return br
> +
> +    def _generate_binaries(self):
> +        """Generate config binary artifacts from the loaded YAML configuration file
> +
> +        Returns:
> +            byte array containing config binary artifacts
> +            or None if generation fails
> +        """
> +        cfg_binary = bytearray()
> +        for key, node in self.file_yaml.items():
> +            node_schema = self.schema_yaml['properties'][key]
> +            br = self._compile_yaml(node_schema, node)
> +            cfg_binary += br
> +        return cfg_binary
> +
> +    def _add_boardcfg(self, bcfgtype, bcfgdata):
> +        """Add board config to combined board config binary
> +
> +        Args:
> +            bcfgtype (int): board config type
> +            bcfgdata (byte array): board config data
> +        """
> +        size = len(bcfgdata)
> +
> +        desc = struct.pack(self._fmt, bcfgtype,
> +                            self._binary_offset, size, self._devgrp, 0)
> +        self._binary_offset += size
> +        self._index += 1
> +        return desc
> +
> +    def add_data(self, configfile):
> +        self._config_file = configfile
> +        with open(self._config_file, 'r') as f:
> +            self.file_yaml = yaml.safe_load(f)
> +        with open(self._schema_file, 'r') as sch:
> +            self.schema_yaml = yaml.safe_load(sch)
> +
> +        if self.file_yaml.get('board-cfg') != None:
> +            cfgtype = BOARDCFG
> +        if self.file_yaml.get('sec-cfg') != None:
> +            cfgtype = BOARDCFG_SEC
> +        if self.file_yaml.get('pm-cfg') != None:
> +            cfgtype = BOARDCFG_PM
> +        if self.file_yaml.get('rm-cfg') != None:
> +            cfgtype = BOARDCFG_RM
> +
> +        yaml_config = config.YamlLintConfig("extends: default")
> +        for p in yamllint.linter.run(open(self._config_file, "r"), yaml_config):
> +            self.Raise(f"Yamllint error: {p.line}: {p.rule}")
> +        try:
> +            validate(self.file_yaml, self.schema_yaml)
> +        except Exception as e:
> +            self.Raise(f"Schema validation error: {e}")
> +
> +        data = self._generate_binaries()
> +        entry = cfgentry(cfgtype, data)
> +        self.cfgentries.append(entry)
> +        return data
> +
> +    def save(self, filename):
> +        with open(filename, "wb") as binary_file:
> +            binary_file.write(self.header)
> +            for i in self.cfgentries:
> +                obj._binary_offset += 8
> +            for i in self.cfgentries:
> +                binary_file.write(self._add_boardcfg(i.cfgtype, i.data))
> +            for i in self.cfgentries:
> +                binary_file.write(i.data)
> +            binary_file.close()
> +
> +outfile = sys.argv[1]
> +schema = sys.argv[2]
> +
> +obj = Entry_ti_board_config(schema)
> +
> +for i in sys.argv[3:]:
> +    obj.add_data(i)
> +
> +obj.save(outfile)
> 


-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



  reply	other threads:[~2025-01-14  9:31 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-01-13 11:26 [PATCH v3 00/23] ARM: K3: Add R5 boot support Sascha Hauer
2025-01-13 11:26 ` [PATCH v3 01/23] ARM: add ARMv7R MPU support Sascha Hauer
2025-01-13 11:26 ` [PATCH v3 02/23] lib/rationale: compile for pbl Sascha Hauer
2025-01-13 11:26 ` [PATCH v3 04/23] ARM: move ARM_CPU_PART_* defines to header Sascha Hauer
2025-01-13 11:26 ` [PATCH v3 05/23] nommu_v7_vectors_init: disable for r5 Sascha Hauer
2025-01-13 11:26 ` [PATCH v3 06/23] clocksource: timer-ti-dm: add support for K3 SoCs Sascha Hauer
2025-01-13 11:26 ` [PATCH v3 07/23] ARM: K3: mount /boot even with env handling disabled Sascha Hauer
2025-01-13 11:26 ` [PATCH v3 08/23] clk: add K3 clk driver Sascha Hauer
2025-01-13 11:26 ` [PATCH v3 09/23] pmdomain: add K3 driver Sascha Hauer
2025-01-13 11:26 ` [PATCH v3 10/23] rproc: add K3 arm64 rproc driver Sascha Hauer
2025-01-13 11:26 ` [PATCH v3 11/23] ARM: k3: add k3_debug_ll_init() Sascha Hauer
2025-01-13 11:26 ` [PATCH v3 12/23] ARM: K3: use debug_ll code for regular PBL console Sascha Hauer
2025-01-13 11:27 ` [PATCH v3 13/23] elf: use iomem regions as fallback when loading to non-sdram memory Sascha Hauer
2025-01-13 11:27 ` [PATCH v3 14/23] rproc: add K3 system_controller Sascha Hauer
2025-01-13 11:27 ` [PATCH v3 15/23] firmware: ti_sci: add function to get global handle Sascha Hauer
2025-01-13 11:27 ` [PATCH v3 16/23] ARM: k3: Add initial r5 support Sascha Hauer
2025-01-13 11:27 ` [PATCH v3 17/23] scripts: k3: add script to generate cfg files from yaml Sascha Hauer
2025-01-14  9:29   ` Ahmad Fatoum [this message]
2025-01-14  9:38     ` Sascha Hauer
2025-01-13 11:27 ` [PATCH v3 18/23] ARM: k3: Add k3img tool Sascha Hauer
2025-01-13 11:27 ` [PATCH v3 19/23] ARM: beagleplay: add Cortex-R5 boot support Sascha Hauer
2025-01-13 11:27 ` [PATCH v3 20/23] Documentation: add build documentation for TI K3 SoCs Sascha Hauer
2025-01-13 11:27 ` [PATCH v3 21/23] ARM: am625: disable secondary watchdogs Sascha Hauer
2025-01-13 11:27 ` [PATCH v3 22/23] ARM: k3: Add DRAM size detection Sascha Hauer
2025-01-13 11:27 ` [PATCH v3 23/23] ARM: k3: am625-sk board support Sascha Hauer
2025-01-14  8:32 ` [PATCH v3 00/23] ARM: K3: Add R5 boot support Sascha Hauer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=79fbd9f8-b538-4446-8b02-d1225edb883b@pengutronix.de \
    --to=a.fatoum@pengutronix.de \
    --cc=barebox@lists.infradead.org \
    --cc=s.hauer@pengutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox