Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev
* 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev: libata: handle broken cable reporting pata_hpt37x: Fix outstanding bug reports on the HPT374 and 37x cable detect ata_piix: Add additional PCI identifier for 40 wire short cable pata_serverworks: Fix problem with some drive combinations libata: Don't disable dipm with SET FEATURES libata and bogus LBA48 drives
This commit is contained in:
commit
f8a9efb528
5 changed files with 83 additions and 28 deletions
|
|
@ -425,6 +425,8 @@ static inline int ata_id_has_lba48(const u16 *id)
|
|||
{
|
||||
if ((id[83] & 0xC000) != 0x4000)
|
||||
return 0;
|
||||
if (!ata_id_u64(id, 100))
|
||||
return 0;
|
||||
return id[83] & (1 << 10);
|
||||
}
|
||||
|
||||
|
|
@ -535,6 +537,15 @@ static inline int ata_drive_40wire(const u16 *dev_id)
|
|||
return 1;
|
||||
}
|
||||
|
||||
static inline int ata_drive_40wire_relaxed(const u16 *dev_id)
|
||||
{
|
||||
if (ata_id_is_sata(dev_id))
|
||||
return 0; /* SATA */
|
||||
if ((dev_id[93] & 0x2000) == 0x2000)
|
||||
return 0; /* 80 wire */
|
||||
return 1;
|
||||
}
|
||||
|
||||
static inline int atapi_cdb_len(const u16 *dev_id)
|
||||
{
|
||||
u16 tmp = dev_id[0] & 0x3;
|
||||
|
|
|
|||
|
|
@ -339,6 +339,7 @@ enum {
|
|||
ATA_HORKAGE_SKIP_PM = (1 << 5), /* Skip PM operations */
|
||||
ATA_HORKAGE_HPA_SIZE = (1 << 6), /* native size off by one */
|
||||
ATA_HORKAGE_IPM = (1 << 7), /* Link PM problems */
|
||||
ATA_HORKAGE_IVB = (1 << 8), /* cbl det validity bit bugs */
|
||||
|
||||
/* DMA mask for user DMA control: User visible values; DO NOT
|
||||
renumber */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue