From: Peng Fan <[email protected]>

Convert the driver to use driver model APIs for phandle parsing and address
handling instead of legacy FDT interfaces.

Replace fdt_getprop() parsing of "syscon-chipselects" with
dev_read_phandle_with_args(), and switch address-related helpers
from devfdt_*() to dev_read_*() variants.

Also update "num-cs" handling to use dev_read_u32_default().

Remove direct dependencies on gd->fdt_blob and simplify the code while
keeping the existing behavior.

No functional changes.

Signed-off-by: Peng Fan <[email protected]>
---
 drivers/spi/ti_qspi.c | 21 +++++++++------------
 1 file changed, 9 insertions(+), 12 deletions(-)

diff --git a/drivers/spi/ti_qspi.c b/drivers/spi/ti_qspi.c
index 1f2494e592c..4768bc22990 100644
--- a/drivers/spi/ti_qspi.c
+++ b/drivers/spi/ti_qspi.c
@@ -417,10 +417,10 @@ static int ti_qspi_probe(struct udevice *bus)
 static void *map_syscon_chipselects(struct udevice *bus)
 {
 #if CONFIG_IS_ENABLED(SYSCON)
+       struct ofnode_phandle_args args;
        struct udevice *syscon;
        struct regmap *regmap;
-       const fdt32_t *cell;
-       int len, err;
+       int err;
 
        err = uclass_get_device_by_phandle(UCLASS_SYSCON, bus,
                                           "syscon-chipselects", &syscon);
@@ -437,17 +437,16 @@ static void *map_syscon_chipselects(struct udevice *bus)
                return NULL;
        }
 
-       cell = fdt_getprop(gd->fdt_blob, dev_of_offset(bus),
-                          "syscon-chipselects", &len);
-       if (len < 2*sizeof(fdt32_t)) {
+       err = dev_read_phandle_with_args(bus, "syscon-chipselects", NULL, 0, 0, 
&args);
+       if (err || args.args_count < 1) {
                debug("%s: offset not available\n", __func__);
                return NULL;
        }
 
-       return fdtdec_get_number(cell + 1, 1) + regmap_get_range(regmap, 0);
+       return args.args[0] + regmap_get_range(regmap, 0);
 #else
        fdt_addr_t addr;
-       addr = devfdt_get_addr_index(bus, 2);
+       addr = dev_read_addr_index(bus, 2);
        return (addr == FDT_ADDR_T_NONE) ? NULL :
                map_physmem(addr, 0, MAP_NOCACHE);
 #endif
@@ -456,15 +455,13 @@ static void *map_syscon_chipselects(struct udevice *bus)
 static int ti_qspi_of_to_plat(struct udevice *bus)
 {
        struct ti_qspi_priv *priv = dev_get_priv(bus);
-       const void *blob = gd->fdt_blob;
-       int node = dev_of_offset(bus);
        fdt_addr_t mmap_addr;
-       fdt_addr_t mmap_size;
+       fdt_size_t mmap_size;
 
        priv->ctrl_mod_mmap = map_syscon_chipselects(bus);
        priv->base = map_physmem(dev_read_addr(bus),
                                 sizeof(struct ti_qspi_regs), MAP_NOCACHE);
-       mmap_addr = devfdt_get_addr_size_index(bus, 1, &mmap_size);
+       mmap_addr = dev_read_addr_size_index(bus, 1, &mmap_size);
        priv->memory_map = map_physmem(mmap_addr, mmap_size, MAP_NOCACHE);
        priv->mmap_size = mmap_size;
 
@@ -473,7 +470,7 @@ static int ti_qspi_of_to_plat(struct udevice *bus)
                debug("Error: Max frequency missing\n");
                return -ENODEV;
        }
-       priv->num_cs = fdtdec_get_int(blob, node, "num-cs", 4);
+       priv->num_cs = dev_read_u32_default(bus, "num-cs", 4);
 
        debug("%s: regs=<0x%x>, max-frequency=%d\n", __func__,
              (int)priv->base, priv->max_hz);

-- 
2.51.0

Reply via email to