Skip to contentSkip to conversation

Add Richtek RT9756 Smart-Cap divider charger

PATCH Applied [email protected] 2 participants 5 messages Oct 31, 2025 – Nov 3, 2025

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

v4 cover Add Richtek RT9756 Smart-Cap divider charger

From: ChiYuan Huang <[email protected]>

This patch series adds support for RT9756 charger.

V4
- Fix sparse error that kernel test robot reported

V3
- Instead using customized attribute to report battery voltage and current, create a battery psy to report it

RESEND V2
- Add 'Reviewed-by' tag in dt-binding patch

V2
- Add reference to 'power-supply.yaml'
- Remove 'wakeup-source' from required property list
- Use 'unevaluatedProperties' to replace 'additionalProperties'

ChiYuan Huang (3):
dt-bindings: power: supply: Add Richtek RT9756 smart cap divider
charger
power: supply: rt9756: Add Richtek RT9756 smart cap divider charger
Documentation: power: rt9756: Document exported sysfs entries

 .../ABI/testing/sysfs-class-power-rt9756      |  30 +
 .../bindings/power/supply/richtek,rt9756.yaml |  72 ++
 drivers/power/supply/Kconfig                  |  15 +
 drivers/power/supply/Makefile                 |   1 +
 drivers/power/supply/rt9756.c                 | 955 ++++++++++++++++++
 5 files changed, 1073 insertions(+)
 create mode 100644 Documentation/ABI/testing/sysfs-class-power-rt9756
 create mode 100644 Documentation/devicetree/bindings/power/supply/richtek,rt9756.yaml
 create mode 100644 drivers/power/supply/rt9756.c
Signature · 1 line
2.34.1
#1 lore raw

PATCH v4 1/3 dt-bindings: power: supply: Add Richtek RT9756 smart cap divider charger

From: ChiYuan Huang <[email protected]>

Add the document for Richtek RT9756 smart cap divider charger.

---
V2
- Add reference to 'power-supply.yaml'
- Remove 'wakeup-source' from required property list
- Use 'unevaluatedProperties' to replace 'additionalProperties'

---
 .../bindings/power/supply/richtek,rt9756.yaml | 72 +++++++++++++++++++
 1 file changed, 72 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/power/supply/richtek,rt9756.yaml
Documentation/devicetree/bindings/power/supply/richtek,rt9756.yaml new file +72 -0
new file mode 100644
index 000000000000..a88bf6cd1927
@@ -0,0 +1,72 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/power/supply/richtek,rt9756.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Richtek RT9756 Smart Cap Divider Charger
+
+maintainers:
+  - ChiYuan Huang <[email protected]>
+
+description: |
+  The RT9756/RT9757 is a high efficiency and high charge current charger.
+
+  The efficiency is up to 98.2% when VBAT = 4V, IBAT = 2A in DIV2 mode and 99.1%
+  when VBAT=4V, IBAT=1A in bypass mode. The maximum charger current is up to 8A
+  in DIV2 mode and 5A in bypass mode. The device integrates smart cap divider
+  topology, direct charging mode, external over-voltage protection control, an
+  input reverse blocking NFET and 2-way regulation, a dual phase charge pump
+  core, 8-Channel high speed ADCs and USB BC 1.2 detection.
+
+  RT9770 is almost the same with RT9756/57, only BC 1.2 detection function is
+  removed to shrink the die size.
+
+allOf:
+  - $ref: power-supply.yaml#
+
+properties:
+  compatible:
+    oneOf:
+      - enum:
+          - richtek,rt9756
+          - richtek,rt9770
+      - items:
+          - enum:
+              - richtek,rt9757
+          - const: richtek,rt9756
+
+  reg:
+    maxItems: 1
+
+  wakeup-source: true
+
+  interrupts:
+    maxItems: 1
+
+  shunt-resistor-micro-ohms:
+    description: Battery current sense resistor mounted.
+    default: 2000
+
+required:
+  - compatible
+  - reg
+  - interrupts
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+    i2c {
+      #address-cells = <1>;
+      #size-cells = <0>;
+
+      charger@6f {
+        compatible = "richtek,rt9756";
+        reg = <0x6f>;
+        wakeup-source;
+        interrupts-extended = <&gpio_intc 32 IRQ_TYPE_EDGE_FALLING>;
+        shunt-resistor-micro-ohms = <5000>;
+      };
+    };
Signature · 1 line
2.34.1
#2 lore raw

PATCH v4 2/3 power: supply: rt9756: Add Richtek RT9756 smart cap divider charger

In reply to [email protected]

From: ChiYuan Huang <[email protected]>

Add support for RT9756 smart cap divider charger.

The RT9759 is a high efficiency and high charge current charger. The maximum charge current is up to 8A. It integrates a dual-phase charge pump core with ADC monitoring.

---
V4
- Fix sparse error that kernel test robot reported
https://lore.kernel.org/lkml/[email protected]/
https://lore.kernel.org/lkml/[email protected]/

V3
- Remove customized attribute for battery voltage and current
- Add a battery power supply to report battery voltage andr current

