libata: misc updates for AN

Update AN support in preparation of PMP support.

* s/ata_id_has_AN/ata_id_has_atapi_AN/
* add AN enabled reporting during configuration
* add err_mask to AN configuration failure reporting
* update LOCKING comment for ata_scsi_media_change_notify()
* check whether ATA dev is attached to SCSI dev ata_scsi_media_change_notify()
* set ATA_FLAG_AN in ahci and sata_sil24

Signed-off-by: Tejun Heo <htejun@gmail.com>
Cc: Kriten Carlson Accardi <kristen.c.accardi@intel.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
This commit is contained in:
Tejun Heo
2007-09-23 13:14:11 +09:00
committed by Jeff Garzik
parent c78968bb0f
commit 854c73a2f1
5 changed files with 31 additions and 17 deletions

View File

@@ -2010,7 +2010,8 @@ int ata_dev_configure(struct ata_device *dev)
/* ATAPI-specific feature tests */
else if (dev->class == ATA_DEV_ATAPI) {
char *cdb_intr_string = "";
const char *cdb_intr_string = "";
const char *atapi_an_string = "";
rc = atapi_cdb_len(id);
if ((rc < 12) || (rc > ATAPI_CDB_LEN)) {
@@ -2026,16 +2027,19 @@ int ata_dev_configure(struct ata_device *dev)
* check to see if this ATAPI device supports
* Asynchronous Notification
*/
if ((ap->flags & ATA_FLAG_AN) && ata_id_has_AN(id)) {
int err;
if ((ap->flags & ATA_FLAG_AN) && ata_id_has_atapi_AN(id)) {
unsigned int err_mask;
/* issue SET feature command to turn this on */
err = ata_dev_set_AN(dev, SETFEATURES_SATA_ENABLE);
if (err)
err_mask = ata_dev_set_AN(dev, SETFEATURES_SATA_ENABLE);
if (err_mask)
ata_dev_printk(dev, KERN_ERR,
"unable to set AN, err %x\n",
err);
else
"failed to enable ATAPI AN "
"(err_mask=0x%x)\n", err_mask);
else {
dev->flags |= ATA_DFLAG_AN;
atapi_an_string = ", ATAPI AN";
}
}
if (ata_id_cdb_intr(dev->id)) {
@@ -2046,10 +2050,10 @@ int ata_dev_configure(struct ata_device *dev)
/* print device info to dmesg */
if (ata_msg_drv(ap) && print_info)
ata_dev_printk(dev, KERN_INFO,
"ATAPI: %s, %s, max %s%s\n",
"ATAPI: %s, %s, max %s%s%s\n",
modelbuf, fwrevbuf,
ata_mode_string(xfer_mask),
cdb_intr_string);
cdb_intr_string, atapi_an_string);
}
/* determine max_sectors */