Re: [PATCH v2 1/2] iio: gyro: Add driver support for ADXRS290

From: Nishant Malpani
Date: Wed Jul 22 2020 - 05:40:15 EST



On 22/07/20 3:08 am, Andy Shevchenko wrote:
On Tue, Jul 21, 2020 at 11:35 PM Nishant Malpani
<nish.malpani25@xxxxxxxxx> wrote:
On 22/07/20 1:16 am, Andy Shevchenko wrote:
On Tue, Jul 21, 2020 at 9:20 PM Nishant Malpani
<nish.malpani25@xxxxxxxxx> wrote:

...

+ *vals = (const int *)adxrs290_lpf_3db_freq_tbl;

Why casting?

adxrs290_lpf_3db_freq_tbl is of type (int *)[2], right? Without the
casting, an incompatible-pointer-type error is thrown.

...

+ *vals = (const int *)adxrs290_hpf_3db_freq_tbl;

Ditto.

See above comment.

Can't you declare table as const int?

I'm not sure I understand you completely here; do you mean const int *? So, an array of alternate integer and fractional parts? I suppose that's possible but we'd be introducing unwanted complexity I feel - for example, currently the index of the 3db frequency in the table is used to directly map & set bits in the filter register corresponding to that frequency but with the approach you share, we'd have to apply a transformation (div by 2) to set the same bits in the filter register. Do you think the added complexity justifies the removal of the casting?

...

+ /* max transition time to measurement mode */
+ msleep_interruptible(ADXRS290_MAX_TRANSITION_TIME_MS);

I'm not sure what the point of interruptible variant here?

I referred Documentation/timers/timers-howto.rst for this.
My reasoning was shaped to use the interruptible variant because the
transition settles in a time *less than* 100ms and since 100ms is quite
a huge time to sleep, it should be interrupted in case a signal arrives.

This is probe of the device,
What are the expectations here?

I fail to understand why this can't be used in the probe() but perhaps in a routine to standby/resume. Could you please elaborate?

With regards,
Nishant Malpani