[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