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