From: Kishon Vijay Abraham I <kis...@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.

Signed-off-by: Kishon Vijay Abraham I <kis...@ti.com>
Signed-off-by: Siddharth Vadapalli <s-vadapa...@ti.com>
---
 drivers/soc/ti/k3-navss-ringacc.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/soc/ti/k3-navss-ringacc.c 
b/drivers/soc/ti/k3-navss-ringacc.c
index 7a2fbb0db6..31e9b372ee 100644
--- a/drivers/soc/ti/k3-navss-ringacc.c
+++ b/drivers/soc/ti/k3-navss-ringacc.c
@@ -1030,8 +1030,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);
@@ -1049,6 +1049,10 @@ struct k3_nav_ringacc *k3_ringacc_dmarings_init(struct 
udevice *dev,
        if (!base_rt)
                return ERR_PTR(-EINVAL);
 
+       base_cfg = dev_read_addr_name_ptr(dev, "cfg");
+       if (!base_cfg)
+               return ERR_PTR(-EINVAL);
+
        ringacc->rings = devm_kzalloc(dev,
                                      sizeof(*ringacc->rings) *
                                      ringacc->num_rings * 2,
@@ -1063,6 +1067,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;
-- 
2.34.1

Reply via email to