Hi Mark, Thanks for the review. On Tue, Feb 28, 2023 at 01:23:09AM +0800, Mark Brown wrote: > On Sat, Feb 25, 2023 at 10:01:17PM +0800, Ye Xiang wrote: > > > +struct spi_xfer_packet { > > + u8 indicator; > > + s8 len; > > + u8 data[]; > > +} __packed; > > > +static int ljca_spi_read_write(struct ljca_spi_dev *ljca_spi, const u8 *w_data, u8 *r_data, int len, > > + int id, int complete, int cmd) > > +{ > > + struct spi_xfer_packet *w_packet = (struct spi_xfer_packet *)ljca_spi->obuf; > > + struct spi_xfer_packet *r_packet = (struct spi_xfer_packet *)ljca_spi->ibuf; > > + unsigned int ibuf_len = LJCA_SPI_BUF_SIZE; > > + int ret; > > + > > + w_packet->indicator = FIELD_PREP(LJCA_SPI_XFER_INDICATOR_ID, id) | > > + FIELD_PREP(LJCA_SPI_XFER_INDICATOR_CMPL, complete) | > > + FIELD_PREP(LJCA_SPI_XFER_INDICATOR_INDEX, > > + ljca_spi->spi_info->id); > > + > > + if (cmd == LJCA_SPI_READ) { > > + w_packet->len = sizeof(u16); > > + *(u16 *)&w_packet->data[0] = len; > > Are there no endianness considerations here? Yes, it should be little endian. Will address this. > > > +static int ljca_spi_transfer(struct ljca_spi_dev *ljca_spi, const u8 *tx_data, > > + u8 *rx_data, u16 len) > > +{ > > This function has one caller with barely anything in it - perhaps just > inline it? Agree. Will make this function inline. -- Thanks Ye Xiang