aboutsummaryrefslogtreecommitdiff
path: root/drivers/ata/pata_netcell.c
diff options
context:
space:
mode:
authorAlan Cox <alan@linux.intel.com>2009-06-02 12:34:31 +0100
committerLinus Torvalds <torvalds@linux-foundation.org>2009-06-02 09:49:46 -0700
commitd3ae33efb8e2f277f9007eb060c9d0b91ab38ae1 (patch)
tree1664f7e899a558d39a66b9b958332776a9f875ec /drivers/ata/pata_netcell.c
parentca55bd7e2905d344bf697f7c2cc347cb42999e7a (diff)
pata_netcell: LBA48 force identify bits correct
This matches Bartlomiej's patch for ide_pci_generic: c339dfdd65b52bfd947ab29d1210314a2f6d622d In the libata case netcell has its own mini driver. I suspect this fix is actually only needed for some firmware revs but it does no harm either way. Signed-off-by: Alan Cox <alan@linux.intel.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/ata/pata_netcell.c')
-rw-r--r--drivers/ata/pata_netcell.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/ata/pata_netcell.c b/drivers/ata/pata_netcell.c
index bdb236957cb..9a698097134 100644
--- a/drivers/ata/pata_netcell.c
+++ b/drivers/ata/pata_netcell.c
@@ -20,13 +20,24 @@
/* No PIO or DMA methods needed for this device */
+static unsigned int netcell_read_id(struct ata_device *adev,
+ struct ata_taskfile *tf, u16 *id)
+{
+ unsigned int err_mask = ata_do_dev_read_id(adev, tf, id);
+ /* Firmware forgets to mark words 85-87 valid */
+ if (err_mask == 0)
+ id[ATA_ID_CSF_DEFAULT] |= 0x0400;
+ return err_mask;
+}
+
static struct scsi_host_template netcell_sht = {
ATA_BMDMA_SHT(DRV_NAME),
};
static struct ata_port_operations netcell_ops = {
.inherits = &ata_bmdma_port_ops,
- .cable_detect = ata_cable_80wire,
+ .cable_detect = ata_cable_80wire,
+ .read_id = netcell_read_id,
};