Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S964903Ab3FSW1t (ORCPT ); Wed, 19 Jun 2013 18:27:49 -0400 Received: from avon.wwwdotorg.org ([70.85.31.133]:54086 "EHLO avon.wwwdotorg.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S935191Ab3FSW1s (ORCPT ); Wed, 19 Jun 2013 18:27:48 -0400 Message-ID: <51C23060.50807@wwwdotorg.org> Date: Wed, 19 Jun 2013 16:27:44 -0600 From: Stephen Warren User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130510 Thunderbird/17.0.6 MIME-Version: 1.0 To: Christian Ruppert CC: Linus Walleij , Patrice CHOTARD , "linux-kernel@vger.kernel.org" , Grant Likely , Rob Herring , Rob Landley , Sascha Leuenberger , Pierrick Hascoet , devicetree-discuss@lists.ozlabs.org, linux-doc@vger.kernel.org, Alexandre Courbot Subject: Re: [PATCH 1/4] Make non-linear GPIO ranges accesible from gpiolib References: <20130618092516.GC18663@ab42.lan> <1371547751-13873-1-git-send-email-christian.ruppert@abilis.com> In-Reply-To: <1371547751-13873-1-git-send-email-christian.ruppert@abilis.com> X-Enigmail-Version: 1.4.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2482 Lines: 64 On 06/18/2013 03:29 AM, Christian Ruppert wrote: > This patch adds the infrastructure required to register non-linear gpio > ranges through gpiolib and the standard GPIO device tree bindings. I review this in case we decide to go with it anyway. > diff --git a/Documentation/devicetree/bindings/gpio/gpio.txt b/Documentation/devicetree/bindings/gpio/gpio.txt > +In addition, named groups of pins can be mapped to pin groups of a given > +pin controller: > + > + gpio_pio_g: gpio-controller@1480 { > + #gpio-cells = <2>; > + compatible = "fsl,qe-pario-bank-e", "fsl,qe-pario-bank"; > + reg = <0x1480 0x18>; > + gpio-controller; > + gpio-ranges = <&pinctrl1 0 0 0>, <&pinctrl2 3 0 0>; > + gpio-ranges-group-names = "foo", "bar"; > + }; > + > +where, > + &pinctrl1 and &pinctrl2 is the phandle to the pinctrl DT node. > + > + The following value specifies the base GPIO offset of the pin range with > + respect to the GPIO controller's base. The remaining two values must be > + 0 to indicate that a named pin group should be used for the respective > + range. The number of pins in the range is the number of pins in the pin > + group. It'd be good to re-write this section in a similar style to the cleanup patches that I sent for the existing gpio-ranges documentation. That makes the format description more of a raw syntax than English text. > + gpio-ranges-group-names defines the name of each pingroup of the > + respective pin controller. > + > +The pinctrl node must have a "#gpio-#gpio-range-cells" property set to three > +to define the number of arguments to pass with the phandle. There's some mistake in the property name there. I'd assert we should remove those two lines anyway, and use the new OF parsing code I posted when cleaning up gpio-ranges. > diff --git a/drivers/gpio/gpiolib-of.c b/drivers/gpio/gpiolib-of.c > + if (pinspec.args[2]) { > + /* npins != 0: linear range */ > + ret = gpiochip_add_pin_range(chip, > + pinctrl_dev_get_devname(pctldev), > + pinspec.args[0], > + pinspec.args[1], > + pinspec.args[2]); > + if (ret) > + break; > + } else { I think here we should validate !pinspec.args[1], to ensure that value doesn't get set to anything wonky. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/