Hello Andy, Thanks for the review: > -----Original Message----- > From: Andy Shevchenko <andy.shevchenko@xxxxxxxxx> > Sent: Friday, July 16, 2021 5:53 PM > To: Miclaus, Antoniu <Antoniu.Miclaus@xxxxxxxxxx> > Cc: linux-iio@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; > jic23@xxxxxxxxxx; devicetree@xxxxxxxxxxxxxxx > Subject: Re: [PATCH v6 1/2] iio: frequency: adrf6780: add support for > ADRF6780 > > [External] > > On Fri, Jul 16, 2021 at 2:43 PM Antoniu Miclaus > <antoniu.miclaus@xxxxxxxxxx> wrote: > > > > The ADRF6780 is a silicon germanium (SiGe) design, wideband, > > microwave upconverter optimized for point to point microwave > > radio designs operating in the 5.9 GHz to 23.6 GHz frequency > > range. > > > Datasheet: > > https://www.analog.com/media/en/technical-documentation/data- > sheets/ADRF6780.pdf > > Is it one line? If not, please put on one line and drop below the > blank line so it will go as a tag. Yes, it is one line. > > > > > Signed-off-by: Antoniu Miclaus <antoniu.miclaus@xxxxxxxxxx> > > First question is why not to use the regmap API (I have heard it has > gained support of 17 bit)? Initially that was the plan, but after this patch: https://github.com/torvalds/linux/commit/4191f19792bf91267835eb090d970e9cd6277a65 the custom write formats for regmap allow the read only via cached registers. Therefore, I preferred using spi transfers for write/read to/from the device. > ... > > > + depends on COMMON_CLK > > Is it mandatory for any function inside the device? Yes. It will serve as LO input to the device. > > ... > > > +static int adrf6780_spi_read(struct adrf6780_dev *dev, unsigned int reg, > > + unsigned int *val) > > +{ > > + int ret; > > + struct spi_transfer t = {0}; > > > + dev->data[0] = 0x80 | (reg << 1); > > This 0x80 I guess is pretty much standard and regmap SPI supports it. > > > + dev->data[1] = 0x0; > > + dev->data[2] = 0x0; > > + > > + t.rx_buf = &dev->data[0]; > > + t.tx_buf = &dev->data[0]; > > + t.len = 3; > > + > > + ret = spi_sync_transfer(dev->spi, &t, 1); > > + if (ret) > > + return ret; > > + > > + *val = (get_unaligned_be24(&dev->data[0]) >> 1) & GENMASK(15, 0); > > + > > + return ret; > > +} > > ... > > > + usleep_range(200, 250); > > Needs a comment. Will add in next patch version. > > -- > With Best Regards, > Andy Shevchenko Regards, Antoniu