All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Mathieu Dubois-Briand" <mathieu.dubois-briand@bootlin.com>
To: "Andy Shevchenko" <andriy.shevchenko@intel.com>
Cc: "Lee Jones" <lee@kernel.org>, "Rob Herring" <robh@kernel.org>,
	"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
	"Conor Dooley" <conor+dt@kernel.org>,
	"Kamel Bouhara" <kamel.bouhara@bootlin.com>,
	"Linus Walleij" <linus.walleij@linaro.org>,
	"Bartosz Golaszewski" <brgl@bgdev.pl>,
	"Dmitry Torokhov" <dmitry.torokhov@gmail.com>,
	"Uwe Kleine-König" <ukleinek@kernel.org>,
	"Michael Walle" <mwalle@kernel.org>,
	"Mark Brown" <broonie@kernel.org>,
	"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
	"Rafael J. Wysocki" <rafael@kernel.org>,
	"Danilo Krummrich" <dakr@kernel.org>,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-gpio@vger.kernel.org, linux-input@vger.kernel.org,
	linux-pwm@vger.kernel.org,
	"Grégory Clement" <gregory.clement@bootlin.com>,
	"Thomas Petazzoni" <thomas.petazzoni@bootlin.com>
Subject: Re: [PATCH v4 07/10] gpio: max7360: Add MAX7360 gpio support
Date: Thu, 13 Mar 2025 17:43:00 +0100	[thread overview]
Message-ID: <D8FAEPI26C8F.397VN87KK9VIO@bootlin.com> (raw)
In-Reply-To: <Z7OXQqyPjtGgTySf@smile.fi.intel.com>

On Mon Feb 17, 2025 at 9:08 PM CET, Andy Shevchenko wrote:
> On Mon, Feb 17, 2025 at 12:20:13PM +0100, Mathieu Dubois-Briand wrote:
> > To provide a bit more details, there is basically two set of pins usable
> > as GPIOs.
> > 
> > On one side we have what I refer to as GPIOs:
> >   - PORT0 to PORT7 pins of the chip.
> >   - Shared with PWM and rotary encoder functionalities. Functionality
> >     selection can be made independently for each pin. We have to ensure
> >     the same pin is not used by two drivers at the same time. E.g. we
> >     cannot have at the same time GPIO4 and PWM4.
> >   - Supports input and interrupts.
> >   - Outputs may be configured as constant current.
> >   - 8 GPIOS supported, so ngpios is fixed to MAX7360_MAX_GPIO.
> >   - maxim,max7360-gpio compatible, gpio_function == MAX7360_GPIO_PORT.
> > 
> > On the other side, we have what I refer to as GPOs:
> >   - COL2 to COL7 pins of the chip.
> >   - Shared with the keypad functionality. Selections is made by
> >     partitioning the pins: first pins for keypad columns, last pins for
> >     GPOs. Partition is described by the ngpios property.
> >   - Only support outputs.
> >   - maxim,max7360-gpo compatible, gpio_function == MAX7360_GPIO_COL.
> > 
> > > Or you mean that there output only GPIO lines in HW after all?
> > > Is there a link to the datasheet?
> > 
> > A datasheet is available on https://www.analog.com/en/products/max7360.html
>
> Thank you for this good elaboration!
> I will check on the datasheet later on, having one week off.
>

Thanks for your feedback! Sorry I haven't been able to work on this
series for the last few weeks, but I finally had the opportunity to
integrate your comments.

> But what I have read above sounds to me like the following:
>
> 1) the PORT0-PORT7 should be just a regular pin control with the respective
> function being provided (see pinctrl-cy8c95x0.c as an example);
>

Ok, so I created a pin control driver for the PORT pins. This will
effectively help to prevent concurrent use of pins in place of the
request()/free() callbacks.

My only concern is: as there is no real pin muxing on the chip, my
.set_mux callabck in pinmux_ops structure is not doing anything. It
looks like I'm not the only one
(drivers/pinctrl/pinctrl-microchip-sgpio.c does the same thing), but I
hope this is OK.

