MAINTAINERS | 1 + drivers/mfd/macsmc.c | 1 + drivers/power/supply/Kconfig | 11 + drivers/power/supply/Makefile | 1 + drivers/power/supply/macsmc-power.c | 852 ++++++++++++++++++++++++++++++++++++ 5 files changed, 866 insertions(+)
This series adds a power supply driver for the Apple SMC found on
Apple Silicon devices. This allows the kernel to report AC status,
battery charging status, and power metrics, and modify the charging
behaviour.
The first patch adds the driver itself, and the second patch wires it
up to the MFD core.
The driver is based on an original out-of-tree implementation by
Hector Martin. It has been refactored by myself for upstream inclusion,
including support for newer SMC firmwares, devices without batteries,
dynamic property detection and improved state management, among other
things.
This series is based ontop of the current linux-next at time of writing,
the exact commit hash is listed below.
Tested on: Apple M3 (MacBook Air, J613)
Signed-off-by: Michael Reeves <michael.reeves077@gmail.com>
---
Changes in v6:
- Add FS header include for emergency_sync()
- Link to v5: https://lore.kernel.org/r/20260126-b4-macsmc-power-v5-0-302462673b18@gmail.com
Changes in v5:
- Readd cover subject that mistakenly got dropped, apologies.
- Link to v4: https://lore.kernel.org/r/20260126-b4-macsmc-power-v4-0-aa2a682ca650@gmail.com
Changes in v4:
- Restore Hector Martin as primary author for the series.
- Restore downstream Co-developed-by and Signed-off-by tags.
- Add Reviewed-by: Sven Peter <sven@kernel.org>.
- Simplify MFD patch authorship and remove redundant tags.
- Fix probe return value being overwritten by devm_work_autocancel.
- Return -ENODEV in probe if neither battery nor AC adapter are found.
- Add bounds check for nprops against MACSMC_MAX_BATT_PROPS.
- Refactor macsmc_battery_set_charge_behaviour to remove unnecessary resets.
- Improve critical_work shutdown flags and remove return.
- Add comments explaining SMC key firmware history and flag meanings.
- Clarify event ID descriptions and restore BSFC flag comments.
- Remove redundant dev_dbg logs for missing battery or AC.
- Link to v3: https://lore.kernel.org/r/20260115-b4-macsmc-power-v3-0-c236e09874be@gmail.com
Changes in v3:
- Rebase on top of latest linux-next
- Drop charge control threshold properties.
- Switch to devm_work_autocancel() for critical work.
- Add platform ID table and remove MODULE_ALIAS.
- Simplify property array management in struct macsmc_power.
- Improve probe error handling and device pointer usage.
- Minor style and indentation fixes.
- Link to v2: https://lore.kernel.org/r/20260109-b4-macsmc-power-v2-0-93818f1e7d62@gmail.com
Changes in v2:
- Added Reviewed-by: Neal Gompa <neal@gompa.dev> to all patches.
- Fixed Makefile alignment by using tabs for the macsmc-power entry.
- Upgraded physical battery exhaustion log level to EMERG.
- Downgraded software-triggered orderly poweroff log level to CRIT.
- Added check for CHIS key to skip AC registration on desktop models.
- Link to v1: https://lore.kernel.org/r/20260105-b4-macsmc-power-v1-0-62954c42a555@gmail.com
---
Hector Martin (2):
power: supply: Add macsmc-power driver for Apple Silicon
mfd: macsmc: Wire up Apple SMC power driver
MAINTAINERS | 1 +
drivers/mfd/macsmc.c | 1 +
drivers/power/supply/Kconfig | 11 +
drivers/power/supply/Makefile | 1 +
drivers/power/supply/macsmc-power.c | 852 ++++++++++++++++++++++++++++++++++++
5 files changed, 866 insertions(+)
---
base-commit: ca3a02fda4da8e2c1cb6baee5d72352e9e2cfaea
change-id: 20260125-b4-macsmc-power-bb30389e05f1
Best regards,
--
Michael Reeves <michael.reeves077@gmail.com>
Hi, On Mon, Jan 26, 2026 at 10:16:55AM +1100, Michael Reeves via B4 Relay wrote: > This series adds a power supply driver for the Apple SMC found on > Apple Silicon devices. This allows the kernel to report AC status, > battery charging status, and power metrics, and modify the charging > behaviour. > > The first patch adds the driver itself, and the second patch wires it > up to the MFD core. > > The driver is based on an original out-of-tree implementation by > Hector Martin. It has been refactored by myself for upstream inclusion, > including support for newer SMC firmwares, devices without batteries, > dynamic property detection and improved state management, among other > things. > > This series is based ontop of the current linux-next at time of writing, > the exact commit hash is listed below. > > Tested on: Apple M3 (MacBook Air, J613) > > Signed-off-by: Michael Reeves <michael.reeves077@gmail.com> > --- > Changes in v6: > - Add FS header include for emergency_sync() > - Link to v5: https://lore.kernel.org/r/20260126-b4-macsmc-power-v5-0-302462673b18@gmail.com This fails to build as module, since emergency_sync() is not exported: ERROR: modpost: "emergency_sync" [drivers/power/supply/macsmc-power.ko] undefined! make[2]: *** [scripts/Makefile.modpost:147: Module.symvers] Error 1 Greetings, -- Sebastian > Changes in v5: > - Readd cover subject that mistakenly got dropped, apologies. > - Link to v4: https://lore.kernel.org/r/20260126-b4-macsmc-power-v4-0-aa2a682ca650@gmail.com > > Changes in v4: > - Restore Hector Martin as primary author for the series. > - Restore downstream Co-developed-by and Signed-off-by tags. > - Add Reviewed-by: Sven Peter <sven@kernel.org>. > - Simplify MFD patch authorship and remove redundant tags. > - Fix probe return value being overwritten by devm_work_autocancel. > - Return -ENODEV in probe if neither battery nor AC adapter are found. > - Add bounds check for nprops against MACSMC_MAX_BATT_PROPS. > - Refactor macsmc_battery_set_charge_behaviour to remove unnecessary resets. > - Improve critical_work shutdown flags and remove return. > - Add comments explaining SMC key firmware history and flag meanings. > - Clarify event ID descriptions and restore BSFC flag comments. > - Remove redundant dev_dbg logs for missing battery or AC. > - Link to v3: https://lore.kernel.org/r/20260115-b4-macsmc-power-v3-0-c236e09874be@gmail.com > > Changes in v3: > - Rebase on top of latest linux-next > - Drop charge control threshold properties. > - Switch to devm_work_autocancel() for critical work. > - Add platform ID table and remove MODULE_ALIAS. > - Simplify property array management in struct macsmc_power. > - Improve probe error handling and device pointer usage. > - Minor style and indentation fixes. > - Link to v2: https://lore.kernel.org/r/20260109-b4-macsmc-power-v2-0-93818f1e7d62@gmail.com > > Changes in v2: > - Added Reviewed-by: Neal Gompa <neal@gompa.dev> to all patches. > - Fixed Makefile alignment by using tabs for the macsmc-power entry. > - Upgraded physical battery exhaustion log level to EMERG. > - Downgraded software-triggered orderly poweroff log level to CRIT. > - Added check for CHIS key to skip AC registration on desktop models. > - Link to v1: https://lore.kernel.org/r/20260105-b4-macsmc-power-v1-0-62954c42a555@gmail.com > > --- > Hector Martin (2): > power: supply: Add macsmc-power driver for Apple Silicon > mfd: macsmc: Wire up Apple SMC power driver > > MAINTAINERS | 1 + > drivers/mfd/macsmc.c | 1 + > drivers/power/supply/Kconfig | 11 + > drivers/power/supply/Makefile | 1 + > drivers/power/supply/macsmc-power.c | 852 ++++++++++++++++++++++++++++++++++++ > 5 files changed, 866 insertions(+) > --- > base-commit: ca3a02fda4da8e2c1cb6baee5d72352e9e2cfaea > change-id: 20260125-b4-macsmc-power-bb30389e05f1 > > Best regards, > -- > Michael Reeves <michael.reeves077@gmail.com> > >
Hi, On Sat, Jan 31, 2026 at 6:54 AM Sebastian Reichel <sebastian.reichel@collabora.com> wrote: > > Hi, > > On Mon, Jan 26, 2026 at 10:16:55AM +1100, Michael Reeves via B4 Relay wrote: > > This series adds a power supply driver for the Apple SMC found on > > Apple Silicon devices. This allows the kernel to report AC status, > > battery charging status, and power metrics, and modify the charging > > behaviour. > > > > The first patch adds the driver itself, and the second patch wires it > > up to the MFD core. > > > > The driver is based on an original out-of-tree implementation by > > Hector Martin. It has been refactored by myself for upstream inclusion, > > including support for newer SMC firmwares, devices without batteries, > > dynamic property detection and improved state management, among other > > things. > > > > This series is based ontop of the current linux-next at time of writing, > > the exact commit hash is listed below. > > > > Tested on: Apple M3 (MacBook Air, J613) > > > > Signed-off-by: Michael Reeves <michael.reeves077@gmail.com> > > --- > > Changes in v6: > > - Add FS header include for emergency_sync() > > - Link to v5: https://lore.kernel.org/r/20260126-b4-macsmc-power-v5-0-302462673b18@gmail.com > > This fails to build as module, since emergency_sync() is not exported: > > ERROR: modpost: "emergency_sync" [drivers/power/supply/macsmc-power.ko] undefined! > make[2]: *** [scripts/Makefile.modpost:147: Module.symvers] Error 1 Thank you for finding this! Sorry, I didn't test building as a module, only as built-in, I will do this going forward in future. After some research I've found hw_protection_trigger which is exported and will emergency sync and power off (just like this) after a customisable timeout, which seems suitable for this usecase. I'll test it now and submit v7 shortly. > > Greetings, > > -- Sebastian > > > Changes in v5: > > - Readd cover subject that mistakenly got dropped, apologies. > > - Link to v4: https://lore.kernel.org/r/20260126-b4-macsmc-power-v4-0-aa2a682ca650@gmail.com > > > > Changes in v4: > > - Restore Hector Martin as primary author for the series. > > - Restore downstream Co-developed-by and Signed-off-by tags. > > - Add Reviewed-by: Sven Peter <sven@kernel.org>. > > - Simplify MFD patch authorship and remove redundant tags. > > - Fix probe return value being overwritten by devm_work_autocancel. > > - Return -ENODEV in probe if neither battery nor AC adapter are found. > > - Add bounds check for nprops against MACSMC_MAX_BATT_PROPS. > > - Refactor macsmc_battery_set_charge_behaviour to remove unnecessary resets. > > - Improve critical_work shutdown flags and remove return. > > - Add comments explaining SMC key firmware history and flag meanings. > > - Clarify event ID descriptions and restore BSFC flag comments. > > - Remove redundant dev_dbg logs for missing battery or AC. > > - Link to v3: https://lore.kernel.org/r/20260115-b4-macsmc-power-v3-0-c236e09874be@gmail.com > > > > Changes in v3: > > - Rebase on top of latest linux-next > > - Drop charge control threshold properties. > > - Switch to devm_work_autocancel() for critical work. > > - Add platform ID table and remove MODULE_ALIAS. > > - Simplify property array management in struct macsmc_power. > > - Improve probe error handling and device pointer usage. > > - Minor style and indentation fixes. > > - Link to v2: https://lore.kernel.org/r/20260109-b4-macsmc-power-v2-0-93818f1e7d62@gmail.com > > > > Changes in v2: > > - Added Reviewed-by: Neal Gompa <neal@gompa.dev> to all patches. > > - Fixed Makefile alignment by using tabs for the macsmc-power entry. > > - Upgraded physical battery exhaustion log level to EMERG. > > - Downgraded software-triggered orderly poweroff log level to CRIT. > > - Added check for CHIS key to skip AC registration on desktop models. > > - Link to v1: https://lore.kernel.org/r/20260105-b4-macsmc-power-v1-0-62954c42a555@gmail.com > > > > --- > > Hector Martin (2): > > power: supply: Add macsmc-power driver for Apple Silicon > > mfd: macsmc: Wire up Apple SMC power driver > > > > MAINTAINERS | 1 + > > drivers/mfd/macsmc.c | 1 + > > drivers/power/supply/Kconfig | 11 + > > drivers/power/supply/Makefile | 1 + > > drivers/power/supply/macsmc-power.c | 852 ++++++++++++++++++++++++++++++++++++ > > 5 files changed, 866 insertions(+) > > --- > > base-commit: ca3a02fda4da8e2c1cb6baee5d72352e9e2cfaea > > change-id: 20260125-b4-macsmc-power-bb30389e05f1 > > > > Best regards, > > -- > > Michael Reeves <michael.reeves077@gmail.com> > > > > Thanks again, Michael
© 2016 - 2026 Red Hat, Inc.