[PATCH] libata: fix non-uniform ports handling
authorTejun Heo <htejun@gmail.com>
Fri, 15 Sep 2006 18:04:15 +0000 (03:04 +0900)
committerJeff Garzik <jeff@garzik.org>
Tue, 19 Sep 2006 04:29:20 +0000 (00:29 -0400)
commitfea63e38013ec628ab3f7fddc4c2148064b7910a
treea3e1cd7f50562a20584cd28ef9d71e0cd6c7c896
parenta64f97f2c351410dfb3099c2369eacf7154b5532
[PATCH] libata: fix non-uniform ports handling

Non-uniform ports handling got broken while updating libata to handle
those in the same host.  Only separate irq for the non-uniform
secondary port was implemented while all other fields (host flags,
transfer mode...) of the secondary port simply shared those of the
first.

For ata_piix combined mode, which ATM is the only user of non-uniform
ports, this causes the secondary port assume the wrong type.  This can
cause PATA port to use SATA ops, which results in bogus check on PCS
and detection failure.

This patch adds ata_probe_ent->pinfo2 which points to optional
port_info for the secondary port.  For the time being, this seems to
be the simplest solution.  This workaround will be removed together
with ata_probe_ent itself after init model is updated to allow more
flexibility.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
Cc: Nelson A. de Oliveira <naoliv@gmail.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
drivers/ata/libata-core.c
drivers/ata/libata-sff.c
include/linux/libata.h