> 2) the COL2 COL7 case can be modeled as a simplest GPIO (GPO) driver with
> reserved lines property (this will set valid mask and let GPIOLIB to refuse any
> use of the keypad connected pins.
>

I mostly went that way, just a few notes.

I chose to not use the reserved lines property in the device tree, but
instead implemented a gpiolib init_valid_mask() callback. In believe
this is better, as:
- We can automatically generate the valid gpios mask, based on the
  number of columns used.
- It allows to get rid of the compatibility check between the number of
  columns and the number of GPIOs provided by the device tree: DT
  provides the number of columns, we deduct the number of GPIOs.

I chose to number GPIOs from 0 to 7.
- This might be a bit questionable, as GPIO 0 and 1 will always be
  invalid: pins 0 and 1 of the chip cannot be used as GPIOs. I'm
  definitely open to discussion on this point.
- Yet I believe it simplifies everything for the user: pin numbers and
  GPIO numbers are the same instead of having an offset of 2.
- It also simplifies a bit the GPIO driver code.

-- 
Mathieu Dubois-Briand, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com


  reply	other threads:[~2025-03-13 16:43 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-02-14 11:49 [PATCH v4 00/10] Add support for MAX7360 Mathieu Dubois-Briand
2025-02-14 11:49 ` [PATCH v4 01/10] dt-bindings: mfd: gpio: Add MAX7360 Mathieu Dubois-Briand
2025-02-16 12:58   ` Krzysztof Kozlowski
2025-03-18 16:31     ` Mathieu Dubois-Briand
2025-02-14 11:49 ` [PATCH v4 02/10] mfd: Add max7360 support mathieu.dubois-briand
2025-02-18 10:09   ` Andy Shevchenko
2025-02-14 11:49 ` [PATCH v4 03/10] pwm: max7360: Add MAX7360 PWM support mathieu.dubois-briand
2025-02-14 15:10   ` Andy Shevchenko
2025-02-14 16:05     ` Mathieu Dubois-Briand
2025-03-13 21:03   ` Uwe Kleine-König
2025-03-17 13:51     ` Mathieu Dubois-Briand
2025-02-14 11:49 ` [PATCH v4 04/10] gpio: regmap: Allow to provide request and free callbacks Mathieu Dubois-Briand
2025-02-14 16:07   ` Andy Shevchenko
2025-02-16 13:17   ` Sander Vanheule
2025-02-17 12:19     ` Mathieu Dubois-Briand
2025-02-14 11:49 ` [PATCH v4 05/10] gpio: regmap: Allow to retrieve ngpio Mathieu Dubois-Briand
2025-02-14 16:04   ` Andy Shevchenko
2025-02-14 11:49 ` [PATCH v4 06/10] regmap: irq: Add support for chips without separate IRQ status Mathieu Dubois-Briand
2025-02-14 15:18   ` Andy Shevchenko
2025-02-14 15:49     ` Mathieu Dubois-Briand
2025-02-14 16:02       ` Andy Shevchenko
2025-02-26 13:18     ` Mark Brown
2025-02-26 13:52       ` Andy Shevchenko
2025-02-14 11:49 ` [PATCH v4 07/10] gpio: max7360: Add MAX7360 gpio support Mathieu Dubois-Briand
2025-02-14 11:54   ` Mathieu Dubois-Briand
2025-02-14 15:59   ` Andy Shevchenko
2025-02-14 16:18     ` Andy Shevchenko
2025-02-17 11:20     ` Mathieu Dubois-Briand
2025-02-17 20:08       ` Andy Shevchenko
2025-03-13 16:43         ` Mathieu Dubois-Briand [this message]
2025-03-14  8:02           ` Andy Shevchenko
2025-03-17 14:44             ` Mathieu Dubois-Briand
2025-03-13 17:07     ` Mathieu Dubois-Briand
2025-03-14  8:14       ` Andy Shevchenko
2025-03-17 14:13         ` Mathieu Dubois-Briand
2025-03-17 15:56           ` Andy Shevchenko
2025-02-14 11:49 ` [PATCH v4 08/10] input: keyboard: Add support for MAX7360 keypad Mathieu Dubois-Briand
2025-02-14 11:49 ` [PATCH v4 09/10] input: misc: Add support for MAX7360 rotary Mathieu Dubois-Briand
2025-02-14 11:50 ` [PATCH v4 10/10] MAINTAINERS: Add entry on MAX7360 driver Mathieu Dubois-Briand

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=D8FAEPI26C8F.397VN87KK9VIO@bootlin.com \
    --to=mathieu.dubois-briand@bootlin.com \
    --cc=andriy.shevchenko@intel.com \
    --cc=brgl@bgdev.pl \
    --cc=broonie@kernel.org \
    --cc=conor+dt@kernel.org \
    --cc=dakr@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=dmitry.torokhov@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=gregory.clement@bootlin.com \
    --cc=kamel.bouhara@bootlin.com \
    --cc=krzk+dt@kernel.org \
    --cc=lee@kernel.org \
    --cc=linus.walleij@linaro.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-input@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pwm@vger.kernel.org \
    --cc=mwalle@kernel.org \
    --cc=rafael@kernel.org \
    --cc=robh@kernel.org \
    --cc=thomas.petazzoni@bootlin.com \
    --cc=ukleinek@kernel.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: link
Be 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.