scsi: ata: Use ACPI methods to power on disks
authorMarkus Probst <markus.probst@posteo.de>
Tue, 4 Nov 2025 14:24:33 +0000 (14:24 +0000)
committerMartin K. Petersen <martin.petersen@oracle.com>
Sat, 8 Nov 2025 18:24:55 +0000 (13:24 -0500)
commitce6d26b5330c5de4f458143e9675984e367f6a40
treed20e66b0875691a54117b0d6e74d5b19e7475a70
parent8fdfdb1488162c195f3f0af10b7bc2b8b42928c5
scsi: ata: Use ACPI methods to power on disks

Some embedded devices have the ability to control whether power is
provided to the disks via the SATA power connector or not. If power
resources are defined on ATA ports / devices in ACPI, we should try to
set the power state to D0 before probing the disk to ensure that any
power supply or power gate that may exist is providing power to the
disk.

An example for such devices would be newer synology NAS devices. Every
disk slot has its own SATA power connector. Whether the connector is
providing power is controlled via an gpio, which is *off by default*.
Also the disk loses power on reboots.

Add a new function, ata_acpi_port_power_on(), that will be used to power
on the SATA power connector if usable ACPI power resources on the
associated ATA port / device are found. It will be called right before
probing the port, therefore the disk will be powered on just in time.

Signed-off-by: Markus Probst <markus.probst@posteo.de>
Reviewed-by: Damien Le Moal <dlemoal@kernel.org>
Link: https://patch.msgid.link/20251104142413.322347-3-markus.probst@posteo.de
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/ata/libata-acpi.c
drivers/ata/libata-core.c
drivers/ata/libata.h