• Richard Fitzgerald's avatar
    pinctrl: devicetree: Fix dt_to_map_one_config handling of hogs · b89405b6
    Richard Fitzgerald authored
    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: default avatarRichard Fitzgerald <rf@opensource.cirrus.com>
    Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    b89405b6
devicetree.c 10.9 KB