forked from mirrors/linux
		
	[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:
		
							parent
							
								
									fbc9a57274
								
							
						
					
					
						commit
						110dd8f19d
					
				
					 2 changed files with 19 additions and 10 deletions
				
			
		| 
						 | 
					@ -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>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue