[PATCH v2 00/11] mfd: macsmc: add rtc, hwmon and hid subdevices

James Calligeros posted 11 patches 1 month, 1 week ago
.../bindings/hwmon/apple,smc-hwmon.yaml  | 132 ++++
.../bindings/mfd/apple,smc.yaml          |  45 ++
.../bindings/rtc/apple,smc-rtc.yaml      |  35 +
MAINTAINERS                              |   5 +
.../boot/dts/apple/hwmon-common.dtsi     |  37 ++
.../boot/dts/apple/hwmon-fan-dual.dtsi   |  24 +
arch/arm64/boot/dts/apple/hwmon-fan.dtsi |  19 +
.../boot/dts/apple/hwmon-laptop.dtsi     |  35 +
.../boot/dts/apple/hwmon-mac-mini.dtsi   |  17 +
.../arm64/boot/dts/apple/t6001-j375c.dts |   2 +
.../arm64/boot/dts/apple/t6002-j375d.dts |   2 +
.../arm64/boot/dts/apple/t600x-die0.dtsi |   6 +
.../boot/dts/apple/t600x-j314-j316.dtsi  |   4 +
.../arm64/boot/dts/apple/t600x-j375.dtsi |   2 +
arch/arm64/boot/dts/apple/t8103-j274.dts |   2 +
arch/arm64/boot/dts/apple/t8103-j293.dts |   3 +
arch/arm64/boot/dts/apple/t8103-j313.dts |   2 +
arch/arm64/boot/dts/apple/t8103-j456.dts |   2 +
arch/arm64/boot/dts/apple/t8103-j457.dts |   2 +
.../arm64/boot/dts/apple/t8103-jxxx.dtsi |   2 +
arch/arm64/boot/dts/apple/t8103.dtsi     |   6 +
arch/arm64/boot/dts/apple/t8112-j413.dts |   2 +
arch/arm64/boot/dts/apple/t8112-j473.dts |   2 +
arch/arm64/boot/dts/apple/t8112-j493.dts |   3 +
.../arm64/boot/dts/apple/t8112-jxxx.dtsi |   2 +
arch/arm64/boot/dts/apple/t8112.dtsi     |   6 +
drivers/hwmon/Kconfig                    |  12 +
drivers/hwmon/Makefile                   |   1 +
drivers/hwmon/macsmc_hwmon.c             | 848 +++++++++++++++++++++++++
drivers/input/misc/Kconfig               |  11 +
drivers/input/misc/Makefile              |   1 +
drivers/input/misc/macsmc-hid.c          | 209 ++++++
drivers/mfd/macsmc.c                     |   3 +
drivers/rtc/Kconfig                      |  11 +
drivers/rtc/Makefile                     |   1 +
drivers/rtc/rtc-macsmc.c                 | 141 ++++
36 files changed, 1637 insertions(+)
[PATCH v2 00/11] mfd: macsmc: add rtc, hwmon and hid subdevices
Posted by James Calligeros 1 month, 1 week ago
Hi all,

This series adds support for the remaining SMC subdevices. These are the
RTC, hwmon, and HID devices. They are being submitted together as the RTC
and hwmon drivers both require changes to the SMC DT schema.

The RTC driver is responsible for getting and setting the system clock,
and requires an NVMEM cell. This series replaces Sven's original RTC driver
submission [1].

The hwmon function is an interesting one. While each Apple Silicon device
exposes pretty similar sets of sensors, these all seem to be paired to
different SMC keys in the firmware interface. This is true even when the
sensors are on the SoC. For example, an M1 MacBook Pro will use different
keys to access the LITTLE core temperature sensors to an M1 Mac mini. This
necessitates describing which keys correspond to which sensors for each
device individually, and populating the hwmon structs at runtime. We do
this with a node in the device tree. This series includes only the keys
for sensors which we know to be common to all devices. The SMC is also
responsible for monitoring and controlling fan speeds on systems with fans,
which we expose via the hwmon driver.

