From nobody Mon Sep 28 20:12:34 2026 Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41]) (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 0FE203BCD26 for ; Mon, 17 Aug 2026 21:11:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787001093; cv=none; b=T/eEuMsSnjlk79HrfjAIZ1rKp3rLfbNc+JKMgDAdFf11rpvcSp6iaTTjd1h/lOELSNvHc5xiAnN83nn2jQrFRw8ouecgJ2X+lQR8r3ha1T3+3k0M9EJbF1h34UL5t9u4XX0fJ0SOdvnD2puqRgx/nvxbWTVYgyZuNJKPsc87fUM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787001093; c=relaxed/simple; bh=9gxlDRHqhuwt8FJ/CwukjTyzdPv7n6MCBFsd7dAHKR8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=EIDFyeMf30gXyFvLFSF23dGMd88jEPCXuNIaTGgLM/lDaT0uBgtWv7e/961ynMKvAM8fGIkPfdeCLk4JIk3Rv2yYqg1l91GQNAI8mGLHaUJgF8F7q2gmtqDPx6iHfNlaF7danBPw/NxHGfZujBjZmKhTrcsX1Z29R4vzOLT2+aE= 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=M9tCz+L+; arc=none smtp.client-ip=209.85.128.41 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="M9tCz+L+" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-4954dff6536so28548965e9.0 for ; Mon, 17 Aug 2026 14:11:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1787001090; x=1787605890; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=Ht5SF4+wx6Jf8JH+OLs35dYBN3IVS35rx1u5RktbmkM=; b=M9tCz+L+Hbev3R+xTFWnewrHpNUkeCm5DAeEcIz1WCzOdwFUAjx6XF06Zhps9mOAl8 gi5P4eEX7/i02a7CFjsn/8Yk5YY9pNgV1hX22Ivt0v3r4zhdAiEVia2HSWdqWHc/K23O Ymck1jO0Q2w/efZ9HCAVW6A/2rO28c3y6/QighqnL7HbWuNFEIZoLy2V16N280ADxQHL 6yAK/8k1Euzrql9p99/xUzjrmwfhHVrIk/Ba5nkgqJF9YDmrW1aVjdt+KbIlLWqUezfp EQtNndCeEtHB1R5R8x3Gggvb533crJtmaRzv3zfDguqs18wD8X/NEGKNaaATnMfQPL7c t9wA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787001090; x=1787605890; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=Ht5SF4+wx6Jf8JH+OLs35dYBN3IVS35rx1u5RktbmkM=; b=rPneiC9QnRaYlFjLGUmxO3lVyohO3KTDOu76XmCLga75p0hI10seXBQPQVyDT3/pyr Yzm4BloCgXwsC/P9AR0xiuro0l6IRSFA+x9zxiSHwcq5iz6KZ872KxocxD8urgMIc0SJ 15nuRqFd27WDVx4Lt1FqtTIMaXurP7/lK937f9JBf7mAb2c9S8FhcahVpiPjMuu9WJZF xRg83bjjMYYBUiaUD/D1OJCIIBAlhsY58/CvgEsbgbiIFjSBXDE6omIWDCWj7SX2IouY NNh9Tj6phA9KbfGT1hCaQJcS6VoYkZxvrh4+oC1EBDrKIxBTKj9X3VbY1JJv155kD4a6 /DhA== X-Forwarded-Encrypted: i=1; AHgh+RosS4x288mh6/or2wje+ArknUkunqYs/BcX92rxMeDYFmMjqrva7EOD4klxewmk+G20B9CeC/kSrCwzw1o=@vger.kernel.org X-Gm-Message-State: AOJu0Yws5IdYGx3stoCI9Id4nFFDtDwrevt8JU0SajEe0JihJHDEH4rK eY5sUMbvp8BXfVqXCtmlPRpRYqPLXszUB6mkEolbyMLg31WraEPtLD+x X-Gm-Gg: AR+sD102jPZPb4mWibeXJdSMZFN40E8dBgUuUAPjVwNTpFRwA5quOyeu+Ouoi2oOsvL GTM3/M8bypwONO8KNkBV6ThleDbZn93uDtwHRqEURkv+/NHGE2qrBN8Kf9oNRNZ5bvILs5ZGkR1 ON5RRsfm1inkbWUHKGtnDi9NIIvRmSLf5ZL6PHuknVfGNSv193J3dWnMwCzBQBOPyVkzttlyGxc ZeTb7ikqfvxJBfsdhXwCC8yOatDesLlz+hvS5QngWpY5gnzTA8rwu8QMyA6hBoubRgmtTX60Hlt P/IL2kVVuUJXbgItZElHl7iHyk+2OPTbopaCk6DVaO0KbT6WGyg2sMr84ZvgHpCSqOIdcC53U9c St9Dqas7AxhGEnZbm4D3fZ1DgFDYN29Myr2Tz02i9NXPDIKPaun67p+XY+qjnq9LR/S9C4HzD1W 1UCa1nL1yYzrpSIbXf34MZL/S+oyX6BiYHK3f5g0VhhySZ4/PkSiiyPxWaDqjeZ08XoJIlaWvU8 QA7YgpiXqM/ X-Received: by 2002:a05:600c:3b23:b0:499:8ae1:b900 with SMTP id 5b1f17b1804b1-4998ae1bb69mr347688205e9.12.1787001090092; Mon, 17 Aug 2026 14:11:30 -0700 (PDT) Received: from fedora ([105.74.73.207]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49996176b95sm134587625e9.10.2026.08.17.14.11.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Aug 2026 14:11:29 -0700 (PDT) From: Taha Ed-Dafili <0rayn.dev@gmail.com> To: jic23@kernel.org, lars@metafoo.de Cc: Michael.Hennerich@analog.com, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, dlechner@baylibre.com, nuno.sa@analog.com, andy@kernel.org, skhan@linuxfoundation.org, linux@analog.com, linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Taha Ed-Dafili <0rayn.dev@gmail.com>, Conor Dooley Subject: [PATCH v4 1/6] dt-bindings: iio: dac: ad5504: add output-range and missing gpios Date: Mon, 17 Aug 2026 17:11:10 -0400 Message-ID: <20260817211118.21833-2-0rayn.dev@gmail.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260817211118.21833-1-0rayn.dev@gmail.com> References: <20260817211118.21833-1-0rayn.dev@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The AD5504 output range (0-30V or 0-60V) is determined by the R_SEL pin. Use standard output-range-microvolt and range-sel-gpios properties to describe the hardware configuration of the R_SEL pin. Ensure mutual exclusivity using the not/required logic. Additionally, add missing vlogic-supply, clr-gpios, ldac-gpios and datasheet links, and provide a complete usage example. Signed-off-by: Taha Ed-Dafili <0rayn.dev@gmail.com> Acked-by: Conor Dooley --- .../bindings/iio/dac/adi,ad5504.yaml | 39 ++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/iio/dac/adi,ad5504.yaml b/Do= cumentation/devicetree/bindings/iio/dac/adi,ad5504.yaml index 9c2c038683b4..e0123dceaa33 100644 --- a/Documentation/devicetree/bindings/iio/dac/adi,ad5504.yaml +++ b/Documentation/devicetree/bindings/iio/dac/adi,ad5504.yaml @@ -10,8 +10,10 @@ maintainers: - Lars-Peter Clausen - Jonathan Cameron =20 -description: +description: | High voltage (up to 60V) DACs with temperature sensor alarm function + https://www.analog.com/media/en/technical-documentation/data-sheets/ad55= 04.pdf + https://www.analog.com/media/en/technical-documentation/data-sheets/ad55= 01.pdf =20 properties: compatible: @@ -27,6 +29,29 @@ properties: maxItems: 1 =20 vcc-supply: true + vlogic-supply: true + + output-range-microvolt: + description: | + Specify the channel output full scale range. The R_SEL pin + determines if the range is 0-30V or 0-60V. + items: + - const: 0 + - enum: [30000000, 60000000] + default: [0, 60000000] + + range-sel-gpios: + description: + GPIO connected to the R_SEL pin to select the output voltage range. + maxItems: 1 + + clr-gpios: + description: GPIO that controls the /CLR pin (active low). + maxItems: 1 + + ldac-gpios: + description: GPIO that controls the /LDAC pin (active low). + maxItems: 1 =20 additionalProperties: false =20 @@ -34,9 +59,17 @@ required: - compatible - reg =20 +allOf: + - not: + required: + - range-sel-gpios + - output-range-microvolt + examples: - | #include + #include + spi { #address-cells =3D <1>; #size-cells =3D <0>; @@ -45,6 +78,10 @@ examples: compatible =3D "adi,ad5504"; vcc-supply =3D <&dac_vcc>; interrupts =3D <55 IRQ_TYPE_EDGE_FALLING>; + + output-range-microvolt =3D <0 60000000>; + clr-gpios =3D <&gpio 4 GPIO_ACTIVE_LOW>; + ldac-gpios =3D <&gpio 5 GPIO_ACTIVE_LOW>; }; }; ... --=20 2.55.0 From nobody Mon Sep 28 20:12:34 2026 Received: from mail-wm1-f53.google.com (mail-wm1-f53.google.com [209.85.128.53]) (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 0827D471411 for ; Mon, 17 Aug 2026 21:11:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787001095; cv=none; b=GePnyGM4Gww0G1CmnhGMYarbfAIP1Z2S0gT9+IeCW6Db/mSluzjO9T8FAeE94NEbmoXZbcLq4mBGvioLVl3seKToqmpeoXpgGJTkoxNQ5f2j8bDGoEq0NcOiMl+Q2HIPBSkVNIb9A6ETrCQ44EvDKmi98kAhA6ivVNutW5lSUvs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787001095; c=relaxed/simple; bh=Z9Qda5xfMXdPM0y7cS1w18J7wtGYePS3JSB15genqNo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=cddPhDp22DNVprspP5aW5hc9pcng7hTw1jLsyHqD57CXDmN8VZPE18FhX1g2T2LXZmj/dayRQi78vlOTHQWupEDR1GVmJG4SJPEAVHYTrYTOSgQeTkbC80DLU46ZXat5vLqkQrrvcSii4h6OJ22QogBdAqd0I9QB+LOI4mSECcc= 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=XwdC0oFV; arc=none smtp.client-ip=209.85.128.53 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="XwdC0oFV" Received: by mail-wm1-f53.google.com with SMTP id 5b1f17b1804b1-495437bb891so2833885e9.1 for ; Mon, 17 Aug 2026 14:11:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1787001092; x=1787605892; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=Mf18W8QZAz94WDVtYPu89VIwzujNXA0lX7aId/Aud6w=; b=XwdC0oFViIjdYnSC2LmEXQm79fiXONJMvKkA42enzl1OCCCvkEKmtAZndk90PpC3sQ cYDCDbTX1hKK9McHkvBGWS3TQTnMW2tHxPnJxLDsIrcUgd3kfqK8hdQowOLxo5aJuk7M i/F4ZiWT2W/pDCOqL59/FAXbABfydflXEdCqjM4lu9W3Rl1jSB8nldxcdteRH2skSdoC w1nWz3x7g3R78hKPGlU5d5yv20TfnLV5nD0m520uwb/WNgvpGyRmZTpKibp951/Zma2n rxWpv68dCpCUZ93vmZQ7CNVVvQRbQkDGQFshoYR0d5WVNO+fveLaByixQuyFzgArrsyX eg6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787001092; x=1787605892; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=Mf18W8QZAz94WDVtYPu89VIwzujNXA0lX7aId/Aud6w=; b=WGBRr18V6SHKHHEUuZieogLUcvgYKBwyMPEq1+Xg9958WpqxAH/69aONnoG77myezt sR8GOAwZOVGsXX0gb2tLEOh3BT9aBfXbDFIcLk1rR+O/MDnqR/7UmPhO6sjPwvy/NYpD zuJMjlSxy8s6ww2WMujMPKOlFgVfB223ONkWh0KUALUg4GxMRp+W+fTQP7HJxgY220Qw jSc+VmOTaXC8TQjzyWW63e4XXk4AnfEzRqdDKax264HcB+kKpnJq+4+DCBYn9+q+NOAS KtPR1allF7RGg7eUmY/e2vvB+HX0HIL66O9Oz0nZ1ofY8wgHhOWFE+AMD/Xm0lXNeYlx o4gw== X-Forwarded-Encrypted: i=1; AHgh+RoubDcEfS0koMdmK81lGpdVexswD0jx4er7yFSoGU24mC3xRA8gdq5BLoSsVkf8uFRcW/e+zvVjXOEoZqk=@vger.kernel.org X-Gm-Message-State: AOJu0YzKFGjaGWu1hzoA1vUF74P2nJKCvZs4rVOHW+R6ywwSjm8q6wQq wpRV6AIx+CmXJUqndMgT2L/BTctxq4mtBaXXuc6BYLTIFG1pMwEN9Hhy X-Gm-Gg: AR+sD10hjJsotR00kBQbdVSFT/ptCvn5q1Xe2oOJOW8IQfxWR4SIk8C87IQt1mf+y4X 0iYgbud/XXuo7oqcSEFU0xb6hlocwF8A3SXcCRRm8/nCuuw88tFNf6jN4tzq8NGqFqCvx1SlAbq Y20wkqUFw8ivPo9REQyBRtA1NyeTAz4IcEhiYIzbyNZK9Mtj3xCTxKGym8ZpA0E14AGZKXxnGYe Jh5GHbk4aKxQfcnF65zTDmAEiuCIspCem4DWTxf3Kcc2kQYcMs7tiUmdwTCbPyl/HQ3xzRiIPBM 0Flu8kNrckrtCNIa0tPWwO184DuRUAX0u96lVWy6F1xBKhlAmjLnkPEc5buAmv/RCL67kM3K4/N ZyGy2lmMu+uEoT2yxXYO3zyl+CZ2C5lPg4D39KxvdoVoQpzVOdrhxwPMPad8Ilr1/pmWlAiwZXk 0asQnoaQyIluLf/wTdfg4MvffeeN+x4lDzzY6JDb2PHz43EnMICxSHVgcgpLy2XrlH83N7mIIF4 hqpzbK//dwvQyXNINBo8BE= X-Received: by 2002:a05:600c:8b77:b0:493:f783:c46a with SMTP id 5b1f17b1804b1-499a206a553mr7835055e9.6.1787001092211; Mon, 17 Aug 2026 14:11:32 -0700 (PDT) Received: from fedora ([105.74.73.207]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49996176b95sm134587625e9.10.2026.08.17.14.11.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Aug 2026 14:11:31 -0700 (PDT) From: Taha Ed-Dafili <0rayn.dev@gmail.com> To: jic23@kernel.org, lars@metafoo.de Cc: Michael.Hennerich@analog.com, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, dlechner@baylibre.com, nuno.sa@analog.com, andy@kernel.org, skhan@linuxfoundation.org, linux@analog.com, linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Taha Ed-Dafili <0rayn.dev@gmail.com> Subject: [PATCH v4 2/6] iio: dac: ad5504: Align headers with IWYU principle Date: Mon, 17 Aug 2026 17:11:11 -0400 Message-ID: <20260817211118.21833-3-0rayn.dev@gmail.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260817211118.21833-1-0rayn.dev@gmail.com> References: <20260817211118.21833-1-0rayn.dev@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Update the header inclusions to follow the IWYU principle and ensure they are sorted alphabetically: - Remove , , and as they are unused. The driver relies on devm_ managed allocations, so slab is not required. - Replace with as only the BIT() and GENMASK() macros are used. - Add for struct spi_device_id. - Add and for error codes and data types. - Add for cpu_to_be16(). - Add for ARRAY_SIZE(). - Add for string to integer conversions. - Replaced with Signed-off-by: Taha Ed-Dafili <0rayn.dev@gmail.com> --- drivers/iio/dac/ad5504.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/drivers/iio/dac/ad5504.c b/drivers/iio/dac/ad5504.c index ad1a74678cf2..689147cdaa14 100644 --- a/drivers/iio/dac/ad5504.c +++ b/drivers/iio/dac/ad5504.c @@ -5,22 +5,26 @@ * Copyright 2011 Analog Devices Inc. */ =20 -#include -#include -#include +#include +#include +#include +#include #include -#include +#include +#include #include #include -#include #include #include +#include =20 #include #include #include #include =20 +#include + #define AD5504_RES_MASK GENMASK(11, 0) #define AD5504_CMD_READ BIT(15) #define AD5504_CMD_WRITE 0 --=20 2.55.0 From nobody Mon Sep 28 20:12:34 2026 Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.51]) (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 71BCE471410 for ; Mon, 17 Aug 2026 21:11:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787001099; cv=none; b=PNrqCfZjGA+Jp/lCEexchK1xKJBXVVYdXTktMpG2KkmVEfiUbB45RG/gGFw+XlCkFsdq9VJQf88wAFn/Qfx43B3TYymvzYZXR79KUHQCgjKYGvTgaeVUcQhczvIf7g/zI3f8POupfPeYAs3zugVtHavfdgbgFFuuqfrVble/1n8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787001099; c=relaxed/simple; bh=WbTAqwH1hEHc7w/nmSJFTeDBlIBMy1IZRPJDl8XZxxc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=fl/7s1EXCeDG+1DMpc0RQapNuhXmjphoPqG/GKvMF3Mp0I0bIpuUe32lvfklEn9Xvq76ys3CpgC4pUAA0zBiwnQaB9ZO+s3NfAWCXa7NffowmgzCRX3/UKrmWC7xZMwarFxTsfcHvfCHayg3Chq4Gh1EQ4uNVBs0JNo8humzKds= 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=oYthXJao; arc=none smtp.client-ip=209.85.128.51 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="oYthXJao" Received: by mail-wm1-f51.google.com with SMTP id 5b1f17b1804b1-4980fe6b3beso2390445e9.0 for ; Mon, 17 Aug 2026 14:11:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1787001096; x=1787605896; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=pPltEi6/m6MK7qnK+08esVhAO7E1S2IgaHOgnArHxZI=; b=oYthXJaoI10XoywU25SywsfQ6Xsi+8CdjqtGLSgA30UhrfH2SUrBcK5cTysNMj0UMb mt6FxRoR6zQ9AMTCiB+CFRj4n55XiihSM/NmzaRbaGk3VEzqQjQkJVqrMyXi1drUizqY RYjVGsAuBCAW6F1FKBWRgyJX4cxARru1+/X02jGCtnCih4VFNIbdWYR+kb90FWt/GvVa gbU95j3X+8JBP+ngBSnnG80YcFIMYtSyx70XitjXCl64q4ONW5DeeVJNOVFl5mgRzMma QHt2TgBQkbKo7cjLrXvzBDcg/3SIlUEtCDpJnwD6giJJnhBU9DH7mjHqB6dxUTGdaDHL l3/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787001096; x=1787605896; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=pPltEi6/m6MK7qnK+08esVhAO7E1S2IgaHOgnArHxZI=; b=RCa4gOChwwGPx49/n3+aKgarJS8EZz3ByJP8QO0aRq8D/wW2LA0GaeKHoDt5oKkEVn OXdTy6eVne4uh7cKA/AkjQkTlhHe7uIY8kd+uerW2IoL9rrhomhBFoLc8KLyV71PTL+j uDOF7jFYUgOo+io/4+bXBE3fjWF8UV8EmZ7xEUlT3sg/9MmsFVlISKuRKMcvxUSCpHsb QsHiGpbQqD/cjqWicyLNepE95B7LN7EnLgu7Vi1fWWwoC5sL9Tu93Z7LjniRkUrHKPu4 Ns4Vjv/WjOijxZwiT/yG+8WX20u3i8HhqC9xCi2Upck8mFyMDJIVKJyMZ/9OleVy2tlz tQ1Q== X-Forwarded-Encrypted: i=1; AHgh+RrDNwO/R5xTdd0Nr49QQ2rFn/DBtFalscdbhL8SXlykJwgdysz1v3pMjDsl58q9zWKHGCTu4y9YH5VyeoI=@vger.kernel.org X-Gm-Message-State: AOJu0YxMGD0xX3o6+THVP1Rr7LZngUe6KdDuJ3RueeJeKCYMNX3TFPYY RzWCdJjCB1rv2UGDpGbI4PFE1Nc+N8sxOZxEOVWq1OWpLQw0AAOTHhGQ X-Gm-Gg: AR+sD10+5ZxBMgYMD8FIzB7CF/YUzVhBm/MfDkLTS71zfZHL89pLuhK5msJ1St5L42P uT+8jzHhSc7u/XpCwLFQqIgP+PwZ6lEIfzBgtnKUoRDizvhjXVKpKM/8hdytFkKYyNR/5gOcapO eKmoXY5+rcYZXMXANIBydaqKKTjYQTyA9LCGBc4SKc9QFIfg0BnDfU4PlyHluMCNwAceCwiA656 UveQxk1MlRBxPAu732UmOwyI1mKAkm6UDpdPS+a9CxvgICGzXKg3dUEDnGfvEx1RaCAhJmifSX5 2aI2cSTHSCfpuU9jhFJuVcR67IyuyJw8I2SgwML88BatBSc3wgdaXS9yDjIm0AiTv22VNMBb9VC yA0jdTxOFDywCSyv/SuCs+C8kZ6X75Ps7Dt0P2HK4R+Sa/XXXKcTRniRBdKvwSPpWOWHQaCNCaK 7X/bIdbCvqfAojydSThWhyGNpGOLvZy2xLE76GA9iKBvnX84DU4AOXrq4V5zbW5aZVzZtn1Rmxi tC92hMeSK+e1fAGU/dx5N0= X-Received: by 2002:a05:600c:1394:b0:499:8d9b:832c with SMTP id 5b1f17b1804b1-499a2060a14mr5656095e9.4.1787001095635; Mon, 17 Aug 2026 14:11:35 -0700 (PDT) Received: from fedora ([105.74.73.207]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49996176b95sm134587625e9.10.2026.08.17.14.11.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Aug 2026 14:11:35 -0700 (PDT) From: Taha Ed-Dafili <0rayn.dev@gmail.com> To: jic23@kernel.org, lars@metafoo.de Cc: Michael.Hennerich@analog.com, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, dlechner@baylibre.com, nuno.sa@analog.com, andy@kernel.org, skhan@linuxfoundation.org, linux@analog.com, linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Taha Ed-Dafili <0rayn.dev@gmail.com> Subject: [PATCH v4 3/6] iio: dac: ad5504: remove legacy platform data support Date: Mon, 17 Aug 2026 17:11:12 -0400 Message-ID: <20260817211118.21833-4-0rayn.dev@gmail.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260817211118.21833-1-0rayn.dev@gmail.com> References: <20260817211118.21833-1-0rayn.dev@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The AD5504 driver contains fallback logic to use legacy pdata for configuration. Since modern systems configure hardware exclusively using device tree or ACPI, and there are no in tree users for it. It can be safely removed. Drop the ad5504_platform_data structure, remove the fallback logic from the probe function, and delete the dedicated include/linux/iio/dac/ad5504.h header file. Signed-off-by: Taha Ed-Dafili <0rayn.dev@gmail.com> --- drivers/iio/dac/ad5504.c | 14 +++----------- include/linux/iio/dac/ad5504.h | 15 --------------- 2 files changed, 3 insertions(+), 26 deletions(-) delete mode 100644 include/linux/iio/dac/ad5504.h diff --git a/drivers/iio/dac/ad5504.c b/drivers/iio/dac/ad5504.c index 689147cdaa14..55ce7e49e0e0 100644 --- a/drivers/iio/dac/ad5504.c +++ b/drivers/iio/dac/ad5504.c @@ -18,7 +18,6 @@ #include #include =20 -#include #include #include #include @@ -275,7 +274,6 @@ static const struct iio_chan_spec ad5504_channels[] =3D= { static int ad5504_probe(struct spi_device *spi) { struct device *dev =3D &spi->dev; - const struct ad5504_platform_data *pdata =3D dev_get_platdata(dev); struct iio_dev *indio_dev; struct ad5504_state *st; int ret; @@ -287,16 +285,10 @@ static int ad5504_probe(struct spi_device *spi) st =3D iio_priv(indio_dev); =20 ret =3D devm_regulator_get_enable_read_voltage(dev, "vcc"); - if (ret < 0 && ret !=3D -ENODEV) + if (ret < 0) return ret; - if (ret =3D=3D -ENODEV) { - if (pdata->vref_mv) - st->vref_mv =3D pdata->vref_mv; - else - dev_warn(dev, "reference voltage unspecified\n"); - } else { - st->vref_mv =3D ret / 1000; - } + + st->vref_mv =3D ret / 1000; =20 st->spi =3D spi; indio_dev->name =3D spi_get_device_id(st->spi)->name; diff --git a/include/linux/iio/dac/ad5504.h b/include/linux/iio/dac/ad5504.h deleted file mode 100644 index 9f23c90486ee..000000000000 --- a/include/linux/iio/dac/ad5504.h +++ /dev/null @@ -1,15 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-only */ -/* - * AD5504 SPI DAC driver - * - * Copyright 2011 Analog Devices Inc. - */ - -#ifndef SPI_AD5504_H_ -#define SPI_AD5504_H_ - -struct ad5504_platform_data { - u16 vref_mv; -}; - -#endif /* SPI_AD5504_H_ */ --=20 2.55.0 From nobody Mon Sep 28 20:12:34 2026 Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) (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 ACC4A471CE7 for ; Mon, 17 Aug 2026 21:11:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787001101; cv=none; b=e5TiuQEYmh9iPuzVXN+p9WnyMNQDXAPdfsUx8G/3Kt3auZqWlPuJuRl8tRJDVACSTvzeSAC8pwI2EgYbr8ra8fA4PPvwdFN7rbVa5uIpDVTXxC93zcshEovHYA14Q2/OtvgR/J4/l9Uqw0mFmM7tYX2kmNuLhtGNNjvX+zVHfQc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787001101; c=relaxed/simple; bh=aNLYiY8tiU4jrBfATIo+G+2FSehF6lKWMP6uC1EN+YQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=FQ+boy/HEjJA+zS5eItXoQi+Kb884a2OuPmnkVnlzmF90wJZyRFotfk97/cjVIU9DvE2CtXFElA6fSM5ZychvlosUy6OM65IrUj53DqS31HGnoIgcv+E5ECvTPzIx5psRnzJ84J6F6TzvQkW8+SP5d2oN1TJXBscmXhfLryD+oE= 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=ajBla6Ml; arc=none smtp.client-ip=209.85.128.45 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="ajBla6Ml" Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-4954f5e8020so20472945e9.2 for ; Mon, 17 Aug 2026 14:11:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1787001098; x=1787605898; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=4Sn4eADzJ/6sfHwf7n+bx/UFgtIfsM24y9dSKsP+YBs=; b=ajBla6MlitU53YnDq7XkgpZcQBFZ6Q3axctz2td5PY3GTwjHHWmxE8b1hS2nkPrBWW /uyIluund1n08nibSwQXztJnQTdg4OSp7WBqIry0wQYQREfiEITrqYVxEgUobhiYx8LV 2A4tnR9MgSfwS0HY+6jIMEopwEPR0+YcOCIYWXtCwE7jNOjLU61gQrIMHKaJDXFc5ncG mdIMJEYk6PtxZKL43e3aspFdUHmaUJQqUa/pBQCZOYhA8dhIy+8Ara+Hgp01vgxrss1E p1evCRrVF5ZsEIfqfWgTaN8gvz3+OJGy4mSMohO8/yfoDM0ZB1jXYDwQCg7uF6n2e4zt RihA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787001098; x=1787605898; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=4Sn4eADzJ/6sfHwf7n+bx/UFgtIfsM24y9dSKsP+YBs=; b=NJF2t9hh2Gj2bead0ZsnbnCxqKT9xto77mfWbKz0KiJinsN7JngGnkhV92ED4ujlw0 gYPEHotMvI73+Y5dJ/tuuEmkQkmXjbIHrqnu+WTcwrHSv3En8F/vgYsmofBDFf1xWcpQ lRxOIqCzpEs3ik8bA/eOhTuvG8cQGJ09M34NTK0vkCyU1ttTCgWJbKwcMehJa8NaCRmJ ARPaAq7FmKEuM18VIMrbcf/zDkw7VlMLULeBfOAyPWwy//+d/SewwDbEQmMVwuRhUYo3 JauIlblpiXLBvanugZsC0V9ywU1RHxBoeWBCtG9B/v87RtKbFuIFWRJnT1s1WvT/TYEg pZBw== X-Forwarded-Encrypted: i=1; AHgh+RoEYRFJMnmEgi0UMBixUVGcM5ufJP6mHzWVilhrrNAdhPWGNKV3dRIDXBWuUiBEusAmlhcC6LRy6jPFdjQ=@vger.kernel.org X-Gm-Message-State: AOJu0Yxxa0gLIG9UqAYWWImzsxFw3DnvJGar0UO2yaxKX6HAVoIuZcCh Iz5SEu7iLk3Wy5gyVoQkxA6jqHXxG2fKQFtypU6Il8kCm8H85cldVnh4 X-Gm-Gg: AR+sD12fJcUibnUwmYqMTCUCk+rVwsfBGShWYjiucjE3uva8DYIDWOpYxlHJzPEad5G r0efJY4D0QtK2oxiq2jNyuVkpbEEZdtr/JLZnO1qlezPsOWTz+Yyqkq0i2VpU4B0TZRCGg5qpul tXwi1cb5kfEPktKlRnRpBQGobfqmsdkheqB3btbjCHZPBc3qBL8UypgN8MTMvBTIysH7pQ7qD1m ubtBGQzHowQfWCyB0GFoYBK92H5TdfF4xdrH9Zxy421WHSCXOqihx3nV+x9RH1F/8bToDmcAhB3 sW/G8yIwHvoiB/HW7k2Jj6UQjZdLBzntr6UMnF+6cO6ifrU67sMGfFjHZovKPklm3OrFs1rr+ZR Q7gHaOlQFynyEu4ariFneq5rcnKp3XuYSRL+R46XfC2DEGp73i0/kTzlMSu0FYUY7E0PRZe4CEk hC0iDV9DQRh8zK/Ya/l7mqD+KDMQXm+oS9LmesEdL4+BLQ89OiT1wfaEDehrQ1PQlynkpeRwrZG 4o8v4kbtN8K X-Received: by 2002:a05:600c:4614:b0:499:858f:2653 with SMTP id 5b1f17b1804b1-49987929193mr291105475e9.2.1787001097786; Mon, 17 Aug 2026 14:11:37 -0700 (PDT) Received: from fedora ([105.74.73.207]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49996176b95sm134587625e9.10.2026.08.17.14.11.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Aug 2026 14:11:37 -0700 (PDT) From: Taha Ed-Dafili <0rayn.dev@gmail.com> To: jic23@kernel.org, lars@metafoo.de Cc: Michael.Hennerich@analog.com, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, dlechner@baylibre.com, nuno.sa@analog.com, andy@kernel.org, skhan@linuxfoundation.org, linux@analog.com, linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Taha Ed-Dafili <0rayn.dev@gmail.com> Subject: [PATCH v4 4/6] iio: dac: ad5504: introduce local lock to protect state and spi transfers Date: Mon, 17 Aug 2026 17:11:13 -0400 Message-ID: <20260817211118.21833-5-0rayn.dev@gmail.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260817211118.21833-1-0rayn.dev@gmail.com> References: <20260817211118.21833-1-0rayn.dev@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The AD5504 driver currently lacks locking, exposing it to several multi-threading race conditions: 1. The shared DMA-safe SPI transfer buffers (st->data) can be corrupted if multiple threads trigger read_raw or write_raw simultaneously. 2. The ad5504_write_dac_powerdown() routine executes a sequence of back-to-back SPI writes (a CTRL register update followed by a mandatory NOOP). This entire sequence must be atomic. 3. Internal state variables like pwr_down_mask and pwr_down_mode can be read and modified concurrently. Introduce a mutex in the ad5504_state structure and initialize it via devm_mutex_init() in probe. Use the modern scoped guard(mutex) macro at the top-level public IIO callbacks (read_raw, write_raw, and the powerdown attributes) to safely serialize access to the device state and the SPI bus. In ad5504_read_raw() and ad5504_write_raw(), guard(mutex) is scoped to the IIO_CHAN_INFO_RAW case only, since IIO_CHAN_INFO_SCALE merely reads vref_mv, which is fixed at probe time and never modified afterward and therefore needs no serialization. Because guard(mutex) declares a cleanup-scoped variable, it cannot appear directly after a case label; wrap the case body in a compound statement (case IIO_CHAN_INFO_RAW: { ... }) to give it the block scope it requires. Signed-off-by: Taha Ed-Dafili <0rayn.dev@gmail.com> --- Note: The concurrency race conditions addressed in this patch were=20 originally reported by the Sashiko bot: https://sashiko.dev/#/patchset/20260509142047.30302-1-0rayn.dev@gmail.com drivers/iio/dac/ad5504.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/drivers/iio/dac/ad5504.c b/drivers/iio/dac/ad5504.c index 55ce7e49e0e0..87946cdf69e7 100644 --- a/drivers/iio/dac/ad5504.c +++ b/drivers/iio/dac/ad5504.c @@ -7,12 +7,14 @@ =20 #include #include +#include #include #include #include #include #include #include +#include #include #include #include @@ -49,10 +51,12 @@ * @pwr_down_mask: power down mask * @pwr_down_mode: current power down mode * @data: transfer buffer + * @lock: lock to protect state and spi transfers */ struct ad5504_state { struct spi_device *spi; struct regulator *reg; + struct mutex lock; unsigned short vref_mv; unsigned pwr_down_mask; unsigned pwr_down_mode; @@ -103,7 +107,8 @@ static int ad5504_read_raw(struct iio_dev *indio_dev, int ret; =20 switch (m) { - case IIO_CHAN_INFO_RAW: + case IIO_CHAN_INFO_RAW: { + guard(mutex)(&st->lock); ret =3D ad5504_spi_read(st, chan->address); if (ret < 0) return ret; @@ -111,6 +116,7 @@ static int ad5504_read_raw(struct iio_dev *indio_dev, *val =3D ret; =20 return IIO_VAL_INT; + } case IIO_CHAN_INFO_SCALE: *val =3D st->vref_mv; *val2 =3D chan->scan_type.realbits; @@ -128,11 +134,13 @@ static int ad5504_write_raw(struct iio_dev *indio_dev, struct ad5504_state *st =3D iio_priv(indio_dev); =20 switch (mask) { - case IIO_CHAN_INFO_RAW: + case IIO_CHAN_INFO_RAW: { + guard(mutex)(&st->lock); if (val >=3D (1 << chan->scan_type.realbits) || val < 0) return -EINVAL; =20 return ad5504_spi_write(st, chan->address, val); + } default: return -EINVAL; } @@ -148,6 +156,7 @@ static int ad5504_get_powerdown_mode(struct iio_dev *in= dio_dev, { struct ad5504_state *st =3D iio_priv(indio_dev); =20 + guard(mutex)(&st->lock); return st->pwr_down_mode; } =20 @@ -156,6 +165,7 @@ static int ad5504_set_powerdown_mode(struct iio_dev *in= dio_dev, { struct ad5504_state *st =3D iio_priv(indio_dev); =20 + guard(mutex)(&st->lock); st->pwr_down_mode =3D mode; =20 return 0; @@ -173,6 +183,7 @@ static ssize_t ad5504_read_dac_powerdown(struct iio_dev= *indio_dev, { struct ad5504_state *st =3D iio_priv(indio_dev); =20 + guard(mutex)(&st->lock); return sysfs_emit(buf, "%d\n", !(st->pwr_down_mask & (1 << chan->channel))); } @@ -185,6 +196,7 @@ static ssize_t ad5504_write_dac_powerdown(struct iio_de= v *indio_dev, int ret; struct ad5504_state *st =3D iio_priv(indio_dev); =20 + guard(mutex)(&st->lock); ret =3D kstrtobool(buf, &pwr_down); if (ret) return ret; @@ -284,6 +296,10 @@ static int ad5504_probe(struct spi_device *spi) =20 st =3D iio_priv(indio_dev); =20 + ret =3D devm_mutex_init(dev, &st->lock); + if (ret) + return ret; + ret =3D devm_regulator_get_enable_read_voltage(dev, "vcc"); if (ret < 0) return ret; --=20 2.55.0 From nobody Mon Sep 28 20:12:34 2026 Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.51]) (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 ABF5247140D for ; Mon, 17 Aug 2026 21:11:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787001103; cv=none; b=YaTQHfes+fJ2R9TZrktPej5V+hmjjQxCEzUS6O4uaQsCtJVcYSwZZmsaoZQ52UZEIyvQGfJquv2FnONDGqWuWx8xJPLUrMP/XXGuoV+KulmdHipkqRe4wuY9JVhyROx0s6k7zqHPgmN0poFhD6aH0a3d9x8LyigszHmEd0fOeak= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787001103; c=relaxed/simple; bh=KKCQp/0RMN5WXaLM5bicyktOACB6mRToxqjIMmbfh6k=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=XMP4i/RMYP658Qy5A8z/uU5a7Z8Dku8IHGWs9/O30cm9gKN8+GN4p0Zk+23oRf9eXNXJt++2hRCtqx9RXXQj2hOY5zHTQNwSC1guJ9i5TOQFvtaBdOgRGchu6RWQHKzJrs3dpvXN7za0GrjjqJpwJdBXppN+78svgQ68n+yh14U= 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=GqlD3n6N; arc=none smtp.client-ip=209.85.128.51 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="GqlD3n6N" Received: by mail-wm1-f51.google.com with SMTP id 5b1f17b1804b1-49554ebb87dso39226495e9.3 for ; Mon, 17 Aug 2026 14:11:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1787001100; x=1787605900; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=Igoic2RMUzhWCgHEuYeIt4q8iEPlVBgMNrF843o6/Ho=; b=GqlD3n6NktURbIh0eWjeV0EHpFetk0V04QDFVKCT3dGawChO3C4L/Fe5c+O+LKAGba wgEDckFFjvdF26tRMmjoedqwkzZGzx9WfSOzGCaKRoB7moXTU1dUD49HSHsqkfyH2AOs iqAYFby9bsbWGQbFy9W0UKqBGkgESZBgt/uNC50DnjxfbOcvrSnzUuGrrXLsle5ed2J7 6W0HiBHJ/vC85hAbHzmIklKj1czv+yjmtm9+UN5Tz29A6KaTfB4Z+7DcfcAWC3OW7gcL uzEOgVm20eezVyfS2BCyUwyz/04J+LfcV09qxes9UAI1hWAVt/wyf6hNFcmX6tO8vPBi ysjw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787001100; x=1787605900; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=Igoic2RMUzhWCgHEuYeIt4q8iEPlVBgMNrF843o6/Ho=; b=pnBG1alxlIlBQID6MshmIHdO8P46sxbMfqvcQb6zAK8QsiKJ70+hqeRnn93pYMJRyf 0jgdKnIosWE6lriSkCMAF2Apbs64l9YHvQj8piedyn+TNODIlQ5NR81MZWg6+7CfH0n9 056azdHWn4CdztuUdndV0EsiadjG7XEguv8zvBd0wWFvP92YQCG9z691z7aebwF0Hekp EBncy4N2/nVdxS9GJEHNUHheZHetqNqnq4Lf2X6YSWIiY6EI9utXUOL88iJX8nfVEhat 36aod8bmiQu/y/KB/U+7ri389y5Fmp6ArjxlTiqam2XkPA6KqlIEDuPtt8qvHq45572d +1zQ== X-Forwarded-Encrypted: i=1; AHgh+Rr6aOwuxqh3Sg0esl7N16Gh/pujSODDq6bvVb1M++zoqjNDIhp3gBsqoKqqxOi1FnHDTjhgMRRSdJGqoxg=@vger.kernel.org X-Gm-Message-State: AOJu0YyPGE0JxeHVM09a26X0s1eFsIDPc9lHmWHNvf+grnOviokMJemk nrL/79vwWrrdpZUeH8D3c1QztQ3ErpxFo0pdw4c8zw0887BYHWs0N0kc X-Gm-Gg: AR+sD11jV+MioLI41sPH3Y+oyTUzGFcIduqxHgzVJHfuU5OQh7C5NVUiDOeA2L7vvfa 2mAxL0Rpoh+sM5RxBnBMqoPRW+o1o9PCU5VtnHc/lYUg6T44/MF1LugJ0om8DlyGmnuguYWMHjT WNwBrPCrArQGPB2mkcDSUU5Xg6nGCiTS7lzUUvj7TpMosw0v8LhC7d0fJ1u+MA74Zg9TMARA6vE UUGQr26uhRLja64X7oDju+c/PuipsbAEU6SxPnOBlMOQi+EgjUd7ujfhPILIl4sy05cy8FCdWSg VJrpTtwXOapusKpFsRLUm+hJlkNrQNhvHBVOj9TsqT7ywRbpWfcpc6q3E0vsF7VTnlwZBN9zpTZ UwOsKQbvwlXFbiEr1cnjlkhx8F7utDBQ0YmEwiEyDnR0XSOOneZlfGOt1nsPtELGr81Xr7M6I3k z9YyxI2rN0NL6cb5D0lMn8A42KPvF1x0u+HmWmjJWj4o5VxkI9WDuRWGNl2M1YtB+NkvkW6rQMd dGNXCbXZ9Ae X-Received: by 2002:a05:600c:19d1:b0:495:4e89:3f30 with SMTP id 5b1f17b1804b1-499879ae4f4mr412180665e9.15.1787001099817; Mon, 17 Aug 2026 14:11:39 -0700 (PDT) Received: from fedora ([105.74.73.207]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49996176b95sm134587625e9.10.2026.08.17.14.11.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Aug 2026 14:11:39 -0700 (PDT) From: Taha Ed-Dafili <0rayn.dev@gmail.com> To: jic23@kernel.org, lars@metafoo.de Cc: Michael.Hennerich@analog.com, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, dlechner@baylibre.com, nuno.sa@analog.com, andy@kernel.org, skhan@linuxfoundation.org, linux@analog.com, linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Taha Ed-Dafili <0rayn.dev@gmail.com> Subject: [PATCH v4 5/6] iio: dac: ad5504: strictly separate ACPI and DT probe paths Date: Mon, 17 Aug 2026 17:11:14 -0400 Message-ID: <20260817211118.21833-6-0rayn.dev@gmail.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260817211118.21833-1-0rayn.dev@gmail.com> References: <20260817211118.21833-1-0rayn.dev@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Refactor the ad5504_probe() function to explicitly separate the ACPI and Device Tree execution paths. Previously, the driver relied on a fragile -ENODEV return value check from the regulator framework to bypass the voltage check on ACPI platforms. Following modern IIO subsystem design patterns (such as those found in adc/ti-ads7950.c), fork the logic using ACPI_COMPANION(). On ACPI systems, where dedicated voltage regulators are typically omitted from the firmware description, bypass the regulator subsystem entirely and initialize the reference voltage to the hardware default 60V scale via a new macro AD5504_VA_MV_ACPI_DEFAULT. For Device Tree platforms, treat the VCC regulator as mandatory and wrap the allocation in dev_err_probe() to cleanly handle potential deferrals and error propagation. Signed-off-by: Taha Ed-Dafili <0rayn.dev@gmail.com> --- drivers/iio/dac/ad5504.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/drivers/iio/dac/ad5504.c b/drivers/iio/dac/ad5504.c index 87946cdf69e7..546420f9afc0 100644 --- a/drivers/iio/dac/ad5504.c +++ b/drivers/iio/dac/ad5504.c @@ -19,6 +19,7 @@ #include #include #include +#include =20 #include #include @@ -26,6 +27,10 @@ =20 #include =20 +/* + * In case of ACPI, we use the 60 V as default voltage reference. + */ +#define AD5504_VA_MV_ACPI_DEFAULT (60 * MILLI) #define AD5504_RES_MASK GENMASK(11, 0) #define AD5504_CMD_READ BIT(15) #define AD5504_CMD_WRITE 0 @@ -300,11 +305,16 @@ static int ad5504_probe(struct spi_device *spi) if (ret) return ret; =20 - ret =3D devm_regulator_get_enable_read_voltage(dev, "vcc"); - if (ret < 0) - return ret; + if (ACPI_COMPANION(dev)) { + st->vref_mv =3D AD5504_VA_MV_ACPI_DEFAULT; + } else { + ret =3D devm_regulator_get_enable_read_voltage(dev, "vcc"); + if (ret < 0) + return dev_err_probe(dev, ret, + "Failed to get vcc regulator\n"); =20 - st->vref_mv =3D ret / 1000; + st->vref_mv =3D ret / MILLI; + } =20 st->spi =3D spi; indio_dev->name =3D spi_get_device_id(st->spi)->name; --=20 2.55.0 From nobody Mon Sep 28 20:12:34 2026 Received: from mail-wr1-f49.google.com (mail-wr1-f49.google.com [209.85.221.49]) (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 911A2471CE6 for ; Mon, 17 Aug 2026 21:11:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787001107; cv=none; b=Tb67qW44T4Xyh6JWuDVHJFsIXXSmPAfvt1qYthfyiCnGkegv7NRHsXlnY4QWjHOSXvo+xyCqyB4a/cj6ovo5Xmr2SmE0II7HfWVg1H4rKQgrYa8PDDporYToGbG7t/7BYqJsG2xsGKbmlRA5ZrJWQjfRx85q0sN+bw7qHUgejow= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787001107; c=relaxed/simple; bh=OlM8K7Hln5lV9GkceSzF8HYbv5V1jBHK/YfIivjoDiY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=UPMtFHU2ai9/FLb8TMlS74FX9YlBmYuSqnA6fOxt5DUY/HL64YvB2WPwOosKzzv6WykjRGC7OQk/vS49p32Y6a7cFQ7QuB0JrsDxFFzLq/Dad0rxjKLqDQcBJq+f4+tU9UJoDJ/SnucugV08Kruet4UmWI4lDv5+HEWhz0SwUz4= 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=rvLFtsFs; arc=none smtp.client-ip=209.85.221.49 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="rvLFtsFs" Received: by mail-wr1-f49.google.com with SMTP id ffacd0b85a97d-47f3b39f2a1so3419161f8f.2 for ; Mon, 17 Aug 2026 14:11:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1787001102; x=1787605902; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=2T7LsusGMuIJahe1GygV2/c0EF4vZ4QZqRAMwjrmywg=; b=rvLFtsFsVtbqFBPjYjmAwlwUzaNqHCWuajptiHXDMwXPi+AYNLVG3p6W8auNJMWwOK ddpN/+UdSY/SCRMKtUXwlWjbcouzk23RapAX/WutOONdKnFZNfuzY/zSFznfuSjf3VVo OBCBIOBCiXOT1bNZg2oovieghaAv12Nl3IwU/DoMC3KzERyPV3TEaZQ49XhhoMbSIROZ P9XgK/Le56ZDgcEis/pk1msmjrsx9Gz33JOAByFZJotLpEvNkh0zQlG5QwLjtZ/QfcXc MItH484yPxC2bLOCGxtMNXevYjSKjDc+FWBHWZClJvbb0e/LQPEiLpei/ImVCQFeLK13 MD2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787001102; x=1787605902; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=2T7LsusGMuIJahe1GygV2/c0EF4vZ4QZqRAMwjrmywg=; b=Osv6jOYH8RqGKwaVOeLsjTC9qWPPiHQhR+ppRfLl5BP5z66iOLvbK0bkVVejMi/LZu AVfbeY1Cg2S/cBFsMulRDCpyFI+eeBYbkvcmFtA1Cdu9aBieYEldgMZ+fROP0/WSiqtQ stKJq82ko0+smPgkidAjC/yZBHosqeJ2CXzN1qg9BJdVOvle36ucgOZasV8+iNNRQU8J sRn3gRpGcVbPMaESVKPin2rJ2S+CrbEeVJoU6kwQPRxkV4m0Wfa3LhCR+7NjenhfZP89 PZb4xBwHhKOeet9jP8cSivYu0ZsgXGY8Y8/I1fAm2dvqEGaWiOfUvgbHZ9A11z6e5X+v y4og== X-Forwarded-Encrypted: i=1; AHgh+RpxGkbt5GW+Q1+E+zqXPg9acxghcjbUDBbGiQ5osIlyrLuMo9xZDHmqcmcjdhiXpBnNsCy5Vk5NFlC52YQ=@vger.kernel.org X-Gm-Message-State: AOJu0YzlrGxJ1VT8cD8fbAISS93PqZpIGAEpKibGUO0eaE4k5Z1KEFBD RRDKPGET+EamH3VnzdxA15Ji7GbECxT4O3dKZLQkGtlWXxGF+HblwBcM X-Gm-Gg: AR+sD11dFxhzEvqIHXiMnuIq8jE3SCZIJgqBYXpO0f1gBeQeGLctH59+Z2BUYPz1jRa a5Ufh+ppaB53dNDdaxGH3PfQZ424ygvhMpeD7rzPwSY2fAFm5C83r6IHnuV8pz2AFqp9S8o4khK MrS1dSbFs8B5IBr88Kd+Vdx6OBigoAesqM+rpcVZyUp4A9zV67MfjDUtY3shHcCOgpqfn4acQ9L CtoIoS6Sl8ubiJwJj+XfDNaxIEP5su9EEO2kTQOva0JY3mcH+i5wpHXMO6c17wZxun2ldfNRccC 9MayVaibQLtCbkOpfwMLGcD76DZd2bPuX1XmbuxPvrB0MQiWPjMnslSl+cYabbykRgqRQxXWryd rU6y8win5FEar8kEwyq//ztVk1afG1D61yCyEL8gQS0LVXTFlkCASsif7OIKvHJqFsWHAJ51gyJ 9+wctJDuEZ47+OeZ0M4/V/PGx88bSfdyOTpil4LFjNS5qSlitZSiiV/aAo4ZMvCpgsABTE7XvlO aCXpcutMRc2Fa9OAO2SSJA= X-Received: by 2002:a05:600c:5494:b0:495:4749:16a7 with SMTP id 5b1f17b1804b1-499879a52aamr446795855e9.14.1787001101858; Mon, 17 Aug 2026 14:11:41 -0700 (PDT) Received: from fedora ([105.74.73.207]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49996176b95sm134587625e9.10.2026.08.17.14.11.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Aug 2026 14:11:41 -0700 (PDT) From: Taha Ed-Dafili <0rayn.dev@gmail.com> To: jic23@kernel.org, lars@metafoo.de Cc: Michael.Hennerich@analog.com, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, dlechner@baylibre.com, nuno.sa@analog.com, andy@kernel.org, skhan@linuxfoundation.org, linux@analog.com, linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Taha Ed-Dafili <0rayn.dev@gmail.com> Subject: [PATCH v4 6/6] iio: dac: ad5504: support scale via output-range-microvolt property Date: Mon, 17 Aug 2026 17:11:15 -0400 Message-ID: <20260817211118.21833-7-0rayn.dev@gmail.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260817211118.21833-1-0rayn.dev@gmail.com> References: <20260817211118.21833-1-0rayn.dev@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The AD5504/AD5501 output range (0-30V or 0-60V) is determined by the hardware R_SEL pin and is required to compute IIO_CHAN_INFO_SCALE correctly. Previously the driver derived this solely from the vcc regulator's configured voltage, which conflated the supply voltage with the DAC's actual output range and offered no way to express the range explicitly in firmware. Add support for the standard 'output-range-microvolt' device property, validating that it specifies one of the two supported ranges (0-30V or 0-60V) and using it to set st->vref_mv directly. When this property is present, the vcc regulator is only enabled (not read) via devm_regulator_get_enable(), since the regulator's actual voltage is no longer the source of truth for the output range. For backward compatibility with older device trees that predate this property, fall back to reading the vcc regulator's configured voltage via devm_regulator_get_enable_read_voltage() when 'output-range-microvolt' is absent. Use device_property_present() to explicitly distinguish "property absent" from "property present but malformed", rather than relying on the -EINVAL return from device_property_read_u32_array() as an absence sentinel. That return code is ambiguous: it is also returned when the property exists but the parsed array size does not match the expected length, which would have silently and incorrectly routed a malformed property through the legacy regulator-voltage fallback instead of surfacing a clear validation error. Signed-off-by: Taha Ed-Dafili <0rayn.dev@gmail.com> --- drivers/iio/dac/ad5504.c | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/drivers/iio/dac/ad5504.c b/drivers/iio/dac/ad5504.c index 546420f9afc0..25c0744545f0 100644 --- a/drivers/iio/dac/ad5504.c +++ b/drivers/iio/dac/ad5504.c @@ -15,6 +15,7 @@ #include #include #include +#include #include #include #include @@ -293,6 +294,7 @@ static int ad5504_probe(struct spi_device *spi) struct device *dev =3D &spi->dev; struct iio_dev *indio_dev; struct ad5504_state *st; + u32 range[2]; int ret; =20 indio_dev =3D devm_iio_device_alloc(dev, sizeof(*st)); @@ -308,12 +310,30 @@ static int ad5504_probe(struct spi_device *spi) if (ACPI_COMPANION(dev)) { st->vref_mv =3D AD5504_VA_MV_ACPI_DEFAULT; } else { - ret =3D devm_regulator_get_enable_read_voltage(dev, "vcc"); - if (ret < 0) - return dev_err_probe(dev, ret, - "Failed to get vcc regulator\n"); - - st->vref_mv =3D ret / MILLI; + if (device_property_present(dev, "output-range-microvolt")) { + ret =3D device_property_read_u32_array(dev, "output-range-microvolt", + range, ARRAY_SIZE(range)); + if (ret) + return dev_err_probe(dev, ret, + "Error parsing output-range-microvolt\n"); + + if (range[0] !=3D 0 || (range[1] !=3D 30 * MICRO && range[1] !=3D 60 * = MICRO)) + return dev_err_probe(dev, -EINVAL, + "Invalid output-range-microvolt\n"); + + st->vref_mv =3D range[1] / MILLI; + + ret =3D devm_regulator_get_enable(dev, "vcc"); + if (ret < 0) + return dev_err_probe(dev, ret, "Failed to enable vcc regulator\n"); + } else { + /* Backward compat: old DTs without output-range-microvolt */ + ret =3D devm_regulator_get_enable_read_voltage(dev, "vcc"); + if (ret < 0) + return dev_err_probe(dev, ret, "Failed to get vcc regulator\n"); + + st->vref_mv =3D ret / MILLI; + } } =20 st->spi =3D spi; --=20 2.55.0