[PATCH] pinctrl: imx: Allow parsing DT without function nodes
Uwe Kleine-König
u.kleine-koenig at pengutronix.de
Sun Mar 29 22:36:36 PDT 2015
Hello Markus,
On Sun, Mar 29, 2015 at 11:20:04PM +0200, Markus Pargmann wrote:
> The old format to define pinctrl settings for imx in DT has two
> hierarchy levels. The first level are function device nodes. The second
> level are pingroups which contain a property fsl,pins. The original
> intention was to define all pin functions in a single dtsi file and just
> reference the correct ones in the board files.
> This idea was rejected some time ago leading to the current design to
> have all the pinfunctions defined in the board files. So we don't need
> the function device nodes anymore.
>
> This patch changes the pinctrl driver to accept devicetrees which do not
> have the first hierarchy level, function device nodes. For example
> karo-tx25 already has such a devicetree. Old devicetrees are still
> parsed and supported.
Documentation/devicetree/bindings/pinctrl/fsl,imx* needs adaption if the
new format should be the recommended one.
> - nfuncs = of_get_child_count(np);
> - if (nfuncs <= 0) {
> - dev_err(&pdev->dev, "no functions defined\n");
> - return -EINVAL;
> + /*
> + * Check if the DT contains pins in the direct child nodes. This
> + * indicates the newer DT format to store pins. The old format with
> + * function devicenodes which contain group nodes which contain
> + * fsl,pins is still parsed if flat_funcs is false.
> + */
> + child = of_get_next_child(np, NULL);
If of_get_next_child picked imx27's gpio at 10015000 here, ...
> + if (child)
> + flat_funcs = of_property_read_bool(child, "fsl,pins");
... flat_funcs is assigned false which might be wrong.
These nodes must be special cased also in imx_pinctrl_parse_functions I
think.
Best regards
Uwe
--
Pengutronix e.K. | Uwe Kleine-König |
Industrial Linux Solutions | http://www.pengutronix.de/ |
More information about the linux-arm-kernel
mailing list