Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 22811
b: refs/heads/master
c: f4b15fe
h: refs/heads/master
i:
  22809: 3340807
  22807: d5c57bb
v: v3
  • Loading branch information
Alan Cox authored and Jeff Garzik committed Mar 23, 2006
1 parent 9859c87 commit 2066761
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 36 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 09c7ad79dc62c499bb03d1ee92f838db2fc776c5
refs/heads/master: f4b15fefb38fb4942d85247854660bc8e02641a7
94 changes: 59 additions & 35 deletions trunk/drivers/scsi/libata-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -2563,48 +2563,72 @@ int ata_dev_revalidate(struct ata_port *ap, struct ata_device *dev,
}

static const char * const ata_dma_blacklist [] = {
"WDC AC11000H",
"WDC AC22100H",
"WDC AC32500H",
"WDC AC33100H",
"WDC AC31600H",
"WDC AC32100H",
"WDC AC23200L",
"Compaq CRD-8241B",
"CRD-8400B",
"CRD-8480B",
"CRD-8482B",
"CRD-84",
"SanDisk SDP3B",
"SanDisk SDP3B-64",
"SANYO CD-ROM CRD",
"HITACHI CDR-8",
"HITACHI CDR-8335",
"HITACHI CDR-8435",
"Toshiba CD-ROM XM-6202B",
"TOSHIBA CD-ROM XM-1702BC",
"CD-532E-A",
"E-IDE CD-ROM CR-840",
"CD-ROM Drive/F5A",
"WPI CDD-820",
"SAMSUNG CD-ROM SC-148C",
"SAMSUNG CD-ROM SC",
"SanDisk SDP3B-64",
"ATAPI CD-ROM DRIVE 40X MAXIMUM",
"_NEC DV5800A",
"WDC AC11000H", NULL,
"WDC AC22100H", NULL,
"WDC AC32500H", NULL,
"WDC AC33100H", NULL,
"WDC AC31600H", NULL,
"WDC AC32100H", "24.09P07",
"WDC AC23200L", "21.10N21",
"Compaq CRD-8241B", NULL,
"CRD-8400B", NULL,
"CRD-8480B", NULL,
"CRD-8482B", NULL,
"CRD-84", NULL,
"SanDisk SDP3B", NULL,
"SanDisk SDP3B-64", NULL,
"SANYO CD-ROM CRD", NULL,
"HITACHI CDR-8", NULL,
"HITACHI CDR-8335", NULL,
"HITACHI CDR-8435", NULL,
"Toshiba CD-ROM XM-6202B", NULL,
"TOSHIBA CD-ROM XM-1702BC", NULL,
"CD-532E-A", NULL,
"E-IDE CD-ROM CR-840", NULL,
"CD-ROM Drive/F5A", NULL,
"WPI CDD-820", NULL,
"SAMSUNG CD-ROM SC-148C", NULL,
"SAMSUNG CD-ROM SC", NULL,
"SanDisk SDP3B-64", NULL,
"ATAPI CD-ROM DRIVE 40X MAXIMUM",NULL,
"_NEC DV5800A", NULL,
"SAMSUNG CD-ROM SN-124", "N001"
};

static int ata_strim(char *s, size_t len)
{
len = strnlen(s, len);

/* ATAPI specifies that empty space is blank-filled; remove blanks */
while ((len > 0) && (s[len - 1] == ' ')) {
len--;
s[len] = 0;
}
return len;
}

static int ata_dma_blacklisted(const struct ata_device *dev)
{
unsigned char model_num[41];
unsigned char model_num[40];
unsigned char model_rev[16];
unsigned int nlen, rlen;
int i;

ata_id_c_string(dev->id, model_num, ATA_ID_PROD_OFS, sizeof(model_num));

for (i = 0; i < ARRAY_SIZE(ata_dma_blacklist); i++)
if (!strcmp(ata_dma_blacklist[i], model_num))
return 1;
ata_id_string(dev->id, model_num, ATA_ID_PROD_OFS,
sizeof(model_num));
ata_id_string(dev->id, model_rev, ATA_ID_FW_REV_OFS,
sizeof(model_rev));
nlen = ata_strim(model_num, sizeof(model_num));
rlen = ata_strim(model_rev, sizeof(model_rev));

for (i = 0; i < ARRAY_SIZE(ata_dma_blacklist); i += 2) {
if (!strncmp(ata_dma_blacklist[i], model_num, nlen)) {
if (ata_dma_blacklist[i+1] == NULL)
return 1;
if (!strncmp(ata_dma_blacklist[i], model_rev, rlen))
return 1;
}
}
return 0;
}

Expand Down

0 comments on commit 2066761

Please sign in to comment.