ata_piix: save, use saved and restore IOCFG
authorTejun Heo <tj@kernel.org>
Fri, 2 Jan 2009 03:04:48 +0000 (12:04 +0900)
committerJeff Garzik <jgarzik@redhat.com>
Thu, 8 Jan 2009 21:09:43 +0000 (16:09 -0500)
commit2852bcf7c12d3027c5d10f4f5ca5fada24ce8088
tree82a36950e8b3926573d95b23b344e19149915502
parentfc80902fdf4219a81eccca4a06259c4b56812ba5
ata_piix: save, use saved and restore IOCFG

Certain ACPI implementations mess up IOCFG on _STM making libata
detect cable type incorrectly after a suspend/resume cycle.  This
patch makes ata_piix save IOCFG on attach, use the saved value for
things which aren't dynamic and restore it on detach so that the next
driver also gets the BIOS initialized value.

This patch contains the following changes.

* makes ich_pata_cable_detect() use saved_iocfg.

* make piix_iocfg_bit18_quirk() take @host and use saved_iocfg.

* hpriv allocation moved upwards to save iocfg before doing anything
  else.

This fixes bz#11879.  Andreas Mohr reported and diagnosed the problem.

Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Andreas Mohr <andi@lisas.de>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
drivers/ata/ata_piix.c