On Thu, 24 Sep 2020 13:29:02 +0300 Alexandru Ardelean <alexandru.ardel...@analog.com> wrote:
> This change is mostly cosmetic, but it's also a pre-cursor to the > the change for 'iio_buffer_set_attrs()', where the helper gets updated to > better support multiple IIO buffers for 1 IIO device. > > The only functional change is that the error message for the trigger alloc > failure is bound to the parent device vs the IIO device object. > > Also, the new at91_adc_buffer_and_trigger_init() function was moved after > the definition of the 'at91_adc_fifo_attributes'. > > Signed-off-by: Alexandru Ardelean <alexandru.ardel...@analog.com> Looks fine to me, but will let this sit on the list for a while so others have time to comment. Thanks, Jonathan > --- > drivers/iio/adc/at91-sama5d2_adc.c | 78 ++++++++++++++---------------- > 1 file changed, 36 insertions(+), 42 deletions(-) > > diff --git a/drivers/iio/adc/at91-sama5d2_adc.c > b/drivers/iio/adc/at91-sama5d2_adc.c > index ad7d9819f83c..b9c3cc6d5913 100644 > --- a/drivers/iio/adc/at91-sama5d2_adc.c > +++ b/drivers/iio/adc/at91-sama5d2_adc.c > @@ -1014,21 +1014,6 @@ static struct iio_trigger > *at91_adc_allocate_trigger(struct iio_dev *indio, > > return trig; > } > - > -static int at91_adc_trigger_init(struct iio_dev *indio) > -{ > - struct at91_adc_state *st = iio_priv(indio); > - > - st->trig = at91_adc_allocate_trigger(indio, st->selected_trig->name); > - if (IS_ERR(st->trig)) { > - dev_err(&indio->dev, > - "could not allocate trigger\n"); > - return PTR_ERR(st->trig); > - } > - > - return 0; > -} > - > static void at91_adc_trigger_handler_nodma(struct iio_dev *indio_dev, > struct iio_poll_func *pf) > { > @@ -1156,13 +1141,6 @@ static irqreturn_t at91_adc_trigger_handler(int irq, > void *p) > return IRQ_HANDLED; > } > > -static int at91_adc_buffer_init(struct iio_dev *indio) > -{ > - return devm_iio_triggered_buffer_setup(&indio->dev, indio, > - &iio_pollfunc_store_time, > - &at91_adc_trigger_handler, &at91_buffer_setup_ops); > -} > - > static unsigned at91_adc_startup_time(unsigned startup_time_min, > unsigned adc_clk_khz) > { > @@ -1683,6 +1661,40 @@ static const struct iio_info at91_adc_info = { > .hwfifo_set_watermark = &at91_adc_set_watermark, > }; > > +static int at91_adc_buffer_and_trigger_init(struct device *dev, > + struct iio_dev *indio) > +{ > + struct at91_adc_state *st = iio_priv(indio); > + int ret; > + > + ret = devm_iio_triggered_buffer_setup(&indio->dev, indio, > + &iio_pollfunc_store_time, > + &at91_adc_trigger_handler, &at91_buffer_setup_ops); > + if (ret < 0) { > + dev_err(dev, "couldn't initialize the buffer.\n"); > + return ret; > + } > + > + if (!st->selected_trig->hw_trig) > + return 0; > + > + iio_buffer_set_attrs(indio->buffer, at91_adc_fifo_attributes); > + > + st->trig = at91_adc_allocate_trigger(indio, st->selected_trig->name); > + if (IS_ERR(st->trig)) { > + dev_err(dev, "could not allocate trigger\n"); > + return PTR_ERR(st->trig); > + } > + > + /* > + * Initially the iio buffer has a length of 2 and > + * a watermark of 1 > + */ > + st->dma_st.watermark = 1; > + > + return 0; > +} > + > static int at91_adc_probe(struct platform_device *pdev) > { > struct iio_dev *indio_dev; > @@ -1818,27 +1830,9 @@ static int at91_adc_probe(struct platform_device *pdev) > > platform_set_drvdata(pdev, indio_dev); > > - ret = at91_adc_buffer_init(indio_dev); > - if (ret < 0) { > - dev_err(&pdev->dev, "couldn't initialize the buffer.\n"); > + ret = at91_adc_buffer_and_trigger_init(&pdev->dev, indio_dev); > + if (ret < 0) > goto per_clk_disable_unprepare; > - } > - > - if (st->selected_trig->hw_trig) { > - ret = at91_adc_trigger_init(indio_dev); > - if (ret < 0) { > - dev_err(&pdev->dev, "couldn't setup the triggers.\n"); > - goto per_clk_disable_unprepare; > - } > - /* > - * Initially the iio buffer has a length of 2 and > - * a watermark of 1 > - */ > - st->dma_st.watermark = 1; > - > - iio_buffer_set_attrs(indio_dev->buffer, > - at91_adc_fifo_attributes); > - } > > if (dma_coerce_mask_and_coherent(&indio_dev->dev, DMA_BIT_MASK(32))) > dev_info(&pdev->dev, "cannot set DMA mask to 32-bit\n");