sata_mv: Fix broken Marvell 7042 support.
authorMark Lord <liml@rtr.ca>
Sat, 1 Dec 2007 18:07:22 +0000 (13:07 -0500)
committerJeff Garzik <jeff@garzik.org>
Sat, 1 Dec 2007 22:44:10 +0000 (17:44 -0500)
commit02a121da5a53d415b6596bc19cc6999d295d32a4
tree4016dd755dcbb1339bc3d742b1e8bdf1cd14991c
parent0f9fe9b7148f95f018ae2c97f7fa1a35364ea785
sata_mv: Fix broken Marvell 7042 support.

sata_mv:  Fix broken Marvell 7042 support.

The Marvell 7042 chip is more or less the same as the 6042 internally,
but sports a PCIe bus.  Despite having identical SATA cores, the 7042
does differ from its PCI bus counterparts in placment and layout of
certain bus related registers.

This patch fixes sata_mv to distinguish between the PCI bus registers
of earlier chips, and the PCIe bus registers of the 7042.

Specifically, move the offsets and bit patterns for the
PCI/PCIe interrupt cause/mask registers into the struct mv_host_priv,
as these values differ between the 6xxx and 7xxx series chips.

This fixes the driver to not access reserved PCI addresses,
and prevents the lockups reported in linux-2.6.24 with 7042 boards.

Also add a new PCI ID for the Highpoint 2300 7042-based board
that I'm using for testing this stuff here.

Tested with Marvell 6081 + 7042 chips, on x86 & x86_64.

Signed-off-by: Mark Lord <mlord@pobox.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
drivers/ata/sata_mv.c