|
@@ -20,13 +20,24 @@
|
|
|
|
|
|
/* No PIO or DMA methods needed for this device */
|
|
/* 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 = {
|
|
static struct scsi_host_template netcell_sht = {
|
|
ATA_BMDMA_SHT(DRV_NAME),
|
|
ATA_BMDMA_SHT(DRV_NAME),
|
|
};
|
|
};
|
|
|
|
|
|
static struct ata_port_operations netcell_ops = {
|
|
static struct ata_port_operations netcell_ops = {
|
|
.inherits = &ata_bmdma_port_ops,
|
|
.inherits = &ata_bmdma_port_ops,
|
|
- .cable_detect = ata_cable_80wire,
|
|
|
|
|
|
+ .cable_detect = ata_cable_80wire,
|
|
|
|
+ .read_id = netcell_read_id,
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|