[PATCH 5/5] spi: ti_qspi: Use device APIs
Peng Fan (OSS)
peng.fan at oss.nxp.com
Wed May 27 04:35:28 CEST 2026
From: Peng Fan <peng.fan at nxp.com>
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 <peng.fan at nxp.com>
---
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
More information about the U-Boot
mailing list