sata_via: fix support for 5287
authorTejun Heo <tj@kernel.org>
Tue, 21 Oct 2008 15:46:36 +0000 (00:46 +0900)
committerJeff Garzik <jgarzik@redhat.com>
Fri, 31 Oct 2008 05:43:28 +0000 (01:43 -0400)
commitb9d5b89b487517cbd4cb4702da829e07ef9e4432
tree2a349dcea617d3fdb698e7514d19a85e8ae4fa8a
parentba14a9c291aa867896a90b3571fcc1c3759942ff
sata_via: fix support for 5287

5287 used to be treated as vt6420 but it didn't work.  It's new family
of controllers called vt8251 which hosts four SATA ports as M/S of the
two ATA ports.  This configuration is rather peculiar in that although
the M/S devices are on the same port, each have its own SCR (or
equivalent link status/control) registers which screws up the
port-link-device hierarchy assumed by libata.  Another controller
which falls into this category is ata_piix w/ SIDPR access.

libata now has facility to deal with this class of controllers named
slave_link.  A low level driver for such controllers can just call
ata_slave_link_init() on the respective ports and libata will handle
all the difficult parts like following up with single SRST after
hardresetting both ports.

This patch creates new controller class vt8251, implements slave_link
aware init sequence and config space based SCR access for it and moves
5287 to the new class.

This patch is based on Joseph Chan's larger patch which was created
before slave_link was implemented in libata.

  http://thread.gmane.org/gmane.linux.kernel.commits.mm/40640

Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Joseph Chan <JosephChan@via.com.tw>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
drivers/ata/sata_via.c