[PATCH v2 2/8] arm: mach-k3: am62a: Simplify the logic for QOS reg and val propagation

Andrew Davis afd at ti.com
Fri Jun 14 16:57:33 CEST 2024


On 6/14/24 7:44 AM, Jayesh Choudhary wrote:
> For the QOS registers, instead of using the raw values for calculation
> for each reg field, use a defined macro which takes in argument for all
> the reg fields to get the desired value.
> Do the similar simplification for QOS register and group registers and
> make the corresponding changes for am62a_qos_uboot file.
> 
> Suggested-by: Andrew Davis <afd at ti.com>
> Signed-off-by: Jayesh Choudhary <j-choudhary at ti.com>
> ---

Looks a bit better IMHO,

Acked-by: Andrew Davis <afd at ti.com>

>   arch/arm/mach-k3/include/mach/k3-qos.h       | 86 ++++----------------
>   arch/arm/mach-k3/r5/am62ax/am62a_qos_uboot.c | 24 +++---
>   2 files changed, 28 insertions(+), 82 deletions(-)
> 
> diff --git a/arch/arm/mach-k3/include/mach/k3-qos.h b/arch/arm/mach-k3/include/mach/k3-qos.h
> index 6ed5704803..eb0f2a0448 100644
> --- a/arch/arm/mach-k3/include/mach/k3-qos.h
> +++ b/arch/arm/mach-k3/include/mach/k3-qos.h
> @@ -9,80 +9,26 @@
>   
>   #include <linux/kernel.h>
>   
> -#define QOS_0	(0 << 0)
> -#define QOS_1	(1 << 0)
> -#define QOS_2	(2 << 0)
> -#define QOS_3	(3 << 0)
> -#define QOS_4	(4 << 0)
> -#define QOS_5	(5 << 0)
> -#define QOS_6	(6 << 0)
> -#define QOS_7	(7 << 0)
> +/* K3_QOS_REG: Registers to configure the channel for a given endpoint */
>   
> -#define ORDERID_0	(0 << 4)
> -#define ORDERID_1	(1 << 4)
> -#define ORDERID_2	(2 << 4)
> -#define ORDERID_3	(3 << 4)
> -#define ORDERID_4	(4 << 4)
> -#define ORDERID_5	(5 << 4)
> -#define ORDERID_6	(6 << 4)
> -#define ORDERID_7	(7 << 4)
> -#define ORDERID_8	(8 << 4)
> -#define ORDERID_9	(9 << 4)
> -#define ORDERID_10	(10 << 4)
> -#define ORDERID_11	(11 << 4)
> -#define ORDERID_12	(12 << 4)
> -#define ORDERID_13	(13 << 4)
> -#define ORDERID_14	(14 << 4)
> -#define ORDERID_15	(15 << 4)
> +#define K3_QOS_REG(base_reg, i)		(base_reg + 0x100 + (i) * 4)
>   
> -#define ASEL_0	(0 << 8)
> -#define ASEL_1	(1 << 8)
> -#define ASEL_2	(2 << 8)
> -#define ASEL_3	(3 << 8)
> -#define ASEL_4	(4 << 8)
> -#define ASEL_5	(5 << 8)
> -#define ASEL_6	(6 << 8)
> -#define ASEL_7	(7 << 8)
> -#define ASEL_8	(8 << 8)
> -#define ASEL_9	(9 << 8)
> -#define ASEL_10	(10 << 8)
> -#define ASEL_11	(11 << 8)
> -#define ASEL_12	(12 << 8)
> -#define ASEL_13	(13 << 8)
> -#define ASEL_14	(14 << 8)
> -#define ASEL_15	(15 << 8)
> +#define K3_QOS_VAL(qos, orderid, asel, epriority, virtid, atype) \
> +	(qos		<< 0  | \
> +	 orderid	<< 4  | \
> +	 asel		<< 8  | \
> +	 epriority	<< 12 | \
> +	 virtid		<< 16 | \
> +	 atype		<< 28)
>   
> -#define EPRIORITY_0	(0 << 12)
> -#define EPRIORITY_1	(1 << 12)
> -#define EPRIORITY_2	(2 << 12)
> -#define EPRIORITY_3	(3 << 12)
> -#define EPRIORITY_4	(4 << 12)
> -#define EPRIORITY_5	(5 << 12)
> -#define EPRIORITY_6	(6 << 12)
> -#define EPRIORITY_7	(7 << 12)
> -
> -#define VIRTID_0	(0 << 16)
> -#define VIRTID_1	(1 << 16)
> -#define VIRTID_2	(2 << 16)
> -#define VIRTID_3	(3 << 16)
> -#define VIRTID_4	(4 << 16)
> -#define VIRTID_5	(5 << 16)
> -#define VIRTID_6	(6 << 16)
> -#define VIRTID_7	(7 << 16)
> -#define VIRTID_8	(8 << 16)
> -#define VIRTID_9	(9 << 16)
> -#define VIRTID_10	(10 << 16)
> -#define VIRTID_11	(11 << 16)
> -#define VIRTID_12	(12 << 16)
> -#define VIRTID_13	(13 << 16)
> -#define VIRTID_14	(14 << 16)
> -#define VIRTID_15	(15 << 16)
> -
> -#define ATYPE_0	(0 << 28)
> -#define ATYPE_1	(1 << 28)
> -#define ATYPE_2	(2 << 28)
> -#define ATYPE_3	(3 << 28)
> +/*
> + * K3_QOS_GROUP_REG: Registers to set 1:1 mapping for orderID MAP1/MAP2
> + * remap registers.
> + */
> +#define K3_QOS_GROUP_REG(base_reg, i)	(base_reg + (i) * 4)
>   
> +#define K3_QOS_GROUP_DEFAULT_VAL_LOW	0x76543210
> +#define K3_QOS_GROUP_DEFAULT_VAL_HIGH	0xfedcba98
>   struct k3_qos_data {
>   	u32 reg;
>   	u32 val;
> diff --git a/arch/arm/mach-k3/r5/am62ax/am62a_qos_uboot.c b/arch/arm/mach-k3/r5/am62ax/am62a_qos_uboot.c
> index 9a82944d5f..1d588acea4 100644
> --- a/arch/arm/mach-k3/r5/am62ax/am62a_qos_uboot.c
> +++ b/arch/arm/mach-k3/r5/am62ax/am62a_qos_uboot.c
> @@ -12,20 +12,20 @@
>   struct k3_qos_data qos_data[] = {
>   	/* modules_qosConfig0 - 1 endpoints, 4 channels */
>   	{
> -		.reg = K3_DSS_UL_MAIN_0_VBUSM_DMA + 0x100 + 0x4 * 0,
> -		.val = ORDERID_8,
> +		.reg = K3_QOS_REG(K3_DSS_UL_MAIN_0_VBUSM_DMA, 0),
> +		.val = K3_QOS_VAL(0, 8, 0, 0, 0, 0),
>   	},
>   	{
> -		.reg = K3_DSS_UL_MAIN_0_VBUSM_DMA + 0x100 + 0x4 * 1,
> -		.val = ORDERID_8,
> +		.reg = K3_QOS_REG(K3_DSS_UL_MAIN_0_VBUSM_DMA, 1),
> +		.val = K3_QOS_VAL(0, 8, 0, 0, 0, 0),
>   	},
>   	{
> -		.reg = K3_DSS_UL_MAIN_0_VBUSM_DMA + 0x100 + 0x4 * 2,
> -		.val = ORDERID_8,
> +		.reg = K3_QOS_REG(K3_DSS_UL_MAIN_0_VBUSM_DMA, 2),
> +		.val = K3_QOS_VAL(0, 8, 0, 0, 0, 0),
>   	},
>   	{
> -		.reg = K3_DSS_UL_MAIN_0_VBUSM_DMA + 0x100 + 0x4 * 3,
> -		.val = ORDERID_8,
> +		.reg = K3_QOS_REG(K3_DSS_UL_MAIN_0_VBUSM_DMA, 3),
> +		.val = K3_QOS_VAL(0, 8, 0, 0, 0, 0),
>   	},
>   
>   	/* Following registers set 1:1 mapping for orderID MAP1/MAP2
> @@ -35,12 +35,12 @@ struct k3_qos_data qos_data[] = {
>   
>   	/* K3_DSS_UL_MAIN_0_VBUSM_DMA - 1 groups */
>   	{
> -		.reg = K3_DSS_UL_MAIN_0_VBUSM_DMA + 0,
> -		.val = 0x76543210,
> +		.reg = K3_QOS_GROUP_REG(K3_DSS_UL_MAIN_0_VBUSM_DMA, 0),
> +		.val = K3_QOS_GROUP_DEFAULT_VAL_LOW,
>   	},
>   	{
> -		.reg = K3_DSS_UL_MAIN_0_VBUSM_DMA + 4,
> -		.val = 0xfedcba98,
> +		.reg = K3_QOS_GROUP_REG(K3_DSS_UL_MAIN_0_VBUSM_DMA, 1),
> +		.val = K3_QOS_GROUP_DEFAULT_VAL_HIGH,
>   	},
>   };
>   


More information about the U-Boot mailing list