From: Richard Fitzgerald <rf-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org> To: Linus Walleij <linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> Cc: Alexandre Courbot <gnurou-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>, Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>, Thomas Gleixner <tglx-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org>, Jason Cooper <jason-NLaQJdtUoK4Be96aLqz0jA@public.gmane.org>, Lee Jones <lee.jones-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>, Mark Brown <broonie-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>, "alsa-devel-K7yf7f+aM1XWsZ/bQMPhNw@public.gmane.org" <alsa-devel-K7yf7f+aM1XWsZ/bQMPhNw@public.gmane.org>, "open list:WOLFSON MICROELECTRONICS DRIVERS" <patches-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org>, "linux-gpio-u79uwXL29TY76Z2rM5mHXA@public.gmane.org" <linux-gpio-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>, "devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org" <devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>, "linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org" <linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org> Subject: Re: [PATCH 10/16] gpio: madera: Support Cirrus Logic Madera class codecs Date: Fri, 7 Apr 2017 10:54:29 +0100 [thread overview] Message-ID: <1491558869.4096.43.camel@rf-debian.wolfsonmicro.main> (raw) In-Reply-To: <CACRpkdatoJOg1U218Q-NteRdz6B+w_yr1PWvnfa1P1EgGm7zug-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> On Fri, 2017-04-07 at 11:11 +0200, Linus Walleij wrote: > On Wed, Apr 5, 2017 at 12:07 PM, Richard Fitzgerald > <rf-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org> wrote: > > > This adds support for the GPIOs on Cirrus Logic Madera class codecs. > > A bit terse commit message, could you elaborate a bit on their > specifics? > Sure. > > .../devicetree/bindings/gpio/gpio-madera.txt | 24 +++ > > Again should probably be a separate patch. Again, I don't care much > as long as the DT people are happy. > > > +++ b/Documentation/devicetree/bindings/gpio/gpio-madera.txt > > @@ -0,0 +1,24 @@ > > +Cirrus Logic Madera class audio codecs gpio driver > > + > > +This is a subnode of the parent mfd node. > > + > > +See also the core bindings for the parent MFD driver: > > +See Documentation/devicetree/bindings/mfd/madera.txt > > + > > +Required properties: > > + - compatible : must be "cirrus,madera-gpio" > > + - gpio-controller : Indicates this device is a GPIO controller. > > + - #gpio-cells : Must be 2. The first cell is the pin number. The second cell > > + is reserved for future use and must be zero > > + > > +Example: > > + > > +codec: cs47l85@0 { > > + compatible = "cirrus,cs47l85"; > > + > > + gpio { > > + compatible = "cirrus,madera-gpio"; > > + gpio-controller; > > + #gpio-cells = <2>; > > + } > > Maybe you want to use the gpio-line-names = ; property in the example > to show how nice it is to name the lines? > I'll take a look at that. > > +config GPIO_MADERA > > + tristate "Cirrus Logic Madera class codecs" > > + depends on MFD_MADERA > > + help > > + Support for GPIOs on Cirrus Logic Madera class codecs. > > I wonder if you should not depend on the pin controller instead. > It seems closer and also likely to act as a back-end for the > GPIOs. > > > +static int madera_gpio_get(struct gpio_chip *chip, unsigned int offset) > > +{ > > + struct madera_gpio *madera_gpio = gpiochip_get_data(chip); > > + struct madera *madera = madera_gpio->madera; > > + unsigned int val; > > + int ret; > > + > > + ret = regmap_read(madera->regmap, > > + MADERA_GPIO1_CTRL_1 + (2 * offset), &val); > > + if (ret < 0) > > + return ret; > > + > > + if (val & MADERA_GP1_LVL_MASK) > > + return 1; > > + else > > + return 0; > > Just do this: > > return !!(val & MADERA_GP1_LVL_MASK); > Ok. Personally I like the clarity of the more verbose version rather than the !! but I can change it. > > +static struct gpio_chip template_chip = { > > + .label = "madera", > > + .owner = THIS_MODULE, > > + .direction_input = madera_gpio_direction_in, > > + .get = madera_gpio_get, > > + .direction_output = madera_gpio_direction_out, > > + .set = madera_gpio_set, > > + .can_sleep = true, > > +}; > > - Implement .get_direction() > Ok > Also consider implementing: > > - request/free/set_config looking like this: > > .request = gpiochip_generic_request, > .free = gpiochip_generic_free, > .set_config = gpiochip_generic_config, > > If you also implement the corresponding > .pin_config_set in struct pinconf_ops and > .gpio_request_enable() and .gpio_disable_free() > in struct pinmux_ops, you get a pin control back-end > that will mux in the pins to GPIO mode if they are wrong > set, and also set up debounce and/or open drain for the > GPIO line using the standard GPIO callbacks with pin > control as a back-end. > > If you also specify "strict" in struct pinmux_ops you block > the collisions between users of GPIO and other functions > in the pin control driver. > > (Please go back and look at your pin control driver > for this.) > I'll take a look at these things. > Example driver using pin control as GPIO back-end: > drivers/pinctrl/intel/pinctrl-intel.c > > Other than this it looks fine. > > Yours, > Linus Walleij -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html
WARNING: multiple messages have this Message-ID (diff)
From: Richard Fitzgerald <rf@opensource.wolfsonmicro.com> To: Linus Walleij <linus.walleij@linaro.org> Cc: Alexandre Courbot <gnurou@gmail.com>, Rob Herring <robh+dt@kernel.org>, Thomas Gleixner <tglx@linutronix.de>, Jason Cooper <jason@lakedaemon.net>, Lee Jones <lee.jones@linaro.org>, Mark Brown <broonie@kernel.org>, "alsa-devel@alsa-project.org" <alsa-devel@alsa-project.org>, "open list:WOLFSON MICROELECTRONICS DRIVERS" <patches@opensource.wolfsonmicro.com>, "linux-gpio@vger.kernel.org" <linux-gpio@vger.kernel.org>, "devicetree@vger.kernel.org" <devicetree@vger.kernel.org>, "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org> Subject: Re: [PATCH 10/16] gpio: madera: Support Cirrus Logic Madera class codecs Date: Fri, 7 Apr 2017 10:54:29 +0100 [thread overview] Message-ID: <1491558869.4096.43.camel@rf-debian.wolfsonmicro.main> (raw) In-Reply-To: <CACRpkdatoJOg1U218Q-NteRdz6B+w_yr1PWvnfa1P1EgGm7zug@mail.gmail.com> On Fri, 2017-04-07 at 11:11 +0200, Linus Walleij wrote: > On Wed, Apr 5, 2017 at 12:07 PM, Richard Fitzgerald > <rf@opensource.wolfsonmicro.com> wrote: > > > This adds support for the GPIOs on Cirrus Logic Madera class codecs. > > A bit terse commit message, could you elaborate a bit on their > specifics? > Sure. > > .../devicetree/bindings/gpio/gpio-madera.txt | 24 +++ > > Again should probably be a separate patch. Again, I don't care much > as long as the DT people are happy. > > > +++ b/Documentation/devicetree/bindings/gpio/gpio-madera.txt > > @@ -0,0 +1,24 @@ > > +Cirrus Logic Madera class audio codecs gpio driver > > + > > +This is a subnode of the parent mfd node. > > + > > +See also the core bindings for the parent MFD driver: > > +See Documentation/devicetree/bindings/mfd/madera.txt > > + > > +Required properties: > > + - compatible : must be "cirrus,madera-gpio" > > + - gpio-controller : Indicates this device is a GPIO controller. > > + - #gpio-cells : Must be 2. The first cell is the pin number. The second cell > > + is reserved for future use and must be zero > > + > > +Example: > > + > > +codec: cs47l85@0 { > > + compatible = "cirrus,cs47l85"; > > + > > + gpio { > > + compatible = "cirrus,madera-gpio"; > > + gpio-controller; > > + #gpio-cells = <2>; > > + } > > Maybe you want to use the gpio-line-names = ; property in the example > to show how nice it is to name the lines? > I'll take a look at that. > > +config GPIO_MADERA > > + tristate "Cirrus Logic Madera class codecs" > > + depends on MFD_MADERA > > + help > > + Support for GPIOs on Cirrus Logic Madera class codecs. > > I wonder if you should not depend on the pin controller instead. > It seems closer and also likely to act as a back-end for the > GPIOs. > > > +static int madera_gpio_get(struct gpio_chip *chip, unsigned int offset) > > +{ > > + struct madera_gpio *madera_gpio = gpiochip_get_data(chip); > > + struct madera *madera = madera_gpio->madera; > > + unsigned int val; > > + int ret; > > + > > + ret = regmap_read(madera->regmap, > > + MADERA_GPIO1_CTRL_1 + (2 * offset), &val); > > + if (ret < 0) > > + return ret; > > + > > + if (val & MADERA_GP1_LVL_MASK) > > + return 1; > > + else > > + return 0; > > Just do this: > > return !!(val & MADERA_GP1_LVL_MASK); > Ok. Personally I like the clarity of the more verbose version rather than the !! but I can change it. > > +static struct gpio_chip template_chip = { > > + .label = "madera", > > + .owner = THIS_MODULE, > > + .direction_input = madera_gpio_direction_in, > > + .get = madera_gpio_get, > > + .direction_output = madera_gpio_direction_out, > > + .set = madera_gpio_set, > > + .can_sleep = true, > > +}; > > - Implement .get_direction() > Ok > Also consider implementing: > > - request/free/set_config looking like this: > > .request = gpiochip_generic_request, > .free = gpiochip_generic_free, > .set_config = gpiochip_generic_config, > > If you also implement the corresponding > .pin_config_set in struct pinconf_ops and > .gpio_request_enable() and .gpio_disable_free() > in struct pinmux_ops, you get a pin control back-end > that will mux in the pins to GPIO mode if they are wrong > set, and also set up debounce and/or open drain for the > GPIO line using the standard GPIO callbacks with pin > control as a back-end. > > If you also specify "strict" in struct pinmux_ops you block > the collisions between users of GPIO and other functions > in the pin control driver. > > (Please go back and look at your pin control driver > for this.) > I'll take a look at these things. > Example driver using pin control as GPIO back-end: > drivers/pinctrl/intel/pinctrl-intel.c > > Other than this it looks fine. > > Yours, > Linus Walleij
next prev parent reply other threads:[~2017-04-07 9:54 UTC|newest] Thread overview: 88+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-04-05 10:07 [PATCH 00/16] Add support for Cirrus Logic CS47L35/L85/L90/L91 codecs Richard Fitzgerald 2017-04-05 10:07 ` Richard Fitzgerald 2017-04-05 10:07 ` [PATCH 01/16] mfd: madera: Add register definitions for Cirrus Logic Madera codecs Richard Fitzgerald 2017-04-05 10:07 ` Richard Fitzgerald 2017-04-07 8:27 ` Linus Walleij 2017-04-07 8:27 ` Linus Walleij 2017-04-07 8:30 ` Linus Walleij 2017-04-07 8:30 ` Linus Walleij 2017-04-07 8:48 ` Charles Keepax 2017-04-07 8:48 ` Charles Keepax 2017-04-07 9:12 ` Linus Walleij 2017-04-07 9:12 ` Linus Walleij [not found] ` <CACRpkdZLfL+dxMN-uaRp57u4yW4cLfLFoZVkNWFZL4eECOyR1A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2017-04-07 11:14 ` Mark Brown 2017-04-07 11:14 ` Mark Brown 2017-04-12 12:06 ` Lee Jones 2017-04-05 10:07 ` [PATCH 02/16] mfd: madera: Add common support " Richard Fitzgerald 2017-04-05 10:07 ` Richard Fitzgerald 2017-04-12 12:54 ` Lee Jones 2017-04-19 16:42 ` Richard Fitzgerald 2017-04-19 16:42 ` Richard Fitzgerald [not found] ` <1492620124.4826.47.camel-WeElTRBN8n0bEPBeyYQi64iQ8/zYDDdY1BehtkLrGTY@public.gmane.org> 2017-04-24 10:03 ` Lee Jones 2017-04-24 10:03 ` Lee Jones 2017-04-05 10:07 ` [PATCH 03/16] mfd: madera: Register map tables for Cirrus Logic CS47L35 Richard Fitzgerald 2017-04-05 10:07 ` Richard Fitzgerald 2017-04-12 13:30 ` Lee Jones 2017-04-05 10:07 ` [PATCH 04/16] mfd: madera: Register map tables for Cirrus Logic CS47L85 Richard Fitzgerald 2017-04-05 10:07 ` Richard Fitzgerald 2017-04-12 13:31 ` Lee Jones 2017-04-05 10:07 ` [PATCH 05/16] mfd: madera: Register map tables for Cirrus Logic CS47L90/91 Richard Fitzgerald 2017-04-05 10:07 ` Richard Fitzgerald [not found] ` <1491386884-30689-6-git-send-email-rf-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org> 2017-04-12 13:31 ` Lee Jones 2017-04-12 13:31 ` Lee Jones 2017-04-05 10:07 ` [PATCH 06/16] regulator: madera-ldo1: LDO1 driver for Cirrus Logic Madera codecs Richard Fitzgerald 2017-04-05 10:07 ` Richard Fitzgerald 2017-04-05 13:28 ` Mark Brown 2017-04-05 13:28 ` Mark Brown 2017-04-10 17:49 ` Rob Herring 2017-04-10 18:11 ` Mark Brown 2017-04-10 18:11 ` Mark Brown [not found] ` <20170410181136.btpvcat2ijwiebvm-GFdadSzt00ze9xe1eoZjHA@public.gmane.org> 2017-04-11 19:20 ` Rob Herring 2017-04-11 19:20 ` Rob Herring [not found] ` <CAL_JsqLYi8txm2xb5emGvbC0P2cvtW2wXLdA=2qCO-wt_4JXXA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2017-04-11 20:03 ` Mark Brown 2017-04-11 20:03 ` Mark Brown 2017-04-05 10:07 ` [PATCH 07/16] regulator: madera-micsupp: Mic supply " Richard Fitzgerald 2017-04-05 10:07 ` Richard Fitzgerald 2017-04-05 13:40 ` Mark Brown 2017-04-05 13:40 ` Mark Brown 2017-04-05 13:53 ` Richard Fitzgerald 2017-04-05 13:53 ` Richard Fitzgerald 2017-04-06 10:57 ` Mark Brown 2017-04-06 10:57 ` Mark Brown 2017-04-05 10:07 ` [PATCH 08/16] irqchip: Add driver " Richard Fitzgerald 2017-04-05 10:07 ` Richard Fitzgerald 2017-04-10 17:53 ` Rob Herring 2017-04-10 17:53 ` Rob Herring 2017-04-05 10:07 ` [PATCH 09/16] pinctrl: madera: " Richard Fitzgerald 2017-04-05 10:07 ` Richard Fitzgerald 2017-04-07 8:54 ` Linus Walleij 2017-04-07 8:54 ` Linus Walleij [not found] ` <CACRpkdZK3QXu4t2jud0-LPDj0LDVruAm33N4Lazjk44C3ndwwQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2017-04-07 9:43 ` Richard Fitzgerald 2017-04-07 9:43 ` Richard Fitzgerald 2017-04-10 17:56 ` Rob Herring 2017-04-10 17:56 ` Rob Herring 2017-04-05 10:07 ` [PATCH 10/16] gpio: madera: Support Cirrus Logic Madera class codecs Richard Fitzgerald 2017-04-05 10:07 ` Richard Fitzgerald 2017-04-07 9:11 ` Linus Walleij 2017-04-07 9:11 ` Linus Walleij [not found] ` <CACRpkdatoJOg1U218Q-NteRdz6B+w_yr1PWvnfa1P1EgGm7zug-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2017-04-07 9:54 ` Richard Fitzgerald [this message] 2017-04-07 9:54 ` Richard Fitzgerald 2017-04-05 10:07 ` [PATCH 11/16] ASoC: wm_adsp: Add support for ADSP2V2 Richard Fitzgerald 2017-04-05 10:07 ` Richard Fitzgerald 2017-04-05 17:31 ` Applied "ASoC: wm_adsp: Add support for ADSP2V2" to the asoc tree Mark Brown 2017-04-05 17:31 ` Mark Brown 2017-04-05 10:08 ` [PATCH 12/16] ASoC: wm_adsp: add support for DSP region lock Richard Fitzgerald 2017-04-05 10:08 ` Richard Fitzgerald [not found] ` <1491386884-30689-13-git-send-email-rf-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org> 2017-04-05 17:31 ` Applied "ASoC: wm_adsp: add support for DSP region lock" to the asoc tree Mark Brown 2017-04-05 17:31 ` Mark Brown [not found] ` <1491386884-30689-1-git-send-email-rf-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org> 2017-04-05 10:08 ` [PATCH 13/16] ASoC: madera: Add common support for Cirrus Logic Madera codecs Richard Fitzgerald 2017-04-05 10:08 ` Richard Fitzgerald 2017-04-10 18:03 ` Rob Herring 2017-04-14 21:01 ` kbuild test robot 2017-04-14 21:01 ` kbuild test robot 2017-04-05 10:08 ` [PATCH 14/16] ASoC: cs47l35: Add codec driver for Cirrus Logic CS47L35 Richard Fitzgerald 2017-04-05 10:08 ` Richard Fitzgerald 2017-04-05 10:08 ` [PATCH 15/16] ASoC: cs47l85: Add codec driver for Cirrus Logic CS47L85 Richard Fitzgerald 2017-04-05 10:08 ` Richard Fitzgerald 2017-04-05 10:08 ` [PATCH 16/16] ASoC: cs47l90: Add codec driver for Cirrus Logic CS47L90 Richard Fitzgerald 2017-04-05 10:08 ` Richard Fitzgerald
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1491558869.4096.43.camel@rf-debian.wolfsonmicro.main \ --to=rf-yzvpicuk2aatku/dhu1wvuem+bqzidxxqq4iyu8u01e@public.gmane.org \ --cc=alsa-devel-K7yf7f+aM1XWsZ/bQMPhNw@public.gmane.org \ --cc=broonie-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \ --cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \ --cc=gnurou-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \ --cc=jason-NLaQJdtUoK4Be96aLqz0jA@public.gmane.org \ --cc=lee.jones-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \ --cc=linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \ --cc=linux-gpio-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \ --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \ --cc=patches-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org \ --cc=robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \ --cc=tglx-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.