The SMC also handles the hardware power button and lid switch. Power
button presses and lid opening/closing are emitted as HID events, so we
add a HID subdevice to handle them.

Note that this series is based on a branch with three additional commits
applied to add the parent SMC nodes to the relevant Devicetrees. This
was done to silence build errors. The series applies cleanly to 6.17-rc1.

Regards,

James

[1] https://lore.kernel.org/asahi/CAEg-Je84XxLWH7vznQmPRfjf6GxWOu75ZetwN7AdseAwfMLLrQ@mail.gmail.com/T/#t

Signed-off-by: James Calligeros <jcalligeros99@gmail.com>
---
Changes in v2:
- Added Rob's R-b tag to RTC DT binding
- Removed redundant nesting from hwmon DT binding
- Dedpulicated property definitions in hwmon DT schema
- Made label a required property for hwmon DT nodes
- Clarified semantics in hwmon DT schema definitions
- Split mfd tree changes into separate commits
- Fixed numerous style errors in hwmon driver
- Addressed Guenter's initial feedback on the hwmon driver
- Modified hwmon driver to reflect DT schema changes
- Added compatible property to hwmon node
- Link to v1: https://lore.kernel.org/r/20250819-macsmc-subdevs-v1-0-57df6c3e5f19@gmail.com

---
Hector Martin (2):
      rtc: Add new rtc-macsmc driver for Apple Silicon Macs
      input: macsmc-hid: New driver to handle the Apple Mac SMC buttons/lid

James Calligeros (7):
      dt-bindings: hwmon: Add Apple System Management Controller hwmon schema
      mfd: macsmc: Wire up Apple SMC RTC subdevice
      hwmon: Add Apple Silicon SMC hwmon driver
      mfd: macsmc: Wire up Apple SMC hwmon subdevice
      mfd: macsmc: Wire up Apple SMC HID subdevice
      arm64: dts: apple: Add common hwmon sensors and fans
      arm64: dts: apple: t8103, t600x, t8112: Add common hwmon nodes to devices

Sven Peter (2):
      dt-bindings: rtc: Add Apple SMC RTC
      arm64: dts: apple: t8103,t600x,t8112: Add SMC RTC node

 .../bindings/hwmon/apple,smc-hwmon.yaml  | 132 ++++
 .../bindings/mfd/apple,smc.yaml          |  45 ++
 .../bindings/rtc/apple,smc-rtc.yaml      |  35 +
 MAINTAINERS                              |   5 +
 .../boot/dts/apple/hwmon-common.dtsi     |  37 ++
 .../boot/dts/apple/hwmon-fan-dual.dtsi   |  24 +
 arch/arm64/boot/dts/apple/hwmon-fan.dtsi |  19 +
 .../boot/dts/apple/hwmon-laptop.dtsi     |  35 +
 .../boot/dts/apple/hwmon-mac-mini.dtsi   |  17 +
 .../arm64/boot/dts/apple/t6001-j375c.dts |   2 +
 .../arm64/boot/dts/apple/t6002-j375d.dts |   2 +
 .../arm64/boot/dts/apple/t600x-die0.dtsi |   6 +
 .../boot/dts/apple/t600x-j314-j316.dtsi  |   4 +
 .../arm64/boot/dts/apple/t600x-j375.dtsi |   2 +
 arch/arm64/boot/dts/apple/t8103-j274.dts |   2 +
 arch/arm64/boot/dts/apple/t8103-j293.dts |   3 +
 arch/arm64/boot/dts/apple/t8103-j313.dts |   2 +
 arch/arm64/boot/dts/apple/t8103-j456.dts |   2 +
 arch/arm64/boot/dts/apple/t8103-j457.dts |   2 +
 .../arm64/boot/dts/apple/t8103-jxxx.dtsi |   2 +
 arch/arm64/boot/dts/apple/t8103.dtsi     |   6 +
 arch/arm64/boot/dts/apple/t8112-j413.dts |   2 +
 arch/arm64/boot/dts/apple/t8112-j473.dts |   2 +
 arch/arm64/boot/dts/apple/t8112-j493.dts |   3 +
 .../arm64/boot/dts/apple/t8112-jxxx.dtsi |   2 +
 arch/arm64/boot/dts/apple/t8112.dtsi     |   6 +
 drivers/hwmon/Kconfig                    |  12 +
 drivers/hwmon/Makefile                   |   1 +
 drivers/hwmon/macsmc_hwmon.c             | 848 +++++++++++++++++++++++++
 drivers/input/misc/Kconfig               |  11 +
 drivers/input/misc/Makefile              |   1 +
 drivers/input/misc/macsmc-hid.c          | 209 ++++++
 drivers/mfd/macsmc.c                     |   3 +
 drivers/rtc/Kconfig                      |  11 +
 drivers/rtc/Makefile                     |   1 +
 drivers/rtc/rtc-macsmc.c                 | 141 ++++
 36 files changed, 1637 insertions(+)
