mux: mmio: use reg property when parent device is not a syscon
PATCH v6 1/1 mux: mmio: use reg property when parent device is not a syscon
The DT binding for the reg-mux compatible states it can be used when the "parent device of mux controller is not syscon device". It also allows for a reg property. When the reg property is provided, use that to identify the address space for this mux. If not provided fallback to using the parent device as a regmap provider.
While here use dev_err_probe() in the error path to prevent printing a message on probe defer which now can happen in extra ways.
---
Changes from v5:
- Rebased on next-20240104
Changes from v4:
- Shorten comment and code lines
- Remove extra ret assignment
Changes from v3:
- Check for probe defer
Changes from v2:
- Rebased on v6.6-rc1
Changes from v1:
- Flip logic as suggested in v1[0]
[0] https://lore.kernel.org/lkml/[email protected]/T/
drivers/mux/mmio.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-)
drivers/mux/mmio.c +12 -7
@@ -44,15 +44,20 @@ static int mux_mmio_probe(struct platform_device *pdev)int ret;int i; -if (of_device_is_compatible (np,"mmio-mux" )) +if (of_device_is_compatible (np,"mmio-mux" )) { regmap =syscon_node_to_regmap (np->parent); -else - regmap =dev_get_regmap (dev->parent,NULL ) ?:ERR_PTR (-ENODEV ); -if (IS_ERR (regmap)) { - ret =PTR_ERR (regmap); -dev_err (dev,"failed to get regmap: %d\n" , ret); -return ret; + }else { + regmap =device_node_to_regmap (np); +/* Fallback to checking the parent node on "real" errors. */ +if (IS_ERR (regmap) && regmap !=ERR_PTR (-EPROBE_DEFER )) { + regmap =dev_get_regmap (dev->parent,NULL ); +if (!regmap) + regmap =ERR_PTR (-ENODEV ); + } } +if (IS_ERR (regmap)) +return dev_err_probe (dev,PTR_ERR (regmap), +"failed to get regmap\n" ); ret =of_property_count_u32_elems (np,"mux-reg-masks" );if (ret ==0 || ret %2 )
Signature · 1 line
2.39.2