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]

 



>Четверг, 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.

The code below works fine for me.

	priv->syscon = syscon_regmap_lookup_by_phandle(np, "syscon");
	if (IS_ERR(priv->syscon)) {
		/* 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");
	}

---




[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