|
@@ -1224,7 +1224,7 @@ unsigned int ata_pio_need_iordy(const struct ata_device *adev)
|
|
|
* ata_dev_read_id - Read ID data from the specified device
|
|
|
* @dev: target device
|
|
|
* @p_class: pointer to class of the target device (may be changed)
|
|
|
- * @post_reset: is this read ID post-reset?
|
|
|
+ * @flags: ATA_READID_* flags
|
|
|
* @id: buffer to read IDENTIFY data into
|
|
|
*
|
|
|
* Read ID data from the specified device. ATA_CMD_ID_ATA is
|
|
@@ -1239,7 +1239,7 @@ unsigned int ata_pio_need_iordy(const struct ata_device *adev)
|
|
|
* 0 on success, -errno otherwise.
|
|
|
*/
|
|
|
int ata_dev_read_id(struct ata_device *dev, unsigned int *p_class,
|
|
|
- int post_reset, u16 *id)
|
|
|
+ unsigned int flags, u16 *id)
|
|
|
{
|
|
|
struct ata_port *ap = dev->ap;
|
|
|
unsigned int class = *p_class;
|
|
@@ -1294,7 +1294,7 @@ int ata_dev_read_id(struct ata_device *dev, unsigned int *p_class,
|
|
|
goto err_out;
|
|
|
}
|
|
|
|
|
|
- if (post_reset && class == ATA_DEV_ATA) {
|
|
|
+ if ((flags & ATA_READID_POSTRESET) && class == ATA_DEV_ATA) {
|
|
|
/*
|
|
|
* The exact sequence expected by certain pre-ATA4 drives is:
|
|
|
* SRST RESET
|
|
@@ -1314,7 +1314,7 @@ int ata_dev_read_id(struct ata_device *dev, unsigned int *p_class,
|
|
|
/* current CHS translation info (id[53-58]) might be
|
|
|
* changed. reread the identify device info.
|
|
|
*/
|
|
|
- post_reset = 0;
|
|
|
+ flags &= ~ATA_READID_POSTRESET;
|
|
|
goto retry;
|
|
|
}
|
|
|
}
|
|
@@ -1643,7 +1643,8 @@ int ata_bus_probe(struct ata_port *ap)
|
|
|
if (!ata_dev_enabled(dev))
|
|
|
continue;
|
|
|
|
|
|
- rc = ata_dev_read_id(dev, &dev->class, 1, dev->id);
|
|
|
+ rc = ata_dev_read_id(dev, &dev->class, ATA_READID_POSTRESET,
|
|
|
+ dev->id);
|
|
|
if (rc)
|
|
|
goto fail;
|
|
|
|
|
@@ -3023,7 +3024,7 @@ static int ata_dev_same_device(struct ata_device *dev, unsigned int new_class,
|
|
|
/**
|
|
|
* ata_dev_revalidate - Revalidate ATA device
|
|
|
* @dev: device to revalidate
|
|
|
- * @post_reset: is this revalidation after reset?
|
|
|
+ * @readid_flags: read ID flags
|
|
|
*
|
|
|
* Re-read IDENTIFY page and make sure @dev is still attached to
|
|
|
* the port.
|
|
@@ -3034,7 +3035,7 @@ static int ata_dev_same_device(struct ata_device *dev, unsigned int new_class,
|
|
|
* RETURNS:
|
|
|
* 0 on success, negative errno otherwise
|
|
|
*/
|
|
|
-int ata_dev_revalidate(struct ata_device *dev, int post_reset)
|
|
|
+int ata_dev_revalidate(struct ata_device *dev, unsigned int readid_flags)
|
|
|
{
|
|
|
unsigned int class = dev->class;
|
|
|
u16 *id = (void *)dev->ap->sector_buf;
|
|
@@ -3046,7 +3047,7 @@ int ata_dev_revalidate(struct ata_device *dev, int post_reset)
|
|
|
}
|
|
|
|
|
|
/* read ID data */
|
|
|
- rc = ata_dev_read_id(dev, &class, post_reset, id);
|
|
|
+ rc = ata_dev_read_id(dev, &class, readid_flags, id);
|
|
|
if (rc)
|
|
|
goto fail;
|
|
|
|