On Fri, Jan 23, 2015 at 3:14 AM, Ray Jui <rjui@xxxxxxxxxxxx> wrote: > I have another question here. In the B0 revision of our Cygnus chip, the > ASIC team added a feature to allow individual pins to be muxed to GPIO. > The pinmux controller can still only do group-based muxing in general, > but at the same time, you can override most (but not all) individual > pins to GPIO. > > I believe this HW design actually forces us to mix use "groups" and > "pins" in DT. > > For example, assuming we mux pins 1 - 10 as MMC (one cmd line, one clk > line, and 8 data lines). One might make the decision that he only needs > 4 data lines instead of 8 data lines, and he wants to free up the 4 data > lines and uses as GPIO. I would split the 8 available data lines in two groups, like "data-1-4" and "data-5-8" since the use case is such that either you use four or eight lines, not 6 or 7, either just "data-1-4" or both "data-1-4" and "data-5-8". > Based on this example, is the following DT > configuration valid? > sd_node { > function = "sd"; > groups = "sd_grps"; > }; > > gpio_node { > function = "gpio"; > pins = "gpio_7", "gpio_8", "gpio_9", "gpio_10"; /* assuming 1:1 > mapping between gpio and pin number to make this example simple */ > }; Muxing an individual GPIO from the device tree is seldom a good idea as you realized in your follow-up mail ;) But this: sd_node { function = "sd"; groups = "data-1-4", "data-5-8", "other-pin-group"; }; Is perfectly fine. One function, several groups. Yours, Linus Walleij -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html