From nobody Sat Jul 25 17:34:02 2026 Received: from mx0a-00128a01.pphosted.com (mx0a-00128a01.pphosted.com [148.163.135.77]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 61F00432E86; Wed, 15 Jul 2026 11:41:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.135.77 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784115718; cv=none; b=i0Ihb/AgGRFkxTiV36ThL7SiQUiOHRSPns4YSFQPscjj2pL8zUctWIaGo6XPo297Dzk+vyIANqvUZEFFOOUdb+tu/CoL2Hns61B9p79VNQX8tmEwjfOne//PN4iVJ3Jf+1i4UDiXp47FOf93G5ueccSwF4I2SzGjbeqv1Aw+EPg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784115718; c=relaxed/simple; bh=SNJI92VrprHtT5MzdFsRMm8PBprcV5VudH8UFNZRHUM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-ID:References: In-Reply-To:To:CC; b=oKTDGzUnYNDkteyBARdcEAleVy92wbF14mPoM6Ft7mrVJL9BCByEZeplp2xj4CrQYfj9Q8S8BC4KBePz0y9yesxU33w2hxphzuC2sRXadZnRyuMJMFMOD18LlbQNnWAesq0kA59jhf9RYASJdbWJvSmmdq4UqWnAqXU7rIswOo4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=analog.com; spf=pass smtp.mailfrom=analog.com; dkim=pass (2048-bit key) header.d=analog.com header.i=@analog.com header.b=vmRwTPna; arc=none smtp.client-ip=148.163.135.77 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=analog.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=analog.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=analog.com header.i=@analog.com header.b="vmRwTPna" Received: from pps.filterd (m0167088.ppops.net [127.0.0.1]) by mx0a-00128a01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66FBZjUo874893; Wed, 15 Jul 2026 07:41:37 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=analog.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=DKIM; bh=BE8eW SesmvUP52eRWrhETcYMR+9iEWP4oNF9iE59a/0=; b=vmRwTPna0MewKPr1yaSD2 NlgFDeYCTd61bZkqWouOspTWRkiB53bgg9QYbG/lhpBq0YMrQ2tX28UkbBEXSt/+ PGcZYgkEdi6x03vwc85bczhiyiPzGX+I8AmQG4mrTQFURW0c85gd0tRqfC9GGPnH iKglgDZrF90/YQS4TRFOL5GnF9NRHjRSFI2ZLgG6yjctdiNjY1r3M/Afe6M7zBwF 5/7+1Ru8PlGKS3fg/Qt/GxA/xFvot2a9gk/fQzJJ6ufT/2Bcc2PdCEYlC4WPvU/N xwpxaeS5cst2gg+fLJJatwX1WGXJvAsnALh2KjnxKjfOYkzCLnxXV/VUX/NbVPHn A== Received: from nwd2mta4.analog.com ([137.71.173.58]) by mx0a-00128a01.pphosted.com (PPS) with ESMTPS id 4fe8a8883w-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 15 Jul 2026 07:41:36 -0400 (EDT) Received: from ASHBMBX9.ad.analog.com (ASHBMBX9.ad.analog.com [10.64.17.10]) by nwd2mta4.analog.com (8.14.7/8.14.7) with ESMTP id 66FBfZgr004882 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Wed, 15 Jul 2026 07:41:35 -0400 Received: from ASHBCASHYB4.ad.analog.com (10.64.17.132) by ASHBMBX9.ad.analog.com (10.64.17.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1748.37; Wed, 15 Jul 2026 07:41:35 -0400 Received: from ASHBMBX8.ad.analog.com (10.64.17.5) by ASHBCASHYB4.ad.analog.com (10.64.17.132) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1748.37; Wed, 15 Jul 2026 07:41:35 -0400 Received: from zeus.spd.analog.com (10.66.68.11) by ashbmbx8.ad.analog.com (10.64.17.5) with Microsoft SMTP Server id 15.2.1748.37 via Frontend Transport; Wed, 15 Jul 2026 07:41:35 -0400 Received: from HYB-e1y2fvUQ3cx.ad.analog.com (HYB-e1y2fvUQ3cx.ad.analog.com [10.44.3.54]) by zeus.spd.analog.com (8.15.1/8.15.1) with ESMTP id 66FBfASq024964; Wed, 15 Jul 2026 07:41:26 -0400 From: Janani Sunil Date: Wed, 15 Jul 2026 13:41:04 +0200 Subject: [PATCH v6 1/5] spi: dt-bindings: Add spi-device-addr peripheral property 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: <20260715-ad5529r-driver-v6-1-cfdf8b9f5ee3@analog.com> References: <20260715-ad5529r-driver-v6-0-cfdf8b9f5ee3@analog.com> In-Reply-To: <20260715-ad5529r-driver-v6-0-cfdf8b9f5ee3@analog.com> To: Lars-Peter Clausen , Michael Hennerich , Jonathan Cameron , "David Lechner" , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Philipp Zabel , "Jonathan Corbet" , Shuah Khan , Mark Brown , Marius Cristea , "Marcus Folkesson" , Kent Gustavsson CC: , , , , Janani Sunil , , Kent Gustavsson , Janani Sunil X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784115670; l=1148; i=janani.sunil@analog.com; s=20260507; h=from:subject:message-id; bh=SNJI92VrprHtT5MzdFsRMm8PBprcV5VudH8UFNZRHUM=; b=pzNNW1QbN+ccdNtmkPwTFxF9iqFGKbQUrmN0S7awc+xek4HDg6H3THNO8ijwYeBa/+I1P4H5W EvwBWa7adgTBrcABGeclidNoJbMWTGl+cKJ0NoRAH4KGkR4j/ctbzD8 X-Developer-Key: i=janani.sunil@analog.com; a=ed25519; pk=e25MyjRLPY3RWrYm/LrJ+/+t1MZJUbkgIW5CZg+g+hA= X-ADIRuleOP-NewSCL: Rule Triggered X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE1MDExNSBTYWx0ZWRfX1hs7wp4VSwTz Q3EUt2AteiS47mKN1KWiy3Fe4QtNUZBbRPrss0FCokb8KBHaQUfIXTzo0jM1Nckq2kclTLnH1NW X4sl2SgjDCwnyYQc5I1uvVr9PqQfVHpBeehqKyAUOr4UemyBl6u2XxC2B8XUIv5sD86FcZTUvHu JKMz7fKLBDOz9hf1lxkXVp7jPoNiKChTHQvnGGnzHw2Aw4U8UZLfmCE8l1ZW+rbfGjkyn4/IOqJ z8W79uBepiKLU6wxL76QX4KgHESlqqyQhinkKX+yhGvDpiWx5oe0GY8ofw7A3s2bo3BJ4N7nI+7 ryYoB/SkrzC8VOCqPFE2cJYurTI4Z1zqiKNtmc50AEeElP1FFCRcOpCFTEWltGdqwGks5LF58ZX 3HZk5By3axn7kuhEQKCd3D4d/JA+JiXr8oqjkzooVBEDNbvPgZN4jcGSLC9cQOPdHm1gdhjQRgj 5CAUKb0D7z+ZijMxmMQ== X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE1MDExNSBTYWx0ZWRfX7VunHA09cExb V/Lo1JX/hMo+mVonSF4yKirmlwDy28mIkaJ8z+zxZ3o1aJyjpsVEWw4xnvDq3h7tVo8Ilp5TlVZ bSjuREix5pMbXYl24SklRkpZz4ZH/7P3JdeqHhFVrcl5cV3kmOX0 X-Authority-Analysis: v=2.4 cv=R4sz39RX c=1 sm=1 tr=0 ts=6a5771f0 cx=c_pps a=3WNzaoukacrqR9RwcOSAdA==:117 a=3WNzaoukacrqR9RwcOSAdA==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=VkNPw1HP01LnGYTKEx00:22 a=0sLvza09kfJOxVLZPwjg:22 a=uXIjobp8t2wMuQ0fPvqm:22 a=gAnH3GRIAAAA:8 a=p7DZuduEnTu05McJuzUA:9 a=QEXdDO2ut3YA:10 X-Proofpoint-ORIG-GUID: 31ukvQkm1fW_4KvNVQb5YUvFd8FAehHz X-Proofpoint-GUID: 31ukvQkm1fW_4KvNVQb5YUvFd8FAehHz X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-15_02,2026-07-15_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 spamscore=0 malwarescore=0 clxscore=1011 priorityscore=1501 lowpriorityscore=0 impostorscore=0 phishscore=0 suspectscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607150115 Some SPI devices support sharing a single chip select across multiple physical chips by encoding a device address in the SPI frame itself. Add the generic spi-device-addr property for describing these hardware addresses. The property is placed on the SPI peripheral node and may contain multiple addresses. Signed-off-by: Janani Sunil --- Documentation/devicetree/bindings/spi/spi-peripheral-props.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Documentation/devicetree/bindings/spi/spi-peripheral-props.yam= l b/Documentation/devicetree/bindings/spi/spi-peripheral-props.yaml index 880a9f624566..135657582131 100644 --- a/Documentation/devicetree/bindings/spi/spi-peripheral-props.yaml +++ b/Documentation/devicetree/bindings/spi/spi-peripheral-props.yaml @@ -142,6 +142,11 @@ properties: minItems: 2 maxItems: 4 =20 + spi-device-addr: + $ref: /schemas/types.yaml#/definitions/uint32-array + description: + Device address used when multiple peripherals share a single chip se= lect. + st,spi-midi-ns: deprecated: true description: | --=20 2.43.0 From nobody Sat Jul 25 17:34:02 2026 Received: from mx0a-00128a01.pphosted.com (mx0a-00128a01.pphosted.com [148.163.135.77]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 29F5D448D03; Wed, 15 Jul 2026 11:42:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.135.77 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784115725; cv=none; b=Ji/QnOy44SCQbsA5AI5aOPCDQJpXFmrPIHCx+pdb1eeMSG7GQv0/4lWcChRcvrBCBVcatU7MuEYzXT8R6igmhSiphF+gJ6HabN0nJ3aETtHkgYiWXyRDowADQwBAC9hOi2myWKRYfTBFrLNPJ1+FWfgFV7VJx8ug4bfueuxqlCw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784115725; c=relaxed/simple; bh=21OJd7m2egWDVGrGbW/ZtbwclJwnKRyz6WrrkqTffk4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-ID:References: In-Reply-To:To:CC; b=q6lvKPfYO7baIW1HUURAkDuE+d75ykcOCsI6S17Ce1kneRNmUCJd3Eu36Fi2H7qoPbkWqEoKDjF7vQJCENoBLH9/cq5thPGxzFwk60cMiuKozGaE1DCLacB1MRNQchtpkp2aJ35K5eBI25J81ebDv9VH7CpqzeffEl1ku6N+RQ8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=analog.com; spf=pass smtp.mailfrom=analog.com; dkim=pass (2048-bit key) header.d=analog.com header.i=@analog.com header.b=ti9umuQ/; arc=none smtp.client-ip=148.163.135.77 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=analog.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=analog.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=analog.com header.i=@analog.com header.b="ti9umuQ/" Received: from pps.filterd (m0167088.ppops.net [127.0.0.1]) by mx0a-00128a01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66FBZiNr874876; Wed, 15 Jul 2026 07:41:41 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=analog.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=DKIM; bh=twPuT N86UO5XovlX18irC14nN3OHnXtDsxjEQaT48fk=; b=ti9umuQ/JNEpYlWNKIj2C LYi7mmw1wcnTzgO/72BRnXD04GHkspvL+sHPuMBagdne4KQ3Rilb3ZWY/mwJOWsq mfIefzjBS5V7R0Jm19CAqrhFhCocATaTJZN6BKaEQ37VfvnteiYBl+h2z7HqrWtY /fWjJGaAE5v2tGhpsz+OTrUcGiieqk4aPRLrVmnA1xkHgMEW9q/yYhH8hVGYzZf5 IHcEWNjeeXuB/CwOZic0vDirx+scReAiNS/zu/OTG9Z7V5KoaNDiBshiH0hjNCoe A4Cf9qGQi6VD9FNYjHy7IVEFLIcrzAGNiC9rRGm83W6tCe51Y9EnDtLRMD8h4s8Z Q== Received: from nwd2mta4.analog.com ([137.71.173.58]) by mx0a-00128a01.pphosted.com (PPS) with ESMTPS id 4fe8a88845-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 15 Jul 2026 07:41:41 -0400 (EDT) Received: from ASHBMBX9.ad.analog.com (ASHBMBX9.ad.analog.com [10.64.17.10]) by nwd2mta4.analog.com (8.14.7/8.14.7) with ESMTP id 66FBfeDe004902 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Wed, 15 Jul 2026 07:41:40 -0400 Received: from ASHBCASHYB5.ad.analog.com (10.64.17.133) by ASHBMBX9.ad.analog.com (10.64.17.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1748.37; Wed, 15 Jul 2026 07:41:40 -0400 Received: from ASHBMBX8.ad.analog.com (10.64.17.5) by ASHBCASHYB5.ad.analog.com (10.64.17.133) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1748.37; Wed, 15 Jul 2026 07:41:40 -0400 Received: from zeus.spd.analog.com (10.66.68.11) by ashbmbx8.ad.analog.com (10.64.17.5) with Microsoft SMTP Server id 15.2.1748.37 via Frontend Transport; Wed, 15 Jul 2026 07:41:38 -0400 Received: from HYB-e1y2fvUQ3cx.ad.analog.com (HYB-e1y2fvUQ3cx.ad.analog.com [10.44.3.54]) by zeus.spd.analog.com (8.15.1/8.15.1) with ESMTP id 66FBfASr024964; Wed, 15 Jul 2026 07:41:29 -0400 From: Janani Sunil Date: Wed, 15 Jul 2026 13:41:05 +0200 Subject: [PATCH v6 2/5] dt-bindings: iio: adc: microchip,mcp3564: Add spi-device-addr 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: <20260715-ad5529r-driver-v6-2-cfdf8b9f5ee3@analog.com> References: <20260715-ad5529r-driver-v6-0-cfdf8b9f5ee3@analog.com> In-Reply-To: <20260715-ad5529r-driver-v6-0-cfdf8b9f5ee3@analog.com> To: Lars-Peter Clausen , Michael Hennerich , Jonathan Cameron , "David Lechner" , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Philipp Zabel , "Jonathan Corbet" , Shuah Khan , Mark Brown , Marius Cristea , "Marcus Folkesson" , Kent Gustavsson CC: , , , , Janani Sunil , , Kent Gustavsson , Janani Sunil X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784115670; l=1698; i=janani.sunil@analog.com; s=20260507; h=from:subject:message-id; bh=21OJd7m2egWDVGrGbW/ZtbwclJwnKRyz6WrrkqTffk4=; b=GbDT4zivmoReHlqy9eOVRGUfmruQ4LexRQW/nc4XHiWv0pJKKtDTBUlefVP5hxhR5rC6e4T7y xzV/Bge1dZUBmJNWzXcOzhKW//m27WGB8J6G1Fi++F8q0N5OTNOTPWY X-Developer-Key: i=janani.sunil@analog.com; a=ed25519; pk=e25MyjRLPY3RWrYm/LrJ+/+t1MZJUbkgIW5CZg+g+hA= X-ADIRuleOP-NewSCL: Rule Triggered X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE1MDExNSBTYWx0ZWRfXx4CiunAPUsMN nHUWr7FE/pCCyj3JvpqPOn5Prm9HLezqlkW+X9yXytpAfKGbP5+ngCKXr/Qzf9aROTpAb8cxHaU L27kKSyASrXb9VarPjyTGWYFSklUFQYBH+FtUc366WUf4D+ntKbjrLrBXc2ujYWtoMi3AE1E8kE SUgYOPtSCbYWxUhWbyE0wPJRcfuM2XY2Zn8sWhO0RQLNE4VdLhzNBJjiwyQaKuyzipVJpsYPUPY a9Dd2KCIC5IkH6z6lJYQSA+SYBe8BHmlsoP5Ema1FZsrQo5ZtB58nFs5RP1S5sgDP8U+vq9r6uZ H39xAr4jD9UwBrVOAm7cIzZmHArJUA1+QOHL5fIUapZopRFxiEM3wYzIfd5a5UoS0yjidRp4s8S x2yNaSJPlSo+BO9KWw8ZwUR1BurKvARTlpa1TjpWsvHx2alrDVximDfg9aftc/W7zukJuPTOh8Q A3M6/oq1ySDb7VgQhFQ== X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE1MDExNSBTYWx0ZWRfXzkXIaUIyJdgT 8QdVRC7RWRSavzLFH7R/kZC3GtHf7o70QP7kbVvI2fYveL89JVeQeDMeGbVjbfecgQgvNCwNila Op2LRP4JgmXPTykB6MhJhTxiJtvYOFotZmjg7vxgIvY6wonk+Kim X-Authority-Analysis: v=2.4 cv=R4sz39RX c=1 sm=1 tr=0 ts=6a5771f5 cx=c_pps a=3WNzaoukacrqR9RwcOSAdA==:117 a=3WNzaoukacrqR9RwcOSAdA==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=VkNPw1HP01LnGYTKEx00:22 a=0sLvza09kfJOxVLZPwjg:22 a=uXIjobp8t2wMuQ0fPvqm:22 a=gAnH3GRIAAAA:8 a=x4a6AN7Hyicx1yu3BJYA:9 a=QEXdDO2ut3YA:10 X-Proofpoint-ORIG-GUID: oWXlvGnF1D_Ak67dhXWjNDXJ-LBNQ-vo X-Proofpoint-GUID: oWXlvGnF1D_Ak67dhXWjNDXJ-LBNQ-vo X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-15_02,2026-07-15_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 spamscore=0 malwarescore=0 clxscore=1015 priorityscore=1501 lowpriorityscore=0 impostorscore=0 phishscore=0 suspectscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607150115 Add the generic spi-device-addr property to the binding and deprecate the existing vendor specific microchip,hw-device-address property. Signed-off-by: Janani Sunil --- Documentation/devicetree/bindings/iio/adc/microchip,mcp3564.yaml | 9 +++++= ++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Documentation/devicetree/bindings/iio/adc/microchip,mcp3564.ya= ml b/Documentation/devicetree/bindings/iio/adc/microchip,mcp3564.yaml index 675319276197..02bb198e9fa7 100644 --- a/Documentation/devicetree/bindings/iio/adc/microchip,mcp3564.yaml +++ b/Documentation/devicetree/bindings/iio/adc/microchip,mcp3564.yaml @@ -80,6 +80,7 @@ properties: $ref: /schemas/types.yaml#/definitions/uint32 minimum: 0 maximum: 3 + deprecated: true description: The address is set on a per-device basis by fuses in the factory, configured on request. If not requested, the fuses are set for 0x1. @@ -91,6 +92,11 @@ properties: clocking of the device address (BITS[7:6] - top two bits of COMMAND = BYTE which is first one on the wire). =20 + spi-device-addr: + maxItems: 1 + items: + enum: [0, 1, 2, 3] + "#io-channel-cells": const: 1 =20 @@ -123,7 +129,6 @@ dependencies: required: - compatible - reg - - microchip,hw-device-address - spi-max-frequency =20 allOf: @@ -159,7 +164,7 @@ examples: spi-cpha; spi-cpol; spi-max-frequency =3D <10000000>; - microchip,hw-device-address =3D <1>; + spi-device-addr =3D <1>; =20 #address-cells =3D <1>; #size-cells =3D <0>; --=20 2.43.0 From nobody Sat Jul 25 17:34:02 2026 Received: from mx0b-00128a01.pphosted.com (mx0a-00128a01.pphosted.com [148.163.135.77]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9B15A448D0C; Wed, 15 Jul 2026 11:42:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.135.77 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784115725; cv=none; b=W5H6/XtZKC8IoqO0erezwwbiurgKm+d1/XgjWD6nwDBptGA+l07K+ZqKNud4E7jDGMkf7k97US3iDWNSL0Y0JD1zCg57OwB9UzHz3ED5XSE6Fy6Vqq6S+487TUXPf6pTnTxXMDVHwdR0S9FBzFm0lpSrWIXC+0sTyu+XFGAXnw0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784115725; c=relaxed/simple; bh=g6tSMXc87C+we0pe8dZPWouDPNd4olCD0jQjEU8Tlsw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-ID:References: In-Reply-To:To:CC; b=FzGllF+ITHD3fjm8+zHZyxmbMfvt+j/OBtx6ObBgPMXHwteihfsUPcLntmzWKCkeJ2IrAHIyEK76YM67oB4LpEnBAfxp5176oQCxg8q19Adh40dkUHnlQCy2NkxqAEp0PWJhGaE/aRhClqEupbnYkdzMb5LonV4+YIJtuW2CLcc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=analog.com; spf=pass smtp.mailfrom=analog.com; dkim=pass (2048-bit key) header.d=analog.com header.i=@analog.com header.b=cSDfRY7e; arc=none smtp.client-ip=148.163.135.77 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=analog.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=analog.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=analog.com header.i=@analog.com header.b="cSDfRY7e" Received: from pps.filterd (m0375855.ppops.net [127.0.0.1]) by mx0b-00128a01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66FBZxXm536418; Wed, 15 Jul 2026 07:41:42 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=analog.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=DKIM; bh=7Y5zn ezsI3qhTRQrY0bv7fp81tiigWDCSf7BU71yTEE=; b=cSDfRY7elaa+PFUYY1KfE SR65Y10R7lNVSIG+ADpwTusYCcJ7F1FjmaCMM9u07ctgnSzSK6kaJcex+Qkq3lRb TeL0kQfE3+tZZWBXIMIqZWpHxA/hYt94QH64ZAEFaTh/veQvnzFt4o/yPjybAYq5 o7ScoOVQUjKbATRLvp5E7wzLOzZ+m4RfEPLAoFjcIcOb7CcoOHG1mZc8/6xrnje2 A7CSFXyAD3UbFTd19D+marsvEi88ULvzHWhKw55hSJbCz9+Lse6XFQK+YEt38rOG 4eOiE7yI6WMas8vwaYiyvicH1MoIi4oSmDQB77IflYwptfehxBNfdgZ2z4qaeIT8 w== Received: from nwd2mta4.analog.com ([137.71.173.58]) by mx0b-00128a01.pphosted.com (PPS) with ESMTPS id 4fe88188f8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 15 Jul 2026 07:41:42 -0400 (EDT) Received: from ASHBMBX8.ad.analog.com (ASHBMBX8.ad.analog.com [10.64.17.5]) by nwd2mta4.analog.com (8.14.7/8.14.7) with ESMTP id 66FBfe06004906 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Wed, 15 Jul 2026 07:41:41 -0400 Received: from ASHBCASHYB5.ad.analog.com (10.64.17.133) by ASHBMBX8.ad.analog.com (10.64.17.5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1748.37; Wed, 15 Jul 2026 07:41:41 -0400 Received: from ASHBMBX8.ad.analog.com (10.64.17.5) by ASHBCASHYB5.ad.analog.com (10.64.17.133) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1748.37; Wed, 15 Jul 2026 07:41:40 -0400 Received: from zeus.spd.analog.com (10.66.68.11) by ashbmbx8.ad.analog.com (10.64.17.5) with Microsoft SMTP Server id 15.2.1748.37 via Frontend Transport; Wed, 15 Jul 2026 07:41:40 -0400 Received: from HYB-e1y2fvUQ3cx.ad.analog.com (HYB-e1y2fvUQ3cx.ad.analog.com [10.44.3.54]) by zeus.spd.analog.com (8.15.1/8.15.1) with ESMTP id 66FBfASs024964; Wed, 15 Jul 2026 07:41:31 -0400 From: Janani Sunil Date: Wed, 15 Jul 2026 13:41:06 +0200 Subject: [PATCH v6 3/5] dt-bindings: iio: adc: microchip,mcp3911: Add spi-device-addr 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: <20260715-ad5529r-driver-v6-3-cfdf8b9f5ee3@analog.com> References: <20260715-ad5529r-driver-v6-0-cfdf8b9f5ee3@analog.com> In-Reply-To: <20260715-ad5529r-driver-v6-0-cfdf8b9f5ee3@analog.com> To: Lars-Peter Clausen , Michael Hennerich , Jonathan Cameron , "David Lechner" , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Philipp Zabel , "Jonathan Corbet" , Shuah Khan , Mark Brown , Marius Cristea , "Marcus Folkesson" , Kent Gustavsson CC: , , , , Janani Sunil , , Kent Gustavsson , Janani Sunil X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784115670; l=1246; i=janani.sunil@analog.com; s=20260507; h=from:subject:message-id; bh=g6tSMXc87C+we0pe8dZPWouDPNd4olCD0jQjEU8Tlsw=; b=rPp261PBgrzUJRflDiNds5MEIIYm5n5oK2QK/C8ACSN/XclCIna++KiC1X5Wu6fhw+m3Jp3DH mFfTojrIP5mBst8KNULKb9segimMxAX2NhWv8tvNVkTtEVkZxKFiUgo X-Developer-Key: i=janani.sunil@analog.com; a=ed25519; pk=e25MyjRLPY3RWrYm/LrJ+/+t1MZJUbkgIW5CZg+g+hA= X-ADIRuleOP-NewSCL: Rule Triggered X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE1MDExNCBTYWx0ZWRfX2PmPGTEy4t4n p6vI+5Tbla0Owthu2ugKmJtVtgTAWu0rpoS5Pv8sj1HIloYYjYV0R3P40NqFGjzTpXf2qLFWI// RZC7KPnfup9UtXAsYoujGKSj7KvBoSM1FtG/grCqlQyIMJjR5me+njQ2GjOXwItn/4KDW+sWsQd 4Ece9koVZA4Qof5Y1a29+b8P67v3ivHsjduC7xeP6bSelwnBRvpwdeZdXWgK2XwBdVWrH0WfIrP XBaieSSKEO8g8dcQGBMjtfiinKwEX9jvtGYNH65yrHnOXy0wxcQMQzitgatHExjRwzExTLYQlli pIqXN5DJ/BtxIqjZbk6RWB0yO4cwXK5lpUb5q0M8tQQcgt2MQWMBrJWJ/4Pxcvjrl6alJv2/Jul /RZoS1dj2yZexErdsXHz26snl6/0Fgy0A7J2E+OQnJr/a42O3iqIEOCvP32IFWSID8UVcP3FIUv NEq14rYID42UKasI5MA== X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE1MDExNCBTYWx0ZWRfXydEAzuRq2kjU rfsy9gjvu21UxqPOOKl2c+ChP8Ucbcm1aMolxJHYSTZWE62GJD/0dSghEeMYa/Hz87W9kJ/56ES VSd2R6azf9BzKGETNSW7vyWUzh9jGXaz9XsbsZWzVMFSNbFfDC4k X-Authority-Analysis: v=2.4 cv=Qo1uG1yd c=1 sm=1 tr=0 ts=6a5771f6 cx=c_pps a=3WNzaoukacrqR9RwcOSAdA==:117 a=3WNzaoukacrqR9RwcOSAdA==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=VkNPw1HP01LnGYTKEx00:22 a=0sLvza09kfJOxVLZPwjg:22 a=N--XFCr6TIEc_64PeIT2:22 a=gAnH3GRIAAAA:8 a=_zurbiuhYZgUpLYblJMA:9 a=QEXdDO2ut3YA:10 X-Proofpoint-GUID: j2hOZBUh_lA0mxZMIn7ePWxvjBMOnlaF X-Proofpoint-ORIG-GUID: j2hOZBUh_lA0mxZMIn7ePWxvjBMOnlaF X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-15_02,2026-07-15_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 suspectscore=0 malwarescore=0 bulkscore=0 phishscore=0 spamscore=0 priorityscore=1501 clxscore=1015 impostorscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607150114 Add the generic spi-device-addr property to the binding and deprecate the existing vendor specific microchip,device-addr property Signed-off-by: Janani Sunil --- Documentation/devicetree/bindings/iio/adc/microchip,mcp3911.yaml | 8 +++++= ++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/iio/adc/microchip,mcp3911.ya= ml b/Documentation/devicetree/bindings/iio/adc/microchip,mcp3911.yaml index 3a69ec60edb9..4a60df06bd35 100644 --- a/Documentation/devicetree/bindings/iio/adc/microchip,mcp3911.yaml +++ b/Documentation/devicetree/bindings/iio/adc/microchip,mcp3911.yaml @@ -57,6 +57,12 @@ properties: $ref: /schemas/types.yaml#/definitions/uint32 enum: [0, 1, 2, 3] default: 0 + deprecated: true + + spi-device-addr: + maxItems: 1 + items: + enum: [0, 1, 2, 3] =20 vref-supply: description: | @@ -86,7 +92,7 @@ examples: interrupts =3D <15 2>; reset-gpios =3D <&gpio1 10 GPIO_ACTIVE_LOW>; spi-max-frequency =3D <20000000>; - microchip,device-addr =3D <0>; + spi-device-addr =3D <0>; vref-supply =3D <&vref_reg>; clocks =3D <&xtal>; }; --=20 2.43.0 From nobody Sat Jul 25 17:34:02 2026 Received: from mx0a-00128a01.pphosted.com (mx0a-00128a01.pphosted.com [148.163.135.77]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 42533434E56; Wed, 15 Jul 2026 11:42:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.135.77 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784115726; cv=none; b=GcSGQyTcAOPaIw60/Rc5Cp/lxAAEf63r4wjVQXL8jLRnePAMHCmGLmnrTwqp89ZQE4IT6TEvoD/xMuhGs0GUiBtI62oLJ9+0YUoc1njmf/9OvRjLv2gCUqU66WgP4VA/gkj0v44ROMOVNW4azL/joowSFGQMJW4wTCnsip6Wx/Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784115726; c=relaxed/simple; bh=GcaTqK/Pbq3QtOtDwNCr+Q7I70YtSCZlG2i+a+I8Hko=; h=From:Date:Subject:MIME-Version:Content-Type:Message-ID:References: In-Reply-To:To:CC; b=MeY60OgWanHYoxaEAsfdFy7WeGyU5xYYDvDXt/jS/vZxJSQ+D4ryE63VSTL1sRVkUjYwVCv1BNRLSm2FDeS5jicC/6ufVoU8yqeBmxU0xrU63oszvIcguV9umjcuI1znhBcxwgA/5mP0W3qpRfGQ2fU7XgTw+UEDlfGd2NZZZv4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=analog.com; spf=pass smtp.mailfrom=analog.com; dkim=pass (2048-bit key) header.d=analog.com header.i=@analog.com header.b=FByqSZSK; arc=none smtp.client-ip=148.163.135.77 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=analog.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=analog.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=analog.com header.i=@analog.com header.b="FByqSZSK" Received: from pps.filterd (m0167089.ppops.net [127.0.0.1]) by mx0a-00128a01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66FBaWc2680436; Wed, 15 Jul 2026 07:41:45 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=analog.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=DKIM; bh=dyKvn UAZzjSM0gd6JMejcihkiV+pzNAaI+oPtDryTUI=; b=FByqSZSK1phDiM60JTPUG FA1c56WFCjNbZ0kylE1fvCX9sst6+dbV7DcEkxUoxtVWzj6ZBnFxMLM9tjhCziaC D42DL9c1/YCnOAvDCcN/+gnpDSkxCxSA9zVy78ytxN9mhjPR5SwHzad7hG96iBMG DdYAawbuHfKIceU8+nBglwP/nfb4LQtLmOIskmKzpHb5lSKd74Etxdsufjxw/6Dc Xeiq14ewX5lR3sC1d1H4hgNE8kwJo6yAo/7HcGhsB5FxLfIWUzkGd2R/W4g3s1Co WPjAiZfgo0Wqd3ycT3pmIY9bCnyGI1YVo8agS29ZqSGYEvFv0mlTFSkBet93yxuQ A== Received: from nwd2mta4.analog.com ([137.71.173.58]) by mx0a-00128a01.pphosted.com (PPS) with ESMTPS id 4fe70e0hwf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 15 Jul 2026 07:41:44 -0400 (EDT) Received: from ASHBMBX9.ad.analog.com (ASHBMBX9.ad.analog.com [10.64.17.10]) by nwd2mta4.analog.com (8.14.7/8.14.7) with ESMTP id 66FBfhHW004924 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Wed, 15 Jul 2026 07:41:43 -0400 Received: from ASHBCASHYB5.ad.analog.com (10.64.17.133) by ASHBMBX9.ad.analog.com (10.64.17.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1748.37; Wed, 15 Jul 2026 07:41:43 -0400 Received: from ASHBMBX8.ad.analog.com (10.64.17.5) by ASHBCASHYB5.ad.analog.com (10.64.17.133) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1748.37; Wed, 15 Jul 2026 07:41:43 -0400 Received: from zeus.spd.analog.com (10.66.68.11) by ashbmbx8.ad.analog.com (10.64.17.5) with Microsoft SMTP Server id 15.2.1748.37 via Frontend Transport; Wed, 15 Jul 2026 07:41:43 -0400 Received: from HYB-e1y2fvUQ3cx.ad.analog.com (HYB-e1y2fvUQ3cx.ad.analog.com [10.44.3.54]) by zeus.spd.analog.com (8.15.1/8.15.1) with ESMTP id 66FBfASt024964; Wed, 15 Jul 2026 07:41:36 -0400 From: Janani Sunil Date: Wed, 15 Jul 2026 13:41:07 +0200 Subject: [PATCH v6 4/5] dt-bindings: iio: dac: Add AD5529R 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: <20260715-ad5529r-driver-v6-4-cfdf8b9f5ee3@analog.com> References: <20260715-ad5529r-driver-v6-0-cfdf8b9f5ee3@analog.com> In-Reply-To: <20260715-ad5529r-driver-v6-0-cfdf8b9f5ee3@analog.com> To: Lars-Peter Clausen , Michael Hennerich , Jonathan Cameron , "David Lechner" , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Philipp Zabel , "Jonathan Corbet" , Shuah Khan , Mark Brown , Marius Cristea , "Marcus Folkesson" , Kent Gustavsson CC: , , , , Janani Sunil , , Kent Gustavsson , Janani Sunil X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784115670; l=8062; i=janani.sunil@analog.com; s=20260507; h=from:subject:message-id; bh=GcaTqK/Pbq3QtOtDwNCr+Q7I70YtSCZlG2i+a+I8Hko=; b=LxfKHFDjfxsrLnKP9GVsj/qsI5OGlljyVSjeJHZm2p+XeDqVOieHaJKXIEFWJcRJUCY5cPfcm 2+fMsw1PEdRB0yWGCJeG5W3yJLA3k0Whgc4oMe1P2xNqi4fFXdFRGhE X-Developer-Key: i=janani.sunil@analog.com; a=ed25519; pk=e25MyjRLPY3RWrYm/LrJ+/+t1MZJUbkgIW5CZg+g+hA= X-ADIRuleOP-NewSCL: Rule Triggered X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE1MDExNCBTYWx0ZWRfXzKSn9G2in99p iuzg6OcEq9iEWer8+JBCFEC0w/zq4xbCrjfEoaU09kAnwra724QoiuupBfoC++V6/R5NWPE2dqT AUzU5Ze2AoFLIPTraf6zYyLN8Jg+fhc0c/CIT/nyrFoQ+tVtnqs/8KWFRhiuTGdzrWOhsEkaRdq +M9MwVnWUB5d4uXS2AFVPfQ7bYsnAoWna8VZ6ncvKtBi7N3Gm+lNH51UgxDjGiLhPpi5dpmXe2u 4CARGN/FqN6nZaHm8zvH9XnPJRQEYOgNtRibyPgOxWKBO4AyKHl7tXRpv86DUUpe1fv0V0FPoU8 zZY7l74mJ4QoJ/xLe4/SMFQhD8cnlXIx9AVZdlfjMLnj9Pz/96CTdxQPejGsfAEZGSokwbW1tnR hTHPmf/Pw0VGRf92YKKh7eQOvN1SDg3RZlqBnojasPb2AcjGaeg3BrVcI9DxpDk7R/4txUUlt/S yJk4GIPkwatLhAJwhtg== X-Proofpoint-ORIG-GUID: 1CtsNJmEUNs3H_xj5LIJwD-rp_xbdICZ X-Authority-Analysis: v=2.4 cv=XsLK/1F9 c=1 sm=1 tr=0 ts=6a5771f9 cx=c_pps a=3WNzaoukacrqR9RwcOSAdA==:117 a=3WNzaoukacrqR9RwcOSAdA==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=VkNPw1HP01LnGYTKEx00:22 a=0sLvza09kfJOxVLZPwjg:22 a=Z0pTeXoby7EwIRygza74:22 a=gEfo2CItAAAA:8 a=gAnH3GRIAAAA:8 a=VwQbUJbxAAAA:8 a=fZh2jaQoGc6LPhG7F3gA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=sptkURWiP4Gy88Gu7hUp:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE1MDExNCBTYWx0ZWRfXyVmiSY2WDzW0 Rorf3CxE6BJ0fjXxBhFQpQRItc3pUTmtIxQZTs+m1ZaDSI3NW962gV5+x+i0GdG41lHz3nab3W2 Yq3WpoSxUiv2KlRVnDNViloWaC7ytoja2lHGGxbgZmDfNwaUgyKM X-Proofpoint-GUID: 1CtsNJmEUNs3H_xj5LIJwD-rp_xbdICZ X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-15_02,2026-07-15_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 spamscore=0 bulkscore=0 lowpriorityscore=0 phishscore=0 clxscore=1011 priorityscore=1501 adultscore=0 malwarescore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607150114 Devicetree bindings for AD5529R 16 channel 12/16 bit high voltage, buffered voltage output digital-to-analog converter (DAC) with an integrated precision reference. Signed-off-by: Janani Sunil --- .../devicetree/bindings/iio/dac/adi,ad5529r.yaml | 224 +++++++++++++++++= ++++ MAINTAINERS | 7 + 2 files changed, 231 insertions(+) diff --git a/Documentation/devicetree/bindings/iio/dac/adi,ad5529r.yaml b/D= ocumentation/devicetree/bindings/iio/dac/adi,ad5529r.yaml new file mode 100644 index 000000000000..730206fd6eab --- /dev/null +++ b/Documentation/devicetree/bindings/iio/dac/adi,ad5529r.yaml @@ -0,0 +1,224 @@ +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/iio/dac/adi,ad5529r.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Analog Devices AD5529R 16-Channel 12/16-bit High Voltage DAC + +maintainers: + - Janani Sunil + +description: | + The AD5529R is a 16-channel, 12-bit or 16-bit, high voltage, buffered vo= ltage + output digital-to-analog converter (DAC) with an integrated precision re= ference. + The device operates from unipolar and bipolar supplies. It is guaranteed + monotonic and has built-in rail-to-rail output buffers that can source or + sink up to 25mA. + + Specifications: + * 16 independent 12-bit or 16-bit DAC channels + * Independently programmable output ranges: 0V to 5V, 0V to 10V, 0V to 2= 0V, + 0V to 40V, =C2=B15V, =C2=B110V, =C2=B115V, and =C2=B120V + * The device supports SPI communication with Mode 0 and Mode 3. + * 4.096V precision reference, 12ppm/=C2=B0C maximum + * Built-in function generation: Toggle, Sinusoidal Dither, and Ramp wave= forms + * Multiplexer for output voltage, load current sense and die temperature + + Datasheet: https://www.analog.com/media/en/technical-documentation/data-= sheets/ad5529r.pdf + +properties: + compatible: + enum: + - adi,ad5529r-16 # 16-bit variant + - adi,ad5529r-12 # 12-bit variant + + reg: + maxItems: 1 + + spi-max-frequency: + maximum: 25000000 + description: + Maximum SPI frequency. The device supports SPI Mode 0 and Mode 3. + Read operations are limited to 25MHz maximum. + + reset-gpios: + maxItems: 1 + description: + GPIO connected to the RESET pin. Active low. When asserted low, + performs a power-on reset and initializes the device to its default = state. + + clear-gpios: + maxItems: 1 + description: + GPIO connected to the CLEAR pin. Active low. When asserted low, + clears all DAC data registers without affecting configuration settin= gs. + + interrupts: + maxItems: 1 + description: + Interrupt connected to the ALARM pin. Active low interrupt output + for overtemperature conditions, SPI CRC errors, and function complet= ion. + + pwms: + minItems: 1 + maxItems: 4 + description: + PWM signals connected to the TG0-TG3 toggle pins. Pulsing these pins + based on trigger edge settings allows selected DACs to be updated + synchronously for digital function generation. + + pwm-names: + minItems: 1 + maxItems: 4 + items: + enum: [ tg0, tg1, tg2, tg3 ] + + io-channels: + maxItems: 1 + description: + ADC channel connected to the MUXOUT pin for monitoring output voltag= e, + load current sense, and die temperature. + + io-channel-names: + const: muxout + + vdd-supply: + description: Digital power supply (1.08V to 1.98V) + + avdd-supply: + description: Analog power supply (4.75V to 5.25V) + + hvdd-supply: + description: + High voltage positive supply (7V to 45V). Supply voltage should be c= hosen + based on configured output ranges (see datasheet Table 9). + + hvss-supply: + description: + High voltage negative supply (-22.5V to 0V). Required only when using + bipolar output ranges (=C2=B15V, =C2=B110V, =C2=B115V, =C2=B120V). S= upply voltage should be + chosen based on configured output ranges (see datasheet Table 9). + + vref-supply: + description: + External voltage reference supply (4.056V to 4.136V, typically 4.096= V). + When specified, the device uses external reference mode and the VREF= pin + becomes an input. The device uses the internal 4.096V precision refe= rence + otherwise. + + spi-device-addr: + minItems: 1 + maxItems: 4 + items: + enum: [0, 1, 2, 3] + default: [0] + description: + Hardware address of each device, selected by the ID0 and ID1 pins. + Up to four AD5529R devices can share a single SPI chip select. + + "#address-cells": + const: 1 + + "#size-cells": + const: 0 + +patternProperties: + "^channel@([0-9a-f]{1,2})$": + $ref: dac.yaml + type: object + description: Child nodes for individual channel configuration + + properties: + reg: + description: + Flattened channel number across all AD5529R devices sharing the = chip + select. Within each 16-channel block, the physical channel numbe= r is reg % 16. + minimum: 0 + maximum: 63 + + output-range-microvolt: + description: + Output voltage range for this channel as [min, max] in + microvolts. + oneOf: + - items: + - const: 0 + default: 0 + - enum: [5000000, 10000000, 20000000, 40000000] + default: 5000000 + - items: + - const: -5000000 + - const: 5000000 + - items: + - const: -10000000 + - const: 10000000 + - items: + - const: -15000000 + - const: 15000000 + - items: + - const: -20000000 + - const: 20000000 + + required: + - reg + + additionalProperties: false + +required: + - compatible + - reg + - vdd-supply + - avdd-supply + - hvdd-supply + +dependencies: + spi-cpha: [ spi-cpol ] + spi-cpol: [ spi-cpha ] + +allOf: + - $ref: /schemas/spi/spi-peripheral-props.yaml# + +unevaluatedProperties: false + +examples: + - | + #include + + spi { + #address-cells =3D <1>; + #size-cells =3D <0>; + + dac@0 { + compatible =3D "adi,ad5529r-16"; + reg =3D <0>; + spi-max-frequency =3D <25000000>; + spi-device-addr =3D <0>; + + vdd-supply =3D <&vdd_regulator>; + avdd-supply =3D <&avdd_regulator>; + hvdd-supply =3D <&hvdd_regulator>; + hvss-supply =3D <&hvss_regulator>; + + reset-gpios =3D <&gpio0 87 GPIO_ACTIVE_LOW>; + + #address-cells =3D <1>; + #size-cells =3D <0>; + + channel@0 { + reg =3D <0>; + output-range-microvolt =3D <0 5000000>; + }; + + channel@1 { + reg =3D <1>; + output-range-microvolt =3D <(-10000000) 10000000>; + }; + + channel@2 { + reg =3D <2>; + output-range-microvolt =3D <0 40000000>; + }; + }; + }; +... diff --git a/MAINTAINERS b/MAINTAINERS index d6c3c7d22403..320e84765ce6 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1507,6 +1507,13 @@ W: https://ez.analog.com/linux-software-drivers F: Documentation/devicetree/bindings/iio/adc/adi,ad4851.yaml F: drivers/iio/adc/ad4851.c =20 +ANALOG DEVICES INC AD5529R DRIVER +M: Janani Sunil +L: linux-iio@vger.kernel.org +S: Supported +W: https://ez.analog.com/linux-software-drivers +F: Documentation/devicetree/bindings/iio/dac/adi,ad5529r.yaml + ANALOG DEVICES INC AD5706R DRIVER M: Alexis Czezar Torreno L: linux-iio@vger.kernel.org --=20 2.43.0 From nobody Sat Jul 25 17:34:02 2026 Received: from mx0b-00128a01.pphosted.com (mx0a-00128a01.pphosted.com [148.163.135.77]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6732B43C7DF; Wed, 15 Jul 2026 11:42:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.135.77 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784115734; cv=none; b=gIiS3dUuiGwLa4PtKXRyuUiRNh0PuAWQbMXefkS9YO4nTKa3KekbIU2tSKXHcqtIP9PO/l0L36Xi7MbDUWySAsMuJo0SfJf9g5nGo/DvONvvyiz/uRiV4mNQhcj5wdlLkCD4RWsL5F6viQmCTy3TMlPRuBnimcUiMGwbDxCC8Bc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784115734; c=relaxed/simple; bh=cr+3Mp7hUfH10z1F/pxovLpb/IspgqOAWMcF9RCo0GU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-ID:References: In-Reply-To:To:CC; b=LCtusacsO9NqEV8qeCDIvZbLBw+Lr6BY/9WuZUEDBDB1mR3XuLqqElrWn9keydp/40n0QsyOWtV/x+mdFrIn2kxS5WmuRnRxh00zVQZ4CH8wwArb+A35cgVsglB/U+2Cufe+zJdxmINmt8Ew6E3MxlSmDL5qAueY2C1+BChCdBk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=analog.com; spf=pass smtp.mailfrom=analog.com; dkim=pass (2048-bit key) header.d=analog.com header.i=@analog.com header.b=zSmaqw7d; arc=none smtp.client-ip=148.163.135.77 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=analog.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=analog.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=analog.com header.i=@analog.com header.b="zSmaqw7d" Received: from pps.filterd (m0375855.ppops.net [127.0.0.1]) by mx0b-00128a01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66FBZwNI536404; Wed, 15 Jul 2026 07:41:50 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=analog.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=DKIM; bh=ycMbK RpGgOhRM8cW9IH2MfQkrPkdyE7cu/PqTfa0Ihs=; b=zSmaqw7dUhCodZ1ogX063 CelPuXqKMi2a1hFwmz4ph2vQX5V7udleXjnHxotKnO2tPOf3SdTKmkOp62U6uOJF c8dn/Yr6FoTMlYwGyIzLsHdY6nip0oa4MT8lugfzy+E543iV/o3turSRt5QIyX6g 1wjYumpiuGmiVhFCw5uXt7etIo1JNXp+flwQolU/EeFcrpb5Ax8+QN6zgt6iL09j 4bH+u1yMaRsLd0RxRs7dfEhys8Q1sUXxE4B+p76PVKMXr24N1JGhZC8WU/KFNEjI iOri054eg8SCUycrJfs9nY1SBwzidr5WCjagEDf9DQVc5eGys6tm9jYa+rWqFNpM A== Received: from nwd2mta4.analog.com ([137.71.173.58]) by mx0b-00128a01.pphosted.com (PPS) with ESMTPS id 4fe88188ff-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 15 Jul 2026 07:41:50 -0400 (EDT) Received: from ASHBMBX8.ad.analog.com (ASHBMBX8.ad.analog.com [10.64.17.5]) by nwd2mta4.analog.com (8.14.7/8.14.7) with ESMTP id 66FBfndQ004927 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Wed, 15 Jul 2026 07:41:49 -0400 Received: from ASHBCASHYB4.ad.analog.com (10.64.17.132) by ASHBMBX8.ad.analog.com (10.64.17.5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1748.37; Wed, 15 Jul 2026 07:41:49 -0400 Received: from ASHBMBX8.ad.analog.com (10.64.17.5) by ASHBCASHYB4.ad.analog.com (10.64.17.132) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1748.37; Wed, 15 Jul 2026 07:41:48 -0400 Received: from zeus.spd.analog.com (10.66.68.11) by ashbmbx8.ad.analog.com (10.64.17.5) with Microsoft SMTP Server id 15.2.1748.37 via Frontend Transport; Wed, 15 Jul 2026 07:41:48 -0400 Received: from HYB-e1y2fvUQ3cx.ad.analog.com (HYB-e1y2fvUQ3cx.ad.analog.com [10.44.3.54]) by zeus.spd.analog.com (8.15.1/8.15.1) with ESMTP id 66FBfASu024964; Wed, 15 Jul 2026 07:41:39 -0400 From: Janani Sunil Date: Wed, 15 Jul 2026 13:41:08 +0200 Subject: [PATCH v6 5/5] iio: dac: Add AD5529R DAC driver 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: <20260715-ad5529r-driver-v6-5-cfdf8b9f5ee3@analog.com> References: <20260715-ad5529r-driver-v6-0-cfdf8b9f5ee3@analog.com> In-Reply-To: <20260715-ad5529r-driver-v6-0-cfdf8b9f5ee3@analog.com> To: Lars-Peter Clausen , Michael Hennerich , Jonathan Cameron , "David Lechner" , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Philipp Zabel , "Jonathan Corbet" , Shuah Khan , Mark Brown , Marius Cristea , "Marcus Folkesson" , Kent Gustavsson CC: , , , , Janani Sunil , , Kent Gustavsson , Janani Sunil X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784115670; l=18361; i=janani.sunil@analog.com; s=20260507; h=from:subject:message-id; bh=cr+3Mp7hUfH10z1F/pxovLpb/IspgqOAWMcF9RCo0GU=; b=z86/B3ipqQbcmxjWk54+SWrCDb5mxb8AhZZaltPdHRzTqpKazn4WYvg+QrW3rn25gfQH59LeW wnxXLwCus3CCzQeavE7lk77XrHSybMmUZrahx/YWNkpgPvlTwmLA4Pn X-Developer-Key: i=janani.sunil@analog.com; a=ed25519; pk=e25MyjRLPY3RWrYm/LrJ+/+t1MZJUbkgIW5CZg+g+hA= X-ADIRuleOP-NewSCL: Rule Triggered X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE1MDExNCBTYWx0ZWRfX6Wyp9xCj8p9I VqQtCdpvfX34LiiZPI1qEvnTu8Tgt+HZgQGY4hkPh185GE94qURziJtJ6kh+ULWmiRjVL6eZaeM WuQbWVyKi67qlENLD11iT6p36pCFex0vDmACN5O0v/5YdoUyo1rqD4OjIk009fc8Sz3Kb+2HXvw uJr+oCKFQIyK/R1mhhG2ATSecXKCU4p/45S15ZQUQ7Gu5mhM+BxAEnTX60HfvYJmmlVtbyDtOLP LyEzZK5E/OIPx0Wsfrl26LtcmwmM0BazdThF786fUG8R6scYhJ5vLcDDG01+v7Uw3qx59ZP96xw TThjTdSxrPS2FMzCTAap/bEMqVg56nXGMt8kG2OtQ16x/T+q9/giY/Mxj83Qhzmy12tB7L6377k TtIqRXr3PvAoZWWy07J5FjYICALQ1AJM530Q6la/Hqa00BA0H4y0qhO6HElJdwKcYdgR0qk4/zW 39QJ5zSG+v+KO1h/uvA== X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE1MDExNCBTYWx0ZWRfX940XnnnIH4RT 3PPkH5vDTpCbXoG1yFPuL+xQvJF3Juy/MA+dWZQJ96dyGcliQFsIoFMFe6k7WP946vmFGM9Dpqq 1Vl7YEld4tKi0rURPuTnLQq3v4Lc8A7na4BdZq/IROv7TcCt97bZ X-Authority-Analysis: v=2.4 cv=Qo1uG1yd c=1 sm=1 tr=0 ts=6a5771fe cx=c_pps a=3WNzaoukacrqR9RwcOSAdA==:117 a=3WNzaoukacrqR9RwcOSAdA==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=VkNPw1HP01LnGYTKEx00:22 a=0sLvza09kfJOxVLZPwjg:22 a=N--XFCr6TIEc_64PeIT2:22 a=gAnH3GRIAAAA:8 a=VwQbUJbxAAAA:8 a=0waKez6In-KLLc4opx0A:9 a=QEXdDO2ut3YA:10 X-Proofpoint-GUID: lhv28cZtBCZgoWsxl_uXgI0PeY3zRLkG X-Proofpoint-ORIG-GUID: lhv28cZtBCZgoWsxl_uXgI0PeY3zRLkG X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-15_02,2026-07-15_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 suspectscore=0 malwarescore=0 bulkscore=0 phishscore=0 spamscore=0 priorityscore=1501 clxscore=1015 impostorscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607150114 Add support for AD5529R 16-channel, 12/16 bit Digital to Analog Converter from Analog Devices. The device communicates over SPI and supports per-channel output range configuration. An optional external 4.096V reference can be used in place of the internal reference. Signed-off-by: Janani Sunil --- MAINTAINERS | 1 + drivers/iio/dac/Kconfig | 17 ++ drivers/iio/dac/Makefile | 1 + drivers/iio/dac/ad5529r.c | 502 ++++++++++++++++++++++++++++++++++++++++++= ++++ 4 files changed, 521 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index 320e84765ce6..143714e27d51 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1513,6 +1513,7 @@ L: linux-iio@vger.kernel.org S: Supported W: https://ez.analog.com/linux-software-drivers F: Documentation/devicetree/bindings/iio/dac/adi,ad5529r.yaml +F: drivers/iio/dac/ad5529r.c =20 ANALOG DEVICES INC AD5706R DRIVER M: Alexis Czezar Torreno diff --git a/drivers/iio/dac/Kconfig b/drivers/iio/dac/Kconfig index 657c68e75542..bb1d59889a2a 100644 --- a/drivers/iio/dac/Kconfig +++ b/drivers/iio/dac/Kconfig @@ -134,6 +134,23 @@ config AD5449 To compile this driver as a module, choose M here: the module will be called ad5449. =20 +config AD5529R + tristate "Analog Devices AD5529R High Voltage DAC driver" + depends on SPI_MASTER + select REGMAP_SPI + help + Say yes here to build support for Analog Devices AD5529R + 16-Channel, 12-Bit/16-Bit, 40V High Voltage Precision Digital to Analog + Converter. + + The device features multiple output voltage ranges from -20V to +20V, + built-in 4.096V voltage reference, and digital functions including + toggle, dither, and ramp modes. Supports both 12-bit and 16-bit + resolution variants. + + To compile this driver as a module, choose M here: the + module will be called ad5529r. + config AD5592R_BASE tristate =20 diff --git a/drivers/iio/dac/Makefile b/drivers/iio/dac/Makefile index 003431798498..f35e060b3643 100644 --- a/drivers/iio/dac/Makefile +++ b/drivers/iio/dac/Makefile @@ -18,6 +18,7 @@ obj-$(CONFIG_AD5446) +=3D ad5446.o obj-$(CONFIG_AD5446_SPI) +=3D ad5446-spi.o obj-$(CONFIG_AD5446_I2C) +=3D ad5446-i2c.o obj-$(CONFIG_AD5449) +=3D ad5449.o +obj-$(CONFIG_AD5529R) +=3D ad5529r.o obj-$(CONFIG_AD5592R_BASE) +=3D ad5592r-base.o obj-$(CONFIG_AD5592R) +=3D ad5592r.o obj-$(CONFIG_AD5593R) +=3D ad5593r.o diff --git a/drivers/iio/dac/ad5529r.c b/drivers/iio/dac/ad5529r.c new file mode 100644 index 000000000000..c279dc530d68 --- /dev/null +++ b/drivers/iio/dac/ad5529r.c @@ -0,0 +1,502 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * AD5529R Digital-to-Analog Converter Driver + * 16-Channel, 12/16-Bit, 40V High Voltage Precision DAC + * + * Copyright 2026 Analog Devices Inc. + * Author: Janani Sunil + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define AD5529R_REG_INTERFACE_CONFIG_A 0x00 +#define AD5529R_INTERFACE_CONFIG_A_SW_RESET (BIT(7) | BIT(0)) +#define AD5529R_INTERFACE_CONFIG_A_ADDR_ASCENSION BIT(5) +#define AD5529R_INTERFACE_CONFIG_A_SDO_ENABLE BIT(4) +#define AD5529R_REG_DEVICE_CONFIG 0x02 +#define AD5529R_REG_CHIP_GRADE 0x06 +#define AD5529R_REG_SCRATCH_PAD 0x0A +#define AD5529R_REG_SPI_REVISION 0x0B +#define AD5529R_REG_VENDOR_H 0x0D +#define AD5529R_REG_STREAM_MODE 0x0E +#define AD5529R_REG_INTERFACE_STATUS_A 0x11 +#define AD5529R_REG_MULTI_DAC_CH_SEL 0x14 +#define AD5529R_REG_OUT_RANGE_BASE 0x3C +#define AD5529R_REG_OUT_RANGE(ch) (AD5529R_REG_OUT_RANGE_BASE + (ch) * 2) +#define AD5529R_REG_DAC_INPUT_A_BASE 0x148 +#define AD5529R_REG_DAC_INPUT_A(ch) (AD5529R_REG_DAC_INPUT_A_BASE + (ch) = * 2) +#define AD5529R_REG_DAC_DATA_READBACK_BASE 0x16A +#define AD5529R_REG_TSENS_ALERT_FLAG 0x18C +#define AD5529R_REG_TSENS_SHTD_FLAG 0x18E +#define AD5529R_REG_FUNC_BUSY 0x1A0 +#define AD5529R_REG_REF_SEL 0x1A2 +#define AD5529R_REF_SEL_INTERNAL_REF BIT(0) +#define AD5529R_REG_INIT_CRC_ERR_STAT 0x1A4 +#define AD5529R_REG_MULTI_DAC_HOTPATH_SW_LDAC 0x1A8 + +#define AD5529R_MAX_REGISTER 0x232 +#define AD5529R_8BIT_REG_MAX 0x13 +#define AD5529R_SPI_READ_FLAG 0x80 +#define AD5529R_ADDR_SHIFT 12 + +struct ad5529r_model_data { + const char *model_name; + unsigned int resolution; +}; + +#define AD5529R_DAC_CHANNEL(chan) ((struct iio_chan_spec) { \ + .type =3D IIO_VOLTAGE, \ + .indexed =3D 1, \ + .output =3D 1, \ + .channel =3D (chan), \ + .info_mask_separate =3D BIT(IIO_CHAN_INFO_RAW) | \ + BIT(IIO_CHAN_INFO_SCALE) | \ + BIT(IIO_CHAN_INFO_OFFSET), \ +}) + +static const char * const ad5529r_supply_names[] =3D { + "vdd", + "avdd", + "hvdd", +}; + +static const struct ad5529r_model_data ad5529r_16bit_model_data =3D { + .model_name =3D "ad5529r-16", + .resolution =3D 16, +}; + +static const struct ad5529r_model_data ad5529r_12bit_model_data =3D { + .model_name =3D "ad5529r-12", + .resolution =3D 12, +}; + +enum ad5529r_output_range { + AD5529R_RANGE_0V_5V, + AD5529R_RANGE_0V_10V, + AD5529R_RANGE_0V_20V, + AD5529R_RANGE_0V_40V, + AD5529R_RANGE_NEG5V_5V, + AD5529R_RANGE_NEG10V_10V, + AD5529R_RANGE_NEG15V_15V, + AD5529R_RANGE_NEG20V_20V, +}; + +static const s32 ad5529r_output_ranges_mV[8][2] =3D { + [AD5529R_RANGE_0V_5V] =3D { 0, 5000 }, + [AD5529R_RANGE_0V_10V] =3D { 0, 10000 }, + [AD5529R_RANGE_0V_20V] =3D { 0, 20000 }, + [AD5529R_RANGE_0V_40V] =3D { 0, 40000 }, + [AD5529R_RANGE_NEG5V_5V] =3D { -5000, 5000 }, + [AD5529R_RANGE_NEG10V_10V] =3D { -10000, 10000 }, + [AD5529R_RANGE_NEG15V_15V] =3D { -15000, 15000 }, + [AD5529R_RANGE_NEG20V_20V] =3D { -20000, 20000 }, +}; + +struct ad5529r_state { + struct spi_device *spi; + const struct ad5529r_model_data *model_data; + struct regmap *regmap_8bit; + struct regmap *regmap_16bit; + struct iio_chan_spec channels[16]; + unsigned int num_channels; + enum ad5529r_output_range output_range_idx[16]; +}; + +static const struct regmap_range ad5529r_8bit_readable_ranges[] =3D { + regmap_reg_range(AD5529R_REG_INTERFACE_CONFIG_A, AD5529R_REG_CHIP_GRADE), + regmap_reg_range(AD5529R_REG_SCRATCH_PAD, AD5529R_REG_VENDOR_H), + regmap_reg_range(AD5529R_REG_STREAM_MODE, AD5529R_REG_INTERFACE_STATUS_A), +}; + +static const struct regmap_range ad5529r_16bit_readable_ranges[] =3D { + regmap_reg_range(AD5529R_REG_MULTI_DAC_CH_SEL, AD5529R_REG_INIT_CRC_ERR_S= TAT), + regmap_reg_range(AD5529R_REG_MULTI_DAC_HOTPATH_SW_LDAC, AD5529R_MAX_REGIS= TER), +}; + +static const struct regmap_access_table ad5529r_8bit_readable_table =3D { + .yes_ranges =3D ad5529r_8bit_readable_ranges, + .n_yes_ranges =3D ARRAY_SIZE(ad5529r_8bit_readable_ranges), +}; + +static const struct regmap_access_table ad5529r_16bit_readable_table =3D { + .yes_ranges =3D ad5529r_16bit_readable_ranges, + .n_yes_ranges =3D ARRAY_SIZE(ad5529r_16bit_readable_ranges), +}; + +static const struct regmap_range ad5529r_8bit_read_only_ranges[] =3D { + regmap_reg_range(AD5529R_REG_DEVICE_CONFIG, AD5529R_REG_CHIP_GRADE), + regmap_reg_range(AD5529R_REG_SPI_REVISION, AD5529R_REG_VENDOR_H), +}; + +static const struct regmap_range ad5529r_16bit_read_only_ranges[] =3D { + regmap_reg_range(AD5529R_REG_DAC_DATA_READBACK_BASE, + AD5529R_REG_DAC_DATA_READBACK_BASE + 15 * 2), + regmap_reg_range(AD5529R_REG_TSENS_ALERT_FLAG, AD5529R_REG_TSENS_SHTD_FLA= G), + regmap_reg_range(AD5529R_REG_FUNC_BUSY, AD5529R_REG_FUNC_BUSY), + regmap_reg_range(AD5529R_REG_INIT_CRC_ERR_STAT, AD5529R_REG_INIT_CRC_ERR_= STAT), +}; + +static const struct regmap_access_table ad5529r_8bit_writeable_table =3D { + .no_ranges =3D ad5529r_8bit_read_only_ranges, + .n_no_ranges =3D ARRAY_SIZE(ad5529r_8bit_read_only_ranges), +}; + +static const struct regmap_access_table ad5529r_16bit_writeable_table =3D { + .no_ranges =3D ad5529r_16bit_read_only_ranges, + .n_no_ranges =3D ARRAY_SIZE(ad5529r_16bit_read_only_ranges), +}; + +static const struct regmap_config ad5529r_regmap_8bit_config =3D { + .name =3D "ad5529r-8bit", + .reg_bits =3D 16, + .val_bits =3D 8, + .max_register =3D AD5529R_8BIT_REG_MAX, + .read_flag_mask =3D AD5529R_SPI_READ_FLAG, + .rd_table =3D &ad5529r_8bit_readable_table, + .wr_table =3D &ad5529r_8bit_writeable_table, +}; + +static const struct regmap_config ad5529r_regmap_16bit_config =3D { + .name =3D "ad5529r-16bit", + .reg_bits =3D 16, + .val_bits =3D 16, + .max_register =3D AD5529R_MAX_REGISTER, + .read_flag_mask =3D AD5529R_SPI_READ_FLAG, + .val_format_endian =3D REGMAP_ENDIAN_LITTLE, + .rd_table =3D &ad5529r_16bit_readable_table, + .wr_table =3D &ad5529r_16bit_writeable_table, + .reg_stride =3D 2, +}; + +static struct regmap *ad5529r_get_regmap(struct ad5529r_state *st, + unsigned int reg) +{ + if (reg <=3D AD5529R_8BIT_REG_MAX) + return st->regmap_8bit; + + return st->regmap_16bit; +} + +static int ad5529r_reset(struct ad5529r_state *st) +{ + struct reset_control *rst; + int ret; + + rst =3D devm_reset_control_get_optional_exclusive(&st->spi->dev, NULL); + if (IS_ERR(rst)) + return PTR_ERR(rst); + + if (rst) { + ret =3D reset_control_assert(rst); + if (ret) + return ret; + + ret =3D reset_control_deassert(rst); + if (ret) + return ret; + } else { + ret =3D regmap_write(st->regmap_8bit, AD5529R_REG_INTERFACE_CONFIG_A, + AD5529R_INTERFACE_CONFIG_A_SW_RESET); + if (ret) + return ret; + } + + /* + * Wait 10 ms for digital initialization to complete. + * Per datasheet, Interface Status A register NOT_READY_ERR bit is + * set if SPI transactions are attempted before digital initialization + * completes. + */ + fsleep(10 * USEC_PER_MSEC); + + return regmap_write(st->regmap_8bit, AD5529R_REG_INTERFACE_CONFIG_A, + AD5529R_INTERFACE_CONFIG_A_SDO_ENABLE | + AD5529R_INTERFACE_CONFIG_A_ADDR_ASCENSION); +} + +static int ad5529r_read_raw(struct iio_dev *indio_dev, + struct iio_chan_spec const *chan, + int *val, int *val2, long mask) +{ + struct ad5529r_state *st =3D iio_priv(indio_dev); + unsigned int reg_addr, reg_val_h; + int ret, range_idx, span_mv; + + switch (mask) { + case IIO_CHAN_INFO_RAW: + /* + * Read from DAC_INPUT_A register rather than DAC_DATA_READBACK. + * The DAC operates in transparent mode and directly reflects + * whatever value is written to the INPUT_A register. + */ + reg_addr =3D AD5529R_REG_DAC_INPUT_A(chan->channel); + ret =3D regmap_read(st->regmap_16bit, reg_addr, ®_val_h); + if (ret) + return ret; + + *val =3D reg_val_h; + + return IIO_VAL_INT; + case IIO_CHAN_INFO_SCALE: + range_idx =3D st->output_range_idx[chan->channel]; + + span_mv =3D ad5529r_output_ranges_mV[range_idx][1] - + ad5529r_output_ranges_mV[range_idx][0]; + *val =3D span_mv; + *val2 =3D st->model_data->resolution; + + return IIO_VAL_FRACTIONAL_LOG2; + case IIO_CHAN_INFO_OFFSET: + range_idx =3D st->output_range_idx[chan->channel]; + + if (ad5529r_output_ranges_mV[range_idx][0] < 0) + *val =3D -(1 << (st->model_data->resolution - 1)); + else + *val =3D 0; + + return IIO_VAL_INT; + default: + return -EINVAL; + } +} + +static int ad5529r_write_raw(struct iio_dev *indio_dev, + struct iio_chan_spec const *chan, + int val, int val2, long mask) +{ + struct ad5529r_state *st =3D iio_priv(indio_dev); + unsigned int reg_addr; + + switch (mask) { + case IIO_CHAN_INFO_RAW: + if (val < 0 || val > GENMASK(st->model_data->resolution - 1, 0)) + return -EINVAL; + + reg_addr =3D AD5529R_REG_DAC_INPUT_A(chan->channel); + + return regmap_write(st->regmap_16bit, reg_addr, val); + default: + return -EINVAL; + } +} + +static int ad5529r_find_output_range(const s32 *vals) +{ + for (unsigned int i =3D 0; i < ARRAY_SIZE(ad5529r_output_ranges_mV); i++)= { + const s32 *range =3D ad5529r_output_ranges_mV[i]; + + if (vals[0] =3D=3D range[0] * (MICRO / MILLI) && + vals[1] =3D=3D range[1] * (MICRO / MILLI)) + return i; + } + + return -EINVAL; +} + +static int ad5529r_parse_channel_ranges(struct device *dev, + struct ad5529r_state *st) +{ + s32 vals[2]; + int ret, range_idx; + u32 ch; + + device_for_each_child_node_scoped(dev, child) { + ret =3D fwnode_property_read_u32(child, "reg", &ch); + if (ret) + return dev_err_probe(dev, ret, + "Missing reg property in channel node\n"); + + if (ch >=3D 16) + return dev_err_probe(dev, -EINVAL, + "Channel %u exceeds maximum 15\n", + ch); + + if (fwnode_property_present(child, "output-range-microvolt")) { + /* + * DT stores cells as raw 32-bit values; signed endpoints are + * encoded by dtc in two's-complement and then interpreted + * here as s32. + */ + ret =3D fwnode_property_read_u32_array(child, + "output-range-microvolt", + (u32 *)vals, ARRAY_SIZE(vals)); + if (ret < 0) + return dev_err_probe(dev, ret, + "Failed to read range for ch %u\n", + ch); + + range_idx =3D ad5529r_find_output_range(vals); + if (range_idx < 0) + return dev_err_probe(dev, range_idx, + "Invalid range [%d %d] for ch %u\n", + vals[0], vals[1], ch); + } else { + range_idx =3D AD5529R_RANGE_0V_5V; + } + + st->output_range_idx[ch] =3D range_idx; + ret =3D regmap_write(st->regmap_16bit, + AD5529R_REG_OUT_RANGE(ch), range_idx); + if (ret) + return dev_err_probe(dev, ret, + "Failed to configure range for ch %u\n", + ch); + + st->channels[st->num_channels++] =3D AD5529R_DAC_CHANNEL(ch); + } + + return 0; +} + +static int ad5529r_reg_access(struct iio_dev *indio_dev, + unsigned int reg, + unsigned int writeval, + unsigned int *readval) +{ + struct ad5529r_state *st =3D iio_priv(indio_dev); + + if (readval) + return regmap_read(ad5529r_get_regmap(st, reg), reg, readval); + + return regmap_write(ad5529r_get_regmap(st, reg), reg, writeval); +} + +static const struct iio_info ad5529r_info =3D { + .read_raw =3D ad5529r_read_raw, + .write_raw =3D ad5529r_write_raw, + .debugfs_reg_access =3D ad5529r_reg_access, +}; + +static int ad5529r_probe(struct spi_device *spi) +{ + struct device *dev =3D &spi->dev; + struct iio_dev *indio_dev; + struct ad5529r_state *st; + struct regmap_config regmap_8bit_cfg =3D ad5529r_regmap_8bit_config; + struct regmap_config regmap_16bit_cfg =3D ad5529r_regmap_16bit_config; + bool external_vref; + u32 dev_addr =3D 0; + int ret; + + indio_dev =3D devm_iio_device_alloc(dev, sizeof(*st)); + if (!indio_dev) + return -ENOMEM; + + st =3D iio_priv(indio_dev); + + st->spi =3D spi; + + st->model_data =3D spi_get_device_match_data(spi); + if (!st->model_data) + return dev_err_probe(dev, -EINVAL, + "Failed to identify device variant\n"); + + device_property_read_u32(dev, "spi-device-addr", &dev_addr); + if (dev_addr > 3) + return dev_err_probe(dev, -EINVAL, + "spi-device-addr %u out of range [0, 3]\n", + dev_addr); + regmap_8bit_cfg.reg_base =3D dev_addr << AD5529R_ADDR_SHIFT; + regmap_16bit_cfg.reg_base =3D dev_addr << AD5529R_ADDR_SHIFT; + + ret =3D devm_regulator_bulk_get_enable(dev, ARRAY_SIZE(ad5529r_supply_nam= es), + ad5529r_supply_names); + if (ret) + return dev_err_probe(dev, ret, + "Failed to get and enable regulators\n"); + + ret =3D devm_regulator_get_enable_optional(dev, "hvss"); + if (ret && ret !=3D -ENODEV) + return dev_err_probe(dev, ret, + "Failed to get and enable hvss regulator\n"); + + ret =3D devm_regulator_get_enable_optional(dev, "vref"); + if (ret =3D=3D -ENODEV) + external_vref =3D false; + else if (!ret) + external_vref =3D true; + else + return dev_err_probe(dev, ret, + "Failed to get and enable vref regulator\n"); + + st->regmap_8bit =3D devm_regmap_init_spi(spi, ®map_8bit_cfg); + if (IS_ERR(st->regmap_8bit)) + return dev_err_probe(dev, PTR_ERR(st->regmap_8bit), + "Failed to initialize 8-bit regmap\n"); + + st->regmap_16bit =3D devm_regmap_init_spi(spi, ®map_16bit_cfg); + if (IS_ERR(st->regmap_16bit)) + return dev_err_probe(dev, PTR_ERR(st->regmap_16bit), + "Failed to initialize 16-bit regmap\n"); + + ret =3D ad5529r_reset(st); + if (ret) + return dev_err_probe(dev, ret, "Failed to reset device\n"); + + ret =3D regmap_assign_bits(st->regmap_16bit, AD5529R_REG_REF_SEL, + AD5529R_REF_SEL_INTERNAL_REF, + external_vref ? 0 : AD5529R_REF_SEL_INTERNAL_REF); + if (ret) + return dev_err_probe(dev, ret, "Failed to configure reference\n"); + + ret =3D ad5529r_parse_channel_ranges(dev, st); + if (ret) + return ret; + + indio_dev->name =3D st->model_data->model_name; + indio_dev->info =3D &ad5529r_info; + indio_dev->modes =3D INDIO_DIRECT_MODE; + indio_dev->channels =3D st->channels; + indio_dev->num_channels =3D st->num_channels; + + return devm_iio_device_register(dev, indio_dev); +} + +static const struct of_device_id ad5529r_of_match[] =3D { + { .compatible =3D "adi,ad5529r-16", .data =3D &ad5529r_16bit_model_data }, + { .compatible =3D "adi,ad5529r-12", .data =3D &ad5529r_12bit_model_data }, + { } +}; +MODULE_DEVICE_TABLE(of, ad5529r_of_match); + +static const struct spi_device_id ad5529r_id[] =3D { + { + .name =3D "ad5529r-16", + .driver_data =3D (kernel_ulong_t)&ad5529r_16bit_model_data, + }, + { + .name =3D "ad5529r-12", + .driver_data =3D (kernel_ulong_t)&ad5529r_12bit_model_data, + }, + { } +}; +MODULE_DEVICE_TABLE(spi, ad5529r_id); + +static struct spi_driver ad5529r_driver =3D { + .driver =3D { + .name =3D "ad5529r", + .of_match_table =3D ad5529r_of_match, + }, + .probe =3D ad5529r_probe, + .id_table =3D ad5529r_id, +}; +module_spi_driver(ad5529r_driver); + +MODULE_AUTHOR("Janani Sunil "); +MODULE_DESCRIPTION("Analog Devices AD5529R 12/16-bit DAC driver"); +MODULE_LICENSE("GPL"); --=20 2.43.0