From patchwork Mon Feb 17 14:01:28 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jonathan Cameron X-Patchwork-Id: 13977882 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4866633DF for ; Mon, 17 Feb 2025 14:01:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739800909; cv=none; b=nT+wLcL0MADT6CGFSIMUE2oUe7jDllzdwnqySCUe6uerxeQeMj1JpN2YG5RM1cI34V0t6WNBcd4p9ZculQndKrE0xoK0UoTZi/IKRkktcmGkJsiFJJyG4S2oJciWRgGzQo5wfBPto5gSeypKLwSHABbT5tcQCkwU90f+JsihRFE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739800909; c=relaxed/simple; bh=9YWcOgh3TsA0sSkB58gSiKoqn6UaLbJG93pRHT+gH/A=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ALKMznaFyJplS1H9mS0qhwF/y5TQOHylSJYKwFt4dQrAF6TPPW8Tz0s0yn9OaiEhpXSCraVMvN0EpQHkQCmsk6FhN1nEMiKlxJDuzUKUjKipDSZw4SscOPO2kWpeOhbF7az2TdEAu/cJBk/qtEQfefIwc913CchFGt/6H0/u4vQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Lo4r12bO; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Lo4r12bO" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 40F49C4CEE4; Mon, 17 Feb 2025 14:01:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739800908; bh=9YWcOgh3TsA0sSkB58gSiKoqn6UaLbJG93pRHT+gH/A=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Lo4r12bODZ9IrEWAd6EwSQ76UFfH5xIzp8fHIeiV7F8RVaGJe1tzjXQxMcrqgWZNq UO5m02SPX/LiCVgz+jZs3nHYQ1TmYXirU+c4tnecc1sH4zu48KsIonIRbDJCF0W2BY pOx5hRQbko2t3mwgsYiVa1Xb73+X6TWaRvtPeJKpbKCzzJkoL/5dSkVGvN72O4O4rO +0LUwmuetZhX+ldSWXuFNjIROc0FW65MmU4PvrO9fZWWAo2qAEqADbro2+xCMTs7/+ gKYDHfjD11CrV++MpXYUaLcTDG/dm0k21iAHgG8QR0cM8dXXnbWMI+mEcQ2IOz587u 8Dxf8k1feukSg== From: Jonathan Cameron To: linux-iio@vger.kernel.org Cc: David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Antoniu Miclaus , Matti Vaittinen , Jonathan Cameron Subject: [PATCH 1/8] iio: accel: mma8452: Ensure error return on failure to matching oversampling ratio Date: Mon, 17 Feb 2025 14:01:28 +0000 Message-ID: <20250217140135.896574-2-jic23@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250217140135.896574-1-jic23@kernel.org> References: <20250217140135.896574-1-jic23@kernel.org> Precedence: bulk X-Mailing-List: linux-iio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Jonathan Cameron If a match was not found, then the write_raw() callback would return the odr index, not an error. Return -EINVAL if this occurs. To avoid similar issues in future, introduce j, a new indexing variable rather than using ret for this purpose. Fixes: 79de2ee469aa ("iio: accel: mma8452: claim direct mode during write raw") Signed-off-by: Jonathan Cameron --- drivers/iio/accel/mma8452.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/drivers/iio/accel/mma8452.c b/drivers/iio/accel/mma8452.c index 962d289065ab..1b2014c4c4b4 100644 --- a/drivers/iio/accel/mma8452.c +++ b/drivers/iio/accel/mma8452.c @@ -712,7 +712,7 @@ static int mma8452_write_raw(struct iio_dev *indio_dev, int val, int val2, long mask) { struct mma8452_data *data = iio_priv(indio_dev); - int i, ret; + int i, j, ret; ret = iio_device_claim_direct_mode(indio_dev); if (ret) @@ -772,14 +772,18 @@ static int mma8452_write_raw(struct iio_dev *indio_dev, break; case IIO_CHAN_INFO_OVERSAMPLING_RATIO: - ret = mma8452_get_odr_index(data); + j = mma8452_get_odr_index(data); for (i = 0; i < ARRAY_SIZE(mma8452_os_ratio); i++) { - if (mma8452_os_ratio[i][ret] == val) { + if (mma8452_os_ratio[i][j] == val) { ret = mma8452_set_power_mode(data, i); break; } } + if (i == ARRAY_SIZE(mma8452_os_ratio)) { + ret = -EINVAL; + break; + } break; default: ret = -EINVAL; From patchwork Mon Feb 17 14:01:29 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jonathan Cameron X-Patchwork-Id: 13977883 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 39A55944E for ; Mon, 17 Feb 2025 14:01:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739800912; cv=none; b=SvT02xlGKnWMUgS10lEs6Qq8y3SKbcA4B53vjHwqFD64ngAEH5T5Q6G8KwfRqdaWRf47avewNSOAXTnkMb3BX5fkbrWX4BZdZcIXxG7fki3HVA8snhqbakc8Jc9qJYd+v6wh7k5bt7BY7IfgAel6oHZNmsrvoMqRKclHc61TVKE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739800912; c=relaxed/simple; bh=0I+LxMd8qdHtKsfCsfGWQJPvZYTsFNPF7E1I3y1zto8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=fuGYX7F82G02+DMvNbMW08asukei6Wfx3S1Y0w4kXAcujEs2m+1T3/JznSmy1SqQKg9jBiLoQgHfZ7xVkd40WXjC70fNLeBoES+juraWkP4a/Wg/+towPAFtK1HGBwqRkiHbWhSdEkk+0Yf13cbx6m0LXEAk60/v9xP6U17zMtc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=sfRQ2fFj; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="sfRQ2fFj" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 838AAC4CED1; Mon, 17 Feb 2025 14:01:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739800912; bh=0I+LxMd8qdHtKsfCsfGWQJPvZYTsFNPF7E1I3y1zto8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=sfRQ2fFjPgLu2xigPY4cGsjAW5SSVg/MfsZV9pFGATxJHQBBXWCeNBsBnqe2mHZBu E752j2B9H7VdFxYzqWaTEFpcnj9mRlBoFIqXE3SklwvFpEGjFYBjVDR+TSwewLFTvR ETvcLonBEs0buO2f1B24V+vDCH4z6baaCRiuYDO9sr5cIemGBurnC3WuzHWXCo01Ey mApzFymtfTxNdAmtodiLkSPuqOTDake+OTRGlPbEUGNkN1A23O9adNWIo8DTlb6rop aM6P1Rzz5flTySjCtTsU5mhGjJ9/zI8LBt0xqpfxIhr0ZsGLp63QLtg+nheiY21pUD 5jDu6E+xQlKUA== From: Jonathan Cameron To: linux-iio@vger.kernel.org Cc: David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Antoniu Miclaus , Matti Vaittinen , Jonathan Cameron Subject: [PATCH 2/8] iio: accel: mma8452: Factor out guts of write_raw() to simplify locking Date: Mon, 17 Feb 2025 14:01:29 +0000 Message-ID: <20250217140135.896574-3-jic23@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250217140135.896574-1-jic23@kernel.org> References: <20250217140135.896574-1-jic23@kernel.org> Precedence: bulk X-Mailing-List: linux-iio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Jonathan Cameron Factoring out those parts of write_raw() in which direct mode is held allows for direct returns on errors, simplifying the code. Signed-off-by: Jonathan Cameron --- drivers/iio/accel/mma8452.c | 78 ++++++++++++++++++------------------- 1 file changed, 37 insertions(+), 41 deletions(-) diff --git a/drivers/iio/accel/mma8452.c b/drivers/iio/accel/mma8452.c index 1b2014c4c4b4..8ce4ddadc559 100644 --- a/drivers/iio/accel/mma8452.c +++ b/drivers/iio/accel/mma8452.c @@ -707,55 +707,45 @@ static int mma8452_set_hp_filter_frequency(struct mma8452_data *data, return mma8452_change_config(data, MMA8452_HP_FILTER_CUTOFF, reg); } -static int mma8452_write_raw(struct iio_dev *indio_dev, +static int __mma8452_write_raw(struct iio_dev *indio_dev, struct iio_chan_spec const *chan, int val, int val2, long mask) { struct mma8452_data *data = iio_priv(indio_dev); int i, j, ret; - ret = iio_device_claim_direct_mode(indio_dev); - if (ret) - return ret; - switch (mask) { case IIO_CHAN_INFO_SAMP_FREQ: i = mma8452_get_samp_freq_index(data, val, val2); - if (i < 0) { - ret = i; - break; - } + if (i < 0) + return i; + data->ctrl_reg1 &= ~MMA8452_CTRL_DR_MASK; data->ctrl_reg1 |= i << MMA8452_CTRL_DR_SHIFT; data->sleep_val = mma8452_calculate_sleep(data); - ret = mma8452_change_config(data, MMA8452_CTRL_REG1, - data->ctrl_reg1); - break; + return mma8452_change_config(data, MMA8452_CTRL_REG1, + data->ctrl_reg1); + case IIO_CHAN_INFO_SCALE: i = mma8452_get_scale_index(data, val, val2); - if (i < 0) { - ret = i; - break; - } + if (i < 0) + return i; data->data_cfg &= ~MMA8452_DATA_CFG_FS_MASK; data->data_cfg |= i; - ret = mma8452_change_config(data, MMA8452_DATA_CFG, - data->data_cfg); - break; + return mma8452_change_config(data, MMA8452_DATA_CFG, + data->data_cfg); + case IIO_CHAN_INFO_CALIBBIAS: - if (val < -128 || val > 127) { - ret = -EINVAL; - break; - } + if (val < -128 || val > 127) + return -EINVAL; - ret = mma8452_change_config(data, - MMA8452_OFF_X + chan->scan_index, - val); - break; + return mma8452_change_config(data, + MMA8452_OFF_X + chan->scan_index, + val); case IIO_CHAN_INFO_HIGH_PASS_FILTER_3DB_FREQUENCY: if (val == 0 && val2 == 0) { @@ -764,32 +754,38 @@ static int mma8452_write_raw(struct iio_dev *indio_dev, data->data_cfg |= MMA8452_DATA_CFG_HPF_MASK; ret = mma8452_set_hp_filter_frequency(data, val, val2); if (ret < 0) - break; + return ret; } - ret = mma8452_change_config(data, MMA8452_DATA_CFG, + return mma8452_change_config(data, MMA8452_DATA_CFG, data->data_cfg); - break; case IIO_CHAN_INFO_OVERSAMPLING_RATIO: j = mma8452_get_odr_index(data); for (i = 0; i < ARRAY_SIZE(mma8452_os_ratio); i++) { - if (mma8452_os_ratio[i][j] == val) { - ret = mma8452_set_power_mode(data, i); - break; - } + if (mma8452_os_ratio[i][j] == val) + return mma8452_set_power_mode(data, i); } - if (i == ARRAY_SIZE(mma8452_os_ratio)) { - ret = -EINVAL; - break; - } - break; + + return -EINVAL; + default: - ret = -EINVAL; - break; + return -EINVAL; } +} + +static int mma8452_write_raw(struct iio_dev *indio_dev, + struct iio_chan_spec const *chan, + int val, int val2, long mask) +{ + int ret; + + ret = iio_device_claim_direct_mode(indio_dev); + if (ret) + return ret; + ret = __mma8452_write_raw(indio_dev, chan, val, val2, mask); iio_device_release_direct_mode(indio_dev); return ret; } From patchwork Mon Feb 17 14:01:30 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jonathan Cameron X-Patchwork-Id: 13977884 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3DFAA33DF for ; Mon, 17 Feb 2025 14:01:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739800915; cv=none; b=gm++rsGjJ7yNajWtE7bW4kcJMbMjTrJyt6JJwcIMn7ivDhkEFENPb4XJzUBVB2At4ZFcrPyYDcp0XxumRlt/RueCHNNZh4OnsQo/Yms2D5PUbmmZWSD244nXmr2261vFhw24wDBzGX7dBdPMDS/3t/5yMRFxcW8k+9GQAYIhKyw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739800915; c=relaxed/simple; bh=TJoaSjvpYQoqgTt+vD4XOI0TBbWlYvKyeZoU82p+YWg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=YDGxN9BIfAeuCRh+Cl7UnsiAz6/Zes/dTdL+As52iCh7WiTXU/N73804zxKQSyf8dgL1E7TrjZuFX6G6VETTZephkpnysSwXmbQjl6CM0EWQ5XOyeK3EN5HyJLdRlK6B6E8jrdt24ktea3E3rtG0bjeK6+Lsh9lgS5xxCSq3IdQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=oLnXQC5T; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="oLnXQC5T" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C874BC4CED1; Mon, 17 Feb 2025 14:01:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739800914; bh=TJoaSjvpYQoqgTt+vD4XOI0TBbWlYvKyeZoU82p+YWg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=oLnXQC5ThaE4SSPvR2u3wxJ3/N9nnJmH6MV3V044d0qnlAnps7AauV+pi/TrKDBf6 Cu8xsRz1edsasUKRHDW2eLgCELvMgg6qvywhWHBEQq1+RQGFVkxviCGOQrB6KAss+Q RekDIFVQjVVvZR/Y9aCiOnsX4H+/EVf83UgRPmXshe3xsTuC8slB1op7NM+dURnlbr 2pyU8ObdEU5ROdFE8owno20x88appSIUcorGf7JRPq/q0P/cXoGgx/4mbJe2QvUc4M SLEYspQqkhtL4PIy27NVHYXDSRW/2mTNSdYC4+JHM8lAqjwbv5V9XIoE/+Nx3zkcRo xQU8r3J+mo+zQ== From: Jonathan Cameron To: linux-iio@vger.kernel.org Cc: David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Antoniu Miclaus , Matti Vaittinen , Jonathan Cameron Subject: [PATCH 3/8] iio: accel: mma8452: Switch to sparse friendly iio_device_claim/release_direct() Date: Mon, 17 Feb 2025 14:01:30 +0000 Message-ID: <20250217140135.896574-4-jic23@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250217140135.896574-1-jic23@kernel.org> References: <20250217140135.896574-1-jic23@kernel.org> Precedence: bulk X-Mailing-List: linux-iio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Jonathan Cameron These new functions allow sparse to find failures to release direct mode reducing chances of bugs over the claim_direct_mode() functions that are deprecated. Signed-off-by: Jonathan Cameron --- drivers/iio/accel/mma8452.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/drivers/iio/accel/mma8452.c b/drivers/iio/accel/mma8452.c index 8ce4ddadc559..05f5482f366e 100644 --- a/drivers/iio/accel/mma8452.c +++ b/drivers/iio/accel/mma8452.c @@ -497,14 +497,13 @@ static int mma8452_read_raw(struct iio_dev *indio_dev, switch (mask) { case IIO_CHAN_INFO_RAW: - ret = iio_device_claim_direct_mode(indio_dev); - if (ret) - return ret; + if (!iio_device_claim_direct(indio_dev)) + return -EBUSY; mutex_lock(&data->lock); ret = mma8452_read(data, buffer); mutex_unlock(&data->lock); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); if (ret < 0) return ret; @@ -781,12 +780,11 @@ static int mma8452_write_raw(struct iio_dev *indio_dev, { int ret; - ret = iio_device_claim_direct_mode(indio_dev); - if (ret) - return ret; + if (!iio_device_claim_direct(indio_dev)) + return -EBUSY; ret = __mma8452_write_raw(indio_dev, chan, val, val2, mask); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); return ret; } From patchwork Mon Feb 17 14:01:31 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jonathan Cameron X-Patchwork-Id: 13977885 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2DF1B21C177 for ; Mon, 17 Feb 2025 14:01:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739800919; cv=none; b=Jz6yOSTp5LqwcROkV4JifYJQVih6Y4NErH0W/baQCLBm5C7Fcu8OyY9D1HpfUs8IxECX4Tljkqa9Mu/mP4uf8s6+MYc2NYUDcmweN838vwtrtFvD/TjBBpYBASI98e7ySKKm48td0/0bryGAn3MRRXIUTtNT6UXIWsGhnDSpkpw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739800919; c=relaxed/simple; bh=8OnohwFxfDI7bGeLRnQHXh5mTMkLAajhDEx2poQ7OkA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=MZwTobSRYVUUDykAPHsaA5OtkYz+z0Rjrj6bNNEL+FL3DB3CYz/4mz3mK/Nc6inM/PWNANWhcpblwDI5yHGj/rLxY15QGCtzyvVJLEY/ox5Dj+1LHl2TnFaWo8B5WtaTG5IxGpjYOrtx8q2k09ULsxmF9ODKtBlpoo/OICdA/k8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=gHTMId9p; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="gHTMId9p" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8DB7AC4CED1; Mon, 17 Feb 2025 14:01:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739800918; bh=8OnohwFxfDI7bGeLRnQHXh5mTMkLAajhDEx2poQ7OkA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=gHTMId9pzNXagsmO2hXVqLbUL0V0AMw3k5nnTG4rnRKiuSYtViNAmfUtaQd58aE0f wkabTXTL6UbJ7S+NhAFpWC4pGE2JatydQG8csGk5gXitxRJBQ/jw1BiHefe3tJ9BRo 6hkNAPSi27RamfWhgRE+bgoP0z2ES43TUiUSDqbNaYUXkfntwAHfb+Au75T497ts+g NWEQ9M8tCpsSjwKZqBwvhBnDcf5QfejPP8gs49Jas7yJxY2bp9Nlx77hwE4B/p4hQ/ bGE1UkdeZm7TCLft8DPrpYXKTWEsKqqm+eJix+SMM+odq2jG2Ebptlv6/HPpqiy1ph vNFvi84lPl0qw== From: Jonathan Cameron To: linux-iio@vger.kernel.org Cc: David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Antoniu Miclaus , Matti Vaittinen , Jonathan Cameron Subject: [PATCH 4/8] iio: accel: kx022a: Factor out guts of write_raw() to allow direct returns Date: Mon, 17 Feb 2025 14:01:31 +0000 Message-ID: <20250217140135.896574-5-jic23@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250217140135.896574-1-jic23@kernel.org> References: <20250217140135.896574-1-jic23@kernel.org> Precedence: bulk X-Mailing-List: linux-iio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Jonathan Cameron Create a new utility function for the actions taken when direct mode is held. This allows for direct returns, simplifying the code flow. Signed-off-by: Jonathan Cameron Cc: Matti Vaittinen Reviewed-by: Matti Vaittinen --- drivers/iio/accel/kionix-kx022a.c | 66 ++++++++++++++++--------------- 1 file changed, 35 insertions(+), 31 deletions(-) diff --git a/drivers/iio/accel/kionix-kx022a.c b/drivers/iio/accel/kionix-kx022a.c index 3a56ab00791a..727e007c5fc1 100644 --- a/drivers/iio/accel/kionix-kx022a.c +++ b/drivers/iio/accel/kionix-kx022a.c @@ -510,26 +510,13 @@ static int kx022a_write_raw_get_fmt(struct iio_dev *idev, } } -static int kx022a_write_raw(struct iio_dev *idev, - struct iio_chan_spec const *chan, - int val, int val2, long mask) +static int __kx022a_write_raw(struct iio_dev *idev, + struct iio_chan_spec const *chan, + int val, int val2, long mask) { struct kx022a_data *data = iio_priv(idev); int ret, n; - /* - * We should not allow changing scale or frequency when FIFO is running - * as it will mess the timestamp/scale for samples existing in the - * buffer. If this turns out to be an issue we can later change logic - * to internally flush the fifo before reconfiguring so the samples in - * fifo keep matching the freq/scale settings. (Such setup could cause - * issues if users trust the watermark to be reached within known - * time-limit). - */ - ret = iio_device_claim_direct_mode(idev); - if (ret) - return ret; - switch (mask) { case IIO_CHAN_INFO_SAMP_FREQ: n = ARRAY_SIZE(kx022a_accel_samp_freq_table); @@ -538,20 +525,19 @@ static int kx022a_write_raw(struct iio_dev *idev, if (val == kx022a_accel_samp_freq_table[n][0] && val2 == kx022a_accel_samp_freq_table[n][1]) break; - if (n < 0) { - ret = -EINVAL; - goto unlock_out; - } + if (n < 0) + return -EINVAL; + ret = kx022a_turn_off_lock(data); if (ret) - break; + return ret; ret = regmap_update_bits(data->regmap, data->chip_info->odcntl, KX022A_MASK_ODR, n); data->odr_ns = kx022a_odrs[n]; kx022a_turn_on_unlock(data); - break; + return ret; case IIO_CHAN_INFO_SCALE: n = data->chip_info->scale_table_size / 2; @@ -559,26 +545,44 @@ static int kx022a_write_raw(struct iio_dev *idev, if (val == data->chip_info->scale_table[n][0] && val2 == data->chip_info->scale_table[n][1]) break; - if (n < 0) { - ret = -EINVAL; - goto unlock_out; - } + if (n < 0) + return -EINVAL; ret = kx022a_turn_off_lock(data); if (ret) - break; + return ret; ret = regmap_update_bits(data->regmap, data->chip_info->cntl, KX022A_MASK_GSEL, n << KX022A_GSEL_SHIFT); kx022a_turn_on_unlock(data); - break; + return ret; default: - ret = -EINVAL; - break; + return -EINVAL; } +} + +static int kx022a_write_raw(struct iio_dev *idev, + struct iio_chan_spec const *chan, + int val, int val2, long mask) +{ + int ret; + + /* + * We should not allow changing scale or frequency when FIFO is running + * as it will mess the timestamp/scale for samples existing in the + * buffer. If this turns out to be an issue we can later change logic + * to internally flush the fifo before reconfiguring so the samples in + * fifo keep matching the freq/scale settings. (Such setup could cause + * issues if users trust the watermark to be reached within known + * time-limit). + */ + ret = iio_device_claim_direct_mode(idev); + if (ret) + return ret; + + ret = __kx022a_write_raw(idev, chan, val, val2, mask); -unlock_out: iio_device_release_direct_mode(idev); return ret; From patchwork Mon Feb 17 14:01:32 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jonathan Cameron X-Patchwork-Id: 13977886 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5239813A86C for ; Mon, 17 Feb 2025 14:02:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739800922; cv=none; b=k0HWpuLrmY78jgMyXbD8MP0fGwX7zqX131cLPP83CWvzvJURxychpf1TWBemwDpzocWptKD005wG0uEaCtmh94KjFTc2P6YYBq6BrbXKHyInyt8wcUpsUJdpd8j5lVGYH4uBlcXi6R5xKQdlGV/PzAPRrjQJl9prqR9m1qYhy30= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739800922; c=relaxed/simple; bh=h3uWuEKi8JPVbMEvjUxHWkApiZJoBwydwSpccooW0zU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=HX6DjimwxGPJNDvx40L1a2F67GDbVADEzBP3Hwttb2MaPS4SOlPuoWpRUBUmLeMyFL55HD+DJ2cCyx0QcvnRqIhna5HJmKhscJnsDUgJJIssW4j6nC9BpbjnGHTYwYpxb0Om2j5//5D4utDIlq2DG2vDKdpkV82Ni2GN1bVVS4A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=c0hExj4a; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="c0hExj4a" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 428B3C4CEEC; Mon, 17 Feb 2025 14:01:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739800921; bh=h3uWuEKi8JPVbMEvjUxHWkApiZJoBwydwSpccooW0zU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=c0hExj4aC3tfDdDTZCEro3yYRBTxm8CWo+6+2Fh39H3GHLhZRKGMST9Mz7xJ+Tf2T Z0e2gCSxcsiB9hDiGT884ZA9PcyJMb2wTjtY1ShjLtKK1y+6sws3krCkRUoDXBojks pGbMLC/oHVVpYdeXlNf2BdYL8lzdIdSfRi4yXhrAETRWk8fBX8g5z8jkgvurpg9XI1 SlC/PnvxIQzZ9Sd4+JzDRr7h6c2JJU6R+QtTQDvVI0vSBaNtKyx+v6IaKOZDI/unJE 9lYZMNqO0/t+Kzj56VHgALVB2nscutH0e77/ZC8nDASz9W/haJlWvxDQ1HsT+FA15x eh6r0jLY3MOng== From: Jonathan Cameron To: linux-iio@vger.kernel.org Cc: David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Antoniu Miclaus , Matti Vaittinen , Jonathan Cameron Subject: [PATCH 5/8] iio: accel: kx022a: Switch to sparse friendly iio_device_claim/release_direct() Date: Mon, 17 Feb 2025 14:01:32 +0000 Message-ID: <20250217140135.896574-6-jic23@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250217140135.896574-1-jic23@kernel.org> References: <20250217140135.896574-1-jic23@kernel.org> Precedence: bulk X-Mailing-List: linux-iio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Jonathan Cameron These new functions allow sparse to find failures to release direct mode reducing chances of bugs over the claim_direct_mode() functions that are deprecated. Signed-off-by: Jonathan Cameron Cc: Matti Vaittinen Reviewed-by: Matti Vaittinen --- drivers/iio/accel/kionix-kx022a.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/drivers/iio/accel/kionix-kx022a.c b/drivers/iio/accel/kionix-kx022a.c index 727e007c5fc1..07dcf5f0599f 100644 --- a/drivers/iio/accel/kionix-kx022a.c +++ b/drivers/iio/accel/kionix-kx022a.c @@ -577,13 +577,12 @@ static int kx022a_write_raw(struct iio_dev *idev, * issues if users trust the watermark to be reached within known * time-limit). */ - ret = iio_device_claim_direct_mode(idev); - if (ret) - return ret; + if (!iio_device_claim_direct(idev)) + return -EBUSY; ret = __kx022a_write_raw(idev, chan, val, val2, mask); - iio_device_release_direct_mode(idev); + iio_device_release_direct(idev); return ret; } @@ -624,15 +623,14 @@ static int kx022a_read_raw(struct iio_dev *idev, switch (mask) { case IIO_CHAN_INFO_RAW: - ret = iio_device_claim_direct_mode(idev); - if (ret) - return ret; + if (!iio_device_claim_direct(idev)) + return -EBUSY; mutex_lock(&data->mutex); ret = kx022a_get_axis(data, chan, val); mutex_unlock(&data->mutex); - iio_device_release_direct_mode(idev); + iio_device_release_direct(idev); return ret; From patchwork Mon Feb 17 14:01:33 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jonathan Cameron X-Patchwork-Id: 13977887 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3D98A22083 for ; Mon, 17 Feb 2025 14:02:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739800925; cv=none; b=cW4X4ZX1v0Q2DARxhureqwpg8Vmy4Z7Pa95dHLyOvfn3Nnm/DT53HvVG4NEVtm9VIND0qafsOGJfLGAfHnVjzXSTUMK8aTJ3MmFmBhwu37nT+9PgOl0gEWH5QpWsMbm3x7I4Ox9ZKj+w9RcdIIHSKN/MYrg8al6bWM1sbbgTNtM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739800925; c=relaxed/simple; bh=y9VE+ZEV5hCgOGF9cwbOhXg+P4NQ668KiYiBQkxv1JY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=R4zScMmmP7ukWNkovE7lxyiyCMnms9UQVNq7UYcTUEi8xA4SbSTygsxJwYO6aRCKcQbWpJjJBSLOQydiMHGFUh+Jok/NxtRWBkvpU2li7P2lbolEHqaDdeiHzxq4DuVGyvFYaHVc3iUwTEDBwE+x8hBZEUh8b9CTdsFlYy7RsB0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=NivGfufy; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="NivGfufy" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9F561C4CED1; Mon, 17 Feb 2025 14:02:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739800924; bh=y9VE+ZEV5hCgOGF9cwbOhXg+P4NQ668KiYiBQkxv1JY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=NivGfufy+HgEGQGF0LFxC2XdJwicqDD7TBLf7t1de0hVbZdkkC3IY8ubWGwy2N2Fw H0BDXsQFU/rL9W6C506WYtI792fmqV1Z7uZehMQujhb5dLd4w23m5ufC66RnJU0BNk 0bTrT/mvt82adunwP7Vco2XVfEuH6aw7SKc1QOat4IfxMoipuq22KDuW3aFihaZIX+ z7yRgwA5PdIjoigGehsBQ7S3K+dpQl4f4fSyvE/dZRhgjBQ2GNXepHyMkK+UosZviM FCEoqIKwqeTfzReHpUromApHUg5qYaa2K/BbWzW7ngap7oggG98JIQO/j3dEnQehiB l+1UdGSOwXFMA== From: Jonathan Cameron To: linux-iio@vger.kernel.org Cc: David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Antoniu Miclaus , Matti Vaittinen , Jonathan Cameron Subject: [PATCH 6/8] iio: accel: msa311: Fix failure to release runtime pm if direct mode claim fails. Date: Mon, 17 Feb 2025 14:01:33 +0000 Message-ID: <20250217140135.896574-7-jic23@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250217140135.896574-1-jic23@kernel.org> References: <20250217140135.896574-1-jic23@kernel.org> Precedence: bulk X-Mailing-List: linux-iio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Jonathan Cameron Reorder the claiming of direct mode and runtime pm calls to simplify handling a little. For correct error handling, after the reorder iio_device_release_direct_mode() must be claimed in an error occurs in pm_runtime_resume_and_get() Fixes: 1ca2cfbc0c33 ("iio: add MEMSensing MSA311 3-axis accelerometer driver") Signed-off-by: Jonathan Cameron --- drivers/iio/accel/msa311.c | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/drivers/iio/accel/msa311.c b/drivers/iio/accel/msa311.c index fe4c32a9558a..7f4ab7cdbc4a 100644 --- a/drivers/iio/accel/msa311.c +++ b/drivers/iio/accel/msa311.c @@ -594,23 +594,25 @@ static int msa311_read_raw_data(struct iio_dev *indio_dev, __le16 axis; int err; - err = pm_runtime_resume_and_get(dev); + err = iio_device_claim_direct_mode(indio_dev); if (err) return err; - err = iio_device_claim_direct_mode(indio_dev); - if (err) + err = pm_runtime_resume_and_get(dev); + if (err) { + iio_device_release_direct_mode(indio_dev); return err; + } mutex_lock(&msa311->lock); err = msa311_get_axis(msa311, chan, &axis); mutex_unlock(&msa311->lock); - iio_device_release_direct_mode(indio_dev); - pm_runtime_mark_last_busy(dev); pm_runtime_put_autosuspend(dev); + iio_device_release_direct_mode(indio_dev); + if (err) { dev_err(dev, "can't get axis %s (%pe)\n", chan->datasheet_name, ERR_PTR(err)); @@ -756,10 +758,6 @@ static int msa311_write_samp_freq(struct iio_dev *indio_dev, int val, int val2) unsigned int odr; int err; - err = pm_runtime_resume_and_get(dev); - if (err) - return err; - /* * Sampling frequency changing is prohibited when buffer mode is * enabled, because sometimes MSA311 chip returns outliers during @@ -769,6 +767,12 @@ static int msa311_write_samp_freq(struct iio_dev *indio_dev, int val, int val2) if (err) return err; + err = pm_runtime_resume_and_get(dev); + if (err) { + iio_device_release_direct_mode(indio_dev); + return err; + } + err = -EINVAL; for (odr = 0; odr < ARRAY_SIZE(msa311_odr_table); odr++) if (val == msa311_odr_table[odr].integral && @@ -779,11 +783,11 @@ static int msa311_write_samp_freq(struct iio_dev *indio_dev, int val, int val2) break; } - iio_device_release_direct_mode(indio_dev); - pm_runtime_mark_last_busy(dev); pm_runtime_put_autosuspend(dev); + iio_device_release_direct_mode(indio_dev); + if (err) dev_err(dev, "can't update frequency (%pe)\n", ERR_PTR(err)); From patchwork Mon Feb 17 14:01:34 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jonathan Cameron X-Patchwork-Id: 13977888 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D251422083 for ; Mon, 17 Feb 2025 14:02:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739800928; cv=none; b=DAxZ33iWHrlkc4YLFbCUyv/XQeWIy0cusYzOS0g/WGEXfyM7gTpeQN22sTuKDpTL+jOTP78aETFtb7sPur50kRsAGz3Qzd3j6W/aY0X6OLfxoGPBPT9S3spGTuuW82LCv/qqGrrO0ybCb8EerHfMkbYcfIO9MsD65fePRLd4XXs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739800928; c=relaxed/simple; bh=c5hQBcmykqE5kevKEtWoKMRPV69pPk8Kb6TSM8JIITg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ZS2WQUnpByFjU9qoAoyOwjYG3f9Maoc7xjTPNbkzC8D9xGYoDdpl1FzsXFYi06Io6uDRRW6Ee36EWX8Qs+zRoR0vW5Vv9mmO8zbvMAAfB3/c5IIuoijpa4PwZ3aC8aeKlDt8oLCvEUC6YJC1fSZ/PMOZuW3paHlUrgGo4hYV0ug= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=dxUvq4R/; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="dxUvq4R/" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 971CAC4CEEC; Mon, 17 Feb 2025 14:02:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739800928; bh=c5hQBcmykqE5kevKEtWoKMRPV69pPk8Kb6TSM8JIITg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=dxUvq4R/WUwwsCkO5yRW6Pp+42gC6cR5jnaTpyCJeW0KWwIXC28R16/zBbRNrqpmh amRKSXJLtYAsPh9q6t6MZ/CvKaoopp4dE9qakC33Hb5LhJ8QFInkvc4ZjmJm6ppSIP hSaM7ZWFnOUkuWmTaVxqxIl8eRbAxBunNF1AHLKyr3YCQgU6yyzWE478i9Q7eXA/Oo /iabbWyORywbavKk6TI+YbPoK8OsB9Puwe2DHXIRXdXS/puYqYJLVNOUIVVfDltLmC xN2GMSN9vyIDm6xxGx+CgjMn7QjapprWMPzJei8/0nVYFr/qvSihc7T2gAUNhPb9xB g3cDwUGQ0krMw== From: Jonathan Cameron To: linux-iio@vger.kernel.org Cc: David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Antoniu Miclaus , Matti Vaittinen , Jonathan Cameron Subject: [PATCH 7/8] iio: accel: msa311: Switch to sparse friendly iio_device_claim/release_direct() Date: Mon, 17 Feb 2025 14:01:34 +0000 Message-ID: <20250217140135.896574-8-jic23@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250217140135.896574-1-jic23@kernel.org> References: <20250217140135.896574-1-jic23@kernel.org> Precedence: bulk X-Mailing-List: linux-iio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Jonathan Cameron These new functions allow sparse to find failures to release direct mode reducing chances of bugs over the claim_direct_mode() functions that are deprecated. Signed-off-by: Jonathan Cameron --- drivers/iio/accel/msa311.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/drivers/iio/accel/msa311.c b/drivers/iio/accel/msa311.c index 7f4ab7cdbc4a..d31c11fbbe68 100644 --- a/drivers/iio/accel/msa311.c +++ b/drivers/iio/accel/msa311.c @@ -594,13 +594,12 @@ static int msa311_read_raw_data(struct iio_dev *indio_dev, __le16 axis; int err; - err = iio_device_claim_direct_mode(indio_dev); - if (err) - return err; + if (!iio_device_claim_direct(indio_dev)) + return -EBUSY; err = pm_runtime_resume_and_get(dev); if (err) { - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); return err; } @@ -611,7 +610,7 @@ static int msa311_read_raw_data(struct iio_dev *indio_dev, pm_runtime_mark_last_busy(dev); pm_runtime_put_autosuspend(dev); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); if (err) { dev_err(dev, "can't get axis %s (%pe)\n", @@ -763,13 +762,12 @@ static int msa311_write_samp_freq(struct iio_dev *indio_dev, int val, int val2) * enabled, because sometimes MSA311 chip returns outliers during * frequency values growing up in the read operation moment. */ - err = iio_device_claim_direct_mode(indio_dev); - if (err) - return err; + if (!iio_device_claim_direct(indio_dev)) + return -EBUSY; err = pm_runtime_resume_and_get(dev); if (err) { - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); return err; } @@ -786,7 +784,7 @@ static int msa311_write_samp_freq(struct iio_dev *indio_dev, int val, int val2) pm_runtime_mark_last_busy(dev); pm_runtime_put_autosuspend(dev); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); if (err) dev_err(dev, "can't update frequency (%pe)\n", ERR_PTR(err)); From patchwork Mon Feb 17 14:01:35 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jonathan Cameron X-Patchwork-Id: 13977889 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A11AF22083 for ; Mon, 17 Feb 2025 14:02:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739800931; cv=none; b=NOUK/joanHpBfo7ff2i3bS/nTl4gBIGXqNo2KrehWyy2JMNuNrM5HAlkuW/ba4hirfOW3pM8qP/a0mzBpZmORCpvDIPsuZB2fiZkzeVHF5msb+s5/RAXlfVTwB4samKdiC1rr/K+MC8WysOIRQlA8ZwXzSe2240dF9sULkEze2g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739800931; c=relaxed/simple; bh=eGZI46neJBkWMfRmxrPwgrLmwMaRB+Cg3jxbH0Nf0OU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=IlQZtyZUq4uDX9SVlHewZyvH27Sv324Rzbf6YSU2L7bp3nZJugLLe/SQONcERycURw16rUM/Rv6zyCJsQgODolWxUcC8gzoZ4KtqtFM5JsgAvMgYy+d6TjAPKngJ3siq/fqF3jwfH02z29eW5zTvaFBr0VT+b1KFTyy64Xxk9ug= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=BvFg0bZI; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="BvFg0bZI" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D2546C4CED1; Mon, 17 Feb 2025 14:02:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739800931; bh=eGZI46neJBkWMfRmxrPwgrLmwMaRB+Cg3jxbH0Nf0OU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=BvFg0bZIWFtBTdMuHp1UTKNm+m9rUifKpKcFBlLLbhXCUwe0YRwV+Df3pbOETl+im OdzIg9iKMHy7f8KOjXrC2m5FQ1j7GoPUkZTaDX10WL07j9b2zk3M6w6fFSxxGIP+kk ACP7dsmdhpwC8/IcSUwNqDk7aQ19406YMMUC2EGpydUylRyPFtTgwnBHHaj/yYa9JA MYi+2gdCpZxyPYu6Ulko5q6a8GxTLu6y5HPgp0/9slesxMLZ2a98vNlo151UP8EujM RiVcLX/dWsojz7WO/9//fN0Z60plNmN7eVHjIrfHVrvnRT2lgG/x0DaETFbnPpsPYT KVxh4a6M85iVQ== From: Jonathan Cameron To: linux-iio@vger.kernel.org Cc: David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Antoniu Miclaus , Matti Vaittinen , Jonathan Cameron Subject: [PATCH 8/8] iio: accel: Switch to sparse friendly iio_device_claim/release_direct() Date: Mon, 17 Feb 2025 14:01:35 +0000 Message-ID: <20250217140135.896574-9-jic23@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250217140135.896574-1-jic23@kernel.org> References: <20250217140135.896574-1-jic23@kernel.org> Precedence: bulk X-Mailing-List: linux-iio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Jonathan Cameron Single patch for the simple cases in accelerometer drivers. These new functions allow sparse to find failures to release direct mode reducing chances of bugs over the claim_direct_mode() functions that are deprecated. Signed-off-by: Jonathan Cameron Cc: Antoniu Miclaus --- Given we had so many complex cases, maybe it makes sense to break these out as well. --- drivers/iio/accel/adxl372.c | 7 +++---- drivers/iio/accel/adxl380.c | 7 +++---- drivers/iio/accel/bma180.c | 7 +++---- drivers/iio/accel/bmi088-accel-core.c | 7 ++++--- drivers/iio/accel/fxls8962af-core.c | 21 +++++++++------------ 5 files changed, 22 insertions(+), 27 deletions(-) diff --git a/drivers/iio/accel/adxl372.c b/drivers/iio/accel/adxl372.c index 8ba5fbe6e1f5..961145b50293 100644 --- a/drivers/iio/accel/adxl372.c +++ b/drivers/iio/accel/adxl372.c @@ -763,12 +763,11 @@ static int adxl372_read_raw(struct iio_dev *indio_dev, switch (info) { case IIO_CHAN_INFO_RAW: - ret = iio_device_claim_direct_mode(indio_dev); - if (ret) - return ret; + if (!iio_device_claim_direct(indio_dev)) + return -EBUSY; ret = adxl372_read_axis(st, chan->address); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); if (ret < 0) return ret; diff --git a/drivers/iio/accel/adxl380.c b/drivers/iio/accel/adxl380.c index 90340f134722..0cf3c6815829 100644 --- a/drivers/iio/accel/adxl380.c +++ b/drivers/iio/accel/adxl380.c @@ -1175,12 +1175,11 @@ static int adxl380_read_raw(struct iio_dev *indio_dev, switch (info) { case IIO_CHAN_INFO_RAW: - ret = iio_device_claim_direct_mode(indio_dev); - if (ret) - return ret; + if (!iio_device_claim_direct(indio_dev)) + return -EBUSY; ret = adxl380_read_chn(st, chan->address); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); if (ret < 0) return ret; diff --git a/drivers/iio/accel/bma180.c b/drivers/iio/accel/bma180.c index 128db14ba726..aa664a923f91 100644 --- a/drivers/iio/accel/bma180.c +++ b/drivers/iio/accel/bma180.c @@ -540,14 +540,13 @@ static int bma180_read_raw(struct iio_dev *indio_dev, switch (mask) { case IIO_CHAN_INFO_RAW: - ret = iio_device_claim_direct_mode(indio_dev); - if (ret) - return ret; + if (!iio_device_claim_direct(indio_dev)) + return -EBUSY; mutex_lock(&data->mutex); ret = bma180_get_data_reg(data, chan->scan_index); mutex_unlock(&data->mutex); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); if (ret < 0) return ret; if (chan->scan_type.sign == 's') { diff --git a/drivers/iio/accel/bmi088-accel-core.c b/drivers/iio/accel/bmi088-accel-core.c index 36e5d06ffd33..dea126f993c1 100644 --- a/drivers/iio/accel/bmi088-accel-core.c +++ b/drivers/iio/accel/bmi088-accel-core.c @@ -313,12 +313,13 @@ static int bmi088_accel_read_raw(struct iio_dev *indio_dev, if (ret) return ret; - ret = iio_device_claim_direct_mode(indio_dev); - if (ret) + if (!iio_device_claim_direct(indio_dev)) { + ret = -EBUSY; goto out_read_raw_pm_put; + } ret = bmi088_accel_get_axis(data, chan, val); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); if (!ret) ret = IIO_VAL_INT; diff --git a/drivers/iio/accel/fxls8962af-core.c b/drivers/iio/accel/fxls8962af-core.c index 987212a7c038..48e4282964a0 100644 --- a/drivers/iio/accel/fxls8962af-core.c +++ b/drivers/iio/accel/fxls8962af-core.c @@ -460,22 +460,20 @@ static int fxls8962af_write_raw(struct iio_dev *indio_dev, if (val != 0) return -EINVAL; - ret = iio_device_claim_direct_mode(indio_dev); - if (ret) - return ret; + if (!iio_device_claim_direct(indio_dev)) + return -EBUSY; ret = fxls8962af_set_full_scale(data, val2); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); return ret; case IIO_CHAN_INFO_SAMP_FREQ: - ret = iio_device_claim_direct_mode(indio_dev); - if (ret) - return ret; + if (!iio_device_claim_direct(indio_dev)) + return -EBUSY; ret = fxls8962af_set_samp_freq(data, val, val2); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); return ret; default: return -EINVAL; @@ -683,14 +681,13 @@ fxls8962af_write_event_config(struct iio_dev *indio_dev, fxls8962af_active(data); ret = fxls8962af_power_on(data); } else { - ret = iio_device_claim_direct_mode(indio_dev); - if (ret) - return ret; + if (!iio_device_claim_direct(indio_dev)) + return -EBUSY; /* Not in buffered mode so disable power */ ret = fxls8962af_power_off(data); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); } return ret;