[PATCH v7 07/10] power: reset: macsmc-reboot: Add driver for rebooting via Apple SMC
Lee Jones
lee at kernel.org
Wed Jul 23 01:09:42 PDT 2025
On Wed, 23 Jul 2025, Lee Jones wrote:
> 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 at marcan.st>
> > > >
> > > > 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 at marcan.st>
> > > > Reviewed-by: Alyssa Rosenzweig <alyssa at rosenzweig.io>
> > > > Reviewed-by: Neal Gompa <neal at gompa.dev>
> > > > Reviewed-by: Sebastian Reichel <sebastian.reichel at collabora.com>
> > > > Signed-off-by: Sven Peter <sven at kernel.org>
> > > > ---
> > > > 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.
Did you see this warning in your bootlog:
pr_warn("%s: Failed to locate of_node [id: %d]\n", cell->name, platform_id);
It's just a warning - the device will still be registered.
--
Lee Jones [李琼斯]
More information about the linux-arm-kernel
mailing list