From nobody Sun Feb 8 07:18:33 2026 Received: from mail-vk1-f178.google.com (mail-vk1-f178.google.com [209.85.221.178]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 731853321BB for ; Wed, 3 Dec 2025 19:19:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764789581; cv=none; b=e9GdJj0MKEoApFS32TJJUUnat/JZXYRlwe2NXWUhKaWY+D+Ct4zM9fs5Q3VIn2aND0AbXr5oo+UvhJ4lG99kWUev8tzVAcSc2/NxKwr63VnYX5jkJWn5YzbJPYF1/yuML7EFsLGyXC2TtIqukZNZsx8dtXHeIstKacCTIUuWIrM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764789581; c=relaxed/simple; bh=tgg4Jta3JWOQIYugusdzOpEO62AZmmgPzzdm9FOULNc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=rEvmygZpBwn44aY9Q7KqIAMDMTdnAE6NaH2hpsutThdkycLIJw4da3IRmCCU4rBRArfbFxF8NvmT7DD5lE6/5KtWxY/bE6lYIYd0kEdUZTHTV8PO37UdSObAi/OJYhmHkOZ0GSeXrspq6IFQeou9XKc2V8jUeVmeXnkQmd2DcDU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=BrmWeBLV; arc=none smtp.client-ip=209.85.221.178 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="BrmWeBLV" Received: by mail-vk1-f178.google.com with SMTP id 71dfb90a1353d-55b22d3b2a6so102478e0c.1 for ; Wed, 03 Dec 2025 11:19:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1764789578; x=1765394378; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=DYgcHkkiVH7bWdjqtn/9Y8/vTFxsajXbkTNsCCHFasY=; b=BrmWeBLVrAOqV+oK8egWk8d9hgko2bimDM54GRT1tvaWuEvZye8VZIDfsILryEemh+ 7tvub+zo+Bo/kMJSBeKgiYWD19murtOD+qxDO/ldAQNyR9v8mFJpKYdQa+EOGgxZ8Tfk IGHKFd8QkHFRk7hN/X+/t0ZlD3Juu+5cbAYJjO2epEoAvDFkA9cnrqrWL+aN/xbxq+Rl J4bG+fKBZ936SFpRIH2e1yUZUNjb96RpX3vxC+3F2ex9J72/3L/7lgHsQwpreZUj730C 3X0jSZPu9HAeG3yZeojtxOmNCZeOKHdc/LqDS38rqv3W2KPSYDwqFmwoZLwzwhILMZc+ X2JQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764789578; x=1765394378; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=DYgcHkkiVH7bWdjqtn/9Y8/vTFxsajXbkTNsCCHFasY=; b=ijZGsOveecg5dyEGn+BrFvALFV2tgu1ntIAGoz3CzzrpfcZ02etjlnhq/wC0ItjjcZ h2CZG1ztTIzSKEnkEvDyuQm/VnV7BU+TMrENnHc1804tNfDMy+DdVPYo0VNBnH5CrLAj ek0F15ah+qmKLK8f6jokLMAIfCPOOcu2aoa6jHXJYSVVwqqOr1CryX1A44kV1zRcWASi Wv/4dKyxo/uP7gF3T6rEQjhlGMVM3d3wMffASUkCk6ATwB5u+iKtYApynzeVcwEuJ+nx MIB/4lCIqD0jKquZ8eh4mwIRzSGocaYaBbocEreSsA3jCEtlXw/2wHPPjbkMyZb9HYfq HMXQ== X-Forwarded-Encrypted: i=1; AJvYcCWFibf87V0vbdblIIsXbyIB9oMg/LlDqbAIC6NV660EghS7NX9lzB7Hp9Ag6Rlu0qY5KYi46BoL5htB9wk=@vger.kernel.org X-Gm-Message-State: AOJu0YxI6FGzAmiCGPM/Eqp5deButmFgFt7vK1OmNmlpi+vkShCv77Mx IXrUuGYSHznz1T3Fbirq1VIurU/JWFlNYWmvf0oPKpj3noOeLvScwxxd X-Gm-Gg: ASbGncvuSEZ4jk0p4yBNsRM8Mp1VQsZmfGaaTCjrRRxrj7lDDtL6WC6NVGh0UR5nVFO hSRlkfNKUTV4ALZMRXcLqBYc05fLf6dlY8PpaBdUorLgPV63fIjuHA73+iK+tovdqTB/Adc9MdR rp1ehpQV6PFEG2gJsdBqM3tvFwBV+LKW1TYaV+Tx8MU7yPEOKUtq/gwIPiHZSXchtdxpA518Q4T 9VDYz8+DmB+p8LbjYNsY12WlbxAoisDwi/hHkFwsVN8dn7ftGtxuOCWmeo3nA532EFLgElRpJm8 r7jPnJZ3vrcXqrAbCz+TWH85GuYx2d6Y0NUDXLLQYHRAL3IhyPoXh4nBTAatQWGIQgR+PE2NqpG Aj3kjmuUljJdjcJBYhuGx0JjeNr7ZpTyupxYI9lduQNoUu6G6zNJhbDagPtan2K7Po6R+v4a0dp zo3pXXR1mt5iA4 X-Google-Smtp-Source: AGHT+IHIiBtoxiWK925hSxHAPVRWkl2NIGmNzv1AKWw3sm12bMPKmIWfnLEd+xUJrnD5Mi3qB7c38Q== X-Received: by 2002:a05:6122:2903:b0:55e:4f9a:103f with SMTP id 71dfb90a1353d-55e686ef2a0mr301597e0c.8.1764789578219; Wed, 03 Dec 2025 11:19:38 -0800 (PST) Received: from [192.168.100.70] ([2800:bf0:82:3d2:875c:6c76:e06b:3095]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-55cf4e1d56asm8121346e0c.4.2025.12.03.11.19.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Dec 2025 11:19:37 -0800 (PST) From: Kurt Borja Date: Wed, 03 Dec 2025 14:18:15 -0500 Subject: [PATCH RFC 1/6] iio: core: Match iio_device_claim_*() return semantics Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251203-lock-impr-v1-1-b4a1fd639423@gmail.com> References: <20251203-lock-impr-v1-0-b4a1fd639423@gmail.com> In-Reply-To: <20251203-lock-impr-v1-0-b4a1fd639423@gmail.com> To: Andy Shevchenko , Lars-Peter Clausen , Michael Hennerich , Jonathan Cameron , Benson Leung , Antoniu Miclaus , Gwendal Grignou , Shrikant Raskar , Per-Daniel Olsson Cc: David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Guenter Roeck , Jonathan Cameron , linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, chrome-platform@lists.linux.dev, Kurt Borja X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=5265; i=kuurtb@gmail.com; h=from:subject:message-id; bh=tgg4Jta3JWOQIYugusdzOpEO62AZmmgPzzdm9FOULNc=; b=owGbwMvMwCUmluBs8WX+lTTG02pJDJkGvS73xF/6/P11pIZ/Gcds7XOOH9v93S6dO/Wl7ua/Z d+kfkuadZSyMIhxMciKKbK0Jyz69igq763fgdD7MHNYmUCGMHBxCsBEyg8wMqw+ylatl7xJ7z5n i94J293rNv58vPFN6Msp7A19glMblDwYGbprGOt8U+1ObblbI60/ezffdIsGken/wzQP6l7/ox1 9iQMA X-Developer-Key: i=kuurtb@gmail.com; a=openpgp; fpr=54D3BE170AEF777983C3C63B57E3B6585920A69A In order to improve API consistency with conditional locks, use true/false return semantics in iio_device_claim_buffer_mode(). This also matches iio_device_claim_direct() return semantics. Signed-off-by: Kurt Borja --- drivers/iio/adc/ade9000.c | 2 +- drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c | 5 +---- drivers/iio/health/max30100.c | 2 +- drivers/iio/health/max30102.c | 2 +- drivers/iio/industrialio-core.c | 8 ++++---- drivers/iio/light/opt4060.c | 2 +- include/linux/iio/iio.h | 2 +- 7 files changed, 10 insertions(+), 13 deletions(-) diff --git a/drivers/iio/adc/ade9000.c b/drivers/iio/adc/ade9000.c index 2de8a718d62a..b345c4d1ef24 100644 --- a/drivers/iio/adc/ade9000.c +++ b/drivers/iio/adc/ade9000.c @@ -964,7 +964,7 @@ static irqreturn_t ade9000_dready_thread(int irq, void = *data) struct iio_dev *indio_dev =3D data; =20 /* Handle data ready interrupt from C4/EVENT/DREADY pin */ - if (!iio_device_claim_buffer_mode(indio_dev)) { + if (iio_device_claim_buffer_mode(indio_dev)) { ade9000_iio_push_buffer(indio_dev); iio_device_release_buffer_mode(indio_dev); } diff --git a/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c b/dr= ivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c index 9ac80e4b7d75..8ed4b2e410c8 100644 --- a/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c +++ b/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c @@ -188,11 +188,8 @@ int cros_ec_sensors_push_data(struct iio_dev *indio_de= v, /* * Ignore samples if the buffer is not set: it is needed if the ODR is * set but the buffer is not enabled yet. - * - * Note: iio_device_claim_buffer_mode() returns -EBUSY if the buffer - * is not enabled. */ - if (iio_device_claim_buffer_mode(indio_dev) < 0) + if (!iio_device_claim_buffer_mode(indio_dev)) return 0; =20 out =3D (s16 *)st->samples; diff --git a/drivers/iio/health/max30100.c b/drivers/iio/health/max30100.c index 3d441013893c..3f3680c4b42f 100644 --- a/drivers/iio/health/max30100.c +++ b/drivers/iio/health/max30100.c @@ -417,7 +417,7 @@ static int max30100_read_raw(struct iio_dev *indio_dev, * Temperature reading can only be acquired while engine * is running */ - if (iio_device_claim_buffer_mode(indio_dev)) { + if (!iio_device_claim_buffer_mode(indio_dev)) { /* * Replacing -EBUSY or other error code * returned by iio_device_claim_buffer_mode() diff --git a/drivers/iio/health/max30102.c b/drivers/iio/health/max30102.c index a48c0881a4c7..288c2f37a4a2 100644 --- a/drivers/iio/health/max30102.c +++ b/drivers/iio/health/max30102.c @@ -476,7 +476,7 @@ static int max30102_read_raw(struct iio_dev *indio_dev, * shutdown; leave shutdown briefly when buffer not running */ any_mode_retry: - if (iio_device_claim_buffer_mode(indio_dev)) { + if (!iio_device_claim_buffer_mode(indio_dev)) { /* * This one is a *bit* hacky. If we cannot claim buffer * mode, then try direct mode so that we make sure diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-cor= e.c index f69deefcfb6f..a10590ac4e17 100644 --- a/drivers/iio/industrialio-core.c +++ b/drivers/iio/industrialio-core.c @@ -2224,19 +2224,19 @@ EXPORT_SYMBOL_GPL(__iio_device_release_direct); * * Use with iio_device_release_buffer_mode(). * - * Returns: 0 on success, -EBUSY on failure. + * Returns: true on success, false on failure. */ -int iio_device_claim_buffer_mode(struct iio_dev *indio_dev) +bool iio_device_claim_buffer_mode(struct iio_dev *indio_dev) { struct iio_dev_opaque *iio_dev_opaque =3D to_iio_dev_opaque(indio_dev); =20 mutex_lock(&iio_dev_opaque->mlock); =20 if (iio_buffer_enabled(indio_dev)) - return 0; + return true; =20 mutex_unlock(&iio_dev_opaque->mlock); - return -EBUSY; + return false; } EXPORT_SYMBOL_GPL(iio_device_claim_buffer_mode); =20 diff --git a/drivers/iio/light/opt4060.c b/drivers/iio/light/opt4060.c index 981c704e7df5..8cb3fa38077e 100644 --- a/drivers/iio/light/opt4060.c +++ b/drivers/iio/light/opt4060.c @@ -304,7 +304,7 @@ static int opt4060_set_driver_state(struct iio_dev *ind= io_dev, struct opt4060_chip *chip =3D iio_priv(indio_dev); int ret =3D 0; any_mode_retry: - if (iio_device_claim_buffer_mode(indio_dev)) { + if (!iio_device_claim_buffer_mode(indio_dev)) { /* * This one is a *bit* hacky. If we cannot claim buffer mode, * then try direct mode so that we make sure things cannot diff --git a/include/linux/iio/iio.h b/include/linux/iio/iio.h index 872ebdf0dd77..bf7b7337ff1b 100644 --- a/include/linux/iio/iio.h +++ b/include/linux/iio/iio.h @@ -687,7 +687,7 @@ static inline void iio_device_release_direct(struct iio= _dev *indio_dev) __release(indio_dev); } =20 -int iio_device_claim_buffer_mode(struct iio_dev *indio_dev); +bool iio_device_claim_buffer_mode(struct iio_dev *indio_dev); void iio_device_release_buffer_mode(struct iio_dev *indio_dev); =20 extern const struct bus_type iio_bus_type; --=20 2.52.0 From nobody Sun Feb 8 07:18:33 2026 Received: from mail-vk1-f170.google.com (mail-vk1-f170.google.com [209.85.221.170]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D99BB332EA2 for ; Wed, 3 Dec 2025 19:19:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.170 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764789584; cv=none; b=K9NSE4sYwAq608qsvRsIMTYKseiK7jU5lhuOHoV3Z83j6CJBZVMsQmXKNUNXZzQII7474i4Ge/6Sm9jA/LZy0kUltRNisqHENn7fIEISWSFHdnYO70irVSyztU3AEsZroapk03fTduQAcer/fGddTx1sj3CetNWYWYnKI8EkftE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764789584; c=relaxed/simple; bh=tn/w/6QgqKcoYMi5mFWRyn+5w4UqZC+LPfsJulBKPJE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=DRwx9Aae/DHm1z5awdDjJ59KwXAcvhe3uGzV2MtgvaxN8Sj+xXoKWJPewnXlti7zfArHojjAQP95XO5Gp9ekFYEU2HLsOLsyofI5c6ONKUoGRAFM0Zq9IALqi7tNw7R0zjZuGiLVL85qESoJbq58aHNF/J0M6Z1fC6rkpY7C/N0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=ZgZa6yzt; arc=none smtp.client-ip=209.85.221.170 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ZgZa6yzt" Received: by mail-vk1-f170.google.com with SMTP id 71dfb90a1353d-55cb8cabb4bso33077e0c.1 for ; Wed, 03 Dec 2025 11:19:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1764789581; x=1765394381; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=ZihbaTpfvHiUVwOxJ/ox+Rr5XJYqm2BGakDi80e4wx4=; b=ZgZa6yzttFFQ1R7lLt1Iz0TINniPu19Rw4ptN3ZybLLoFzJ8t5h3CPKogv0vGQATPL +wxNROcKfS/YrNj+MjQmWosGt4DMIm/2LxIwZmjrxgac5Xrc9/5s2ANm8KbiEOokaWvo OjMV7nuI3j0UgTABKKgaU846xLD47RDncOPyMMxTgS+zAXPrl/nc/gOUKN8wiLn0r7u9 YiT1Gm9jjd8zAb5967HPKU2ttCghiedP+qpqxhAFZMyXULHrIDxE51AojInhfSwK+ngH 5Q/tB48391CrohxNsnh+EYXAdzlLN8U8pIlF1PTYlTe/Q5TrcTHuJlddBUVTvipZIYx6 rEWA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764789581; x=1765394381; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=ZihbaTpfvHiUVwOxJ/ox+Rr5XJYqm2BGakDi80e4wx4=; b=Vj0H9Wr65oLqxxvm/0ynxUGoViLMZ0oKonPAkOrLQ9zzZLGYs4fDVv7qIQ16/A/DiP fKxvYQZj5OTSTQMG86MFGaX9xLkMPQ5KQ2X2RcTG6JncynEMM1QoFNn9I6tP96bg3hEI T9cIQZZpdEGdHuaaLuISfeg5sMAAveBqFQk1ctMU+5ID3YNOvV5Y8q8Oyr6K/vgp0ccO bzZDyJ0mXxQ5so7NHiHBgJlbBa9nBf2eS2hyvDIP1YLsXJ82BzVyKxPXJLHD6cctKIPN kt3hoVaox3YExfNnHbgVF3yx2R6CJApIUzkMPw5eOxXipjQwdBql5Gfj7A1s+SLAFZLu VgBQ== X-Forwarded-Encrypted: i=1; AJvYcCWm2y917aeZcGuXDJyBFU96g3KDvqpvxDKJ4gX57emWDFKT+bR81d/lkLDWnh2fTNalIFpYZvBfZBz5CiE=@vger.kernel.org X-Gm-Message-State: AOJu0YxfeAl76V5YTIQk70b6MtrPQj7xnNBGw+DVewvCd0cZ/rHCWeEd c8uSpE2E4bI9+LZKVj9zPlLTNIcsQA4Xrm9ir8+tULrlQiWvrJqqCiQT X-Gm-Gg: ASbGncuOYk180yGO5DWV2mnSmhBritfv0pgwb4uXLLMnEXhEZ9SQasbb7iF/4lMnQJp 5EFeZT4OeFaCfXeCdcBkTLHpAPHnvIO1zetrm8r8e7xIrRWTpxd+u1cHGIyW7lpyfA+HXoWtuiu mC8l4VHCe0xKo6rTyUAkIBvKx2FUq2pwMFzsVOhkr5XOW7Z7j+HNxXCBE3gQCL4jIkWvJB2VZYB zKukQU96pNA3cXqyyCFsr+7kOLXAkaCxSk26qC6ujLlq2T4mkhg8QXaDod9BNP6vsurxCERYn7v pDPL5sOt31Saq/5xFoO93goWPNOm/lyGhAGqbks+452G91DRdAojrkhaAtiyZNAHp0IEzPv1Udz wnT1L9qfvd+HbOd8JOcXEHSJNNMEOJinvn2Ojs86vSfJLOT4Uqwv97yHBGKiQjaKRnyM0vyb6Ra K/yndiAclud5Yp X-Google-Smtp-Source: AGHT+IHIIOGfjLqow7vHKF+fitdQAN2rgcc4rulzr9Bq5lFoVmnhAntXIt64BljLbfx8DEKHjNIF9Q== X-Received: by 2002:a05:6122:1ac1:b0:559:6723:628c with SMTP id 71dfb90a1353d-55e5c027d2emr1188996e0c.16.1764789580613; Wed, 03 Dec 2025 11:19:40 -0800 (PST) Received: from [192.168.100.70] ([2800:bf0:82:3d2:875c:6c76:e06b:3095]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-55cf4e1d56asm8121346e0c.4.2025.12.03.11.19.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Dec 2025 11:19:40 -0800 (PST) From: Kurt Borja Date: Wed, 03 Dec 2025 14:18:16 -0500 Subject: [PATCH RFC 2/6] iio: core: Match iio_device_claim_*() naming Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251203-lock-impr-v1-2-b4a1fd639423@gmail.com> References: <20251203-lock-impr-v1-0-b4a1fd639423@gmail.com> In-Reply-To: <20251203-lock-impr-v1-0-b4a1fd639423@gmail.com> To: Andy Shevchenko , Lars-Peter Clausen , Michael Hennerich , Jonathan Cameron , Benson Leung , Antoniu Miclaus , Gwendal Grignou , Shrikant Raskar , Per-Daniel Olsson Cc: David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Guenter Roeck , Jonathan Cameron , linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, chrome-platform@lists.linux.dev, Kurt Borja X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=7511; i=kuurtb@gmail.com; h=from:subject:message-id; bh=tn/w/6QgqKcoYMi5mFWRyn+5w4UqZC+LPfsJulBKPJE=; b=owGbwMvMwCUmluBs8WX+lTTG02pJDJkGva6Hz57/WJLZVP9aeYu3rO/aOXpnOn+LrVme9k055 Kr0lF85HaUsDGJcDLJiiiztCYu+PYrKe+t3IPQ+zBxWJpAhDFycAjARuTSGv+LGV6NdWT5Ofbv1 zJFbUZfYUkTmr5p99yTH31OBu35/71Zl+F8tEe/6SOzs6hy75x5pe7Sj24pWq781UW93OtEcYFQ tyw4A X-Developer-Key: i=kuurtb@gmail.com; a=openpgp; fpr=54D3BE170AEF777983C3C63B57E3B6585920A69A Rename iio_device_claim_buffer_mode() -> iio_device_claim_buffer() to match iio_device_claim_direct(). Signed-off-by: Kurt Borja --- drivers/iio/adc/ade9000.c | 4 ++-- .../iio/common/cros_ec_sensors/cros_ec_sensors_core.c | 4 ++-- drivers/iio/health/max30100.c | 4 ++-- drivers/iio/health/max30102.c | 4 ++-- drivers/iio/industrialio-core.c | 16 ++++++++----= ---- drivers/iio/light/opt4060.c | 4 ++-- include/linux/iio/iio.h | 4 ++-- 7 files changed, 20 insertions(+), 20 deletions(-) diff --git a/drivers/iio/adc/ade9000.c b/drivers/iio/adc/ade9000.c index b345c4d1ef24..b0bc75999f40 100644 --- a/drivers/iio/adc/ade9000.c +++ b/drivers/iio/adc/ade9000.c @@ -964,9 +964,9 @@ static irqreturn_t ade9000_dready_thread(int irq, void = *data) struct iio_dev *indio_dev =3D data; =20 /* Handle data ready interrupt from C4/EVENT/DREADY pin */ - if (iio_device_claim_buffer_mode(indio_dev)) { + if (iio_device_claim_buffer(indio_dev)) { ade9000_iio_push_buffer(indio_dev); - iio_device_release_buffer_mode(indio_dev); + iio_device_release_buffer(indio_dev); } =20 return IRQ_HANDLED; diff --git a/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c b/dr= ivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c index 8ed4b2e410c8..b1c50139ea92 100644 --- a/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c +++ b/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c @@ -189,7 +189,7 @@ int cros_ec_sensors_push_data(struct iio_dev *indio_dev, * Ignore samples if the buffer is not set: it is needed if the ODR is * set but the buffer is not enabled yet. */ - if (!iio_device_claim_buffer_mode(indio_dev)) + if (!iio_device_claim_buffer(indio_dev)) return 0; =20 out =3D (s16 *)st->samples; @@ -206,7 +206,7 @@ int cros_ec_sensors_push_data(struct iio_dev *indio_dev, iio_push_to_buffers_with_timestamp(indio_dev, st->samples, timestamp + delta); =20 - iio_device_release_buffer_mode(indio_dev); + iio_device_release_buffer(indio_dev); return 0; } EXPORT_SYMBOL_GPL(cros_ec_sensors_push_data); diff --git a/drivers/iio/health/max30100.c b/drivers/iio/health/max30100.c index 3f3680c4b42f..6aefe9c4a8f6 100644 --- a/drivers/iio/health/max30100.c +++ b/drivers/iio/health/max30100.c @@ -417,7 +417,7 @@ static int max30100_read_raw(struct iio_dev *indio_dev, * Temperature reading can only be acquired while engine * is running */ - if (!iio_device_claim_buffer_mode(indio_dev)) { + if (!iio_device_claim_buffer(indio_dev)) { /* * Replacing -EBUSY or other error code * returned by iio_device_claim_buffer_mode() @@ -430,7 +430,7 @@ static int max30100_read_raw(struct iio_dev *indio_dev, if (!ret) ret =3D IIO_VAL_INT; =20 - iio_device_release_buffer_mode(indio_dev); + iio_device_release_buffer(indio_dev); } break; case IIO_CHAN_INFO_SCALE: diff --git a/drivers/iio/health/max30102.c b/drivers/iio/health/max30102.c index 288c2f37a4a2..678720102f2b 100644 --- a/drivers/iio/health/max30102.c +++ b/drivers/iio/health/max30102.c @@ -476,7 +476,7 @@ static int max30102_read_raw(struct iio_dev *indio_dev, * shutdown; leave shutdown briefly when buffer not running */ any_mode_retry: - if (!iio_device_claim_buffer_mode(indio_dev)) { + if (!iio_device_claim_buffer(indio_dev)) { /* * This one is a *bit* hacky. If we cannot claim buffer * mode, then try direct mode so that we make sure @@ -490,7 +490,7 @@ static int max30102_read_raw(struct iio_dev *indio_dev, iio_device_release_direct(indio_dev); } else { ret =3D max30102_get_temp(data, val, false); - iio_device_release_buffer_mode(indio_dev); + iio_device_release_buffer(indio_dev); } if (ret) return ret; diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-cor= e.c index a10590ac4e17..adf0142d0300 100644 --- a/drivers/iio/industrialio-core.c +++ b/drivers/iio/industrialio-core.c @@ -2216,17 +2216,17 @@ void __iio_device_release_direct(struct iio_dev *in= dio_dev) EXPORT_SYMBOL_GPL(__iio_device_release_direct); =20 /** - * iio_device_claim_buffer_mode - Keep device in buffer mode + * iio_device_claim_buffer - Keep device in buffer mode * @indio_dev: the iio_dev associated with the device * * If the device is in buffer mode it is guaranteed to stay * that way until iio_device_release_buffer_mode() is called. * - * Use with iio_device_release_buffer_mode(). + * Use with iio_device_release_buffer(). * * Returns: true on success, false on failure. */ -bool iio_device_claim_buffer_mode(struct iio_dev *indio_dev) +bool iio_device_claim_buffer(struct iio_dev *indio_dev) { struct iio_dev_opaque *iio_dev_opaque =3D to_iio_dev_opaque(indio_dev); =20 @@ -2238,22 +2238,22 @@ bool iio_device_claim_buffer_mode(struct iio_dev *i= ndio_dev) mutex_unlock(&iio_dev_opaque->mlock); return false; } -EXPORT_SYMBOL_GPL(iio_device_claim_buffer_mode); +EXPORT_SYMBOL_GPL(iio_device_claim_buffer); =20 /** - * iio_device_release_buffer_mode - releases claim on buffer mode + * iio_device_release_buffer - releases claim on buffer mode * @indio_dev: the iio_dev associated with the device * * Release the claim. Device is no longer guaranteed to stay * in buffer mode. * - * Use with iio_device_claim_buffer_mode(). + * Use with iio_device_claim_buffer(). */ -void iio_device_release_buffer_mode(struct iio_dev *indio_dev) +void iio_device_release_buffer(struct iio_dev *indio_dev) { mutex_unlock(&to_iio_dev_opaque(indio_dev)->mlock); } -EXPORT_SYMBOL_GPL(iio_device_release_buffer_mode); +EXPORT_SYMBOL_GPL(iio_device_release_buffer); =20 /** * iio_device_get_current_mode() - helper function providing read-only acc= ess to diff --git a/drivers/iio/light/opt4060.c b/drivers/iio/light/opt4060.c index 8cb3fa38077e..500899d7bd62 100644 --- a/drivers/iio/light/opt4060.c +++ b/drivers/iio/light/opt4060.c @@ -304,7 +304,7 @@ static int opt4060_set_driver_state(struct iio_dev *ind= io_dev, struct opt4060_chip *chip =3D iio_priv(indio_dev); int ret =3D 0; any_mode_retry: - if (!iio_device_claim_buffer_mode(indio_dev)) { + if (!iio_device_claim_buffer(indio_dev)) { /* * This one is a *bit* hacky. If we cannot claim buffer mode, * then try direct mode so that we make sure things cannot @@ -334,7 +334,7 @@ static int opt4060_set_driver_state(struct iio_dev *ind= io_dev, else ret =3D opt4060_set_state_common(chip, continuous_sampling, continuous_irq); - iio_device_release_buffer_mode(indio_dev); + iio_device_release_buffer(indio_dev); } return ret; } diff --git a/include/linux/iio/iio.h b/include/linux/iio/iio.h index bf7b7337ff1b..27da9af67c47 100644 --- a/include/linux/iio/iio.h +++ b/include/linux/iio/iio.h @@ -687,8 +687,8 @@ static inline void iio_device_release_direct(struct iio= _dev *indio_dev) __release(indio_dev); } =20 -bool iio_device_claim_buffer_mode(struct iio_dev *indio_dev); -void iio_device_release_buffer_mode(struct iio_dev *indio_dev); +bool iio_device_claim_buffer(struct iio_dev *indio_dev); +void iio_device_release_buffer(struct iio_dev *indio_dev); =20 extern const struct bus_type iio_bus_type; =20 --=20 2.52.0 From nobody Sun Feb 8 07:18:33 2026 Received: from mail-vk1-f173.google.com (mail-vk1-f173.google.com [209.85.221.173]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4BE51334695 for ; Wed, 3 Dec 2025 19:19:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764789586; cv=none; b=EsY6snVHEfhXpnzmCgkrgPTNH6zhjFhMgx4ILS83y1hAsxMNSP5PJDal9KEeFT3TUpY+BPgL4aUbLml48zhnMPAeXSQhcGISOjWitYUroosX0Y3cwcldJOhXKFp4ocU3EnteEJi5Z/F9Xir5QwfEDAwNG3cZABdnKSgcOQPm8zQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764789586; c=relaxed/simple; bh=thwTqOzNRZkyszvhlMWjaq5EQB1WFkW17ri6c2K6Wec=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=GreEYJ8fEmqJB4TDe7BU9J2iVircrjIpCpy1r5hT9C1L3YHNmC4DLfcm22v1IcFtmeNckp6t7jJqkZ8gs4p/UNLIcKYYknX+KvXtF+1UB5a+jft1x0Fyz2RNC3EccSI3U1ygXie/8C6WVYFnuxzwmp10KNcFrgkXVCxOcmUwYAg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=bthYmq7F; arc=none smtp.client-ip=209.85.221.173 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="bthYmq7F" Received: by mail-vk1-f173.google.com with SMTP id 71dfb90a1353d-55ae07cf627so36991e0c.1 for ; Wed, 03 Dec 2025 11:19:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1764789583; x=1765394383; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=t+56Cx3PPU0pMNBTK6bCqPThZjyXJm4dzoboS+vzlFA=; b=bthYmq7FVhnHVG4ik6RImhcJ5C6furMYBw7Li1gaQiIAIlwveVXk2F7WTlAzyMzF+z KQ7noQsNJKNpCaCi7eBgbVTp+pLY/teQfmoQGnGqljHvN/Z1P1E7/8omiHlscee8bqZn PYvySBDo/AEbqsfz/gMB3znGWVFcSIWmUP1wYNJGPyFvInB2org1S1umw525qCjS4sqM kRpPFZBrFaqsE5yDcCiEdPoxbE9KVf+TYpAMnj4XVvY4K86h3UGvS0I0w2QXw/Q1SWMO Nouoqa0344Lrf/dsLxz5Q2e9vK4lSiCZCpYcjamAv0NYGqUpHWFor3nSDlkQVvGuu07c o86Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764789583; x=1765394383; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=t+56Cx3PPU0pMNBTK6bCqPThZjyXJm4dzoboS+vzlFA=; b=Qt58KEIzlI6DXW4khPnghE/f5FOKesM+iAbqdsW5wjy3Rhc5olvpnWAnSXC0cpXXQ5 Ajg8tJaw6xOMpwRBbu5oEMgAlRxSh0eFqNZGgUXXooSNVe9W1hIRlSYL30ZN+ocXG+CX 9DAPiNHOoJ/x2kuNFZTgxWAr/fP3gKizIpaBpSqIEOJQv2mhMTXcLhKL0rkaZPCXo1U9 z4MKDjqjt6UZ5UhF30iFj0LrWIkPHibJ868MwdTkzln03EIvotFO6OK+YXiXUt92DceQ s/voA1CXR38de/wM0xuStxcE2nTpCi/U67wt6VgkLOsf2ib5Bhj75LXqHLMliHKDVzOa 1euQ== X-Forwarded-Encrypted: i=1; AJvYcCVO4t3wzcNMyKDML/F+BXj5Od7Pvmj0XhOtmF6GFLYhUaaaCTfFbUTYK5tNjuFlE6i1rwGjzs8smm9kIsU=@vger.kernel.org X-Gm-Message-State: AOJu0YxtArJESm9oL14pgIK44swgaoW0xTReubHNV0adXFGmI/i1yRRA yydgURiv3JBtXHa5R1zxkFy8WKBT0fv0Hqx7kM9ZdtaQ498xzRqnrHhU X-Gm-Gg: ASbGncsnf0pDugt+CIzk8Q+epUSY4pATOq63+VNZHujf5egErkBD19t1XpAoTwx2tfk 36snPfjnSL8XOPLxtGke7JIuVEq8HwDLkRaGtS+W3ioRZD/BvPmbHDKz+haMKqxVuXd7xVIO34b g5Sdw+lUyjJV1R0E4EDfYN0v26PH7gRYOGUVJayOCfEq3gXHKqInT3UGCd5vPtqSY/rAx59oshq XSOpJEZ43BqPnldN2GAhTpKQtVSUPswvsCCrWpgFposlmzHTFM87BY43PsGojPSq2olmO4HzxS7 2ztWbCxAdOK9JwPiQTL8KKie/fWtup5pt5B/PyehCDIhaVBMTMTkKfJgOFc4yINMg6qorHNfRGz 5p4a33Sea7naXIQjCwF0wzoWjLqd5+c5uc7Mr2k3ML31UxcJ3ZsFzA7+PZpjolsdvCBsYOmK0Ub DHhFLLvUyZgfMt X-Google-Smtp-Source: AGHT+IF9pu1NwTmjdGn8DFeer46ehoguwJV+JygngR29KNUZyGSjHLZ4RhNSUqDCM7LAEFNIdyXKyA== X-Received: by 2002:a05:6122:2a53:b0:55b:9c1c:85f2 with SMTP id 71dfb90a1353d-55e5beb9cf8mr1482400e0c.1.1764789582987; Wed, 03 Dec 2025 11:19:42 -0800 (PST) Received: from [192.168.100.70] ([2800:bf0:82:3d2:875c:6c76:e06b:3095]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-55cf4e1d56asm8121346e0c.4.2025.12.03.11.19.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Dec 2025 11:19:42 -0800 (PST) From: Kurt Borja Date: Wed, 03 Dec 2025 14:18:17 -0500 Subject: [PATCH RFC 3/6] iio: core: Add cleanup.h support for iio_device_claim_*() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251203-lock-impr-v1-3-b4a1fd639423@gmail.com> References: <20251203-lock-impr-v1-0-b4a1fd639423@gmail.com> In-Reply-To: <20251203-lock-impr-v1-0-b4a1fd639423@gmail.com> To: Andy Shevchenko , Lars-Peter Clausen , Michael Hennerich , Jonathan Cameron , Benson Leung , Antoniu Miclaus , Gwendal Grignou , Shrikant Raskar , Per-Daniel Olsson Cc: David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Guenter Roeck , Jonathan Cameron , linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, chrome-platform@lists.linux.dev, Kurt Borja X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=3155; i=kuurtb@gmail.com; h=from:subject:message-id; bh=thwTqOzNRZkyszvhlMWjaq5EQB1WFkW17ri6c2K6Wec=; b=owGbwMvMwCUmluBs8WX+lTTG02pJDJkGva4eG14sOFYksZvzvrHpBSYR7dYvj1f3lu2YMu9Fi /eyLGbbjlIWBjEuBlkxRZb2hEXfHkXlvfU7EHofZg4rE8gQBi5OAZjIgg6Gv/L3I60Fp6u0OM5J cxFWOHy/M+zN4uao9uhu/2YbjWctvQx/pXSPXko79vm9287F99e1PBbnfhT/oldqc/aSI7J7JK7 s5AIA X-Developer-Key: i=kuurtb@gmail.com; a=openpgp; fpr=54D3BE170AEF777983C3C63B57E3B6585920A69A Add guard() and ACQUIRE() support for iio_device_claim_*() lock. This involves exporting iio_device_{claim, release}() wrappers to define a general GUARD class, and then defining the _direct and _buffer conditional ones. Suggested-by: Andy Shevchenko Signed-off-by: Kurt Borja --- drivers/iio/industrialio-core.c | 12 ++++++++++++ include/linux/iio/iio.h | 20 ++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-cor= e.c index adf0142d0300..da090c993fe8 100644 --- a/drivers/iio/industrialio-core.c +++ b/drivers/iio/industrialio-core.c @@ -2171,6 +2171,18 @@ int __devm_iio_device_register(struct device *dev, s= truct iio_dev *indio_dev, } EXPORT_SYMBOL_GPL(__devm_iio_device_register); =20 +void __iio_device_claim(struct iio_dev *indio_dev) +{ + mutex_lock(&to_iio_dev_opaque(indio_dev)->mlock); +} +EXPORT_SYMBOL_GPL(__iio_device_claim); + +void __iio_device_release(struct iio_dev *indio_dev) +{ + mutex_unlock(&to_iio_dev_opaque(indio_dev)->mlock); +} +EXPORT_SYMBOL_GPL(__iio_device_release); + /** * __iio_device_claim_direct - Keep device in direct mode * @indio_dev: the iio_dev associated with the device diff --git a/include/linux/iio/iio.h b/include/linux/iio/iio.h index 27da9af67c47..472b13ec28d3 100644 --- a/include/linux/iio/iio.h +++ b/include/linux/iio/iio.h @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -661,9 +662,23 @@ void iio_device_unregister(struct iio_dev *indio_dev); int __devm_iio_device_register(struct device *dev, struct iio_dev *indio_d= ev, struct module *this_mod); int iio_push_event(struct iio_dev *indio_dev, u64 ev_code, s64 timestamp); +void __iio_device_claim(struct iio_dev *indio_dev); +void __iio_device_release(struct iio_dev *indio_dev); bool __iio_device_claim_direct(struct iio_dev *indio_dev); void __iio_device_release_direct(struct iio_dev *indio_dev); =20 +static inline void iio_device_claim(struct iio_dev *indio_dev) + __acquires(indio_dev) +{ + __iio_device_claim(indio_dev); +} + +static inline void iio_device_release(struct iio_dev *indio_dev) + __releases(indio_dev) +{ + __iio_device_release(indio_dev); +} + /* * Helper functions that allow claim and release of direct mode * in a fashion that doesn't generate many false positives from sparse. @@ -690,6 +705,11 @@ static inline void iio_device_release_direct(struct ii= o_dev *indio_dev) bool iio_device_claim_buffer(struct iio_dev *indio_dev); void iio_device_release_buffer(struct iio_dev *indio_dev); =20 +DEFINE_GUARD(iio_device_claim, struct iio_dev *, iio_device_claim(_T), + iio_device_release(_T)); +DEFINE_GUARD_COND(iio_device_claim, _buffer, iio_device_claim_buffer(_T)); +DEFINE_GUARD_COND(iio_device_claim, _direct, iio_device_claim_direct(_T)); + extern const struct bus_type iio_bus_type; =20 /** --=20 2.52.0 From nobody Sun Feb 8 07:18:33 2026 Received: from mail-vk1-f172.google.com (mail-vk1-f172.google.com [209.85.221.172]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A36F9324B26 for ; Wed, 3 Dec 2025 19:19:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764789588; cv=none; b=LzCWAmSozMhfnYVP8WTON7PArjtkeaWgY/zF2jLrB72U8YNhajQ3f1mekcCRbt/LGqRRgmcmi5DLAvZj5CdlcoaNpQhZP97+yrBEo9woscepOA0SiKYsGfeXI5az6QzaIi9odXsYsSDefKOLNc40F+L2vFfQRYsj6VUbWlZLdNo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764789588; c=relaxed/simple; bh=ucvYi/fPnZwmSrVe8f+rF/TKmEyH9GUn56ivSGU8fjY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=IlKBovAtwTrV/CwSIogi6/GSsxbV0nVGNsMTAqQJO2vSDdNwebMPSfickgz0bDm9Yn9r4pBcMJj3+XQS6AWhTAHe1VtPR0kIYMiKLV/vl+LXX9nyXvdHkEeeBqUuXw/pFtMB+QMvnteiVqmVLHqd5aM+85ycmvrgvAD8MHthxD0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=QXgVoxxw; arc=none smtp.client-ip=209.85.221.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="QXgVoxxw" Received: by mail-vk1-f172.google.com with SMTP id 71dfb90a1353d-55cb8cabb4bso33113e0c.1 for ; Wed, 03 Dec 2025 11:19:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1764789585; x=1765394385; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=dM4HPdX4dOmyhruohtElWZ1/XJUUUMG2tu2VLn0sUYA=; b=QXgVoxxwBSm2SkR8ss8oCCp+yd1uUZzkQ2OijWYOa3XOQjAytSOnUqB9bfSnM3vv/c 8IuTjbONN00l3pGZE97RJjALNssixfSU4lp5L15791HmEQts8ff0CwiuuKFgvDiKC+E3 e/v4aTcthaBRzY2xG10shIO+XYSaOVw9Fxv0msR6PPwuoZZKhT/YWesGOsryl/mL+ySE Pa1pFA4h3A3FBxKeNf3MnE36OK+LWQGNEj5bwl2vxPQ1IzXGpGUrK1E7BxQSgSjruxQM /dNQolA0oQzXSZLXp/oOfSUcj/Bd9Jsm0B5gMT9llADhZbS67RwOKgCUfq46JxfJ4Lbk /XSw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764789585; x=1765394385; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=dM4HPdX4dOmyhruohtElWZ1/XJUUUMG2tu2VLn0sUYA=; b=bHsz338l3Is5cwe2jK9Pmsvaw85eaxm6aQ9/2VXrJIus26c1olkcA8orJBiK85ITpf iQSOzK+uyZJ2Pu9bCOIi2QW/xsbZM9WXX/RQZ3mg8/9JsBIVoKzcC6kQa87GPoph6A8+ fsB0BASNj1HiYpDy0mzqBpcgibFVsOp7kJ2opjgWcEmItHeGKPNkvBKzWnaM31OQolFW QQrshhlKQX76ZDLj7Vxb2QUJbLnaDXipfPz4snEf6Aa7s2weVZApDS3XaCAUoBqiUenC x6Z6YtdnehCs69Bj4PSy3azi6fsJunOeEIUa8OGPJZGRm4t5bwE2BJN2iYU9rwsIcBjS rjPg== X-Forwarded-Encrypted: i=1; AJvYcCX0UIruSTB43yOWeEuipyFTjDt6X5TSsouz7X4wYgV8OFoahz1J2utvmgp45x2Cz5K5vkzVjpRoCkd66fk=@vger.kernel.org X-Gm-Message-State: AOJu0YxdWVsfARj2DrSEsGouIMT4DWumxmpSAZm/DnGTOB6mr04by1C6 Homt9aTJAcbyg2cqLNZx9SlCZ9cmkITWDkl22QZPJM1i5Zjzk9QWIHHd X-Gm-Gg: ASbGncvcfLDevwXCpNnX7pozYZojDsrqfsltFkw0Y/50MSMN8kKIc80nAST8nVTfODv 20mhFv4Ll8Dn1HwfQPpZZbDKv24h1I2JizmSL9nHFDuM+5W2Qz5CTti7FTAF44UJBKgF1aFYs9H l/qi+/YY8DD1r7NCngezPjmUK4tW213O3gDBzy/m8/eWWUAMPi9qBEGZr4f2jNo4I6XL+xfBxdZ 8AqVXuUhYnf8CfxuwhhQU8AaPdvxKeE5lOm5q1qFFctUKc1I6djE627Gg0MjjgWOcbbiK3ku1ZJ AzuNZK90pcQkJoyMGeOKqXmDtjPTO5cphUN7HMF9lu5tdG5pqOzbfen3m5rCD3z8QGYkSVf1W2c mov5jCULi/aHZta4gk8Q+mFn0jOIsy6/rp9kUyaM8rpPzvPfko88kKMZFM1AxEuKhKUmufNn0/C SH3GvygnqGN7VC X-Google-Smtp-Source: AGHT+IH7tjt+w/bV9ZILans2knWsfwOh1Xdu6i3tY896xYt5Nr83RI3AyyRrteVbVislKJyjm479Pg== X-Received: by 2002:a05:6122:7cb:b0:55b:305b:488d with SMTP id 71dfb90a1353d-55e5c057c49mr1365135e0c.19.1764789585458; Wed, 03 Dec 2025 11:19:45 -0800 (PST) Received: from [192.168.100.70] ([2800:bf0:82:3d2:875c:6c76:e06b:3095]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-55cf4e1d56asm8121346e0c.4.2025.12.03.11.19.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Dec 2025 11:19:45 -0800 (PST) From: Kurt Borja Date: Wed, 03 Dec 2025 14:18:18 -0500 Subject: [PATCH RFC 4/6] iio: light: vcnl4000: Use cleanup.h for IIO locks Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251203-lock-impr-v1-4-b4a1fd639423@gmail.com> References: <20251203-lock-impr-v1-0-b4a1fd639423@gmail.com> In-Reply-To: <20251203-lock-impr-v1-0-b4a1fd639423@gmail.com> To: Andy Shevchenko , Lars-Peter Clausen , Michael Hennerich , Jonathan Cameron , Benson Leung , Antoniu Miclaus , Gwendal Grignou , Shrikant Raskar , Per-Daniel Olsson Cc: David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Guenter Roeck , Jonathan Cameron , linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, chrome-platform@lists.linux.dev, Kurt Borja X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1735; i=kuurtb@gmail.com; h=from:subject:message-id; bh=ucvYi/fPnZwmSrVe8f+rF/TKmEyH9GUn56ivSGU8fjY=; b=owGbwMvMwCUmluBs8WX+lTTG02pJDJkGva72pnZq05I+sjGcXON864Fc5oxsptcTKzWTLX4f3 bdA5WNbRykLgxgXg6yYIkt7wqJvj6Ly3vodCL0PM4eVCWQIAxenAEyk4AAjw/MCfY695/fWnr/+ Zhv7NDHvSuMgW+PPl2b7Rfn4nKqMVWBkeCpgEyckpW5Wuj6dWyv2kPFtma+qqceYOn6eF6l/Ufi dCQA= X-Developer-Key: i=kuurtb@gmail.com; a=openpgp; fpr=54D3BE170AEF777983C3C63B57E3B6585920A69A Use ACQUIRE() for iio_device_claim_direct(). Signed-off-by: Kurt Borja --- drivers/iio/light/vcnl4000.c | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/drivers/iio/light/vcnl4000.c b/drivers/iio/light/vcnl4000.c index 4dbb2294a843..55e5060ce337 100644 --- a/drivers/iio/light/vcnl4000.c +++ b/drivers/iio/light/vcnl4000.c @@ -25,6 +25,7 @@ #include #include #include +#include =20 #include #include @@ -1148,36 +1149,27 @@ static int vcnl4010_write_raw(struct iio_dev *indio= _dev, struct iio_chan_spec const *chan, int val, int val2, long mask) { - int ret; struct vcnl4000_data *data =3D iio_priv(indio_dev); =20 - if (!iio_device_claim_direct(indio_dev)) + ACQUIRE(iio_device_claim_direct, busy)(indio_dev); + if (ACQUIRE_ERR(iio_device_claim_direct, &busy)) return -EBUSY; =20 /* Protect against event capture. */ - if (vcnl4010_is_in_periodic_mode(data)) { - ret =3D -EBUSY; - goto end; - } + if (vcnl4010_is_in_periodic_mode(data)) + return -EBUSY; =20 switch (mask) { case IIO_CHAN_INFO_SAMP_FREQ: switch (chan->type) { case IIO_PROXIMITY: - ret =3D vcnl4010_write_proxy_samp_freq(data, val, val2); - goto end; + return vcnl4010_write_proxy_samp_freq(data, val, val2); default: - ret =3D -EINVAL; - goto end; + return -EINVAL; } default: - ret =3D -EINVAL; - goto end; + return -EINVAL; } - -end: - iio_device_release_direct(indio_dev); - return ret; } =20 static int vcnl4010_read_event(struct iio_dev *indio_dev, --=20 2.52.0 From nobody Sun Feb 8 07:18:33 2026 Received: from mail-vk1-f173.google.com (mail-vk1-f173.google.com [209.85.221.173]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 323D633506A for ; Wed, 3 Dec 2025 19:19:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764789591; cv=none; b=nraEFR7KTUgOqxsictjBywT6ze73OzbfDBDxDX6HXCuoC2FtzwW+CxRbaIh5TF6X6FqVgDRFCwhJZ9JquRBfq9GgiTg/JNKNmJsTAzmd6RlifGW2REFF/48GxelXMYYdJP+094FNMwdu2Zh2ZjkLugMaWsoFi5C7Qp7eQkxm9gI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764789591; c=relaxed/simple; bh=5LWmoRG7H6ScrVOX1yqApC95YUrJNY9xx2uup5Dpa6M=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=E7Sf9fGcbuLvuEJ2zhzeqfvKyhSsQzecluevNqVj1XtWBlzivZFZn8J9pVceBVeZ4F2AaTG1nlwerAFEtrasduB+6ynCp0rjvtNNGYfnXGFO5gdRdhKAthKFz1UVJAqUFiR6vUWW6CH6gAV3/CY10aO364733Qzdnot1BCJuD0I= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=WcIiVkSL; arc=none smtp.client-ip=209.85.221.173 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="WcIiVkSL" Received: by mail-vk1-f173.google.com with SMTP id 71dfb90a1353d-55b302b8369so75297e0c.0 for ; Wed, 03 Dec 2025 11:19:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1764789588; x=1765394388; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=KCMSC4ZdX+c86qaeQmzzAFf+CmeFbnP3hRbbGI3Ok1g=; b=WcIiVkSL4S908496iQrupJxqJj8iVW96rOIzel2r9i+tdZojAlz6+5arSyC27SWRnQ 1rrplHxwwTUIl7EPd51Y3eRQTcfG9C/vgKaoJ5kjtUlNr6gZndIJnNQAMf0wvau7yHnL wl2aYKuWjAKHKoWKTMiz7x84wid12PyncA9ZsQU+62q8Uxywe2BOWDlud5RMBC1DwkEB 9ySsdY5BP52j2lKk7tR4KbOJRBd6GztvWMzD3kVuqC2wydqjlJQMgwydQx0xBozbrwoC tSMDvo/Jh6l2PvdIyZpgeO6fDROmyIEEq4qp4FLc1JGbRDogpb9UDwlPmEi7+q4SBx7l EYTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764789588; x=1765394388; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=KCMSC4ZdX+c86qaeQmzzAFf+CmeFbnP3hRbbGI3Ok1g=; b=mHqZ7Y+mUehO0S8k69NHJEIEirevCTfeV5KytQhe/gqRmpkZLkwoyMlb2DtLHOP7Po In05tykVEfa0IEl+E/mzcYmQaf3/Fm01WmqVCfQQDtvytGEb9wxYVNDXrxcWYyRfp+rJ 3bHLkLnuR1U/YukYtMWC8qax0rjtE0ltqkAkPoFiCPrFc3+YOuuGJsWTmB/8DYoghN17 Dnh6lWCCaZRuE15A8025Iv1RSW/eNYhOaQu8wKcyvidveRGFLPMaW+rVdnPe0/h6IWb/ ZXP5WD/gDPyrH4UnrJrK95g/U6DWilTiAPvu2uDp1h+Mbom+vrLt4dAbK4UwQwRygCAW Zt7g== X-Forwarded-Encrypted: i=1; AJvYcCUmxUyCBqky2pSVdFg73QHKeLP6t7S/opPPWHGbanDyE07yyXesM2wC/Q/UaCMyC6704CBTrVtRn5TbxEk=@vger.kernel.org X-Gm-Message-State: AOJu0YySc+tcm6boMu7X/F6PJADmRt9Mjf1P4p4vGFvsbywDPdFds07o HPfSap5rYnll+6Ib7XEIv8I42NL2bKgBCxxsgeXSpVkktV1dKzSBwK0aSpqfkw== X-Gm-Gg: ASbGncvLzzXzZ5N/vvg7MstqcdDhjlVwXzjNbK0E3I5qam+OGVNJYYgFWPjdgfh5yzy e6bgZF+fmbkadW/AX/LNJ9LqtACUTDnnZ6lO363QUDtNO7MEmE6eyZDo5bSc0f6r2XwEfynOvHk OcAI+SoZptGYa8VMF22b7ETjL2F8WCF2/7GJQo4HXkeo41DiREXazHtHGkgm3gzJx8BmltvTnUC 9eMp+Iof2+Egvz8JFFJVCFgbITauIZG7or6Sg/zL9rQ20AXvJ2soJ3v8oP+ruKXzQEoDW0LjHSN 7ZXt+zCksv2cgvpYjgmfaYj27QQpxSMXqnTeGbewIYvhnHQUFTxRv69j9E6nfS7R905VE0J11h8 DavK4MfWbxKWx3Mo/r5OaR03OsTszKuIS8RWk6ihgbMzhC3B43DVJuEMsG8GDsO0IP0wcbdoWwa ivNvEqAT4SRTG7 X-Google-Smtp-Source: AGHT+IFk8XZAOaH77q9ncYwj5ivBaMaGN004Yn3MrPEPkmNwBZ4+3rBREF9IL/COlAv/4FynqjfJ4w== X-Received: by 2002:a05:6122:8b1b:b0:55b:305b:51b4 with SMTP id 71dfb90a1353d-55e69feb72dmr3679e0c.17.1764789587828; Wed, 03 Dec 2025 11:19:47 -0800 (PST) Received: from [192.168.100.70] ([2800:bf0:82:3d2:875c:6c76:e06b:3095]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-55cf4e1d56asm8121346e0c.4.2025.12.03.11.19.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Dec 2025 11:19:47 -0800 (PST) From: Kurt Borja Date: Wed, 03 Dec 2025 14:18:19 -0500 Subject: [PATCH RFC 5/6] iio: health: max30102: Use cleanup.h for IIO locks Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251203-lock-impr-v1-5-b4a1fd639423@gmail.com> References: <20251203-lock-impr-v1-0-b4a1fd639423@gmail.com> In-Reply-To: <20251203-lock-impr-v1-0-b4a1fd639423@gmail.com> To: Andy Shevchenko , Lars-Peter Clausen , Michael Hennerich , Jonathan Cameron , Benson Leung , Antoniu Miclaus , Gwendal Grignou , Shrikant Raskar , Per-Daniel Olsson Cc: David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Guenter Roeck , Jonathan Cameron , linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, chrome-platform@lists.linux.dev, Kurt Borja X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1956; i=kuurtb@gmail.com; h=from:subject:message-id; bh=5LWmoRG7H6ScrVOX1yqApC95YUrJNY9xx2uup5Dpa6M=; b=owGbwMvMwCUmluBs8WX+lTTG02pJDJkGva7viiOPzfhv71ypcyx8xVbh/zuu3q9R7Gx8te9Sk 3/zjhdzOkpZGMS4GGTFFFnaExZ9exSV99bvQOh9mDmsTCBDGLg4BWAiJewM/71M0p6vjLdcv4vt V5Z7qcrq5dobGUtLuyPP/9wQ8NdD3pThn2XZnclxvY8j6pYseu6w/wXnqoCKtXlL2hxNBQV3H5e rYwQA X-Developer-Key: i=kuurtb@gmail.com; a=openpgp; fpr=54D3BE170AEF777983C3C63B57E3B6585920A69A Simplify and drop "hacky" busy-waiting code in max30102_read_raw() by using scoped_guard(). Signed-off-by: Kurt Borja --- drivers/iio/health/max30102.c | 24 +++++++----------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/drivers/iio/health/max30102.c b/drivers/iio/health/max30102.c index 678720102f2b..c642842cb5fb 100644 --- a/drivers/iio/health/max30102.c +++ b/drivers/iio/health/max30102.c @@ -24,6 +24,7 @@ #include #include #include +#include =20 #define MAX30102_DRV_NAME "max30102" #define MAX30102_PART_NUMBER 0x15 @@ -468,6 +469,7 @@ static int max30102_read_raw(struct iio_dev *indio_dev, { struct max30102_data *data =3D iio_priv(indio_dev); int ret =3D -EINVAL; + bool direct_en; =20 switch (mask) { case IIO_CHAN_INFO_RAW: @@ -475,25 +477,13 @@ static int max30102_read_raw(struct iio_dev *indio_de= v, * Temperature reading can only be acquired when not in * shutdown; leave shutdown briefly when buffer not running */ -any_mode_retry: - if (!iio_device_claim_buffer(indio_dev)) { - /* - * This one is a *bit* hacky. If we cannot claim buffer - * mode, then try direct mode so that we make sure - * things cannot concurrently change. And we just keep - * trying until we get one of the modes... - */ - if (!iio_device_claim_direct(indio_dev)) - goto any_mode_retry; + scoped_guard(iio_device_claim, indio_dev) { + direct_en =3D !iio_buffer_enabled(indio_dev); =20 - ret =3D max30102_get_temp(data, val, true); - iio_device_release_direct(indio_dev); - } else { - ret =3D max30102_get_temp(data, val, false); - iio_device_release_buffer(indio_dev); + ret =3D max30102_get_temp(data, val, direct_en); + if (ret) + return ret; } - if (ret) - return ret; =20 ret =3D IIO_VAL_INT; break; --=20 2.52.0 From nobody Sun Feb 8 07:18:33 2026 Received: from mail-vk1-f178.google.com (mail-vk1-f178.google.com [209.85.221.178]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9BB5133509B for ; Wed, 3 Dec 2025 19:19:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764789594; cv=none; b=OFmOgJ/7ET656kKRfjBsQ+euMgOHpt1cx+hy1hxT+iRk2FHaWz4QtvR8p1oNmYotzkCf524Do0PEQKgONK8WxjtvllK4Ewh6BO2PPW/S7cEL6nr9Vf9krjb9lAPLfWVDM+UQ+gpDK2rID2I567TCpVF8co/gNrOOk3WzuAqkRso= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764789594; c=relaxed/simple; bh=lqcYYe7AZ30b7MzwBteS2grXWL8UwmcL6GouD48/H9o=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=B0M6R6SIvEdrY8ErfjS3ltw6emIvC56PihiQ2Sg4TCTiS4030012OykHJJC8V1EDeMFpR0QZDYVHkQovjj1RD5Qld+jr470Xr+VUhwuEwtP1QthCpdL/5/JJqF/w02HsgZgjsWJaDBIpCRVw4BRDcHrIgAnTZHRD+el7RyDdqj4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=aJxZg9eW; arc=none smtp.client-ip=209.85.221.178 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="aJxZg9eW" Received: by mail-vk1-f178.google.com with SMTP id 71dfb90a1353d-5599b119b4aso34671e0c.0 for ; Wed, 03 Dec 2025 11:19:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1764789590; x=1765394390; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=AvhotR7uliWVKseskW3+3ecpMP3/rDb6UoeROr3/zNU=; b=aJxZg9eWA2S1SQZt7D1gPSDIeCb2g4yC5sJHhSo/UpkA2F1ZIgPm9bi9otjIPOEtUM UCFLqMVQrmU3b4uHJoa4bCDu3+7T4sDffdttaON/zqsaQIZLgNN0Z7S6bevJVR9NnMX1 lJxHX+3NJPUaF/ydca2FlzxPcuzUDS/k1IyHFsSxTEWVNfQ6srXLRSMimybRmPFPPedi v/Pt9yIZcd46bKaXANmxZ07EKOSfklQeu/YoIN5hRkS07jy4Q9iyH2bTUIr/yrONV2hu 3jFH1dX3WIVRzWOy9yin3y++4Biul33Jx9wOtzdxWAQ5tqlu3h8PQdsJ773nzuCyWHK3 92Xg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764789590; x=1765394390; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=AvhotR7uliWVKseskW3+3ecpMP3/rDb6UoeROr3/zNU=; b=xAhbmgbchvMOc3oygHpfm3ZZOpI156N+8pl4yQNDQcUEas0rCygvhWSfzhYuZLEymd qKx9E13rMdAQMaWCG7C8CQGr0TSxF6XY20Zc/jzWq3sjbu2ABguOFMwUKvq5uhqG2pVv h9WMzptZjN/x3/Elg1pUG4yLrKIrEgNGIPYUAdW1cYPKbGzjbbpYheRoqOXgQsX4gosw xtarRz3vFDaVyumoTT8VHViHrOrGuxHLYRtwsBsHQyUIJiJwHilqJAEYQVgZlc3495A9 JwzLZOl2rwWpOJ8xZPShE55V+/BSQkNcqBvRcqFDkZbiYUWnXi9kbLqvLbO+Sd3Gq3gG AybQ== X-Forwarded-Encrypted: i=1; AJvYcCUdM7s1WGYSbAgBFWdlPT0lbBTRwlDmH9l0n1RepdS/v0wCU/JXQNzn1fLKc/qhE2I5Go6S24FWR9c0m9g=@vger.kernel.org X-Gm-Message-State: AOJu0Yyq+4aLok9ydx5tCqBWw5VdOVmUOFJSpmcJ/YeAjvk65mYPVzel ozC8pXRP6RVS10llvqHX/D5+INafxJTlCYqYFTja6pKWip089RMgJ8d9 X-Gm-Gg: ASbGnctkuvp67ZV3NEGV6T10jmUA8VI6ijuxNL9LUuRvtOsd7ppthMXiwx+ag5U8Ewz nlQv0jt8q3C6wfjEZYTYwzTDUgwsV6iGdYZJHwQv/6rg3EAkM6xZXLs63M1Iq1TgKdaWjRlSiAo ZpU8/Lz5NapQcaQWeKl7IrM05T910n0XmIV1qKmHWgLJdKyJGMOFp8ovtJdMnsRpTBvJBHmTl2G G4eWF4swl28iLoWWleiWPHUCvNQW1nnduW+sMeLbSsDDkLaJK1D4jUC3sA3eN5wO3GbkkHrt1ok KODr2yoA1zHk2a8bjd6Te7HMt6xb/WXQn28AlQuSWEhjXLeqkHJFtfV/3hN8fc6ok3NOPJ+/K3p 1c2b0955zfz67UbVaHIusp/sEoshXmuUNfYUNBcTCNFJpP/wuqpFlDLf1qoj9DWkWHq9bP7UlmE SO/OOhl+GSPHIvr3z4CfJb4rg= X-Google-Smtp-Source: AGHT+IEiyV/ibtFwtwc2oJeqPoNV2V0Meff0ZG7V5RD5OILO+sXnR+xZAqsZFXXrkZ4mMtkHgjGHvw== X-Received: by 2002:a05:6122:17a6:b0:55b:305b:4e3a with SMTP id 71dfb90a1353d-55e5bff301emr1398630e0c.21.1764789590234; Wed, 03 Dec 2025 11:19:50 -0800 (PST) Received: from [192.168.100.70] ([2800:bf0:82:3d2:875c:6c76:e06b:3095]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-55cf4e1d56asm8121346e0c.4.2025.12.03.11.19.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Dec 2025 11:19:49 -0800 (PST) From: Kurt Borja Date: Wed, 03 Dec 2025 14:18:20 -0500 Subject: [PATCH RFC 6/6] iio: light: opt4060: Use cleanup.h for IIO locks Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251203-lock-impr-v1-6-b4a1fd639423@gmail.com> References: <20251203-lock-impr-v1-0-b4a1fd639423@gmail.com> In-Reply-To: <20251203-lock-impr-v1-0-b4a1fd639423@gmail.com> To: Andy Shevchenko , Lars-Peter Clausen , Michael Hennerich , Jonathan Cameron , Benson Leung , Antoniu Miclaus , Gwendal Grignou , Shrikant Raskar , Per-Daniel Olsson Cc: David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Guenter Roeck , Jonathan Cameron , linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, chrome-platform@lists.linux.dev, Kurt Borja X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2746; i=kuurtb@gmail.com; h=from:subject:message-id; bh=lqcYYe7AZ30b7MzwBteS2grXWL8UwmcL6GouD48/H9o=; b=owGbwMvMwCUmluBs8WX+lTTG02pJDJkGva7H2y5++/DiqlrvmoU/2pwcO1/tmTl1a/H1xgq1r nmsyxnfd5SyMIhxMciKKbK0Jyz69igq763fgdD7MHNYmUCGMHBxCsBEAicwMqzpepWxZ0FO7O6M 1W4nDZQefwxWlVVPiM5oE/nb4P0v7DTDPx21L9OXFed6Llo51e3Tmz+HDi3I+rpsjnpRm9T6312 fPrEAAA== X-Developer-Key: i=kuurtb@gmail.com; a=openpgp; fpr=54D3BE170AEF777983C3C63B57E3B6585920A69A Simplify and drop "hacky" busy-waiting code in opt4060_set_driver_state() by using guard(). Signed-off-by: Kurt Borja --- drivers/iio/light/opt4060.c | 52 +++++++++++++++--------------------------= ---- 1 file changed, 17 insertions(+), 35 deletions(-) diff --git a/drivers/iio/light/opt4060.c b/drivers/iio/light/opt4060.c index 500899d7bd62..903963606143 100644 --- a/drivers/iio/light/opt4060.c +++ b/drivers/iio/light/opt4060.c @@ -22,6 +22,7 @@ #include #include #include +#include =20 /* OPT4060 register set */ #define OPT4060_RED_MSB 0x00 @@ -302,41 +303,22 @@ static int opt4060_set_driver_state(struct iio_dev *i= ndio_dev, bool continuous_irq) { struct opt4060_chip *chip =3D iio_priv(indio_dev); - int ret =3D 0; -any_mode_retry: - if (!iio_device_claim_buffer(indio_dev)) { - /* - * This one is a *bit* hacky. If we cannot claim buffer mode, - * then try direct mode so that we make sure things cannot - * concurrently change. And we just keep trying until we get one - * of the modes... - */ - if (!iio_device_claim_direct(indio_dev)) - goto any_mode_retry; - /* - * This path means that we managed to claim direct mode. In - * this case the buffer isn't enabled and it's okay to leave - * continuous mode for sampling and/or irq. - */ - ret =3D opt4060_set_state_common(chip, continuous_sampling, - continuous_irq); - iio_device_release_direct(indio_dev); - return ret; - } else { - /* - * This path means that we managed to claim buffer mode. In - * this case the buffer is enabled and irq and sampling must go - * to or remain continuous, but only if the trigger is from this - * device. - */ - if (!iio_trigger_validate_own_device(indio_dev->trig, indio_dev)) - ret =3D opt4060_set_state_common(chip, true, true); - else - ret =3D opt4060_set_state_common(chip, continuous_sampling, - continuous_irq); - iio_device_release_buffer(indio_dev); - } - return ret; + + guard(iio_device_claim)(indio_dev); + + /* + * If we manage to claim buffer mode and we are using our own trigger, + * IRQ and sampling must go to or remain continuous. + */ + if (iio_buffer_enabled(indio_dev) && iio_trigger_using_own(indio_dev)) + return opt4060_set_state_common(chip, true, true); + + /* + * This path means that we managed to claim direct mode. In this case + * the buffer isn't enabled and it's okay to leave continuous mode for + * sampling and/or irq. + */ + return opt4060_set_state_common(chip, continuous_sampling, continuous_irq= ); } =20 /* --=20 2.52.0