On Tue, Oct 25, 2016 at 3:47 AM, Masahiro Yamada <yamada.masahiro@xxxxxxxxxxxxx> wrote: > Sylvain Lemieux reports the LPC32xx GPIO driver is broken since > commit 762c2e46c059 ("gpio: of: remove of_gpiochip_and_xlate() and > struct gg_data"). Probably, gpio-etraxfs.c and gpio-davinci.c are > broken too. > > Those drivers register multiple gpio_chip that are associated to a > single OF node, and their own .of_xlate() checks if the passed > gpio_chip is valid. > > Now, the problem is of_find_gpiochip_by_node() returns the first > gpio_chip found to match the given node. So, .of_xlate() fails, > except for the first GPIO bank. > > Reverting the commit could be a solution, but I do not want to go > back to the mess of struct gg_data. Another solution here is to > take the match by a node pointer and the success of .of_xlate(). > It is a bit clumsy to call .of_xlate twice; for gpio_chip matching > and for really getting the gpio_desc index. Perhaps, our long-term > goal might be to convert the drivers to single chip registration, > but this commit will solve the problem until then. > > Fixes: 762c2e46c059 ("gpio: of: remove of_gpiochip_and_xlate() and struct gg_data") > Signed-off-by: Masahiro Yamada <yamada.masahiro@xxxxxxxxxxxxx> > Reported-by: Sylvain Lemieux <slemieux.tyco@xxxxxxxxx> > Tested-by: David Lechner <david@xxxxxxxxxxxxxx> > --- > > Changes in v2: > - correcton pointed out by Sylvain: > chip->of_xlate(chip, gpiospec, NULL) >= 0 Patch applied for fixes. Yours, Linus Walleij -- To unsubscribe from this list: send the line "unsubscribe linux-gpio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html