---
 drivers/power/supply/Kconfig  |  15 +
 drivers/power/supply/Makefile |   1 +
 drivers/power/supply/rt9756.c | 955 ++++++++++++++++++++++++++++++++++
 3 files changed, 971 insertions(+)
 create mode 100644 drivers/power/supply/rt9756.c
drivers/power/supply/Kconfig +15 -0
index dca4be23ee70..56e522483531 100644
@@ -931,6 +931,21 @@ config CHARGER_RT9471
 	  This driver can also be built as a module. If so, the module will be
 	  called rt9471.
 
+config CHARGER_RT9756
+	tristate "Richtek RT9756 smart cap divider charger driver"
+	depends on I2C
+	select REGMAP_I2C
+	select LINEAR_RANGES
+	help
+	  This adds support for Richtek RT9756 smart cap divider charger driver.
+	  It's a high efficiency and high charge current charger. the device
+	  integrates smart cap divider topology with 9-channel high speed
+	  ADCs that can provide input and output voltage, current and
+	  temperature monitoring.
+
+	  This driver can also be built as a module. If so, the module will be
+	  called rt9756.
+
 config CHARGER_CROS_USBPD
 	tristate "ChromeOS EC based USBPD charger"
 	depends on CROS_USBPD_NOTIFY
drivers/power/supply/Makefile +1 -0
index 99a820d38197..89ba7f73a1ab 100644
@@ -64,6 +64,7 @@ obj-$(CONFIG_CHARGER_RT5033)	+= rt5033_charger.o
 obj-$(CONFIG_CHARGER_RT9455)	+= rt9455_charger.o
 obj-$(CONFIG_CHARGER_RT9467)	+= rt9467-charger.o
 obj-$(CONFIG_CHARGER_RT9471)	+= rt9471.o
+obj-$(CONFIG_CHARGER_RT9756)	+= rt9756.o
 obj-$(CONFIG_BATTERY_TWL4030_MADC)	+= twl4030_madc_battery.o
 obj-$(CONFIG_CHARGER_88PM860X)	+= 88pm860x_charger.o
 obj-$(CONFIG_BATTERY_RX51)	+= rx51_battery.o
drivers/power/supply/rt9756.c new file +955 -0

955 lines not on this page · raw message

Signature · 1 line
2.34.1
#3 lore raw

PATCH v4 3/3 Documentation: power: rt9756: Document exported sysfs entries

In reply to [email protected]

From: ChiYuan Huang <[email protected]>

Document the settings exported by rt9756 charger driver through sysfs entries:

- watchdog_timer
- operation_mode

---
V3
- Remove customized description for battery voltage and current

---
 .../ABI/testing/sysfs-class-power-rt9756      | 30 +++++++++++++++++++
 1 file changed, 30 insertions(+)
 create mode 100644 Documentation/ABI/testing/sysfs-class-power-rt9756
Documentation/ABI/testing/sysfs-class-power-rt9756 new file +30 -0
new file mode 100644
index 000000000000..c4d6c2b4715d
@@ -0,0 +1,30 @@
+What:		/sys/class/power_supply/rt9756-*/watchdog_timer
+Date:		Dec 2025
+KernelVersion:	6.19
+Contact:	ChiYuan Huang <[email protected]>
+Description:
+		This entry shows and sets the watchdog timer when rt9756 charger
+		operates in charging mode. When the timer expires, the device
+		will disable the charging. To prevent the timer expires, any
+		host communication can make the timer restarted.
+
+		Access: Read, Write
+
+		Valid values:
+		- 500, 1000, 5000, 30000, 40000, 80000, 128000 or 255000 (milliseconds),
+		- 0: disabled
+
+What:		/sys/class/power_supply/rt9756-*/operation_mode
+Date:		Dec 2025
+KernelVersion:	6.19
+Contact:	ChiYuan Huang <[email protected]>
+Description:
+		This entry shows and set the operation mode when rt9756 charger
+		operates in charging phase. If 'bypass' mode is used, internal
+		path will connect vbus directly to vbat. Else, default 'div2'
+		mode for the switch-cap charging.
+
+		Access: Read, Write
+
+		Valid values:
+		- 'bypass' or 'div2'
Signature · 1 line
2.34.1
#4 lore raw
In reply to [email protected]
Quoted 8 lines · On Fri, 31 Oct 2025 15:19:32 +0800, [email protected] wrote:

From: ChiYuan Huang <[email protected]>

This patch series adds support for RT9756 charger.

V4
- Fix sparse error that kernel test robot reported

[...]

Applied, thanks!

[1/3] dt-bindings: power: supply: Add Richtek RT9756 smart cap divider charger

      commit: 6964258c617759fb4d6be97a434f44a853a7be52
[2/3] power: supply: rt9756: Add Richtek RT9756 smart cap divider charger
      commit: b6f0796d4398beba49c548e07a3d13656acb8fb1
[3/3] Documentation: power: rt9756: Document exported sysfs entries
      commit: 1cda37798599692cb553fdb4e93faa294e1a151b

Best regards,

Signature · 1 line
Sebastian Reichel <[email protected]>