Message ID | 20250226-max77759-mfd-v2-0-a65ebe2bc0a9@linaro.org |
---|---|
Headers | show |
Series | Maxim Integrated MAX77759 PMIC MFD-based drivers | expand |
On Thu, 2025-02-27 at 07:04 -0600, Rob Herring wrote: > On Wed, Feb 26, 2025 at 05:51:22PM +0000, André Draszik wrote: > > The Maxim MAX77759 is a companion PMIC for USB Type-C applications and > > includes Battery Charger, Fuel Gauge, temperature sensors, USB Type-C > > Port Controller (TCPC), NVMEM, and a GPIO expander. > > > > This describes the top-level device. > > > > Signed-off-by: André Draszik <andre.draszik@linaro.org> > > > > --- > > v2: > > * rename expected nvmem subdev nodename to 'nvmem-0' > > I'd have preferred just 'nvmem', but that matches nvmem-consumer.yaml > > and fails validation. > > > > Note: MAINTAINERS doesn't need updating, the binding update for the > > first leaf device (gpio) adds a wildcard matching all max77759 bindings > > --- > > .../devicetree/bindings/mfd/maxim,max77759.yaml | 104 +++++++++++++++++++++ > > 1 file changed, 104 insertions(+) > > > > diff --git a/Documentation/devicetree/bindings/mfd/maxim,max77759.yaml b/Documentation/devicetree/bindings/mfd/maxim,max77759.yaml > > new file mode 100644 > > index 0000000000000000000000000000000000000000..87e3737896a289998a18b67932dbccacfb8e3150 > > --- /dev/null > > +++ b/Documentation/devicetree/bindings/mfd/maxim,max77759.yaml > > @@ -0,0 +1,104 @@ > > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > > +%YAML 1.2 > > +--- > > +$id: http://devicetree.org/schemas/mfd/maxim,max77759.yaml# > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > + > > +title: Maxim Integrated MAX77759 PMIC for USB Type-C applications > > + > > +maintainers: > > + - André Draszik <andre.draszik@linaro.org> > > + > > +description: | > > + This is a part of device tree bindings for the MAX77759 companion Power > > + Management IC for USB Type-C applications. > > + > > + The MAX77759 includes Battery Charger, Fuel Gauge, temperature sensors, USB > > + Type-C Port Controller (TCPC), NVMEM, and a GPIO expander. > > + > > +properties: > > + compatible: > > + const: maxim,max77759 > > + > > + interrupts: > > + maxItems: 1 > > + > > + interrupt-controller: true > > + > > + "#interrupt-cells": > > + const: 2 > > + > > + gpio-controller: true > > + > > + "#gpio-cells": > > + const: 2 > > Why do you have GPIO properties here and in the child node? Either would > be valid, but both probably not. Putting them here is actually > preferred. That's an oversight, I meant to put them into the child only, not here, since the child is the one providing the gpio functionality. What's the reason to have it preferred inside this parent node? At least some bindings do specify it in the child node, e.g.: delta,tn48m-gpio.yaml kontron,sl28cpld-gpio.yaml xylon,logicvc-gpio.yaml Cheers, Andre'
On Fri, 2025-02-28 at 07:01 -0600, Rob Herring wrote: > On Thu, Feb 27, 2025 at 7:14 AM André Draszik <andre.draszik@linaro.org> wrote: > > > > On Thu, 2025-02-27 at 07:04 -0600, Rob Herring wrote: > > > > > > > > > Why do you have GPIO properties here and in the child node? Either would > > > be valid, but both probably not. Putting them here is actually > > > preferred. > > > > That's an oversight, I meant to put them into the child only, not here, > > since the child is the one providing the gpio functionality. > > > > What's the reason to have it preferred inside this parent node? > > It really depends whether the GPIO block is a separate sub-block which > is going to get reused or has its own resources or not. It's the same > thing in system controllers which are often just a collection of > leftover control bits. > > We just don't want child nodes created just for the ease of > instantiating drivers in Linux. While it's nice if drivers and nodes > are 1 to 1, but that's specific to an OS. > > You already need other child nodes here, so I don't care too much in this case. Thanks Rob for taking the time and for the explanation! I'll keep that in mind for the future. Cheers, Andre'
Hi, This series improves support for the Maxim Integrated MAX77759 companion PMIC for USB Type-C applications using the MFD framework. This series must be applied in-order, due to interdependencies of some of the patches: * to avoid use of undocumented compatibles by the newly added drivers, the bindings are added first in this series * patch 1 ("dt-bindings: gpio: add max77759 binding") also creates a new MAINTAINERS entry, including a wildcard match for the other bindings in this series * patch 3 ("dt-bindings: mfd: add max77759 binding") references the bindings added in patch 1 and 2 and can not work if those aren't available * patch 4 ("mfd: max77759: add Maxim MAX77759 core mfd driver") adds the core MFD driver, which also exposes an API to its leaf drivers and is used by patches 5 and 6 * patches 5 and 6 won't compile without patch 4 The MAX77759 PMIC includes Battery Charger, Fuel Gauge, temperature sensors, USB Type-C Port Controller (TCPC), NVMEM, and a GPIO expander. This PMIC is used on the Google Pixel 6 and 6 Pro (oriole / raven). This series adds support for the top-level MFD device, the gpio, and nvmem cells. Other components are excluded for the following reasons: While in the same package, Fuel Gauge and TCPC have separate and independent I2C addresses, register maps, interrupt lines, and aren't part of the top-level package interrupt hierarchy. Furthermore, a driver for the TCPC part exists already (in drivers/usb/typec/tcpm/tcpci_maxim_core.c). I'm leaving out temperature sensors and charger in this submission, because the former are not in use on Pixel 6 and I therefore can not test them, and the latter can be added later, once we look at the whole charging topic in more detail. To make maintainers' work easier, I am planning to send the relevant DTS and defconfig changes via a different series, unless everything is expected to go via Lee's MFD tree in one series? Cheers, Andre' Signed-off-by: André Draszik <andre.draszik@linaro.org> --- Changes in v2: - reorder bindings patches to avoid validation failures - add dependency information to cover letter (Krzysztof) - fix max77759_gpio_direction_from_control() in gpio driver - Link to v1: https://lore.kernel.org/r/20250224-max77759-mfd-v1-0-2bff36f9d055@linaro.org --- André Draszik (6): dt-bindings: gpio: add max77759 binding dt-bindings: nvmem: add max77759 binding dt-bindings: mfd: add max77759 binding mfd: max77759: add Maxim MAX77759 core mfd driver gpio: max77759: add Maxim MAX77759 gpio driver nvmem: max77759: add Maxim MAX77759 NVMEM driver .../bindings/gpio/maxim,max77759-gpio.yaml | 44 ++ .../devicetree/bindings/mfd/maxim,max77759.yaml | 104 +++ .../bindings/nvmem/maxim,max77759-nvmem.yaml | 32 + MAINTAINERS | 10 + drivers/gpio/Kconfig | 13 + drivers/gpio/Makefile | 1 + drivers/gpio/gpio-max77759.c | 528 +++++++++++++++ drivers/mfd/Kconfig | 20 + drivers/mfd/Makefile | 1 + drivers/mfd/max77759.c | 737 +++++++++++++++++++++ drivers/nvmem/Kconfig | 12 + drivers/nvmem/Makefile | 2 + drivers/nvmem/max77759-nvmem.c | 156 +++++ include/linux/mfd/max77759.h | 98 +++ 14 files changed, 1758 insertions(+) --- base-commit: 0226d0ce98a477937ed295fb7df4cc30b46fc304 change-id: 20250224-max77759-mfd-aaa7a3121b62 Best regards,