On 17/04/2020 16:45:05+0300, Andy Shevchenko wrote: > On Thu, Apr 16, 2020 at 11:55 PM Alexandre Belloni > <alexandre.belloni@xxxxxxxxxxx> wrote: > > > > The first received byte is the MSB, followed by the LSB so the value needs > > to be byte swapped. > > > > Also, the ADC actually has a delay of one clock on the SPI bus. Read three > > bytes to get the last bit. > > > + return adc->rx_buf[0] << 9 | adc->rx_buf[1] << 1 | adc->rx_buf[2] >> 7; > > I just realize, isn't it an open coded variant of ror() / rol()? > No, this byteswaps and rotates. -- Alexandre Belloni, Bootlin Embedded Linux and Kernel engineering https://bootlin.com