[PATCH v14 00/10] Add support for MAX7360

Mathieu Dubois-Briand posted 10 patches 1 month, 1 week ago
.../bindings/gpio/maxim,max7360-gpio.yaml          |  83 ++++++
.../devicetree/bindings/mfd/maxim,max7360.yaml     | 191 +++++++++++++
MAINTAINERS                                        |  13 +
drivers/gpio/Kconfig                               |  12 +
drivers/gpio/Makefile                              |   1 +
drivers/gpio/gpio-max7360.c                        | 257 +++++++++++++++++
drivers/gpio/gpio-regmap.c                         |  30 +-
drivers/input/keyboard/Kconfig                     |  12 +
drivers/input/keyboard/Makefile                    |   1 +
drivers/input/keyboard/max7360-keypad.c            | 308 +++++++++++++++++++++
drivers/input/misc/Kconfig                         |  10 +
drivers/input/misc/Makefile                        |   1 +
drivers/input/misc/max7360-rotary.c                | 192 +++++++++++++
drivers/mfd/Kconfig                                |  14 +
drivers/mfd/Makefile                               |   1 +
drivers/mfd/max7360.c                              | 171 ++++++++++++
drivers/pinctrl/Kconfig                            |  11 +
drivers/pinctrl/Makefile                           |   1 +
drivers/pinctrl/pinctrl-max7360.c                  | 215 ++++++++++++++
drivers/pwm/Kconfig                                |  10 +
drivers/pwm/Makefile                               |   1 +
drivers/pwm/pwm-max7360.c                          | 209 ++++++++++++++
include/linux/gpio/regmap.h                        |  18 ++
include/linux/mfd/max7360.h                        | 109 ++++++++
24 files changed, 1869 insertions(+), 2 deletions(-)
[PATCH v14 00/10] Add support for MAX7360
Posted by Mathieu Dubois-Briand 1 month, 1 week ago
This series implements a set of drivers allowing to support the Maxim
Integrated MAX7360 device.

The MAX7360 is an I2C key-switch and led controller, with following
functionalities:
- Keypad controller for a key matrix of up to 8 rows and 8 columns.
- Rotary encoder support, for a single rotary encoder.
- Up to 8 PWM outputs.
- Up to 8 GPIOs with support for interrupts and 6 GPOs.

Chipset pins are shared between all functionalities, so all cannot be
used at the same time.

Lee Jones suggested the whole series goes through MFD subsystem, once
all patches got the needed Acks.

Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
---
Changes in v14:
- Rebased on v6.17-rc2.
- PWM: fixed max7360_pwm_round_waveform_tohw() return value on disabling.
- Link to v13: https://lore.kernel.org/r/20250811-mdb-max7360-support-v13-0-e79fcabff386@bootlin.com

Changes in v13:
- Rebased on v6.17-rc1.
- PWM: fixed max7360_pwm_round_waveform_tohw() return value on rounding.
- Link to v12: https://lore.kernel.org/r/20250722-mdb-max7360-support-v12-0-3747721a8d02@bootlin.com

Changes in v12:
- Rebased on v6.16-rc6.
- PWM: fixed rounding rules.
- PWM: added a link to the datasheet and fixed case in two error
  messages.
- Link to v11: https://lore.kernel.org/r/20250711-mdb-max7360-support-v11-0-cf1dee2a7d4c@bootlin.com

Changes in v11:
- Rebased on v6.16-rc5.
- Small fixes in keypad and rotary encoder input drivers: typos and off
  by one errors.
- Various fixes in PWM driver and PWM Kconfig.
- Link to v10: https://lore.kernel.org/r/20250530-mdb-max7360-support-v10-0-ce3b9e60a588@bootlin.com

Changes in v10:
- Rebased on v6.15
- Do not use devm_ functions to allocate regmap-irq in gpio-remap.c
- Link to v9: https://lore.kernel.org/r/20250522-mdb-max7360-support-v9-0-74fc03517e41@bootlin.com

Changes in v9:
- Fix build issue with bad usage of array_size() on intermediate commit.
- MFD: Fix error strings. Also fix #define style in the header file.
- Pinctrl: Fix missing include.
- PWM: Fix register writes in max7360_pwm_waveform() and
  max7360_pwm_round_waveform_tohw().
- GPIO: Fix GPIO valid mask initialization.
- Link to v8: https://lore.kernel.org/r/20250509-mdb-max7360-support-v8-0-bbe486f6bcb7@bootlin.com

Changes in v8:
- Small changes in drivers.
- Rebased on v6.15-rc5
- Link to v7: https://lore.kernel.org/r/20250428-mdb-max7360-support-v7-0-4e0608d0a7ff@bootlin.com

Changes in v7:
- Add rotary encoder absolute axis support in device tree bindings and
  driver.
- Lot of small changes in keypad, rotary encoder and GPIO drivers.
- Rebased on v6.15-rc4
- Link to v6: https://lore.kernel.org/r/20250409-mdb-max7360-support-v6-0-7a2535876e39@bootlin.com

Changes in v6:
- Rebased on v6.15-rc1.
- Use device_set_of_node_from_dev() instead of creating PWM and Pinctrl
  on parent device.
- Various small fixes in all drivers.
- Fix pins property pattern in pinctrl dt bindings.
- Link to v5: https://lore.kernel.org/r/20250318-mdb-max7360-support-v5-0-fb20baf97da0@bootlin.com

Changes in v5:
- Add pinctrl driver to replace the previous use of request()/free()
  callbacks for PORT pins.
- Dropping Reviewed-by tags on device-tree binding commit, because of
  modifications related to the previous point.
- Remove ngpios property from GPIO device tree bindings.
- Use GPIO valid_mask to mark unusable keypad columns GPOs, instead of
  changing ngpios.
- Drop patches adding support for request()/free() callbacks in GPIO
  regmap and gpio_regmap_get_ngpio().
- Allow gpio_regmap_register() to create the associated regmap IRQ.
- Various fixes in MFD, PWM, GPIO and KEYPAD drivers.
- Link to v4: https://lore.kernel.org/r/20250214-mdb-max7360-support-v4-0-8a35c6dbb966@bootlin.com

Changes in v4:
- Modified the GPIO driver to use gpio-regmap and regmap-irq.
- Add support for request()/free() callbacks in gpio-regmap.
- Add support for status_is_level in regmap-irq.
- Switched the PWM driver to waveform callbacks.
- Various small fixes in MFD, PWM, GPIO drivers and dt bindings.
- Rebased on v6.14-rc2.
- Link to v3: https://lore.kernel.org/r/20250113-mdb-max7360-support-v3-0-9519b4acb0b1@bootlin.com

Changes in v3:
- Fix MFD device tree binding to add gpio child nodes.
- Fix various small issues in device tree bindings.
- Add missing line returns in error messages.
- Use dev_err_probe() when possible.
- Link to v2: https://lore.kernel.org/r/20241223-mdb-max7360-support-v2-0-37a8d22c36ed@bootlin.com

Changes in v2:
- Removing device tree subnodes for keypad, rotary encoder and pwm
  functionalities.
- Fixed dt-bindings syntax and naming.
- Fixed missing handling of requested period in PWM driver.
- Cleanup of the code
- Link to v1: https://lore.kernel.org/r/20241219-mdb-max7360-support-v1-0-8e8317584121@bootlin.com

---
Kamel Bouhara (2):
      mfd: Add max7360 support
      pwm: max7360: Add MAX7360 PWM support

Mathieu Dubois-Briand (8):
      dt-bindings: mfd: gpio: Add MAX7360
      pinctrl: Add MAX7360 pinctrl driver
      gpio: regmap: Allow to allocate regmap-irq device
      gpio: regmap: Allow to provide init_valid_mask callback
      gpio: max7360: Add MAX7360 gpio support
      input: keyboard: Add support for MAX7360 keypad
      input: misc: Add support for MAX7360 rotary
      MAINTAINERS: Add entry on MAX7360 driver

 .../bindings/gpio/maxim,max7360-gpio.yaml          |  83 ++++++
 .../devicetree/bindings/mfd/maxim,max7360.yaml     | 191 +++++++++++++
 MAINTAINERS                                        |  13 +
 drivers/gpio/Kconfig                               |  12 +
 drivers/gpio/Makefile                              |   1 +
 drivers/gpio/gpio-max7360.c                        | 257 +++++++++++++++++
 drivers/gpio/gpio-regmap.c                         |  30 +-
 drivers/input/keyboard/Kconfig                     |  12 +
 drivers/input/keyboard/Makefile                    |   1 +
 drivers/input/keyboard/max7360-keypad.c            | 308 +++++++++++++++++++++
 drivers/input/misc/Kconfig                         |  10 +
 drivers/input/misc/Makefile                        |   1 +
 drivers/input/misc/max7360-rotary.c                | 192 +++++++++++++
 drivers/mfd/Kconfig                                |  14 +
 drivers/mfd/Makefile                               |   1 +
 drivers/mfd/max7360.c                              | 171 ++++++++++++
 drivers/pinctrl/Kconfig                            |  11 +
 drivers/pinctrl/Makefile                           |   1 +
 drivers/pinctrl/pinctrl-max7360.c                  | 215 ++++++++++++++
 drivers/pwm/Kconfig                                |  10 +
 drivers/pwm/Makefile                               |   1 +
 drivers/pwm/pwm-max7360.c                          | 209 ++++++++++++++
 include/linux/gpio/regmap.h                        |  18 ++
 include/linux/mfd/max7360.h                        | 109 ++++++++
 24 files changed, 1869 insertions(+), 2 deletions(-)
---
base-commit: c17b750b3ad9f45f2b6f7e6f7f4679844244f0b9
change-id: 20241219-mdb-max7360-support-223a8ce45ba3

Best regards,
-- 
Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Re: [PATCH v14 00/10] Add support for MAX7360
Posted by Lee Jones 1 month ago
On Sun, 24 Aug 2025, Mathieu Dubois-Briand wrote:

> This series implements a set of drivers allowing to support the Maxim
> Integrated MAX7360 device.
> 
> The MAX7360 is an I2C key-switch and led controller, with following
> functionalities:
> - Keypad controller for a key matrix of up to 8 rows and 8 columns.
> - Rotary encoder support, for a single rotary encoder.
> - Up to 8 PWM outputs.
> - Up to 8 GPIOs with support for interrupts and 6 GPOs.

MFD looks okay now, let me know when you have all Acks and I'll merge the set.

-- 
Lee Jones [李琼斯]
Re: [PATCH v14 00/10] Add support for MAX7360
Posted by Mathieu Dubois-Briand 3 weeks ago
On Tue Sep 2, 2025 at 5:23 PM CEST, Lee Jones wrote:
> On Sun, 24 Aug 2025, Mathieu Dubois-Briand wrote:
>
>> This series implements a set of drivers allowing to support the Maxim
>> Integrated MAX7360 device.
>> 
>> The MAX7360 is an I2C key-switch and led controller, with following
>> functionalities:
>> - Keypad controller for a key matrix of up to 8 rows and 8 columns.
>> - Rotary encoder support, for a single rotary encoder.
>> - Up to 8 PWM outputs.
>> - Up to 8 GPIOs with support for interrupts and 6 GPOs.
>
> MFD looks okay now, let me know when you have all Acks and I'll merge the set.

Hi Lee,

The PWM driver just got Acked, so I believe we are good to go.

Please tell me if there is anything else I need to do.

Thanks,
Mathieu

-- 
Mathieu Dubois-Briand, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
Re: [PATCH v14 00/10] Add support for MAX7360
Posted by Lee Jones 2 weeks, 3 days ago
On Sun, 24 Aug 2025 13:57:19 +0200, Mathieu Dubois-Briand wrote:
> This series implements a set of drivers allowing to support the Maxim
> Integrated MAX7360 device.
> 
> The MAX7360 is an I2C key-switch and led controller, with following
> functionalities:
> - Keypad controller for a key matrix of up to 8 rows and 8 columns.
> - Rotary encoder support, for a single rotary encoder.
> - Up to 8 PWM outputs.
> - Up to 8 GPIOs with support for interrupts and 6 GPOs.
> 
> [...]

Applied, thanks!

[01/10] dt-bindings: mfd: gpio: Add MAX7360
        commit: aee814458fb98819876442f0261fad0bb9842224
[02/10] mfd: Add max7360 support
        commit: a22ddeef55c4df847d9ac862b6192da774948fe1
[03/10] pinctrl: Add MAX7360 pinctrl driver
        commit: b4b993c0e39436ffb3a9b21cabf62b5df085b2e1
[04/10] pwm: max7360: Add MAX7360 PWM support
        commit: d93a75d94b79ba3e664f7236ee05790e8b1d0e4b
[05/10] gpio: regmap: Allow to allocate regmap-irq device
        commit: 553b75d4bfe9264f631d459fe9996744e0672b0e
[06/10] gpio: regmap: Allow to provide init_valid_mask callback
        commit: 0627b71fa5508ab605b6e9fd74baed40805cfdda
[07/10] gpio: max7360: Add MAX7360 gpio support
        commit: b1a7433d857edb14b993161af9ed1ee98d4c9cee
[08/10] input: keyboard: Add support for MAX7360 keypad
        commit: fa6a23f1c59c67de9160b4acc5a8651ad2106fa8
[09/10] input: misc: Add support for MAX7360 rotary
        commit: 229c15e9a69cb3d6a303a9e20b10fb991b66895d
[10/10] MAINTAINERS: Add entry on MAX7360 driver
        commit: 32d4cedd24ed346edbe063323ed495d685e033df

--
Lee Jones [李琼斯]

Re: [PATCH v14 00/10] Add support for MAX7360
Posted by Lee Jones 2 weeks, 3 days ago
On Tue, 16 Sep 2025, Lee Jones wrote:

> On Sun, 24 Aug 2025 13:57:19 +0200, Mathieu Dubois-Briand wrote:
> > This series implements a set of drivers allowing to support the Maxim
> > Integrated MAX7360 device.
> > 
> > The MAX7360 is an I2C key-switch and led controller, with following
> > functionalities:
> > - Keypad controller for a key matrix of up to 8 rows and 8 columns.
> > - Rotary encoder support, for a single rotary encoder.
> > - Up to 8 PWM outputs.
> > - Up to 8 GPIOs with support for interrupts and 6 GPOs.
> > 
> > [...]
> 
> Applied, thanks!
> 
> [01/10] dt-bindings: mfd: gpio: Add MAX7360
>         commit: aee814458fb98819876442f0261fad0bb9842224
> [02/10] mfd: Add max7360 support
>         commit: a22ddeef55c4df847d9ac862b6192da774948fe1
> [03/10] pinctrl: Add MAX7360 pinctrl driver
>         commit: b4b993c0e39436ffb3a9b21cabf62b5df085b2e1
> [04/10] pwm: max7360: Add MAX7360 PWM support
>         commit: d93a75d94b79ba3e664f7236ee05790e8b1d0e4b
> [05/10] gpio: regmap: Allow to allocate regmap-irq device
>         commit: 553b75d4bfe9264f631d459fe9996744e0672b0e
> [06/10] gpio: regmap: Allow to provide init_valid_mask callback
>         commit: 0627b71fa5508ab605b6e9fd74baed40805cfdda
> [07/10] gpio: max7360: Add MAX7360 gpio support
>         commit: b1a7433d857edb14b993161af9ed1ee98d4c9cee
> [08/10] input: keyboard: Add support for MAX7360 keypad
>         commit: fa6a23f1c59c67de9160b4acc5a8651ad2106fa8
> [09/10] input: misc: Add support for MAX7360 rotary
>         commit: 229c15e9a69cb3d6a303a9e20b10fb991b66895d
> [10/10] MAINTAINERS: Add entry on MAX7360 driver
>         commit: 32d4cedd24ed346edbe063323ed495d685e033df

