Re: [PATCH 1/2] input: clps711x-keypad: Switch to use syscon_regmap_lookup_by_phandle()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Jan 17, 2019 at 11:09:43AM +0300, Alexander Shiyan wrote:
> >Четверг, 17 января 2019, 10:49 +03:00 от Dmitry Torokhov <dmitry.torokhov@xxxxxxxxx>:
> ...
> >> >> >> >On Sat, Dec 22, 2018 at 06:54:34PM +0300, Alexander Shiyan wrote:
> >> >> >> >> As mentioned in the patch bdb0066df96e ("mfd: syscon: Decouple syscon
> >> >> >> >> interface from platform devices"), we need to switch to using the
> >> >> >> >> syscon_regmap_lookup_by_phandle() function. This patch makes this change.
> >> >> >> >> 
> >> >> >> >> Signed-off-by: Alexander Shiyan <  shc_work@xxxxxxx >
> >> >> >> >> ---
> >> >> >> >>  drivers/input/keyboard/clps711x-keypad.c | 3 +--
> >> >> >> >>  1 file changed, 1 insertion(+), 2 deletions(-)
> >> >> >> >> 
> >> >> >> >> diff --git a/drivers/input/keyboard/clps711x-keypad.c b/drivers/input/keyboard/clps711x-keypad.c
> >> >> >> >> index e319f74..f7f49da 100644
> >> >> >> >> --- a/drivers/input/keyboard/clps711x-keypad.c
> >> >> >> >> +++ b/drivers/input/keyboard/clps711x-keypad.c
> >> >> >> >> @@ -100,8 +100,7 @@ static int clps711x_keypad_probe(struct platform_device *pdev)
> >> >> >> >>  if (!priv)
> >> >> >> >>  return -ENOMEM;
> >> >> >> >> 
> >> >> >> >> -priv->syscon =
> >> >> >> >> -syscon_regmap_lookup_by_compatible("cirrus,ep7209-syscon1");
> >> >> >> >> +priv->syscon = syscon_regmap_lookup_by_phandle(np, "syscon");
> >> ...
> >> >> >I would love to just apply the patch as is, but I am afraid we need to
> >> >> >keep compatibility with older DTSes.
> >> >> 
> >> >> Ok, will it be better if we keep the syscon_regmap_lookup_by_compatible()
> >> >> call as a fallback method for getting syscon phandle?
> >> >
> >> >Yes, please. Just make sure you do not try to fall back if
> >> >syscon_regmap_lookup_by_phandle() returns -EPROBE_DEFER, but for all
> >> >other errors we should try old syscon_regmap_lookup_by_compatible().
> >> 
> >> This check is no longer needed after the patch mentioned in the description.
> >
> >Why exactly?
> 
> As far as I understand, syscon_regmap_lookup_by_phandle() calls syscon_node_to_regmap(),
> where it tries to find already registered syscon devices, then, if absent, of_syscon_register()
> is called, so we always get a syscon device or get an -ENODEV error.

of_syscon_register() may fail, and we do not know what error codes it
might return. Even if at this time it does not ever return
-EPROBE_DEFER, this can change in the future, and in this case we should
not execute fallback.

> 
> The code below works fine for me.
> 
> 	priv->syscon = syscon_regmap_lookup_by_phandle(np, "syscon");
> 	if (IS_ERR(priv->syscon)) {

Please change tp:

		if (PTR_ERR(priv->syscon) != -EPROBE_DEFER) {
			/* falling back to old bindings */
			priv->syscon =
				syscon_regmap_lookup_by_compatible(
						"cirrus,ep7209-syscon1");
		}

> 		/* falling back to old bindings */
> 		priv->syscon =
> 			syscon_regmap_lookup_by_compatible("cirrus,ep7209-syscon1");
> 		if (IS_ERR(priv->syscon))
> 			return PTR_ERR(priv->syscon);
> 		else
> 			dev_warn(dev, "Please migrate driver bindings"
> 				      " to use syscon phandle.\n");
> 	}
> 
> ---

Thanks.

-- 
Dmitry



[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux