[PATCH] arm: mach-k3: Refactor QoS settings

Refactor common QoS code into a new common header file, and the soc specific setup_qos functions into a common API.
Rename $(soc)_qos_count and $(soc)_qos_data variables to qos_count and qos_data. When QoS settings of more SoCs are added, only one pair will be defined at a time, based on the config SOC_K3_$(soc).
This refactoring has been done for 2 major purposes.
- The auto-generated $(soc)_qos_data.c and $(soc)_qos.h files cannot have any code that is specific to any bootloader. Those files have to remain agnostic of different bootloader implementations and their header files.
- The existing implementation was less than ideal and would have enabled multiple $(soc)_qos_count and $(soc)_qos_data variables for all SoC variants.
Signed-off-by: Aradhya Bhatia a-bhatia1@ti.com --- arch/arm/mach-k3/Kconfig | 8 +++++++ arch/arm/mach-k3/am62a7_init.c | 14 ------------ arch/arm/mach-k3/common.c | 12 ++++++++++ arch/arm/mach-k3/common.h | 8 +++++++ arch/arm/mach-k3/include/mach/hardware.h | 9 -------- arch/arm/mach-k3/include/mach/k3-qos.h | 22 +++++++++++++++++++ arch/arm/mach-k3/r5/am62ax/Makefile | 2 +- .../{include/mach => r5/am62ax}/am62a_qos.h | 0 .../{am62a_qos_data.c => am62a_qos_uboot.c} | 9 ++++---- 9 files changed, 56 insertions(+), 28 deletions(-) create mode 100644 arch/arm/mach-k3/include/mach/k3-qos.h rename arch/arm/mach-k3/{include/mach => r5/am62ax}/am62a_qos.h (100%) rename arch/arm/mach-k3/r5/am62ax/{am62a_qos_data.c => am62a_qos_uboot.c} (85%)
diff --git a/arch/arm/mach-k3/Kconfig b/arch/arm/mach-k3/Kconfig index 03898424c954..ffc4a9c29029 100644 --- a/arch/arm/mach-k3/Kconfig +++ b/arch/arm/mach-k3/Kconfig @@ -139,6 +139,14 @@ config K3_DM_FW bootloader, it makes RM and PM services not being available during R5 SPL execution time.
+config K3_QOS + bool "Enable Quality of Service (QoS) Settings for TI K3 SoCs" + default y if CPU_V7R && SOC_K3_AM62A7 + help + This option enables the R5 SPL to apply QoS settings for various + HW controllers inside the TI K3 SoCs. The files for QoS settings are + generated from Sysconfig and k3-resource-partitioning tools. + config K3_X509_SWRV int "SWRV for X509 certificate used for boot images" default 1 diff --git a/arch/arm/mach-k3/am62a7_init.c b/arch/arm/mach-k3/am62a7_init.c index d72e19936b9b..080274e3af58 100644 --- a/arch/arm/mach-k3/am62a7_init.c +++ b/arch/arm/mach-k3/am62a7_init.c @@ -69,20 +69,6 @@ static void ctrl_mmr_unlock(void) mmr_unlock(PADCFG_MMR1_BASE, 1); }
-#if (IS_ENABLED(CONFIG_CPU_V7R)) -static void setup_qos(void) -{ - u32 i; - - for (i = 0; i < am62a_qos_count; i++) - writel(am62a_qos_data[i].val, (uintptr_t)am62a_qos_data[i].reg); -} -#else -static void setup_qos(void) -{ -} -#endif - void board_init_f(ulong dummy) { struct udevice *dev; diff --git a/arch/arm/mach-k3/common.c b/arch/arm/mach-k3/common.c index f411366778f0..b54f2ddc4729 100644 --- a/arch/arm/mach-k3/common.c +++ b/arch/arm/mach-k3/common.c @@ -28,6 +28,8 @@ #include <elf.h> #include <soc.h>
+#include <asm/arch/k3-qos.h> + #if IS_ENABLED(CONFIG_SYS_K3_SPL_ATF) enum { IMAGE_ID_ATF, @@ -595,3 +597,13 @@ int misc_init_r(void) void __weak do_board_detect(void) { } + +#if (IS_ENABLED(CONFIG_K3_QOS)) +void setup_qos(void) +{ + u32 i; + + for (i = 0; i < qos_count; i++) + writel(qos_data[i].val, (uintptr_t)qos_data[i].reg); +} +#endif diff --git a/arch/arm/mach-k3/common.h b/arch/arm/mach-k3/common.h index e9db9fbfb63d..53aa186b31a4 100644 --- a/arch/arm/mach-k3/common.h +++ b/arch/arm/mach-k3/common.h @@ -45,3 +45,11 @@ void ti_secure_image_post_process(void **p_image, size_t *p_size); struct ti_sci_handle *get_ti_sci_handle(void); void do_board_detect(void); void ti_secure_image_check_binary(void **p_image, size_t *p_size); + +#if (IS_ENABLED(CONFIG_K3_QOS)) +void setup_qos(void); +#else +static inline void setup_qos(void) +{ +} +#endif diff --git a/arch/arm/mach-k3/include/mach/hardware.h b/arch/arm/mach-k3/include/mach/hardware.h index a1a9dfbde66c..52ef82e70b07 100644 --- a/arch/arm/mach-k3/include/mach/hardware.h +++ b/arch/arm/mach-k3/include/mach/hardware.h @@ -30,7 +30,6 @@
#ifdef CONFIG_SOC_K3_AM62A7 #include "am62a_hardware.h" -#include "am62a_qos.h" #endif
/* Assuming these addresses and definitions stay common across K3 devices */ @@ -97,12 +96,4 @@ struct rom_extended_boot_data { u32 num_components; };
-struct k3_qos_data { - u32 reg; - u32 val; -}; - -extern struct k3_qos_data am62a_qos_data[]; -extern u32 am62a_qos_count; - #endif /* _ASM_ARCH_HARDWARE_H_ */ diff --git a/arch/arm/mach-k3/include/mach/k3-qos.h b/arch/arm/mach-k3/include/mach/k3-qos.h new file mode 100644 index 000000000000..e00e1de5b9cb --- /dev/null +++ b/arch/arm/mach-k3/include/mach/k3-qos.h @@ -0,0 +1,22 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Quality of Service (QoS) Configuration Header File + * + * Copyright (C) 2024 Texas Instruments Incorporated - https://www.ti.com/ + */ +#ifndef _K3_QOS_H_ +#define _K3_QOS_H_ + +#include <linux/kernel.h> + +struct k3_qos_data { + u32 reg; + u32 val; +}; + +#if (IS_ENABLED(CONFIG_K3_QOS)) +extern struct k3_qos_data qos_data[]; +extern u32 qos_count; +#endif + +#endif /* _K3_QOS_H_ */ diff --git a/arch/arm/mach-k3/r5/am62ax/Makefile b/arch/arm/mach-k3/r5/am62ax/Makefile index 02a941805e9a..e4e55ce5c7dd 100644 --- a/arch/arm/mach-k3/r5/am62ax/Makefile +++ b/arch/arm/mach-k3/r5/am62ax/Makefile @@ -4,4 +4,4 @@
obj-y += clk-data.o obj-y += dev-data.o -obj-y += am62a_qos_data.o +obj-y += am62a_qos_uboot.o diff --git a/arch/arm/mach-k3/include/mach/am62a_qos.h b/arch/arm/mach-k3/r5/am62ax/am62a_qos.h similarity index 100% rename from arch/arm/mach-k3/include/mach/am62a_qos.h rename to arch/arm/mach-k3/r5/am62ax/am62a_qos.h diff --git a/arch/arm/mach-k3/r5/am62ax/am62a_qos_data.c b/arch/arm/mach-k3/r5/am62ax/am62a_qos_uboot.c similarity index 85% rename from arch/arm/mach-k3/r5/am62ax/am62a_qos_data.c rename to arch/arm/mach-k3/r5/am62ax/am62a_qos_uboot.c index 38db4f2f5c8e..9a82944d5fe9 100644 --- a/arch/arm/mach-k3/r5/am62ax/am62a_qos_data.c +++ b/arch/arm/mach-k3/r5/am62ax/am62a_qos_uboot.c @@ -5,10 +5,11 @@ * * Copyright (C) 2022 Texas Instruments Incorporated - https://www.ti.com/ */ -#include <asm/arch/hardware.h> -#include "common.h"
-struct k3_qos_data am62a_qos_data[] = { +#include <asm/arch/k3-qos.h> +#include "am62a_qos.h" + +struct k3_qos_data qos_data[] = { /* modules_qosConfig0 - 1 endpoints, 4 channels */ { .reg = K3_DSS_UL_MAIN_0_VBUSM_DMA + 0x100 + 0x4 * 0, @@ -43,4 +44,4 @@ struct k3_qos_data am62a_qos_data[] = { }, };
-uint32_t am62a_qos_count = sizeof(am62a_qos_data) / sizeof(am62a_qos_data[0]); +u32 qos_count = ARRAY_SIZE(qos_data);
base-commit: daa3100250839dd30626f7f4b7daf041f1114f1c

On 2/6/24 2:56 AM, Aradhya Bhatia wrote:
Refactor common QoS code into a new common header file, and the soc specific setup_qos functions into a common API.
Rename $(soc)_qos_count and $(soc)_qos_data variables to qos_count and qos_data. When QoS settings of more SoCs are added, only one pair will be defined at a time, based on the config SOC_K3_$(soc).
This refactoring has been done for 2 major purposes.
The auto-generated $(soc)_qos_data.c and $(soc)_qos.h files cannot have any code that is specific to any bootloader. Those files have to remain agnostic of different bootloader implementations and their header files.
The existing implementation was less than ideal and would have enabled multiple $(soc)_qos_count and $(soc)_qos_data variables for all SoC variants.
Signed-off-by: Aradhya Bhatia a-bhatia1@ti.com
arch/arm/mach-k3/Kconfig | 8 +++++++ arch/arm/mach-k3/am62a7_init.c | 14 ------------ arch/arm/mach-k3/common.c | 12 ++++++++++ arch/arm/mach-k3/common.h | 8 +++++++ arch/arm/mach-k3/include/mach/hardware.h | 9 -------- arch/arm/mach-k3/include/mach/k3-qos.h | 22 +++++++++++++++++++ arch/arm/mach-k3/r5/am62ax/Makefile | 2 +- .../{include/mach => r5/am62ax}/am62a_qos.h | 0 .../{am62a_qos_data.c => am62a_qos_uboot.c} | 9 ++++---- 9 files changed, 56 insertions(+), 28 deletions(-) create mode 100644 arch/arm/mach-k3/include/mach/k3-qos.h rename arch/arm/mach-k3/{include/mach => r5/am62ax}/am62a_qos.h (100%) rename arch/arm/mach-k3/r5/am62ax/{am62a_qos_data.c => am62a_qos_uboot.c} (85%)
diff --git a/arch/arm/mach-k3/Kconfig b/arch/arm/mach-k3/Kconfig index 03898424c954..ffc4a9c29029 100644 --- a/arch/arm/mach-k3/Kconfig +++ b/arch/arm/mach-k3/Kconfig @@ -139,6 +139,14 @@ config K3_DM_FW bootloader, it makes RM and PM services not being available during R5 SPL execution time.
+config K3_QOS
- bool "Enable Quality of Service (QoS) Settings for TI K3 SoCs"
- default y if CPU_V7R && SOC_K3_AM62A7
If this is R5 only, then put it in the arch/arm/mach-k3/r5 Kconfig and you can drop the CPU_V7R check.
Andrew
- help
This option enables the R5 SPL to apply QoS settings for various
HW controllers inside the TI K3 SoCs. The files for QoS settings are
generated from Sysconfig and k3-resource-partitioning tools.
- config K3_X509_SWRV int "SWRV for X509 certificate used for boot images" default 1
diff --git a/arch/arm/mach-k3/am62a7_init.c b/arch/arm/mach-k3/am62a7_init.c index d72e19936b9b..080274e3af58 100644 --- a/arch/arm/mach-k3/am62a7_init.c +++ b/arch/arm/mach-k3/am62a7_init.c @@ -69,20 +69,6 @@ static void ctrl_mmr_unlock(void) mmr_unlock(PADCFG_MMR1_BASE, 1); }
-#if (IS_ENABLED(CONFIG_CPU_V7R)) -static void setup_qos(void) -{
- u32 i;
- for (i = 0; i < am62a_qos_count; i++)
writel(am62a_qos_data[i].val, (uintptr_t)am62a_qos_data[i].reg);
-} -#else -static void setup_qos(void) -{ -} -#endif
- void board_init_f(ulong dummy) { struct udevice *dev;
diff --git a/arch/arm/mach-k3/common.c b/arch/arm/mach-k3/common.c index f411366778f0..b54f2ddc4729 100644 --- a/arch/arm/mach-k3/common.c +++ b/arch/arm/mach-k3/common.c @@ -28,6 +28,8 @@ #include <elf.h> #include <soc.h>
+#include <asm/arch/k3-qos.h>
- #if IS_ENABLED(CONFIG_SYS_K3_SPL_ATF) enum { IMAGE_ID_ATF,
@@ -595,3 +597,13 @@ int misc_init_r(void) void __weak do_board_detect(void) { }
+#if (IS_ENABLED(CONFIG_K3_QOS)) +void setup_qos(void) +{
- u32 i;
- for (i = 0; i < qos_count; i++)
writel(qos_data[i].val, (uintptr_t)qos_data[i].reg);
+} +#endif diff --git a/arch/arm/mach-k3/common.h b/arch/arm/mach-k3/common.h index e9db9fbfb63d..53aa186b31a4 100644 --- a/arch/arm/mach-k3/common.h +++ b/arch/arm/mach-k3/common.h @@ -45,3 +45,11 @@ void ti_secure_image_post_process(void **p_image, size_t *p_size); struct ti_sci_handle *get_ti_sci_handle(void); void do_board_detect(void); void ti_secure_image_check_binary(void **p_image, size_t *p_size);
+#if (IS_ENABLED(CONFIG_K3_QOS)) +void setup_qos(void); +#else +static inline void setup_qos(void) +{ +} +#endif diff --git a/arch/arm/mach-k3/include/mach/hardware.h b/arch/arm/mach-k3/include/mach/hardware.h index a1a9dfbde66c..52ef82e70b07 100644 --- a/arch/arm/mach-k3/include/mach/hardware.h +++ b/arch/arm/mach-k3/include/mach/hardware.h @@ -30,7 +30,6 @@
#ifdef CONFIG_SOC_K3_AM62A7 #include "am62a_hardware.h" -#include "am62a_qos.h" #endif
/* Assuming these addresses and definitions stay common across K3 devices */ @@ -97,12 +96,4 @@ struct rom_extended_boot_data { u32 num_components; };
-struct k3_qos_data {
- u32 reg;
- u32 val;
-};
-extern struct k3_qos_data am62a_qos_data[]; -extern u32 am62a_qos_count;
- #endif /* _ASM_ARCH_HARDWARE_H_ */
diff --git a/arch/arm/mach-k3/include/mach/k3-qos.h b/arch/arm/mach-k3/include/mach/k3-qos.h new file mode 100644 index 000000000000..e00e1de5b9cb --- /dev/null +++ b/arch/arm/mach-k3/include/mach/k3-qos.h @@ -0,0 +1,22 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/*
- Quality of Service (QoS) Configuration Header File
- Copyright (C) 2024 Texas Instruments Incorporated - https://www.ti.com/
- */
+#ifndef _K3_QOS_H_ +#define _K3_QOS_H_
+#include <linux/kernel.h>
+struct k3_qos_data {
- u32 reg;
- u32 val;
+};
+#if (IS_ENABLED(CONFIG_K3_QOS)) +extern struct k3_qos_data qos_data[]; +extern u32 qos_count; +#endif
+#endif /* _K3_QOS_H_ */ diff --git a/arch/arm/mach-k3/r5/am62ax/Makefile b/arch/arm/mach-k3/r5/am62ax/Makefile index 02a941805e9a..e4e55ce5c7dd 100644 --- a/arch/arm/mach-k3/r5/am62ax/Makefile +++ b/arch/arm/mach-k3/r5/am62ax/Makefile @@ -4,4 +4,4 @@
obj-y += clk-data.o obj-y += dev-data.o -obj-y += am62a_qos_data.o +obj-y += am62a_qos_uboot.o diff --git a/arch/arm/mach-k3/include/mach/am62a_qos.h b/arch/arm/mach-k3/r5/am62ax/am62a_qos.h similarity index 100% rename from arch/arm/mach-k3/include/mach/am62a_qos.h rename to arch/arm/mach-k3/r5/am62ax/am62a_qos.h diff --git a/arch/arm/mach-k3/r5/am62ax/am62a_qos_data.c b/arch/arm/mach-k3/r5/am62ax/am62a_qos_uboot.c similarity index 85% rename from arch/arm/mach-k3/r5/am62ax/am62a_qos_data.c rename to arch/arm/mach-k3/r5/am62ax/am62a_qos_uboot.c index 38db4f2f5c8e..9a82944d5fe9 100644 --- a/arch/arm/mach-k3/r5/am62ax/am62a_qos_data.c +++ b/arch/arm/mach-k3/r5/am62ax/am62a_qos_uboot.c @@ -5,10 +5,11 @@
- Copyright (C) 2022 Texas Instruments Incorporated - https://www.ti.com/
*/ -#include <asm/arch/hardware.h> -#include "common.h"
-struct k3_qos_data am62a_qos_data[] = { +#include <asm/arch/k3-qos.h> +#include "am62a_qos.h"
+struct k3_qos_data qos_data[] = { /* modules_qosConfig0 - 1 endpoints, 4 channels */ { .reg = K3_DSS_UL_MAIN_0_VBUSM_DMA + 0x100 + 0x4 * 0, @@ -43,4 +44,4 @@ struct k3_qos_data am62a_qos_data[] = { }, };
-uint32_t am62a_qos_count = sizeof(am62a_qos_data) / sizeof(am62a_qos_data[0]); +u32 qos_count = ARRAY_SIZE(qos_data);
base-commit: daa3100250839dd30626f7f4b7daf041f1114f1c

On 06-Feb-24 22:58, Andrew Davis wrote:
On 2/6/24 2:56 AM, Aradhya Bhatia wrote:
Refactor common QoS code into a new common header file, and the soc specific setup_qos functions into a common API.
Rename $(soc)_qos_count and $(soc)_qos_data variables to qos_count and qos_data. When QoS settings of more SoCs are added, only one pair will be defined at a time, based on the config SOC_K3_$(soc).
This refactoring has been done for 2 major purposes.
- The auto-generated $(soc)_qos_data.c and $(soc)_qos.h files cannot
have any code that is specific to any bootloader. Those files have to remain agnostic of different bootloader implementations and their header files.
- The existing implementation was less than ideal and would have enabled
multiple $(soc)_qos_count and $(soc)_qos_data variables for all SoC variants.
Signed-off-by: Aradhya Bhatia a-bhatia1@ti.com
arch/arm/mach-k3/Kconfig | 8 +++++++ arch/arm/mach-k3/am62a7_init.c | 14 ------------ arch/arm/mach-k3/common.c | 12 ++++++++++ arch/arm/mach-k3/common.h | 8 +++++++ arch/arm/mach-k3/include/mach/hardware.h | 9 -------- arch/arm/mach-k3/include/mach/k3-qos.h | 22 +++++++++++++++++++ arch/arm/mach-k3/r5/am62ax/Makefile | 2 +- .../{include/mach => r5/am62ax}/am62a_qos.h | 0 .../{am62a_qos_data.c => am62a_qos_uboot.c} | 9 ++++---- 9 files changed, 56 insertions(+), 28 deletions(-) create mode 100644 arch/arm/mach-k3/include/mach/k3-qos.h rename arch/arm/mach-k3/{include/mach => r5/am62ax}/am62a_qos.h (100%) rename arch/arm/mach-k3/r5/am62ax/{am62a_qos_data.c => am62a_qos_uboot.c} (85%)
diff --git a/arch/arm/mach-k3/Kconfig b/arch/arm/mach-k3/Kconfig index 03898424c954..ffc4a9c29029 100644 --- a/arch/arm/mach-k3/Kconfig +++ b/arch/arm/mach-k3/Kconfig @@ -139,6 +139,14 @@ config K3_DM_FW bootloader, it makes RM and PM services not being available during R5 SPL execution time. +config K3_QOS + bool "Enable Quality of Service (QoS) Settings for TI K3 SoCs" + default y if CPU_V7R && SOC_K3_AM62A7
If this is R5 only, then put it in the arch/arm/mach-k3/r5 Kconfig and you can drop the CPU_V7R check.
Andrew
That would indeed be better. Thanks!
Regards Aradhya
+ help + This option enables the R5 SPL to apply QoS settings for various + HW controllers inside the TI K3 SoCs. The files for QoS settings are + generated from Sysconfig and k3-resource-partitioning tools.
config K3_X509_SWRV int "SWRV for X509 certificate used for boot images" default 1 diff --git a/arch/arm/mach-k3/am62a7_init.c b/arch/arm/mach-k3/am62a7_init.c index d72e19936b9b..080274e3af58 100644 --- a/arch/arm/mach-k3/am62a7_init.c +++ b/arch/arm/mach-k3/am62a7_init.c @@ -69,20 +69,6 @@ static void ctrl_mmr_unlock(void) mmr_unlock(PADCFG_MMR1_BASE, 1); } -#if (IS_ENABLED(CONFIG_CPU_V7R)) -static void setup_qos(void) -{ - u32 i;
- for (i = 0; i < am62a_qos_count; i++) - writel(am62a_qos_data[i].val, (uintptr_t)am62a_qos_data[i].reg); -} -#else -static void setup_qos(void) -{ -} -#endif
void board_init_f(ulong dummy) { struct udevice *dev; diff --git a/arch/arm/mach-k3/common.c b/arch/arm/mach-k3/common.c index f411366778f0..b54f2ddc4729 100644 --- a/arch/arm/mach-k3/common.c +++ b/arch/arm/mach-k3/common.c @@ -28,6 +28,8 @@ #include <elf.h> #include <soc.h> +#include <asm/arch/k3-qos.h>
#if IS_ENABLED(CONFIG_SYS_K3_SPL_ATF) enum { IMAGE_ID_ATF, @@ -595,3 +597,13 @@ int misc_init_r(void) void __weak do_board_detect(void) { }
+#if (IS_ENABLED(CONFIG_K3_QOS)) +void setup_qos(void) +{ + u32 i;
+ for (i = 0; i < qos_count; i++) + writel(qos_data[i].val, (uintptr_t)qos_data[i].reg); +} +#endif diff --git a/arch/arm/mach-k3/common.h b/arch/arm/mach-k3/common.h index e9db9fbfb63d..53aa186b31a4 100644 --- a/arch/arm/mach-k3/common.h +++ b/arch/arm/mach-k3/common.h @@ -45,3 +45,11 @@ void ti_secure_image_post_process(void **p_image, size_t *p_size); struct ti_sci_handle *get_ti_sci_handle(void); void do_board_detect(void); void ti_secure_image_check_binary(void **p_image, size_t *p_size);
+#if (IS_ENABLED(CONFIG_K3_QOS)) +void setup_qos(void); +#else +static inline void setup_qos(void) +{ +} +#endif diff --git a/arch/arm/mach-k3/include/mach/hardware.h b/arch/arm/mach-k3/include/mach/hardware.h index a1a9dfbde66c..52ef82e70b07 100644 --- a/arch/arm/mach-k3/include/mach/hardware.h +++ b/arch/arm/mach-k3/include/mach/hardware.h @@ -30,7 +30,6 @@ #ifdef CONFIG_SOC_K3_AM62A7 #include "am62a_hardware.h" -#include "am62a_qos.h" #endif /* Assuming these addresses and definitions stay common across K3 devices */ @@ -97,12 +96,4 @@ struct rom_extended_boot_data { u32 num_components; }; -struct k3_qos_data { - u32 reg; - u32 val; -};
-extern struct k3_qos_data am62a_qos_data[]; -extern u32 am62a_qos_count;
#endif /* _ASM_ARCH_HARDWARE_H_ */ diff --git a/arch/arm/mach-k3/include/mach/k3-qos.h b/arch/arm/mach-k3/include/mach/k3-qos.h new file mode 100644 index 000000000000..e00e1de5b9cb --- /dev/null +++ b/arch/arm/mach-k3/include/mach/k3-qos.h @@ -0,0 +1,22 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/*
- Quality of Service (QoS) Configuration Header File
- Copyright (C) 2024 Texas Instruments Incorporated -
- */
+#ifndef _K3_QOS_H_ +#define _K3_QOS_H_
+#include <linux/kernel.h>
+struct k3_qos_data { + u32 reg; + u32 val; +};
+#if (IS_ENABLED(CONFIG_K3_QOS)) +extern struct k3_qos_data qos_data[]; +extern u32 qos_count; +#endif
+#endif /* _K3_QOS_H_ */ diff --git a/arch/arm/mach-k3/r5/am62ax/Makefile b/arch/arm/mach-k3/r5/am62ax/Makefile index 02a941805e9a..e4e55ce5c7dd 100644 --- a/arch/arm/mach-k3/r5/am62ax/Makefile +++ b/arch/arm/mach-k3/r5/am62ax/Makefile @@ -4,4 +4,4 @@ obj-y += clk-data.o obj-y += dev-data.o -obj-y += am62a_qos_data.o +obj-y += am62a_qos_uboot.o diff --git a/arch/arm/mach-k3/include/mach/am62a_qos.h b/arch/arm/mach-k3/r5/am62ax/am62a_qos.h similarity index 100% rename from arch/arm/mach-k3/include/mach/am62a_qos.h rename to arch/arm/mach-k3/r5/am62ax/am62a_qos.h diff --git a/arch/arm/mach-k3/r5/am62ax/am62a_qos_data.c b/arch/arm/mach-k3/r5/am62ax/am62a_qos_uboot.c similarity index 85% rename from arch/arm/mach-k3/r5/am62ax/am62a_qos_data.c rename to arch/arm/mach-k3/r5/am62ax/am62a_qos_uboot.c index 38db4f2f5c8e..9a82944d5fe9 100644 --- a/arch/arm/mach-k3/r5/am62ax/am62a_qos_data.c +++ b/arch/arm/mach-k3/r5/am62ax/am62a_qos_uboot.c @@ -5,10 +5,11 @@ * * Copyright (C) 2022 Texas Instruments Incorporated - https://www.ti.com/ */ -#include <asm/arch/hardware.h> -#include "common.h" -struct k3_qos_data am62a_qos_data[] = { +#include <asm/arch/k3-qos.h> +#include "am62a_qos.h"
+struct k3_qos_data qos_data[] = { /* modules_qosConfig0 - 1 endpoints, 4 channels */ { .reg = K3_DSS_UL_MAIN_0_VBUSM_DMA + 0x100 + 0x4 * 0, @@ -43,4 +44,4 @@ struct k3_qos_data am62a_qos_data[] = { }, }; -uint32_t am62a_qos_count = sizeof(am62a_qos_data) / sizeof(am62a_qos_data[0]); +u32 qos_count = ARRAY_SIZE(qos_data);
base-commit: daa3100250839dd30626f7f4b7daf041f1114f1c
participants (2)
-
Andrew Davis
-
Aradhya Bhatia