From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753461AbdLDIIH (ORCPT ); Mon, 4 Dec 2017 03:08:07 -0500 Received: from mail.free-electrons.com ([62.4.15.54]:44245 "EHLO mail.free-electrons.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753065AbdLDIID (ORCPT ); Mon, 4 Dec 2017 03:08:03 -0500 Subject: Re: [PATCH v4 02/10] pinctrl: axp209: add pinctrl features To: Maxime Ripard Cc: linus.walleij@linaro.org, robh+dt@kernel.org, mark.rutland@arm.com, wens@csie.org, linux@armlinux.org.uk, lee.jones@linaro.org, linux-gpio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, thomas.petazzoni@free-electrons.com, linux-sunxi@googlegroups.com References: <71c9da94df2a5938cb8c092e40f8e36eec0b01c3.1512135804.git-series.quentin.schulz@free-electrons.com> <20171201155702.irfox7vf3kfjvpjx@flea.lan> From: Quentin Schulz Message-ID: <2207ddcb-21fc-e3e1-1a1c-11e11690a02e@free-electrons.com> Date: Mon, 4 Dec 2017 09:07:52 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.0 MIME-Version: 1.0 In-Reply-To: <20171201155702.irfox7vf3kfjvpjx@flea.lan> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="1NaPBRgcWgfegHlfmBh5alegIIB196nFh" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --1NaPBRgcWgfegHlfmBh5alegIIB196nFh Content-Type: multipart/mixed; boundary="63bLoBj6JfPEgfFRXmeVJ3Ki4nDN9xmpl"; protected-headers="v1" From: Quentin Schulz To: Maxime Ripard Cc: linus.walleij@linaro.org, robh+dt@kernel.org, mark.rutland@arm.com, wens@csie.org, linux@armlinux.org.uk, lee.jones@linaro.org, linux-gpio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, thomas.petazzoni@free-electrons.com, linux-sunxi@googlegroups.com Message-ID: <2207ddcb-21fc-e3e1-1a1c-11e11690a02e@free-electrons.com> Subject: Re: [PATCH v4 02/10] pinctrl: axp209: add pinctrl features References: <71c9da94df2a5938cb8c092e40f8e36eec0b01c3.1512135804.git-series.quentin.schulz@free-electrons.com> <20171201155702.irfox7vf3kfjvpjx@flea.lan> In-Reply-To: <20171201155702.irfox7vf3kfjvpjx@flea.lan> --63bLoBj6JfPEgfFRXmeVJ3Ki4nDN9xmpl Content-Type: text/plain; charset=windows-1252 Content-Language: en-US Content-Transfer-Encoding: quoted-printable Hi Maxime, On 01/12/2017 16:57, Maxime Ripard wrote: > On Fri, Dec 01, 2017 at 02:44:43PM +0100, Quentin Schulz wrote: >> +static void axp20x_gpio_set(struct gpio_chip *chip, unsigned offset, >> + int value) >> +{ >=20 > checkpatch output: > WARNING: Prefer 'unsigned int' to bare use of 'unsigned' >=20 >> +static int axp20x_pmx_set_mux(struct pinctrl_dev *pctldev, >> + unsigned int function, unsigned int group) >> +{ >> + struct axp20x_gpio *gpio =3D pinctrl_dev_get_drvdata(pctldev); >> + unsigned int mask; >> + >> + /* Every pin supports GPIO_OUT and GPIO_IN functions */ >> + if (function <=3D AXP20X_FUNC_GPIO_IN) >> + return axp20x_pmx_set(pctldev, group, >> + gpio->funcs[function].muxval); >> + >> + if (function =3D=3D AXP20X_FUNC_LDO) >> + mask =3D gpio->desc->ldo_mask; >> + else >> + mask =3D gpio->desc->adc_mask; >=20 > What is the point of this test... >=20 >> + if (!(BIT(group) & mask)) >> + return -EINVAL; >> + >> + /* >> + * We let the regulator framework handle the LDO muxing as muxing bi= ts >> + * are basically also regulators on/off bits. It's better not to enf= orce >> + * any state of the regulator when selecting LDO mux so that we don'= t >> + * interfere with the regulator driver. >> + */ >> + if (function =3D=3D AXP20X_FUNC_LDO) >> + return 0; >=20 > ... if you know that you're not going to do anything with one of the > outcomes. It would be better to just move that part above, instead of > doing the same test twice. >=20 Return value is different. In one case, it is an error to request "ldo" for a pin that does not support it. In the other case, the ldo request is valid but nothing's done on driver side. Both cases are handled differently by the core: http://elixir.free-electrons.com/linux/latest/source/drivers/pinctrl/pinm= ux.c#L439 I think that's the behavior we're expecting from this driver. Or maybe you're asking to do: + if (function =3D=3D AXP20X_FUNC_LDO) { + if (!(BIT(group) & gpio->desc->ldo_mask)) + return -EINVAL; + return 0; + } else if (!(BIT(group) & gpio->desc->adc_mask)) { + return -EINVAL; + } ? Thanks, Quentin --=20 Quentin Schulz, Free Electrons Embedded Linux and Kernel engineering http://free-electrons.com --63bLoBj6JfPEgfFRXmeVJ3Ki4nDN9xmpl-- --1NaPBRgcWgfegHlfmBh5alegIIB196nFh Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- iQIcBAEBCAAGBQJaJQJeAAoJEIS4mnU+4PGjXbQQAKV7I8E1sHAhAVBGIwwT08S0 BByKhxCn12CysK0rd0qbLoDRvBt/nbe7SX/tJOWXuqfNMQ2MIO9ZSD5pREiaTmVn cEUREeXiDG/a+Ch5X03N0Jfm0S1XnlQwHvBhYasXU1A3XD2s06ZsmXsDuQOGKRaI JAo3kfWCWfsJ4Odd948pTfxrOKEgrBaYTS0qd0P4rSQHa1DQd0kxpkgfaxq643n4 b16pDdWprGKECjQWtOHnWkaJN2UZ2WtEsrACPsHjqF3OLqycaAdwJBM/IzNle0hQ 3eMKF3FlRwFfdLHV8yoce/wQWz6seLeieJ7hDjQmAWj081ebTZVNzRVvyH3Rpr+r 6oUAhT8QHpRm8FskVltvF38k2LAoYd/vdZRG2uGqUjZx059uN4zbRXe924B/c9Jo X4mkec3OmFcda7otwebzBQ25vZLzBpoF5clXKZp5eVsuRGhJ1fdA5+b+2GSv9veS rsD6zW6xhvXDRg1VHRHb4decPiy9Czm+ee8LGxB2rGHyQLKxe2mdM9nvjlbCGwM2 ZlaVVTkLjwfmv1pi2eXmBLLroetqjFEdySOxkanhXt8crEqplmguqkFM7YiI+V3D dad1x4nF1mJcs5yr3LW+/WZ1TMUUVwZ/OjO8LWcZIpMRo09DklV0lcVJUqyzKJGr ioBcHuTxxckeq0TgtQUL =Ifqo -----END PGP SIGNATURE----- --1NaPBRgcWgfegHlfmBh5alegIIB196nFh--