aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ata
diff options
context:
space:
mode:
authorAlan Cox <alan@lxorguk.ukuu.org.uk>2007-08-08 09:28:49 -0400
committerJeff Garzik <jeff@garzik.org>2007-08-31 03:37:55 -0400
commit18b2466c3050e23c98bb69bd3f35295ff8164851 (patch)
tree3765f6c8ce593641ce13ece592c351c805a940c3 /drivers/ata
parent2d8348b429b4ae5cc47449c787881221fe43af4b (diff)
libata-core: Allow translation setting to fail
On some early drives (pre ATA1) this feature is not supported. If it fails then we know the drive geometry is the hardware geometry and the one we tried to set anyway so just carry on. Signed-off-by: Alan Cox <alan@redhat.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/ata')
-rw-r--r--drivers/ata/libata-core.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 2ad4dda6d4a7..9cf46bf8c8d2 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -3985,6 +3985,11 @@ static unsigned int ata_dev_init_params(struct ata_device *dev,
3985 tf.device |= (heads - 1) & 0x0f; /* max head = num. of heads - 1 */ 3985 tf.device |= (heads - 1) & 0x0f; /* max head = num. of heads - 1 */
3986 3986
3987 err_mask = ata_exec_internal(dev, &tf, NULL, DMA_NONE, NULL, 0); 3987 err_mask = ata_exec_internal(dev, &tf, NULL, DMA_NONE, NULL, 0);
3988 /* A clean abort indicates an original or just out of spec drive
3989 and we should continue as we issue the setup based on the
3990 drive reported working geometry */
3991 if (err_mask == AC_ERR_DEV && (tf.feature & ATA_ABORTED))
3992 err_mask = 0;
3988 3993
3989 DPRINTK("EXIT, err_mask=%x\n", err_mask); 3994 DPRINTK("EXIT, err_mask=%x\n", err_mask);
3990 return err_mask; 3995 return err_mask;