From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-dm3nam03on0101.outbound.protection.outlook.com ([104.47.41.101]:12851 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728769AbeJAHN2 (ORCPT ); Mon, 1 Oct 2018 03:13:28 -0400 From: Sasha Levin To: "stable@vger.kernel.org" , "linux-kernel@vger.kernel.org" CC: Lorenzo Bianconi , Jonathan Cameron , Sasha Levin Subject: [PATCH AUTOSEL 4.18 19/65] iio: imu: st_lsm6dsx: take into account ts samples in wm configuration Date: Mon, 1 Oct 2018 00:38:14 +0000 Message-ID: <20181001003754.146961-19-alexander.levin@microsoft.com> References: <20181001003754.146961-1-alexander.levin@microsoft.com> In-Reply-To: <20181001003754.146961-1-alexander.levin@microsoft.com> Content-Language: en-US Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Sender: stable-owner@vger.kernel.org List-ID: From: Lorenzo Bianconi [ Upstream commit a13bf65f3f2e36008ea60b49d3bda2527e09fd9c ] Take into account hw timer samples in pattern length computation done in st_lsm6dsx_update_watermark routine for watermark configuration. Moreover use samples in pattern (sip) already computed in st_lsm6dsx_update_decimators routine Fixes: 213451076bd3 ("iio: imu: st_lsm6dsx: add hw timestamp support") Signed-off-by: Lorenzo Bianconi Signed-off-by: Jonathan Cameron Signed-off-by: Sasha Levin --- drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_buffer.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_buffer.c b/drivers/iio/i= mu/st_lsm6dsx/st_lsm6dsx_buffer.c index 4994f920a836..8653182be818 100644 --- a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_buffer.c +++ b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_buffer.c @@ -187,12 +187,15 @@ static int st_lsm6dsx_set_fifo_odr(struct st_lsm6dsx_= sensor *sensor, =20 int st_lsm6dsx_update_watermark(struct st_lsm6dsx_sensor *sensor, u16 wate= rmark) { - u16 fifo_watermark =3D ~0, cur_watermark, sip =3D 0, fifo_th_mask; + u16 fifo_watermark =3D ~0, cur_watermark, fifo_th_mask; struct st_lsm6dsx_hw *hw =3D sensor->hw; struct st_lsm6dsx_sensor *cur_sensor; int i, err, data; __le16 wdata; =20 + if (!hw->sip) + return 0; + for (i =3D 0; i < ST_LSM6DSX_ID_MAX; i++) { cur_sensor =3D iio_priv(hw->iio_devs[i]); =20 @@ -203,14 +206,10 @@ int st_lsm6dsx_update_watermark(struct st_lsm6dsx_sen= sor *sensor, u16 watermark) : cur_sensor->watermark; =20 fifo_watermark =3D min_t(u16, fifo_watermark, cur_watermark); - sip +=3D cur_sensor->sip; } =20 - if (!sip) - return 0; - - fifo_watermark =3D max_t(u16, fifo_watermark, sip); - fifo_watermark =3D (fifo_watermark / sip) * sip; + fifo_watermark =3D max_t(u16, fifo_watermark, hw->sip); + fifo_watermark =3D (fifo_watermark / hw->sip) * hw->sip; fifo_watermark =3D fifo_watermark * hw->settings->fifo_ops.th_wl; =20 err =3D regmap_read(hw->regmap, hw->settings->fifo_ops.fifo_th.addr + 1, --=20 2.17.1