Send for build testing.  If all is well, I'll submit a PR shortly.

Note to self: ib-mfd-gpio-input-pinctrl-pwm-6.18

-- 
Lee Jones [李琼斯]
[GIT PULL] Immutable branch between MFD, GPIO, Input, Pinctrl and PWM due for the v6.18 merge window
Posted by Lee Jones 2 weeks, 2 days ago
Enjoy!

The following changes since commit 8f5ae30d69d7543eee0d70083daf4de8fe15d585:

  Linux 6.17-rc1 (2025-08-10 19:41:16 +0300)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd.git ib-mfd-gpio-input-pinctrl-pwm-v6.18

for you to fetch changes up to 32d4cedd24ed346edbe063323ed495d685e033df:

  MAINTAINERS: Add entry on MAX7360 driver (2025-09-16 15:24:48 +0100)

----------------------------------------------------------------
Immutable branch between MFD, GPIO, Input, Pinctrl and PWM due for the v6.18 merge window

----------------------------------------------------------------
Kamel Bouhara (2):
      mfd: Add max7360 support
      pwm: max7360: Add MAX7360 PWM support

Mathieu Dubois-Briand (8):
      dt-bindings: mfd: gpio: Add MAX7360
      pinctrl: Add MAX7360 pinctrl driver
      gpio: regmap: Allow to allocate regmap-irq device
      gpio: regmap: Allow to provide init_valid_mask callback
      gpio: max7360: Add MAX7360 gpio support
      input: keyboard: Add support for MAX7360 keypad
      input: misc: Add support for MAX7360 rotary
      MAINTAINERS: Add entry on MAX7360 driver

 .../bindings/gpio/maxim,max7360-gpio.yaml          |  83 ++++++
 .../devicetree/bindings/mfd/maxim,max7360.yaml     | 191 +++++++++++++
 MAINTAINERS                                        |  13 +
 drivers/gpio/Kconfig                               |  12 +
 drivers/gpio/Makefile                              |   1 +
 drivers/gpio/gpio-max7360.c                        | 257 +++++++++++++++++
 drivers/gpio/gpio-regmap.c                         |  30 +-
 drivers/input/keyboard/Kconfig                     |  12 +
 drivers/input/keyboard/Makefile                    |   1 +
 drivers/input/keyboard/max7360-keypad.c            | 308 +++++++++++++++++++++
 drivers/input/misc/Kconfig                         |  10 +
 drivers/input/misc/Makefile                        |   1 +
 drivers/input/misc/max7360-rotary.c                | 192 +++++++++++++
 drivers/mfd/Kconfig                                |  14 +
 drivers/mfd/Makefile                               |   1 +
 drivers/mfd/max7360.c                              | 171 ++++++++++++
 drivers/pinctrl/Kconfig                            |  11 +
 drivers/pinctrl/Makefile                           |   1 +
 drivers/pinctrl/pinctrl-max7360.c                  | 215 ++++++++++++++
 drivers/pwm/Kconfig                                |  10 +
 drivers/pwm/Makefile                               |   1 +
 drivers/pwm/pwm-max7360.c                          | 209 ++++++++++++++
 include/linux/gpio/regmap.h                        |  18 ++
 include/linux/mfd/max7360.h                        | 109 ++++++++
 24 files changed, 1869 insertions(+), 2 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/gpio/maxim,max7360-gpio.yaml
 create mode 100644 Documentation/devicetree/bindings/mfd/maxim,max7360.yaml
 create mode 100644 drivers/gpio/gpio-max7360.c
 create mode 100644 drivers/input/keyboard/max7360-keypad.c
 create mode 100644 drivers/input/misc/max7360-rotary.c
 create mode 100644 drivers/mfd/max7360.c
 create mode 100644 drivers/pinctrl/pinctrl-max7360.c
 create mode 100644 drivers/pwm/pwm-max7360.c
 create mode 100644 include/linux/mfd/max7360.h

-- 
Lee Jones [李琼斯]