Re: [PATCH] mux: mmio: use reg property when parent device is not a syscon

From: Peter Rosin
Date: Mon May 15 2023 - 17:14:19 EST


Hi!

2023-05-15 at 21:19, Andrew Davis wrote:
> 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 parent device is indeed not a syscon device,
> nor is it a regmap provider, we should fallback to using that reg
> property to identify the address space to use for this mux.

We should? Says who?

Don't get me wrong, I'm not saying the change is bad or wrong, I would just
like to see an example where it matters. Or, at least some rationale for why
the code needs to change other than covering some case that looks like it
could/should be possible based on the binding. I.e., why is it not better to
"close the hole" in the binding instead?

Cheers,
Peter

> Signed-off-by: Andrew Davis <afd@xxxxxx>
> ---
> drivers/mux/mmio.c | 9 ++++++---
> 1 file changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/mux/mmio.c b/drivers/mux/mmio.c
> index 44a7a0e885b8..42e00b9fd0a9 100644
> --- a/drivers/mux/mmio.c
> +++ b/drivers/mux/mmio.c
> @@ -44,10 +44,13 @@ 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);
> + } else {
> + regmap = dev_get_regmap(dev->parent, NULL);
> + if (!regmap)
> + regmap = device_node_to_regmap(np) ?: ERR_PTR(-ENODEV);
> + }
> if (IS_ERR(regmap)) {
> ret = PTR_ERR(regmap);
> dev_err(dev, "failed to get regmap: %d\n", ret);