---
base-commit: 876d6a70b24869f96ebc8672caf86cb4bae72927
change-id: 20250816-macsmc-subdevs-87032c017d0c

Best regards,
-- 
James Calligeros <jcalligeros99@gmail.com>
Re: [PATCH v2 00/11] mfd: macsmc: add rtc, hwmon and hid subdevices
Posted by Alexandre Belloni 1 month ago
Hello,

On 27/08/2025 21:22:34+1000, James Calligeros wrote:
> Hi all,
> 
> This series adds support for the remaining SMC subdevices. These are the
> RTC, hwmon, and HID devices. They are being submitted together as the RTC
> and hwmon drivers both require changes to the SMC DT schema.
> 

How do you expect this to be merged? From what I get, I could just take
1 and 3 as there doesn't seem to be any actual dependencies on any of
the other patches and the MFD change doesn't depend on the RTC changes.

> The RTC driver is responsible for getting and setting the system clock,
> and requires an NVMEM cell. This series replaces Sven's original RTC driver
> submission [1].
> 
> The hwmon function is an interesting one. While each Apple Silicon device
> exposes pretty similar sets of sensors, these all seem to be paired to
> different SMC keys in the firmware interface. This is true even when the
> sensors are on the SoC. For example, an M1 MacBook Pro will use different
> keys to access the LITTLE core temperature sensors to an M1 Mac mini. This
> necessitates describing which keys correspond to which sensors for each
> device individually, and populating the hwmon structs at runtime. We do
> this with a node in the device tree. This series includes only the keys
> for sensors which we know to be common to all devices. The SMC is also
> responsible for monitoring and controlling fan speeds on systems with fans,
> which we expose via the hwmon driver.
> 
> The SMC also handles the hardware power button and lid switch. Power
> button presses and lid opening/closing are emitted as HID events, so we
> add a HID subdevice to handle them.
> 
> Note that this series is based on a branch with three additional commits
> applied to add the parent SMC nodes to the relevant Devicetrees. This
> was done to silence build errors. The series applies cleanly to 6.17-rc1.
> 
> Regards,
> 
> James
> 
> [1] https://lore.kernel.org/asahi/CAEg-Je84XxLWH7vznQmPRfjf6GxWOu75ZetwN7AdseAwfMLLrQ@mail.gmail.com/T/#t
> 
> Signed-off-by: James Calligeros <jcalligeros99@gmail.com>
> ---
> Changes in v2:
> - Added Rob's R-b tag to RTC DT binding
> - Removed redundant nesting from hwmon DT binding
> - Dedpulicated property definitions in hwmon DT schema
> - Made label a required property for hwmon DT nodes
> - Clarified semantics in hwmon DT schema definitions
> - Split mfd tree changes into separate commits
> - Fixed numerous style errors in hwmon driver
> - Addressed Guenter's initial feedback on the hwmon driver
> - Modified hwmon driver to reflect DT schema changes
> - Added compatible property to hwmon node
> - Link to v1: https://lore.kernel.org/r/20250819-macsmc-subdevs-v1-0-57df6c3e5f19@gmail.com
> 
> ---
> Hector Martin (2):
>       rtc: Add new rtc-macsmc driver for Apple Silicon Macs
>       input: macsmc-hid: New driver to handle the Apple Mac SMC buttons/lid
> 
> James Calligeros (7):
>       dt-bindings: hwmon: Add Apple System Management Controller hwmon schema
>       mfd: macsmc: Wire up Apple SMC RTC subdevice
>       hwmon: Add Apple Silicon SMC hwmon driver
>       mfd: macsmc: Wire up Apple SMC hwmon subdevice
>       mfd: macsmc: Wire up Apple SMC HID subdevice
>       arm64: dts: apple: Add common hwmon sensors and fans
>       arm64: dts: apple: t8103, t600x, t8112: Add common hwmon nodes to devices
> 
> Sven Peter (2):
>       dt-bindings: rtc: Add Apple SMC RTC
>       arm64: dts: apple: t8103,t600x,t8112: Add SMC RTC node
> 
>  .../bindings/hwmon/apple,smc-hwmon.yaml  | 132 ++++
>  .../bindings/mfd/apple,smc.yaml          |  45 ++
>  .../bindings/rtc/apple,smc-rtc.yaml      |  35 +
>  MAINTAINERS                              |   5 +
>  .../boot/dts/apple/hwmon-common.dtsi     |  37 ++
>  .../boot/dts/apple/hwmon-fan-dual.dtsi   |  24 +
>  arch/arm64/boot/dts/apple/hwmon-fan.dtsi |  19 +
>  .../boot/dts/apple/hwmon-laptop.dtsi     |  35 +
>  .../boot/dts/apple/hwmon-mac-mini.dtsi   |  17 +
>  .../arm64/boot/dts/apple/t6001-j375c.dts |   2 +
>  .../arm64/boot/dts/apple/t6002-j375d.dts |   2 +
>  .../arm64/boot/dts/apple/t600x-die0.dtsi |   6 +
>  .../boot/dts/apple/t600x-j314-j316.dtsi  |   4 +
>  .../arm64/boot/dts/apple/t600x-j375.dtsi |   2 +
>  arch/arm64/boot/dts/apple/t8103-j274.dts |   2 +
>  arch/arm64/boot/dts/apple/t8103-j293.dts |   3 +
>  arch/arm64/boot/dts/apple/t8103-j313.dts |   2 +
>  arch/arm64/boot/dts/apple/t8103-j456.dts |   2 +
>  arch/arm64/boot/dts/apple/t8103-j457.dts |   2 +
>  .../arm64/boot/dts/apple/t8103-jxxx.dtsi |   2 +
>  arch/arm64/boot/dts/apple/t8103.dtsi     |   6 +
>  arch/arm64/boot/dts/apple/t8112-j413.dts |   2 +
>  arch/arm64/boot/dts/apple/t8112-j473.dts |   2 +
>  arch/arm64/boot/dts/apple/t8112-j493.dts |   3 +
>  .../arm64/boot/dts/apple/t8112-jxxx.dtsi |   2 +
>  arch/arm64/boot/dts/apple/t8112.dtsi     |   6 +
>  drivers/hwmon/Kconfig                    |  12 +
>  drivers/hwmon/Makefile                   |   1 +
>  drivers/hwmon/macsmc_hwmon.c             | 848 +++++++++++++++++++++++++
>  drivers/input/misc/Kconfig               |  11 +
>  drivers/input/misc/Makefile              |   1 +
>  drivers/input/misc/macsmc-hid.c          | 209 ++++++
>  drivers/mfd/macsmc.c                     |   3 +
>  drivers/rtc/Kconfig                      |  11 +
>  drivers/rtc/Makefile                     |   1 +
>  drivers/rtc/rtc-macsmc.c                 | 141 ++++
>  36 files changed, 1637 insertions(+)
> ---
> base-commit: 876d6a70b24869f96ebc8672caf86cb4bae72927
> change-id: 20250816-macsmc-subdevs-87032c017d0c
> 
> Best regards,
> -- 
> James Calligeros <jcalligeros99@gmail.com>
> 

