]> www.infradead.org Git - users/jedix/linux-maple.git/commit
ata: libata-acpi: Do not assume 40 wire cable if no devices are enabled
authorTasos Sahanidis <tasos@tasossah.com>
Mon, 19 May 2025 08:56:55 +0000 (11:56 +0300)
committerNiklas Cassel <cassel@kernel.org>
Tue, 10 Jun 2025 12:08:24 +0000 (14:08 +0200)
commit33877220b8641b4cde474a4229ea92c0e3637883
tree8e637c670e4b12a50f5f178562fccf6bd9441ea1
parentd29fc02caad7f94b62d56ee1b01c954f9c961ba7
ata: libata-acpi: Do not assume 40 wire cable if no devices are enabled

On at least an ASRock 990FX Extreme 4 with a VIA VT6330, the devices
have not yet been enabled by the first time ata_acpi_cbl_80wire() is
called. This means that the ata_for_each_dev loop is never entered,
and a 40 wire cable is assumed.

The VIA controller on this board does not report the cable in the PCI
config space, thus having to fall back to ACPI even though no SATA
bridge is present.

The _GTM values are correctly reported by the firmware through ACPI,
which has already set up faster transfer modes, but due to the above
the controller is forced down to a maximum of UDMA/33.

Resolve this by modifying ata_acpi_cbl_80wire() to directly return the
cable type. First, an unknown cable is assumed which preserves the mode
set by the firmware, and then on subsequent calls when the devices have
been enabled, an 80 wire cable is correctly detected.

Since the function now directly returns the cable type, it is renamed
to ata_acpi_cbl_pata_type().

Signed-off-by: Tasos Sahanidis <tasos@tasossah.com>
Link: https://lore.kernel.org/r/20250519085945.1399466-1-tasos@tasossah.com
Signed-off-by: Niklas Cassel <cassel@kernel.org>
drivers/ata/libata-acpi.c
drivers/ata/pata_via.c
include/linux/libata.h