On 2020/10/26 9:22, Jie Deng wrote:
On 2020/10/24 0:00, Michael S. Tsirkin wrote:
On Fri, Oct 23, 2020 at 02:51:25PM +0800, Jie Deng wrote:
+
+The driver queues requests to the virtqueues, and they are used by the
+device. The request is the representation of one segment of an I2C
+transaction. Each request is of form:
+
+\begin{lstlisting}
+struct virtio_i2c_req {
+ le16 addr;
+ le16 flags;
+ le16 len;
+ u8 buf[];
+ u8 status;
+};
+\end{lstlisting}
+
+The \field{addr} is the address of the I2C slave device.
+
+The first bit of \field{flags} indicates whether it is a read or
write request.
+It means a read request if the first bit of \field{flags} is set,
otherwise
+it is a write request. The rest bits of \field{flags} are reserved.
So how does one creates a multi-segment transaction then?
The I2C doesn't support segments numbering and sorting.
So if one creates a multi-segment transaction, then he/she should keep
the segments in order.
Thanks.
What about adding following requirement to the spec ?
"A driver MUST keep the requests in order if a multi-segment transaction
is going to be sent."
"A device MUST guarantee the requests being handled in order if a
multi-segment transaction is received."
Thanks.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]