From nobody Sat Sep 26 08:38:28 2026 Received: from mail-pf1-f172.google.com (mail-pf1-f172.google.com [209.85.210.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 EECB03803E3 for ; Thu, 3 Sep 2026 04:54:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788411260; cv=none; b=DgJFnOk6/L5fjIWUAPmBV0/PhoKbnqyy6dqijbBLcA8YK/zhGlZaqbHxoh8HJVW4V9uysa+i0Pfb+0wKZRT/3EvLW6+27UJRrUCvamNT8yvI8CnHiuANxu0MtdkMC02evCx6rByne3xKXKhvrDHCM//S/Fxf/GxztRD1xegxj2A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788411260; c=relaxed/simple; bh=JJUn9eSW6iCzsykKhT5PAveJpLlBYOP7vUZqlNZQIOw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=sG4nznDxPlJWSoQf7H1WR7vHCOv9GCT5MMNBtl6ENVsPEmvFn9F1Pp9InEhKAQf8StM0CuJtUZ4b629D2XEoZKvPkHTn9e2qftntt3HSzWAPB2fgA3Ck0836bdT9paJu3kFLJbmv0sf+s+mvshecWhe1pRBLv1X2nYrZI+nCnlY= 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=ly8WPjam; arc=none smtp.client-ip=209.85.210.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="ly8WPjam" Received: by mail-pf1-f172.google.com with SMTP id d2e1a72fcca58-853e2610bb4so431713b3a.0 for ; Wed, 02 Sep 2026 21:54:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1788411258; x=1789016058; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=ZqB8DCFwpgRgLRXMAdMRzB8MMQwfmI8qgccWP71X6U4=; b=ly8WPjameQbO9OcnfZROAzyUh460e1HmrqM6afXpx5teXp0GmZN8Cuuk5u8qraFy4f 1WZykdgTqVD37cC8yuq4+46y20CqbFmF47KUSGjyUYcyuaRmJOQ35SFTFr50I52Q4Lc8 IpMZm4mubputu+stFVcNE6EkT8GKpqb5SE2fLjRPOwBRmSiCrsa1xtdY8mCWYmZ1kTbu 20RtetdoomJgcFBfZZM4mjEhfGR+mMmavvVYBtTEQSbkwxEZ6XZSbkC23SYm0sHyhFvc isNe9souf3PQlHnADT7QzUMPoivkzbwkQ9bynCvGRZZPOPE/02oQAfzKFkg6N9iCKenw 0uXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788411258; x=1789016058; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=ZqB8DCFwpgRgLRXMAdMRzB8MMQwfmI8qgccWP71X6U4=; b=nraolzGWmSYSrnJ/jHfZr+0VlhjuBTUPMe3evLD2lbUetJuab8z6/dRz48WD/+zSWO zQqqG4yVsbiOcn2GzFHAkehw6SWso9u2ayO8qQYaG3eQDVeJgwBrGI+CzzQj8I+ow250 uCGo2GDx6urEZCWN9jfYlr6ffT0bAecjxoZ0KBgXtUOnaF2yXh/a9iHTY4kRsGR1mPfD JhjYmyAbr4VqUmpriHez0WPhhqshU9/Qhjs40U8/iSSj4UE5wwCVjeujuvqgzqF9wGEl x+2p8TB5uapFkbWn2oKZ7tACKf5a6XYlqUjQ5BOVjfCUGM0u8FCQw6NnQL57UWuxLqQM yVcg== X-Forwarded-Encrypted: i=1; AKwUvByEkrYsReTJj88PdpdSah5BVq1zRXzfL2MZ6zNKJsVcIKvWXjLMGrNURMqM/4jR1MU0+VAZ3OaFJda+X/4=@vger.kernel.org X-Gm-Message-State: AFuF++k1XSNe5+RNQpoAuIGdu4eJRaGps3435x9e9upPyUK9iIeggWxz rcN+TqvwMZg2JWXi+9X/mQuH/ClVPa6cydyUPGoBXHrEgAgxBthPPVR3 X-Gm-Gg: AYBFou0MYrIJDkdUxxzkYfCIYMZXUUP2mxRKNAwsT/1H+CO4xqUGZMRftmpDPDP4FL1 dcf0aKlQUNtDwHjSDesFh/OWLDVuyg5/baL41zdOzRPvc+TIjvur/GwXsaugg7hMAv58e0oZHqb 7gp1IOPKNZCsTpyRph3BXL+y5ar2TZkkzL0+840W57hO7xNH5jF1wfneNRPdQaJORps93sV6zzS 4Qevl8ikeTKO/y8l3zERoRAappQFHnswx6RVbKHwpbXK1h6SIWbbX5Cvh/B9TSzpD3aKq91STGn O9EcaCzbI/ag+UR8J8SWgkMS2S7Ob0rFZKOsmOS24zAoFxah60N/i+PA5OZti0637iXb9JvEkNu EMTbVkN7B4NRP7KrYd860mfn1Btuq9cdo2e7ukuNyernuU7VB2+uiK04iSZkB7NuEzBiPevrkOX uhdRKRA7Xbyqne6wrGp2vNWHX7wj8wvgBkly7XyTpyyCxu19Bt5pwDQImJoWK3V1RvPQ== X-Received: by 2002:a17:90b:2c87:b0:398:ceef:edde with SMTP id 98e67ed59e1d1-39b133026e6mr1194339a91.15.1788411258243; Wed, 02 Sep 2026 21:54:18 -0700 (PDT) Received: from [192.168.20.42] ([115.70.157.242]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-39ae8f1cf6dsm2300801a91.3.2026.09.02.21.54.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Sep 2026 21:54:17 -0700 (PDT) From: Tsz Shan Chan X-Google-Original-From: Tsz Shan Chan Date: Thu, 03 Sep 2026 14:53:46 +1000 Subject: [PATCH v3 1/5] iio: light: vcnl4000: use correct channel array size 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: <20260903-vcnl4000-v3-1-5e69c2e715a8@jacques.com.au> References: <20260903-vcnl4000-v3-0-5e69c2e715a8@jacques.com.au> In-Reply-To: <20260903-vcnl4000-v3-0-5e69c2e715a8@jacques.com.au> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko Cc: linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Tsz Shan Chan X-Mailer: b4 0.14.3 vcnl4200_spec sets .channel to vcnl4040_channels but .num_channels uses ARRAY_SIZE(vcnl4000_channels). Use ARRAY_SIZE(vcnl4040_channels) so num_channels matches .channels. Both arrays have the same size. No behaviour change. Signed-off-by: Tsz Shan Chan Reviewed-by: Andy Shevchenko --- drivers/iio/light/vcnl4000.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/iio/light/vcnl4000.c b/drivers/iio/light/vcnl4000.c index 336468d59ea7..cf55fe6afcba 100644 --- a/drivers/iio/light/vcnl4000.c +++ b/drivers/iio/light/vcnl4000.c @@ -1864,7 +1864,7 @@ static const struct vcnl4000_chip_spec vcnl4200_spec = =3D { .measure_proximity =3D vcnl4200_measure_proximity, .set_power_state =3D vcnl4200_set_power_state, .channels =3D vcnl4040_channels, - .num_channels =3D ARRAY_SIZE(vcnl4000_channels), + .num_channels =3D ARRAY_SIZE(vcnl4040_channels), .info =3D &vcnl4040_info, .irq_thread =3D vcnl4040_irq_thread, .int_reg =3D VCNL4200_INT_FLAGS, --=20 2.55.0 From nobody Sat Sep 26 08:38:28 2026 Received: from mail-pg1-f176.google.com (mail-pg1-f176.google.com [209.85.215.176]) (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 8B9CE38838B for ; Thu, 3 Sep 2026 04:54:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.176 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788411264; cv=none; b=pElfIELUBXvyMJQMsE6pJyM2HTYq48I0yxxJ3sIl1EKCa3p2b+t3tKfyI+aKitpfugNcsjJqHVNBaPLii9TtaHViZDKBuy7cx39c6vvCDvY8pKDoO1dOXzP8QBZORePt6Xkc1MGkAp14FFQ+3cGAunK09IopiYRqRuGhJ2G3lBo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788411264; c=relaxed/simple; bh=eMG8f/UZxgC4RbM16xCsfyE7Jgui1peQP0C6f3+v8p4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=OH8cymI05TUwGa0phmdNiJK+4hYLJgyU/zqBDyc3QpOvhnMWMuA5WUpIqHxe1ex1U8dTtfOzbvyQz4StEivuf4kQEf4p/PSiNBhVV10RDnR8vbjufA5laRDM5BMgpU6UljdI0Jnj2IyRIqWjRLqoHuB5f4m0rlEVuFAG0cipqaM= 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=CiUt6T2b; arc=none smtp.client-ip=209.85.215.176 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="CiUt6T2b" Received: by mail-pg1-f176.google.com with SMTP id 41be03b00d2f7-cbe827e3cb4so2303219a12.3 for ; Wed, 02 Sep 2026 21:54:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1788411262; x=1789016062; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=xjkh/gkNj2lHRKcC2314o/TZsS+moGdJRwGE/ISLp/s=; b=CiUt6T2bKcZa6DuwotkYgblsABrig6Oca+ZiHtHwYwJjWMpdl4IWPuIrDjQt+GCNF6 k48N++cTRW4IMyAa99789f57mvjEiuVJF3sLgE9Rgj9ONea8mHNMcvl19tGOaQHkbx1r 0SEgJ2r0bV4LyUWK41jZtw92LsBbwnxZ61LCfQWVdv8tJ4F15x6izzoxwRoRwyw6RI4i iN4Q/U93T5Yi3RmvRlDwl7zFg4o+vy7Z46XUspd+lBHWElu+MTeDNZuRErxXelvEZ46W vDQbgIMHulEPTwK6Yzt4Sk+X46LaoDK3BodMLPTRYJTDlbb+GtA20I6assgmTWKk3tOA +ARg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788411262; x=1789016062; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=xjkh/gkNj2lHRKcC2314o/TZsS+moGdJRwGE/ISLp/s=; b=qapIUhW8PB8injSc7pu9WLC+oMrdIqqbiLDHMo62jHA4u6GxFwxL5JgO0vxaR8ycxW Cd9dkbBeq88MlYMmpDiL2e0acHDZTwrjj8/h2uB7Gl5CfVFW3ppDdkVN5ou1AumkWORb e7LY8wYyA1p79c0wVDT0Ld+eWW4Zi6UOcAVxBrmygVAJOoUXuxfLZRCc52X8uoposvPZ Y9AeuIhtBfihpa0L1P2k9MqigjUQboQBF6iEGws8hIxCc61ORkISPfvmhsqQdJaSaWBV NlHBoICwyIHtXIjMGljfPxSkarXc4W0b+HmIt4CdPZ9BS+oA0zqvaV92aTcrQILEhTGX 9dcQ== X-Forwarded-Encrypted: i=1; AKwUvBwrVBXmsgvzT6dkf1WZWc0BvPdwQLtaJhgFyKpeQaDwUkqdMiEFcifV/QT6QvmPWm/18E2MxUIDLXgmNZo=@vger.kernel.org X-Gm-Message-State: AFuF++moBroBrtgfWXDu2bxY7W2kRJwIC0tp4Zo+KlNNf/zJH/kCrCGG fMl8wQ8HthGMwxZx2C8q4SziKSfI76HN5xocsXIa67MHckwhSDRRZ4JR X-Gm-Gg: AYBFou1C+Nl+chGunVv22MXPUlPbDp4wgGz9IPtF9pEnUcOeSFLeQotzIfEWXqUWYlh McQWDrP6ipujA78MYga11gLmNC7jYJzkhgHl1vYNtTTasvXD6oDPUmGrlQFp1vo2IhBfgRkUv16 QiTpSKW3rilg9UcCkwSzH1/88gg+ZbjVdF4GdCBthryeLHUMGSZXujScPBNzJzUdXDf0mIToLwi fVbEgtUHtb/cTSyajz9ba+swen6qEf15YL0i0GtHwV/ugzoSViK4awg4/wKXHdiPGDABY85XzS6 lBRdHHlQKQLl/tZbuBfB0AmiBAkoNRsj9IR6CaZciANBYiq0yVujojX5PFhf8JeSqeJw+zbGsxy TSpDuKDBTfT6iH2uYbQUaN5426fBd2Vy61D/tswU34uHY9F/5WsURl9gChpy7KVQpl47oY7X6X9 xwyNfxJZWGPhFVB5/unSJ3IXOSwz8jj7Wuez4FUL8WdWt6wM1QeAPbMlevHhpXgho+vg== X-Received: by 2002:a17:90b:2807:b0:383:5a16:bd70 with SMTP id 98e67ed59e1d1-39aee16f931mr16587728a91.16.1788411261874; Wed, 02 Sep 2026 21:54:21 -0700 (PDT) Received: from [192.168.20.42] ([115.70.157.242]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-39ae8f1cf6dsm2300801a91.3.2026.09.02.21.54.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Sep 2026 21:54:21 -0700 (PDT) From: Tsz Shan Chan X-Google-Original-From: Tsz Shan Chan Date: Thu, 03 Sep 2026 14:53:47 +1000 Subject: [PATCH v3 2/5] iio: light: vcnl4000: clear DRDY interrupt when buffer disabled 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: <20260903-vcnl4000-v3-2-5e69c2e715a8@jacques.com.au> References: <20260903-vcnl4000-v3-0-5e69c2e715a8@jacques.com.au> In-Reply-To: <20260903-vcnl4000-v3-0-5e69c2e715a8@jacques.com.au> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko Cc: linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Tsz Shan Chan X-Mailer: b4 0.14.3 on vcnl4010/4020, interrupt status bits are cleared by writing 1 to the corresponding bit in the ISR register. If data ready interrupt triggers when the iio buffer is disabled, the DRDY bit is never cleared and the interrupt line stays low. Clear the DRDY bit in the interrupt handler when the buffer is disabled. Signed-off-by: Tsz Shan Chan --- drivers/iio/light/vcnl4000.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/iio/light/vcnl4000.c b/drivers/iio/light/vcnl4000.c index cf55fe6afcba..c5f34e748e1a 100644 --- a/drivers/iio/light/vcnl4000.c +++ b/drivers/iio/light/vcnl4000.c @@ -1545,8 +1545,13 @@ static irqreturn_t vcnl4010_irq_thread(int irq, void= *p) isr & VCNL4010_INT_THR); } =20 - if (isr & VCNL4010_INT_DRDY && iio_buffer_enabled(indio_dev)) - iio_trigger_poll_nested(indio_dev->trig); + if ((isr & VCNL4010_INT_DRDY)) { + if (iio_buffer_enabled(indio_dev)) + iio_trigger_poll_nested(indio_dev->trig); + else + i2c_smbus_write_byte_data(data->client, VCNL4010_ISR, + isr & VCNL4010_INT_DRDY); + } =20 end: return IRQ_HANDLED; --=20 2.55.0 From nobody Sat Sep 26 08:38:28 2026 Received: from mail-pj1-f42.google.com (mail-pj1-f42.google.com [209.85.216.42]) (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 21F6A361945 for ; Thu, 3 Sep 2026 04:54:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788411267; cv=none; b=e1yFOSAFBafleDgQsJieODWIIHqAYjlLT8lkTG6yb2dnqGvxqkC8DCKCVZFI0Mak8q88cVhpRV42330GYq4Sot0ylnR6RRldk4QDAIjFdGWdZwnC6Rk4xEXrlZAhWRuT8IXNnsG4r2zT5XBnb+aVdS4+Ua1dS7RkqJMhEYXFf9U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788411267; c=relaxed/simple; bh=rWt961+/bPNy2pjPJWDH0YmoShrimYI+QoADdAgJshQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=pdCyJweP9orTzuvDAkvuasOb6gWJrr3Og2l9N+DXsn4PaLREzNty7qnLUBWZaVYCTBjDnU8LZ7TkHTXwXdJUnHBrK2x545z708Kwm8rBuxd9VGfMVx7LtvHFXYqXh/mQj5nqdu9xBzyHKfZkxpR/dNvzg/0hXRk6uidurl2R+lo= 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=KEfG49LU; arc=none smtp.client-ip=209.85.216.42 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="KEfG49LU" Received: by mail-pj1-f42.google.com with SMTP id 98e67ed59e1d1-382ef647e20so2297990a91.1 for ; Wed, 02 Sep 2026 21:54:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1788411265; x=1789016065; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=okUNsbtvmFFu+lzHe154k2LqoLzMT2rNsO7AkOEt1VY=; b=KEfG49LUwAsi6zjPCZl8Zn1N4K9veSXFws8+fb5nXmdu9usJqYbUNjb5HWAt8KeMwI VYyImWaHNwDL1W36FUjwC+z8KkENSf4b00nyKTDDz/X9iMa8bQ7DKWJni/rbZvmi82td PftRoMRciRtZyxxAk/mbQEPIm5o+jPnGF5UVUPnQQVYLz9jqibAt+Ta80Ifir7kntggo kTpj8gAnhvbYg6+h1Vjn6tzqbrJhc7cwXUfA+uswVWRnOJuRYT8BlGnwWLh1zX8uvtUz junZys2cP+u/eCy+Yc16D44cMhP+eHZn6j3ATPRd7BUoxdu9bQ54ereSYD1qfbhat/wn wvOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788411265; x=1789016065; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=okUNsbtvmFFu+lzHe154k2LqoLzMT2rNsO7AkOEt1VY=; b=ff/gcSE47YNAsT/1lIaGH5nGrZxjlKeuoDKke5FCK6m82/2x84Rh/7usoAhdnqF2KJ pZ3fPhOYkCWfEnsFnD0JZpSXdV1kJMlhKb/++6g2SkPmcH/FYN4p5ZEUGWtuIOOdQf/C 5iPvNy9HAXy3JXIZkum0gets5TPUQZ+1zNPSoBAQthYlamFjzvYeOxo/m7SaOOHal2vW DKDOYbX2fi4BJZKmpZGf+bxbsn6oEG0VAF5eK3noUzVqB5jjJTP++k3vNYqxtombTsew 5E6KH+B+giCksYwFzj43r1fXZgld9FUjZs8J57YrCqtUh76hxaDsC1kwo1pa86F9lR2t aDMg== X-Forwarded-Encrypted: i=1; AKwUvBx+eD7EeJtUyoA8lqJMAqqRHS7kyJiq5UKa/f4o09Ffb9n+oOJLk2MMGBxwdF9xh0teLwCFtWHwWLWDqJo=@vger.kernel.org X-Gm-Message-State: AFuF++mS51Zv4qL54mAPAxhU4TnCB+NHPIKTjAD541MRikBmR6WokObx Edp9KEIqAk3PPbj8PAeiRBZDrDR6OP1wO2FBqLhJHVHc8HrFPjul4WrS X-Gm-Gg: AYBFou3peLtlUd30+CgYKjNr2YvTeaMAsZO+3Z7g6UmFRxOofVQdqxoNlFgKr5y5/x0 +F/JSSqg3djYW8xSdIhvg+JZec0vXD/geGVXejjYo8chPOy5K1nrh531EPKFk9tkSayVRHFmUrO Axetg5wkB8W/9Za/psZU7ATUJpkD7mxDNpOhbc40wwmnU2aJ9ooYBXUvu420U9/y/N/PudAzard nlKdPD0HW+7MhMm9W/65S57+v5RcdzEHYfYpONTnM/9wE01SA3lwtJkDGOTjJsPb5hz1PfqrHZB Jxq0JU2XmzWegJtAP3YL32e6NRQMsf0xwiepjpwXmtpqqQjso+A/0QanSx3SuvhfxKGllAMoHlg nNYdu8gyWmZKQlPxQ7zY2CTCjPkcPgT6x5OTVFn55Xcxe8bjohnw9MaXGJtRBFGwthyzyd8C0k6 G1u94AQEIPWJjhxY+kMbCZXdB9sryU2HytJjxvJowEA7Mz2iqqycGcLinpmGmbjw0ZZA== X-Received: by 2002:a17:90a:cf88:b0:38e:fea2:df53 with SMTP id 98e67ed59e1d1-39aee9b4d19mr11976636a91.4.1788411265508; Wed, 02 Sep 2026 21:54:25 -0700 (PDT) Received: from [192.168.20.42] ([115.70.157.242]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-39ae8f1cf6dsm2300801a91.3.2026.09.02.21.54.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Sep 2026 21:54:25 -0700 (PDT) From: Tsz Shan Chan X-Google-Original-From: Tsz Shan Chan Date: Thu, 03 Sep 2026 14:53:48 +1000 Subject: [PATCH v3 3/5] iio: light: vcnl4000: refactor interrupt config functions 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: <20260903-vcnl4000-v3-3-5e69c2e715a8@jacques.com.au> References: <20260903-vcnl4000-v3-0-5e69c2e715a8@jacques.com.au> In-Reply-To: <20260903-vcnl4000-v3-0-5e69c2e715a8@jacques.com.au> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko Cc: linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Tsz Shan Chan X-Mailer: b4 0.14.3 Move interrupt configuration logic into helper functions (vcnl4010_stop, vcnl4040_update_als_int, vcnl4040_update_ps_int). This avoids code duplication and prepares for disabling interrupt duirng cleanup. Also change the disable order for vcnl4010/4020 to clear INT_CTRL before COMMAND to avoid spurious interrupts. Signed-off-by: Tsz Shan Chan --- drivers/iio/light/vcnl4000.c | 79 ++++++++++++++++++++++++----------------= ---- 1 file changed, 44 insertions(+), 35 deletions(-) diff --git a/drivers/iio/light/vcnl4000.c b/drivers/iio/light/vcnl4000.c index c5f34e748e1a..f77b219c46e4 100644 --- a/drivers/iio/light/vcnl4000.c +++ b/drivers/iio/light/vcnl4000.c @@ -1299,6 +1299,17 @@ static bool vcnl4010_is_thr_enabled(struct vcnl4000_= data *data) return !!(ret & VCNL4010_INT_THR_EN); } =20 +static int vcnl4010_stop(struct vcnl4000_data *data) +{ + int ret; + + ret =3D i2c_smbus_write_byte_data(data->client, VCNL4010_INT_CTRL, 0); + if (ret < 0) + return ret; + + return i2c_smbus_write_byte_data(data->client, VCNL4000_COMMAND, 0); +} + static int vcnl4010_read_event_config(struct iio_dev *indio_dev, const struct iio_chan_spec *chan, enum iio_event_type type, @@ -1334,16 +1345,10 @@ static int vcnl4010_config_threshold_enable(struct = vcnl4000_data *data) =20 static int vcnl4010_config_threshold_disable(struct vcnl4000_data *data) { - int ret; - if (!vcnl4010_is_thr_enabled(data)) return 0; =20 - ret =3D i2c_smbus_write_byte_data(data->client, VCNL4000_COMMAND, 0); - if (ret < 0) - return ret; - - return i2c_smbus_write_byte_data(data->client, VCNL4010_INT_CTRL, 0); + return vcnl4010_stop(data); } =20 static int vcnl4010_config_threshold(struct iio_dev *indio_dev, bool state) @@ -1375,6 +1380,34 @@ static int vcnl4010_write_event_config(struct iio_de= v *indio_dev, } } =20 +static int vcnl4040_update_als_int(struct vcnl4000_data *data, u16 mask, b= ool state) +{ + int ret, val; + + ret =3D i2c_smbus_read_word_data(data->client, VCNL4200_AL_CONF); + if (ret < 0) + return ret; + + val =3D state ? (ret | mask) : (ret & ~mask); + + data->als_int =3D FIELD_GET(VCNL4040_ALS_CONF_INT_EN, val); + return i2c_smbus_write_word_data(data->client, VCNL4200_AL_CONF, val); +} + +static int vcnl4040_update_ps_int(struct vcnl4000_data *data, u16 mask, bo= ol state) +{ + int ret, val; + + ret =3D i2c_smbus_read_word_data(data->client, VCNL4200_PS_CONF1); + if (ret < 0) + return ret; + + val =3D state ? (ret | mask) : (ret & ~mask); + + data->ps_int =3D FIELD_GET(VCNL4040_PS_CONF2_PS_INT, val); + return i2c_smbus_write_word_data(data->client, VCNL4200_PS_CONF1, val); +} + static int vcnl4040_read_event_config(struct iio_dev *indio_dev, const struct iio_chan_spec *chan, enum iio_event_type type, @@ -1413,40 +1446,21 @@ static int vcnl4040_write_event_config(struct iio_d= ev *indio_dev, enum iio_event_direction dir, bool state) { - int ret; - u16 val, mask; + u16 mask; struct vcnl4000_data *data =3D iio_priv(indio_dev); =20 guard(mutex)(&data->vcnl4000_lock); =20 switch (chan->type) { case IIO_LIGHT: - ret =3D i2c_smbus_read_word_data(data->client, VCNL4200_AL_CONF); - if (ret < 0) - return ret; - - mask =3D VCNL4040_ALS_CONF_INT_EN; - if (state) - val =3D (ret | mask); - else - val =3D (ret & ~mask); - - data->als_int =3D FIELD_GET(VCNL4040_ALS_CONF_INT_EN, val); - return i2c_smbus_write_word_data(data->client, VCNL4200_AL_CONF, val); + return vcnl4040_update_als_int(data, VCNL4040_ALS_CONF_INT_EN, state); case IIO_PROXIMITY: - ret =3D i2c_smbus_read_word_data(data->client, VCNL4200_PS_CONF1); - if (ret < 0) - return ret; - if (dir =3D=3D IIO_EV_DIR_RISING) mask =3D VCNL4040_PS_IF_AWAY; else mask =3D VCNL4040_PS_IF_CLOSE; =20 - val =3D state ? (ret | mask) : (ret & ~mask); - - data->ps_int =3D FIELD_GET(VCNL4040_PS_CONF2_PS_INT, val); - return i2c_smbus_write_word_data(data->client, VCNL4200_PS_CONF1, val); + return vcnl4040_update_ps_int(data, mask, state); default: return -EINVAL; } @@ -1629,13 +1643,8 @@ static int vcnl4010_buffer_postenable(struct iio_dev= *indio_dev) static int vcnl4010_buffer_predisable(struct iio_dev *indio_dev) { struct vcnl4000_data *data =3D iio_priv(indio_dev); - int ret; - - ret =3D i2c_smbus_write_byte_data(data->client, VCNL4010_INT_CTRL, 0); - if (ret < 0) - return ret; =20 - return i2c_smbus_write_byte_data(data->client, VCNL4000_COMMAND, 0); + return vcnl4010_stop(data); } =20 static const struct iio_buffer_setup_ops vcnl4010_buffer_ops =3D { --=20 2.55.0 From nobody Sat Sep 26 08:38:28 2026 Received: from mail-pj1-f50.google.com (mail-pj1-f50.google.com [209.85.216.50]) (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 BD16C383991 for ; Thu, 3 Sep 2026 04:54:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788411271; cv=none; b=VGvnQS2aOh+07Un+RQpGOTU9ta6Hmx5otjJ1To0dFgPUjUTBxWxYdK3YNeR50UdeoZU6z65iNMSCgjQhl5l2TWGFG65vyC4smlqTib5lJun759/bDxlCawwckYWpCEl9Gfbc/hUjwWQL5u7q/1ArpS/i4hoEhQ+ijx23AKAfPhM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788411271; c=relaxed/simple; bh=0RCbxmfE0LDuYQWLscku9kxsP8ZuobBC4DjCMkP9Vy8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=anlWUJP+gaxSG57L00QH8r/6Z8X6YJr4RKVHCS5q75xfc6EqVrBDkiyPPucQRth/S71tyiTBRibbqB7YTfDuF/snUXPNOQIJq5Dk1On5x3S5t+4C/BVHPCB6w0Qhr59cgp0B12hKK94LZOs744Q15ejdXMNAisaoPDw8VOqVgt0= 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=POCgk0nt; arc=none smtp.client-ip=209.85.216.50 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="POCgk0nt" Received: by mail-pj1-f50.google.com with SMTP id 98e67ed59e1d1-38ea87caafeso1889165a91.3 for ; Wed, 02 Sep 2026 21:54:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1788411269; x=1789016069; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=ImX6Rvm3vbsJZJLLrx74I6kO9MORDO3uU8EKdO+wQ+I=; b=POCgk0ntVvyYrpxXmMdh5B1lj+266WujHmTAZnKznKXh4um+JRCrOYy6ebtuEivAqM Mhb2rN/KB/NVZpTeqmiK3G1tF8l3gsJVsVmsxrP4Ga46zDa97oAhDckpryWopyMvUNbV mBpWfLOpdBo8lLBLQu1CIH+6m7XD64n5Ir5t9Nh3PlKsiKt8NtYyDEBikvfMakVxyNXg UJ+K9aYPXzyYKZOZzsnYIflUZ1/0merb3VVrVS40FuLJwqLccaaULSjK+/OIneWTqyjv u0swCeEBeDtGL6VNqU97D4DBepSPT1C8vL6uFOyseEneAZ/Niv+nvkXvLUrKytyZkbvV HQGg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788411269; x=1789016069; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=ImX6Rvm3vbsJZJLLrx74I6kO9MORDO3uU8EKdO+wQ+I=; b=Y51Zhu5wRYlNIL9rWgRKZBHcErPyMNlyeFy2b1C+Vk0VIrr4Hzg+NrbbH7cE8dJxh8 6zMzN/UemC2GqiIIJyFGFRg8nID0Iv6i+L3YPivmyk2Oj2UKLpzA/uHwM9ovn7aQVK6U LNp+hRAVnDmice2MomA6BeqrkHQ0uTz+z1akaOTzEXLmfw2lv0HOMGd82k0O7Bx6JzXU aQ/GS609wicp7LmkERnc13mY3Tp7UdQQz/cNh9+MVYWocfA8ue7bkwKuqkRB47oPtyA7 FzPEJyx+jSuNpsOdvNkfPDMfS5/1YV5qRl6PAo2hSV1zE6aE0nDuCNVRy9DkYOfH8l0i /UvA== X-Forwarded-Encrypted: i=1; AKwUvBxaJ8HGoY3PJwOEkX+P9abwwzuUIeCRRLOumdwcT5asOLxPugnwqth2pi3s0WgVRr4bomEBdV9TXcXdD8k=@vger.kernel.org X-Gm-Message-State: AFuF++n9Fc1E5fTu2UeRvdTd76X8BwG/pDvwO1CYB94W9oRDHeMq7txl 9Z2ZqIIWGziJWd+6c4ceJc4vZBI4uhR26PpKKo6gPhsjJ6KJp+f6NS6o X-Gm-Gg: AYBFou1L6IxOm9YPauNOWY4LywyVr0Ph+cqCU+N5kDJVwZ0GO7bJA9UDpydLGSQ8fae GOBM/PTBBFJH/eA2mieS6UbXDmBGyFPj3ymiaQNoV4RggM019zQGEy2jpBPRMuQARnmA4cJwuhI j33pGVG52rc/Jqsa5G6r+CeqpXGqNVPAwE6b5DSocPLcCniEfTmdGryLtz9Dbc3+ooDHdeXOctC VdWeQfkl+KrwAwdxzp22RjXeml3biFOG2UhKfB5TKyO/YivkKnQN/jusVGwbyEBkO2BjGSCUuy2 lnb9/tiq64dabpEJsZdGvEr7kCpwJ3poUu8g6re3kVOK1KmaCcGHgmtP3G/qhHANau0OME97O1q ufE64x0xMcxrTRCF85aRhlrZh9H3RM961qqGuKeV4Py8zlFCezE/IShPSPhTaWDjK+/EuBmkAQ4 FAiCK6mqA4oux5DXB0AykMm/SWG8u25GILzQXgNNj7kToueJQlI5XYdJJ8y0B0U0eMYw== X-Received: by 2002:a17:90b:17cf:b0:398:d286:344d with SMTP id 98e67ed59e1d1-39aee178e92mr14420581a91.22.1788411269177; Wed, 02 Sep 2026 21:54:29 -0700 (PDT) Received: from [192.168.20.42] ([115.70.157.242]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-39ae8f1cf6dsm2300801a91.3.2026.09.02.21.54.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Sep 2026 21:54:28 -0700 (PDT) From: Tsz Shan Chan X-Google-Original-From: Tsz Shan Chan Date: Thu, 03 Sep 2026 14:53:49 +1000 Subject: [PATCH v3 4/5] iio: light: vcnl4000: Add IRQ disable callback on cleanup 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: <20260903-vcnl4000-v3-4-5e69c2e715a8@jacques.com.au> References: <20260903-vcnl4000-v3-0-5e69c2e715a8@jacques.com.au> In-Reply-To: <20260903-vcnl4000-v3-0-5e69c2e715a8@jacques.com.au> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko Cc: linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Tsz Shan Chan X-Mailer: b4 0.14.3 During driver unbind, devm cleans up resources in LIFO order. The IRQ handler is freed before the device is powered down. This can lead to unhandled interrupts. Register a devm action to disable interrupt explicitly after devm_request_threaded_irq(), so that the interrupt is disabled before the IRQ handler is freed. This prevents any unhandled interrupts. Add a disable_irq callback to chip info structure. This allows each chip type to implement its own disable sequence. Signed-off-by: Tsz Shan Chan --- drivers/iio/light/vcnl4000.c | 67 ++++++++++++++++++++++++++++++++++++++++= ++++ 1 file changed, 67 insertions(+) diff --git a/drivers/iio/light/vcnl4000.c b/drivers/iio/light/vcnl4000.c index f77b219c46e4..df929eab2bef 100644 --- a/drivers/iio/light/vcnl4000.c +++ b/drivers/iio/light/vcnl4000.c @@ -217,6 +217,7 @@ struct vcnl4000_chip_spec { int (*measure_light)(struct vcnl4000_data *data, int *val); int (*measure_proximity)(struct vcnl4000_data *data, int *val); int (*set_power_state)(struct vcnl4000_data *data, bool on); + int (*disable_irq)(struct vcnl4000_data *data); irqreturn_t (*irq_thread)(int irq, void *priv); irqreturn_t (*trig_buffer_func)(int irq, void *priv); =20 @@ -1466,6 +1467,48 @@ static int vcnl4040_write_event_config(struct iio_de= v *indio_dev, } } =20 +static int vcnl4010_disable_irq(struct vcnl4000_data *data) +{ + int ret; + + guard(mutex)(&data->vcnl4000_lock); + + ret =3D vcnl4010_stop(data); + if (ret < 0) + return ret; + + ret =3D i2c_smbus_read_byte_data(data->client, VCNL4010_ISR); + if (ret < 0) + return ret; + + ret &=3D VCNL4010_INT_THR | VCNL4010_INT_DRDY; + if (!ret) + return 0; + + return i2c_smbus_write_byte_data(data->client, VCNL4010_ISR, ret); +} + +static int vcnl4040_disable_irq(struct vcnl4000_data *data) +{ + int ret; + + guard(mutex)(&data->vcnl4000_lock); + + ret =3D vcnl4040_update_ps_int(data, VCNL4040_PS_CONF2_PS_INT, false); + if (ret < 0) + return ret; + + ret =3D vcnl4040_update_als_int(data, VCNL4040_ALS_CONF_INT_EN, false); + if (ret < 0) + return ret; + + ret =3D i2c_smbus_read_word_data(data->client, data->chip_spec->int_reg); + if (ret < 0) + return ret; + + return 0; +} + static irqreturn_t vcnl4040_irq_thread(int irq, void *p) { struct iio_dev *indio_dev =3D p; @@ -1815,6 +1858,7 @@ static const struct vcnl4000_chip_spec cm36672p_spec = =3D { .init =3D vcnl4200_init, .measure_proximity =3D vcnl4200_measure_proximity, .set_power_state =3D vcnl4200_set_power_state, + .disable_irq =3D vcnl4040_disable_irq, .channels =3D cm36672p_channels, .num_channels =3D ARRAY_SIZE(cm36672p_channels), .info =3D &vcnl4040_info, @@ -1843,6 +1887,7 @@ static const struct vcnl4000_chip_spec vcnl4010_spec = =3D { .measure_light =3D vcnl4000_measure_light, .measure_proximity =3D vcnl4000_measure_proximity, .set_power_state =3D vcnl4000_set_power_state, + .disable_irq =3D vcnl4010_disable_irq, .channels =3D vcnl4010_channels, .num_channels =3D ARRAY_SIZE(vcnl4010_channels), .info =3D &vcnl4010_info, @@ -1858,6 +1903,7 @@ static const struct vcnl4000_chip_spec vcnl4040_spec = =3D { .measure_light =3D vcnl4200_measure_light, .measure_proximity =3D vcnl4200_measure_proximity, .set_power_state =3D vcnl4200_set_power_state, + .disable_irq =3D vcnl4040_disable_irq, .channels =3D vcnl4040_channels, .num_channels =3D ARRAY_SIZE(vcnl4040_channels), .info =3D &vcnl4040_info, @@ -1877,6 +1923,7 @@ static const struct vcnl4000_chip_spec vcnl4200_spec = =3D { .measure_light =3D vcnl4200_measure_light, .measure_proximity =3D vcnl4200_measure_proximity, .set_power_state =3D vcnl4200_set_power_state, + .disable_irq =3D vcnl4040_disable_irq, .channels =3D vcnl4040_channels, .num_channels =3D ARRAY_SIZE(vcnl4040_channels), .info =3D &vcnl4040_info, @@ -1912,6 +1959,21 @@ static int vcnl4010_probe_trigger(struct iio_dev *in= dio_dev) return devm_iio_trigger_register(&client->dev, trigger); } =20 +static void vcnl4000_disable_irq_action(void *data) +{ + struct iio_dev *indio_dev =3D data; + struct vcnl4000_data *chip =3D iio_priv(indio_dev); + struct device *dev =3D &chip->client->dev; + int ret; + + if (!chip->chip_spec->disable_irq) + return; + + ret =3D chip->chip_spec->disable_irq(chip); + if (ret) + dev_warn(dev, "Failed to disable interrupt(%pe)", ERR_PTR(ret)); +} + static void vcnl4000_cleanup(void *data) { struct iio_dev *indio_dev =3D data; @@ -1995,6 +2057,11 @@ static int vcnl4000_probe(struct i2c_client *client) ret =3D vcnl4010_probe_trigger(indio_dev); if (ret < 0) return ret; + + ret =3D devm_add_action_or_reset(dev, vcnl4000_disable_irq_action, + indio_dev); + if (ret) + return ret; } =20 ret =3D devm_pm_runtime_set_active_enabled(dev); --=20 2.55.0 From nobody Sat Sep 26 08:38:28 2026 Received: from mail-pj1-f46.google.com (mail-pj1-f46.google.com [209.85.216.46]) (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 834173876BB for ; Thu, 3 Sep 2026 04:54:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788411275; cv=none; b=WvlFEZg91SVRBeHpvARykCtL8Hm7AE+VqAyb8hTJxB1lKx6vFfokygWoeJbVTPk9iHAa028mMvd9jINDxf5UCAZW/rlwua2KXEJVAJ5UcgrsBD1UGNnJed5ulEAWOGQsnbjSUj/pRbKcrZx8hQVp9TyswjEM0dckRoaIw4L7oUk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788411275; c=relaxed/simple; bh=+OR1gTWNrzIqf2xISmhfp+s65tbaKQebpLjqZ8qvz7k=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=G6/QkwzO0ZSJCcQy/w0VYOmOIaAmcuk7nSERizBjzl3zLptBycHmAkBarMdjEKj1iyQdYVcY1IzZUn4+4XcyRdRe1ldgiZf7fA+CGCXJfibinqKmVDtZPkVMrXlgqgIyWLnXeZdMlRxCYwPKDyR0a/Jb08ndwWfQzb2l2+8qUes= 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=aeszYdF5; arc=none smtp.client-ip=209.85.216.46 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="aeszYdF5" Received: by mail-pj1-f46.google.com with SMTP id 98e67ed59e1d1-396750cfee6so1646500a91.2 for ; Wed, 02 Sep 2026 21:54:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1788411273; x=1789016073; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=4Xrkf+M7d/buQlEiH9zes2PfuHopkhsev9Nl4qDT6q8=; b=aeszYdF5zN9myhXKyD64ceUy5VOAs1Zj4Dpcvvn1oyWymgj3HtU6MhTDn0YZmmOVVO 2PirmwuvcC29z7xwOnUvqDlEZ7rXOJuTq/Ngf5xY4hGb4otMK6V+8Vl1OWpqLtXsCDAJ BVZKQLJ5s042evNClEGPMVquawI3voDFr5D8NVv0BVQ+5YGacexPXGoIg70zyb4w2YPX pYqTiDLkN4yYofIPs3qSFhikFQuWsGGpNlQwHTi+3TbDLUDh9lZ8QtKca6Eie2q3IPHm gZU++9B0Ws0NsMy03xi2qVIAZQDNlfDOyv1pzthaS9fF5ShkVtHEZK2MnrModCmeOTVE FlYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788411273; x=1789016073; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=4Xrkf+M7d/buQlEiH9zes2PfuHopkhsev9Nl4qDT6q8=; b=nvSi0cRHQWjP92+mzOhkGCL3PfqkE1CLEEei1QJlCiSsckbgjJc1Cir02SLgxh3EcP AHJe4yGpWjJimxD4sqz3xbIV6ka7NcE+Szbs0VdrsldyKy3TpTdyf2ouCyKQnIFMCDpm T+NTsWzu+fNX0bRRf04uui371gVU7u0FxIDCpNkAmKvY0T2jYlnpIYSLvE4Kn1t6f2bs nEFCF7CZKCCD4AdxjgGR62RBGP+J+5xGvrM+17cVdXoAeLSng9svIoT0BVf6TdFAR5MM ZrlH1gdXAKMBDIJ2XqUsSBApkfdsn7HY2Vbwj7rGRtu847AjYcYKcOL0cC8vjCDO4S5O wFVg== X-Forwarded-Encrypted: i=1; AKwUvBxmPe2Ke4pps/mV6pHIWRm28XtqUEnazVugwx4gb5Jy/p1wRkX8LXLhip3MG3N3+YJxuFhUgu/0ecyDjUg=@vger.kernel.org X-Gm-Message-State: AFuF++nCb0ktDNhSdllw/leliCrRCVQest3BwiX1cYraIacFrbEo6WO7 vaBSbzwb7G9PhrefAo16hl9NQLjld8kA6ic9Wn9YmvoCFIVIM38DcHQSiPQVGw== X-Gm-Gg: AYBFou21U1MNnyXcGPnC/EJubFC13gzD6mo/L0t2hcnNyL0K5IdRtGyg9FFZ1E4YC0U sktL2F81mRcOYo8wpID7DosApc+CRPTTR01EugJTxv5n6Oy0XUAUbODhAE6KoNN3NUM+ZrNZWLj Q0h7DcIhvfV8ZP6v6xSqPmq2X36I5Nx5VSh87u83I2ZEZla8YLyzCSJ7d1egMCvpUIVWLzfuBwq HRnN1TrENVMImthZ04yGrQEp4xdeY5rXwX8sYUy6y+bPuVdvEr+6NEuhhK9xX5KAqiqEcPj8qz9 G0MD4Ce9c3pQ4Mk0DwMAu/8fijpAbva4yFh+HGOp15DQ5gF1AZv2rzvp0yx0AYqJWr2Qf1MKp2p b183+cHUxv4iJ49d/NtUGXPD/gooBJ4Jzv1DW8YX/fRvSeC2TYpiEpe/za9e1I1nr0H8ZNZMA8U W+sAJGjsOYbwaZOigKH83tT+sW7pNQPjnBEeIStKYJbCBjQTAf+iclHa8fV2KoNBFlng== X-Received: by 2002:a17:90b:4c0b:b0:398:9bd5:490e with SMTP id 98e67ed59e1d1-39aee1427e6mr14134517a91.21.1788411272765; Wed, 02 Sep 2026 21:54:32 -0700 (PDT) Received: from [192.168.20.42] ([115.70.157.242]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-39ae8f1cf6dsm2300801a91.3.2026.09.02.21.54.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Sep 2026 21:54:32 -0700 (PDT) From: Tsz Shan Chan X-Google-Original-From: Tsz Shan Chan Date: Thu, 03 Sep 2026 14:53:50 +1000 Subject: [PATCH v3 5/5] iio: light: vcnl4000: add shared IRQ support 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: <20260903-vcnl4000-v3-5-5e69c2e715a8@jacques.com.au> References: <20260903-vcnl4000-v3-0-5e69c2e715a8@jacques.com.au> In-Reply-To: <20260903-vcnl4000-v3-0-5e69c2e715a8@jacques.com.au> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko Cc: linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Tsz Shan Chan X-Mailer: b4 0.14.3 Change the interrupt trigger to IRQF_TRIGGER_LOW and add IRQF_SHARED to allow the sensor to share an interrupt line. Return IRQ_NONE from the irq handler when read fails or when none of the interrupt source bits handled by the driver are set. This prevents claiming interrupts from other devices on a shared line. The datasheets confirm that the INT pin is open drain active low, and the interrupts are latched: - vcnl4010/4020: The INT pin is open drain. It is pulled low while a status bit is 1, and it stays low until the driver writes a 1 to clear it. - vcnl4040/4200: The INT pin is pulled low when a flag triggers. It resets to high only after the driver reads the INT_Flag register. Signed-off-by: Tsz Shan Chan --- drivers/iio/light/vcnl4000.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/drivers/iio/light/vcnl4000.c b/drivers/iio/light/vcnl4000.c index df929eab2bef..9855c2954429 100644 --- a/drivers/iio/light/vcnl4000.c +++ b/drivers/iio/light/vcnl4000.c @@ -1517,7 +1517,11 @@ static irqreturn_t vcnl4040_irq_thread(int irq, void= *p) =20 ret =3D i2c_smbus_read_word_data(data->client, data->chip_spec->int_reg); if (ret < 0) - return IRQ_HANDLED; + return IRQ_NONE; + + if (!(ret & (VCNL4040_PS_IF_CLOSE | VCNL4040_PS_IF_AWAY | + VCNL4040_ALS_FALLING | VCNL4040_ALS_RISING))) + return IRQ_NONE; =20 if (ret & VCNL4040_PS_IF_CLOSE) { iio_push_event(indio_dev, @@ -1573,7 +1577,10 @@ static irqreturn_t vcnl4010_irq_thread(int irq, void= *p) =20 ret =3D i2c_smbus_read_byte_data(data->client, VCNL4010_ISR); if (ret < 0) - goto end; + return IRQ_NONE; + + if (!(ret & (VCNL4010_INT_THR | VCNL4010_INT_DRDY))) + return IRQ_NONE; =20 isr =3D ret; =20 @@ -1610,7 +1617,6 @@ static irqreturn_t vcnl4010_irq_thread(int irq, void = *p) isr & VCNL4010_INT_DRDY); } =20 -end: return IRQ_HANDLED; } =20 @@ -2047,8 +2053,8 @@ static int vcnl4000_probe(struct i2c_client *client) if (client->irq && data->chip_spec->irq_thread) { ret =3D devm_request_threaded_irq(dev, client->irq, NULL, data->chip_spec->irq_thread, - IRQF_TRIGGER_FALLING | - IRQF_ONESHOT, + IRQF_TRIGGER_LOW | + IRQF_ONESHOT | IRQF_SHARED, "vcnl4000_irq", indio_dev); if (ret < 0) --=20 2.55.0