On 02-03-21, 13:21, Jie Deng wrote: > > On 2021/3/2 12:42, Viresh Kumar wrote: > > On 01-03-21, 14:41, Jie Deng wrote: > > > +static int virtio_i2c_send_reqs(struct virtqueue *vq, > > > + struct virtio_i2c_req *reqs, > > > + struct i2c_msg *msgs, int nr) > > > +{ > > > + struct scatterlist *sgs[3], out_hdr, msg_buf, in_hdr; > > > + int i, outcnt, incnt, err = 0; > > > + u8 *buf; > > > + > > > + for (i = 0; i < nr; i++) { > > > + if (!msgs[i].len) > > > + break; > > > + > > > + reqs[i].out_hdr.addr = cpu_to_le16(msgs[i].addr << 1); > > And this won't work for 10 bit addressing right? Don't we support that > > in kernel ? > > > > From Spec: > > > > \begin{tabular}{ |l||l|l|l|l|l|l|l|l|l|l|l|l|l|l|l|l| } > > \hline > > Bits & 15 & 14 & 13 & 12 & 11 & 10 & 9 & 8 & 7 & 6 & 5 & 4 & 3 & 2 & 1 & 0 \\ > > \hline > > 7-bit address & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & A6 & A5 & A4 & A3 & A2 & A1 & A0 & 0 \\ > > \hline > > 10-bit address & A7 & A6 & A5 & A4 & A3 & A2 & A1 & A0 & 1 & 1 & 1 & 1 & 0 & A9 & A8 & 0 \\ > > \hline > > \end{tabular} > Currently, to make things simple, this driver only supports 7 bit mode. > It doesn't declare "I2C_FUNC_10BIT_ADDR" in the functionality. > We may add in the future according to the need. Okay, fair enough. Please add such details somewhere in the code so people can understand it. You can very well add these at the top of the file as well, in the general header. -- viresh