-- 
Alexandre Belloni, co-owner and COO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
Re: [PATCH v2 00/11] mfd: macsmc: add rtc, hwmon and hid subdevices
Posted by Guenter Roeck 1 month, 1 week ago
On 8/27/25 04:22, James Calligeros wrote:
> Hi all,
> 
> This series adds support for the remaining SMC subdevices. These are the
> RTC, hwmon, and HID devices. They are being submitted together as the RTC
> and hwmon drivers both require changes to the SMC DT schema.
> 
> The RTC driver is responsible for getting and setting the system clock,
> and requires an NVMEM cell. This series replaces Sven's original RTC driver
> submission [1].
> 
> The hwmon function is an interesting one. While each Apple Silicon device
> exposes pretty similar sets of sensors, these all seem to be paired to
> different SMC keys in the firmware interface. This is true even when the
> sensors are on the SoC. For example, an M1 MacBook Pro will use different
> keys to access the LITTLE core temperature sensors to an M1 Mac mini. This
> necessitates describing which keys correspond to which sensors for each
> device individually, and populating the hwmon structs at runtime. We do
> this with a node in the device tree. This series includes only the keys
> for sensors which we know to be common to all devices. The SMC is also
> responsible for monitoring and controlling fan speeds on systems with fans,
> which we expose via the hwmon driver.
> 
> The SMC also handles the hardware power button and lid switch. Power
> button presses and lid opening/closing are emitted as HID events, so we
> add a HID subdevice to handle them.
> 
> Note that this series is based on a branch with three additional commits
> applied to add the parent SMC nodes to the relevant Devicetrees. This
> was done to silence build errors. The series applies cleanly to 6.17-rc1.
> 
> Regards,
> 
> James
> 
> [1] https://lore.kernel.org/asahi/CAEg-Je84XxLWH7vznQmPRfjf6GxWOu75ZetwN7AdseAwfMLLrQ@mail.gmail.com/T/#t
> 
> Signed-off-by: James Calligeros <jcalligeros99@gmail.com>
> ---
> Changes in v2:
> - Added Rob's R-b tag to RTC DT binding
> - Removed redundant nesting from hwmon DT binding
> - Dedpulicated property definitions in hwmon DT schema
> - Made label a required property for hwmon DT nodes
> - Clarified semantics in hwmon DT schema definitions
> - Split mfd tree changes into separate commits
> - Fixed numerous style errors in hwmon driver
> - Addressed Guenter's initial feedback on the hwmon driver

