[PATCH v3 03/10] soc: ti: k3-navss-ringacc: Initialize base address of ring cfg registers

Sverdlin, Alexander alexander.sverdlin at siemens.com
Fri Aug 16 14:33:34 CEST 2024


On Fri, 2024-07-05 at 10:20 +0530, Chintan Vankar wrote:
> From: Kishon Vijay Abraham I <kishon at ti.com>
> 
> Initialize base address of ring config registers required to natively
> setup ring cfg registers in the absence of Device Manager (DM) services
> at R5 SPL stage. Since register property is defined as "ring" for PKTDMA
> and "cfg" for UDMA, configure base address of ring configuration register
> accordingly.
> 
> Signed-off-by: Kishon Vijay Abraham I <kishon at ti.com>
> Signed-off-by: Siddharth Vadapalli <s-vadapalli at ti.com>
> Signed-off-by: Chintan Vankar <c-vankar at ti.com>

Reviewed-by: Alexander Sverdlin <alexander.sverdlin at siemens.com>

> ---
> 
> Link to v2:
> https://lore.kernel.org/r/20240425120822.2048012-4-c-vankar@ti.com/
> 
> Changes from v2 to v3:
> - Since register property is defined as "ring" for PKTDMA and "cfg"
>   for UDMA, change conditon to configure the base address of ring
>   configuration register accordingly.
> 
>  drivers/soc/ti/k3-navss-ringacc.c | 17 ++++++++++++++++-
>  1 file changed, 16 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/soc/ti/k3-navss-ringacc.c b/drivers/soc/ti/k3-navss-ringacc.c
> index d3f3d4761c..8ffb6137df 100644
> --- a/drivers/soc/ti/k3-navss-ringacc.c
> +++ b/drivers/soc/ti/k3-navss-ringacc.c
> @@ -1029,8 +1029,8 @@ static int k3_nav_ringacc_init(struct udevice *dev, struct k3_nav_ringacc *ringa
>  struct k3_nav_ringacc *k3_ringacc_dmarings_init(struct udevice *dev,
>  						struct k3_ringacc_init_data *data)
>  {
> +	void __iomem *base_rt, *base_cfg;
>  	struct k3_nav_ringacc *ringacc;
> -	void __iomem *base_rt;
>  	int i;
>  
>  	ringacc = devm_kzalloc(dev, sizeof(*ringacc), GFP_KERNEL);
> @@ -1048,6 +1048,20 @@ struct k3_nav_ringacc *k3_ringacc_dmarings_init(struct udevice *dev,
>  	if (!base_rt)
>  		return ERR_PTR(-EINVAL);
>  
> +	/*
> +	 * Since register property is defined as "ring" for PKTDMA and
> +	 * "cfg" for UDMA, configure base address of ring configuration
> +	 * register accordingly.
> +	 */
> +	base_cfg = dev_remap_addr_name(dev, "ring");
> +	pr_debug("ring %p\n", base_cfg);
> +	if (!base_cfg) {
> +		base_cfg = dev_remap_addr_name(dev, "cfg");
> +		pr_debug("cfg %p\n", base_cfg);
> +		if (!base_cfg)
> +			return ERR_PTR(-EINVAL);
> +	}
> +
>  	ringacc->rings = devm_kzalloc(dev,
>  				      sizeof(*ringacc->rings) *
>  				      ringacc->num_rings * 2,
> @@ -1062,6 +1076,7 @@ struct k3_nav_ringacc *k3_ringacc_dmarings_init(struct udevice *dev,
>  	for (i = 0; i < ringacc->num_rings; i++) {
>  		struct k3_nav_ring *ring = &ringacc->rings[i];
>  
> +		ring->cfg = base_cfg + KNAV_RINGACC_CFG_REGS_STEP * i;
>  		ring->rt = base_rt + K3_DMARING_RING_RT_REGS_STEP * i;
>  		ring->parent = ringacc;
>  		ring->ring_id = i;

-- 
Alexander Sverdlin
Siemens AG
www.siemens.com


More information about the U-Boot mailing list