Messages in this thread | | | Date | Fri, 24 Aug 2007 22:49:14 +0400 | From | Sergei Shtylyov <> | Subject | Re: [PATCH 1/4] ide: add ide_dev_is_sata() helper |
| |
Hello, I wrote:
> Make the SATA drive detection code from eighty_ninty_three() into inline > ide_dev_is_sata() helper fixing it along the way to be more strict while > checking word 80 for the reserved values...
> Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
[...] > Index: linux-2.6/drivers/ide/ide-iops.c > =================================================================== > --- linux-2.6.orig/drivers/ide/ide-iops.c > +++ linux-2.6/drivers/ide/ide-iops.c > @@ -580,8 +580,7 @@ u8 eighty_ninty_three (ide_drive_t *driv > if (hwif->cbl != ATA_CBL_PATA80) > goto no_80w; > > - /* Check for SATA but only if we are ATA5 or higher */ > - if (id->hw_config == 0 && (id->major_rev_num & 0x7FE0)) > + if (ide_dev_is_sata(id)) > return 1; > > /* > Index: linux-2.6/include/linux/ide.h > =================================================================== > --- linux-2.6.orig/include/linux/ide.h > +++ linux-2.6/include/linux/ide.h > @@ -1380,6 +1380,19 @@ static inline int ide_dev_has_iordy(stru > return ((id->field_valid & 2) && (id->capability & 8)) ? 1 : 0; > } > > +static inline int ide_dev_is_sata(struct hd_driveid *id) > +{ > + /* > + * See if word 93 is 0 AND drive is at least ATA-5 compatible > + * making sure that word 80 is valid by flipping its MSB -- > + * this trick allows us to filter out reserved values of 0 > + * and 0xffff along with the earlier ATA revisions. > + */ > + if (id->hw_config == 0 && (id->major_rev_num ^ 0x8000) >= 0x8020) > + return 1; > + return 0; > +} > +
The same could have been achieved more simply:
if (id->hw_config == 0 && (short}id->major_rev_num >= 0x0020
so I'll probably recast...
MBR, Sergei - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |