SPI, _sz fields in struct spi_command

Patrick Kelsey kelsey at ieee.org
Thu Feb 21 15:21:03 UTC 2013


>On Thu, Feb 21, 2013 at 9:30 AM, Aleksandr Rybalko <ray at freebsd.org> wrote:
>> On Thu, 21 Feb 2013 02:44:33 +0100
>> Bernd Walter <ticso at cicely7.cicely.de> wrote:
>>
>> On Thu, Feb 21, 2013 at 02:26:55AM +0200, Aleksandr Rybalko wrote:
>> > 2. teach consumers to give only correct numbers (very nice we have only
>> > two SPI devices in tree)
>> >
>> > After that we will be able to make drivers for some (potential) devices
>> > which will require bidirectional communication. And controllers which
>> > can't do that, will just report error in that. I believe peoples thinks
>> > before attach such devices to controllers, so we will not have such
>> > incompatibility.
>>
>> I don't think there are many devices requiring RX/TX at the same time.
>
> Anyway, we will be able to do that, and we don't care now because don't
> have such drivers yet.
>

Taking the view that "RX/TX at the same time" means that one wants to
send meaningful data to the slave device at the same time one is
interested in what data is returned during that transmission, there
are such devices in use out there.  Linear Technologies has several
ADCs, such as the LTC2446, for which you obtain the previous
conversion result while sending the configuration bits for the next
conversion to be performed.

Although this is slightly out of focus for the specific issue
originally raised, while on the topic of things that need to get done
on SPI in real systems, there are also devices out there that require
specific data or some number of clocks to be provided while chip
select is deasserted.  One example of the former is the LTC2404, which
is a multichannel ADC for which the input channel for the next
conversion is selected by the last four bits clocked in *before* chip
select is asserted.  One example of the latter is the spec for SPI
access to MMC/SD cards, which requires a certain number of clocks to
be applied with chip select deasserted in order to initialize the
card.  If you ever find yourself wondering why an SPI software
interface provides independent bus acquisition and chip select
control, the reason is to support these types of devices.

-Patrick


More information about the freebsd-arm mailing list