From patchwork Sun Mar 9 16:58:12 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jonathan Cameron X-Patchwork-Id: 14008648 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 16EA9748F for ; Sun, 9 Mar 2025 16:58: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=1741539523; cv=none; b=tQlhTSkQFn8mW5CghRlnZJBAfuV0OSt3vCFhW6tX18wsSnEDhOw45UHRQ9MUaKWKtrJV8DRTyLHe32gLpvFI/oCAvR4b50Ot4Y31v8Y7+wnfG2jfxL6mqnwCOnqM+8z4r7hfkGfqnyDUNG7SvX1chdhMCxudQyBz4/sOly8z+aA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741539523; c=relaxed/simple; bh=dS884o12D4Ym3Y5x7dNzCZ5wCxhW/0mdNkDtjuNEGEw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ZJ84P+UrV+Z2Uy/m74ZaesdKZcENNttoYmQZPHKtLiTA6FurAka+UP6ZXPKmfDTSsRKR9yVB+e9JqzF4Sujs2zqaaUGJfgEy+4Gve8HN5I4Rzz3PQzZFBHDx5+oR/pFeacBmZwvbZC8PMaj4ykTiOCW/TmbwDcg/HkauYvSPPUo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=CO1NCHfK; 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="CO1NCHfK" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6F897C4CEE5; Sun, 9 Mar 2025 16:58:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741539521; bh=dS884o12D4Ym3Y5x7dNzCZ5wCxhW/0mdNkDtjuNEGEw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=CO1NCHfKsNHajquds34Ck7azGuEa6mXfC9uyxshsYeSXYqut3zQr1cOvFMxnmAruz SQTocOoG1w1mNtbPT+prYyIHflJ2k3nGfDv39ao71f3coZGY00BjM86LDblQypwnLn epipnS9NmWSExj7efPEwJuyDPqW612aDlmoHj3Ki27cExjYcVPJJHKWqOx74GvCreF el+rEQ89gXmT8EH7lBB4OkvisYJMsPJ5bRKi6spvx3MT0wPv91WWHNwFNAhXNpwGgU eP651jLE7lUHgC4aCWmOXCC16JLDu3uFt+AbBpjRVp4TT6dIExpj/Xcw9keeXtq39o c6GJ7KrMvNMuw== From: Jonathan Cameron To: Frank Li , Marek Vasut , linux-iio@vger.kernel.org, =?utf-8?q?Nuno_S=C3=A1?= Cc: Marek Vasut , Mike Looijmans , =?utf-8?q?Nuno_S=C3=A1?= , David Lechner , Jonathan Cameron Subject: [PATCH v2 1/8] iio: adc: vf610: Move claim of direct mode to caller of vf610_read_sample and use guard(mutex) Date: Sun, 9 Mar 2025 16:58:12 +0000 Message-ID: <20250309165819.1346684-2-jic23@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250309165819.1346684-1-jic23@kernel.org> References: <20250309165819.1346684-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 Sun Mar 9 16:58:13 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jonathan Cameron X-Patchwork-Id: 14008649 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 F1D1A748F for ; Sun, 9 Mar 2025 16:58:45 +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=1741539526; cv=none; b=NFsEkxRi1sVjECnki9Tf6fAcjBPru3u2eTsw8PTrEy7BpNqL4TW73e10pRcj33S+R7ONBR3LJBdS+19hRKVdTY9SRDddgwTt7l56XNSFjkHKHpIhft3hn0qIMing9l4I/X74jfuevKB3BSV38zMUAsCHfs1Oqcl9bQ84cskH7uM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741539526; c=relaxed/simple; bh=l3WF6slEFDi3bYBwHNVkyg4aE7Hpurgm02kHmpzlF/Y=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=nhNMjTSghy06EDXNMMazq921NKi5x9J+n1a3lTebkkKiGsU3+pZ6Khc6qe6RNHOuv/LVrJELigN+ghyIWsc356xnT+udOJQci2ACDPR8PqYGC43T8VLYxlrHcjOu/Y2xOqfGUTHk1oZ6h8RcCGAiz4QJhOXqYEgIkbI9/KxUW4w= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=j+7mG3MX; 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="j+7mG3MX" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 50941C4CEE3; Sun, 9 Mar 2025 16:58:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741539525; bh=l3WF6slEFDi3bYBwHNVkyg4aE7Hpurgm02kHmpzlF/Y=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=j+7mG3MXCNeKKt5wQADg9Z44UdyAJqeqRjNK+DwuL4ODIBZtfCqmXEiNAxe73Yk/3 33P1gDeP3rx81NV3s3/V37lj1cD7hSaonDGO8v3eAUR3gjOkd9+P7lMj4ZewuV3B1M fCxDFD+yD8L82PfA/oZsI8YkkQudjR3/Rc1/ylFtufAU0BJ+PzSU/nqhr5FqCseOfe 7oe8CNQIpGQjz0tSgRv7szGPC0MIhszRoJlyTYX4pEx9laj4oDLKVXsoDhLYNNB5Ut 1uG2esfFg0Wx2VjUWhTa8Q0qvZ2zoyv7R6Bmc29nbyNux06w3caqI3o97slAntxPfK pDYX452S8FyTw== From: Jonathan Cameron To: Frank Li , Marek Vasut , linux-iio@vger.kernel.org, =?utf-8?q?Nuno_S=C3=A1?= Cc: Marek Vasut , Mike Looijmans , =?utf-8?q?Nuno_S=C3=A1?= , David Lechner , Jonathan Cameron Subject: [PATCH v2 2/8] iio: adc: vf610: Switch to sparse friendly iio_device_claim/release_direct() Date: Sun, 9 Mar 2025 16:58:13 +0000 Message-ID: <20250309165819.1346684-3-jic23@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250309165819.1346684-1-jic23@kernel.org> References: <20250309165819.1346684-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 Sun Mar 9 16:58:14 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jonathan Cameron X-Patchwork-Id: 14008650 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 079F21DF745 for ; Sun, 9 Mar 2025 16:58: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=1741539530; cv=none; b=iae4NUO1GySAL1zbKKdVvVRG1jiRFYcMD78mPbRQjr50VjUyC0Qdfr2C388gmYb8TToDSy7HjhVXWEKKwP6/5NfBdyN5kkhLyK/GJlPjs8R3ZWd/HoKAGKFrwUuPwQYxLmaSP0Khz4qSfyPLh+gjRooWD3epK00zzZXKXoKoINA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741539530; c=relaxed/simple; bh=YUYZpYWu3qEndzwnWpszt3bx3yZgChkcVon2XZ2sCTU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=O1yBApEAEcnfoE0ycbBeBUdFY3knJG79q55C2N5aA9BJnvoxlOSEionVcKE3stJwzBTdlfv6ZihDglhfGy5bLSIih2quog+0Frmv/couzsJpyF8Gk8GyW/ZhhOC8kmnqjh99f+kh8EBxaHL2qHFCXqEesKqlHISIbLv/Lfp22wQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=FeAjuJd5; 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="FeAjuJd5" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 68241C4CEE3; Sun, 9 Mar 2025 16:58:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741539529; bh=YUYZpYWu3qEndzwnWpszt3bx3yZgChkcVon2XZ2sCTU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=FeAjuJd5QplWqt7q5SFRD1DLxzF9rKRHT5E9HX366v2M5nVepKNlgsyMxl9Ipwrlh yhbJn2ur9CFtbe4qVYqnUokC/YZ5W88FauQvha8LYe8ky1b9ou2l5Ez8A7ScbM14wA OwX2knESELpbqbNQapceZwezbiEjMFAdBRLtiRKkWYEgtKHzQ0V6VtfljcUwLpy0QE ElA8sVt2aGCmf8D4VBYtg5oFi8DpQclLwL7911bGqiWi5/NYCSkkHWstjLPwmCoRwy Ty+B2PR+ijii7q3dWYPccgCZaAFO1wqRbjujGkXMm6PThWl10FpwzE+Ls2ee5oyNY3 vZw+bxvjN/h+Q== From: Jonathan Cameron To: Frank Li , Marek Vasut , linux-iio@vger.kernel.org, =?utf-8?q?Nuno_S=C3=A1?= Cc: Marek Vasut , Mike Looijmans , =?utf-8?q?Nuno_S=C3=A1?= , David Lechner , Jonathan Cameron Subject: [PATCH v2 3/8] iio: adc: ti-ads1100: Use guard(mutex) to allow direct returns Date: Sun, 9 Mar 2025 16:58:14 +0000 Message-ID: <20250309165819.1346684-4-jic23@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250309165819.1346684-1-jic23@kernel.org> References: <20250309165819.1346684-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 Sun Mar 9 16:58:15 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jonathan Cameron X-Patchwork-Id: 14008651 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 1C2851E51FC for ; Sun, 9 Mar 2025 16:58:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741539534; cv=none; b=WX1T1coOqkk//UOGf0lt3Ky/6Dpy4NtXalYavyFdgDcpxcTpj50jejP973mKLlwbeiwP19+gtZFanR4UbcUdPcHtYjSGxqa8C9ia+2/hpfPqRzhJ09WuMQBT2eZ3r9kiyj5iX2C2740t6CwhoVzz6W6HHQ+vkhGuH7re/CJE+w8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741539534; c=relaxed/simple; bh=atNVxPelO0EvIhapjy+GuilNReWE4gyI3jWjGSwFQSY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=jaxwKmk8vs6O/8t7qKIXjt9F+uLMrqLVg5eMpbH7qA9xhuvOaW0rLDkdtzKmw5pzCtVgmXmqtxxNa6vsFNXXZHTeFp5F2fOhFWA/JXHnlKjJHXcg+loXO83pkqQP/ZhHqMWEYZzmuNIJmdRcyN7r/0ufSFgFxlwFSa8Ey3cvmvA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Uiu+IFv8; 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="Uiu+IFv8" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 83084C4CEEC; Sun, 9 Mar 2025 16:58:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741539534; bh=atNVxPelO0EvIhapjy+GuilNReWE4gyI3jWjGSwFQSY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Uiu+IFv8/s87rh0aQLJwb+/hmg6vGZpGmsaI0XLz6oGyRAHXveyl3OqPwziNb/XZD wz+FTfcGnLQRNzKCKF1IDKUA1Sin2FofK2/Hxz82Qdk4qxDNFW+KxNirF+qZphqOMu eb5NAzVwQTqOiE08Uzl0PDt/hL4tkUfoUgs3qV6PAVKmA+bd38oPyyTsbDnb3kYLJ9 N1rgYcLoT3+hi1rHSRGKsf9kXzaO9U7J2i6v/8XoM2eeHZsMYI5dw6LxJe78ehfKAn OmoHedNgzpwd7q7cGZoPtfkryI1lWq+q/rCC3E5aQ5idGiyQN1YEpf6hwyMDaar7/w DmN1tr4cdEb1w== From: Jonathan Cameron To: Frank Li , Marek Vasut , linux-iio@vger.kernel.org, =?utf-8?q?Nuno_S=C3=A1?= Cc: Marek Vasut , Mike Looijmans , =?utf-8?q?Nuno_S=C3=A1?= , David Lechner , Jonathan Cameron Subject: [PATCH v2 4/8] iio: adc: ti-ads1100: Switch to sparse friendly iio_device_claim/release_direct() Date: Sun, 9 Mar 2025 16:58:15 +0000 Message-ID: <20250309165819.1346684-5-jic23@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250309165819.1346684-1-jic23@kernel.org> References: <20250309165819.1346684-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 Sun Mar 9 16:58:16 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jonathan Cameron X-Patchwork-Id: 14008652 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 66F541DEFCC for ; Sun, 9 Mar 2025 16:58:57 +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=1741539538; cv=none; b=Hev71RMrzuPy6IJwd0cvYCWETjH3vCjSvh9yI3ohH4IQ4ukdFGCxYoU5bt6vKN2qc8bz6mXfLTWzyyUO1LI/Kpedz6315vw+mQ6KUEHXc+WDadDmgbgGm1kvcdTjJkZMVAGtFFPflNbH7vQ6G9UJvITm8r55v4pWdF6+P/86DZI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741539538; c=relaxed/simple; bh=B8SUDPlYXHdaz8iiWcbksHgfY95ACf8YIXHXwmHGnPU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=b0BiRI09ilrUG6CFMVMvZ2Md+JFScqjxSY2Frawcxu1VazZy4qQN05NPiNKf+qoK9tirjjeyargVXXpD1MR2yICZ6325IOvCEyqfG8gcExYwH+CAzJfUc4nJ7QrhxPZgXS6iHMVwcvubcC7Tm1RMoNCVb2kpo5HbMEs4aq1HEEU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Xx35PC7C; 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="Xx35PC7C" Received: by smtp.kernel.org (Postfix) with ESMTPSA id B0BC4C4CEE3; Sun, 9 Mar 2025 16:58:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741539537; bh=B8SUDPlYXHdaz8iiWcbksHgfY95ACf8YIXHXwmHGnPU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Xx35PC7COi3x5KcrPNr9UccejiNZ22TwcEXY/h+sZOv1i/MT9ip0q1XSgyHm/SBaj 6lNhzm1bJmuw4DOm7Uo7eN8CP3M1VzgFuzfoEfBE5Pf6DC2CZcwjrqOFtoURf47puX psKW3c0jQLKE2nE2I5TU8W9e1Uj+MttGv9zVWVAlM5g8OMnxHl3Y8okBKTds3WPi87 hwIFD08M6n5a7cJakXwgtpLOWzMIsWsWvJ+mVQVQt3xK5Jm0k4IDNxWqF9lKzh4RZY CkCUOfdG0+wsCnL5QJuYOnKhk8DcNxuCBsz+wyQMdN6i8ZeIMongBTxIY6E9cvjemY vpzdpwbvTtoag== From: Jonathan Cameron To: Frank Li , Marek Vasut , linux-iio@vger.kernel.org, =?utf-8?q?Nuno_S=C3=A1?= Cc: Marek Vasut , Mike Looijmans , =?utf-8?q?Nuno_S=C3=A1?= , David Lechner , Jonathan Cameron Subject: [PATCH v2 5/8] iio: adc: ti-ads1015: Use guard(mutex) and factor out code for INFO_RAW Date: Sun, 9 Mar 2025 16:58:16 +0000 Message-ID: <20250309165819.1346684-6-jic23@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250309165819.1346684-1-jic23@kernel.org> References: <20250309165819.1346684-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 Sun Mar 9 16:58:17 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jonathan Cameron X-Patchwork-Id: 14008653 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 5F6791E0E00 for ; Sun, 9 Mar 2025 16:59:02 +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=1741539542; cv=none; b=OZ5vrq2aoCwR2Qds14s2lS7kH8fZie2iRJlb+FHFCACwxGrT/uLN80YcdzYEtsCMDDhPjoVczvRW9AGEE3sKqNk0hsZJ+2LLKCVzVEcxzodXiihsppY+/sCNZdOdzr7kpdizG7Dr4sEB8Hv/NEYNNYiv3l3FzDIb2s9irV0zOOc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741539542; c=relaxed/simple; bh=vaI3p86yqkWTV92lC9NLqHcE1PrPVtBumyyz8er07i8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=iWIKuLVpE/A7qCCPWZ38yqmqPUkkKaFWnDYYkIST9A2UGX5NFqL89KNJJPKjkZxJbQNwVCd8SVX+ytDFRyZzCS06xjw613HKGdAKJJNdxksqb4aqewNp6foGZpdaqxo3PHZd7TXGh6gKqZoUsSpM7QYxKkOckZgqxv9AVH1gk1s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=AUS9OboM; 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="AUS9OboM" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 96D34C4CEE3; Sun, 9 Mar 2025 16:58:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741539542; bh=vaI3p86yqkWTV92lC9NLqHcE1PrPVtBumyyz8er07i8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=AUS9OboM965gxJfMnz2o6tbUumdqet5qNOF6hT6in/0Ok3Gzx7lubh6rZPj4XhReW tGc8GevXdHiOg6F7kRoheAWA5UjavPbXPHjPz2XeW22WMO0UjuNssCGD75UPhYBDWe 04aG66s/n8W8DHg7q99Jnzh/MqTBw0YQSvBJSkcEWbNx/24Afjf8HnK2kN2+DFf16n vqcKqj/VIHTSOR/k1AuTlQ7+dsCmcWTs+hw+gjjdMHBhDuuvsnIRGnprEVsURzjoSK /PRTUPAodrDfedqv6aJTOG9iAK1MHgX8BOkV5hyF2hMhNofNIjBjGLwSGQwol357Xz xDSe9pfhxbpDA== From: Jonathan Cameron To: Frank Li , Marek Vasut , linux-iio@vger.kernel.org, =?utf-8?q?Nuno_S=C3=A1?= Cc: Marek Vasut , Mike Looijmans , =?utf-8?q?Nuno_S=C3=A1?= , David Lechner , Jonathan Cameron Subject: [PATCH v2 6/8] iio: adc: ti-ads1015: Switch to sparse friendly iio_device_claim/release_direct() Date: Sun, 9 Mar 2025 16:58:17 +0000 Message-ID: <20250309165819.1346684-7-jic23@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250309165819.1346684-1-jic23@kernel.org> References: <20250309165819.1346684-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 Sun Mar 9 16:58:18 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jonathan Cameron X-Patchwork-Id: 14008654 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 CB65A1E0E00 for ; Sun, 9 Mar 2025 16:59:06 +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=1741539546; cv=none; b=ekeyfN/OyYc3zSpQc9Na28fHfrO8Dp/E+AeJTg87cgzijcf1FW+TH6QSSnSjtaM2T21irNLifzx45nTHwrFQmPwhRR7pOrm3ei7t6/4gwyas5hyRQDNYf2zjITtDyGDMnOcbZd2uF5vuUV7I0FbrFlLMKh/ML/W1mkgvx3L+BJ8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741539546; c=relaxed/simple; bh=pvDTAzgh9oK6PbkuH8h0QyqpizHrElThmPx1HmLFAUw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=JHPQDha4fkZUCZTYLQjmilv51gN7JPqKaSZaz0aQ5z6xzwbdYx+/7jflpkvgCMfbzPoSvJmi0ldmeWIBFXEpYgZqZm/1y64oA6aTOjTkPcZGoglgkF8LOva8x3z+uLnGzPcTluuiGfWvb0Hi238hqRnuZ2fbb8AMmI9sf9CPIts= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ReoqAITp; 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="ReoqAITp" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 035A0C4CEE3; Sun, 9 Mar 2025 16:59:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741539546; bh=pvDTAzgh9oK6PbkuH8h0QyqpizHrElThmPx1HmLFAUw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ReoqAITp6nH4kU37KEcAO6EfbgiXEFhaR52TcPKL/X0+OhX5LamDiZEy+uvaX4SSB ZHoj3AqU3zE42JuZ0XNs2xq8ygn+FmGUZJ2TizmXgd689PPlYyXRW469u2cPBFRcDk cwtX0GULmzVQkuV9eoD380uQhCvlUt1EATha78zJ/woDG0BZ8i4LCnz8jp1DcgU/TM PsqviP2/JZ92UA9r7QWCcoLXdbW/nejxgEc+T9D6G5yiUF3tYYTNwHqM8jeH74IgTN f5rKdIJyZ+kx1DR3ndsS1qb8aCWgrkEiBpzQlJXLugiwLbmjqDBXGHvZXM7MRyecNZ V/i9O4squsb6w== From: Jonathan Cameron To: Frank Li , Marek Vasut , linux-iio@vger.kernel.org, =?utf-8?q?Nuno_S=C3=A1?= Cc: Marek Vasut , Mike Looijmans , =?utf-8?q?Nuno_S=C3=A1?= , David Lechner , Jonathan Cameron Subject: [PATCH v2 7/8] iio: adc: mxs-lradc: Switch to sparse friendly iio_device_claim/release_direct() Date: Sun, 9 Mar 2025 16:58:18 +0000 Message-ID: <20250309165819.1346684-8-jic23@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250309165819.1346684-1-jic23@kernel.org> References: <20250309165819.1346684-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 Sun Mar 9 16:58:19 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jonathan Cameron X-Patchwork-Id: 14008655 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 8CA5C1DEFCC for ; Sun, 9 Mar 2025 16:59: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=1741539550; cv=none; b=jCmUH2R9y3Hr6qIYvvJ0Qyv5tx2TkaBBNczYg/3NxRsZQRq/pWdllXXc3aJz2bl+I1h5EA2YhMmc1JpwfG+kMMkLUutp3YfLbpbVO6oiQPGYS1rMnRu9CKQfhIhBTdkGslJAFXe3a+59o+xz6gADyNIcLGVRaxVYt0TXUU2BPQA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741539550; c=relaxed/simple; bh=FPoYjPbpXT295JyRgIuWbxFSN+OMkaJAqASunXDGbqc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=G6Y9rhB9QTvB9rKCUHo7NnzMfexzDAAciFmK87qh9+zh+ANnF0Sqc5Mfp3nN+GDyaIdtb6/PHv2RMlYx1xW/0m7OS84K50+dmJqY6vV56/esO6pCQa5PHa74+0UibGPe6FCDf9TvL2m+/Q58EGTkjuFg/EG9QZX9JrBDSNOxMo8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=q9PnAdrj; 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="q9PnAdrj" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4F4C1C4CEE3; Sun, 9 Mar 2025 16:59:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741539550; bh=FPoYjPbpXT295JyRgIuWbxFSN+OMkaJAqASunXDGbqc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=q9PnAdrjS4R4JWzg/Sc2oL5w7Jdddr1WU/VwOV0ivEh9z5S1Jr7ak9B87ia7bG+sw YL7aW8fgPOR2GEuwXDzCvO3PZ6hGvjVYEi3Imf2r8PTERJAtrPykZg9qyuy1tOJpcN UDSXLomYo7SnIO0M9SFMJe2H40DthvWLemltI35DyFTjmLu+I3DFFTfpkg/qAdeRny NEXkIrwPwB0tim7EVg8lgnsdCdUgZ2yG437rE2uh81/t/LuPt+xSRQAQWFBNECnAKd SJa/xG5H6x4IxQi8ajrY0MMe6WqzkAGRNIxkV1uY6mZ4ctDxCKGO3Eg9XvM07g6+Hq lot+XeS9GA5qA== From: Jonathan Cameron To: Frank Li , Marek Vasut , linux-iio@vger.kernel.org, =?utf-8?q?Nuno_S=C3=A1?= Cc: Marek Vasut , Mike Looijmans , =?utf-8?q?Nuno_S=C3=A1?= , David Lechner , Jonathan Cameron Subject: [PATCH v2 8/8] iio: adc: rcar: Switch to sparse friendly iio_device_claim/release_direct() Date: Sun, 9 Mar 2025 16:58:19 +0000 Message-ID: <20250309165819.1346684-9-jic23@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250309165819.1346684-1-jic23@kernel.org> References: <20250309165819.1346684-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;