Don't you think that is a bit useless ? You might as well say "Addressed
feedback comments" and be done with the change log.

Guenter
Re: [PATCH v2 00/11] mfd: macsmc: add rtc, hwmon and hid subdevices
Posted by James Calligeros 1 month ago
On Wed, Aug 27, 2025 at 11:47 PM Guenter Roeck <linux@roeck-us.net> wrote:
> > ---
> > Changes in v2:
> > - Added Rob's R-b tag to RTC DT binding
> > - Removed redundant nesting from hwmon DT binding
> > - Dedpulicated property definitions in hwmon DT schema
> > - Made label a required property for hwmon DT nodes
> > - Clarified semantics in hwmon DT schema definitions
> > - Split mfd tree changes into separate commits
> > - Fixed numerous style errors in hwmon driver
> > - Addressed Guenter's initial feedback on the hwmon driver
>
> Don't you think that is a bit useless ? You might as well say "Addressed
> feedback comments" and be done with the change log.
>
> Guenter

I don't think this warrants a v3, so hopefully the amended
changelog below will suffice.

---
Changes in v2:
- Added Rob's R-b tag to RTC DT binding
- Removed redundant nesting from hwmon DT binding
- Dedpulicated property definitions in hwmon DT schema
- Made label a required property for hwmon DT nodes
- Clarified semantics in hwmon DT schema definitions
- Split mfd tree changes into separate commits
- Fixed numerous style errors in hwmon driver
- Removed log messages sysfs read/write functions in hwmon driver
- Removed ignored errors from hwmon driver
- Removed uses of dev_err for non-errors in hwmon driver
- Made it more obvious that a number of hwmon fan properties are optional
- Modified hwmon driver to reflect DT schema changes
- Added compatible property to hwmon node
- Link to v1: https://lore.kernel.org/r/20250819-macsmc-subdevs-v1-0-57df6c3e5f19@gmail.com

