On Wed, 2 Oct 2024 09:12:09 +0300 Alexandru Ardelean <aardelean@xxxxxxxxxxxx> wrote: > On Tue, Oct 1, 2024 at 9:41 PM Jonathan Cameron <jic23@xxxxxxxxxx> wrote: > > > > On Tue, 1 Oct 2024 08:42:23 -0500 > > David Lechner <dlechner@xxxxxxxxxxxx> wrote: > > > > > On 10/1/24 3:26 AM, Alexandru Ardelean wrote: > > > > On Thu, Sep 19, 2024 at 4:05 PM Alexandru Ardelean > > > > <aardelean@xxxxxxxxxxxx> wrote: > > > >> > > > > > > ... > > > > > > >> @@ -153,7 +349,19 @@ static int ad7606_scan_direct(struct iio_dev *indio_dev, unsigned int ch, > > > >> if (ret) > > > >> goto error_ret; > > > >> > > > >> - *val = sign_extend32(st->data[ch], 15); > > > >> + chan = &indio_dev->channels[ch + 1]; > > > >> + if (chan->scan_type.sign == 'u') { > > > >> + if (storagebits > 16) > > > >> + *val = st->data.buf32[ch]; > > > >> + else > > > >> + *val = st->data.buf16[ch]; > > > >> + return 0; > > > > > > > > Arrggh... > > > > I messed up here. > > > > Guillaume found a bug here, where this should be "goto error_ret" or > > > > do an "if () {} else {}" > > > > How should we do it here? > > if / else. Goto an error label when it's not an error would be horrible! > > > > > > > > Do we send a fix-patch or send a new series? > > > > > > > > > > Since this patch is already applied, just follow up with another > > > patch with a Fixes: tag. > > > > I sometimes tweak these sort of things if I haven't pushed out > > as togreg yet (or they are really bad!) but in this case I'm not > > 100% sure what the comment is, so I'll just apply a fix on top. > > > > So David is entirely correct in general but by luck of timing > > this time I'll tweak it. > > > > Please check the result in iio.git/testing > > I'll hold off pushing that out as togreg until at least end of > > tomorrow. One more day o > > The "return 0" needs to be removed in the driver. > > if (chan->scan_type.sign == 'u') { > if (storagebits > 16) > *val = st->data.buf32[ch]; > else > *val = st->data.buf16[ch]; > - return 0; Doh!. Just goes to show why I shouldn't just edit these things. Stupid mistake. I'll fix when on right machine. Jonathan > } else { > if (storagebits > 16) > *val = sign_extend32(st->data.buf32[ch], 17); > else > *val = sign_extend32(st->data.buf16[ch], 15); > } > > > > > > > Jonathan > > > > > > > > > > > > > > > >