dect
/
linux-2.6
Archived
13
0
Fork 0

[SCSI] libsas: fix scr_read/write users and update the libata documentation

This fixes up the usage in libsas (which are easy to miss, since they're
only in the scsi-misc tree) ... and also corrects the documentation on
the point of what these two function pointers actually return.

Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
This commit is contained in:
James Bottomley 2007-07-20 13:11:44 -05:00 committed by James Bottomley
parent fbc9a57274
commit 110dd8f19d
2 changed files with 19 additions and 10 deletions

View File

@ -456,8 +456,9 @@ void (*irq_clear) (struct ata_port *);
<sect2><title>SATA phy read/write</title> <sect2><title>SATA phy read/write</title>
<programlisting> <programlisting>
u32 (*scr_read) (struct ata_port *ap, unsigned int sc_reg); int (*scr_read) (struct ata_port *ap, unsigned int sc_reg,
void (*scr_write) (struct ata_port *ap, unsigned int sc_reg, u32 *val);
int (*scr_write) (struct ata_port *ap, unsigned int sc_reg,
u32 val); u32 val);
</programlisting> </programlisting>

View File

@ -172,7 +172,7 @@ static unsigned int sas_ata_qc_issue(struct ata_queued_cmd *qc)
qc->tf.nsect = 0; qc->tf.nsect = 0;
} }
ata_tf_to_fis(&qc->tf, (u8*)&task->ata_task.fis, 0); ata_tf_to_fis(&qc->tf, 1, 0, (u8*)&task->ata_task.fis);
task->uldd_task = qc; task->uldd_task = qc;
if (is_atapi_taskfile(&qc->tf)) { if (is_atapi_taskfile(&qc->tf)) {
memcpy(task->ata_task.atapi_packet, qc->cdb, qc->dev->cdb_len); memcpy(task->ata_task.atapi_packet, qc->cdb, qc->dev->cdb_len);
@ -298,7 +298,7 @@ static void sas_ata_tf_read(struct ata_port *ap, struct ata_taskfile *tf)
memcpy(tf, &dev->sata_dev.tf, sizeof (*tf)); memcpy(tf, &dev->sata_dev.tf, sizeof (*tf));
} }
static void sas_ata_scr_write(struct ata_port *ap, unsigned int sc_reg_in, static int sas_ata_scr_write(struct ata_port *ap, unsigned int sc_reg_in,
u32 val) u32 val)
{ {
struct domain_device *dev = ap->private_data; struct domain_device *dev = ap->private_data;
@ -317,25 +317,33 @@ static void sas_ata_scr_write(struct ata_port *ap, unsigned int sc_reg_in,
case SCR_ACTIVE: case SCR_ACTIVE:
dev->sata_dev.ap->sactive = val; dev->sata_dev.ap->sactive = val;
break; break;
default:
return -EINVAL;
} }
return 0;
} }
static u32 sas_ata_scr_read(struct ata_port *ap, unsigned int sc_reg_in) static int sas_ata_scr_read(struct ata_port *ap, unsigned int sc_reg_in,
u32 *val)
{ {
struct domain_device *dev = ap->private_data; struct domain_device *dev = ap->private_data;
SAS_DPRINTK("STUB %s\n", __FUNCTION__); SAS_DPRINTK("STUB %s\n", __FUNCTION__);
switch (sc_reg_in) { switch (sc_reg_in) {
case SCR_STATUS: case SCR_STATUS:
return dev->sata_dev.sstatus; *val = dev->sata_dev.sstatus;
return 0;
case SCR_CONTROL: case SCR_CONTROL:
return dev->sata_dev.scontrol; *val = dev->sata_dev.scontrol;
return 0;
case SCR_ERROR: case SCR_ERROR:
return dev->sata_dev.serror; *val = dev->sata_dev.serror;
return 0;
case SCR_ACTIVE: case SCR_ACTIVE:
return dev->sata_dev.ap->sactive; *val = dev->sata_dev.ap->sactive;
return 0;
default: default:
return 0xffffffffU; return -EINVAL;
} }
} }