]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commit
pinctrl: devicetree: Fix dt_to_map_one_config handling of hogs
authorRichard Fitzgerald <rf@opensource.cirrus.com>
Wed, 28 Feb 2018 15:53:06 +0000 (15:53 +0000)
committerKleber Sacilotto de Souza <kleber.souza@canonical.com>
Mon, 27 Aug 2018 14:40:05 +0000 (16:40 +0200)
commit3cb13a841881cb3e064c459cfad8632a864be814
tree6cd176b0e01d07a52874a38feea7fc154a5ed56d
parent6579587d0d2d5987d66ed9e307b8c659e6cde604
pinctrl: devicetree: Fix dt_to_map_one_config handling of hogs

BugLink: http://bugs.launchpad.net/bugs/1786352
[ Upstream commit b89405b6102fcc3746f43697b826028caa94c823 ]

When dt_to_map_one_config() is called with a pinctrl_dev passed
in, it should only be using this if the node being looked up
is a hog. The code was always using the passed pinctrl_dev
without checking whether the dt node referred to it.

A pin controller can have pinctrl-n dependencies on other pin
controllers in these cases:

- the pin controller hardware is external, for example I2C, so
  needs other pin controller(s) to be setup to communicate with
  the hardware device.

- it is a child of a composite MFD so its of_node is shared with
  the parent MFD and other children of that MFD. Any part of that
  MFD could have dependencies on other pin controllers.

Because of this, dt_to_map_one_config() can't assume that if it
has a pinctrl_dev passed in then the node it looks up must be
a hog. It could be a reference to some other pin controller.

Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Signed-off-by: Khalid Elmously <khalid.elmously@canonical.com>
drivers/pinctrl/devicetree.c