[U-Boot] [PATCH] Improve DaVinci SPI speed

Delio Brignoli dbrignoli at audioscience.com
Sun May 23 13:41:56 CEST 2010


Hello Wolfgang,

On 21/05/2010, at 15:13, Wolfgang Denk wrote:
>> +				*rxp = buf_reg_val & 0xFF;	
>> +				rxp++;
>> +			}
> 
> Please change into:
> 
> 			if (rxp)
> 				*rxp++ = buf_reg_val & 0xFF;

Are you sure? Is folding that 3 line block into a one liner really worth the loss of readability? I know what that means, so do you and many others on this ML, but that's bound to raise a few eyebrows. A quick google search reveals quite a few articles devoted to clearing up the confusion about the semantics of that pointer dereference and post-increment. Just a few years ago I would have preferred your suggestion, but now I find that readability trumps cleverness, at least in a case like this. In the end it's your decision: if you like to be kinky, it's your prerogative ;-)

> 
>> +		if ((o_cnt < len) && ((buf_reg_val & SPIBUF_TXFULL_MASK) == 0)) {
>> +			/* write the data */
>> +			data1_reg_val &= ~0xFFFF;
>> +			if(txp) {
>> +				data1_reg_val |= *txp;
>> +				txp++;
>> +			}
> 
> Same here:
> 
> 			if (txp)
> 				data1_reg_val |= *txp++;

See my comment above.

> Please fix all other occurrences of "if(" into "if (" as well.

OK

> 
>> +			/* write to DAT1 is required to keep the serial transfer going */
>> +			/* we just terminate when we reach the end */

will fix

>> +				writel(data1_reg_val &
>> +					~(1 << SPIDAT1_CSHOLD_SHIFT), &ds->regs->dat1);
> 
> Line too long.

ditto

Thanks for the feedback
--
Delio

> 
> 
> 
> 
> Best regards,
> 
> Wolfgang Denk
> 
> -- 
> DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
> HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
> Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
> The software required `Windows 95 or better', so I installed Linux.




More information about the U-Boot mailing list