[PATCH] [v2] sata_fsl: add workaround for data length mismatch on freescale V2 controller

Xie Shaohui-B21989 B21989 at freescale.com
Thu Sep 6 21:57:37 EST 2012


> >
> >   	hstatus = ioread32(hcr_base + HSTATUS);
> >
> >   	sata_fsl_scr_read(&ap->link, SCR_ERROR, &SError);
> >
> > +	/* Read command completed register */
> > +	done_mask = ioread32(hcr_base + CC);
> > +
> > +	/* Workaround for data length mismatch errata */
> > +	if (unlikely(hstatus & INT_ON_DATA_LENGTH_MISMATCH)) {
> > +		for (tag = 0; tag < ATA_MAX_QUEUE; tag++) {
> > +			qc = ata_qc_from_tag(ap, tag);
> > +			if (qc && ata_is_atapi(qc->tf.protocol)) {
> > +				u32 Hcontrol;
> 
>     No uppercase in variable names please. 
[S.H] OK.

Besides, you have 'hstatus'
> variable already and that would be inconsistent.
[S.H] Yes, but I ignored fatal error and device error, so this won't be an issue.

> 
> > +#define HCONTROL_CLEAR_ERROR	(1 << 27)
> > +				/* Set HControl[27] to clear error registers */
> > +				Hcontrol = ioread32(hcr_base + HCONTROL);
> > +				iowrite32(Hcontrol | HCONTROL_CLEAR_ERROR,
> > +						hcr_base + HCONTROL);
> > +
> > +				/* Clear HControl[27] */
> > +				iowrite32(Hcontrol & (~HCONTROL_CLEAR_ERROR),
> 
>     Parens not needed around ~HCONTROL_CLEAR_ERROR.
[S.H] OK.


Best Regards, 
Shaohui Xie



More information about the Linuxppc-dev mailing list