From nobody Fri Dec 19 20:58:12 2025 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 691241A2541 for ; Wed, 8 Jan 2025 17:30:33 +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=1736357435; cv=none; b=n51WCagX4aAg0bxmA2xdDBgyPOY8g+8xx7+pcKukmqgiYazn0fNtTooD+bl+Ta1ZiqndEpSWxVuVa/2ItPVS3mshu5PpoZsLymrxD+j0Oz7kRdWN5oreYmt2XKrNuPasKfh/frUOJoI8WhhnqAIGAcGr6JebGKdbaoChz2GzoPc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736357435; c=relaxed/simple; bh=Evy5a08Q4IXyCPvxw1bhzoqYCioL8eNF759RXajKvAk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=EDbOddVo18LSdja9p+l8iFVPVa0GhKKh3Z1lGhI15jKJR6iqg+vMDkcgDnnAp1ACWbw/9R7BkwWsnuF/6ccbXWRQlt+Xokzo+BG692DxTOWzN44uCHV+mCpQuVTh8Bl1Tn08gda4Cz/j0MMxo+KprJVUdD3bvqx6U37edB6Hfa8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=H4nT60Fc; arc=none smtp.client-ip=209.85.221.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="H4nT60Fc" Received: by mail-wr1-f49.google.com with SMTP id ffacd0b85a97d-385d7f19f20so18751f8f.1 for ; Wed, 08 Jan 2025 09:30:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1736357432; x=1736962232; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=MISweJ7mhpf3vsy2x6Aiv1b3ZxOcL3WBro7kZl0BFxk=; b=H4nT60FcxFbPJ+o2W2BZbnCUbmDX0a9vZNUxrguCctO1zNjrGnkIDoqNP9ptUs9Zke gUNwSLmgjpFijmyCFZhkCdeGnveaArZR/hXHr6BqC8hSlNqlBzNcis9Mk8vDPBMWIBkK RjAwZ5KR3zSU/kyNNbrJETcWfs/nKCt+bKVu30J3sgO8vrSq7ZB6MCaP/X5G0DlihBIS CLJ4MWqcFIa6h/7eazvJ9veoD8r3akP38r/+kuEXI0v276+aqjCjGm28b9/4L7KidHa0 rOBBewmuB+cAAYbcxZQuFFpyQDkGO19w1Xzh0xjNTGHkjt/h2ZK3KjLwECWJKYkfAPi1 H1Ow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736357432; x=1736962232; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=MISweJ7mhpf3vsy2x6Aiv1b3ZxOcL3WBro7kZl0BFxk=; b=Y55EhXJggimO06sM8BX7SGnep0pl5NqxSJ+7hUlSVacZ5TCkduNdOiU9ipkfWJNlj/ oKUGVi7fcWgsozTgM/MBT6TiJRlBdymJyA3p5099Wo5LvAWxU+Rhef/y68qVLxcqcNOi G7+9TWJm61PUgW3pjnIQZJlAgE3VshAdVlkrs/frQFbYZCfU3ORbk6RkUKFoCKjFgKth /A/mxvbcbfU9wW8M9hjQXAiMj3DBtJ5IcNK6n1/LTpqCKO2MiEYbt6CLrgO2fDEt/k/B o6XqwDZm5chD2b75jwMO4Qd09Xam+BFA/nJorwLgxuwdghdvHRPcHMdQPvV+E0aySoaT YBxw== X-Forwarded-Encrypted: i=1; AJvYcCUJ2QlSvmGl55QQK7FN3CdF1dRB/NuultTxT0GdkmJ588UTxpKY/r6yMobOPgxrKT2mcxo2bVuVmrT2uZU=@vger.kernel.org X-Gm-Message-State: AOJu0YyoMyFLZFvRlXXVCjRnPkgVP9lDlv4rA0vZHuspzwIYeYdwjMe+ K8vFy57wfA2GgEcLYaGSZx3/gERsn7zrf1mYy/ZAph0hsNO0JJcJ3HqSI23GNnU= X-Gm-Gg: ASbGnctzo7cSCJWFn9SMm/DOXRSfiMIvoxQxjlXzZwLoijHZAjFJJUxsUhCF5e4+wey ixexwBJeutNMFkImy45Cy1dS9nl03ddWGxrB8At+KCvb22hTmQPnTSWGr+1h3pAI9NbxpUw98fy lOBIq62DvADE++N3oZk3jWbtA9yycoGOJpWyikLC/lT5ZjFW/VQZVQ2jQ7FDjGP7SikAa6jaxSo do83KpXZemRIZVfHVUv5l09WaYWXBl//qDoqgDduTpjnN/50e9E30oVfJ4= X-Google-Smtp-Source: AGHT+IHDamTzJpW3qPznX5EYK5GRfDPlH2hpAKWLJ73AVRWe7y5yhqi8Rjxz3mXkBuFV8JrxR91qGw== X-Received: by 2002:a5d:648a:0:b0:38a:4b8a:e47d with SMTP id ffacd0b85a97d-38a8730ac0emr2930329f8f.26.1736357431699; Wed, 08 Jan 2025 09:30:31 -0800 (PST) Received: from [127.0.1.1] ([87.13.70.66]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38a1c8330d4sm52782599f8f.29.2025.01.08.09.30.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Jan 2025 09:30:31 -0800 (PST) From: Angelo Dureghello X-Google-Original-From: Angelo Dureghello Date: Wed, 08 Jan 2025 18:29:15 +0100 Subject: [PATCH v2 1/9] iio: dac: ad3552r-common: fix ad3541/2r ranges 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: <20250108-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v2-1-2dac02f04638@baylibre.com> References: <20250108-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v2-0-2dac02f04638@baylibre.com> In-Reply-To: <20250108-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v2-0-2dac02f04638@baylibre.com> To: Lars-Peter Clausen , Michael Hennerich , Jonathan Cameron , Mihail Chindris , Nuno Sa , David Lechner Cc: Jonathan Cameron , linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Angelo Dureghello X-Mailer: b4 0.14.1 From: Angelo Dureghello Fix ad3541/2r voltage ranges to be as per ad3542r datasheet, rev. C, table 38 (page 57). The wrong ad354xr ranges was generating erroneous Vpp output. In more details: - fix wrong number of ranges, they are 5 ranges, not 6, - remove non-existent 0-3V range, - adjust order, since ad3552r_find_range() get a wrong index, producing a wrong Vpp as output. Retested all the ranges on real hardware, EVALAD3542RFMCZ: adi,output-range-microvolt (fdt): <(000000) (2500000)>; ok (Rfbx1, switch 10) <(000000) (5000000)>; ok (Rfbx1, switch 10) <(000000) (10000000)>; ok (Rfbx1, switch 10) <(-5000000) (5000000)>; ok (Rfbx2, switch +/- 5) <(-2500000) (7500000)>; ok (Rfbx2, switch -2.5/7.5) Fixes: 8f2b54824b28 ("drivers:iio:dac: Add AD3552R driver support") Signed-off-by: Angelo Dureghello Reviewed-by: David Lechner --- drivers/iio/dac/ad3552r-common.c | 5 ++--- drivers/iio/dac/ad3552r.h | 8 +++----- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/drivers/iio/dac/ad3552r-common.c b/drivers/iio/dac/ad3552r-com= mon.c index 0f495df2e5ce..03e0864f5084 100644 --- a/drivers/iio/dac/ad3552r-common.c +++ b/drivers/iio/dac/ad3552r-common.c @@ -22,11 +22,10 @@ EXPORT_SYMBOL_NS_GPL(ad3552r_ch_ranges, "IIO_AD3552R"); =20 const s32 ad3542r_ch_ranges[AD3542R_MAX_RANGES][2] =3D { [AD3542R_CH_OUTPUT_RANGE_0__2P5V] =3D { 0, 2500 }, - [AD3542R_CH_OUTPUT_RANGE_0__3V] =3D { 0, 3000 }, [AD3542R_CH_OUTPUT_RANGE_0__5V] =3D { 0, 5000 }, [AD3542R_CH_OUTPUT_RANGE_0__10V] =3D { 0, 10000 }, - [AD3542R_CH_OUTPUT_RANGE_NEG_2P5__7P5V] =3D { -2500, 7500 }, - [AD3542R_CH_OUTPUT_RANGE_NEG_5__5V] =3D { -5000, 5000 } + [AD3542R_CH_OUTPUT_RANGE_NEG_5__5V] =3D { -5000, 5000 }, + [AD3542R_CH_OUTPUT_RANGE_NEG_2P5__7P5V] =3D { -2500, 7500 } }; EXPORT_SYMBOL_NS_GPL(ad3542r_ch_ranges, "IIO_AD3552R"); =20 diff --git a/drivers/iio/dac/ad3552r.h b/drivers/iio/dac/ad3552r.h index fd5a3dfd1d1c..4b5581039ae9 100644 --- a/drivers/iio/dac/ad3552r.h +++ b/drivers/iio/dac/ad3552r.h @@ -131,7 +131,7 @@ #define AD3552R_CH1_ACTIVE BIT(1) =20 #define AD3552R_MAX_RANGES 5 -#define AD3542R_MAX_RANGES 6 +#define AD3542R_MAX_RANGES 5 #define AD3552R_QUAD_SPI 2 =20 extern const s32 ad3552r_ch_ranges[AD3552R_MAX_RANGES][2]; @@ -189,16 +189,14 @@ enum ad3552r_ch_vref_select { enum ad3542r_ch_output_range { /* Range from 0 V to 2.5 V. Requires Rfb1x connection */ AD3542R_CH_OUTPUT_RANGE_0__2P5V, - /* Range from 0 V to 3 V. Requires Rfb1x connection */ - AD3542R_CH_OUTPUT_RANGE_0__3V, /* Range from 0 V to 5 V. Requires Rfb1x connection */ AD3542R_CH_OUTPUT_RANGE_0__5V, /* Range from 0 V to 10 V. Requires Rfb2x connection */ AD3542R_CH_OUTPUT_RANGE_0__10V, - /* Range from -2.5 V to 7.5 V. Requires Rfb2x connection */ - AD3542R_CH_OUTPUT_RANGE_NEG_2P5__7P5V, /* Range from -5 V to 5 V. Requires Rfb2x connection */ AD3542R_CH_OUTPUT_RANGE_NEG_5__5V, + /* Range from -2.5 V to 7.5 V. Requires Rfb2x connection */ + AD3542R_CH_OUTPUT_RANGE_NEG_2P5__7P5V, }; =20 enum ad3552r_ch_output_range { --=20 2.47.0 From nobody Fri Dec 19 20:58:12 2025 Received: from mail-wr1-f44.google.com (mail-wr1-f44.google.com [209.85.221.44]) (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 E612E1FF1D0 for ; Wed, 8 Jan 2025 17:30:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736357436; cv=none; b=mabdElCrdKMLmTx/RoGeha7LIfqRj2MLYxGzl15dKne/6YLYz5UpYA/8c8j2Nk4YvRYuzRDEUECKhOxLdaAwWMwxUryC+5NX1Nk0uB/OjtUSTJwYA6ptHkhFtoYUpn3y21zFANAb6TclwdQelCzH2iazuocqqfoLnmm60cp/UHA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736357436; c=relaxed/simple; bh=nZkRgILfPdhIXSsrXa+Y4ye1ieetO/26xbBu55cEnj8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=VQnnKdL6mCdRd/zdv6+KWx65C1KItJR6YQugSDx8ldG1F6Bd2EhkYxJuV9z8xT3tOOILXhz73jQwqMyMSrYq1StdYkgOurdAAkmQSctYZSsRgCpxW+3htKhEgpnj6hfCSKyclRf0RI/HmwgchrZw1X/GFhZU/s3mJs6SU0y1JQ8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=cOfhaBSy; arc=none smtp.client-ip=209.85.221.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="cOfhaBSy" Received: by mail-wr1-f44.google.com with SMTP id ffacd0b85a97d-38637614567so12897f8f.3 for ; Wed, 08 Jan 2025 09:30:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1736357433; x=1736962233; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=ogqDcmpodmDQ/q56quzP/HOrrjeT0i3lFvLbU+LwsSM=; b=cOfhaBSyz2NE6KVX8ISHqWIz1OSfK9bg0x9FBQBk4Rs6xIASP7Map9QimXBni+uw3W EEIOgyoecLpRonqxNXqw3gWoN+jqKhVIJ9sKqyYLuFw3+FYXyPw6U+59SxzenlA80hqZ 45blMQPrt1W29yy51P2gAL0nipMSN46occH/0c7bID7EQeiyDoOnJYfr57koguzoxl1S iefSqScbxOyA81St+0hQ6UAQmwJ6bN3pfU8pJ5+Ud3B3fRncI1keDwI9mHl+3tipPBnN kzwnUtGdaTNRZuMDpVuMedXqblAEMSMnZU49sfXb9eP45ffAgghbbxglXxxeF7lEuXbX U8tw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736357433; x=1736962233; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ogqDcmpodmDQ/q56quzP/HOrrjeT0i3lFvLbU+LwsSM=; b=CwOHSCZCEicXYvh9knsLQjlIX8QGfHVEfHFHsL2l5nnUEfyOZbFpsWaXAG9ml3Wxx6 UaaFiNxnm9qrcafo6V0RZ/go3Dy+AvWNX7qdNOsZbumVgHTS710iDqS/GExYXTXm93ZG EmB2SoMRtmTAmsOaOiDlRZ47jxHS+7jcG4erAOmmYOTzmUWic5LkWePD3r0wl1AWMze/ U6K7sj72stTdThw1x/whiYvLeeKjO90r7VJyB31f0rO4QUISv/dN3hrWW2RGoL4Py8tG 3ybiBmgNC4xSngMvMihm+K7aIREU2j1JqHzpQI0d0LZXF7PjwavxFVYk3GAqI0ZcFpeT Gb4Q== X-Forwarded-Encrypted: i=1; AJvYcCUPeP7LmDeg19CtvvBym3DUADg3d6KYICkW2tudapdebcCEtSuId2lNEth96s+14fBdwjpb8bKPbi6VWsM=@vger.kernel.org X-Gm-Message-State: AOJu0YxjwC7lsCUBLAP75aRVamzM3AJamhnQMhOjJSRpZmlkeeId8YwB l6eDL1YGMORJJScy7obI9gpPyC3wapgR269LJ6aM4O1GkwsrT8c5s0QHEEM8+iQ= X-Gm-Gg: ASbGncvPJgQCtsegZTOX4w0aUplsW1SnEvvgb0/AywwkC5IuhuitBILYp5xRsbmluf/ oD55TA014rxw6H/Q+zkH9GmEZs8DZj/8Y1EZvZGI8w+Ot6e3JHj1XODNgM697veCAoRYnVfLuIG 1eIhQvgppUtYCo7YXh7ELBgVJJZyzDwH6brw1VzgeBD5EsMRJFtj5eh3LIpxSxFPRyvDapXFfjj LpLBLymezcLchwLEQh0afWuHiDd1+ddB2R91+Zn/3a6J4LI6tw79GxnM0U= X-Google-Smtp-Source: AGHT+IHcmhJGXkysxn7bW+xCJxZmZYHBYQ+uQ9YZk1VUxnFMsUr5DpBd/e0GMjIuxB1CvtGZSm6LXw== X-Received: by 2002:a05:6000:144a:b0:385:fc70:832 with SMTP id ffacd0b85a97d-38a87303cacmr3138373f8f.16.1736357433088; Wed, 08 Jan 2025 09:30:33 -0800 (PST) Received: from [127.0.1.1] ([87.13.70.66]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38a1c8330d4sm52782599f8f.29.2025.01.08.09.30.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Jan 2025 09:30:32 -0800 (PST) From: Angelo Dureghello X-Google-Original-From: Angelo Dureghello Date: Wed, 08 Jan 2025 18:29:16 +0100 Subject: [PATCH v2 2/9] iio: dac: ad3552r-hs: clear reset status flag 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: <20250108-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v2-2-2dac02f04638@baylibre.com> References: <20250108-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v2-0-2dac02f04638@baylibre.com> In-Reply-To: <20250108-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v2-0-2dac02f04638@baylibre.com> To: Lars-Peter Clausen , Michael Hennerich , Jonathan Cameron , Mihail Chindris , Nuno Sa , David Lechner Cc: Jonathan Cameron , linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Angelo Dureghello X-Mailer: b4 0.14.1 From: Angelo Dureghello Clear reset status flag, to keep error status register clean after reset (ad3552r manual, rev B table 38). Reset error flag was left to 1, so debugging registers, the "Error Status Register" was dirty (0x01). It is important to clear this bit, so if there is any reset event over normal working mode, it is possible to detect it. Fixes: 0b4d9fe58be8 ("iio: dac: ad3552r: add high-speed platform driver") Signed-off-by: Angelo Dureghello Reviewed-by: David Lechner --- drivers/iio/dac/ad3552r-hs.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/iio/dac/ad3552r-hs.c b/drivers/iio/dac/ad3552r-hs.c index 216c634f3eaf..8974df625670 100644 --- a/drivers/iio/dac/ad3552r-hs.c +++ b/drivers/iio/dac/ad3552r-hs.c @@ -329,6 +329,12 @@ static int ad3552r_hs_setup(struct ad3552r_hs_state *s= t) dev_info(st->dev, "Chip ID error. Expected 0x%x, Read 0x%x\n", AD3552R_ID, id); =20 + /* Clear reset error flag, see ad3552r manual, rev B table 38. */ + ret =3D st->data->bus_reg_write(st->back, AD3552R_REG_ADDR_ERR_STATUS, + AD3552R_MASK_RESET_STATUS, 1); + if (ret) + return ret; + ret =3D st->data->bus_reg_write(st->back, AD3552R_REG_ADDR_SH_REFERENCE_CONFIG, 0, 1); --=20 2.47.0 From nobody Fri Dec 19 20:58:12 2025 Received: from mail-wr1-f52.google.com (mail-wr1-f52.google.com [209.85.221.52]) (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 6B0BC201016 for ; Wed, 8 Jan 2025 17:30:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736357438; cv=none; b=VifwVNZpFcacBzWd6TAGZ4t7WaQTydIUYBMZnES/4f6CIFevgFyXfCe3wxXp8osapAyJWsxcgcbzaTl4e9L9eTcI4RgiqBHLlqOvixivoqKIk0fr/mzvWVeNj9FaOukiYVWvm8g4XS6GRd/z6ERs6Yi9C1gazC6yJ8hs+ISfmqk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736357438; c=relaxed/simple; bh=+lZHZ4OM8rTY/dhezSlahZGVnk6ol0FvguLhf0YmUqs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Bn/u48SfzYccrYE6GhB2lZKTjYl9QjdBCIwpRH3YwWLJIycOUUBdLEq5nVAzs7a0ZloIsW60dSNPTV3IgdSbrJgbfXzS0n4wVFR3c1ppY0xIWwJq/LiiVvdir6QUBH7AhSjJSzBIB6ohZW23ROHpyn+ntWCmWUT2eubrouPWcd8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=QB8ttpc9; arc=none smtp.client-ip=209.85.221.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="QB8ttpc9" Received: by mail-wr1-f52.google.com with SMTP id ffacd0b85a97d-38a8b17d7a7so7651f8f.2 for ; Wed, 08 Jan 2025 09:30:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1736357435; x=1736962235; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=xfrMkIY9tbM1sPwHCNYu/jKLHOMpHgwU9OMNQ7g5My0=; b=QB8ttpc9lu5kIPW9y5IGzWfWIaxC4JQzHb63R6JpfCAEKIGO6c4DvBWKYnY5biJ+aq NSlFi54pPO6YZg7HqLGrHTASLkab6A/hW+YgCGX8MpGr2jk42nKwdFbDpUhughsl2pfT yAOdypOo2JPocecoo9FhJWUU+2sDvEKfAUCZLKYZa1NjaFPRItvRouJhuzS12s06jQpq +WyUAfWzFKhLGTdw3+TFKIWlGmVLe+wn0VxIIILYjopzaswt1SGUpRl6hhGAq0jBuIso 97hSfVc75ensKGDGJoP4lROmgaC4Tuv5rGhjZOUkCTZXHfCwSz61Xx8/3qX1zGilPQK7 E1/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736357435; x=1736962235; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=xfrMkIY9tbM1sPwHCNYu/jKLHOMpHgwU9OMNQ7g5My0=; b=l79IKuUJ2I/A3sjKYjLLtqc2uiCHAfrQKrttgChoJdwLgovPNE2+1u1yVEMIgdb1/B VsRbnKj2gx0qtu0kwcos0Ry+68Ix6zq4GQquVPtVUEXoQ4xhlenE35c2Au2/HfG6T2Rm WsC3m1mSamtH4W7Jx8Hoo0+cOwN7oE3SKz/acqHVu7FsNAB9tdOG1oamlgA10QVghNN8 gjKSeoOuH/iDpgk1Cb66OW3WcKyLsRqgMosS88yqLysJt+UQ+8V6Hzz7nEWqgvwfTIXz g/4JBhgm5cuNcl7gBe1F0ajmitkEnMHjLWBzFSmdQBlHWbvk3vVR++xE4wi9wu6ME7QE tHjw== X-Forwarded-Encrypted: i=1; AJvYcCUikWS7snwhBOSq/Y+o4vzBvbFmaQpiIkrw5ObRPkFIrIgTNPmNIVLTuW2l5ErK5XipLCiwbIdh4n8UXGU=@vger.kernel.org X-Gm-Message-State: AOJu0Yzrcc/vMFnUdr/eU1l+aXBNXZvTaf01J+GKFzaRlPiZmkIZbWRZ hlq89nBcVP8YorGAPViTlGRgkcSfbc6w6zBzkoiZ7zHK38pJoGJf8nVCc8uf8Qw= X-Gm-Gg: ASbGncvM+fUgy7nq76ScahDnllGMzbcuzKKxjZDK1nRPLUxrc/KwBwgF+ODELG6Vv9L 7QOXqbNrVv+kmbf4A2wIMR6XoEo50ZHBi4NomFMtkgo5TiJFjHf8NTJmj2I2Fne9FkuFPIsSaSe /KCrfzc0uuY+TpubXNzgGExr/2J2erWnRv8sGyEo/I8LeqnLqFO9BEtN5PUTvBqfkXUueeK0flt 8DY4x17zFOg/VP3ne8QuvJeOw7lHM6CkyvSKkffLIHCF0iiNY+gr3b/CB0= X-Google-Smtp-Source: AGHT+IH4qbFI51oPuAFstB6iigZ7tk+yDzWm7fy62GK+mJysZx+iajrKN/1HnJeyNn4/bidfamGMWw== X-Received: by 2002:a05:6000:1f8d:b0:385:f6c7:90c6 with SMTP id ffacd0b85a97d-38a8730687emr3515425f8f.20.1736357434494; Wed, 08 Jan 2025 09:30:34 -0800 (PST) Received: from [127.0.1.1] ([87.13.70.66]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38a1c8330d4sm52782599f8f.29.2025.01.08.09.30.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Jan 2025 09:30:33 -0800 (PST) From: Angelo Dureghello X-Google-Original-From: Angelo Dureghello Date: Wed, 08 Jan 2025 18:29:17 +0100 Subject: [PATCH v2 3/9] iio: dac: adi-axi-dac: modify stream enable 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: <20250108-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v2-3-2dac02f04638@baylibre.com> References: <20250108-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v2-0-2dac02f04638@baylibre.com> In-Reply-To: <20250108-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v2-0-2dac02f04638@baylibre.com> To: Lars-Peter Clausen , Michael Hennerich , Jonathan Cameron , Mihail Chindris , Nuno Sa , David Lechner Cc: Jonathan Cameron , linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Angelo Dureghello X-Mailer: b4 0.14.1 From: Angelo Dureghello Change suggested from the AXI HDL team, modify the function axi_dac_data_stream_enable() to check for interface busy, to avoid possible issues when starting the stream. Fixes: e61d7178429a ("iio: dac: adi-axi-dac: extend features") Signed-off-by: Angelo Dureghello --- drivers/iio/dac/adi-axi-dac.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/drivers/iio/dac/adi-axi-dac.c b/drivers/iio/dac/adi-axi-dac.c index b143f7ed6847..d02eb535b648 100644 --- a/drivers/iio/dac/adi-axi-dac.c +++ b/drivers/iio/dac/adi-axi-dac.c @@ -585,6 +585,17 @@ static int axi_dac_ddr_disable(struct iio_backend *bac= k) static int axi_dac_data_stream_enable(struct iio_backend *back) { struct axi_dac_state *st =3D iio_backend_get_priv(back); + int ret, val; + + ret =3D regmap_read_poll_timeout(st->regmap, + AXI_DAC_UI_STATUS_REG, val, + FIELD_GET(AXI_DAC_UI_STATUS_IF_BUSY, val) =3D=3D 0, + 10, 100 * KILO); + if (ret) { + if (ret =3D=3D -ETIMEDOUT) + dev_err(st->dev, "AXI read timeout\n"); + return ret; + } =20 return regmap_set_bits(st->regmap, AXI_DAC_CUSTOM_CTRL_REG, AXI_DAC_CUSTOM_CTRL_STREAM_ENABLE); --=20 2.47.0 From nobody Fri Dec 19 20:58:12 2025 Received: from mail-wr1-f48.google.com (mail-wr1-f48.google.com [209.85.221.48]) (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 A6DD12010E8 for ; Wed, 8 Jan 2025 17:30:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736357439; cv=none; b=h3AT7y7sGZqsrU5fZ6JPb5yK6Z/uRPKCkDue8gnlGbWN62UqcQzExwoDVE/g4+KlZshvNJhg+5PiZkqvEA2cEujpiit7/YmNM1fyang2x/Insv4w7BxRtwBFtVzI3Bf+2t9U4Rq/SAZpxpMcJRHfrCoNryvF06Ts0rXe6w1JAi0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736357439; c=relaxed/simple; bh=XfnaLwPbwvEvqLzRap/jhDwdzzaCiSDrFwR+woVVJDc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=G1IWXm8yYNI2aa/SsAWTknbcdUYlZhyJvt8ju3wcKWcYB76oRoDeg2DUay9CFzQndrQrYBdX9nTBo0c5Kd1MvZD1hIhLHwXKkocNtwRaVHkWch5HvNBfPqZxf3kbnKz5lr7MxqXPUxuCJ/MmbhPsUiB7UstDg/4sVBgC7BRVuwg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=e0A3ZUXs; arc=none smtp.client-ip=209.85.221.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="e0A3ZUXs" Received: by mail-wr1-f48.google.com with SMTP id ffacd0b85a97d-385eed29d17so25124f8f.0 for ; Wed, 08 Jan 2025 09:30:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1736357436; x=1736962236; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=4FQcFBx5V6lkdkVoqAqgUJ0fqMpy++8oGzKM6couGQY=; b=e0A3ZUXsdRCigPCDpEehbVPj2edMD7Lj0pw4dVJXADJ9JCXSMSLQXZBbdVSZgFA4Kk OuEEHaNm7Ls1xsUDgIWoUOH/CyLRQLXK/7NxQpMc9rbj0NMvuCTqwgmFJTp+fYt8ayQp OoKE3Los04hj1sbyd6MWXILVh51bXz5g3+TIo6y3Cf/7SZfLaTTM7HWC3lEDiO8GShLk 5j+RJvBEachfHrrYDsYUIfQ6QxRsQR6EeGt8oJxgHVCa2a/ysGbDRqBEVpKpbE44Xdlv jVEvjvyc92DLHM4kufqAEJK+e3XNoD6uasVx4TkhCBSDfBGuHxfzhSqr7Rhkf/fcwQSN zagg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736357436; x=1736962236; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=4FQcFBx5V6lkdkVoqAqgUJ0fqMpy++8oGzKM6couGQY=; b=aMJlWJXva82tJmF0KToc9dtEy513b6gcrL7PVP25zPX9DApb4hhE70CzO5LEyp6lOX 4zzuOxD6pHRaJk/DV+Esk2aavJ3rlRI+vz1KGN47nbUUX8KrOwgN6e2R7mqx/5dahdgF aG4wRCMlhQNsQP5rqYO7CC6wOmCe4wI0tpyoOOZZOusoafg1OFcZyOhR+ub5CCN2nOR+ WJ28ZtrU/l52GzYbV6fNN3lNcvrdyGvy1Cos6TiP18+J7JhjIelJN3+ipSQVVPg3tEJy OC5vpsknzvHDIVKGGDY4u6vG2n/p4FpEEYhlQNLK1fyGzukCBWRYz3/BthQLobGAK0LG /E8w== X-Forwarded-Encrypted: i=1; AJvYcCUusowZMJMjNVxk1t12t3us9mnjc8PyKcDYnp6NWdkptJDZF621op8wOZMTKvr9X0yuzVoECWxqNAYUVps=@vger.kernel.org X-Gm-Message-State: AOJu0Yy5cjJTyLoywWO3Dx2V+Bpr9FZkZZxFGHanBOb10vnbDs4+nsaF H9XT3wUuuHEnPvyvfSvYnFqhJb61qoqc5xD5FeMEEwqmRkKnkURjLxjpmhwJFmk= X-Gm-Gg: ASbGncu7iHfgqyp1WAH/HEoULF1V03qrbTkXbuiezVngxC1AzFU82ecUf/zVVXZpR85 MHooz+Gsf4GuK87Pu+Y9+Sj7iFwI0e23sGKdatY4pz4mGtinnfo+h3lEKH99zMwqxx11giTCUjA lNR8ywOOaHHjUcjlp0TkLxMeLstACPNyDZj2XXFuOAa5fvnPMgJLsupdiA7m1hKTMcYLR2ts8/M cnFLUPwJdW3A5rGeXZQgMDwNBywS78VVkVVp3pAQajEuq4Lz126QU+ywvo= X-Google-Smtp-Source: AGHT+IGgfxt16ev6MsDtJ/+I4o/+V+kvxrkDi2iioXLqcSIuCoTFprBTGUC4euEkcvZinBrYpakpsg== X-Received: by 2002:a05:6000:4102:b0:38a:8afe:9530 with SMTP id ffacd0b85a97d-38a8afe9557mr194371f8f.33.1736357436006; Wed, 08 Jan 2025 09:30:36 -0800 (PST) Received: from [127.0.1.1] ([87.13.70.66]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38a1c8330d4sm52782599f8f.29.2025.01.08.09.30.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Jan 2025 09:30:35 -0800 (PST) From: Angelo Dureghello X-Google-Original-From: Angelo Dureghello Date: Wed, 08 Jan 2025 18:29:18 +0100 Subject: [PATCH v2 4/9] iio: dac: adi-axi-dac: add bus mode setup 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: <20250108-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v2-4-2dac02f04638@baylibre.com> References: <20250108-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v2-0-2dac02f04638@baylibre.com> In-Reply-To: <20250108-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v2-0-2dac02f04638@baylibre.com> To: Lars-Peter Clausen , Michael Hennerich , Jonathan Cameron , Mihail Chindris , Nuno Sa , David Lechner Cc: Jonathan Cameron , linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Angelo Dureghello X-Mailer: b4 0.14.1 From: Angelo Dureghello The ad354xr requires DSPI mode (2 data lanes) to work in buffering mode, so backend needs to allow a mode selection between: SPI (entire ad35xxr family), DSPI (ad354xr), QSPI (ad355xr). Signed-off-by: Angelo Dureghello --- drivers/iio/dac/ad3552r-hs.h | 8 ++++++++ drivers/iio/dac/adi-axi-dac.c | 26 +++++++++++++++++++++++++- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/drivers/iio/dac/ad3552r-hs.h b/drivers/iio/dac/ad3552r-hs.h index 724261d38dea..4a9e35234124 100644 --- a/drivers/iio/dac/ad3552r-hs.h +++ b/drivers/iio/dac/ad3552r-hs.h @@ -8,11 +8,19 @@ =20 struct iio_backend; =20 +enum ad3552r_io_mode { + AD3552R_IO_MODE_SPI, + AD3552R_IO_MODE_DSPI, + AD3552R_IO_MODE_QSPI, +}; + struct ad3552r_hs_platform_data { int (*bus_reg_read)(struct iio_backend *back, u32 reg, u32 *val, size_t data_size); int (*bus_reg_write)(struct iio_backend *back, u32 reg, u32 val, size_t data_size); + int (*bus_set_io_mode)(struct iio_backend *back, + enum ad3552r_io_mode mode); u32 bus_sample_data_clock_hz; }; =20 diff --git a/drivers/iio/dac/adi-axi-dac.c b/drivers/iio/dac/adi-axi-dac.c index d02eb535b648..79ca158c1ad9 100644 --- a/drivers/iio/dac/adi-axi-dac.c +++ b/drivers/iio/dac/adi-axi-dac.c @@ -64,7 +64,7 @@ #define AXI_DAC_UI_STATUS_IF_BUSY BIT(4) #define AXI_DAC_CUSTOM_CTRL_REG 0x008C #define AXI_DAC_CUSTOM_CTRL_ADDRESS GENMASK(31, 24) -#define AXI_DAC_CUSTOM_CTRL_SYNCED_TRANSFER BIT(2) +#define AXI_DAC_CUSTOM_CTRL_MULTI_IO_MODE GENMASK(3, 2) #define AXI_DAC_CUSTOM_CTRL_STREAM BIT(1) #define AXI_DAC_CUSTOM_CTRL_TRANSFER_DATA BIT(0) =20 @@ -725,6 +725,29 @@ static int axi_dac_bus_reg_read(struct iio_backend *ba= ck, u32 reg, u32 *val, return regmap_read(st->regmap, AXI_DAC_CUSTOM_RD_REG, val); } =20 +static int axi_dac_bus_set_io_mode(struct iio_backend *back, + enum ad3552r_io_mode mode) +{ + struct axi_dac_state *st =3D iio_backend_get_priv(back); + int ival, ret; + + ret =3D regmap_update_bits(st->regmap, AXI_DAC_CUSTOM_CTRL_REG, + AXI_DAC_CUSTOM_CTRL_MULTI_IO_MODE, + FIELD_PREP(AXI_DAC_CUSTOM_CTRL_MULTI_IO_MODE, mode)); + if (ret) + return ret; + + ret =3D regmap_read_poll_timeout(st->regmap, + AXI_DAC_UI_STATUS_REG, ival, + FIELD_GET(AXI_DAC_UI_STATUS_IF_BUSY, ival) =3D=3D 0, + 10, 100 * KILO); + + if (ret =3D=3D -ETIMEDOUT) + dev_err(st->dev, "AXI read timeout\n"); + + return ret; +} + static void axi_dac_child_remove(void *data) { platform_device_unregister(data); @@ -736,6 +759,7 @@ static int axi_dac_create_platform_device(struct axi_da= c_state *st, struct ad3552r_hs_platform_data pdata =3D { .bus_reg_read =3D axi_dac_bus_reg_read, .bus_reg_write =3D axi_dac_bus_reg_write, + .bus_set_io_mode =3D axi_dac_bus_set_io_mode, .bus_sample_data_clock_hz =3D st->dac_clk_rate, }; struct platform_device_info pi =3D { --=20 2.47.0 From nobody Fri Dec 19 20:58:12 2025 Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.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 072C420127A for ; Wed, 8 Jan 2025 17:30:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736357440; cv=none; b=aas/FlHN8hSqkzjH5G6hqas3bTvhQyDpQxMr2Dcpj/poUrsklY15uXAWTsq4f0BHns9aJjEm9TSSh/lHDYFUV91xu4nRT1WIjM05Sn5d1cz9z56Z1Kqm20K3zxyrTMq3s3DNK0frhAvyLye7wyNJ3ZOrppvoplIKGoyk1ywUrFc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736357440; c=relaxed/simple; bh=IuHaI/semL+Hv8JNr40Pmjd0RO8u7Ce4lu8w8B537I0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=bin93+4PuEH5n0YWIl/+whZD8UO39I9O0987rid1LepsfXogwhgzwW//eBKoaUPNhtkkhzjTwL+dj0PV/bLO+l3D2CIeRY8cVm0OCjhQHguhQRsa/GDUjoG9iBQAWujRACjQbUBJyufXICMqKshZUfpDwM4as3OdHAxz3DSdjcU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=fl+bbM8v; arc=none smtp.client-ip=209.85.221.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="fl+bbM8v" Received: by mail-wr1-f41.google.com with SMTP id ffacd0b85a97d-3862b40a6e0so24801f8f.0 for ; Wed, 08 Jan 2025 09:30:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1736357437; x=1736962237; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=szKwztPhzV6CVF/0X9HGbGEX7Uh9TD9UOgptum5XTx8=; b=fl+bbM8vy1Ovyuhzmdz+qTWRxaNY/cD8dPmdfWFomZMLhk/jwr8EsYHhqsJJmEddGg +pKkrqoNcCMbQ7TPMIYnL/vSFIc26aRIIIeCe/Dgk7T+D5/l0vbtGINObG4T+8kqIak0 fhmVedw6qeay4xb5L6LLn90vLHBMdkAeuL80eGXbhq3U89HWoQ9d23vgZLnvrrhc2JaF xforg/F03QKxJzgTYwr+ztEQ5JV4xTNy/lajN6uWhlupF4nXmXgqRAhM3dWQnaWPQrkl NAxff8wINBgrUouEmlP1nZvCwhYwhPvC07oLWM+fBb3Upd7eOYLCTCR3V2e5XM9EyJrE 53iA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736357437; x=1736962237; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=szKwztPhzV6CVF/0X9HGbGEX7Uh9TD9UOgptum5XTx8=; b=g73yeF4J7/47c0OMSnpcLxNCBIscYn/QgL3YbV1rUXeYm2orMhOPXk8SM4ngrXDHGy UZ1mDmLbuHdA99onvGOZtMJQNli7SsfeJuTb6TLeJqylydHLd7bIDi8+uAM6c+ZyiA27 AR++tjnA07woA4YNm+mATD1hmk7KJpBDGzlB0wPKuLFBaMRab4A3B1WGqin/Xz+GJAQf sysB7GYgQcWWmcF82nW1dPyei+audj2M25Bmg6KJgwNToD8CD3gyvnFXP4S0gvJPd5Mt FMu6h0zfktHWlWZ/jV9tDrHDUjsWOd+IJE+tNQiuf42mDCQjYCwtA3OMj9ncpNVbes92 6iiQ== X-Forwarded-Encrypted: i=1; AJvYcCUZIAmoArcQ6W2qDgw/pOB22g7HQIHT1QqngiPRsTZ/WYv+P8Q9LFTqaM6St++UHUlo1G8Fldvmzit6+nE=@vger.kernel.org X-Gm-Message-State: AOJu0Yz9LTr4EH3sw5UbXvSIrbCgBR6BXz2ofokyAB+vjTIJ9tA6kFuk Ppd7JvI4bpj8D6JX/WQuZjhOkMAkl/fFqohDp6VJsu205TAtENUlDTAdg1v9bgM= X-Gm-Gg: ASbGnct/NAwP4ADGmXP9JogC36Zc5dQME0PB9SgJr4T7+8+cInYvlG4qeUkF37Jp+P8 PT4jA/SGVm4VsA5YkTocGcTlo+POP0QSUx3Aj/icfFp+6aVonCh4Tdi0wu/vD+R67oA4s4eMwBF oV97+1fqIyJChA28q9t3YZeu7jpZwA1xJZLhKW+QSauM1GgIqxPNbwZaRkANPA2Z2gjZPwhrAdY Bjj3kB1uGY1r0HNZHKaNAFYNG2fKAGyQ9aLEP97FcktFrVMye7imVOWEks= X-Google-Smtp-Source: AGHT+IHZQe7bqAuDCWH482pq2vJ7oArvpn5JDt8LHHWBYu8pE/3pqQpPt6ie/yD+qulq+Fw1RO94Lg== X-Received: by 2002:a5d:64eb:0:b0:38a:50fa:d582 with SMTP id ffacd0b85a97d-38a87363364mr2332501f8f.59.1736357437339; Wed, 08 Jan 2025 09:30:37 -0800 (PST) Received: from [127.0.1.1] ([87.13.70.66]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38a1c8330d4sm52782599f8f.29.2025.01.08.09.30.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Jan 2025 09:30:36 -0800 (PST) From: Angelo Dureghello X-Google-Original-From: Angelo Dureghello Date: Wed, 08 Jan 2025 18:29:19 +0100 Subject: [PATCH v2 5/9] iio: dac: ad3552r-hs: fix message on wrong chip id 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: <20250108-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v2-5-2dac02f04638@baylibre.com> References: <20250108-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v2-0-2dac02f04638@baylibre.com> In-Reply-To: <20250108-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v2-0-2dac02f04638@baylibre.com> To: Lars-Peter Clausen , Michael Hennerich , Jonathan Cameron , Mihail Chindris , Nuno Sa , David Lechner Cc: Jonathan Cameron , linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Angelo Dureghello X-Mailer: b4 0.14.1 From: Angelo Dureghello Set a better info message on wrong chip id, fixing the expected value as read from the info struct. Signed-off-by: Angelo Dureghello --- drivers/iio/dac/ad3552r-hs.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/iio/dac/ad3552r-hs.c b/drivers/iio/dac/ad3552r-hs.c index 8974df625670..27949f207d42 100644 --- a/drivers/iio/dac/ad3552r-hs.c +++ b/drivers/iio/dac/ad3552r-hs.c @@ -326,8 +326,9 @@ static int ad3552r_hs_setup(struct ad3552r_hs_state *st) =20 id |=3D val << 8; if (id !=3D st->model_data->chip_id) - dev_info(st->dev, "Chip ID error. Expected 0x%x, Read 0x%x\n", - AD3552R_ID, id); + dev_info(st->dev, + "Chip ID mismatch, detected 0x%x but expected 0x%x\n", + id, st->model_data->chip_id); =20 /* Clear reset error flag, see ad3552r manual, rev B table 38. */ ret =3D st->data->bus_reg_write(st->back, AD3552R_REG_ADDR_ERR_STATUS, --=20 2.47.0 From nobody Fri Dec 19 20:58:12 2025 Received: from mail-wm1-f43.google.com (mail-wm1-f43.google.com [209.85.128.43]) (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 E57F0202F68 for ; Wed, 8 Jan 2025 17:30:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736357444; cv=none; b=VgjbT682JjpdT10W9zYjOlhCVdk1bq+zde/wzz4z1vs6wnOJHIAeQ8iX8+dknZ7KVSTaKXtj+4XaEpNvw5TlCet2C4uUtvJpV4BhiBk6WcsBOKsbqkFh8Wn6sGcbhG5Cnpgv/R5wnc0esk8H0wWtDH1jkK5ABKV91YXJFBrqmW0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736357444; c=relaxed/simple; bh=DnAjjx0PkSOieNJ5OJb2nk2Cce0Mvn+naUnXYCUW1PM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Jtp8REeKiqGebqJ1ENpg31iNwPTOa3mlyxe3wdbLOdPK0PRcT8Dd308038bBTnHs8E8IV8IahhpOrUjERbQBagsR+yc21CntzWf8ZtzG0dM+pIdR7EAP63yaq4ODxWOlYGfiyb+XMxOh7ruMFe68YbQqO6foatdfHh/quIEkLrc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=Gp5+FlpH; arc=none smtp.client-ip=209.85.128.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="Gp5+FlpH" Received: by mail-wm1-f43.google.com with SMTP id 5b1f17b1804b1-4364a37a1d7so732025e9.3 for ; Wed, 08 Jan 2025 09:30:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1736357440; x=1736962240; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=qABqYAhj0TrQzJxH7XVarpnbO7+OveXqYM2s3icznC4=; b=Gp5+FlpHJFNF4Iv1xZSRQrMCGxxP96zqrOhsI2nCDVQV/F2fhUcjpqib8XK0zowHCv jnfVioIcJ3MwAb5+dpn2F64Wj++/TmguihzKtLDRrrrgXGK1NT0kd7ad8gC2CRwEBkvK 91rSF/Ur53zPbINWSTxJhRi7CFc/qzsVE21DAllAbn+CZpPkhGdhohnG1EkcWzCUJ9m1 3rSXqdG3+6csNurp9ONIVEGPNiiC7EZJQd60qgA+wxzUEQMOReA2sbW8VUOgTzHzsuGI XuFNUXokkf2xrln0OzfMbzR55Awtcc7tvn/MmRd/+9DHyio+aqpIdX7aAUgurcKKeo2p 1tTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736357440; x=1736962240; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=qABqYAhj0TrQzJxH7XVarpnbO7+OveXqYM2s3icznC4=; b=I1WZL8/UjA5HSrYnJPM5Vnr4ZnGcP/xrL2KABt7fgCePorGRqti1sC1Wf1yaeSdN17 dOuzu3flLElvEonhh4YP3w4xykOJpV8jVptJGky3G5x3wMZ68k3XjmHkEjIjhbXJMnBD KoHvslKfilHkv2ArMapK8rXWVhgIzLHDIskEwATV+dzTMB6NxckJhSU+WuKRIw/Vth5R +5/UqwXX3OCz6YV22T3hEqgoFb/CRrLfS0AOqfun5DoOpn9+I+jf3JwDyfXgnM5VnyWl sTpZOCZn1kYuZaqKmvZdCaFBQuSdHeVTC8hx3sqrKV/nSVVquHVIKoqMqW+BVmQb3LNt /6NQ== X-Forwarded-Encrypted: i=1; AJvYcCXyub7CxKwfZC/JCY3koV4a8MB+Tovq/okiR0TewsSUJPFd1Rqvqiyv3AKyXehRhqEGtSK0WwOOy6nOuxo=@vger.kernel.org X-Gm-Message-State: AOJu0Yz9XWqRvG7fstkOpqfOln6PsDj26dHlVNQw3oR58VuI1934X6Ai kzGu/7Q2Af9PsTKpQnM/SOAPbMjr2fRm5OBoOH2ey+uPpJg2RsUGiUcdIZlsnR6MxqNKYBJVQXE L X-Gm-Gg: ASbGncst8CKu3AjDHyYvHG6itWul8S83chnaIlBIYc9dzYU1XihU1Cy0qWOrWURUzR7 O1BuUYK3uFicgtw5eKnbRNZDOgxQ5TmqJ/1oYgSRZuLcAej495Qzy8HbQDNoXJuXMpbNUMFAVE5 YJ9m8u20fYNu+VWlD9534I40tP/uc/jw50sJW4BtVNOsJfrTAhn9VaUzKQXz3NMUxdc8c0Z/ezT DSjWAazwy9pnstWmovtIve4bA668ajCvWAomw60Hlv/EhEtazp+o8Ns7iE= X-Google-Smtp-Source: AGHT+IF3nilwMU43g5/fpaBvcw4VZUw4Fkdm9sOic07GjpPunCK+W3hkn/+CE4mn9czZhiryv71U9w== X-Received: by 2002:a05:600c:1e09:b0:436:e751:e445 with SMTP id 5b1f17b1804b1-436e751e61fmr16540885e9.5.1736357438725; Wed, 08 Jan 2025 09:30:38 -0800 (PST) Received: from [127.0.1.1] ([87.13.70.66]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38a1c8330d4sm52782599f8f.29.2025.01.08.09.30.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Jan 2025 09:30:38 -0800 (PST) From: Angelo Dureghello X-Google-Original-From: Angelo Dureghello Date: Wed, 08 Jan 2025 18:29:20 +0100 Subject: [PATCH v2 6/9] iio: dac: ad3552r-hs: use instruction mode for configuration 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: <20250108-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v2-6-2dac02f04638@baylibre.com> References: <20250108-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v2-0-2dac02f04638@baylibre.com> In-Reply-To: <20250108-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v2-0-2dac02f04638@baylibre.com> To: Lars-Peter Clausen , Michael Hennerich , Jonathan Cameron , Mihail Chindris , Nuno Sa , David Lechner Cc: Jonathan Cameron , linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Angelo Dureghello X-Mailer: b4 0.14.1 From: Angelo Dureghello Use "instruction" mode over initial configuration and all other non-streaming operations. DAC boots in streaming mode as default, and the driver is not changing this mode. Instruction r/w is still working becouse instruction is processed from the DAC after chip select is deasserted, this works until loop mode is 0 or greater than the instruction size. All initial operations should be more safely done in instruction mode, a mode provided for this. Signed-off-by: Angelo Dureghello --- drivers/iio/dac/ad3552r-hs.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/drivers/iio/dac/ad3552r-hs.c b/drivers/iio/dac/ad3552r-hs.c index 27949f207d42..991b11702273 100644 --- a/drivers/iio/dac/ad3552r-hs.c +++ b/drivers/iio/dac/ad3552r-hs.c @@ -132,6 +132,13 @@ static int ad3552r_hs_buffer_postenable(struct iio_dev= *indio_dev) return -EINVAL; } =20 + /* Primary region access, set streaming mode (now in SPI + SDR). */ + ret =3D ad3552r_qspi_update_reg_bits(st, + AD3552R_REG_ADDR_INTERFACE_CONFIG_B, + AD3552R_MASK_SINGLE_INST, 0, 1); + if (ret) + return ret; + ret =3D st->data->bus_reg_write(st->back, AD3552R_REG_ADDR_STREAM_MODE, loop_len, 1); if (ret) @@ -198,6 +205,14 @@ static int ad3552r_hs_buffer_predisable(struct iio_dev= *indio_dev) if (ret) return ret; =20 + /* Back to single instruction mode, disabling loop. */ + ret =3D ad3552r_qspi_update_reg_bits(st, + AD3552R_REG_ADDR_INTERFACE_CONFIG_B, + AD3552R_MASK_SINGLE_INST, + AD3552R_MASK_SINGLE_INST, 1); + if (ret) + return ret; + return 0; } =20 @@ -308,6 +323,13 @@ static int ad3552r_hs_setup(struct ad3552r_hs_state *s= t) if (ret) return ret; =20 + ret =3D st->data->bus_reg_write(st->back, + AD3552R_REG_ADDR_INTERFACE_CONFIG_B, + AD3552R_MASK_SINGLE_INST | + AD3552R_MASK_SHORT_INSTRUCTION, 1); + if (ret) + return ret; + ret =3D ad3552r_hs_scratch_pad_test(st); if (ret) return ret; --=20 2.47.0 From nobody Fri Dec 19 20:58:12 2025 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 C964F202F62 for ; Wed, 8 Jan 2025 17:30:41 +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=1736357443; cv=none; b=F6FQy6hxt2KzAw+uFVr3xdegzQ+eNhvRxEtAwOcbENJsm3fPcq2YZ+onVJEHEeiL+nSD4826p6azIarujdJxy3TZMXcu8bjFjV6IAC9GLiSWwmhwdafpIsZK2/3xeZzbjpb+MCphyNpqCMPJ/qBpXDnoAtcTn/+Q0U39SIiHsiE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736357443; c=relaxed/simple; bh=yPBj8+317vNPAuFqO9cv8l0b9AdvZ+jKb3gEbQivFoE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=V93+3mWMYXvOZ3njdwBboNqHcDSvFTWUIqdPVLBEg+4se8QthjMJac6Fruc1D+lrJAa+kT84NoaOdQpMZEv7lxvlaYgczBdIgsNCvbFVLGeG3UZqI9olUZ20IGsXiKBXMpLelry8AkXTQy3SUiJq8b42HQiM8TnPN6K9Vj6lh+M= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=IcjGHFO4; arc=none smtp.client-ip=209.85.128.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="IcjGHFO4" Received: by mail-wm1-f53.google.com with SMTP id 5b1f17b1804b1-4361f664af5so1006205e9.1 for ; Wed, 08 Jan 2025 09:30:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1736357440; x=1736962240; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=CNTleVNIiTU9nZ6xRJX/KSmh/FQGS6/eS5WcZiPevhQ=; b=IcjGHFO4bUZsVypNlpe5bFcQ8+unHA6rXaGqZFeicw6Tx+WJbM2tg0k9+fF5HsBfvS 1mT1qc3o8Dy+djD4mwNv8ucKrpOJyudWA+aTFmeRHD7qAo7RL2r9fOlVn5HAz9CZs4u/ ORVKvogTJLm23HIdibsLiPFYaLKdbgILNr8YddALiKLr2h0HTy6oFVFHO7NQNrVEWJg6 DLumMkxhe0EBmw0g4qw/Z1hVnosqpkK8VNQPn6kUI2kDNuhlWV73QT2csA/VFAhnfLh5 U0PMJYqzmDUxMxtqlxYcFU0fWW3BnFyIqAzwnj+wRaBf30gNBeSwUH5pQOEL078pBrbo H/RA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736357440; x=1736962240; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=CNTleVNIiTU9nZ6xRJX/KSmh/FQGS6/eS5WcZiPevhQ=; b=o3U+mXL0WW7N7gLzkZ+ldDVzXe0jfLrFPctK5hQJ4bQMAuvnvy2aZD5ROxVFM+n1e/ iqPrEvunICZrQXSBErljSw8tAb+sRovwHDCYl3bYM86OTtD06wnt4d4T0xT/6fwpzt5N kbx5dTjghNI8LrJFG0BlepO+oEzYmDInilu3Z2mOU75BN8rNjGNyACiqSzOiYx03HS15 7Amk/q8cYYg4+03p7LrZntMTbxt82SX81k5t1Ugqr2kPMkJQ/vIOM/T+I0j/VlY9YuNE 1IFi9JQahdaXtsA8jxSOsQTWYy9JH6LqGt/MbkGSyZQNgFE2WuWEMFswZZzBpo863AKp BkrQ== X-Forwarded-Encrypted: i=1; AJvYcCU8iw7tX5znmIpxseO2PfYvyL8IPLDQzG9yNzvh0Gem55cDv9CUNfSeIdlV8b6HWtj32Emji+WKq2eoTKc=@vger.kernel.org X-Gm-Message-State: AOJu0YzaBnn7elgc6gr+Z0YN1BiNjwlMG7EyjyJMgjo9IOdn8Jz8RtpF UA+5W3utyXqKTArOYczICJX0PttqvI71PqXgyZ+EOEiLahCleTPipZ2L1MVS6aQ= X-Gm-Gg: ASbGncvk8Ma14+iFX2iXnQjqQW2XacqqaFBOiZMT+h+f5oRAg7Y2D1zxbo+pYvqF0x+ LztqTl+w78cAH5QUxQkOAh51oPEtacgnAXNYDxW3yobjWCSDIAEgDAiuqVjLQY8t+TsI6Zg846U /j4jtHw4Z6pJ1DJKs7Z9Khzz10U7jbJvzvpOpSWA4kxO2KaeCj3Y3mq5icfpPYvDTBLGFVMGtu1 VejrJakDbt1PrRJTbGmOQO2WmoEubpu/ICWgjaUqLqpeX7xXJm9cUKkuck= X-Google-Smtp-Source: AGHT+IHtHhpOxNudv3flMNURgU+J5Uz+IMqJA+3tUtgmXAU844RXw/Uo6ltVqTOhohjFukKWhgwc6A== X-Received: by 2002:a05:6000:4714:b0:386:3752:b28c with SMTP id ffacd0b85a97d-38a8732bb23mr2741757f8f.41.1736357440075; Wed, 08 Jan 2025 09:30:40 -0800 (PST) Received: from [127.0.1.1] ([87.13.70.66]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38a1c8330d4sm52782599f8f.29.2025.01.08.09.30.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Jan 2025 09:30:39 -0800 (PST) From: Angelo Dureghello X-Google-Original-From: Angelo Dureghello Date: Wed, 08 Jan 2025 18:29:21 +0100 Subject: [PATCH v2 7/9] iio: dac: ad3552r: share model data structures 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: <20250108-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v2-7-2dac02f04638@baylibre.com> References: <20250108-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v2-0-2dac02f04638@baylibre.com> In-Reply-To: <20250108-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v2-0-2dac02f04638@baylibre.com> To: Lars-Peter Clausen , Michael Hennerich , Jonathan Cameron , Mihail Chindris , Nuno Sa , David Lechner Cc: Jonathan Cameron , linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Angelo Dureghello X-Mailer: b4 0.14.1 From: Angelo Dureghello Preparing for new parts to be added also in the hs driver, set model data structures in ad3552r-common.c, to be accessible from both -hs and non hs driver. Signed-off-by: Angelo Dureghello --- drivers/iio/dac/ad3552r-common.c | 40 ++++++++++++++++++++++++++++++++++++= ++++ drivers/iio/dac/ad3552r-hs.c | 8 -------- drivers/iio/dac/ad3552r.c | 36 ------------------------------------ drivers/iio/dac/ad3552r.h | 5 +++++ 4 files changed, 45 insertions(+), 44 deletions(-) diff --git a/drivers/iio/dac/ad3552r-common.c b/drivers/iio/dac/ad3552r-com= mon.c index 03e0864f5084..36920ec95836 100644 --- a/drivers/iio/dac/ad3552r-common.c +++ b/drivers/iio/dac/ad3552r-common.c @@ -37,6 +37,46 @@ static const s32 gains_scaling_table[] =3D { [AD3552R_CH_GAIN_SCALING_0_125] =3D 125 }; =20 +const struct ad3552r_model_data ad3541r_model_data =3D { + .model_name =3D "ad3541r", + .chip_id =3D AD3541R_ID, + .num_hw_channels =3D 1, + .ranges_table =3D ad3542r_ch_ranges, + .num_ranges =3D ARRAY_SIZE(ad3542r_ch_ranges), + .requires_output_range =3D true, +}; +EXPORT_SYMBOL_NS_GPL(ad3541r_model_data, "IIO_AD3552R"); + +const struct ad3552r_model_data ad3542r_model_data =3D { + .model_name =3D "ad3542r", + .chip_id =3D AD3542R_ID, + .num_hw_channels =3D 2, + .ranges_table =3D ad3542r_ch_ranges, + .num_ranges =3D ARRAY_SIZE(ad3542r_ch_ranges), + .requires_output_range =3D true, +}; +EXPORT_SYMBOL_NS_GPL(ad3542r_model_data, "IIO_AD3552R"); + +const struct ad3552r_model_data ad3551r_model_data =3D { + .model_name =3D "ad3551r", + .chip_id =3D AD3551R_ID, + .num_hw_channels =3D 1, + .ranges_table =3D ad3552r_ch_ranges, + .num_ranges =3D ARRAY_SIZE(ad3552r_ch_ranges), + .requires_output_range =3D false, +}; +EXPORT_SYMBOL_NS_GPL(ad3551r_model_data, "IIO_AD3552R"); + +const struct ad3552r_model_data ad3552r_model_data =3D { + .model_name =3D "ad3552r", + .chip_id =3D AD3552R_ID, + .num_hw_channels =3D 2, + .ranges_table =3D ad3552r_ch_ranges, + .num_ranges =3D ARRAY_SIZE(ad3552r_ch_ranges), + .requires_output_range =3D false, +}; +EXPORT_SYMBOL_NS_GPL(ad3552r_model_data, "IIO_AD3552R"); + u16 ad3552r_calc_custom_gain(u8 p, u8 n, s16 goffs) { return FIELD_PREP(AD3552R_MASK_CH_RANGE_OVERRIDE, 1) | diff --git a/drivers/iio/dac/ad3552r-hs.c b/drivers/iio/dac/ad3552r-hs.c index 991b11702273..bfb6228c9b9b 100644 --- a/drivers/iio/dac/ad3552r-hs.c +++ b/drivers/iio/dac/ad3552r-hs.c @@ -527,14 +527,6 @@ static int ad3552r_hs_probe(struct platform_device *pd= ev) return devm_iio_device_register(&pdev->dev, indio_dev); } =20 -static const struct ad3552r_model_data ad3552r_model_data =3D { - .model_name =3D "ad3552r", - .chip_id =3D AD3552R_ID, - .num_hw_channels =3D 2, - .ranges_table =3D ad3552r_ch_ranges, - .num_ranges =3D ARRAY_SIZE(ad3552r_ch_ranges), -}; - static const struct of_device_id ad3552r_hs_of_id[] =3D { { .compatible =3D "adi,ad3552r", .data =3D &ad3552r_model_data }, { } diff --git a/drivers/iio/dac/ad3552r.c b/drivers/iio/dac/ad3552r.c index e7206af53af6..9d28e06b80c0 100644 --- a/drivers/iio/dac/ad3552r.c +++ b/drivers/iio/dac/ad3552r.c @@ -649,42 +649,6 @@ static int ad3552r_probe(struct spi_device *spi) return devm_iio_device_register(&spi->dev, indio_dev); } =20 -static const struct ad3552r_model_data ad3541r_model_data =3D { - .model_name =3D "ad3541r", - .chip_id =3D AD3541R_ID, - .num_hw_channels =3D 1, - .ranges_table =3D ad3542r_ch_ranges, - .num_ranges =3D ARRAY_SIZE(ad3542r_ch_ranges), - .requires_output_range =3D true, -}; - -static const struct ad3552r_model_data ad3542r_model_data =3D { - .model_name =3D "ad3542r", - .chip_id =3D AD3542R_ID, - .num_hw_channels =3D 2, - .ranges_table =3D ad3542r_ch_ranges, - .num_ranges =3D ARRAY_SIZE(ad3542r_ch_ranges), - .requires_output_range =3D true, -}; - -static const struct ad3552r_model_data ad3551r_model_data =3D { - .model_name =3D "ad3551r", - .chip_id =3D AD3551R_ID, - .num_hw_channels =3D 1, - .ranges_table =3D ad3552r_ch_ranges, - .num_ranges =3D ARRAY_SIZE(ad3552r_ch_ranges), - .requires_output_range =3D false, -}; - -static const struct ad3552r_model_data ad3552r_model_data =3D { - .model_name =3D "ad3552r", - .chip_id =3D AD3552R_ID, - .num_hw_channels =3D 2, - .ranges_table =3D ad3552r_ch_ranges, - .num_ranges =3D ARRAY_SIZE(ad3552r_ch_ranges), - .requires_output_range =3D false, -}; - static const struct spi_device_id ad3552r_id[] =3D { { .name =3D "ad3541r", diff --git a/drivers/iio/dac/ad3552r.h b/drivers/iio/dac/ad3552r.h index 4b5581039ae9..23f038464a0c 100644 --- a/drivers/iio/dac/ad3552r.h +++ b/drivers/iio/dac/ad3552r.h @@ -137,6 +137,11 @@ extern const s32 ad3552r_ch_ranges[AD3552R_MAX_RANGES][2]; extern const s32 ad3542r_ch_ranges[AD3542R_MAX_RANGES][2]; =20 +extern const struct ad3552r_model_data ad3541r_model_data; +extern const struct ad3552r_model_data ad3542r_model_data; +extern const struct ad3552r_model_data ad3551r_model_data; +extern const struct ad3552r_model_data ad3552r_model_data; + enum ad3552r_id { AD3541R_ID =3D 0x400b, AD3542R_ID =3D 0x4009, --=20 2.47.0 From nobody Fri Dec 19 20:58:12 2025 Received: from mail-wr1-f43.google.com (mail-wr1-f43.google.com [209.85.221.43]) (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 7DBB1202F9A for ; Wed, 8 Jan 2025 17:30:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736357446; cv=none; b=IoTEzDbR/b+eE85I390uH+A/Vy/API0MtmaJwDS2GhQwhq2BGlx5o4+u4ltxFibKKqbBg3OZRQg5NMlIGlv0rvDA3sPQ6X1ldvbuD85lYgY6PWkRxZBmMdrHm/F4zOQ62pD/e+SreIEL9Pxuv8pbHAj9b6HV5QH8fp/afZUVDcs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736357446; c=relaxed/simple; bh=AhVYyfcJyUQuknu+k6SdzE03Oz9o2XZyVIS6TgjYN9k=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Gc96Ps8Jw+peVslwLvFvK+8+luGmr8B7+dlR3KGGlfpydpDSlBj0EotNywcCWjSD62dKl7xnkQdLkcyKx8Wsv3MReRMLwOXyMjq2HHFWg9Hicjn5zzaJGz8K+ivDBePUlBaEIUE+JqcSJLPZ0UX+gQZ3wxBe5AtcO+kLBvaCJPU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=yls+ca7I; arc=none smtp.client-ip=209.85.221.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="yls+ca7I" Received: by mail-wr1-f43.google.com with SMTP id ffacd0b85a97d-385ddcfc97bso32726f8f.1 for ; Wed, 08 Jan 2025 09:30:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1736357442; x=1736962242; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=yW2QdAEBTAIXZ0FwhrlcyQ2UztjJ2op9sufvOiml2fo=; b=yls+ca7IH+kAgA1RZj9pj4FKS3rOktfhWqa+iCwQfZo3d7mOkYAOS8aDi397ceBCTS 4H/iwHpgcNo14MSE0djxbMWt01Gevd04Qg/owcM1t6BlQyPQi1lE7KhNw2jmN1V2oYuw CQqqs7upNth528bte3MbE8cP1wCM0AYIUOTu5bp+EZEW6nbMO2MRVbjmEVHiHSLKlZbr 6eBnd+Vy8yWNkeRObu5ekjUZKbF6y4ozxNe21ahTw+JsU0NxuYVQk1c3IYRwHMwKITCK th5nYMB8cSkSt09i6VircdoOPPgVZTNGWrYKx/RpWAOEfq1ObZkh/YGTKzrYX7bVjTBf gxag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736357442; x=1736962242; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=yW2QdAEBTAIXZ0FwhrlcyQ2UztjJ2op9sufvOiml2fo=; b=wJUGB90lH+NOv3fD5aCOkCZqINwy32d2dUzyXQGZMod3lB8O+dv3KwMjXO6Q14WRW1 rGTlTcGOlcmXc34FNoPTMXNypn2e0/q4IFYrfKjwsqFp8i5UKQ5AZHoS/eEwmIzOeFDp ClG+GQQpBsRX97rLHp9iD7q795IhYyTpXlu1JyB4nyUE/Ri2hpnf9GIvPrGKbhBKFzq8 ISY49YpFeV/+4RT6dL2qI8tkbeiE1ssUNpOHtTFXHwoJMmIZvx7MZ/xXvbqPPlHDr1ZC n5N+QeVFt6C/4R92Vum212cxsEd752i8xwlqybJMDWQa9rZhLN6DlZ2dpzVD1bMfwm7i BWNQ== X-Forwarded-Encrypted: i=1; AJvYcCWpW9vjgcr7aBo6QwYZwg31xPzNKW9fvYFQR9Rl/7C4CYmExVYCsRc05LatcM2eKW6S2/QSph3/JhAl/58=@vger.kernel.org X-Gm-Message-State: AOJu0Yw3eLzb60WSA+K46xhYOG3aLwQTqnYxht5153fZFIjYOXrH/V6M g6/+vK3LLcpDhlz71NcH3TdQzr3Vb9ZgbmfcsTa/E/u3kzWvM8F3iA6VGwuIqfLjY8rQ7b4J9ps y X-Gm-Gg: ASbGncti3vBbAdkDrpOVVgNPgSIRGC7lGzHRtTlKF/zq7z2l5IcvvsnB7g0ClRyuRjs SmdMrlbaMtH+WCveZTtGWuJaCsbL4+3H5i/S+/pdxm8ohCk7Veyq3RzN1pXDwEh5KSBxSx+ycDW OiOZF88ex6jWduxh9MUmAbcTTxk9zze+nqMIzuuWk5PgYMJGxCATcgeh1UvsolyX35znysKJm9R 4Dzln1RlmpZMLgZvgJX7a66GEt4z/DrPT0+BEyrJ5G+oKXuPTp25TUgYIs= X-Google-Smtp-Source: AGHT+IELdA96ehkDADF185V5g/Df7b6lGEqYEK4L8hpBP5+JsHgb8jVH/uZYHGv/eMK8ObED+oHDSw== X-Received: by 2002:a5d:64ce:0:b0:385:f6de:6266 with SMTP id ffacd0b85a97d-38a872eacdemr2600226f8f.24.1736357441570; Wed, 08 Jan 2025 09:30:41 -0800 (PST) Received: from [127.0.1.1] ([87.13.70.66]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38a1c8330d4sm52782599f8f.29.2025.01.08.09.30.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Jan 2025 09:30:40 -0800 (PST) From: Angelo Dureghello X-Google-Original-From: Angelo Dureghello Date: Wed, 08 Jan 2025 18:29:22 +0100 Subject: [PATCH v2 8/9] iio: dac: ad3552r-hs: add ad3541/2r 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: <20250108-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v2-8-2dac02f04638@baylibre.com> References: <20250108-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v2-0-2dac02f04638@baylibre.com> In-Reply-To: <20250108-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v2-0-2dac02f04638@baylibre.com> To: Lars-Peter Clausen , Michael Hennerich , Jonathan Cameron , Mihail Chindris , Nuno Sa , David Lechner Cc: Jonathan Cameron , linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Angelo Dureghello X-Mailer: b4 0.14.1 From: Angelo Dureghello A new fpga HDL has been developed from ADI to support ad354xr devices. Add support for ad3541r and ad3542r with following additions: - use common device_info structures for hs and non hs drivers, - DMA buffering, use DSPI mode for ad354xr and QSPI for ad355xr, - change samplerate to respect number of lanes. Signed-off-by: Angelo Dureghello --- drivers/iio/dac/ad3552r-common.c | 4 + drivers/iio/dac/ad3552r-hs.c | 240 ++++++++++++++++++++++++++++++++---= ---- drivers/iio/dac/ad3552r.h | 3 + 3 files changed, 206 insertions(+), 41 deletions(-) diff --git a/drivers/iio/dac/ad3552r-common.c b/drivers/iio/dac/ad3552r-com= mon.c index 36920ec95836..fa3050dc2efa 100644 --- a/drivers/iio/dac/ad3552r-common.c +++ b/drivers/iio/dac/ad3552r-common.c @@ -44,6 +44,7 @@ const struct ad3552r_model_data ad3541r_model_data =3D { .ranges_table =3D ad3542r_ch_ranges, .num_ranges =3D ARRAY_SIZE(ad3542r_ch_ranges), .requires_output_range =3D true, + .num_spi_data_lanes =3D 2, }; EXPORT_SYMBOL_NS_GPL(ad3541r_model_data, "IIO_AD3552R"); =20 @@ -54,6 +55,7 @@ const struct ad3552r_model_data ad3542r_model_data =3D { .ranges_table =3D ad3542r_ch_ranges, .num_ranges =3D ARRAY_SIZE(ad3542r_ch_ranges), .requires_output_range =3D true, + .num_spi_data_lanes =3D 2, }; EXPORT_SYMBOL_NS_GPL(ad3542r_model_data, "IIO_AD3552R"); =20 @@ -64,6 +66,7 @@ const struct ad3552r_model_data ad3551r_model_data =3D { .ranges_table =3D ad3552r_ch_ranges, .num_ranges =3D ARRAY_SIZE(ad3552r_ch_ranges), .requires_output_range =3D false, + .num_spi_data_lanes =3D 4, }; EXPORT_SYMBOL_NS_GPL(ad3551r_model_data, "IIO_AD3552R"); =20 @@ -74,6 +77,7 @@ const struct ad3552r_model_data ad3552r_model_data =3D { .ranges_table =3D ad3552r_ch_ranges, .num_ranges =3D ARRAY_SIZE(ad3552r_ch_ranges), .requires_output_range =3D false, + .num_spi_data_lanes =3D 4, }; EXPORT_SYMBOL_NS_GPL(ad3552r_model_data, "IIO_AD3552R"); =20 diff --git a/drivers/iio/dac/ad3552r-hs.c b/drivers/iio/dac/ad3552r-hs.c index bfb6228c9b9b..5995bab6a9b1 100644 --- a/drivers/iio/dac/ad3552r-hs.c +++ b/drivers/iio/dac/ad3552r-hs.c @@ -19,6 +19,31 @@ #include "ad3552r.h" #include "ad3552r-hs.h" =20 +/* + * Important notes for register map access: + * =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + * + * Register address space is divided in 2 regions, primary (config) and + * secondary (DAC). Primary region can only be accessed in simple SPI mode, + * with exception for ad355x models where setting QSPI pin high allows QSPI + * access to both the regions. + * + * Due to the fact that ad3541/2r do not implement QSPI, for proper device + * detection, HDL keeps "QSPI" pin level low at boot (see ad3552r manual, = rev B + * table 7, pin 31, digital input). For this reason, actually the working = mode + * between SPI, DSPI and QSPI must be set via software, configuring the ta= rget + * DAC appropriately, together with the backend api to configure the bus m= ode + * accordingly. + * + * Also, important to note that none of the three modes allow to read in D= DR. + * + * In non-buffering operations, mode is set to simple SPI SDR for all prim= ary + * and secondary region r/w accesses, to avoid to switch the mode each tim= e DAC + * register is accessed (raw accesses, r/w), and to be able to dump regist= ers + * content (possible as non DDR only). + * In buffering mode, driver sets best possible mode, D/QSPI and DDR. + */ + struct ad3552r_hs_state { const struct ad3552r_model_data *model_data; struct gpio_desc *reset_gpio; @@ -27,6 +52,8 @@ struct ad3552r_hs_state { bool single_channel; struct ad3552r_ch_data ch_data[AD3552R_MAX_CH]; struct ad3552r_hs_platform_data *data; + /* INTERFACE_CONFIG_D register cache, in DDR we cannot read values. */ + u32 config_d; }; =20 static int ad3552r_qspi_update_reg_bits(struct ad3552r_hs_state *st, @@ -56,15 +83,19 @@ static int ad3552r_hs_read_raw(struct iio_dev *indio_de= v, switch (mask) { case IIO_CHAN_INFO_SAMP_FREQ: /* - * Using 4 lanes (QSPI), then using 2 as DDR mode is - * considered always on (considering buffering mode always). + * Using a "num_spi_data_lanes" variable since ad3541/2 have + * only DSPI interface, while ad355x is QSPI. Then using 2 as + * DDR mode is considered always on (considering buffering + * mode always). */ *val =3D DIV_ROUND_CLOSEST(st->data->bus_sample_data_clock_hz * - 4 * 2, chan->scan_type.realbits); + st->model_data->num_spi_data_lanes * 2, + chan->scan_type.realbits); =20 return IIO_VAL_INT; =20 case IIO_CHAN_INFO_RAW: + /* For RAW accesses, stay always in simple-spi. */ ret =3D st->data->bus_reg_read(st->back, AD3552R_REG_ADDR_CH_DAC_16B(chan->channel), val, 2); @@ -93,6 +124,7 @@ static int ad3552r_hs_write_raw(struct iio_dev *indio_de= v, =20 switch (mask) { case IIO_CHAN_INFO_RAW: + /* For RAW accesses, stay always in simple-spi. */ iio_device_claim_direct_scoped(return -EBUSY, indio_dev) { return st->data->bus_reg_write(st->back, AD3552R_REG_ADDR_CH_DAC_16B(chan->channel), @@ -104,6 +136,42 @@ static int ad3552r_hs_write_raw(struct iio_dev *indio_= dev, } } =20 +static int ad3552r_hs_set_bus_io_mode_hs(struct ad3552r_hs_state *st) +{ + int bus_mode; + + if (st->model_data->num_spi_data_lanes =3D=3D 4) + bus_mode =3D AD3552R_IO_MODE_QSPI; + else + bus_mode =3D AD3552R_IO_MODE_DSPI; + + return st->data->bus_set_io_mode(st->back, bus_mode); +} + +static int ad3552r_hs_set_target_io_mode_hs(struct ad3552r_hs_state *st) +{ + int mode_target; + + /* + * Best access for secondary reg area, QSPI where possible, + * else as DSPI. + */ + if (st->model_data->num_spi_data_lanes =3D=3D 4) + mode_target =3D AD3552R_QUAD_SPI; + else + mode_target =3D AD3552R_DUAL_SPI; + + /* + * Better to not use update here, since generally it is already + * set as DDR mode, and it's not possible to read in DDR mode. + */ + return st->data->bus_reg_write(st->back, + AD3552R_REG_ADDR_TRANSFER_REGISTER, + FIELD_PREP(AD3552R_MASK_MULTI_IO_MODE, + mode_target) | + AD3552R_MASK_STREAM_LENGTH_KEEP_VALUE, 1); +} + static int ad3552r_hs_buffer_postenable(struct iio_dev *indio_dev) { struct ad3552r_hs_state *st =3D iio_priv(indio_dev); @@ -132,6 +200,11 @@ static int ad3552r_hs_buffer_postenable(struct iio_dev= *indio_dev) return -EINVAL; } =20 + /* + * With ad3541/2r supoport, QSPI pin is held low at reset from HDL, + * streaming start sequence must respect strictly the order below. + */ + /* Primary region access, set streaming mode (now in SPI + SDR). */ ret =3D ad3552r_qspi_update_reg_bits(st, AD3552R_REG_ADDR_INTERFACE_CONFIG_B, @@ -139,48 +212,114 @@ static int ad3552r_hs_buffer_postenable(struct iio_d= ev *indio_dev) if (ret) return ret; =20 - ret =3D st->data->bus_reg_write(st->back, AD3552R_REG_ADDR_STREAM_MODE, + /* + * Set target loop len, 0x2c 0r 0x2a, descending loop, + * and keeping loop len value so it's not cleared hereafter when + * enabling streaming mode (cleared by CS_ up). + */ + ret =3D ad3552r_qspi_update_reg_bits(st, + AD3552R_REG_ADDR_TRANSFER_REGISTER, + AD3552R_MASK_STREAM_LENGTH_KEEP_VALUE, + AD3552R_MASK_STREAM_LENGTH_KEEP_VALUE, 1); + if (ret) + goto exit_err_streaming; + + ret =3D st->data->bus_reg_write(st->back, + AD3552R_REG_ADDR_STREAM_MODE, loop_len, 1); if (ret) - return ret; + goto exit_err_streaming; =20 - /* Inform DAC chip to switch into DDR mode */ - ret =3D ad3552r_qspi_update_reg_bits(st, - AD3552R_REG_ADDR_INTERFACE_CONFIG_D, - AD3552R_MASK_SPI_CONFIG_DDR, - AD3552R_MASK_SPI_CONFIG_DDR, 1); + /* + * Registers dump for debug purposes is only possible until here, + * read in primary region must be SPI SDR (DDR read is never possible, + * D/QSPI SDR read in primary region is also not possible). + */ + + /* Setting DDR now, caching current config_d. */ + ret =3D st->data->bus_reg_read(st->back, + AD3552R_REG_ADDR_INTERFACE_CONFIG_D, + &st->config_d, 1); if (ret) - return ret; + goto exit_err_streaming; + + st->config_d |=3D AD3552R_MASK_SPI_CONFIG_DDR; + ret =3D st->data->bus_reg_write(st->back, + AD3552R_REG_ADDR_INTERFACE_CONFIG_D, + st->config_d, 1); + + if (ret) + goto exit_err_streaming; =20 - /* Inform DAC IP to go for DDR mode from now on */ ret =3D iio_backend_ddr_enable(st->back); - if (ret) { - dev_err(st->dev, "could not set DDR mode, not streaming"); - goto exit_err; - } + if (ret) + goto exit_err_ddr_mode_target; =20 + /* + * From here onward mode is DDR, so reading any register is not + * possible anymore, including calling "ad3552r_qspi_update_reg_bits" + * function. + */ + + /* Set target to best high speed mode (D or QSPI). */ + ret =3D ad3552r_hs_set_target_io_mode_hs(st); + if (ret) + goto exit_err_ddr_mode; + + /* Set bus to best high speed mode (D or QSPI). */ + ret =3D ad3552r_hs_set_bus_io_mode_hs(st); + if (ret) + goto exit_err_bus_mode_target; + + /* + * Backend setup must be done now only, or related register values + * will be disrupted by previous bus accesses. + */ ret =3D iio_backend_data_transfer_addr(st->back, val); if (ret) - goto exit_err; + goto exit_err_bus_mode_target; =20 ret =3D iio_backend_data_format_set(st->back, 0, &fmt); if (ret) - goto exit_err; + goto exit_err_bus_mode_target; =20 ret =3D iio_backend_data_stream_enable(st->back); if (ret) - goto exit_err; + goto exit_err_bus_mode_target; =20 return 0; =20 -exit_err: - ad3552r_qspi_update_reg_bits(st, - AD3552R_REG_ADDR_INTERFACE_CONFIG_D, - AD3552R_MASK_SPI_CONFIG_DDR, - 0, 1); +exit_err_bus_mode_target: + /* Back to simple SPI, not using update to avoid read. */ + st->data->bus_reg_write(st->back, AD3552R_REG_ADDR_TRANSFER_REGISTER, + FIELD_PREP(AD3552R_MASK_MULTI_IO_MODE, + AD3552R_SPI) | + AD3552R_MASK_STREAM_LENGTH_KEEP_VALUE, 1); =20 + /* + * Back bus to simple SPI, this must be executed together with above + * target mode unwind, and can be done only after it. + */ + st->data->bus_set_io_mode(st->back, AD3552R_IO_MODE_SPI); + +exit_err_ddr_mode: iio_backend_ddr_disable(st->back); =20 +exit_err_ddr_mode_target: + /* + * Back to SDR. + * In DDR we cannot read, whatever the mode is, so not using update. + */ + st->data->bus_reg_write(st->back, AD3552R_REG_ADDR_INTERFACE_CONFIG_D, + FIELD_PREP(AD3552R_MASK_SDO_DRIVE_STRENGTH, 1), + 1); + +exit_err_streaming: + /* Back to single instruction mode, disabling loop. */ + st->data->bus_reg_write(st->back, AD3552R_REG_ADDR_INTERFACE_CONFIG_B, + AD3552R_MASK_SINGLE_INST | + AD3552R_MASK_SHORT_INSTRUCTION, 1); + return ret; } =20 @@ -193,11 +332,22 @@ static int ad3552r_hs_buffer_predisable(struct iio_de= v *indio_dev) if (ret) return ret; =20 - /* Inform DAC to set in SDR mode */ - ret =3D ad3552r_qspi_update_reg_bits(st, - AD3552R_REG_ADDR_INTERFACE_CONFIG_D, - AD3552R_MASK_SPI_CONFIG_DDR, - 0, 1); + /* + * Set us to simple SPI, even if still in ddr, so to be able + * to write in primary region. + */ + ret =3D st->data->bus_set_io_mode(st->back, AD3552R_IO_MODE_SPI); + if (ret) + return ret; + + /* + * Back to SDR + * (in DDR we cannot read, whatever the mode is, so not using update). + */ + st->config_d &=3D ~AD3552R_MASK_SPI_CONFIG_DDR; + ret =3D st->data->bus_reg_write(st->back, + AD3552R_REG_ADDR_INTERFACE_CONFIG_D, + st->config_d, 1); if (ret) return ret; =20 @@ -205,11 +355,21 @@ static int ad3552r_hs_buffer_predisable(struct iio_de= v *indio_dev) if (ret) return ret; =20 - /* Back to single instruction mode, disabling loop. */ + /* + * Back to simple SPI for secondary region too now, + * so to be able to dump/read registers there too if needed. + */ ret =3D ad3552r_qspi_update_reg_bits(st, - AD3552R_REG_ADDR_INTERFACE_CONFIG_B, - AD3552R_MASK_SINGLE_INST, - AD3552R_MASK_SINGLE_INST, 1); + AD3552R_REG_ADDR_TRANSFER_REGISTER, + AD3552R_MASK_MULTI_IO_MODE, + AD3552R_SPI, 1); + if (ret) + return ret; + + /* Back to single instruction mode, disabling loop. */ + ret =3D ad3552r_update_reg_bits(st, AD3552R_REG_ADDR_INTERFACE_CONFIG_B, + AD3552R_MASK_SINGLE_INST, + AD3552R_MASK_SINGLE_INST, 1); if (ret) return ret; =20 @@ -319,6 +479,7 @@ static int ad3552r_hs_setup(struct ad3552r_hs_state *st) if (ret) return ret; =20 + /* HDL starts with DDR enabled, disabling it. */ ret =3D iio_backend_ddr_disable(st->back); if (ret) return ret; @@ -352,6 +513,8 @@ static int ad3552r_hs_setup(struct ad3552r_hs_state *st) "Chip ID mismatch, detected 0x%x but expected 0x%x\n", id, st->model_data->chip_id); =20 + dev_info(st->dev, "chip id %s detected", st->model_data->model_name); + /* Clear reset error flag, see ad3552r manual, rev B table 38. */ ret =3D st->data->bus_reg_write(st->back, AD3552R_REG_ADDR_ERR_STATUS, AD3552R_MASK_RESET_STATUS, 1); @@ -364,14 +527,6 @@ static int ad3552r_hs_setup(struct ad3552r_hs_state *s= t) if (ret) return ret; =20 - ret =3D st->data->bus_reg_write(st->back, - AD3552R_REG_ADDR_TRANSFER_REGISTER, - FIELD_PREP(AD3552R_MASK_MULTI_IO_MODE, - AD3552R_QUAD_SPI) | - AD3552R_MASK_STREAM_LENGTH_KEEP_VALUE, 1); - if (ret) - return ret; - ret =3D iio_backend_data_source_set(st->back, 0, IIO_BACKEND_EXTERNAL); if (ret) return ret; @@ -528,6 +683,9 @@ static int ad3552r_hs_probe(struct platform_device *pde= v) } =20 static const struct of_device_id ad3552r_hs_of_id[] =3D { + { .compatible =3D "adi,ad3541r", .data =3D &ad3541r_model_data }, + { .compatible =3D "adi,ad3542r", .data =3D &ad3542r_model_data }, + { .compatible =3D "adi,ad3551r", .data =3D &ad3551r_model_data }, { .compatible =3D "adi,ad3552r", .data =3D &ad3552r_model_data }, { } }; diff --git a/drivers/iio/dac/ad3552r.h b/drivers/iio/dac/ad3552r.h index 23f038464a0c..9d450019ece9 100644 --- a/drivers/iio/dac/ad3552r.h +++ b/drivers/iio/dac/ad3552r.h @@ -132,6 +132,8 @@ =20 #define AD3552R_MAX_RANGES 5 #define AD3542R_MAX_RANGES 5 +#define AD3552R_SPI 0 +#define AD3552R_DUAL_SPI 1 #define AD3552R_QUAD_SPI 2 =20 extern const s32 ad3552r_ch_ranges[AD3552R_MAX_RANGES][2]; @@ -156,6 +158,7 @@ struct ad3552r_model_data { const s32 (*ranges_table)[2]; int num_ranges; bool requires_output_range; + int num_spi_data_lanes; }; =20 struct ad3552r_ch_data { --=20 2.47.0 From nobody Fri Dec 19 20:58:12 2025 Received: from mail-wr1-f51.google.com (mail-wr1-f51.google.com [209.85.221.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 C30EF202F9D for ; Wed, 8 Jan 2025 17:30:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736357446; cv=none; b=Qdeebg1BUgjoZG9Ez/GNdLo4QSAgKTAefNqLAaoxPRUpKBBSrLy4VBEppVFb3ppLCe0eyvKzxjDHoS+ogIRxW1UdgMhKalzodntKDBDC9nr9zFTP3FnDC961/XG8S5Furrpt6fybZ5RP54wmYIWFAFDXUt/DrQeyfc9mP7z8DA0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736357446; c=relaxed/simple; bh=T6i3t0gkmspAQpLvDBy59RH0XXVU3fyslIP9/NkPmzs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=SW80mizFQOIT/X1b7p9HK2l9O9Yis/kCOrfXUG8VcjJmme4dHfYXsUHywlSpF7DHuhssW6hPyEy0pkVAigfVE4JEkxO/C0UFbeajkbuzFyXAGU+nKhmzkEdDow1MNgOPFsKymTxKe/7u8n5mpXUKpOz1eFs/rOPo0Y8oag2t9zU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=sOxSlhA0; arc=none smtp.client-ip=209.85.221.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="sOxSlhA0" Received: by mail-wr1-f51.google.com with SMTP id ffacd0b85a97d-3862f32a33eso10765f8f.3 for ; Wed, 08 Jan 2025 09:30:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1736357443; x=1736962243; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=63sUA66Ctgyf7KL2tc561CUvyyC0coEhZW4ecsp3aQg=; b=sOxSlhA0/tlGSO/VGi0tk0PoX0Q1AgFDEfob5mDHa5U80tTu7IU4VR2HAymsknT/n0 ooKuzUzXeo+rNjWrHw4aVIZmNevFUj2uvO88/ng66rxd2T+5XXokuid0Awd5iP+ko8Ms wFo1NDHIHTUE2bexUlDNGF6qdeushdSnpxTrXNEObgqrAnFVVbfTK3tl4owwrenEOCcO wvfjndSgdb2hkBiPrbWqYlOp2Yi5f/kzLGl31D/xbsPGA6cb4NowCzOONMHrc/ngjiyS 1EqIaxg5ARHHktmWJowZxY0F572yHrgEmhMQGj51lxiN4pXAIgUQi6Tft1TkSQgLelJQ PI2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736357443; x=1736962243; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=63sUA66Ctgyf7KL2tc561CUvyyC0coEhZW4ecsp3aQg=; b=HnI5ap6ONTMhSOwXmpKaPQjI+OrY/5zncuahCQMmn6XIMNfO3hYlegfWMPCtb5SmRU McuxFb01L7EBy94fSwI1PwTNdzfBx3VFaVWDMl1DHNPMCaR4ARmVBQp+LTpeOVOcCftK mk/OlP7B/emmbVBj5UVJcObTsTUOdLjTZuyWIJi1pGP/JyMnJK7qBmRi8c6HNp03abfn 3CUkOvepcKDM8TV7rYPLBP9ECY69l4BFEu5bnTWd6v3+OI82yBV8dr22A2kcQm5SXRL2 RKHliz5jgfOtABCEjPtHvobmmEdDM/U3+TliCZBvn1iDzz8F7xPcc62Z+OTw6y76CmK1 7+OQ== X-Forwarded-Encrypted: i=1; AJvYcCWtaQih6NZAMO/SsKnDlz/LGeTfydUhfVLDSSPk7xjdjm+PcbqFItOXHrb7F8AJka0nkMYoPT+30qpKTjA=@vger.kernel.org X-Gm-Message-State: AOJu0Yx4TeWOaLSEgFLyuoqg9ouSkPTxDxdxOCTXngONU2GJUkT3dTyG 6Rlwt89PJP3V/VnzA5Zh0rJ2YkkflZN2/FwI3mwSk+fvx7PKV+LwzT8w+6BKPuM= X-Gm-Gg: ASbGncvA6LGfZndzgi6CBz/yy7O0lbm10I4Tz2sz9BOMyq/IZRuGpy/aNThQj7uv2bc b77n+pfiUZaslHdZbE1YRaOMtT6zJXFwR+Vh1M3DHuAVwpsDblOv8tL/jbUTIRyb35hYlcuTYyA JLgMwv0lmMVunyu8mFgIe145G35JLJjdqjZLh2slos9+kHelPAn4ds1sw0oSafuaVcnb/rTp4z4 npUcbf6I5Fd4wz3jsd4Vm/HIP00Hma50gUmA9SaOO6jOQlUkqziOu+Dp6c= X-Google-Smtp-Source: AGHT+IGzdj5Cb9f/UsfLaSyFl+zkmljSKvG6y4+kUJdZtYo99f9dUTCsFvgvvixfxjqKsbmZuOxeYw== X-Received: by 2002:a5d:64eb:0:b0:38a:50fa:d582 with SMTP id ffacd0b85a97d-38a87363364mr2332840f8f.59.1736357443074; Wed, 08 Jan 2025 09:30:43 -0800 (PST) Received: from [127.0.1.1] ([87.13.70.66]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38a1c8330d4sm52782599f8f.29.2025.01.08.09.30.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Jan 2025 09:30:42 -0800 (PST) From: Angelo Dureghello X-Google-Original-From: Angelo Dureghello Date: Wed, 08 Jan 2025 18:29:23 +0100 Subject: [PATCH v2 9/9] iio: dac: ad3552r-hs: update function name (non functional) 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: <20250108-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v2-9-2dac02f04638@baylibre.com> References: <20250108-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v2-0-2dac02f04638@baylibre.com> In-Reply-To: <20250108-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v2-0-2dac02f04638@baylibre.com> To: Lars-Peter Clausen , Michael Hennerich , Jonathan Cameron , Mihail Chindris , Nuno Sa , David Lechner Cc: Jonathan Cameron , linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Angelo Dureghello X-Mailer: b4 0.14.1 From: Angelo Dureghello Update ad3552r_qspi_update_reg_bits function name to a more generic name, since used mode can be SIMPLE/DUAL/QUAD SPI. Signed-off-by: Angelo Dureghello --- drivers/iio/dac/ad3552r-hs.c | 58 ++++++++++++++++++++--------------------= ---- 1 file changed, 26 insertions(+), 32 deletions(-) diff --git a/drivers/iio/dac/ad3552r-hs.c b/drivers/iio/dac/ad3552r-hs.c index 5995bab6a9b1..53ab912eea11 100644 --- a/drivers/iio/dac/ad3552r-hs.c +++ b/drivers/iio/dac/ad3552r-hs.c @@ -56,9 +56,9 @@ struct ad3552r_hs_state { u32 config_d; }; =20 -static int ad3552r_qspi_update_reg_bits(struct ad3552r_hs_state *st, - u32 reg, u32 mask, u32 val, - size_t xfer_size) +static int ad3552r_update_reg_bits(struct ad3552r_hs_state *st, + u32 reg, u32 mask, u32 val, + size_t xfer_size) { u32 rval; int ret; @@ -206,9 +206,8 @@ static int ad3552r_hs_buffer_postenable(struct iio_dev = *indio_dev) */ =20 /* Primary region access, set streaming mode (now in SPI + SDR). */ - ret =3D ad3552r_qspi_update_reg_bits(st, - AD3552R_REG_ADDR_INTERFACE_CONFIG_B, - AD3552R_MASK_SINGLE_INST, 0, 1); + ret =3D ad3552r_update_reg_bits(st, AD3552R_REG_ADDR_INTERFACE_CONFIG_B, + AD3552R_MASK_SINGLE_INST, 0, 1); if (ret) return ret; =20 @@ -217,10 +216,9 @@ static int ad3552r_hs_buffer_postenable(struct iio_dev= *indio_dev) * and keeping loop len value so it's not cleared hereafter when * enabling streaming mode (cleared by CS_ up). */ - ret =3D ad3552r_qspi_update_reg_bits(st, - AD3552R_REG_ADDR_TRANSFER_REGISTER, - AD3552R_MASK_STREAM_LENGTH_KEEP_VALUE, - AD3552R_MASK_STREAM_LENGTH_KEEP_VALUE, 1); + ret =3D ad3552r_update_reg_bits(st, AD3552R_REG_ADDR_TRANSFER_REGISTER, + AD3552R_MASK_STREAM_LENGTH_KEEP_VALUE, + AD3552R_MASK_STREAM_LENGTH_KEEP_VALUE, 1); if (ret) goto exit_err_streaming; =20 @@ -247,7 +245,6 @@ static int ad3552r_hs_buffer_postenable(struct iio_dev = *indio_dev) ret =3D st->data->bus_reg_write(st->back, AD3552R_REG_ADDR_INTERFACE_CONFIG_D, st->config_d, 1); - if (ret) goto exit_err_streaming; =20 @@ -257,7 +254,7 @@ static int ad3552r_hs_buffer_postenable(struct iio_dev = *indio_dev) =20 /* * From here onward mode is DDR, so reading any register is not - * possible anymore, including calling "ad3552r_qspi_update_reg_bits" + * possible anymore, including calling "ad3552r_update_reg_bits" * function. */ =20 @@ -359,10 +356,9 @@ static int ad3552r_hs_buffer_predisable(struct iio_dev= *indio_dev) * Back to simple SPI for secondary region too now, * so to be able to dump/read registers there too if needed. */ - ret =3D ad3552r_qspi_update_reg_bits(st, - AD3552R_REG_ADDR_TRANSFER_REGISTER, - AD3552R_MASK_MULTI_IO_MODE, - AD3552R_SPI, 1); + ret =3D ad3552r_update_reg_bits(st, AD3552R_REG_ADDR_TRANSFER_REGISTER, + AD3552R_MASK_MULTI_IO_MODE, + AD3552R_SPI, 1); if (ret) return ret; =20 @@ -386,10 +382,10 @@ static inline int ad3552r_hs_set_output_range(struct = ad3552r_hs_state *st, else val =3D FIELD_PREP(AD3552R_MASK_CH1_RANGE, mode); =20 - return ad3552r_qspi_update_reg_bits(st, - AD3552R_REG_ADDR_CH0_CH1_OUTPUT_RANGE, - AD3552R_MASK_CH_OUTPUT_RANGE_SEL(ch), - val, 1); + return ad3552r_update_reg_bits(st, + AD3552R_REG_ADDR_CH0_CH1_OUTPUT_RANGE, + AD3552R_MASK_CH_OUTPUT_RANGE_SEL(ch), + val, 1); } =20 static int ad3552r_hs_reset(struct ad3552r_hs_state *st) @@ -405,10 +401,10 @@ static int ad3552r_hs_reset(struct ad3552r_hs_state *= st) fsleep(10); gpiod_set_value_cansleep(st->reset_gpio, 0); } else { - ret =3D ad3552r_qspi_update_reg_bits(st, - AD3552R_REG_ADDR_INTERFACE_CONFIG_A, - AD3552R_MASK_SOFTWARE_RESET, - AD3552R_MASK_SOFTWARE_RESET, 1); + ret =3D ad3552r_update_reg_bits(st, + AD3552R_REG_ADDR_INTERFACE_CONFIG_A, + AD3552R_MASK_SOFTWARE_RESET, + AD3552R_MASK_SOFTWARE_RESET, 1); if (ret) return ret; } @@ -541,19 +537,17 @@ static int ad3552r_hs_setup(struct ad3552r_hs_state *= st) =20 val =3D ret; =20 - ret =3D ad3552r_qspi_update_reg_bits(st, - AD3552R_REG_ADDR_SH_REFERENCE_CONFIG, - AD3552R_MASK_REFERENCE_VOLTAGE_SEL, - val, 1); + ret =3D ad3552r_update_reg_bits(st, AD3552R_REG_ADDR_SH_REFERENCE_CONFIG, + AD3552R_MASK_REFERENCE_VOLTAGE_SEL, + val, 1); if (ret) return ret; =20 ret =3D ad3552r_get_drive_strength(st->dev, &val); if (!ret) { - ret =3D ad3552r_qspi_update_reg_bits(st, - AD3552R_REG_ADDR_INTERFACE_CONFIG_D, - AD3552R_MASK_SDO_DRIVE_STRENGTH, - val, 1); + ret =3D ad3552r_update_reg_bits(st, + AD3552R_REG_ADDR_INTERFACE_CONFIG_D, + AD3552R_MASK_SDO_DRIVE_STRENGTH, val, 1); if (ret) return ret; } --=20 2.47.0