James
Re: [PATCH v2 00/11] mfd: macsmc: add rtc, hwmon and hid subdevices
Posted by Neal Gompa 1 month ago
On Wed, Aug 27, 2025 at 6:07 PM James Calligeros
<jcalligeros99@gmail.com> wrote:
>
> On Wed, Aug 27, 2025 at 11:47 PM Guenter Roeck <linux@roeck-us.net> wrote:
> > > ---
> > > Changes in v2:
> > > - Added Rob's R-b tag to RTC DT binding
> > > - Removed redundant nesting from hwmon DT binding
> > > - Dedpulicated property definitions in hwmon DT schema
> > > - Made label a required property for hwmon DT nodes
> > > - Clarified semantics in hwmon DT schema definitions
> > > - Split mfd tree changes into separate commits
> > > - Fixed numerous style errors in hwmon driver
> > > - Addressed Guenter's initial feedback on the hwmon driver
> >
> > Don't you think that is a bit useless ? You might as well say "Addressed
> > feedback comments" and be done with the change log.
> >
> > Guenter
>
> I don't think this warrants a v3, so hopefully the amended
> changelog below will suffice.
>
> ---
> Changes in v2:
> - Added Rob's R-b tag to RTC DT binding
> - Removed redundant nesting from hwmon DT binding
> - Dedpulicated property definitions in hwmon DT schema
> - Made label a required property for hwmon DT nodes
> - Clarified semantics in hwmon DT schema definitions
> - Split mfd tree changes into separate commits
> - Fixed numerous style errors in hwmon driver
> - Removed log messages sysfs read/write functions in hwmon driver
> - Removed ignored errors from hwmon driver
> - Removed uses of dev_err for non-errors in hwmon driver
> - Made it more obvious that a number of hwmon fan properties are optional
> - Modified hwmon driver to reflect DT schema changes
> - Added compatible property to hwmon node
> - Link to v1: https://lore.kernel.org/r/20250819-macsmc-subdevs-v1-0-57df6c3e5f19@gmail.com
>

Series LGTM.

Reviewed-by: Neal Gompa <neal@gompa.dev>



-- 
真実はいつも一つ!/ Always, there's only one truth!
Re: [PATCH v2 00/11] mfd: macsmc: add rtc, hwmon and hid subdevices
Posted by Janne Grunau 1 week ago
On Wed, Aug 27, 2025 at 09:22:34PM +1000, James Calligeros wrote:
> Hi all,
> 
> This series adds support for the remaining SMC subdevices. These are the
> RTC, hwmon, and HID devices. They are being submitted together as the RTC
> and hwmon drivers both require changes to the SMC DT schema.

I we would instantiate all sub devices via MFD_CELL_OF macsmc-hid (or
-input) and the omitted macsmc-power would require SMC dt-binding
changes as well. I'm conflicted on that since both use SMC to determine
if they are present.

Janne