[PATCH v5 0/5] Introduce MAX77759 charger driver
From: Amit Sunil Dhamne via B4 Relay <devnull+amitsd.google.com@kernel.org>
Date: 2026-02-03 22:51:16
Also in:
b4-sent, linux-devicetree, linux-pm, linux-samsung-soc, linux-usb, lkml
MAX77759 PMIC is used in Pixel 6 and 6 Pro (Oriole/Raven) boards. One of the functions of the MAX77759 PMIC is a battery charger. This patchset introduces a driver for this function. One of the unique features of this charger driver is that it works with a USB input where the Type-C controller is TCPCI based. Changes to the board files will follow soon once this patchset is reviewed. For reference to the MAX77759 MFD based patchset (present in upstream): https://lore.kernel.org/all/20250509-max77759-mfd-v10-0-962ac15ee3ef@linaro.org/ (local) Dependency list: Patch 5 depends on Patch 4 which depends on Patch 3. Signed-off-by: Amit Sunil Dhamne <amitsd@google.com> --- Changes in v5: - Use linear_range library instead of reinventing it. (André Draszik) - This requires a selector_max value so modified mfd/max77759.h to include it for CHGCC and CHG_ILIM. - Removed "reviewed-by" for Patch 3 (mfd) due to above - Use asnyc probe type. (André Draszik) - Retry mechanism for psy_work. (André Draszik) - Minor nits (André Draszik): - Use named initializers for instantiating structs. - Use static qualifier for `psy_name` variable. - Refactor if-else ladder to remove else handling if return in prior "if" loop. - Remove redundant `unlikely`. - Link to v4: https://lore.kernel.org/r/20260121-max77759-charger-v4-0-694234c8ded1@google.com (local) Changes in v4: - Removed a stray tabspace in mfd/max77759.h. (André Draszik) - Fixed the following issues in Patch 4/5 (André Draszik): - Re-order Kconfig entry - Refactored to not use global variable - Use of clamp() to clamp values instead of duplicating logic - Return IRQ_NONE for unhandled irqs or error conditions - Remove debug messages in irq handler - Refactor code to use dev_err_probe in *_init_irqhandler() - Remove unneeded irq_flags - Check return values of regmap ops - Other nits like newlines, not using greedy init, using print stmnts - Link to v3: https://lore.kernel.org/r/20251227-max77759-charger-v3-0-54e664f5ca92@google.com (local) Changes in v3: - Had incorrectly folded the charger sub-device with the pmic parent. Corrected it. (Krzysztof Kozlowski) - Link to v2: https://lore.kernel.org/r/20251218-max77759-charger-v2-0-2b259980a686@google.com (local) Changes in v2: - Fold charger binding in maxim,max77759-charger.yaml to its parent node. (Krzysztof Kozlowski) - Renamed regulator supplier & consumer. (Krzysztof Kozlowski & Heikki Krogerus) - Removed explicit setting of irq trigger types in max77759 driver. (André Draszik & Krzysztof Kozlowski) - Complete bit definitions for IRQ registers. (André Draszik) - Consolidate all bit definitions for charger IP in mfd/max77759.h. (André Draszik) - Modify the handling of charger IRQs such that regmap IRQ chip handles masking, de-mux and acking of interrupts. (André Draszik) - Remove unused macro definitions relating to Charger modes in tcpci maxim driver (André Draszik) - Add dependency on Regulator class in Kconfig definition for max77759 chg. (Kernel Test Robot) - Link to v1: https://lore.kernel.org/r/20251123-max77759-charger-v1-0-6b2e4b8f7f54@google.com (local) --- Amit Sunil Dhamne (5): dt-bindings: mfd: maxim,max77759: reference power-supply schema and add regulator property dt-bindings: usb: maxim,max33359: Add supply property for vbus mfd: max77759: add register bitmasks and modify irq configs for charger power: supply: max77759: add charger driver usb: typec: tcpm/tcpci_maxim: deprecate WAR for setting charger mode .../devicetree/bindings/mfd/maxim,max77759.yaml | 16 +- .../devicetree/bindings/usb/maxim,max33359.yaml | 4 + MAINTAINERS | 6 + drivers/mfd/max77759.c | 91 ++- drivers/power/supply/Kconfig | 11 + drivers/power/supply/Makefile | 1 + drivers/power/supply/max77759_charger.c | 777 +++++++++++++++++++++ drivers/usb/typec/tcpm/tcpci_maxim.h | 1 + drivers/usb/typec/tcpm/tcpci_maxim_core.c | 54 +- include/linux/mfd/max77759.h | 204 +++++- 10 files changed, 1106 insertions(+), 59 deletions(-) --- base-commit: 8dfce8991b95d8625d0a1d2896e42f93b9d7f68d change-id: 20251105-max77759-charger-852b626d661a Best regards, -- Amit Sunil Dhamne [off-list ref]