diff options
Diffstat (limited to 'drivers/scsi/libata-core.c')
-rw-r--r-- | drivers/scsi/libata-core.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/scsi/libata-core.c b/drivers/scsi/libata-core.c index 36b401fee1f1..73b1f72b7e43 100644 --- a/drivers/scsi/libata-core.c +++ b/drivers/scsi/libata-core.c | |||
@@ -1408,7 +1408,9 @@ void __sata_phy_reset(struct ata_port *ap) | |||
1408 | if (ap->flags & ATA_FLAG_SATA_RESET) { | 1408 | if (ap->flags & ATA_FLAG_SATA_RESET) { |
1409 | /* issue phy wake/reset */ | 1409 | /* issue phy wake/reset */ |
1410 | scr_write_flush(ap, SCR_CONTROL, 0x301); | 1410 | scr_write_flush(ap, SCR_CONTROL, 0x301); |
1411 | udelay(400); /* FIXME: a guess */ | 1411 | /* Couldn't find anything in SATA I/II specs, but |
1412 | * AHCI-1.1 10.4.2 says at least 1 ms. */ | ||
1413 | mdelay(1); | ||
1412 | } | 1414 | } |
1413 | scr_write_flush(ap, SCR_CONTROL, 0x300); /* phy wake/clear reset */ | 1415 | scr_write_flush(ap, SCR_CONTROL, 0x300); /* phy wake/clear reset */ |
1414 | 1416 | ||
@@ -1920,6 +1922,7 @@ static const char * ata_dma_blacklist [] = { | |||
1920 | "HITACHI CDR-8335", | 1922 | "HITACHI CDR-8335", |
1921 | "HITACHI CDR-8435", | 1923 | "HITACHI CDR-8435", |
1922 | "Toshiba CD-ROM XM-6202B", | 1924 | "Toshiba CD-ROM XM-6202B", |
1925 | "TOSHIBA CD-ROM XM-1702BC", | ||
1923 | "CD-532E-A", | 1926 | "CD-532E-A", |
1924 | "E-IDE CD-ROM CR-840", | 1927 | "E-IDE CD-ROM CR-840", |
1925 | "CD-ROM Drive/F5A", | 1928 | "CD-ROM Drive/F5A", |
@@ -1927,7 +1930,6 @@ static const char * ata_dma_blacklist [] = { | |||
1927 | "SAMSUNG CD-ROM SC-148C", | 1930 | "SAMSUNG CD-ROM SC-148C", |
1928 | "SAMSUNG CD-ROM SC", | 1931 | "SAMSUNG CD-ROM SC", |
1929 | "SanDisk SDP3B-64", | 1932 | "SanDisk SDP3B-64", |
1930 | "SAMSUNG CD-ROM SN-124", | ||
1931 | "ATAPI CD-ROM DRIVE 40X MAXIMUM", | 1933 | "ATAPI CD-ROM DRIVE 40X MAXIMUM", |
1932 | "_NEC DV5800A", | 1934 | "_NEC DV5800A", |
1933 | }; | 1935 | }; |
@@ -2864,7 +2866,7 @@ static void ata_qc_timeout(struct ata_queued_cmd *qc) | |||
2864 | if (qc->dev->class == ATA_DEV_ATAPI && qc->scsicmd) { | 2866 | if (qc->dev->class == ATA_DEV_ATAPI && qc->scsicmd) { |
2865 | struct scsi_cmnd *cmd = qc->scsicmd; | 2867 | struct scsi_cmnd *cmd = qc->scsicmd; |
2866 | 2868 | ||
2867 | if (!scsi_eh_eflags_chk(cmd, SCSI_EH_CANCEL_CMD)) { | 2869 | if (!(cmd->eh_eflags & SCSI_EH_CANCEL_CMD)) { |
2868 | 2870 | ||
2869 | /* finish completing original command */ | 2871 | /* finish completing original command */ |
2870 | __ata_qc_complete(qc); | 2872 | __ata_qc_complete(qc); |
@@ -3748,7 +3750,7 @@ static void ata_host_init(struct ata_port *ap, struct Scsi_Host *host, | |||
3748 | host->max_channel = 1; | 3750 | host->max_channel = 1; |
3749 | host->unique_id = ata_unique_id++; | 3751 | host->unique_id = ata_unique_id++; |
3750 | host->max_cmd_len = 12; | 3752 | host->max_cmd_len = 12; |
3751 | scsi_set_device(host, ent->dev); | 3753 | |
3752 | scsi_assign_lock(host, &host_set->lock); | 3754 | scsi_assign_lock(host, &host_set->lock); |
3753 | 3755 | ||
3754 | ap->flags = ATA_FLAG_PORT_DISABLED; | 3756 | ap->flags = ATA_FLAG_PORT_DISABLED; |