From patchwork Mon Feb 17 14:16:01 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jonathan Cameron X-Patchwork-Id: 13977933 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 B7A5F21D599 for ; Mon, 17 Feb 2025 14:16: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=1739801812; cv=none; b=GHfrnPxpRtcuFM2mfI+tHrkp2pMI4T6u8XF4Cnv9kThL0kzJpJbVp86k3RJTAOkIDWghI0hg6FKxBsk9C5ADe9422mpiQcgss63jFozSxry9+6FPf5YQ08Fg3j5OVI1XXLhQCv5P2oXbBCKrdbx2fwbxOK6CUuYzsNaIWFggfFg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739801812; c=relaxed/simple; bh=dS884o12D4Ym3Y5x7dNzCZ5wCxhW/0mdNkDtjuNEGEw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=sHQ9coQ5eWxnS76jmAZJ8iUzGwWi/1wtEGFhcLChl5hMvSXMcLvvTKw4f9PmetBa4MRnMp0EevnXpk9dCyrdMvvkaW2Ip4gg4cbOKTwn5R+420Kl8OGp6xu7YJZSuarxCz2seqx4e+JK0d2WQIqBCxeAoBhp56JcOZ4y2FxgZIE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Dt4OUjuQ; 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="Dt4OUjuQ" Received: by smtp.kernel.org (Postfix) with ESMTPSA id BD861C4CEE8; Mon, 17 Feb 2025 14:16:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739801812; bh=dS884o12D4Ym3Y5x7dNzCZ5wCxhW/0mdNkDtjuNEGEw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Dt4OUjuQoB2YpQBY9FcGIdaPf4YuSIyn4yJTTElJ+hJP4HvbSQdJ664VsejDKSL0E kOuipfTwXIirlwW7PTp/gkgv4tUVrc6J0y+btY03zDoR9T4IDppyZlpYEFOTTudojL j4mxaXMB21Rf8hqMrqSSEo2alrQr9jeTKdjRLpDybEts2IxVqgztgXjsWUEDSH/Zc9 dw0lSEmLjP0Q5bLDU0RvF2epgcc9LD3WXd+qNudbl5X2ItrHr5+drAdYzu0qSNuC4D EhBAKQ9wX8k6A63sp6poZU77h2o7/tS30dyxXsYas3w0IDPDUmEKumwVrWmE6MgW4c IGog4eOaVfRZw== From: Jonathan Cameron To: linux-iio@vger.kernel.org Cc: David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Olivier Moysan , Mike Looijmans , Phil Reid , Marek Vasut , Miquel Raynal , Claudiu Beznea , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Alisa-Dariana Roman , Marek Vasut , Frank Li , Jonathan Cameron Subject: [PATCH 01/29] iio: adc: vf610: Move claim of direct mode to caller of vf610_read_sample and use guard(mutex) Date: Mon, 17 Feb 2025 14:16:01 +0000 Message-ID: <20250217141630.897334-2-jic23@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250217141630.897334-1-jic23@kernel.org> References: <20250217141630.897334-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 two changes allow direct returns in all paths, improving code readablity. Signed-off-by: Jonathan Cameron Cc: Frank Li --- drivers/iio/adc/vf610_adc.c | 37 ++++++++++++++----------------------- 1 file changed, 14 insertions(+), 23 deletions(-) diff --git a/drivers/iio/adc/vf610_adc.c b/drivers/iio/adc/vf610_adc.c index 513365d42aa5..57a22e31cfc7 100644 --- a/drivers/iio/adc/vf610_adc.c +++ b/drivers/iio/adc/vf610_adc.c @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include @@ -630,36 +631,29 @@ static const struct attribute_group vf610_attribute_group = { .attrs = vf610_attributes, }; -static int vf610_read_sample(struct iio_dev *indio_dev, +static int vf610_read_sample(struct vf610_adc *info, struct iio_chan_spec const *chan, int *val) { - struct vf610_adc *info = iio_priv(indio_dev); unsigned int hc_cfg; int ret; - ret = iio_device_claim_direct_mode(indio_dev); - if (ret) - return ret; - - mutex_lock(&info->lock); + guard(mutex)(&info->lock); reinit_completion(&info->completion); hc_cfg = VF610_ADC_ADCHC(chan->channel); hc_cfg |= VF610_ADC_AIEN; writel(hc_cfg, info->regs + VF610_REG_ADC_HC0); ret = wait_for_completion_interruptible_timeout(&info->completion, VF610_ADC_TIMEOUT); - if (ret == 0) { - ret = -ETIMEDOUT; - goto out_unlock; - } + if (ret == 0) + return -ETIMEDOUT; if (ret < 0) - goto out_unlock; + return ret; switch (chan->type) { case IIO_VOLTAGE: *val = info->value; - break; + return 0; case IIO_TEMP: /* * Calculate in degree Celsius times 1000 @@ -669,17 +663,10 @@ static int vf610_read_sample(struct iio_dev *indio_dev, *val = 25000 - ((int)info->value - VF610_VTEMP25_3V3) * 1000000 / VF610_TEMP_SLOPE_COEFF; - break; + return 0; default: - ret = -EINVAL; - break; + return -EINVAL; } - -out_unlock: - mutex_unlock(&info->lock); - iio_device_release_direct_mode(indio_dev); - - return ret; } static int vf610_read_raw(struct iio_dev *indio_dev, @@ -694,7 +681,11 @@ static int vf610_read_raw(struct iio_dev *indio_dev, switch (mask) { case IIO_CHAN_INFO_RAW: case IIO_CHAN_INFO_PROCESSED: - ret = vf610_read_sample(indio_dev, chan, val); + ret = iio_device_claim_direct_mode(indio_dev); + if (ret) + return ret; + ret = vf610_read_sample(info, chan, val); + iio_device_release_direct_mode(indio_dev); if (ret < 0) return ret; From patchwork Mon Feb 17 14:16:02 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jonathan Cameron X-Patchwork-Id: 13977934 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 80BC821D584 for ; Mon, 17 Feb 2025 14:16: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=1739801818; cv=none; b=ZjHlCkDfm8FMEAUyLrUaD4iWphRQuUuYU+iEvERf92LFYvbI8ek9gZhdifoK6T4ibFLdgY0S/m6Rm6bth129mPReZAMQxWsCU0SF7cAj5m61NTR1Y/mt4LpleS1oC+ksvbsz/7SyhhIWyQqaPupSWJoYXjM2AjgqEdfOTRuUuYs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739801818; c=relaxed/simple; bh=l3WF6slEFDi3bYBwHNVkyg4aE7Hpurgm02kHmpzlF/Y=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=LNJDASewFDuJVILOON78pQeZH+4cr1GdwU6V61gYRbFR/JakYEYNCuGO/Z+YMKvk3eeWCkNaPMX3PSQ+vu0xA3IBDIewdM/Pz5pXAKr0AFH27E04FMcOJXxHNvzY4yLMso2nIfGaZbiLa38mnzXf3Z6ePuq/sWXCQmgLcF5D5r4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=g29tAkmF; 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="g29tAkmF" Received: by smtp.kernel.org (Postfix) with ESMTPSA id E1E29C4CED1; Mon, 17 Feb 2025 14:16:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739801818; bh=l3WF6slEFDi3bYBwHNVkyg4aE7Hpurgm02kHmpzlF/Y=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=g29tAkmFoWqTNXjocuL1Dyj+0z/d2s8VQiBRJHEnmX3pb+dtmGAVCjoal3OlqFyyw +Vz1Tq7chGY7lz/GYi2NudpRNJlKasfYNvxQs3YIu76RnVhnHvTY/9FbXuMRts8Gc3 tf7scvEOVU2PsM10W2WuXxaVaxRnm0q8O29kOD1Ax19vPehvWus1s7IeXKLaLPQX/n 8Gba6vbmeE32+Ut/elAiW7qgrpZRfz5o/Ghg0CJOI9EiHuyKwSgPKtGxmhjAHyC1aP uUA19q0TVLyNnRNNkjOIj2aIP+9dIKXWxQ1WZwNQAHKYXzCM3N4FCYSKvsCCOoW1eZ aIn4Qp0YJ4img== From: Jonathan Cameron To: linux-iio@vger.kernel.org Cc: David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Olivier Moysan , Mike Looijmans , Phil Reid , Marek Vasut , Miquel Raynal , Claudiu Beznea , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Alisa-Dariana Roman , Marek Vasut , Frank Li , Jonathan Cameron Subject: [PATCH 02/29] iio: adc: vf610: Switch to sparse friendly iio_device_claim/release_direct() Date: Mon, 17 Feb 2025 14:16:02 +0000 Message-ID: <20250217141630.897334-3-jic23@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250217141630.897334-1-jic23@kernel.org> References: <20250217141630.897334-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: Frank Li --- drivers/iio/adc/vf610_adc.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/drivers/iio/adc/vf610_adc.c b/drivers/iio/adc/vf610_adc.c index 57a22e31cfc7..f506ca4150b1 100644 --- a/drivers/iio/adc/vf610_adc.c +++ b/drivers/iio/adc/vf610_adc.c @@ -681,11 +681,10 @@ static int vf610_read_raw(struct iio_dev *indio_dev, switch (mask) { case IIO_CHAN_INFO_RAW: case IIO_CHAN_INFO_PROCESSED: - ret = iio_device_claim_direct_mode(indio_dev); - if (ret) - return ret; + if (!iio_device_claim_direct(indio_dev)) + return -EBUSY; ret = vf610_read_sample(info, chan, val); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); if (ret < 0) return ret; From patchwork Mon Feb 17 14:16:03 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jonathan Cameron X-Patchwork-Id: 13977935 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 A3F7E21E08D for ; Mon, 17 Feb 2025 14:17: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=1739801824; cv=none; b=CRaooUuVbePCzU7ZtY4k7XkL4Qlo7xsDnYKDFWw4fTnwu8h5w/fWW4I2vdA5wk414h7IuafE+svdV2jG2fq8Sim/L7oM6Oyv7jjxPffujbzmUSvoxXBnfVSCaMrABE3hwJ1/KUbaZWjiJwMbEukLu9xS5Vri6pBe6WjfISAT2tE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739801824; c=relaxed/simple; bh=YUYZpYWu3qEndzwnWpszt3bx3yZgChkcVon2XZ2sCTU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ZxwXy9q4RTHML1zIe3M9MEFnNePX5/9XpVvmggrA2soQLviay/p7X2sR8g1moyMV/E7gJkFKMGf5y0eAkDaSm2p1Rc5mXdLsk/fe2wQdRwCyrCIzXVuRsuMAstYLucDPmHtGhTz7Q2HJ48a22CfQ1mjUSKAfBNqybKhK3oR0bzA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ZZB7w9Hg; 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="ZZB7w9Hg" Received: by smtp.kernel.org (Postfix) with ESMTPSA id B9BEEC4CED1; Mon, 17 Feb 2025 14:16:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739801824; bh=YUYZpYWu3qEndzwnWpszt3bx3yZgChkcVon2XZ2sCTU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ZZB7w9Hgf7Cl5HzqiwbR7UE+M/m1j9M+3ytNcnLAcIV9bD2r8tDrdeKQ0Ri8Lug9l eB5nAXuHfY/v6KwVFoZ+/ewvF9BBqeG50clkG5y+YaTDu8cnIZ8/c7GBNrwyZVzbC6 1Wdg5waFnQ9tkFgcpw/hQYfnoacVWXfM1nmLcfGuoyrUdE6fnt2tBE9mVDfQ3eBFWP AtiRb1H7S5O9WBVigcm6RxqUG6hygb3/KXpbTpae5ZWlpLPPKSqW0ekHHRoci1yPDh V1ZBmVFN95ibFoujMh0Mj4EHjLTLcHQHHdLtHADYSk7H7OHSJr0JWSRdFdis4WPRjf jvf8wIdWqpsEQ== From: Jonathan Cameron To: linux-iio@vger.kernel.org Cc: David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Olivier Moysan , Mike Looijmans , Phil Reid , Marek Vasut , Miquel Raynal , Claudiu Beznea , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Alisa-Dariana Roman , Marek Vasut , Frank Li , Jonathan Cameron Subject: [PATCH 03/29] iio: adc: ti-ads1100: Use guard(mutex) to allow direct returns Date: Mon, 17 Feb 2025 14:16:03 +0000 Message-ID: <20250217141630.897334-4-jic23@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250217141630.897334-1-jic23@kernel.org> References: <20250217141630.897334-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 Use of automated lock release simplifies the code. Signed-off-by: Jonathan Cameron Cc: Mike Looijmans --- drivers/iio/adc/ti-ads1100.c | 39 +++++++++++++----------------------- 1 file changed, 14 insertions(+), 25 deletions(-) diff --git a/drivers/iio/adc/ti-ads1100.c b/drivers/iio/adc/ti-ads1100.c index 1e46f07a9ca6..0519f8afb033 100644 --- a/drivers/iio/adc/ti-ads1100.c +++ b/drivers/iio/adc/ti-ads1100.c @@ -10,6 +10,7 @@ #include #include +#include #include #include #include @@ -219,36 +220,31 @@ static int ads1100_read_raw(struct iio_dev *indio_dev, int ret; struct ads1100_data *data = iio_priv(indio_dev); - mutex_lock(&data->lock); + guard(mutex)(&data->lock); switch (mask) { case IIO_CHAN_INFO_RAW: ret = iio_device_claim_direct_mode(indio_dev); if (ret) - break; + return ret; ret = ads1100_get_adc_result(data, chan->address, val); - if (ret >= 0) - ret = IIO_VAL_INT; iio_device_release_direct_mode(indio_dev); - break; + if (ret < 0) + return ret; + + return IIO_VAL_INT; case IIO_CHAN_INFO_SCALE: /* full-scale is the supply voltage in millivolts */ *val = ads1100_get_vdd_millivolts(data); *val2 = 15 + FIELD_GET(ADS1100_PGA_MASK, data->config); - ret = IIO_VAL_FRACTIONAL_LOG2; - break; + return IIO_VAL_FRACTIONAL_LOG2; case IIO_CHAN_INFO_SAMP_FREQ: *val = ads1100_data_rate[FIELD_GET(ADS1100_DR_MASK, data->config)]; - ret = IIO_VAL_INT; - break; + return IIO_VAL_INT; default: - ret = -EINVAL; - break; + return -EINVAL; } - mutex_unlock(&data->lock); - - return ret; } static int ads1100_write_raw(struct iio_dev *indio_dev, @@ -256,23 +252,16 @@ static int ads1100_write_raw(struct iio_dev *indio_dev, int val2, long mask) { struct ads1100_data *data = iio_priv(indio_dev); - int ret; - mutex_lock(&data->lock); + guard(mutex)(&data->lock); switch (mask) { case IIO_CHAN_INFO_SCALE: - ret = ads1100_set_scale(data, val, val2); - break; + return ads1100_set_scale(data, val, val2); case IIO_CHAN_INFO_SAMP_FREQ: - ret = ads1100_set_data_rate(data, chan->address, val); - break; + return ads1100_set_data_rate(data, chan->address, val); default: - ret = -EINVAL; - break; + return -EINVAL; } - mutex_unlock(&data->lock); - - return ret; } static const struct iio_info ads1100_info = { From patchwork Mon Feb 17 14:16:04 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jonathan Cameron X-Patchwork-Id: 13977936 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 912BA21D5BD for ; Mon, 17 Feb 2025 14:17:10 +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=1739801830; cv=none; b=WrHvCo9FLJfzoU8fxd9BTyJ1KpRRFN4iwCzpftF8O5IsOsmyEVTyj2HU6qSap/XKcAk98tA9EtCs4uQkD1Vcsblna+quF0LlRRPO9ktiiDgDHIV4SJBKbMRD4gOqESTCcJpSm8PV20SttJuFYr+Q0+NoW4J0+SjU5MWG3zl8JDs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739801830; c=relaxed/simple; bh=atNVxPelO0EvIhapjy+GuilNReWE4gyI3jWjGSwFQSY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ZRMMe62PeksFBvJQUYGreEEBbSHCt/VycBOjuq8sXLqkJ+5PsFIfwVbpPwSz5NebVUDLBfW8KTldKnEYpyiDOZFAQjMQC/bApi0rAgUfjY4C4+Uqdo2VPr1TdFzVDur6R4Wez+olze3f7GF2D1qnNp92uhAZU7cZen9AxZruzoM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=UdTpzXsH; 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="UdTpzXsH" Received: by smtp.kernel.org (Postfix) with ESMTPSA id DD1D5C4CEE7; Mon, 17 Feb 2025 14:17:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739801830; bh=atNVxPelO0EvIhapjy+GuilNReWE4gyI3jWjGSwFQSY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=UdTpzXsHTSPm/K/Q+2sAWqhN1MhNH10sWFam0OAnprq+dym+6B/bN5wbMv/jKFn6U JdRXe8BkJyDm9yKRqVMTjvR22HANmICkvphD7rGMfRifAtt4VS2S0S0KxR8Qs6q2AU fgpStg2KnpqNNN7ZHXMTjN1lRgcUmdTmMlxddaxoyDNiO4jP9Waw3IUzrHaKh4N1D5 ZYFdixEaxsmWCldlcLqLBaa3ADbLC5DSgVLIGOGahgt7CHj4Hbcq9W4WPAhK89nEX2 enV0KPdU1KdCBEOr2Ehpo7t31lw+Q8D312aLFp+2JaLmJH2jjRF5EvhOYGz7FupPdo uePxOiYyuggZw== From: Jonathan Cameron To: linux-iio@vger.kernel.org Cc: David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Olivier Moysan , Mike Looijmans , Phil Reid , Marek Vasut , Miquel Raynal , Claudiu Beznea , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Alisa-Dariana Roman , Marek Vasut , Frank Li , Jonathan Cameron Subject: [PATCH 04/29] iio: adc: ti-ads1100: Switch to sparse friendly iio_device_claim/release_direct() Date: Mon, 17 Feb 2025 14:16:04 +0000 Message-ID: <20250217141630.897334-5-jic23@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250217141630.897334-1-jic23@kernel.org> References: <20250217141630.897334-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: Mike Looijmans --- drivers/iio/adc/ti-ads1100.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/drivers/iio/adc/ti-ads1100.c b/drivers/iio/adc/ti-ads1100.c index 0519f8afb033..b0790e300b18 100644 --- a/drivers/iio/adc/ti-ads1100.c +++ b/drivers/iio/adc/ti-ads1100.c @@ -223,12 +223,11 @@ static int ads1100_read_raw(struct iio_dev *indio_dev, guard(mutex)(&data->lock); 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; ret = ads1100_get_adc_result(data, chan->address, val); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); if (ret < 0) return ret; From patchwork Mon Feb 17 14:16:05 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jonathan Cameron X-Patchwork-Id: 13977937 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 CF08422333C for ; Mon, 17 Feb 2025 14:17:15 +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=1739801835; cv=none; b=JOstkexyDo4nTmItXWA3j55FPFXDdHXgUOOD2uR4mtK7RUC7b6e/ZQq9mdrBdainA/N7HoHh/w6PxpparrJv9Hv01s6Rs/db8qCqf2hjs26h3khrDUwlPOc60SvhoLO+t5Dqhj434hQBvvgP/6QepMp8/erfBTxI2GtKbe1Ta6U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739801835; c=relaxed/simple; bh=B8SUDPlYXHdaz8iiWcbksHgfY95ACf8YIXHXwmHGnPU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=CAEaTliKEleUdOcY6M8rnrnJDxhZsV6qhXX6gJGeMzpGk9kyu6GIp02znT6zWc8n0cXRXsvvjF4psB4O21eZuFnOUb5xOVOvIUgJ4UUx0yjPMiAqR/EO1YSkrm+EEXhkEkiW6eLwkNDTedE+of0DpPgRs7z9VUqfeNLa218yHC4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=D4M/phK+; 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="D4M/phK+" Received: by smtp.kernel.org (Postfix) with ESMTPSA id CDAFEC4CED1; Mon, 17 Feb 2025 14:17:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739801835; bh=B8SUDPlYXHdaz8iiWcbksHgfY95ACf8YIXHXwmHGnPU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=D4M/phK+KuHJIcxGcpJ0mQhIfGHvQFuLH5NPGbOo6KRk9Ndb9BD/zLaB2I1qRPpBs 4Erha+MwkLfYWq58SMJvhnkzeOj7IUYp8GQ+r3/H0YoHPgnV5UWOnqMVKtJmblTt+V yqc8hBpi3E/DKxhONWv1yUeYpwuwvmgdbDUn6HuUbSOGNX1fiaZRxIn3/9GjUBEaxB KDne1UjpkvZvvw7MSihjrGvcnrzl6uP5AowiBE3FdYdal1oQTf+bRknq0z9AnzKbmE GkYGSpLBBxGBVleKqHGE+bo7zQuJxQswZeDIZHxizVKjPrTPHmy8KHoKPcdInSPumM Lp+EaG4nGQJSQ== From: Jonathan Cameron To: linux-iio@vger.kernel.org Cc: David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Olivier Moysan , Mike Looijmans , Phil Reid , Marek Vasut , Miquel Raynal , Claudiu Beznea , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Alisa-Dariana Roman , Marek Vasut , Frank Li , Jonathan Cameron Subject: [PATCH 05/29] iio: adc: ti-ads1015: Use guard(mutex) and factor out code for INFO_RAW Date: Mon, 17 Feb 2025 14:16:05 +0000 Message-ID: <20250217141630.897334-6-jic23@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250217141630.897334-1-jic23@kernel.org> References: <20250217141630.897334-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 By use of automatic lock release and introducing a new utility function to handle the core activity of reading the ADC channel, many more complex code flows can be replaced by direct returns. Signed-off-by: Jonathan Cameron Cc: Marek Vasut --- drivers/iio/adc/ti-ads1015.c | 162 ++++++++++++++--------------------- 1 file changed, 64 insertions(+), 98 deletions(-) diff --git a/drivers/iio/adc/ti-ads1015.c b/drivers/iio/adc/ti-ads1015.c index 4355726b373a..a91ec18ddbec 100644 --- a/drivers/iio/adc/ti-ads1015.c +++ b/drivers/iio/adc/ti-ads1015.c @@ -12,6 +12,7 @@ */ #include +#include #include #include #include @@ -533,6 +534,31 @@ static int ads1015_read_avail(struct iio_dev *indio_dev, } } +static int __ads1015_read_info_raw(struct ads1015_data *data, + struct iio_chan_spec const *chan, int *val) +{ + int ret; + + if (ads1015_event_channel_enabled(data) && + data->event_channel != chan->address) + return -EBUSY; + + ret = ads1015_set_power_state(data, true); + if (ret < 0) + return ret; + + ret = ads1015_get_adc_result(data, chan->address, val); + if (ret < 0) { + ads1015_set_power_state(data, false); + return ret; + } + + *val = sign_extend32(*val >> chan->scan_type.shift, + chan->scan_type.realbits - 1); + + return ads1015_set_power_state(data, false); +} + static int ads1015_read_raw(struct iio_dev *indio_dev, struct iio_chan_spec const *chan, int *val, int *val2, long mask) @@ -540,58 +566,30 @@ static int ads1015_read_raw(struct iio_dev *indio_dev, int ret, idx; struct ads1015_data *data = iio_priv(indio_dev); - mutex_lock(&data->lock); + guard(mutex)(&data->lock); switch (mask) { case IIO_CHAN_INFO_RAW: ret = iio_device_claim_direct_mode(indio_dev); if (ret) - break; - - if (ads1015_event_channel_enabled(data) && - data->event_channel != chan->address) { - ret = -EBUSY; - goto release_direct; - } - - ret = ads1015_set_power_state(data, true); - if (ret < 0) - goto release_direct; - - ret = ads1015_get_adc_result(data, chan->address, val); - if (ret < 0) { - ads1015_set_power_state(data, false); - goto release_direct; - } - - *val = sign_extend32(*val >> chan->scan_type.shift, - chan->scan_type.realbits - 1); - - ret = ads1015_set_power_state(data, false); - if (ret < 0) - goto release_direct; - - ret = IIO_VAL_INT; -release_direct: + return ret; + ret = __ads1015_read_info_raw(data, chan, val); iio_device_release_direct_mode(indio_dev); - break; + if (ret) + return ret; + + return IIO_VAL_INT; case IIO_CHAN_INFO_SCALE: idx = data->channel_data[chan->address].pga; *val = ads1015_fullscale_range[idx]; *val2 = chan->scan_type.realbits - 1; - ret = IIO_VAL_FRACTIONAL_LOG2; - break; + return IIO_VAL_FRACTIONAL_LOG2; case IIO_CHAN_INFO_SAMP_FREQ: idx = data->channel_data[chan->address].data_rate; *val = data->chip->data_rate[idx]; - ret = IIO_VAL_INT; - break; + return IIO_VAL_INT; default: - ret = -EINVAL; - break; + return -EINVAL; } - mutex_unlock(&data->lock); - - return ret; } static int ads1015_write_raw(struct iio_dev *indio_dev, @@ -599,23 +597,16 @@ static int ads1015_write_raw(struct iio_dev *indio_dev, int val2, long mask) { struct ads1015_data *data = iio_priv(indio_dev); - int ret; - mutex_lock(&data->lock); + guard(mutex)(&data->lock); switch (mask) { case IIO_CHAN_INFO_SCALE: - ret = ads1015_set_scale(data, chan, val, val2); - break; + return ads1015_set_scale(data, chan, val, val2); case IIO_CHAN_INFO_SAMP_FREQ: - ret = ads1015_set_data_rate(data, chan->address, val); - break; + return ads1015_set_data_rate(data, chan->address, val); default: - ret = -EINVAL; - break; + return -EINVAL; } - mutex_unlock(&data->lock); - - return ret; } static int ads1015_read_event(struct iio_dev *indio_dev, @@ -624,20 +615,18 @@ static int ads1015_read_event(struct iio_dev *indio_dev, int *val2) { struct ads1015_data *data = iio_priv(indio_dev); - int ret; unsigned int comp_queue; int period; int dr; - mutex_lock(&data->lock); + guard(mutex)(&data->lock); switch (info) { case IIO_EV_INFO_VALUE: *val = (dir == IIO_EV_DIR_RISING) ? data->thresh_data[chan->address].high_thresh : data->thresh_data[chan->address].low_thresh; - ret = IIO_VAL_INT; - break; + return IIO_VAL_INT; case IIO_EV_INFO_PERIOD: dr = data->channel_data[chan->address].data_rate; comp_queue = data->thresh_data[chan->address].comp_queue; @@ -646,16 +635,10 @@ static int ads1015_read_event(struct iio_dev *indio_dev, *val = period / USEC_PER_SEC; *val2 = period % USEC_PER_SEC; - ret = IIO_VAL_INT_PLUS_MICRO; - break; + return IIO_VAL_INT_PLUS_MICRO; default: - ret = -EINVAL; - break; + return -EINVAL; } - - mutex_unlock(&data->lock); - - return ret; } static int ads1015_write_event(struct iio_dev *indio_dev, @@ -666,24 +649,22 @@ static int ads1015_write_event(struct iio_dev *indio_dev, struct ads1015_data *data = iio_priv(indio_dev); const int *data_rate = data->chip->data_rate; int realbits = chan->scan_type.realbits; - int ret = 0; long long period; int i; int dr; - mutex_lock(&data->lock); + guard(mutex)(&data->lock); switch (info) { case IIO_EV_INFO_VALUE: - if (val >= 1 << (realbits - 1) || val < -1 << (realbits - 1)) { - ret = -EINVAL; - break; - } + if (val >= 1 << (realbits - 1) || val < -1 << (realbits - 1)) + return -EINVAL; + if (dir == IIO_EV_DIR_RISING) data->thresh_data[chan->address].high_thresh = val; else data->thresh_data[chan->address].low_thresh = val; - break; + return 0; case IIO_EV_INFO_PERIOD: dr = data->channel_data[chan->address].data_rate; period = val * USEC_PER_SEC + val2; @@ -694,15 +675,10 @@ static int ads1015_write_event(struct iio_dev *indio_dev, break; } data->thresh_data[chan->address].comp_queue = i; - break; + return 0; default: - ret = -EINVAL; - break; + return -EINVAL; } - - mutex_unlock(&data->lock); - - return ret; } static int ads1015_read_event_config(struct iio_dev *indio_dev, @@ -710,25 +686,19 @@ static int ads1015_read_event_config(struct iio_dev *indio_dev, enum iio_event_direction dir) { struct ads1015_data *data = iio_priv(indio_dev); - int ret = 0; - mutex_lock(&data->lock); - if (data->event_channel == chan->address) { - switch (dir) { - case IIO_EV_DIR_RISING: - ret = 1; - break; - case IIO_EV_DIR_EITHER: - ret = (data->comp_mode == ADS1015_CFG_COMP_MODE_WINDOW); - break; - default: - ret = -EINVAL; - break; - } - } - mutex_unlock(&data->lock); + guard(mutex)(&data->lock); + if (data->event_channel != chan->address) + return -EBUSY; - return ret; + switch (dir) { + case IIO_EV_DIR_RISING: + return 1; + case IIO_EV_DIR_EITHER: + return (data->comp_mode == ADS1015_CFG_COMP_MODE_WINDOW); + default: + return -EINVAL; + } } static int ads1015_enable_event_config(struct ads1015_data *data, @@ -813,14 +783,12 @@ static int ads1015_write_event_config(struct iio_dev *indio_dev, int comp_mode = (dir == IIO_EV_DIR_EITHER) ? ADS1015_CFG_COMP_MODE_WINDOW : ADS1015_CFG_COMP_MODE_TRAD; - mutex_lock(&data->lock); + guard(mutex)(&data->lock); /* Prevent from enabling both buffer and event at a time */ ret = iio_device_claim_direct_mode(indio_dev); - if (ret) { - mutex_unlock(&data->lock); + if (ret) return ret; - } if (state) ret = ads1015_enable_event_config(data, chan, comp_mode); @@ -828,8 +796,6 @@ static int ads1015_write_event_config(struct iio_dev *indio_dev, ret = ads1015_disable_event_config(data, chan, comp_mode); iio_device_release_direct_mode(indio_dev); - mutex_unlock(&data->lock); - return ret; } From patchwork Mon Feb 17 14:16:06 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jonathan Cameron X-Patchwork-Id: 13977938 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 0545C22370D for ; Mon, 17 Feb 2025 14:17:21 +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=1739801842; cv=none; b=tGVN9KzzU3Z/QPhdjV6/Pdn180cZblB1s7TQ4iWWmAPds3WvCBekt5pebZ/6e4OdAA85A+BZrt2JyvM7ylgtbqjYhWkX05r2ZiD2Xz+fXDAaWLM6JLXMvwJcMJfRUqm45R29RYBayt5yG8vEHbe/Dz18Mbj0DFCS7H1N8UJbZ50= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739801842; c=relaxed/simple; bh=vaI3p86yqkWTV92lC9NLqHcE1PrPVtBumyyz8er07i8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=sop1PZfGrc2ClMZNZJR+NhmyrV7wuDvszV0qJpUmuWPIpoAdDFoOl4t+ZlW8JpknjxI7mJDxO6j3ShdRC+Pmr6gAhvRD7x50oWN+Q+iEt7PYeWQYJVIKf29Ew8eUj+mQiBLrOMdPZQCc6Qtw4tTK/rROY8eXAG8ZBPq8yfw2H1k= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=mu3HIO9v; 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="mu3HIO9v" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 73212C4CED1; Mon, 17 Feb 2025 14:17:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739801841; bh=vaI3p86yqkWTV92lC9NLqHcE1PrPVtBumyyz8er07i8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=mu3HIO9v3Mlm856J+QxvolFtGQtEbLkOGCce6kxsUtkelcC9i86zJO1kxpAyQ/AJw fVQC/dmK2aYEl4/4cfrdv7rOm9s3hz2+nlkTVYK6GTYMTo9dl81r5e20mvniJ2W79a eb3ZSyxPNE3HldAFlwMiKjsyBZwKDrewlKOlfUsxmDdPI2rChEf32B1//FI+cWWPL4 a9ujSq1/sbe1MjI0Pypdqb+aucDkynOf6V9etmaKJYv+CsN/AtTtnZvd0Qi1qHWu96 b3QKWBD2OlfZQVSaNNUg48LG6z2MmYAIJ/5PUmfDCXt8s57JfLNMgFZSI9F+CvN/r4 0O6CSK6WvSZuw== From: Jonathan Cameron To: linux-iio@vger.kernel.org Cc: David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Olivier Moysan , Mike Looijmans , Phil Reid , Marek Vasut , Miquel Raynal , Claudiu Beznea , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Alisa-Dariana Roman , Marek Vasut , Frank Li , Jonathan Cameron Subject: [PATCH 06/29] iio: adc: ti-ads1015: Switch to sparse friendly iio_device_claim/release_direct() Date: Mon, 17 Feb 2025 14:16:06 +0000 Message-ID: <20250217141630.897334-7-jic23@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250217141630.897334-1-jic23@kernel.org> References: <20250217141630.897334-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: Marek Vasut --- drivers/iio/adc/ti-ads1015.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/drivers/iio/adc/ti-ads1015.c b/drivers/iio/adc/ti-ads1015.c index a91ec18ddbec..729977b611ec 100644 --- a/drivers/iio/adc/ti-ads1015.c +++ b/drivers/iio/adc/ti-ads1015.c @@ -569,11 +569,10 @@ static int ads1015_read_raw(struct iio_dev *indio_dev, guard(mutex)(&data->lock); 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; ret = __ads1015_read_info_raw(data, chan, val); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); if (ret) return ret; @@ -786,16 +785,15 @@ static int ads1015_write_event_config(struct iio_dev *indio_dev, guard(mutex)(&data->lock); /* Prevent from enabling both buffer and event at a time */ - ret = iio_device_claim_direct_mode(indio_dev); - if (ret) - return ret; + if (!iio_device_claim_direct(indio_dev)) + return -EBUSY; if (state) ret = ads1015_enable_event_config(data, chan, comp_mode); else ret = ads1015_disable_event_config(data, chan, comp_mode); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); return ret; } From patchwork Mon Feb 17 14:16:07 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jonathan Cameron X-Patchwork-Id: 13977939 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 C7022212FA2 for ; Mon, 17 Feb 2025 14:17:27 +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=1739801847; cv=none; b=pmQ0apMAU1YsevKhpg4jLpcMoogVlbpqv+algUMdw5fn71LXe/q2h3CjByxuXl3T9jJqO15MvlsHamnPdE4/msDGw604qASKuL6+mfVM6bFpRXblmi2MTmuOH4KHilupBWlMGkLrA6bpml9T3sMME4QK38IJ0GaeIasGEPA0LFA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739801847; c=relaxed/simple; bh=csnHw+U3DnGvCZ2RSAdo8qUvmmZTpoEggvKkm5Do0JQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=nTWaMUBmmbQxVh0LyPlzlRXhOaWwGncy24RrPpP0/4J4B9agOR2NTBipDwLS88o7YQM4wysJ+Ya4NllW6sxf4SFlbKKieFSrOayyu6PBobV39iVi7k/NtuE4n0StjKCvwLQvw1gFzINtn5U/ehW32XcoFT78eDZjXeTFEjbB3gw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Fapjf+89; 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="Fapjf+89" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1AC4EC4CEE4; Mon, 17 Feb 2025 14:17:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739801847; bh=csnHw+U3DnGvCZ2RSAdo8qUvmmZTpoEggvKkm5Do0JQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Fapjf+89meeGOydvAuyx4F+73VphUbV7qJ9ZC+cBxdTLM+55+sv714ngA1bat48yn Eto4wtzijQSuWjVOVVkl9gWyjCTvpDnzQIrIQAkBd6VhxOlmUywGt3Hx3XjtKbOe8B Tp7NWg2lhdNiKU7QCTtqPpJdErgGiJxYOyjL5nIYEv4DAIqBlHu3oBWOWULBbEMy+j uyXa3pXzkx9PLBOb6Z+p+oxvZJaJCT859MH2N7BgfrbdI4QLeev2gUX8fmlFeAYBvJ ZFeZLEgFfrAm8hXhUdEVe4l9KXSiyTSicuB1udEQflYX4ZTzQxbKXCeAXsZrLUSVTr nFxzJXwGnRJVQ== From: Jonathan Cameron To: linux-iio@vger.kernel.org Cc: David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Olivier Moysan , Mike Looijmans , Phil Reid , Marek Vasut , Miquel Raynal , Claudiu Beznea , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Alisa-Dariana Roman , Marek Vasut , Frank Li , Jonathan Cameron Subject: [PATCH 07/29] iio: adc: stm32-dfsdm: Factor out core of reading INFO_RAW Date: Mon, 17 Feb 2025 14:16:07 +0000 Message-ID: <20250217141630.897334-8-jic23@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250217141630.897334-1-jic23@kernel.org> References: <20250217141630.897334-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 This allows the claim on direct mode to be release in one place rather than a lot of error paths, simplifying code. Signed-off-by: Jonathan Cameron Cc: Olivier Moysan Reviewed-by: Olivier Moysan --- drivers/iio/adc/stm32-dfsdm-adc.c | 59 +++++++++++++++++++------------ 1 file changed, 36 insertions(+), 23 deletions(-) diff --git a/drivers/iio/adc/stm32-dfsdm-adc.c b/drivers/iio/adc/stm32-dfsdm-adc.c index fe11b0d8eab3..1cf2594d6872 100644 --- a/drivers/iio/adc/stm32-dfsdm-adc.c +++ b/drivers/iio/adc/stm32-dfsdm-adc.c @@ -1306,6 +1306,38 @@ static int stm32_dfsdm_write_raw(struct iio_dev *indio_dev, return -EINVAL; } +static int __stm32_dfsdm_read_info_raw(struct iio_dev *indio_dev, + struct iio_chan_spec const *chan, + int *val) +{ + struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); + int ret = 0; + + if (adc->hwc) + ret = iio_hw_consumer_enable(adc->hwc); + if (adc->backend) + ret = iio_backend_enable(adc->backend[chan->scan_index]); + if (ret < 0) { + dev_err(&indio_dev->dev, + "%s: IIO enable failed (channel %d)\n", + __func__, chan->channel); + return ret; + } + ret = stm32_dfsdm_single_conv(indio_dev, chan, val); + if (adc->hwc) + iio_hw_consumer_disable(adc->hwc); + if (adc->backend) + iio_backend_disable(adc->backend[chan->scan_index]); + if (ret < 0) { + dev_err(&indio_dev->dev, + "%s: Conversion failed (channel %d)\n", + __func__, chan->channel); + return ret; + } + + return 0; +} + static int stm32_dfsdm_read_raw(struct iio_dev *indio_dev, struct iio_chan_spec const *chan, int *val, int *val2, long mask) @@ -1326,30 +1358,11 @@ static int stm32_dfsdm_read_raw(struct iio_dev *indio_dev, ret = iio_device_claim_direct_mode(indio_dev); if (ret) return ret; - if (adc->hwc) - ret = iio_hw_consumer_enable(adc->hwc); - if (adc->backend) - ret = iio_backend_enable(adc->backend[idx]); - if (ret < 0) { - dev_err(&indio_dev->dev, - "%s: IIO enable failed (channel %d)\n", - __func__, chan->channel); - iio_device_release_direct_mode(indio_dev); - return ret; - } - ret = stm32_dfsdm_single_conv(indio_dev, chan, val); - if (adc->hwc) - iio_hw_consumer_disable(adc->hwc); - if (adc->backend) - iio_backend_disable(adc->backend[idx]); - if (ret < 0) { - dev_err(&indio_dev->dev, - "%s: Conversion failed (channel %d)\n", - __func__, chan->channel); - iio_device_release_direct_mode(indio_dev); - return ret; - } + + ret = __stm32_dfsdm_read_info_raw(indio_dev, chan, val); iio_device_release_direct_mode(indio_dev); + if (ret) + return ret; return IIO_VAL_INT; case IIO_CHAN_INFO_OVERSAMPLING_RATIO: From patchwork Mon Feb 17 14:16:08 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jonathan Cameron X-Patchwork-Id: 13977940 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 7DF6C2236EE for ; Mon, 17 Feb 2025 14:17:33 +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=1739801853; cv=none; b=q4zF2f4hCFNWWy73WTUDh1A9PX3G/AQeWHgM29H4LIZUTuW9Vbs21xM2ewz8a9BT5p7vi0BdPdx1Banf5Mhpux/ma1vsMWElsW9iz/VXWRsa8TfkxWwW2Lfg9E3ztUBzMbCdhDNsVLKmc4oPS4lXSA5dGhRKgbeDft2HdMXNNO4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739801853; c=relaxed/simple; bh=P/ekOOL/Hm7vsID+46Wh8NlqGhZlNRtf4X/EyKh2ZR8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=J6o0FFsAYVU5SIWt6IzZNYUOIH/JD9g3q6YpDz8rpv41wVEOZNjcrtTTZUIm4vaeqd5dH9+OwerN35CtzcjGmuSC0QyoElQEFwSHa2bhGmzdvL4DMRjxkZarEvgej8f9bGZx0L6hPQLw394mXheP8Y1FHfN42E6EsbbN01cGriE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=kcEb3f26; 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="kcEb3f26" Received: by smtp.kernel.org (Postfix) with ESMTPSA id CC8C8C4CEEB; Mon, 17 Feb 2025 14:17:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739801853; bh=P/ekOOL/Hm7vsID+46Wh8NlqGhZlNRtf4X/EyKh2ZR8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=kcEb3f26B6F+BOwYpq15o7uGyifcZy6eLWSabLSnAWDxXX4q6MtLFP8lGbpdieLVA KeOg0QP3NcVGDOUf30l+RZ3cSlxIHWykneh8eBWun8XpoI6gqMNE4Gl2ELYec1aKuY YHSDMJeyupD59kUQSWO0Wtt7U87JTmS2XJldiHaRQCoiWBseO1F3BLDdNKnbY7xPTQ Otc4x3qehk34nw939JUFTyVUwEt0mPI/dn+n+X6b8VLSnErNMBrJOsxvnnTJ42F+2+ tOSj3+Zb94mVogSFXwQTq6gGs2O4+lzXunJl6hxMLD4v9PcMZyBT1vbOhDmP+X0oR5 ZhatE5mYy107A== From: Jonathan Cameron To: linux-iio@vger.kernel.org Cc: David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Olivier Moysan , Mike Looijmans , Phil Reid , Marek Vasut , Miquel Raynal , Claudiu Beznea , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Alisa-Dariana Roman , Marek Vasut , Frank Li , Jonathan Cameron Subject: [PATCH 08/29] iio: adc: stm32-dfsdm: Switch to sparse friendly iio_device_claim/release_direct() Date: Mon, 17 Feb 2025 14:16:08 +0000 Message-ID: <20250217141630.897334-9-jic23@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250217141630.897334-1-jic23@kernel.org> References: <20250217141630.897334-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 Olivier Moysan Reviewed-by: Olivier Moysan --- drivers/iio/adc/stm32-dfsdm-adc.c | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/drivers/iio/adc/stm32-dfsdm-adc.c b/drivers/iio/adc/stm32-dfsdm-adc.c index 1cf2594d6872..726ddafc9f6d 100644 --- a/drivers/iio/adc/stm32-dfsdm-adc.c +++ b/drivers/iio/adc/stm32-dfsdm-adc.c @@ -1275,9 +1275,8 @@ static int stm32_dfsdm_write_raw(struct iio_dev *indio_dev, switch (mask) { case IIO_CHAN_INFO_OVERSAMPLING_RATIO: - ret = iio_device_claim_direct_mode(indio_dev); - if (ret) - return ret; + if (!iio_device_claim_direct(indio_dev)) + return -EBUSY; ret = stm32_dfsdm_compute_all_osrs(indio_dev, val); if (!ret) { @@ -1287,19 +1286,18 @@ static int stm32_dfsdm_write_raw(struct iio_dev *indio_dev, adc->oversamp = val; adc->sample_freq = spi_freq / val; } - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); return ret; case IIO_CHAN_INFO_SAMP_FREQ: if (!val) return -EINVAL; - ret = iio_device_claim_direct_mode(indio_dev); - if (ret) - return ret; + if (!iio_device_claim_direct(indio_dev)) + return -EBUSY; ret = dfsdm_adc_set_samp_freq(indio_dev, val, spi_freq); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); return ret; } @@ -1355,12 +1353,11 @@ static int stm32_dfsdm_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; ret = __stm32_dfsdm_read_info_raw(indio_dev, chan, val); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); if (ret) return ret; return IIO_VAL_INT; From patchwork Mon Feb 17 14:16:09 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Jonathan Cameron X-Patchwork-Id: 13977941 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 757F421D5BB for ; Mon, 17 Feb 2025 14:17:38 +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=1739801858; cv=none; b=OOSRBxEGfa3g4+BsmZml1MyI7zNIts2FJDXPVc7Nx8ASS1SCsGRrILEgBM4XcRPi7AuNk8BOhfeSCRedY4gMCXf1GoLyj3/ma0/6KU3ujMPzZjm0snyAcXA0b4zwr13ShORVf9pH9pd40hB3QzJ9znSKtbmKmigmbVPik0Jd3wg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739801858; c=relaxed/simple; bh=z7jsxnacv+zgPXn/KPUBqzjEg2jD4ftieB6KHU7Fl94=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=tMX2oN+2d/wId3jn5Kw673/IlPK9hYuZy+9z9MOU7YVUZpHjw3NHgJbplGBf/eI47Wc5tpDN7SinoU6EzIEtFclSKRvzy2DcdjNyLIiLaoWgVUNqHwNMJmuwT6oXm4II9WLRgjtDLHt+qAaBcjnOHPfPzNtPJo5REE4GsYjcux4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=KimZJf+B; 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="KimZJf+B" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A24D6C4CEE4; Mon, 17 Feb 2025 14:17:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739801858; bh=z7jsxnacv+zgPXn/KPUBqzjEg2jD4ftieB6KHU7Fl94=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=KimZJf+BgHyPIaK+Keu3BM92NYX4PTUmhEjlKMFVxjW+pmx4UtwZPrxwu4oZ8ggrB B5vqU3PG0eWxzmKCfZBDA6SXQ0BcmlBKpnhokrJe1g0AKVP2IE2NsyDe/UsEfoDnJe Mvw3lI0MuTt/liXWvgPaE3N1+mdCVGy1BIW5FRqhXgRdd1pD58sXevSgDcNls3err9 WcIdwIMtWN+oY+M9vFIeV0s05zlAjkAIEMxos+2MfKZ3VvG6MJzmq2EJpHWUYwSmsp VakGkhtCaM9/GLfd19tnIPTl5USGQ1mQZwUq0Dcio/sCCIDZ6NSMwznd/RPpPExK54 1Sttp3534RbVg== From: Jonathan Cameron To: linux-iio@vger.kernel.org Cc: David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Olivier Moysan , Mike Looijmans , Phil Reid , Marek Vasut , Miquel Raynal , Claudiu Beznea , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Alisa-Dariana Roman , Marek Vasut , Frank Li , Jonathan Cameron Subject: [PATCH 09/29] iio: adc: ad4030: Switch to sparse friendly iio_device_claim/release_direct() Date: Mon, 17 Feb 2025 14:16:09 +0000 Message-ID: <20250217141630.897334-10-jic23@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250217141630.897334-1-jic23@kernel.org> References: <20250217141630.897334-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 Reviewed-by: Nuno Sá --- drivers/iio/adc/ad4030.c | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/drivers/iio/adc/ad4030.c b/drivers/iio/adc/ad4030.c index ab5497c8ea1e..209cfc2e1785 100644 --- a/drivers/iio/adc/ad4030.c +++ b/drivers/iio/adc/ad4030.c @@ -784,13 +784,12 @@ static int ad4030_read_raw(struct iio_dev *indio_dev, if (info == IIO_CHAN_INFO_SCALE) return ad4030_get_chan_scale(indio_dev, chan, val, val2); - ret = iio_device_claim_direct_mode(indio_dev); - if (ret) - return ret; + if (!iio_device_claim_direct(indio_dev)) + return -EBUSY; ret = ad4030_read_raw_dispatch(indio_dev, chan, val, val2, info); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); return ret; } @@ -822,13 +821,12 @@ static int ad4030_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 = ad4030_write_raw_dispatch(indio_dev, chan, val, val2, info); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); return ret; } @@ -839,16 +837,15 @@ static int ad4030_reg_access(struct iio_dev *indio_dev, unsigned int reg, const struct ad4030_state *st = iio_priv(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; if (readval) ret = regmap_read(st->regmap, reg, readval); else ret = regmap_write(st->regmap, reg, writeval); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); return ret; } From patchwork Mon Feb 17 14:16:10 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Jonathan Cameron X-Patchwork-Id: 13977942 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 3609F224B08 for ; Mon, 17 Feb 2025 14:17:44 +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=1739801864; cv=none; b=MEqx1eq3THM8cJHULoJGtg5QhJojqgVWxGS23BgHIig+OF/U+00gM0qo7KNHrM2hUMoESPEfvtZxJ81Us/mhvRJpViscKJqnWl5h8vQUm/QcKFMO0TkvcZ0bUaUj1BF4Af5oSUUfxCD3WB+Ed2uX3UQCJiDaQ5e/vKAzqBlJWJs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739801864; c=relaxed/simple; bh=xKNHcZuBJ1ZmkupmaDblXHFlvC1oQtH9NRZ8n7AsC6g=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Lm/se+ktQjSx1BJdtG0kz2sMcNTuP4o6AhKfVRJHWfrCehByxXJWgH4eyk9LWp9ba9MyifvOO3eSC/EveWfeTcOs9DugbUZji4YJ1Kn/AJQSUzK0DunQt4xjZix3rC6tJwhA6zHIHcCHNTuQ/OqCK+4p5iLWRkD1Hj/UN3pKrvM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=IC7S8lJ/; 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="IC7S8lJ/" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1A3C1C4CED1; Mon, 17 Feb 2025 14:17:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739801864; bh=xKNHcZuBJ1ZmkupmaDblXHFlvC1oQtH9NRZ8n7AsC6g=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=IC7S8lJ/lTHLgppe0QZ3MDn4xvWu7mm+5gRABQhnfFcFZo0hNVJPYnqkAU3f+j24W 5/27p5jmnV28YORjTFB93b5ShI4P2WAB+NZMCKJcSHbwOQMfo0GFz7fvHofrhvDCiN kcLsMnmk5tubKH5OCv2DkM0QIBiKnytMKAFbgZ+gNq0c9ywdnfSya1pQqJK3Y8Gsa/ QCGXpLQUQ5+yHDtBFzBaJ5YHIlPJ2h4pKaGF0q1S63LaNqCMuIMSyre+LqK4zwkso7 x67jQmZlnJK+nmtBoLgIWMzOI789I0ri+tnES95HYqjauzPthDFN2zDdyl0JEYEAFj 5Kk8xNxrCsE1Q== From: Jonathan Cameron To: linux-iio@vger.kernel.org Cc: David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Olivier Moysan , Mike Looijmans , Phil Reid , Marek Vasut , Miquel Raynal , Claudiu Beznea , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Alisa-Dariana Roman , Marek Vasut , Frank Li , Jonathan Cameron Subject: [PATCH 10/29] iio: adc: ad7192: Factor out core of ad7192_write_raw() to simplify error handling. Date: Mon, 17 Feb 2025 14:16:10 +0000 Message-ID: <20250217141630.897334-11-jic23@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250217141630.897334-1-jic23@kernel.org> References: <20250217141630.897334-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 Factor out everything under the lock, use guard() for the mutex to avoid need to manually unlock, and switch sense of matching checks in loops to reduce indent. There are some functional changes in here as well as the code no longer updates the filter_freq_available if no change has been made to the oversampling ratio. Signed-off-by: Jonathan Cameron Cc: Alisa-Dariana Roman Reviewed-by: Nuno Sá --- drivers/iio/adc/ad7192.c | 111 ++++++++++++++++++++------------------- 1 file changed, 57 insertions(+), 54 deletions(-) diff --git a/drivers/iio/adc/ad7192.c b/drivers/iio/adc/ad7192.c index e96a5ae92375..785429900da8 100644 --- a/drivers/iio/adc/ad7192.c +++ b/drivers/iio/adc/ad7192.c @@ -7,6 +7,7 @@ #include #include +#include #include #include #include @@ -945,80 +946,82 @@ static int ad7192_read_raw(struct iio_dev *indio_dev, return -EINVAL; } -static int ad7192_write_raw(struct iio_dev *indio_dev, - struct iio_chan_spec const *chan, - int val, - int val2, - long mask) +static int __ad7192_write_raw(struct iio_dev *indio_dev, + struct iio_chan_spec const *chan, + int val, + int val2, + long mask) { struct ad7192_state *st = iio_priv(indio_dev); - int ret, i, div; + int i, div; unsigned int tmp; - ret = iio_device_claim_direct_mode(indio_dev); - if (ret) - return ret; - - mutex_lock(&st->lock); + guard(mutex)(&st->lock); switch (mask) { case IIO_CHAN_INFO_SCALE: - ret = -EINVAL; - for (i = 0; i < ARRAY_SIZE(st->scale_avail); i++) - if (val2 == st->scale_avail[i][1]) { - ret = 0; - tmp = st->conf; - st->conf &= ~AD7192_CONF_GAIN_MASK; - st->conf |= FIELD_PREP(AD7192_CONF_GAIN_MASK, i); - if (tmp == st->conf) - break; - ad_sd_write_reg(&st->sd, AD7192_REG_CONF, - 3, st->conf); - ad7192_calibrate_all(st); - break; - } - break; - case IIO_CHAN_INFO_SAMP_FREQ: - if (!val) { - ret = -EINVAL; - break; + for (i = 0; i < ARRAY_SIZE(st->scale_avail); i++) { + if (val2 != st->scale_avail[i][1]) + continue; + + tmp = st->conf; + st->conf &= ~AD7192_CONF_GAIN_MASK; + st->conf |= FIELD_PREP(AD7192_CONF_GAIN_MASK, i); + if (tmp == st->conf) + return 0; + ad_sd_write_reg(&st->sd, AD7192_REG_CONF, 3, st->conf); + ad7192_calibrate_all(st); + return 0; } + return -EINVAL; + case IIO_CHAN_INFO_SAMP_FREQ: + if (!val) + return -EINVAL; div = st->fclk / (val * ad7192_get_f_order(st) * 1024); - if (div < 1 || div > 1023) { - ret = -EINVAL; - break; - } + if (div < 1 || div > 1023) + return -EINVAL; st->mode &= ~AD7192_MODE_RATE_MASK; st->mode |= FIELD_PREP(AD7192_MODE_RATE_MASK, div); ad_sd_write_reg(&st->sd, AD7192_REG_MODE, 3, st->mode); ad7192_update_filter_freq_avail(st); - break; + return 0; case IIO_CHAN_INFO_LOW_PASS_FILTER_3DB_FREQUENCY: - ret = ad7192_set_3db_filter_freq(st, val, val2 / 1000); - break; + return ad7192_set_3db_filter_freq(st, val, val2 / 1000); case IIO_CHAN_INFO_OVERSAMPLING_RATIO: - ret = -EINVAL; - for (i = 0; i < ARRAY_SIZE(st->oversampling_ratio_avail); i++) - if (val == st->oversampling_ratio_avail[i]) { - ret = 0; - tmp = st->mode; - st->mode &= ~AD7192_MODE_AVG_MASK; - st->mode |= FIELD_PREP(AD7192_MODE_AVG_MASK, i); - if (tmp == st->mode) - break; - ad_sd_write_reg(&st->sd, AD7192_REG_MODE, - 3, st->mode); - break; - } - ad7192_update_filter_freq_avail(st); - break; + for (i = 0; i < ARRAY_SIZE(st->oversampling_ratio_avail); i++) { + if (val != st->oversampling_ratio_avail[i]) + continue; + + tmp = st->mode; + st->mode &= ~AD7192_MODE_AVG_MASK; + st->mode |= FIELD_PREP(AD7192_MODE_AVG_MASK, i); + if (tmp == st->mode) + return 0; + ad_sd_write_reg(&st->sd, AD7192_REG_MODE, 3, st->mode); + ad7192_update_filter_freq_avail(st); + return 0; + } + return -EINVAL; default: - ret = -EINVAL; + return -EINVAL; } +} + +static int ad7192_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; - mutex_unlock(&st->lock); + ret = __ad7192_write_raw(indio_dev, chan, val, val2, mask); iio_device_release_direct_mode(indio_dev); From patchwork Mon Feb 17 14:16:11 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Jonathan Cameron X-Patchwork-Id: 13977943 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 003E6224B17 for ; Mon, 17 Feb 2025 14:17:50 +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=1739801871; cv=none; b=RiHjX7BRyoxdm60DdPmcNn1s4kUZi07pCNdemPNJuAHInGWIxypH4Ry28JgroMifd3tUo36WaFE6cjbn8P1Bs+Ptyms6jMNN/T+jHRj4oTbNlIPWy3q3mednxX7CFUoPDNb3WN3po71G1I7b0SNdza/crUEepn3NwZYiacNguqA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739801871; c=relaxed/simple; bh=lBCHWJxoUYFtYnqWzjIChKY2nsdvZpKkFsRNp5YxjnM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=attwMKqVqndj9jfjqDchIKkDKXGbizoN1UNYv2+U+tF0bvqeMba7CyyTDQ8/0DhODUhNfesvvc12UuoJrRt77o7F/ijhZTSZom+7RxgN046d903+pBIbRgFGbtkqjr1uF17aIHkmk2agwh9J4ag4dmlfUl0dryDgoN2dVqj/PkQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=LgFFrTy2; 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="LgFFrTy2" Received: by smtp.kernel.org (Postfix) with ESMTPSA id E683DC4CEE4; Mon, 17 Feb 2025 14:17:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739801870; bh=lBCHWJxoUYFtYnqWzjIChKY2nsdvZpKkFsRNp5YxjnM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=LgFFrTy2ENz3t4PxDfHxGruN5gMr6YrwXyLElmU3AX8lglVEbnX9ioiMlyu58YttZ TScnWjJecB51Fl4zAkU0KCthDn7dmrlJsXOU7al1bZ3mU6eebIAoXW776vWtT06mp4 ux9ME26fupzlNFGqtatnFLu5mmwI4k5TRjd/rWKfVeH3uoAvxZpkdDNRVetq05lR37 2reM7X/q5n5WXO6R19VVW8dJB5tbj9p+Up/ZVjHdDfVaekXnjBXE7MCV/i3p8Yi/Tw +xj+5MgFh8iA82QnUv+lFEOn6fY/ZZ6h1UKQq/dCJOox5fTMhOpXcbwkPXSeQ8dm0c WvNXbBdlXSjAA== From: Jonathan Cameron To: linux-iio@vger.kernel.org Cc: David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Olivier Moysan , Mike Looijmans , Phil Reid , Marek Vasut , Miquel Raynal , Claudiu Beznea , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Alisa-Dariana Roman , Marek Vasut , Frank Li , Jonathan Cameron Subject: [PATCH 11/29] iio: adc: ad7192: Switch to sparse friendly iio_device_claim/release_direct() Date: Mon, 17 Feb 2025 14:16:11 +0000 Message-ID: <20250217141630.897334-12-jic23@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250217141630.897334-1-jic23@kernel.org> References: <20250217141630.897334-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: Alisa-Dariana Roman Reviewed-by: Nuno Sá --- drivers/iio/adc/ad7192.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/drivers/iio/adc/ad7192.c b/drivers/iio/adc/ad7192.c index 785429900da8..f6150b905286 100644 --- a/drivers/iio/adc/ad7192.c +++ b/drivers/iio/adc/ad7192.c @@ -694,9 +694,8 @@ static ssize_t ad7192_set(struct device *dev, if (ret < 0) return ret; - ret = iio_device_claim_direct_mode(indio_dev); - if (ret) - return ret; + if (!iio_device_claim_direct(indio_dev)) + return -EBUSY; switch ((u32)this_attr->address) { case AD7192_REG_GPOCON: @@ -719,7 +718,7 @@ static ssize_t ad7192_set(struct device *dev, ret = -EINVAL; } - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); return ret ? ret : len; } @@ -1017,13 +1016,12 @@ static int ad7192_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 = __ad7192_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:16:12 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Jonathan Cameron X-Patchwork-Id: 13977944 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 BD80822332C for ; Mon, 17 Feb 2025 14:17:56 +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=1739801876; cv=none; b=cknzLYskOBeBZtV+8kJv8Up/t+14ZSOss2QXUa8v4pS3Cg8JVVzgi97tMQ6VpDaeNMZ55ckvc+0I1liZRsFXy6zXC9hKQ4nor8Z/p+j+GD/FgHmxP0PBJaFRdSgVi6JwsnmyuW7qNG/1JoRwbrq40YqGqz8maDX0+ygsX8eQzEs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739801876; c=relaxed/simple; bh=ByhlkCrkjQqcJio/gxxmPyJVVQtcOBdbFa/D8+oHRag=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=pSYxxnM9ey5s2O/kKtCSpyWiShzcN3Ajg/ve3wDyXLrXMNUC1JQXC6zo4wBGFlFVOFYW+ho6JnJfc54Sh6twABgmd/igVpiLFxMZD0WWDFYKdY84A8vgCJCvV7n0eNMEp686zWPtEKqteFElPbf3baUprPzJzzTg3R9fheuwqT8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=K6JMYIXK; 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="K6JMYIXK" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2D896C4CED1; Mon, 17 Feb 2025 14:17:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739801876; bh=ByhlkCrkjQqcJio/gxxmPyJVVQtcOBdbFa/D8+oHRag=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=K6JMYIXKEveBWThJ0VL1HINhCEwDIbKBy3lRdhUqB1U9ZY7XLPC2Y3KQvHUfGzRX5 W03KW2mYj7ZaH2t6lwwCGruv6vGRt8BHSZZUhvLfb8fyt2JVwa+iMwKHzIiqbgfXY9 CVHcRXhk4D+dnEU4WnFemE6wfDF7yJ7WzzOS2mh8LFvfXuS6bff6mWyic/SPchhtJ/ rWWMOczi01IkBhWEJhBWXh/H/Dfa+lvlAkHmovPhojyzbEhl/oY1egKPEfMzWIUxZH k+E4Bv+kSiWVySCA+x6GktU4KnZ8THxNaGVuPMO7RTi/YX0BL6vmeL83PLRaJBDF76 mxr1VMIMxKsnA== From: Jonathan Cameron To: linux-iio@vger.kernel.org Cc: David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Olivier Moysan , Mike Looijmans , Phil Reid , Marek Vasut , Miquel Raynal , Claudiu Beznea , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Alisa-Dariana Roman , Marek Vasut , Frank Li , Jonathan Cameron Subject: [PATCH 12/29] iio: adc: ad7768-1: Move setting of val a bit later to avoid unnecessary return value check Date: Mon, 17 Feb 2025 14:16:12 +0000 Message-ID: <20250217141630.897334-13-jic23@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250217141630.897334-1-jic23@kernel.org> References: <20250217141630.897334-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 The data used is all in local variables so there is no advantage in setting *val = ret with the direct mode claim held. Move it later to after error check. Signed-off-by: Jonathan Cameron Reviewed-by: Nuno Sá --- drivers/iio/adc/ad7768-1.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/iio/adc/ad7768-1.c b/drivers/iio/adc/ad7768-1.c index 113703fb7245..c2ba357b82d8 100644 --- a/drivers/iio/adc/ad7768-1.c +++ b/drivers/iio/adc/ad7768-1.c @@ -370,12 +370,11 @@ static int ad7768_read_raw(struct iio_dev *indio_dev, return ret; ret = ad7768_scan_direct(indio_dev); - if (ret >= 0) - *val = ret; iio_device_release_direct_mode(indio_dev); if (ret < 0) return ret; + *val = ret; return IIO_VAL_INT; From patchwork Mon Feb 17 14:16:13 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Jonathan Cameron X-Patchwork-Id: 13977945 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 11B5B223328 for ; Mon, 17 Feb 2025 14:18: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=1739801882; cv=none; b=oS+4mmtTFrealuYAjzL97ILY8CCzNQMtCTQvxW7t7Y6avMghhapMkP2VnETIjyNA58OCyR+rfJv65kX3UDR+bJ5hc3JOsui+JqE0DF63pNhx6mUrPIoTn8FAXJsgHVxasx3Z+/u4KqmOei77ZdKzWnyA3zKs3SiDK66Y+kko5Vc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739801882; c=relaxed/simple; bh=Qsq488fVzfGtDIoOZcTgs0Xq1jPI+2vxNId8rdyvfkM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=caIMpSkdtKddoO+s87HIHSxIw4DnJqFKKneE+yfVQx3bWY8fRJDgsXes4KSnnWag9HIJCq1EvsLnxZebXsOi6yNDr/WC/ySHP5c5QVQ0yEjOEySMIvYMRKuZ8VGj3UbO5bDslrPxfnnytxpierX75ucTuKIcIrUV5pctemw+gJ8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Ib40oP+h; 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="Ib40oP+h" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0572DC4CED1; Mon, 17 Feb 2025 14:17:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739801881; bh=Qsq488fVzfGtDIoOZcTgs0Xq1jPI+2vxNId8rdyvfkM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Ib40oP+hLtrnKxfnCkSJYV15P9UR8f02bzwvpojxdCXdJkYeN/ZMqapWQ6qWt2syt V1Ebvx7q5JzoGlbz3sDQEKc6xi6owDfLkqDovgO4wx7pkOksL4h2VzLkvmLgVMYbSJ MJ2Wew97r0YckE4RZR7kgROGerIYNvol8cC8fxsRbLA1y1DHpCC2rrudsuuTaRkCCU EaT3hZ2giuAjy+Mf2iqmMzjjyYbmrlleQIGKc+SE2KOEh/4OKD/d5KVlL6DVnilC+q 4LQyfYljTPukEx4zCwhUIm96TGOVKTaxhhrsxDjsW+q91IEjyXoss5yOFkpU3KAb9G 0Ny4dbmBvjJZg== From: Jonathan Cameron To: linux-iio@vger.kernel.org Cc: David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Olivier Moysan , Mike Looijmans , Phil Reid , Marek Vasut , Miquel Raynal , Claudiu Beznea , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Alisa-Dariana Roman , Marek Vasut , Frank Li , Jonathan Cameron Subject: [PATCH 13/29] iio: adc: ad7768-1: Switch to sparse friendly iio_device_claim/release_direct() Date: Mon, 17 Feb 2025 14:16:13 +0000 Message-ID: <20250217141630.897334-14-jic23@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250217141630.897334-1-jic23@kernel.org> References: <20250217141630.897334-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 Reviewed-by: Nuno Sá --- drivers/iio/adc/ad7768-1.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/drivers/iio/adc/ad7768-1.c b/drivers/iio/adc/ad7768-1.c index c2ba357b82d8..ea829c51e80b 100644 --- a/drivers/iio/adc/ad7768-1.c +++ b/drivers/iio/adc/ad7768-1.c @@ -365,13 +365,12 @@ static int ad7768_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 = ad7768_scan_direct(indio_dev); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); if (ret < 0) return ret; *val = ret; From patchwork Mon Feb 17 14:16:14 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Jonathan Cameron X-Patchwork-Id: 13977946 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 8B5EF2253EA for ; Mon, 17 Feb 2025 14:18:07 +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=1739801887; cv=none; b=W0gCRAn/CVG4YV2m2FHSoHTYxQq1WbjOnNyvvGLmoh8cEb1KwvbX0EPnhmPh/ODQxyQkNp0vbjZhp6z5CYIen5ZZnZdVZcFaKHV64ccG8UgODh6jWQYV53uDKLBkmJljnpYrZ49r1h4iPfg/ZWXwLp953mA6DVJIlweiCUGVaxc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739801887; c=relaxed/simple; bh=C/HQQyOzuOQLBbRNHNdTKQbUq2bADVZRuKhUYAro1bI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=gIOUMV8/V90WPfAs/3k90fJyOW8PvQKFjmshWTup4/TvJdulkkvmOwG827rbOOOgp/LPziyTbpFgUD+yQvLDrA8iaEEwCxB3AOeg5mJ7bS2VreqtHqwi6cofaF0a9O6L+YPK7NflMqohKP7rAIM5clDsMG72L2jHYfwe1jAyJQU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=DyGgHvEN; 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="DyGgHvEN" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1BF85C4CEE4; Mon, 17 Feb 2025 14:18:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739801887; bh=C/HQQyOzuOQLBbRNHNdTKQbUq2bADVZRuKhUYAro1bI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=DyGgHvENVy8m0vYJGnUM7Z2gM2FgMVaftD6v0zJAi20yDnCiwxRpBw9vqloHcbpDP rw1cHAceit1wreafj6hW3JgdzbiEhv9R+OTbwTAdrMPSk3OIICWUwEO+7MTlIZd3OL DOeefXY/hL8bDxjB2ttZdl/EdiNdjZFZ73rO9Gse+ng6AXHliP1FHVsQs7tbB00rwo iAhK7O7b9e5eXNcWRTWGJQHYW+JVyBzbTq/e1cg5wVsi65CkpYy6eQZdJq2AtUYmIL Y0e/9hvO4AUwqwOiAvfoziA3GO3GkCTnRBwTgZLFkUjhLDizHXYbKRUXFlKKp8Wfuh qLsYS9BQULFOA== From: Jonathan Cameron To: linux-iio@vger.kernel.org Cc: David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Olivier Moysan , Mike Looijmans , Phil Reid , Marek Vasut , Miquel Raynal , Claudiu Beznea , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Alisa-Dariana Roman , Marek Vasut , Frank Li , Jonathan Cameron Subject: [PATCH 14/29] iio: adc: ad7606: Switch to sparse friendly iio_device_claim/release_direct() Date: Mon, 17 Feb 2025 14:16:14 +0000 Message-ID: <20250217141630.897334-15-jic23@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250217141630.897334-1-jic23@kernel.org> References: <20250217141630.897334-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. This driver got partly converted during removal of the _scoped form. However some more cases got added in parallel. Signed-off-by: Jonathan Cameron Reviewed-by: Nuno Sá --- drivers/iio/adc/ad7606.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/drivers/iio/adc/ad7606.c b/drivers/iio/adc/ad7606.c index 87908cc51e48..f566248db70a 100644 --- a/drivers/iio/adc/ad7606.c +++ b/drivers/iio/adc/ad7606.c @@ -862,11 +862,10 @@ static int ad7606_write_raw(struct iio_dev *indio_dev, val = (val * MICRO) + val2; i = find_closest(val, scale_avail_uv, cs->num_scales); - ret = iio_device_claim_direct_mode(indio_dev); - if (ret < 0) - return ret; + if (!iio_device_claim_direct(indio_dev)) + return -EBUSY; ret = st->write_scale(indio_dev, ch, i + cs->reg_offset); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); if (ret < 0) return ret; cs->range = i; @@ -878,11 +877,10 @@ static int ad7606_write_raw(struct iio_dev *indio_dev, i = find_closest(val, st->oversampling_avail, st->num_os_ratios); - ret = iio_device_claim_direct_mode(indio_dev); - if (ret < 0) - return ret; + if (!iio_device_claim_direct(indio_dev)) + return -EBUSY; ret = st->write_os(indio_dev, i); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); if (ret < 0) return ret; st->oversampling = st->oversampling_avail[i]; From patchwork Mon Feb 17 14:16:15 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Jonathan Cameron X-Patchwork-Id: 13977947 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 D84EF2206AA for ; Mon, 17 Feb 2025 14:18:12 +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=1739801892; cv=none; b=Nk8IArj6uy1PfwWAbVvp7fWQ+7MpJWfC8vEuBS8XrHt6k3iXvZhXvAu5h46dZXXpf2duQ9NnvD4lGHlL5svHNV75Db/jDWrrXHQC1ofN5hVPPHxSuQF6B8066GeGKtop6n6r8etEg0ferAvmwc2azrJRidOcKvAkN0oLJBkIUjA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739801892; c=relaxed/simple; bh=V/UozWdSXxTY+UKLtlabaLKmFIIJyiKmzYb3lz6yCes=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=WYIPiy12E0BUuJvMdS07TlutSAcCs33VDkKfkw/BAIVjXcQ0rZKcORhP4oj+dqQnojDoPscHZaiCAr5t2UapPYXIb23Z2yrxM1pcvjE6pd2CxbUPJrSFYMspwu/DvBhQDgsxt3YEKC1kNjmO9R5U1PJL9uyhS4+AnCN0Y+/xlKI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=gqNqJgxm; 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="gqNqJgxm" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2E35BC4CED1; Mon, 17 Feb 2025 14:18:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739801892; bh=V/UozWdSXxTY+UKLtlabaLKmFIIJyiKmzYb3lz6yCes=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=gqNqJgxmL/5fbBp6NG2ZXOLDBQnTq5Mi2hJvh34vdmdWp23xPFLK7TWbMuYtvCMHy +aT8J5qXS1CGn3kN505ofKMvdzoFAqiHwyE43vLq+TthBVjR0DIH85kQTgbC4WrsD5 8N1mO1M0e8yvmv2HZMHGKXYXwxbgwa93/6lPz7oILZahJ3jRnbbODXpyXfHRdPA3j0 TO1MGpz8rdzflu8VQoBDCYG5qHjmTAIOIcM97uxofumkPFolqhye2e1nNcH9dCnQrg b1a7jEaEJYY+4J+pIPnB0rSVr1PY0l/oGIdnikgmWKsjih+1jPwPe93xYAx94DPNDi 17ZfkzY1ychdg== From: Jonathan Cameron To: linux-iio@vger.kernel.org Cc: David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Olivier Moysan , Mike Looijmans , Phil Reid , Marek Vasut , Miquel Raynal , Claudiu Beznea , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Alisa-Dariana Roman , Marek Vasut , Frank Li , Jonathan Cameron Subject: [PATCH 15/29] iio: adc: ad7791: Factor out core of ad7791_write_raw() to simplify error handling Date: Mon, 17 Feb 2025 14:16:15 +0000 Message-ID: <20250217141630.897334-16-jic23@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250217141630.897334-1-jic23@kernel.org> References: <20250217141630.897334-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 Factor out everything under the direct mode claim allowing direct returns in error paths. Signed-off-by: Jonathan Cameron Reviewed-by: Nuno Sá --- drivers/iio/adc/ad7791.c | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/drivers/iio/adc/ad7791.c b/drivers/iio/adc/ad7791.c index 76118fe22db8..e49d4843f304 100644 --- a/drivers/iio/adc/ad7791.c +++ b/drivers/iio/adc/ad7791.c @@ -310,15 +310,11 @@ static int ad7791_read_raw(struct iio_dev *indio_dev, return -EINVAL; } -static int ad7791_write_raw(struct iio_dev *indio_dev, +static int __ad7791_write_raw(struct iio_dev *indio_dev, struct iio_chan_spec const *chan, int val, int val2, long mask) { struct ad7791_state *st = iio_priv(indio_dev); - int ret, i; - - ret = iio_device_claim_direct_mode(indio_dev); - if (ret) - return ret; + int i; switch (mask) { case IIO_CHAN_INFO_SAMP_FREQ: @@ -328,20 +324,30 @@ static int ad7791_write_raw(struct iio_dev *indio_dev, break; } - if (i == ARRAY_SIZE(ad7791_sample_freq_avail)) { - ret = -EINVAL; - break; - } + if (i == ARRAY_SIZE(ad7791_sample_freq_avail)) + return -EINVAL; st->filter &= ~AD7791_FILTER_RATE_MASK; st->filter |= i; ad_sd_write_reg(&st->sd, AD7791_REG_FILTER, sizeof(st->filter), st->filter); - break; + return 0; default: - ret = -EINVAL; + return -EINVAL; } +} + +static int ad7791_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 = __ad7791_write_raw(indio_dev, chan, val, val2, mask); iio_device_release_direct_mode(indio_dev); return ret; From patchwork Mon Feb 17 14:16:16 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Jonathan Cameron X-Patchwork-Id: 13977948 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 B084F212FA2 for ; Mon, 17 Feb 2025 14:18:18 +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=1739801898; cv=none; b=CAz+0JwFW0T+Ojex7ZdzZxSJP6746jhGN3BP/r4EeIySukhIHq2qUXsyvInn3q76hUqRqgFgabVuhHSWT7VZMxQ3umcZJ3mYW8YUSKs9Ocus8+mSeLeyO6E1WzeIeqFuhHBcACCWm/EWrNTxQgv30xG6qktbvZ9qOpwGj1dsn0I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739801898; c=relaxed/simple; bh=1yEomtg6oBxzCHG66zqOM326+VwxXT61IFBovqibR4A=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=drhO+zod/CrmhdsQ9nNqLnT10STyIEbASs3ojWTdSJJZzVxmcLFp2KmBi1KzGIMRVe3LaHEQMEBIM2KFxZV59CPJlUS33p7NMCWGANROPBDPmjn6SJs3iQT5CsaxQ4DAlC9outP4GGCal6WGwxpQyhBm7DXR4e7Z2VWjnJTYPP4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=suX8eyQF; 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="suX8eyQF" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7D592C4CED1; Mon, 17 Feb 2025 14:18:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739801898; bh=1yEomtg6oBxzCHG66zqOM326+VwxXT61IFBovqibR4A=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=suX8eyQFtoA1+Yfbl/xm/yJ2W4H55OZ6GKd2RHu77w83q+R3cTaYRFjVt2TkeXqOU S1ZUhnLaVzeGj6AuQA/nZtjVD6gyzYDgD5+kad9v77Gc5R83Xv4IlnUf5enJ9ctzbu q5zCamlwCRFcsY9+gvfE6ukNMvzt+WKqMib53jBU8p/eA8vQNs15fZvXNyQnCJ1sFQ LfYg3JpyJYQCbEecurzNFNjNrd77I+DfmYgfbVjk2gCBikf1cz2rFR4WQzxv/6brhb lDjS617CcDBRBv1KrqYONofTls6BFVEGGWvSqg2iV8hFf9dwyvd9oM5w/77hxgiev5 Mwpr9wKTczQEQ== From: Jonathan Cameron To: linux-iio@vger.kernel.org Cc: David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Olivier Moysan , Mike Looijmans , Phil Reid , Marek Vasut , Miquel Raynal , Claudiu Beznea , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Alisa-Dariana Roman , Marek Vasut , Frank Li , Jonathan Cameron Subject: [PATCH 16/29] iio: adc: ad7791: Switch to sparse friendly iio_device_claim/release_direct() Date: Mon, 17 Feb 2025 14:16:16 +0000 Message-ID: <20250217141630.897334-17-jic23@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250217141630.897334-1-jic23@kernel.org> References: <20250217141630.897334-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 Reviewed-by: Nuno Sá --- drivers/iio/adc/ad7791.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/drivers/iio/adc/ad7791.c b/drivers/iio/adc/ad7791.c index e49d4843f304..597c2686ffa4 100644 --- a/drivers/iio/adc/ad7791.c +++ b/drivers/iio/adc/ad7791.c @@ -343,13 +343,12 @@ static int ad7791_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 = __ad7791_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:16:17 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Jonathan Cameron X-Patchwork-Id: 13977949 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 5817E22577B for ; Mon, 17 Feb 2025 14:18:24 +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=1739801905; cv=none; b=ddpsB5V17Ap84NdcYxxexlSNVRyGiKuSngrv3gWNxYL0+qJBxpPBEpNiKryinoI2zXTSYwlDRV1hwaUMUbSW1tse4vf628F9yR9XhyBH+lxCp5Y+qU5fjs6ScMk42s0tYTWKyx19L9tXnNJArB8nvJ0xYoKngADFr2lE36Ycz+Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739801905; c=relaxed/simple; bh=WWNb3nfsft5MkZwLVad99p7ezmIpcWmZxijMoIaWjIA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=IrEE4M5YSCzd6pINyFToeVr41tPDCKdqUIcuoR7FMLCdu+KpV35xNaFKYJ6J+II+QNclCIRM7+vIgni0OPewB79vOVWjfSATYWuUgJZImpaERGm01ZgFIDhZzw8NX7Oh4g2C0Hzeuv0pqK7B4Gdgm/ATeGnzT/wgQISNQaZF0PY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=RaS5ivl7; 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="RaS5ivl7" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 54C50C4CED1; Mon, 17 Feb 2025 14:18:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739801904; bh=WWNb3nfsft5MkZwLVad99p7ezmIpcWmZxijMoIaWjIA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=RaS5ivl7iuOxTDyFy5V1xfn+WRrws8xNyhvWBYcqTkj+RWRkMIQIcYjoOHooHW+4k Fb0m7t89Q+CAE5O5O8JikIi9h3zmwiSDxYEp+JmrFj/roQoJK1HBWX0UGjywCrIc/i f9TKp9U29AGURuaLmS92fAJ1ORCUCVJ83u91YxyfZtR2ilQr9u1VD10OHmnDxnEtqM SBKRhoo9q27bY7FLi3xiMjwBxmc5FlxrZffblIS/Nex0JBAmr9tiWdLPPfu+o3xq3k gDgn9fp0KCKHTG657CV7/e+i2wAgcuphwh2Xf1D/xIq4DGbiWYYTIQpft0uMpvHZ3E EHstgMvI0wGGg== From: Jonathan Cameron To: linux-iio@vger.kernel.org Cc: David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Olivier Moysan , Mike Looijmans , Phil Reid , Marek Vasut , Miquel Raynal , Claudiu Beznea , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Alisa-Dariana Roman , Marek Vasut , Frank Li , Jonathan Cameron Subject: [PATCH 17/29] iio: adc: ad7793: Factor out core of ad7793_write_raw() to simplify error handling Date: Mon, 17 Feb 2025 14:16:17 +0000 Message-ID: <20250217141630.897334-18-jic23@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250217141630.897334-1-jic23@kernel.org> References: <20250217141630.897334-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 Factor out everything under the direct mode claim allowing direct returns in error paths. Switch sense of matching in the loop and use a continue to reduce code indent and improve readability. Signed-off-by: Jonathan Cameron Reviewed-by: Nuno Sá --- drivers/iio/adc/ad7793.c | 79 +++++++++++++++++++++------------------- 1 file changed, 42 insertions(+), 37 deletions(-) diff --git a/drivers/iio/adc/ad7793.c b/drivers/iio/adc/ad7793.c index 1b50d9643a63..861a3e44e5ad 100644 --- a/drivers/iio/adc/ad7793.c +++ b/drivers/iio/adc/ad7793.c @@ -462,64 +462,69 @@ static int ad7793_read_raw(struct iio_dev *indio_dev, return -EINVAL; } -static int ad7793_write_raw(struct iio_dev *indio_dev, - struct iio_chan_spec const *chan, - int val, - int val2, - long mask) +static int __ad7793_write_raw(struct iio_dev *indio_dev, + struct iio_chan_spec const *chan, + int val, int val2, long mask) { struct ad7793_state *st = iio_priv(indio_dev); - int ret, i; + int i; unsigned int tmp; - ret = iio_device_claim_direct_mode(indio_dev); - if (ret) - return ret; - switch (mask) { case IIO_CHAN_INFO_SCALE: - ret = -EINVAL; - for (i = 0; i < ARRAY_SIZE(st->scale_avail); i++) - if (val2 == st->scale_avail[i][1]) { - ret = 0; - tmp = st->conf; - st->conf &= ~AD7793_CONF_GAIN(-1); - st->conf |= AD7793_CONF_GAIN(i); - - if (tmp == st->conf) - break; - - ad_sd_write_reg(&st->sd, AD7793_REG_CONF, - sizeof(st->conf), st->conf); - ad7793_calibrate_all(st); - break; - } - break; - case IIO_CHAN_INFO_SAMP_FREQ: - if (!val) { - ret = -EINVAL; - break; + for (i = 0; i < ARRAY_SIZE(st->scale_avail); i++) { + if (val2 != st->scale_avail[i][1]) + continue; + + tmp = st->conf; + st->conf &= ~AD7793_CONF_GAIN(-1); + st->conf |= AD7793_CONF_GAIN(i); + + if (tmp == st->conf) + return 0; + + ad_sd_write_reg(&st->sd, AD7793_REG_CONF, + sizeof(st->conf), st->conf); + ad7793_calibrate_all(st); + + return 0; } + return -EINVAL; + case IIO_CHAN_INFO_SAMP_FREQ: + if (!val) + return -EINVAL; for (i = 0; i < 16; i++) if (val == st->chip_info->sample_freq_avail[i]) break; - if (i == 16) { - ret = -EINVAL; - break; - } + if (i == 16) + return -EINVAL; st->mode &= ~AD7793_MODE_RATE(-1); st->mode |= AD7793_MODE_RATE(i); ad_sd_write_reg(&st->sd, AD7793_REG_MODE, sizeof(st->mode), st->mode); - break; + return 0; default: - ret = -EINVAL; + return -EINVAL; } +} + +static int ad7793_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 = __ad7793_write_raw(indio_dev, chan, val, val2, mask); iio_device_release_direct_mode(indio_dev); + return ret; } From patchwork Mon Feb 17 14:16:18 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Jonathan Cameron X-Patchwork-Id: 13977950 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 E6588225A22 for ; Mon, 17 Feb 2025 14:18:30 +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=1739801911; cv=none; b=GZL02DPTBit3bAFz5ChSqjbV4skOnl4/uflXyT0fzl67HAJMvGlhTELhT0R1Pzg3Kakj8ySgMZIbx2dcDnraQ7Mv4+9C1m5a9p4LgRBxOTFQucBI7oMsRBFOgSHVVJ6Sm3SqD6sOuxznK6VWbhTLE29FLeb1SkpgDi3XN/UzWOE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739801911; c=relaxed/simple; bh=qVt7yFX4ikdgAPjJF71v/IKwAVCoRTk7Eusc1RojQtE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=aHuE4noY8SaXsb9I56ciRwxKjW9HF+BwY//o28IqL1IZT3amVqO9FIxsyZtRqL4wwUX+P+z1ppJ0QVT1WXAnxTc1zK5ZmuEQzQJeiaxJiNliyJP9An19qbyrv+1vwuCOFL913lKoSo8JY/EkBJqTwcdG7BfHozxIN7MU7KZrSnA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=GaFmu+Dk; 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="GaFmu+Dk" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 92EEEC4CED1; Mon, 17 Feb 2025 14:18:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739801910; bh=qVt7yFX4ikdgAPjJF71v/IKwAVCoRTk7Eusc1RojQtE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=GaFmu+DkwyN0p53hA9lVps3W96r2Bmbgaxkk+1zTF1TfX5EoGiJs/1OlM4H3+hJh8 2PniqYeJ32r12BK3ElEIXi7vADPwzWiGHfym8/5glD7HAVeV4wUgCXcLLro65nv2nl MaKa7vWe7pPjUbxJeb5BePByVPN8bat2JJvgOBaZsZIXhvhjJ2gDpp1Qp0r8KcAxQb MmCn38HROzZaaR60AKdv10sQ2b+mmzf8yWWejfk3MD8FI+NYwrpHl9s68EOaG0EUdt 5uwK0psuH/wUhQWz4w5xumsFSOcvnaQPR4P6vxdG+3RfN3yqSgeV30hi6pUvaqr0Gh XuSE50gQ+Qvcw== From: Jonathan Cameron To: linux-iio@vger.kernel.org Cc: David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Olivier Moysan , Mike Looijmans , Phil Reid , Marek Vasut , Miquel Raynal , Claudiu Beznea , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Alisa-Dariana Roman , Marek Vasut , Frank Li , Jonathan Cameron Subject: [PATCH 18/29] iio: adc: ad7793: Switch to sparse friendly iio_device_claim/release_direct() Date: Mon, 17 Feb 2025 14:16:18 +0000 Message-ID: <20250217141630.897334-19-jic23@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250217141630.897334-1-jic23@kernel.org> References: <20250217141630.897334-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 Reviewed-by: Nuno Sá --- drivers/iio/adc/ad7793.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/drivers/iio/adc/ad7793.c b/drivers/iio/adc/ad7793.c index 861a3e44e5ad..ccf18ce48e34 100644 --- a/drivers/iio/adc/ad7793.c +++ b/drivers/iio/adc/ad7793.c @@ -517,13 +517,12 @@ static int ad7793_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 = __ad7793_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:16:19 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Jonathan Cameron X-Patchwork-Id: 13977951 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 A1F702236EE for ; Mon, 17 Feb 2025 14:18:36 +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=1739801916; cv=none; b=EobezNOqREMrC+E9Z0mZsUdkwD1L+Bjvd5UqW+cLoMNMmQqoUSSuWn1ZgJSW6ehsM0JCEgvMk7s1wk3TVK6lDAmF5wbBWtDuweGnawPTKXdAVfqV6i9oeJJdNZAlXkLHwy5xQBaV8l/W3+CTacIetgWfMDihVxIOuyNL8HCviDA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739801916; c=relaxed/simple; bh=PXkGrB7pjweVW+JqhE+z9Vkn8g6SlqX94PRziIFvEjM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=qWs2S3+UWmqbPbe4/nG884yAZ5rFaTCfGbMGAG07TgbJh288lcrpd+l4aCDylM6DyqjdPhUVIyU+YWNmNfLU/Apk2nIo7lnZwHZ6n/174YUBRLGWllZYxOzekPaV7euLQii6hFXnukF4zBdHpeknl3MUXOiitPCHKvlc8oqplCM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=u5ZWdySt; 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="u5ZWdySt" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1E6A7C4CED1; Mon, 17 Feb 2025 14:18:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739801916; bh=PXkGrB7pjweVW+JqhE+z9Vkn8g6SlqX94PRziIFvEjM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=u5ZWdyStmhKOtEN9bckyqtomzj7l7AEDDHF3jbVb4FQC1VXXlL3I6y6idJ/M5mK9r BcqLAZqqCiamYD4rbV96Q3ir+54fV/QPrkdttohYf7iHDLvwnfkdM+dLnRbXpldyDA wxpMB2YSLH1ftwYY2hZzaGmc3S2Ou3iBeNgPFzIJPUyMDrPJ/rsykZpT2NYIJZ1PId IApK/s6xAF4f5lTFWL3H89iRe5J1RLTdzVjSd8PIxKIPgNfV0pzeVOSQit6IhwZgN1 g1qNzX5feI286+MNz1NIgBLfEUs2zA3+wt7N15tL/6QIioqK6uXw6NKJSU4Ns4ZAwF T1HUU5H7ASunQ== From: Jonathan Cameron To: linux-iio@vger.kernel.org Cc: David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Olivier Moysan , Mike Looijmans , Phil Reid , Marek Vasut , Miquel Raynal , Claudiu Beznea , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Alisa-Dariana Roman , Marek Vasut , Frank Li , Jonathan Cameron Subject: [PATCH 19/29] iio: adc: ad799x: Switch to sparse friendly iio_device_claim/release_direct() Date: Mon, 17 Feb 2025 14:16:19 +0000 Message-ID: <20250217141630.897334-20-jic23@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250217141630.897334-1-jic23@kernel.org> References: <20250217141630.897334-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 Reviewed-by: Nuno Sá --- Kept this one out of the 'simple' category as it is worth considering factoring out the code when the claim on direct mode is held. I think it isn't quite complex enough to make that useful but if others disagree I can do so. --- drivers/iio/adc/ad799x.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/drivers/iio/adc/ad799x.c b/drivers/iio/adc/ad799x.c index aa44b4e2542b..993f4651b73a 100644 --- a/drivers/iio/adc/ad799x.c +++ b/drivers/iio/adc/ad799x.c @@ -291,13 +291,12 @@ static int ad799x_read_raw(struct iio_dev *indio_dev, switch (m) { 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(&st->lock); ret = ad799x_scan_direct(st, chan->scan_index); mutex_unlock(&st->lock); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); if (ret < 0) return ret; @@ -411,9 +410,8 @@ static int ad799x_write_event_config(struct iio_dev *indio_dev, struct ad799x_state *st = iio_priv(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; mutex_lock(&st->lock); @@ -429,7 +427,7 @@ static int ad799x_write_event_config(struct iio_dev *indio_dev, ret = ad799x_write_config(st, st->config); mutex_unlock(&st->lock); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); return ret; } From patchwork Mon Feb 17 14:16:20 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Jonathan Cameron X-Patchwork-Id: 13977952 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 ECF1822371E for ; Mon, 17 Feb 2025 14:18:41 +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=1739801922; cv=none; b=aIpKUwEWstjENN3FMRhpSPuw1mbTR5WX5MN0MIL6zPLPM4gIVS62SMp5mkTnO8e1RyE0sSUOWbhDN0+X79DmyFVbGCx0etWoBl2uQQytmCiFg6mPIKmpJYELTwtvX1/dXzyYOW93n3rOrYMGEAd8ls43QS+eBfDnDSygNE0jObQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739801922; c=relaxed/simple; bh=KOYPDKRYsrEDbpMkEzjB16ST2Jtl17WqIPkizlIUV58=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=gCTioXJw2v90R47gkaxvMRJ6GtXSprNuU5ezJ4rqY7qz6xVgILyWkilr6inBdjgFSVbbZVm4vt/UhuyT880dTNRhrE7VtZ+PWEciUsb+tLG0Hjx2mcc2kSM5lW7xNKQf9G9SogOIyOQNMkrKTYhBTk2i395oOhXU+zGc9eYLUHQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=u2vKJwec; 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="u2vKJwec" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D2674C4CED1; Mon, 17 Feb 2025 14:18:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739801921; bh=KOYPDKRYsrEDbpMkEzjB16ST2Jtl17WqIPkizlIUV58=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=u2vKJwec4HmfOXr/4tt5eGonVa7KhsgQTfnAq9g9AqnS8r6DqEEgDGiETmbXBwslk m4k05eXeU5l9D4X5bOyQJW4/jThUSeTXJMA7Akx6pABNL2W78NAGWH1Of3AnxNYDij L7HsoemCYhl3Ptywq4o61yE3luCMrXJTFARUJyNeVScC4QTdDvVsPYLE8i0YOAhwRP i8MouNKWPTUcSmOBtaYhavZvt2iS6iK+aNeKLXzcnlUTyt5Pg8UBszPsskgdngsbzN 8gUrX/7kUcgQH44345gRfLF/N1JMSCbdrO1If4kOBLHZUiORTFQZnYqopNmtTxzhgE RacTuA9oUL2+w== From: Jonathan Cameron To: linux-iio@vger.kernel.org Cc: David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Olivier Moysan , Mike Looijmans , Phil Reid , Marek Vasut , Miquel Raynal , Claudiu Beznea , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Alisa-Dariana Roman , Marek Vasut , Frank Li , Jonathan Cameron Subject: [PATCH 20/29] iio: adc: ad_sigma_delta: Switch to sparse friendly iio_device_claim/release_direct() Date: Mon, 17 Feb 2025 14:16:20 +0000 Message-ID: <20250217141630.897334-21-jic23@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250217141630.897334-1-jic23@kernel.org> References: <20250217141630.897334-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. This is a complex function with a lot more than the release of direct mode to unwind on error. As such no attempt made to factor out the inner code. Signed-off-by: Jonathan Cameron Cc: Uwe Kleine-König Reviewed-by: Nuno Sá --- drivers/iio/adc/ad_sigma_delta.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/drivers/iio/adc/ad_sigma_delta.c b/drivers/iio/adc/ad_sigma_delta.c index 10e635fc4fa4..5907c35b98e5 100644 --- a/drivers/iio/adc/ad_sigma_delta.c +++ b/drivers/iio/adc/ad_sigma_delta.c @@ -386,9 +386,8 @@ int ad_sigma_delta_single_conversion(struct iio_dev *indio_dev, unsigned int data_reg; int ret = 0; - ret = iio_device_claim_direct_mode(indio_dev); - if (ret) - return ret; + if (!iio_device_claim_direct(indio_dev)) + return -EBUSY; ad_sigma_delta_set_channel(sigma_delta, chan->address); @@ -431,7 +430,7 @@ int ad_sigma_delta_single_conversion(struct iio_dev *indio_dev, sigma_delta->keep_cs_asserted = false; sigma_delta->bus_locked = false; spi_bus_unlock(sigma_delta->spi->controller); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); if (ret) return ret; From patchwork Mon Feb 17 14:16:21 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jonathan Cameron X-Patchwork-Id: 13977953 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 DBBCF21D5BF for ; Mon, 17 Feb 2025 14:18:47 +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=1739801927; cv=none; b=J24LJ/nyNvt4FGhHyu8zFfWyf+EVQZzyZhyCL9wmS9vlwqDZFK5cqbrf50BaXRR+DQmbfvGj+HswaMRm5FKQBt0zvoNFo6xGrmvnd/ZwXBCi+wZu85BOCDiZpxOzfd9WjwEO5dwzaC+6xmkytNriEfLbZkGxISaXRrm60MG9Dys= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739801927; c=relaxed/simple; bh=BRqVFy02hcCLoHII0OjVK/AIjoqIVapILIqhErLJdXA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=jzyVBnEuDS1VyjQnx6zOpM1JgbeAPeCDDrTMVXwWrkR5YCUkT2cMzebtOwOgZ6tIQ1RUJqFiIiesfHolXzEw3NnmCDAtgg/pyd0pALa/z2MSEc87C7S+VxypeatlurcZ6Cz3p0bYJ843MQzx1iXRYcR22xmNU7DPRUysqh6I6HM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=l0YpIQLn; 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="l0YpIQLn" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 78300C4CED1; Mon, 17 Feb 2025 14:18:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739801927; bh=BRqVFy02hcCLoHII0OjVK/AIjoqIVapILIqhErLJdXA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=l0YpIQLnFXTw1BdLLxhxz/xJneg9/CPoppeW/ukv/CmWDCTUz3c9ZQtG5C4jUd6VG mvL71qZbOBy8GvQl22+nz5n1c09PSwBIZ1bRQF4Uchr2kReJa+KEDIPNIF+vamYfeM lwUfyGXAGcfovOLJfO8cAu2UsZUUXKgwcPlS39LvsvUcDUgBKmqDs+e3WU5YB/1lLa D/LNduUDKvgMslLJUs7nc2d4Zuc3mNzNeGMID4aTVP9ZF4zk/fhYC5OPEhpCAlwa5k y+ujT9mEMnh1XeP72O+n9d6sVCKHRAxDa0Y5Go7Eg7Bc0ThEbqGMOAz9f4OLPq5mYc BWjTbskhGNXuw== From: Jonathan Cameron To: linux-iio@vger.kernel.org Cc: David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Olivier Moysan , Mike Looijmans , Phil Reid , Marek Vasut , Miquel Raynal , Claudiu Beznea , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Alisa-Dariana Roman , Marek Vasut , Frank Li , Jonathan Cameron Subject: [PATCH 21/29] iio: adc: at91-sama5d2: Move claim of direct mode up a level and use guard() Date: Mon, 17 Feb 2025 14:16:21 +0000 Message-ID: <20250217141630.897334-22-jic23@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250217141630.897334-1-jic23@kernel.org> References: <20250217141630.897334-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 Move iio_device_claim_direct_mode() up one layer in the call stack, and use guard() for scope based unlocking to simplify error handling by allowing direct returns. Signed-off-by: Jonathan Cameron Cc: Claudiu Beznea Reviewed-by: Claudiu Beznea --- drivers/iio/adc/at91-sama5d2_adc.c | 42 +++++++++++++++--------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/drivers/iio/adc/at91-sama5d2_adc.c b/drivers/iio/adc/at91-sama5d2_adc.c index 8e5aaf15a921..70d3dbb39b25 100644 --- a/drivers/iio/adc/at91-sama5d2_adc.c +++ b/drivers/iio/adc/at91-sama5d2_adc.c @@ -9,6 +9,7 @@ */ #include +#include #include #include #include @@ -1814,19 +1815,10 @@ static int at91_adc_read_info_locked(struct iio_dev *indio_dev, struct iio_chan_spec const *chan, int *val) { struct at91_adc_state *st = iio_priv(indio_dev); - int ret; - - ret = iio_device_claim_direct_mode(indio_dev); - if (ret) - return ret; - - mutex_lock(&st->lock); - ret = at91_adc_read_info_raw(indio_dev, chan, val); - mutex_unlock(&st->lock); - iio_device_release_direct_mode(indio_dev); + guard(mutex)(&st->lock); - return ret; + return at91_adc_read_info_raw(indio_dev, chan, val); } static void at91_adc_temp_sensor_configure(struct at91_adc_state *st, @@ -1871,14 +1863,11 @@ static int at91_adc_read_temp(struct iio_dev *indio_dev, u32 tmp; int ret, vbg, vtemp; - ret = iio_device_claim_direct_mode(indio_dev); - if (ret) - return ret; - mutex_lock(&st->lock); + guard(mutex)(&st->lock); ret = pm_runtime_resume_and_get(st->dev); if (ret < 0) - goto unlock; + return ret; at91_adc_temp_sensor_configure(st, true); @@ -1900,9 +1889,6 @@ static int at91_adc_read_temp(struct iio_dev *indio_dev, at91_adc_temp_sensor_configure(st, false); pm_runtime_mark_last_busy(st->dev); pm_runtime_put_autosuspend(st->dev); -unlock: - mutex_unlock(&st->lock); - iio_device_release_direct_mode(indio_dev); if (ret < 0) return ret; @@ -1924,10 +1910,17 @@ static int at91_adc_read_raw(struct iio_dev *indio_dev, int *val, int *val2, long mask) { struct at91_adc_state *st = iio_priv(indio_dev); + int ret; switch (mask) { case IIO_CHAN_INFO_RAW: - return at91_adc_read_info_locked(indio_dev, chan, val); + ret = iio_device_claim_direct_mode(indio_dev); + if (ret) + return ret; + + ret = at91_adc_read_info_locked(indio_dev, chan, val); + iio_device_release_direct_mode(indio_dev); + return ret; case IIO_CHAN_INFO_SCALE: *val = st->vref_uv / 1000; @@ -1939,7 +1932,14 @@ static int at91_adc_read_raw(struct iio_dev *indio_dev, case IIO_CHAN_INFO_PROCESSED: if (chan->type != IIO_TEMP) return -EINVAL; - return at91_adc_read_temp(indio_dev, chan, val); + ret = iio_device_claim_direct_mode(indio_dev); + if (ret) + return ret; + + ret = at91_adc_read_temp(indio_dev, chan, val); + iio_device_release_direct_mode(indio_dev); + + return ret; case IIO_CHAN_INFO_SAMP_FREQ: *val = at91_adc_get_sample_freq(st); From patchwork Mon Feb 17 14:16:22 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jonathan Cameron X-Patchwork-Id: 13977954 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 245FA21D58D for ; Mon, 17 Feb 2025 14:18:53 +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=1739801934; cv=none; b=O/WuEZC55wAp6+hsCBe8kFoySt2PZ8CdAowkSZkO97UQ5HYGQG5PwvtYrky+Idu6fS2NerNBvzjUDq9K5RBaPArTkGlwQW4glm0+sKEd4LWlOEjG5s2T55kk0Jbn0hiWDVFamUhvIIXi+ON/gFQoEihFK0hMFxcYG0NFvGoRe/E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739801934; c=relaxed/simple; bh=XyEXje+7UoTCQ0Z9bQorD4JlxA7uXHLICJKwueCU6Q0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=iR9g7WS2x1O9dHp2aURo35GfjNouVEvCoyqT/KsDfviL26KS0ZJTITmxfRh1Tc3L++nn6hF6l6Do5wMSY6rhMOiV9pIszZu/69uusx7QOlVb92TLMwXinBa2HGrIRjVtg2b1DN986Ds1tTY6rzJq0FcX+k1KPtgEEKm/8NCodYw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=rUKv8Xhv; 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="rUKv8Xhv" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 81493C4CED1; Mon, 17 Feb 2025 14:18:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739801933; bh=XyEXje+7UoTCQ0Z9bQorD4JlxA7uXHLICJKwueCU6Q0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=rUKv8XhvFcg5Ip1z2tm1GQhh1MTdEFnkf3XpujHRwHu8uSr5N819ELSniJqiPPcf4 q6uACLRaPFkHSInO8egINfINTu/WsjyOyGBaVOJd5RLQGMhahR3txcDV7z6+iJ6DMG Lib02Lx71bSRCJCObiGG6E0X7EU6WlpQ3EHGp91hdAtkKIus+fUyvFhTnsr8tyBXrP XSJs3nordk3FXfG6f/O6Jf263J11wLEorSO6y52KY0dT+lvofhjC/FNxJTvGvbqL+O di2ZnhYb+QVHYr/5Wze5nBc7m2sz7ItfE6589QBOkDVPhPrPGLZmhAzUWT99cHik30 vo184FRo4sLeQ== From: Jonathan Cameron To: linux-iio@vger.kernel.org Cc: David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Olivier Moysan , Mike Looijmans , Phil Reid , Marek Vasut , Miquel Raynal , Claudiu Beznea , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Alisa-Dariana Roman , Marek Vasut , Frank Li , Jonathan Cameron Subject: [PATCH 22/29] iio: adc: at91-sama5d2: Switch to sparse friendly iio_device_claim/release_direct() Date: Mon, 17 Feb 2025 14:16:22 +0000 Message-ID: <20250217141630.897334-23-jic23@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250217141630.897334-1-jic23@kernel.org> References: <20250217141630.897334-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: Claudiu Beznea Reviewed-by: Claudiu Beznea --- drivers/iio/adc/at91-sama5d2_adc.c | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/drivers/iio/adc/at91-sama5d2_adc.c b/drivers/iio/adc/at91-sama5d2_adc.c index 70d3dbb39b25..694ff96fc913 100644 --- a/drivers/iio/adc/at91-sama5d2_adc.c +++ b/drivers/iio/adc/at91-sama5d2_adc.c @@ -1914,12 +1914,11 @@ static int at91_adc_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; ret = at91_adc_read_info_locked(indio_dev, chan, val); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); return ret; case IIO_CHAN_INFO_SCALE: @@ -1932,12 +1931,11 @@ static int at91_adc_read_raw(struct iio_dev *indio_dev, case IIO_CHAN_INFO_PROCESSED: if (chan->type != IIO_TEMP) return -EINVAL; - ret = iio_device_claim_direct_mode(indio_dev); - if (ret) - return ret; + if (!iio_device_claim_direct(indio_dev)) + return -EBUSY; ret = at91_adc_read_temp(indio_dev, chan, val); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); return ret; @@ -1967,28 +1965,26 @@ static int at91_adc_write_raw(struct iio_dev *indio_dev, if (val == st->oversampling_ratio) return 0; - ret = iio_device_claim_direct_mode(indio_dev); - if (ret) - return ret; + if (!iio_device_claim_direct(indio_dev)) + return -EBUSY; mutex_lock(&st->lock); /* update ratio */ ret = at91_adc_config_emr(st, val, 0); mutex_unlock(&st->lock); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); return ret; case IIO_CHAN_INFO_SAMP_FREQ: if (val < st->soc_info.min_sample_rate || val > st->soc_info.max_sample_rate) return -EINVAL; - ret = iio_device_claim_direct_mode(indio_dev); - if (ret) - return ret; + if (!iio_device_claim_direct(indio_dev)) + return -EBUSY; mutex_lock(&st->lock); at91_adc_setup_samp_freq(indio_dev, val, st->soc_info.startup_time, 0); mutex_unlock(&st->lock); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); return 0; default: return -EINVAL; From patchwork Mon Feb 17 14:16:23 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jonathan Cameron X-Patchwork-Id: 13977955 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 D750621D587 for ; Mon, 17 Feb 2025 14:18:59 +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=1739801939; cv=none; b=TODICwQlXwlbFHkUtxVBHqddJ1RxbA4NPQZv7kGvP8IjIQsedOUUUNlnKkY7MforVL8FpufY51wS9ps4R/IYBdt4oiuofCN4B3mti9hBIteRwmOCoNcUNouXCevS81H+xf421PmZX7ALX5TyR4f9xNVbXzcqMrJzI5vITXu20z0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739801939; c=relaxed/simple; bh=W6hpPZ2GKjpygZRhmNByhv0deg1JHT2avhpEn0QnycA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=fkC+nCsIoVZfiIFCiCmXrWEfkI+IH22BuVAqOEdRv1FaOSO5213X0RemtZhMPM7FmKYBhAvqmDl2xwFCytG35WUDKPhz/xf7rGQ5IU1KwXyKRLZc6WcvVy5U5+Fyoo9TvnYcWP1/NMKSkEPCyiNazw+r8o5UmH/9JASbKILF508= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=BQiLw9kP; 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="BQiLw9kP" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 421A5C4CEE7; Mon, 17 Feb 2025 14:18:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739801939; bh=W6hpPZ2GKjpygZRhmNByhv0deg1JHT2avhpEn0QnycA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=BQiLw9kPhSuBcC/AKpFf59fVLC+3SK0R5138Fvp+4ZpxIMvoGiKQV2nsCC/L1ET5B 2JW2zb3uNTGQ+OeSVPaGPurdtaOuXB7aSsdAQAJTX8CIUGYS5uhSnXGpaBctxpjGIJ xS1rRMPLjZJQB0Df5T7km7jZM/bd2e5YX3ClELLhaIevVYNws3B8A8K+F2q7dx7WlC CjZ08n3UrbSn3a50d6bcNM9u2msyBdSclDRtJPQwfOyLl7LCBd1WLDwDY/Yqe4FH64 1om5jhQ5wKhjD1C8Y1BH6EyeT8JKbK1w/iZo5jiPLUeWxF2jXYFy8dn5+jjI8rwPu+ 9/KrPLxk0p09Q== From: Jonathan Cameron To: linux-iio@vger.kernel.org Cc: David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Olivier Moysan , Mike Looijmans , Phil Reid , Marek Vasut , Miquel Raynal , Claudiu Beznea , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Alisa-Dariana Roman , Marek Vasut , Frank Li , Jonathan Cameron Subject: [PATCH 23/29] iio: adc: max1027: Move claim of direct mode up one level and use guard() Date: Mon, 17 Feb 2025 14:16:23 +0000 Message-ID: <20250217141630.897334-24-jic23@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250217141630.897334-1-jic23@kernel.org> References: <20250217141630.897334-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 Move iio_device_claim_direct_mode() into the read_raw() callback and use guard() to release a mutex. This enables simpler error handling via direct returns. Signed-off-by: Jonathan Cameron Cc: Miquel Raynal Reviewed-by: Miquel Raynal --- drivers/iio/adc/max1027.c | 38 +++++++++++++------------------------- 1 file changed, 13 insertions(+), 25 deletions(-) diff --git a/drivers/iio/adc/max1027.c b/drivers/iio/adc/max1027.c index f5ba4a1b5a7d..e6a47abc862f 100644 --- a/drivers/iio/adc/max1027.c +++ b/drivers/iio/adc/max1027.c @@ -336,10 +336,6 @@ static int max1027_read_single_value(struct iio_dev *indio_dev, int ret; struct max1027_state *st = iio_priv(indio_dev); - ret = iio_device_claim_direct_mode(indio_dev); - if (ret) - return ret; - /* Configure conversion register with the requested chan */ st->reg = MAX1027_CONV_REG | MAX1027_CHAN(chan->channel) | MAX1027_NOSCAN; @@ -349,7 +345,7 @@ static int max1027_read_single_value(struct iio_dev *indio_dev, if (ret < 0) { dev_err(&indio_dev->dev, "Failed to configure conversion register\n"); - goto release; + return ret; } /* @@ -359,14 +355,10 @@ static int max1027_read_single_value(struct iio_dev *indio_dev, */ ret = max1027_wait_eoc(indio_dev); if (ret) - goto release; + return ret; /* Read result */ ret = spi_read(st->spi, st->buffer, (chan->type == IIO_TEMP) ? 4 : 2); - -release: - iio_device_release_direct_mode(indio_dev); - if (ret < 0) return ret; @@ -382,37 +374,33 @@ static int max1027_read_raw(struct iio_dev *indio_dev, int ret = 0; struct max1027_state *st = iio_priv(indio_dev); - mutex_lock(&st->lock); + guard(mutex)(&st->lock); switch (mask) { case IIO_CHAN_INFO_RAW: + ret = iio_device_claim_direct_mode(indio_dev); + if (ret) + return ret + ret = max1027_read_single_value(indio_dev, chan, val); - break; + iio_device_release_direct_mode(indio_dev); + return ret; case IIO_CHAN_INFO_SCALE: switch (chan->type) { case IIO_TEMP: *val = 1; *val2 = 8; - ret = IIO_VAL_FRACTIONAL; - break; + return IIO_VAL_FRACTIONAL; case IIO_VOLTAGE: *val = 2500; *val2 = chan->scan_type.realbits; - ret = IIO_VAL_FRACTIONAL_LOG2; - break; + return IIO_VAL_FRACTIONAL_LOG2; default: - ret = -EINVAL; - break; + return -EINVAL; } - break; default: - ret = -EINVAL; - break; + return -EINVAL; } - - mutex_unlock(&st->lock); - - return ret; } static int max1027_debugfs_reg_access(struct iio_dev *indio_dev, From patchwork Mon Feb 17 14:16:24 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jonathan Cameron X-Patchwork-Id: 13977956 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 9487D21D587 for ; Mon, 17 Feb 2025 14:19:05 +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=1739801945; cv=none; b=L/Tohdl1gXvSDocMWeENs15luPDv3vxbDwnFRfMib+E8NfBhPCG2kyzAnpd9ru6XWr3VHlznfIfk2JcWrFBhwAq0SC299t7W+s3l25v+XR3XUvrPGz6hItDNC3C0RwoO9sCE+9lwrFRoQucUbOwss+pXU0jE0oLz6mKO1HeG6zY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739801945; c=relaxed/simple; bh=fCC9iFGMkki6NT+sXldWGFWrSpLe479HPYnhAfdQy48=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=lLoxTsdDQqbQ0uMHxNVqw7uHtpsfaGLR6XQSluWTGnUlvf3eiRCPUAp+iv6T2RFmsDArMHJXQC+IpabuxLAJvvX/iU5P3dXFGg9C6u6kNLKnGtqHTan6L+6Hlm9zHvsXk/pRbyX1R1vnK+aZwza/3ggfh2JQ9h53LLzx2XiubVY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=cCldqZfL; 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="cCldqZfL" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 652CEC4CED1; Mon, 17 Feb 2025 14:19:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739801945; bh=fCC9iFGMkki6NT+sXldWGFWrSpLe479HPYnhAfdQy48=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=cCldqZfLlhrn5cO3FChriqQemtp9/BEu5WaDqN2i6UQzvhq3CsiuSZaanhenYF2wa 3yp6v8NddarxWtd2hI0eCYDBJG9cVYJZ33FMluKd1tC1nuoRDhcsnVZJSntSC2rMF6 IPWANBBzKTEE258Q8fhOl7LbVu4xqssoyiJk5ZYA5XBlvfPVTqoFG61c/6/YpIZ4Ll KHgZ4NpOBm9pFod7prWe+i/0xGVxQVPEDjM3Ddn0Tn+k4W9r6F0tXhFPaeyse/RInc 1nv+D+Br9G+LNHiCj2qOvk7AYT92iaWaHrjvfXeVTjk3Z9MagOz2fMOh3Cr5Xz29W1 O0ayqp1mVuVxw== From: Jonathan Cameron To: linux-iio@vger.kernel.org Cc: David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Olivier Moysan , Mike Looijmans , Phil Reid , Marek Vasut , Miquel Raynal , Claudiu Beznea , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Alisa-Dariana Roman , Marek Vasut , Frank Li , Jonathan Cameron Subject: [PATCH 24/29] iio: adc: max1027: Switch to sparse friendly iio_device_claim/release_direct() Date: Mon, 17 Feb 2025 14:16:24 +0000 Message-ID: <20250217141630.897334-25-jic23@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250217141630.897334-1-jic23@kernel.org> References: <20250217141630.897334-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: Miquel Raynal Reviewed-by: Miquel Raynal --- drivers/iio/adc/max1027.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/drivers/iio/adc/max1027.c b/drivers/iio/adc/max1027.c index e6a47abc862f..7e736e77d8bb 100644 --- a/drivers/iio/adc/max1027.c +++ b/drivers/iio/adc/max1027.c @@ -378,12 +378,11 @@ static int max1027_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; ret = max1027_read_single_value(indio_dev, chan, val); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); return ret; case IIO_CHAN_INFO_SCALE: switch (chan->type) { From patchwork Mon Feb 17 14:16:25 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Jonathan Cameron X-Patchwork-Id: 13977957 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 1122C21D001 for ; Mon, 17 Feb 2025 14:19: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=1739801951; cv=none; b=S1vg35sdl/x1l7/M1bpf9aZuhvmc4gCJUDX/c+aK/YRw+tKf31z0dymJAsw8z/u01VN3Y6AlfPL/NUWPc7zXktdz/idEz0tEnGD1BJzYStv2dC0egY69ujRgpGQdPSaGVquVYoojz0r3E+d+kqSgmpo0Sz0c14jmlqMFyw0b9KE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739801951; c=relaxed/simple; bh=B5CyDv9Die3ccM0hli99tLCFwMBPQhGyVceeS7eF6Qw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=NI5vCrxMWqVI/zKwy13BJjW/eK/Z/VJMLR6ABbAq/vpZxPy/lLqHMFbv+ypCeH6zWl9bjtsrvd9XazJ3cntEY55Lbpel2qaYSNZGu6LNruf3Srt1R/ghffBuLZzuweuZM5Fbfebx1NiPw5pq+EDDXUBNlmD7xVEMIQSOLfOpyuA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Qp9j3Y8c; 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="Qp9j3Y8c" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 245FDC4CED1; Mon, 17 Feb 2025 14:19:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739801950; bh=B5CyDv9Die3ccM0hli99tLCFwMBPQhGyVceeS7eF6Qw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Qp9j3Y8cZG3P08pxvKvMo0msnD3ZaWbNSHuu/UMs6Pg4BWBBEF890ru5jsLZXhZwW 65lHuel5ZGwFh7yAh2dSAjV1oV8XgWgN/nWFc4Ov7zRCOFBsDWV7alEgQQb3TvSN86 Y1Gb2XD6jvIKHPg3ql3CHOIEOIWxwmwgTnKMtjOpd4FUS9VuRnQ6V7a87bg5fAGDed TtdCaZI5psKO1YbMqOXUMeAuOPYIYcalnxGq+CDuLxfWjD4SxVsVFmq8AQy1W9w0N+ d78P2RFctsOE8nBulaVzOKKjW+PhKYWCAu+6FcCVyUQJbgVTEZpRc6sxOCjpjBTh0E rKd1OAYQBVm8g== From: Jonathan Cameron To: linux-iio@vger.kernel.org Cc: David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Olivier Moysan , Mike Looijmans , Phil Reid , Marek Vasut , Miquel Raynal , Claudiu Beznea , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Alisa-Dariana Roman , Marek Vasut , Frank Li , Jonathan Cameron Subject: [PATCH 25/29] iio: adc: max11410: Factor out writing of sampling frequency to simplify errro paths. Date: Mon, 17 Feb 2025 14:16:25 +0000 Message-ID: <20250217141630.897334-26-jic23@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250217141630.897334-1-jic23@kernel.org> References: <20250217141630.897334-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 Introduce __max11410_write_samp_freq() helper and use guard() to avoid need for manual unlock of the mutex. This allows direct returns and simplifies the resulting error handling. Signed-off-by: Jonathan Cameron Reviewed-by: Nuno Sá --- drivers/iio/adc/max11410.c | 51 ++++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 24 deletions(-) diff --git a/drivers/iio/adc/max11410.c b/drivers/iio/adc/max11410.c index 76abafd47404..6e06c62715a8 100644 --- a/drivers/iio/adc/max11410.c +++ b/drivers/iio/adc/max11410.c @@ -507,12 +507,37 @@ static int max11410_read_raw(struct iio_dev *indio_dev, return -EINVAL; } +static int __max11410_write_samp_freq(struct max11410_state *st, + int val, int val2) +{ + int ret, i, reg_val, filter; + + guard(mutex)(&st->lock); + + ret = regmap_read(st->regmap, MAX11410_REG_FILTER, ®_val); + if (ret) + return ret; + + filter = FIELD_GET(MAX11410_FILTER_LINEF_MASK, reg_val); + + for (i = 0; i < max11410_sampling_len[filter]; ++i) { + if (val == max11410_sampling_rates[filter][i][0] && + val2 == max11410_sampling_rates[filter][i][1]) + break; + } + if (i == max11410_sampling_len[filter]) + return -EINVAL; + + return regmap_write_bits(st->regmap, MAX11410_REG_FILTER, + MAX11410_FILTER_RATE_MASK, i); +} + static int max11410_write_raw(struct iio_dev *indio_dev, struct iio_chan_spec const *chan, int val, int val2, long mask) { struct max11410_state *st = iio_priv(indio_dev); - int i, ret, reg_val, filter, gain; + int ret, gain; u32 *scale_avail; switch (mask) { @@ -544,29 +569,7 @@ static int max11410_write_raw(struct iio_dev *indio_dev, if (ret) return ret; - mutex_lock(&st->lock); - - ret = regmap_read(st->regmap, MAX11410_REG_FILTER, ®_val); - if (ret) - goto out; - - filter = FIELD_GET(MAX11410_FILTER_LINEF_MASK, reg_val); - - for (i = 0; i < max11410_sampling_len[filter]; ++i) { - if (val == max11410_sampling_rates[filter][i][0] && - val2 == max11410_sampling_rates[filter][i][1]) - break; - } - if (i == max11410_sampling_len[filter]) { - ret = -EINVAL; - goto out; - } - - ret = regmap_write_bits(st->regmap, MAX11410_REG_FILTER, - MAX11410_FILTER_RATE_MASK, i); - -out: - mutex_unlock(&st->lock); + ret = __max11410_write_samp_freq(st, val, val2); iio_device_release_direct_mode(indio_dev); return ret; From patchwork Mon Feb 17 14:16:26 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Jonathan Cameron X-Patchwork-Id: 13977958 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 4BD212222AE for ; Mon, 17 Feb 2025 14:19:17 +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=1739801957; cv=none; b=lBbZt542cq/WXd4euqTJSLPiz4L4ie7sGp+uuB56iE5R8JK6GNP4shBO1Kw5kUnP2f4u8irYQU0FCUO33/9CPu41vRQAVlkOgAMCI8YKZzQwoPEeeH/vDuQ9ilS9rkEoo5ZdMEZ8HLtqVCaCUs3cO2d/262DdCPvcW4g7MpHz5Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739801957; c=relaxed/simple; bh=gn/KStolaftcyqTZpMGSdcKL5sXvfMwH3wicMc1s1DM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=NSPBpKn6fa9W2CJO6oksrDk2wwXaNHRXPomzO3hF+9JiHBIUUPJ5gvLB5Hxm2iuwux+tDzTc8nSeHtOr/x8mFRbIz8fFqxHRGO/3GwENsPBW3MperVT1SwDh2yuL+d410wZ8aQ4W0VV2fOG3kBkpLnXoNB1epxGUAS9zTTBfbu0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=f7kabR52; 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="f7kabR52" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A3FA6C4CED1; Mon, 17 Feb 2025 14:19:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739801957; bh=gn/KStolaftcyqTZpMGSdcKL5sXvfMwH3wicMc1s1DM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=f7kabR527IBMi0EctvJ1yENpWjrQu5hpnAZAmu32Ktd3aES6pDVyyIM86+E1m6Rao +Xi7xxtHp3bJVZOpwTlRsYTe5688IiVEtufBCpz0wrgw3PgkTG3aL9DYf39/DgKhid Pr2oWwatd4arXS77AwSMyJQ2ceiw2y11RrxS1JsSFWhMhtc7Jj7Kt8bm373PmiNi2+ Yd1P8+UQCBK2YyKsiUGdWSDVDSejFcj6l2PLwe2zCHVjtHczdnnyfb/X3mYn2RtT5/ Uvl144sBDsLZsn944YNMgo+6Ztsb1Kaa171V3eXjfRPBi/+6Rz9a/uBU87UsfLm9Ze 4YltcXOuJWazw== From: Jonathan Cameron To: linux-iio@vger.kernel.org Cc: David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Olivier Moysan , Mike Looijmans , Phil Reid , Marek Vasut , Miquel Raynal , Claudiu Beznea , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Alisa-Dariana Roman , Marek Vasut , Frank Li , Jonathan Cameron Subject: [PATCH 26/29] iio: adc: max11410: Switch to sparse friendly iio_device_claim/release_direct() Date: Mon, 17 Feb 2025 14:16:26 +0000 Message-ID: <20250217141630.897334-27-jic23@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250217141630.897334-1-jic23@kernel.org> References: <20250217141630.897334-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 Reviewed-by: Nuno Sá --- drivers/iio/adc/max11410.c | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/drivers/iio/adc/max11410.c b/drivers/iio/adc/max11410.c index 6e06c62715a8..437d9f24b5a1 100644 --- a/drivers/iio/adc/max11410.c +++ b/drivers/iio/adc/max11410.c @@ -471,9 +471,8 @@ static int max11410_read_raw(struct iio_dev *indio_dev, return IIO_VAL_INT; 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(&state->lock); @@ -481,7 +480,7 @@ static int max11410_read_raw(struct iio_dev *indio_dev, mutex_unlock(&state->lock); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); if (ret) return ret; @@ -550,9 +549,8 @@ static int max11410_write_raw(struct iio_dev *indio_dev, if (val != 0 || val2 == 0) return -EINVAL; - ret = iio_device_claim_direct_mode(indio_dev); - if (ret) - return ret; + if (!iio_device_claim_direct(indio_dev)) + return -EBUSY; /* Convert from INT_PLUS_MICRO to FRACTIONAL_LOG2 */ val2 = val2 * DIV_ROUND_CLOSEST(BIT(24), 1000000); @@ -561,16 +559,15 @@ static int max11410_write_raw(struct iio_dev *indio_dev, st->channels[chan->address].gain = clamp_val(gain, 0, 7); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); return 0; 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 = __max11410_write_samp_freq(st, val, val2); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); return ret; default: From patchwork Mon Feb 17 14:16:27 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jonathan Cameron X-Patchwork-Id: 13977959 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 BE55A22257F for ; Mon, 17 Feb 2025 14:19:23 +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=1739801963; cv=none; b=XPWkuSNJB1916D8wWGhrK1LOITVJcR+ybPGP1D/Hbca3/BOqPeTXX3Ft6WpFD5jPIXskpnGAE5FFoxrz2+zUa/4p7hpR3Dk337G6ldlkXR/kJuq7VdTYBtOm/sgTSym/IdwfsFm0q/guadqPq7FLgS7XTgCXEQRE7mX1Vm2OFtk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739801963; c=relaxed/simple; bh=pvDTAzgh9oK6PbkuH8h0QyqpizHrElThmPx1HmLFAUw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=OW3umraokFx4aDCK/REYMMe3uK/G4Kdixv1Xb8mEmU5wVHarXsabyOd/ZfVSSX2naGDz8LOFY2jiSYJiBipkySBEz8xj96FgK9CXoW6ywVmFSFAmoZcPJk2ULqmCHyIsdKd/bDH/ckjUm9WyAn8mk+0X5LKhsfqGioU0xy0YDLU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=pXWFLCBO; 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="pXWFLCBO" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 048B1C4CED1; Mon, 17 Feb 2025 14:19:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739801963; bh=pvDTAzgh9oK6PbkuH8h0QyqpizHrElThmPx1HmLFAUw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=pXWFLCBOTlRifp3qEPGyW8rcTbfK16EUnAZ4HHsybCMGrMlY10n7/SOTwA25/dr4k a30S7aHvNn2hS3+8icEGtl4U1gmmNAvoGkO64yUEWU/yTEzDaL+rxi4nL7+iIaJC1t G5FsuqEMtkGz+fFJddcOs9wTEoWomlOLtHVhrYMM6tR4GW7/odRcDfgXmoRzTtl1LD AiAO6R2BUB6LRaFmZCrLq5mP8NSPIyjGD6rv6cSwb4BYPS2uGc122a4v3f6eXL+CJ9 Y4M5tK6G1lcLEmwX4vvfQuL8SvY6p3+Y4G0k+ufHXfReZTb/DpfJ7NlSaHJ6T+wp7E y/s+9ADs9Z6ZA== From: Jonathan Cameron To: linux-iio@vger.kernel.org Cc: David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Olivier Moysan , Mike Looijmans , Phil Reid , Marek Vasut , Miquel Raynal , Claudiu Beznea , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Alisa-Dariana Roman , Marek Vasut , Frank Li , Jonathan Cameron Subject: [PATCH 27/29] iio: adc: mxs-lradc: Switch to sparse friendly iio_device_claim/release_direct() Date: Mon, 17 Feb 2025 14:16:27 +0000 Message-ID: <20250217141630.897334-28-jic23@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250217141630.897334-1-jic23@kernel.org> References: <20250217141630.897334-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/adc/mxs-lradc-adc.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/drivers/iio/adc/mxs-lradc-adc.c b/drivers/iio/adc/mxs-lradc-adc.c index 152cbe265e1a..8f1e6acea53b 100644 --- a/drivers/iio/adc/mxs-lradc-adc.c +++ b/drivers/iio/adc/mxs-lradc-adc.c @@ -141,9 +141,8 @@ static int mxs_lradc_adc_read_single(struct iio_dev *iio_dev, int chan, * the same time, yet the code becomes horribly complicated. Therefore I * applied KISS principle here. */ - ret = iio_device_claim_direct_mode(iio_dev); - if (ret) - return ret; + if (!iio_device_claim_direct(iio_dev)) + return -EBUSY; reinit_completion(&adc->completion); @@ -192,7 +191,7 @@ static int mxs_lradc_adc_read_single(struct iio_dev *iio_dev, int chan, writel(LRADC_CTRL1_LRADC_IRQ_EN(0), adc->base + LRADC_CTRL1 + STMP_OFFSET_REG_CLR); - iio_device_release_direct_mode(iio_dev); + iio_device_release_direct(iio_dev); return ret; } @@ -275,9 +274,8 @@ static int mxs_lradc_adc_write_raw(struct iio_dev *iio_dev, adc->scale_avail[chan->channel]; int ret; - ret = iio_device_claim_direct_mode(iio_dev); - if (ret) - return ret; + if (!iio_device_claim_direct(iio_dev)) + return -EBUSY; switch (m) { case IIO_CHAN_INFO_SCALE: @@ -300,7 +298,7 @@ static int mxs_lradc_adc_write_raw(struct iio_dev *iio_dev, break; } - iio_device_release_direct_mode(iio_dev); + iio_device_release_direct(iio_dev); return ret; } From patchwork Mon Feb 17 14:16: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: 13977960 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 EE153224882 for ; Mon, 17 Feb 2025 14:19:28 +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=1739801969; cv=none; b=RsG58gG5+evco5FS3OjdMFc+esVDCg8ElfpgeP5rSV1+CpzbxhBMyNUKdMLSgDMnBUsw8SyVvGGnyQuUjYLYgP4yR+HcLxlhgH3BsT5pHAklP6YIz3aWisaWCB5GxqlMhGUbgM5TxTOtuAqmpGhBPbeM4C+RTUAuJ28sbXRl7oM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739801969; c=relaxed/simple; bh=FPoYjPbpXT295JyRgIuWbxFSN+OMkaJAqASunXDGbqc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=eX0T5mN4eBKIqYpL5ifC7PiYZseosWG+hE4FXFjMW6GwTAWiO/r0Y2mN5bvXwNhjOULTycgQjfc0VNWbtVniXc1KfkQfgd4RXGCS7YLOB5TpBgLjwohg6vjV8dHmgsAr7gXzbetvZsV1TbUdt+px3ZuzJeFFqlrrawMFhzh9MaU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Bp0InE1Z; 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="Bp0InE1Z" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 10236C4CEE4; Mon, 17 Feb 2025 14:19:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739801968; bh=FPoYjPbpXT295JyRgIuWbxFSN+OMkaJAqASunXDGbqc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Bp0InE1ZXbLOCyR866c7B46Nv4EQtajwEp3barzokx8qYyN2jOTNGPkqJWatRhmtm bZTYYfIeFvt5CAhZ8ABo09Hbrz/hiZvpLvL95WIUia2DN7LxM6/67HWvagpYSb3iVA zK/TCrA2HLhTyHsDRNcH22TAEQSc+XqJloB78NkjCah23/G589akwBETMxnNWaPZK2 JD5H2L7zfHEtoWzjBj6Z08qL7RtaPL+pf6H+IAgnYSHFL8oKE9vH44lDw6/0Dwvwtn 8FrNH7rF9GQNC+obp32O7QYlWIlLS0Ls6kOWi2ydqrD7aWd+s0niahAGmzgqsjsZKI G6E4+98feJvzQ== From: Jonathan Cameron To: linux-iio@vger.kernel.org Cc: David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Olivier Moysan , Mike Looijmans , Phil Reid , Marek Vasut , Miquel Raynal , Claudiu Beznea , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Alisa-Dariana Roman , Marek Vasut , Frank Li , Jonathan Cameron Subject: [PATCH 28/29] iio: adc: rcar: Switch to sparse friendly iio_device_claim/release_direct() Date: Mon, 17 Feb 2025 14:16:28 +0000 Message-ID: <20250217141630.897334-29-jic23@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250217141630.897334-1-jic23@kernel.org> References: <20250217141630.897334-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: Marek Vasut --- drivers/iio/adc/rcar-gyroadc.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/drivers/iio/adc/rcar-gyroadc.c b/drivers/iio/adc/rcar-gyroadc.c index 11170b5852d1..221c075da198 100644 --- a/drivers/iio/adc/rcar-gyroadc.c +++ b/drivers/iio/adc/rcar-gyroadc.c @@ -199,13 +199,12 @@ static int rcar_gyroadc_read_raw(struct iio_dev *indio_dev, if (!consumer) return -EINVAL; - ret = iio_device_claim_direct_mode(indio_dev); - if (ret) - return ret; + if (!iio_device_claim_direct(indio_dev)) + return -EBUSY; ret = rcar_gyroadc_set_power(priv, true); if (ret < 0) { - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); return ret; } @@ -213,7 +212,7 @@ static int rcar_gyroadc_read_raw(struct iio_dev *indio_dev, *val &= BIT(priv->sample_width) - 1; ret = rcar_gyroadc_set_power(priv, false); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); if (ret < 0) return ret; From patchwork Mon Feb 17 14:16:29 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Jonathan Cameron X-Patchwork-Id: 13977961 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 DDC931BC2A for ; Mon, 17 Feb 2025 14:19:34 +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=1739801974; cv=none; b=DN/V/RPrQ+NzmE4LIuWs4Hi/t4z1W/aTNOiErh80slEuDhBHIkru9byZ1P9fBch6HrxWkC+nKFKlXyw4rn6FzZYQtwjOYk2CHpYyqORB7HwHg84m6gx7EAxqX/Ts1P8fmthA97CpP3bI+vte7nL5JnRyjuwqkj2NSwn1yiatwtA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739801974; c=relaxed/simple; bh=Vob11+Gd5RyzkOeYaKuLm0+pPhwr+l5MxHgbES3hS5M=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=k5wCZHx2qJIwzofCXfomBL6RK2k8KIov7nZqMk4dCjloiBrYOpWkEwJ3gcEfl0eoUpPVDdoju59MfsuPi1it5RcjovkrmqeLDT74mrAlz7QlNxXFrWS/+jdc7F/paYmxHf7YrtrKgTudtl0UUNQrAw/XKViI53MeVM+Mw5Z+7s8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=rORQNnoZ; 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="rORQNnoZ" Received: by smtp.kernel.org (Postfix) with ESMTPSA id AB0CCC4CED1; Mon, 17 Feb 2025 14:19:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739801974; bh=Vob11+Gd5RyzkOeYaKuLm0+pPhwr+l5MxHgbES3hS5M=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=rORQNnoZsBVsLrwg7kzl6OEhEQOgxRX/CFro2SHFPP4cuYHncNobgmTSV3Wijl2Y6 eNjo9IWFZA7wSABX6q89HxhI2w9Kpaoezt8DXRa6OzVOhvZgV39K4z7dXAV02M42LG FGprQo+jbxq6KAE9aOSrHpaaGOEn54aAmVJgrls8JvtpjvlQN7NbSwbaa3EMuvvfmj W+TQ349qXzMElV+dywV++ymKpgfaC6n0XTFikHM7gfE/LllWJDIYNcwrGkQOLijjQd vUr6LVknRoEYxQfhzdk1QGnS6+BlF108s6pCLbsua7g5Nfl3mKJrQSD2GldVzJzwq8 VuQlPt3CPaffg== From: Jonathan Cameron To: linux-iio@vger.kernel.org Cc: David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Olivier Moysan , Mike Looijmans , Phil Reid , Marek Vasut , Miquel Raynal , Claudiu Beznea , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Alisa-Dariana Roman , Marek Vasut , Frank Li , Jonathan Cameron Subject: [PATCH 29/29] iio: adc: Switch to sparse friendly iio_device_claim/release_direct() Date: Mon, 17 Feb 2025 14:16:29 +0000 Message-ID: <20250217141630.897334-30-jic23@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250217141630.897334-1-jic23@kernel.org> References: <20250217141630.897334-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 all the relatively simple cases. 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: Olivier Moysan Cc: Mike Looijmans Cc: Phil Reid Reviewed-by: Nuno Sá Reviewed-by: Mike Looijmans --- drivers/iio/adc/ad7173.c | 9 +++--- drivers/iio/adc/ad7266.c | 7 ++--- drivers/iio/adc/ad7298.c | 7 ++--- drivers/iio/adc/ad7380.c | 56 ++++++++++++++------------------- drivers/iio/adc/ad7476.c | 7 ++--- drivers/iio/adc/ad7887.c | 7 ++--- drivers/iio/adc/ad7923.c | 7 ++--- drivers/iio/adc/ad7944.c | 7 ++--- drivers/iio/adc/dln2-adc.c | 7 ++--- drivers/iio/adc/stm32-adc.c | 7 ++--- drivers/iio/adc/ti-adc084s021.c | 9 +++--- drivers/iio/adc/ti-adc108s102.c | 7 ++--- drivers/iio/adc/ti-ads1298.c | 7 ++--- drivers/iio/adc/ti-ads131e08.c | 14 ++++----- drivers/iio/adc/ti-tlc4541.c | 7 ++--- 15 files changed, 71 insertions(+), 94 deletions(-) diff --git a/drivers/iio/adc/ad7173.c b/drivers/iio/adc/ad7173.c index 54f9cc5a89f5..ca2b41b16cc9 100644 --- a/drivers/iio/adc/ad7173.c +++ b/drivers/iio/adc/ad7173.c @@ -1157,11 +1157,10 @@ static int ad7173_write_raw(struct iio_dev *indio_dev, struct ad7173_state *st = iio_priv(indio_dev); struct ad7173_channel_config *cfg; unsigned int freq, i; - int ret; + int ret = 0; - ret = iio_device_claim_direct_mode(indio_dev); - if (ret) - return ret; + if (!iio_device_claim_direct(indio_dev)) + return -EBUSY; switch (info) { /* @@ -1195,7 +1194,7 @@ static int ad7173_write_raw(struct iio_dev *indio_dev, break; } - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); return ret; } diff --git a/drivers/iio/adc/ad7266.c b/drivers/iio/adc/ad7266.c index 858c8be2ff1a..18559757f908 100644 --- a/drivers/iio/adc/ad7266.c +++ b/drivers/iio/adc/ad7266.c @@ -153,11 +153,10 @@ static int ad7266_read_raw(struct iio_dev *indio_dev, switch (m) { 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 = ad7266_read_single(st, val, 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/adc/ad7298.c b/drivers/iio/adc/ad7298.c index b35bd4d9ef81..28b88092b4aa 100644 --- a/drivers/iio/adc/ad7298.c +++ b/drivers/iio/adc/ad7298.c @@ -232,16 +232,15 @@ static int ad7298_read_raw(struct iio_dev *indio_dev, switch (m) { 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; if (chan->address == AD7298_CH_TEMP) ret = ad7298_scan_temp(st, val); else ret = ad7298_scan_direct(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/adc/ad7380.c b/drivers/iio/adc/ad7380.c index a18dcd664c1b..f232ad1a4963 100644 --- a/drivers/iio/adc/ad7380.c +++ b/drivers/iio/adc/ad7380.c @@ -716,16 +716,15 @@ static int ad7380_debugfs_reg_access(struct iio_dev *indio_dev, u32 reg, struct ad7380_state *st = iio_priv(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; if (readval) ret = regmap_read(st->regmap, reg, readval); else ret = regmap_write(st->regmap, reg, writeval); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); return ret; } @@ -1018,14 +1017,13 @@ static int ad7380_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 = ad7380_read_direct(st, chan->scan_index, scan_type, val); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); return ret; case IIO_CHAN_INFO_SCALE: @@ -1056,13 +1054,12 @@ static int ad7380_read_raw(struct iio_dev *indio_dev, return IIO_VAL_INT; case IIO_CHAN_INFO_OVERSAMPLING_RATIO: - ret = iio_device_claim_direct_mode(indio_dev); - if (ret) - return ret; + if (!iio_device_claim_direct(indio_dev)) + return -EBUSY; ret = ad7380_get_osr(st, val); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); if (ret) return ret; @@ -1155,13 +1152,12 @@ static int ad7380_write_raw(struct iio_dev *indio_dev, switch (mask) { case IIO_CHAN_INFO_OVERSAMPLING_RATIO: - ret = iio_device_claim_direct_mode(indio_dev); - if (ret) - return ret; + if (!iio_device_claim_direct(indio_dev)) + return -EBUSY; ret = ad7380_set_oversampling_ratio(st, val); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); return ret; default: @@ -1186,13 +1182,12 @@ static int ad7380_read_event_config(struct iio_dev *indio_dev, struct ad7380_state *st = iio_priv(indio_dev); int tmp, ret; - ret = iio_device_claim_direct_mode(indio_dev); - if (ret) - return ret; + if (!iio_device_claim_direct(indio_dev)) + return -EBUSY; ret = regmap_read(st->regmap, AD7380_REG_ADDR_CONFIG1, &tmp); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); if (ret) return ret; @@ -1209,16 +1204,15 @@ static int ad7380_write_event_config(struct iio_dev *indio_dev, struct ad7380_state *st = iio_priv(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 = regmap_update_bits(st->regmap, AD7380_REG_ADDR_CONFIG1, AD7380_CONFIG1_ALERTEN, FIELD_PREP(AD7380_CONFIG1_ALERTEN, state)); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); return ret; } @@ -1265,13 +1259,12 @@ static int ad7380_read_event_value(struct iio_dev *indio_dev, switch (info) { case IIO_EV_INFO_VALUE: - ret = iio_device_claim_direct_mode(indio_dev); - if (ret) - return ret; + if (!iio_device_claim_direct(indio_dev)) + return -EBUSY; ret = ad7380_get_alert_th(st, dir, val); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); return ret; default: return -EINVAL; @@ -1332,13 +1325,12 @@ static int ad7380_write_event_value(struct iio_dev *indio_dev, switch (info) { case IIO_EV_INFO_VALUE: - ret = iio_device_claim_direct_mode(indio_dev); - if (ret) - return ret; + if (!iio_device_claim_direct(indio_dev)) + return -EBUSY; ret = ad7380_set_alert_th(indio_dev, chan, dir, val); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); return ret; default: return -EINVAL; diff --git a/drivers/iio/adc/ad7476.c b/drivers/iio/adc/ad7476.c index aeb8e383fe71..37b0515cf4fc 100644 --- a/drivers/iio/adc/ad7476.c +++ b/drivers/iio/adc/ad7476.c @@ -138,11 +138,10 @@ static int ad7476_read_raw(struct iio_dev *indio_dev, switch (m) { 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 = ad7476_scan_direct(st); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); if (ret < 0) return ret; diff --git a/drivers/iio/adc/ad7887.c b/drivers/iio/adc/ad7887.c index 69add1dc4b53..87ff95643794 100644 --- a/drivers/iio/adc/ad7887.c +++ b/drivers/iio/adc/ad7887.c @@ -152,11 +152,10 @@ static int ad7887_read_raw(struct iio_dev *indio_dev, switch (m) { 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 = ad7887_scan_direct(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/adc/ad7923.c b/drivers/iio/adc/ad7923.c index acc44cb34f82..87945efb940b 100644 --- a/drivers/iio/adc/ad7923.c +++ b/drivers/iio/adc/ad7923.c @@ -260,11 +260,10 @@ static int ad7923_read_raw(struct iio_dev *indio_dev, switch (m) { 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 = ad7923_scan_direct(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/adc/ad7944.c b/drivers/iio/adc/ad7944.c index 9a7825ea5087..2f949fe55873 100644 --- a/drivers/iio/adc/ad7944.c +++ b/drivers/iio/adc/ad7944.c @@ -407,12 +407,11 @@ static int ad7944_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 = ad7944_single_conversion(adc, chan, val); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); return ret; case IIO_CHAN_INFO_SCALE: diff --git a/drivers/iio/adc/dln2-adc.c b/drivers/iio/adc/dln2-adc.c index 221a5fdc1eaa..b9029fa13b32 100644 --- a/drivers/iio/adc/dln2-adc.c +++ b/drivers/iio/adc/dln2-adc.c @@ -314,15 +314,14 @@ static int dln2_adc_read_raw(struct iio_dev *indio_dev, switch (mask) { case IIO_CHAN_INFO_RAW: - ret = iio_device_claim_direct_mode(indio_dev); - if (ret < 0) - return ret; + if (!iio_device_claim_direct(indio_dev)) + return -EBUSY;; mutex_lock(&dln2->mutex); ret = dln2_adc_read(dln2, chan->channel); mutex_unlock(&dln2->mutex); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); if (ret < 0) return ret; diff --git a/drivers/iio/adc/stm32-adc.c b/drivers/iio/adc/stm32-adc.c index 9d3b23efcc06..5dbf5f136768 100644 --- a/drivers/iio/adc/stm32-adc.c +++ b/drivers/iio/adc/stm32-adc.c @@ -1471,9 +1471,8 @@ static int stm32_adc_read_raw(struct iio_dev *indio_dev, switch (mask) { case IIO_CHAN_INFO_RAW: case IIO_CHAN_INFO_PROCESSED: - ret = iio_device_claim_direct_mode(indio_dev); - if (ret) - return ret; + if (!iio_device_claim_direct(indio_dev)) + return -EBUSY; if (chan->type == IIO_VOLTAGE) ret = stm32_adc_single_conv(indio_dev, chan, val); else @@ -1482,7 +1481,7 @@ static int stm32_adc_read_raw(struct iio_dev *indio_dev, if (mask == IIO_CHAN_INFO_PROCESSED) *val = STM32_ADC_VREFINT_VOLTAGE * adc->vrefint.vrefint_cal / *val; - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); return ret; case IIO_CHAN_INFO_SCALE: diff --git a/drivers/iio/adc/ti-adc084s021.c b/drivers/iio/adc/ti-adc084s021.c index da16876c32ae..9c845ee01697 100644 --- a/drivers/iio/adc/ti-adc084s021.c +++ b/drivers/iio/adc/ti-adc084s021.c @@ -96,19 +96,18 @@ static int adc084s021_read_raw(struct iio_dev *indio_dev, switch (mask) { case IIO_CHAN_INFO_RAW: - ret = iio_device_claim_direct_mode(indio_dev); - if (ret < 0) - return ret; + if (!iio_device_claim_direct(indio_dev)) + return -EBUSY; ret = regulator_enable(adc->reg); if (ret) { - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); return ret; } adc->tx_buf[0] = channel->channel << 3; ret = adc084s021_adc_conversion(adc, &be_val); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); regulator_disable(adc->reg); if (ret < 0) return ret; diff --git a/drivers/iio/adc/ti-adc108s102.c b/drivers/iio/adc/ti-adc108s102.c index 9758ac801310..7d615e2bbf39 100644 --- a/drivers/iio/adc/ti-adc108s102.c +++ b/drivers/iio/adc/ti-adc108s102.c @@ -181,13 +181,12 @@ static int adc108s102_read_raw(struct iio_dev *indio_dev, switch (m) { 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 = adc108s102_scan_direct(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/adc/ti-ads1298.c b/drivers/iio/adc/ti-ads1298.c index 03f762415fa5..ae30b47e4514 100644 --- a/drivers/iio/adc/ti-ads1298.c +++ b/drivers/iio/adc/ti-ads1298.c @@ -319,13 +319,12 @@ static int ads1298_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; ret = ads1298_read_one(priv, chan->scan_index); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); if (ret) return ret; diff --git a/drivers/iio/adc/ti-ads131e08.c b/drivers/iio/adc/ti-ads131e08.c index 91a79ebc4bde..c6096b64664e 100644 --- a/drivers/iio/adc/ti-ads131e08.c +++ b/drivers/iio/adc/ti-ads131e08.c @@ -505,12 +505,11 @@ static int ads131e08_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; ret = ads131e08_read_direct(indio_dev, channel, value); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); if (ret) return ret; @@ -551,12 +550,11 @@ static int ads131e08_write_raw(struct iio_dev *indio_dev, switch (mask) { 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 = ads131e08_set_data_rate(st, value); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); return ret; default: diff --git a/drivers/iio/adc/ti-tlc4541.c b/drivers/iio/adc/ti-tlc4541.c index 08de997584fd..5a138be983ed 100644 --- a/drivers/iio/adc/ti-tlc4541.c +++ b/drivers/iio/adc/ti-tlc4541.c @@ -131,11 +131,10 @@ static int tlc4541_read_raw(struct iio_dev *indio_dev, switch (m) { 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 = spi_sync(st->spi, &st->scan_single_msg); - iio_device_release_direct_mode(indio_dev); + iio_device_release_direct(indio_dev); if (ret < 0) return ret; *val = be16_to_cpu(st->rx_buf[0]);