On Sat, 21 Jun 2025, Sven Peter wrote:
On 16.06.25 06:13, Nick Chan wrote:
On 10/6/2025 23:29, Sven Peter wrote:
From: Hector Martin <marcan@xxxxxxxxx>[...]
This driver implements the reboot/shutdown support exposed by the SMC
on Apple Silicon machines, such as Apple M1 Macs.
Signed-off-by: Hector Martin <marcan@xxxxxxxxx>
Reviewed-by: Alyssa Rosenzweig <alyssa@xxxxxxxxxxxxx>
Reviewed-by: Neal Gompa <neal@xxxxxxxxx>
Reviewed-by: Sebastian Reichel <sebastian.reichel@xxxxxxxxxxxxx>
Signed-off-by: Sven Peter <sven@xxxxxxxxxx>
---
MAINTAINERS | 1 +
drivers/power/reset/Kconfig | 9 ++
drivers/power/reset/Makefile | 1 +
drivers/power/reset/macsmc-reboot.c | 290 ++++++++++++++++++++++++++++++++++++
4 files changed, 301 insertions(+)
It seems that the reboot driver still probes even without the smc_reboot node in the smc node:
That's odd...
Lee, is it expected that a mfd sub-device declared with
MFD_CELL_OF("macsmc-reboot", NULL, NULL, 0, 0, "apple,smc-reboot"),
is loaded even if there's no corresponding node in the device tree?
I'll have to re-add the check that makes sure the sub-device is available
then.
Yes, that's expected. MFD is orthogonal to DT with respect to device
registration, unless you specifically disable the node in DT. If the
node is missing, the device will still be registered, but no link will
be made from the (non-existent) node to the 'of_node' pointer.
You have 3 choices; provide a DT node and explicitly set the status to
'disabled', optionally omit registration from MFD (i.e. do not call
mfd_add_devices()) or check for (!pdev->dev.of_node) in the sub-device's
.probe() and bomb out early if true.