SPI, _sz fields in struct spi_command

Warner Losh imp at bsdimp.com
Wed Feb 20 14:15:52 UTC 2013


On Feb 20, 2013, at 5:21 AM, Aleksandr Rybalko wrote:

> Hello ARM and MIPS hackers!
> 
> Sorry for cross-post, but we have supported SPI devices on both
> platforms (and seems no others).
> 
> Anyone know any reasons to keep both TX and RX _sz fields with same
> values?

I wrote them to be separate for a reason....  I think I'd thought there'd be cases when you'd want to throw away the results or transmit garbage...  I can't think of why right now...

> sys/dev/flash/at45d.c
> static int
> at45d_get_mfg_info(device_t dev, uint8_t *resp)
> {
> 	...
> 	cmd.tx_cmd_sz = cmd.rx_cmd_sz = 5;
> 	...
> }
> 
> or sys/dev/flash/mx25l.c
> static int
> mx25l_read(device_t dev, off_t offset, caddr_t data, off_t count)
> {
> 	...
> 	cmd.tx_cmd_sz = 5;
> 	cmd.rx_cmd_sz = 5;
> 	...
> }
> 
> That always require second but unused buffer or writable tx buffer. And
> not all controllers able to TX with RX same time. (at least rt305x
> can't). So if nobody have any objections, I will update drivers (SPI
> controllers and SPI attached devices) to set unused _sz field to zero.
> IIRC, I will require help with AT91 controller update, at least with
> testing.

The AT91, I think, required a minimum size, which is why the at45d driver set it I think..

I can't imagine an SPI controller that can't do both, because when you write something with SPI, you usually have to read back the status at the same time...

Warner

> Thanks.
> 
> WBW
> -- 
> Aleksandr Rybalko <ray at freebsd.org>
> _______________________________________________
> freebsd-mips at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-mips
> To unsubscribe, send any mail to "freebsd-mips-unsubscribe at freebsd.org"



More information about the freebsd-arm mailing list