diff options
-rw-r--r-- | Documentation/DocBook/libata.tmpl | 5 | ||||
-rw-r--r-- | drivers/scsi/libsas/sas_ata.c | 24 |
2 files changed, 19 insertions, 10 deletions
diff --git a/Documentation/DocBook/libata.tmpl b/Documentation/DocBook/libata.tmpl index e2e24b4778d4..ba9975771503 100644 --- a/Documentation/DocBook/libata.tmpl +++ b/Documentation/DocBook/libata.tmpl | |||
@@ -456,8 +456,9 @@ void (*irq_clear) (struct ata_port *); | |||
456 | 456 | ||
457 | <sect2><title>SATA phy read/write</title> | 457 | <sect2><title>SATA phy read/write</title> |
458 | <programlisting> | 458 | <programlisting> |
459 | u32 (*scr_read) (struct ata_port *ap, unsigned int sc_reg); | 459 | int (*scr_read) (struct ata_port *ap, unsigned int sc_reg, |
460 | void (*scr_write) (struct ata_port *ap, unsigned int sc_reg, | 460 | u32 *val); |
461 | int (*scr_write) (struct ata_port *ap, unsigned int sc_reg, | ||
461 | u32 val); | 462 | u32 val); |
462 | </programlisting> | 463 | </programlisting> |
463 | 464 | ||
diff --git a/drivers/scsi/libsas/sas_ata.c b/drivers/scsi/libsas/sas_ata.c index 2db258996751..359391f5735f 100644 --- a/drivers/scsi/libsas/sas_ata.c +++ b/drivers/scsi/libsas/sas_ata.c | |||
@@ -172,7 +172,7 @@ static unsigned int sas_ata_qc_issue(struct ata_queued_cmd *qc) | |||
172 | qc->tf.nsect = 0; | 172 | qc->tf.nsect = 0; |
173 | } | 173 | } |
174 | 174 | ||
175 | ata_tf_to_fis(&qc->tf, (u8*)&task->ata_task.fis, 0); | 175 | ata_tf_to_fis(&qc->tf, 1, 0, (u8*)&task->ata_task.fis); |
176 | task->uldd_task = qc; | 176 | task->uldd_task = qc; |
177 | if (is_atapi_taskfile(&qc->tf)) { | 177 | if (is_atapi_taskfile(&qc->tf)) { |
178 | memcpy(task->ata_task.atapi_packet, qc->cdb, qc->dev->cdb_len); | 178 | 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) | |||
298 | memcpy(tf, &dev->sata_dev.tf, sizeof (*tf)); | 298 | memcpy(tf, &dev->sata_dev.tf, sizeof (*tf)); |
299 | } | 299 | } |
300 | 300 | ||
301 | static void sas_ata_scr_write(struct ata_port *ap, unsigned int sc_reg_in, | 301 | static int sas_ata_scr_write(struct ata_port *ap, unsigned int sc_reg_in, |
302 | u32 val) | 302 | u32 val) |
303 | { | 303 | { |
304 | struct domain_device *dev = ap->private_data; | 304 | 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, | |||
317 | case SCR_ACTIVE: | 317 | case SCR_ACTIVE: |
318 | dev->sata_dev.ap->sactive = val; | 318 | dev->sata_dev.ap->sactive = val; |
319 | break; | 319 | break; |
320 | default: | ||
321 | return -EINVAL; | ||
320 | } | 322 | } |
323 | return 0; | ||
321 | } | 324 | } |
322 | 325 | ||
323 | static u32 sas_ata_scr_read(struct ata_port *ap, unsigned int sc_reg_in) | 326 | static int sas_ata_scr_read(struct ata_port *ap, unsigned int sc_reg_in, |
327 | u32 *val) | ||
324 | { | 328 | { |
325 | struct domain_device *dev = ap->private_data; | 329 | struct domain_device *dev = ap->private_data; |
326 | 330 | ||
327 | SAS_DPRINTK("STUB %s\n", __FUNCTION__); | 331 | SAS_DPRINTK("STUB %s\n", __FUNCTION__); |
328 | switch (sc_reg_in) { | 332 | switch (sc_reg_in) { |
329 | case SCR_STATUS: | 333 | case SCR_STATUS: |
330 | return dev->sata_dev.sstatus; | 334 | *val = dev->sata_dev.sstatus; |
335 | return 0; | ||
331 | case SCR_CONTROL: | 336 | case SCR_CONTROL: |
332 | return dev->sata_dev.scontrol; | 337 | *val = dev->sata_dev.scontrol; |
338 | return 0; | ||
333 | case SCR_ERROR: | 339 | case SCR_ERROR: |
334 | return dev->sata_dev.serror; | 340 | *val = dev->sata_dev.serror; |
341 | return 0; | ||
335 | case SCR_ACTIVE: | 342 | case SCR_ACTIVE: |
336 | return dev->sata_dev.ap->sactive; | 343 | *val = dev->sata_dev.ap->sactive; |
344 | return 0; | ||
337 | default: | 345 | default: |
338 | return 0xffffffffU; | 346 | return -EINVAL; |
339 | } | 347 | } |
340 | } | 348 | } |
341 | 349 | ||