linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Mauri Sandberg <maukka@ext.kapsi.fi>
To: sandberg@mailfence.com
Cc: andy.shevchenko@gmail.com, bgolaszewski@baylibre.com,
	geert+renesas@glider.be, linus.walleij@linaro.org,
	linux-gpio@vger.kernel.org, robh+dt@kernel.org,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
	drew@beagleboard.org, Mauri Sandberg <maukka@ext.kapsi.fi>
Subject: [PATCH v6 0/2] gpio: gpio-cascade: add generic GPIO cascade
Date: Tue, 19 Oct 2021 15:57:29 +0300	[thread overview]
Message-ID: <20211019125731.4327-1-maukka@ext.kapsi.fi> (raw)
In-Reply-To: <20210325122832.119147-1-sandberg@mailfence.com>

Hello all,

It's been a while and here comes the sixth version of the patches.

What was done:
 - adjust module dependecies and what it selects in Kconfig
 - use managed device resource call when adding gpio chip
 - remove redundant code
 - cosmetic changes

Thanks,
Mauri

rangediff v5 -> v6:
1:  a1bb23f56378 ! 1:  87348f391671 dt-bindings: gpio-cascade: add documentation
    @@ Commit message
         the cascaded line.
     
         Signed-off-by: Mauri Sandberg <maukka@ext.kapsi.fi>
    +    Reviewed-by: Rob Herring <robh@kernel.org>
         ---
    +    v5 -> v6:
    +     - added Reviewed-by tag by Rob
         v4 -> v5:
          - renamed gpio-mux-input -> gpio-cascade
          - changed vague term 'pin' to 'upstream line'
2:  e0be9df088a9 ! 2:  a8e608181bc7 gpio: gpio-cascade: add generic GPIO cascade
    @@ Metadata
      ## Commit message ##
         gpio: gpio-cascade: add generic GPIO cascade
     
    -    Adds support for a building cascades of GPIO lines. That is, it allows
    +    Adds support for building cascades of GPIO lines. That is, it allows
         setups when there is one upstream line and multiple cascaded lines, out
         of which one can be chosen at a time. The status of the upstream line
    -    can be conveyd to the selected cascaded line or, vice versa, the status
    +    can be conveyed to the selected cascaded line or, vice versa, the status
         of the cascaded line can be conveyed to the upstream line.
     
    -    A gpio-mux is being used to select, which cascaded GPIO line is being
    +    A multiplexer is being used to select, which cascaded GPIO line is being
         used at any given time.
     
         At the moment only input direction is supported. In future it should be
    @@ Commit message
     
         Signed-off-by: Mauri Sandberg <maukka@ext.kapsi.fi>
         ---
    +    v5 -> v6:
    +     - In Kconfig, remove dependency to OF_GPIO and select only MULTIPLEXER
    +     - refactor code preferring one-liners
    +     - clean up prints, removing them from success-path.
    +     - don't explicitly set gpio_chip.of_node as it's done in the GPIO library
    +     - use devm_gpiochip_add_data instead of gpiochip_add
         v4 -> v5:
          - renamed gpio-mux-input -> gpio-cascade. refactored code accordingly
            here and there and changed to use new bindings and compatible string
    @@ drivers/gpio/Kconfig: config GPIO_VIRTIO
     +
     +config GPIO_CASCADE
     +	tristate "General GPIO cascade"
    -+	depends on OF_GPIO
     +	select MULTIPLEXER
    -+	select MUX_GPIO
     +	help
     +	  Say yes here to enable support for generic GPIO cascade.
     +
    @@ drivers/gpio/gpio-cascade.c (new)
     +
     +static int gpio_cascade_get_value(struct gpio_chip *gc, unsigned int offset)
     +{
    -+	struct gpio_cascade *cas;
    ++	struct gpio_cascade *cas = chip_to_cascade(gc);
     +	int ret;
     +
    -+	cas = chip_to_cascade(gc);
     +	ret = mux_control_select(cas->mux_control, offset);
     +	if (ret)
     +		return ret;
    @@ drivers/gpio/gpio-cascade.c (new)
     +
     +static int gpio_cascade_probe(struct platform_device *pdev)
     +{
    -+	struct device_node *np = pdev->dev.of_node;
     +	struct device *dev = &pdev->dev;
     +	struct gpio_cascade *cas;
     +	struct mux_control *mc;
    @@ drivers/gpio/gpio-cascade.c (new)
     +	struct gpio_chip *gc;
     +	int err;
     +
    -+	cas = devm_kzalloc(dev, sizeof(struct gpio_cascade), GFP_KERNEL);
    -+	if (cas == NULL)
    ++	cas = devm_kzalloc(dev, sizeof(*cas), GFP_KERNEL);
    ++	if (!cas)
     +		return -ENOMEM;
     +
     +	mc = devm_mux_control_get(dev, NULL);
    -+	if (IS_ERR(mc)) {
    -+		err = (int) PTR_ERR(mc);
    -+		if (err != -EPROBE_DEFER)
    -+			dev_err(dev, "unable to get mux-control: %d\n", err);
    -+		return err;
    -+	}
    ++	if (IS_ERR(mc))
    ++		return dev_err_probe(dev,
    ++				     PTR_ERR(mc),
    ++				     "unable to get mux-control\n");
     +
     +	cas->mux_control = mc;
     +	upstream = devm_gpiod_get(dev, "upstream",  GPIOD_IN);
     +	if (IS_ERR(upstream)) {
    -+		err = (int) PTR_ERR(upstream);
    -+		dev_err(dev, "unable to claim upstream GPIO line: %d\n", err);
    -+		return err;
    ++		dev_err(dev, "unable to claim upstream GPIO line\n");
    ++		return -ENODEV;
     +	}
     +
     +	cas->upstream_line = upstream;
    @@ drivers/gpio/gpio-cascade.c (new)
     +	gc->label = dev_name(cas->parent);
     +	gc->parent = cas->parent;
     +	gc->owner = THIS_MODULE;
    -+	gc->of_node = np;
     +
    -+	err = gpiochip_add(&cas->gpio_chip);
    ++	err = devm_gpiochip_add_data(dev, &cas->gpio_chip, NULL);
     +	if (err) {
    -+		dev_err(dev, "unable to add gpio chip, err=%d\n", err);
    ++		dev_err(dev, "unable to add gpio chip\n");
     +		return err;
     +	}
     +
     +	platform_set_drvdata(pdev, cas);
    -+	dev_info(dev, "registered %u cascaded GPIO lines\n", gc->ngpio);
     +	return 0;
     +}
     +
     +static const struct of_device_id gpio_cascade_id[] = {
    -+	{
    -+		.compatible = "gpio-cascade",
    -+		.data = NULL,
    -+	},
    ++	{ .compatible = "gpio-cascade" },
     +	{ /* sentinel */ }
     +};
     +MODULE_DEVICE_TABLE(of, gpio_cascade_id);

Mauri Sandberg (2):
  dt-bindings: gpio-cascade: add documentation
  gpio: gpio-cascade: add generic GPIO cascade

 .../bindings/gpio/gpio-cascade.yaml           | 103 ++++++++++++++
 drivers/gpio/Kconfig                          |  12 ++
 drivers/gpio/Makefile                         |   1 +
 drivers/gpio/gpio-cascade.c                   | 129 ++++++++++++++++++
 4 files changed, 245 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/gpio/gpio-cascade.yaml
 create mode 100644 drivers/gpio/gpio-cascade.c


base-commit: f4a20dfac88c06c9b529a41ff4cf9acba8f3fdff
-- 
2.25.1


  parent reply	other threads:[~2021-10-19 13:00 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20210325122832.119147-1-sandberg@mailfence.com>
2021-05-30 16:13 ` [PATCH v4 0/2] gpio: add generic gpio input multiplexer Mauri Sandberg
2021-05-30 16:13   ` [PATCH v4 1/2] dt-bindings: gpio-mux-input: add documentation Mauri Sandberg
2021-06-01 10:10     ` Linus Walleij
2021-06-01 10:44     ` Linus Walleij
2021-06-02  9:31       ` Mauri Sandberg
2021-06-02 10:35         ` Linus Walleij
2021-06-02 11:21           ` Mauri Sandberg
2021-06-04  7:51             ` Linus Walleij
2021-06-01 13:32     ` Rob Herring
2021-06-02 11:36       ` Mauri Sandberg
2021-05-30 16:13   ` [PATCH v4 2/2] gpio: gpio-mux-input: add generic gpio input multiplexer Mauri Sandberg
2021-05-30 18:09     ` Andy Shevchenko
2021-05-30 19:02       ` Mauri Sandberg
2021-05-30 19:38         ` Andy Shevchenko
2021-05-31 10:19           ` Mauri Sandberg
2021-06-01 10:38     ` Linus Walleij
2021-06-21 17:20 ` [PATCH v5 0/2] gpio: add generic gpio cascade Mauri Sandberg
2021-06-21 17:20   ` [PATCH v5 1/2] dt-bindings: gpio-cascade: add documentation Mauri Sandberg
2021-06-24 18:30     ` Rob Herring
2021-06-21 17:20   ` [PATCH v5 2/2] gpio: gpio-cascade: add generic GPIO cascade Mauri Sandberg
2021-06-21 17:43     ` Andy Shevchenko
2021-06-21 18:31       ` Enrico Weigelt, metux IT consult
2021-10-15 12:56       ` Mauri Sandberg
2021-10-15 17:20         ` Andy Shevchenko
2021-10-19 12:57 ` Mauri Sandberg [this message]
2021-10-19 12:57   ` [PATCH v6 1/2] dt-bindings: gpio-cascade: add documentation Mauri Sandberg
2021-10-19 12:57   ` [PATCH v6 2/2] gpio: gpio-cascade: add generic GPIO cascade Mauri Sandberg
2021-10-19 13:12     ` Andy Shevchenko
2021-10-19 20:08 ` [PATCH v7 0/2] " Mauri Sandberg
2021-10-19 20:08   ` [PATCH v7 1/2] dt-bindings: gpio-cascade: add documentation Mauri Sandberg
2021-10-24 22:18     ` Linus Walleij
2021-10-19 20:08   ` [PATCH v7 2/2] gpio: gpio-cascade: add generic GPIO cascade Mauri Sandberg
2021-10-24 22:17     ` Linus Walleij
2021-10-25  9:29     ` Andy Shevchenko
2021-10-26 19:15 ` [PATCH v8 0/2] " Mauri Sandberg
2021-10-26 19:15   ` [PATCH v8 1/2] dt-bindings: gpio-cascade: add documentation Mauri Sandberg
2021-10-26 19:15   ` [PATCH v8 2/2] gpio: gpio-cascade: add generic GPIO cascade Mauri Sandberg
2022-02-05 21:59 ` [RESEND v8 0/2] " Mauri Sandberg
2022-02-05 21:59   ` [RESEND v8 1/2] dt-bindings: gpio-cascade: add documentation Mauri Sandberg
2022-02-05 21:59   ` [RESEND v8 2/2] gpio: gpio-cascade: add generic GPIO cascade Mauri Sandberg

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=20211019125731.4327-1-maukka@ext.kapsi.fi \
    --to=maukka@ext.kapsi.fi \
    --cc=andy.shevchenko@gmail.com \
    --cc=bgolaszewski@baylibre.com \
    --cc=devicetree@vger.kernel.org \
    --cc=drew@beagleboard.org \
    --cc=geert+renesas@glider.be \
    --cc=linus.walleij@linaro.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=robh+dt@kernel.org \
    --cc=sandberg@mailfence.com \
    /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: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).