From nobody Tue Dec 16 05:43:01 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 AD74175809 for ; Tue, 14 Jan 2025 15:31:47 +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=1736868709; cv=none; b=D0J6h8q8HjHG2Etek5oxjCSPuYuN1LaDNH9p0yLpYN/5SuhJYyzG+zZu8scwtTJOoP0n4YD+SjwOof/vggDzMxoCanGq/L639QrZjU4VJZESNg+jDGorTyg0AQS8/b0pxvde66kd+9huOn7z6CGOvGCsqBAuPd9SPC6C3r5qIV4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736868709; c=relaxed/simple; bh=pqyr7lB2YlEjhkiVyE7jHiA6cFUHvqgoHwiJXFTx2Ys=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=T1esrqVgaZHgTldpiStajQBytvN+YCdDqkiPwJkTuGPWxVwp4nfk2gIvfSQ/Lgo6D4+oYKqPxMM3Bi5ZAVdOVbPmh0aQKGW2mn9XY1DoVlZMavRbbM3pQc5jtRBrj/1BlETaXzPGTyYYrTx5Xh8X4CKz3ON1mSdcFk1S/D8Gu0c= 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=2FComeN8; 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="2FComeN8" Received: by mail-wr1-f41.google.com with SMTP id ffacd0b85a97d-38789e5b6a7so3093483f8f.1 for ; Tue, 14 Jan 2025 07:31:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1736868706; x=1737473506; 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=M1ZK1w7swUyQuLFjvZaL7bfwG8xysBkjwjJzs0AMUFQ=; b=2FComeN8pPywh+irUsHDr/YwuN5JgkPNtnzgGY2+i5jmWe+GiL/vuXdquK/h0c5PTi euwPNo5OjfJEQ06MofXOKrxmPif6I6ZN9M060RM3b3y0oNBvhxsiP3JeYKDmovYBCHaC bbmYWvTr2fWaIkrFpdPWvLSNKzGPQMYzWTLzbe9gXGvS2VAeb+7vJh+hqTu9h524X/mv RdXm2wcjAKyFAgc1CZNK7HTyn9hxnXhkSX8g/cqCZb6KtmJ+JvfCBniFfZQ97WCWZSx5 Mlvx3KEo3FhJTuWybdZe9afB4Y9ef8rMfFTIXRqlbzTMiJkx8chDNheMlA2qGsnaZcLU GCYg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736868706; x=1737473506; 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=M1ZK1w7swUyQuLFjvZaL7bfwG8xysBkjwjJzs0AMUFQ=; b=aITlhJjd/dlmJh4Pt2KbKq9xJXw1ETVs1OzbseK4rn9qWMPgBWgT+PGK/MDU+BMkHd KJkgj3GZKYacP0bouT1gOUdF25w0h7w6tWnnHmj8Mrti0q4DaxVwZUs1W10ClHgzfrli PAOLLRP/+ZJIapGxIZbrvVqjX6MqqtQFpc6PmenikXGmgAFTDPf4tw/fJVRCwn4KS0rX MQBUcY8JhOPKpbVOHwyzlOJxdfc3b/zEdpqkg/yGa3JAoakP4s3dDNZN2iP4pXWk2EBp x0OR4bXr0Br1ScpTjsxQX/N+ux38hs7QJggGj5cyVCZdb5hulLPKhlqgkIzOmI13yvtZ 35OA== X-Forwarded-Encrypted: i=1; AJvYcCU4eu9IgiJPwHg7AM87hX0mmD8kCkQGaB/LmrGZ8GE3SVQcPZ/R/KHc0Vj9M2oj3wKeZzTeIS5ktygL6kw=@vger.kernel.org X-Gm-Message-State: AOJu0Yxy09zaIX1Lcnk8QDrRqAW6U+VGane3YimKKGKzKNVtwdQ73a7L yCbhyIXWp8T2Jwy+pAMEVmfc0jHamwlWfyHhJ2J4nMwYdPEC0jZXTqQVe2T5WuGAqmLNbfskNAL / X-Gm-Gg: ASbGncuZv3boHJXBfl+wmR3jfvcZZTsy1IFeUfbBm1mErZR419KlJoNcy58OkEkx5Co 03IU5vZl7WAxS9YMgHHJ8A4v9OiK5YVsaG5+4vxFw0OVE/n4lVGAeFgp6lUStWOCgZlCbL+4fYK FqESq3FEHq93Ipqc05+9VpAtEVG/SNlKi4ismzoML2UHwe1LsSebEoNxLVpeUqoa35MqMACAyj+ obOZpi+J9N+735b4N5q5rAqA1sI7wgcrEPH82W83YGE8AphL+NiJ9T62SQ= X-Google-Smtp-Source: AGHT+IGUfVVhHPPVS2cv9/nifIYxojUhr8Wg6b+On+7nFINLHTVHlstooWa0UcWalyJD5136uQ5tlQ== X-Received: by 2002:a5d:6da8:0:b0:38a:5ce8:df51 with SMTP id ffacd0b85a97d-38a872f7ef2mr22563413f8f.2.1736868704441; Tue, 14 Jan 2025 07:31:44 -0800 (PST) Received: from [127.0.1.1] ([87.13.70.66]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38a8e4b8116sm15049907f8f.79.2025.01.14.07.31.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Jan 2025 07:31:43 -0800 (PST) From: Angelo Dureghello X-Google-Original-From: Angelo Dureghello Date: Tue, 14 Jan 2025 16:30:10 +0100 Subject: [PATCH v4 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: <20250114-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v4-1-979402e33545@baylibre.com> References: <20250114-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v4-0-979402e33545@baylibre.com> In-Reply-To: <20250114-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v4-0-979402e33545@baylibre.com> To: Lars-Peter Clausen , Michael Hennerich , Jonathan Cameron , David Lechner , Nuno Sa 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") Reviewed-by: Nuno Sa Reviewed-by: David Lechner Signed-off-by: Angelo Dureghello --- 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 Tue Dec 16 05:43:01 2025 Received: from mail-wr1-f45.google.com (mail-wr1-f45.google.com [209.85.221.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0243C157A55 for ; Tue, 14 Jan 2025 15:31:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736868710; cv=none; b=q3Ml1rBnw0nlSsJ6SlpVlTuqaJA1ETunB3KJDZXFhtqUOYDik5l8Rb0o1YxditP8FULgbKFgvvUWK9DU50VsA2Q2iBLtKj1cBRQ5o7JlVMrM8RXknxiHLT1itdme9YEObGdGsFrS69pS801anXusU6kQ0kwy4Wpm5MfR2MYBRVc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736868710; c=relaxed/simple; bh=WwKlVxTv7Oeh09OXx+DvjZEFIeEypUPrgYxitxNiF28=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=JxQ43snqW+DlfV1MvyTUCjny5H8br/1DNJvAMQR6vWrp019jmuVwzU9+jGcu53r4JGjEwCJ5YforNY6FsI1pVheU1Szpx9gMuBrbBckcCJ11ZG5dkVfDT5Ti7T+zrEPwxkoxnx85kscH5wPteqxvF0eiha4tmQo5khkOMx/vFTU= 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=Rww4GutW; arc=none smtp.client-ip=209.85.221.45 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="Rww4GutW" Received: by mail-wr1-f45.google.com with SMTP id ffacd0b85a97d-3862d6d5765so3024004f8f.3 for ; Tue, 14 Jan 2025 07:31:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1736868707; x=1737473507; 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=RmYlx/En2aqqfgAz0OoSAfJ3wizK8wbnQXwhJAWjCCw=; b=Rww4GutWC7vy+903fwKqVbdjh7ptEPyodeJR5ErcStemSSqLhX1SPTCJ9FrsFAXgZ2 HnKPqTawsKKkS9U8f+bZalPWMEIKAvvcjoKx3DCW3ev3UjQZ6IQYWQ3zewrLJ9htH89U 9Kdp/tt73zZn/hHuk3jkghWjMz+ygMu1bUR+93m1cGxnZES6GF/L5gKFCV6SCR2XSK1d ua93ucYSPIWCFbLl/E4Eh5M9f0lGe9o1i51+V2N/Zszcxcq+110hnNyXbfTtcH+jyg7G b+n9j7auq9rX858JGzkeYR4ezqHSxQtTLLahC8Q8/U2GdJa2u4OxGODu2iipikWArtUl 8cFg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736868707; x=1737473507; 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=RmYlx/En2aqqfgAz0OoSAfJ3wizK8wbnQXwhJAWjCCw=; b=k6YcQ+o+ihwCqBvogiax37P5ipfmlP0GuiuXU2rLAcZ2Uq6qBtXjM2beSD8O/1ay3P 65hn0BkPhsDApfknLRTsFkGNp3PXSFrCTrE7ZzAyTqbM4YEOOh0YNEFJjSqysht6w88E SakrB29NJSKgBQZi9yZPAoicQMP889C0gCYs1q0ttcCO6zOXNu5qY8QSZwMseTLl/oXK 9931TM3NfeghHjBEeOkulrijhom6loD7Vud0d0/hVipllH/9STOQWAFBF6rE0eO0cSAt QK/TRMuYdnb3MslxC1uu3TH5QlDNOWQZhKQWE4DkawqRc+0mOTYCJsBl/frMhgtpKxFN sZjw== X-Forwarded-Encrypted: i=1; AJvYcCVKYAU+byoGEOWBaJKj7KuRvPFkmsZTE6zsxNXQogRN7Djk5P268G3KRUfBCJUoa+G25LSj8Y+n3FcW1JM=@vger.kernel.org X-Gm-Message-State: AOJu0Yx3hhfpzvGPx3TWfWmna7L9YsosmnM8Qksqp/zVe5I/ZnGQwFwR sAkITwEoP9odlX5P4Mtr7G3s7kBK6KZZH5HGg5aAXpwkc4WJSvDSeMFcSlYzvBk= X-Gm-Gg: ASbGnctC+TX0hj7UkrCm6Riym2kJcgm3SuyGtd5ZU7vHFxQRBeOaqWo6lxnFNhP6ujV 3SGKg0MgqbRfzYFRZKjrzkr6VkNy8+aP/5GucWlWQopf0oFxQJbsEMLSc6z543kekLbQkoPrD5Y fNKqz9pqE2wogmE8KiuFXgSgx4wK0PhLv8QBVyd9RYbaBmcAmDm+z2P9IFJxG6ru+5xJnsoueLf XwRWXpqaR+MpNY/7S8W6zeVSIbeIpuDy6I2IIWHPOO4NfMODh+MXx6cYeo= X-Google-Smtp-Source: AGHT+IGTfu68TjbqpJhz91FbPuANOfke+PQV/4PPq6Ra3BMMNeQguSEVyw6KgI7jOnEtN3nP89YzHg== X-Received: by 2002:a5d:6d0e:0:b0:38a:a117:3da1 with SMTP id ffacd0b85a97d-38aa1173f70mr10969153f8f.5.1736868705806; Tue, 14 Jan 2025 07:31:45 -0800 (PST) Received: from [127.0.1.1] ([87.13.70.66]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38a8e4b8116sm15049907f8f.79.2025.01.14.07.31.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Jan 2025 07:31:45 -0800 (PST) From: Angelo Dureghello X-Google-Original-From: Angelo Dureghello Date: Tue, 14 Jan 2025 16:30:11 +0100 Subject: [PATCH v4 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: <20250114-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v4-2-979402e33545@baylibre.com> References: <20250114-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v4-0-979402e33545@baylibre.com> In-Reply-To: <20250114-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v4-0-979402e33545@baylibre.com> To: Lars-Peter Clausen , Michael Hennerich , Jonathan Cameron , David Lechner , Nuno Sa 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") Reviewed-by: Nuno Sa Reviewed-by: David Lechner Signed-off-by: Angelo Dureghello --- 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 Tue Dec 16 05:43:01 2025 Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 26D70189B8C for ; Tue, 14 Jan 2025 15:31:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736868712; cv=none; b=CjowxePw8/vJSgxFPrEUPQxoZ68oVr0/5hRgOVqKhbjRfzgIJtFUO3MWesQl0ZVETgHHL1z+YR+7m3bbpIrXkFpxjPFgvaPSxO/R/vNAV/ErltSH2YWnQkkDY8HzlaWPCpTSqj6szPM9m5eUH997Dc+A14V9RjeEM1AgDGdEb9E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736868712; c=relaxed/simple; bh=pSP5O2KpDcWDn/YPvUVk/p3yqEOsgwFMEHN2oKWfl2Q=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=sq+WXB9tWtJ+KHe4V8U8rtjHWcleRmPSxqSR+vrS0qoCvCgnwWOO9S2hhQn9ZwMlEhPC740V59xjdEWzAbzbU6h6MX8JfmyzvPcWv3PCXPDdPfQl9RtvB12cMMxVw3IbMq51gaN/QG6xYbYMxB2aR+yzY9jREZ0nJbMqXjAc7aA= 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=oQTAmP0V; arc=none smtp.client-ip=209.85.128.42 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="oQTAmP0V" Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-4363ae65100so59357975e9.0 for ; Tue, 14 Jan 2025 07:31:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1736868708; x=1737473508; 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=79ELYnS/0cFQomhFXegbEFpd0OUlcm/1XJ4h0p0TxPA=; b=oQTAmP0VN/7YrYU0b6McFPgPIdRbtBGuuj+QZs7zFWMpc4Ys4B7A8DNhTO8k5qNSjE Tcov0GwTlyF1O3zTegRwtabcUiflWHbRUoG2/SzC78tRM4R211tRDCa+PudXefg4VALW VB++8ghIMHRVIma6U/wURV2BWFahXvuW1S23nyN0M5Uvs3jQIO+xDragxvQYE0RKkalD 2OiqSM0U/nFNlDP4NNLc0VdZnu7Bto776vSc7om4bKqyf6Kdbl9UcKMNo0bayrD1AF0m iIIJcccdjzNa19ATmduCyDqw0VQ0IbpxlyyIN+6iPdzaBUqn1dRwJlQCWRoamSSQPzem 28fA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736868708; x=1737473508; 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=79ELYnS/0cFQomhFXegbEFpd0OUlcm/1XJ4h0p0TxPA=; b=NZAzV2IFL0HanXurCbSa4Y9thDEntG01Wi6BWsXtuedan8Lxw0C3J3H4a8epmY6ylR xS5+77YpYIDyCgtj+UlfJxStYR+2L60X8L5dcQHV21GAKetw9yelnBiyZPjQTZocT5Fb 3qyUnTrMxRu8ZrDRaVBcaFTYZOSdbeaD37GBPtRLSiHN+fua2LT+fXi491qGmrTcUsBR 0YowHPuy0rfTNMrFJs7xlObB3L7Ot0zayoGE5aSG5Y/pOs1OmS5EyaYVOp2PqwlhGGpp TEQNF7+SZCDakRvY1gRVgZmrxjVQ7mBlfyn7+8whPRA94OI+KRhPDnrESbHUbfBagpKs 9+UA== X-Forwarded-Encrypted: i=1; AJvYcCWU2JGuKToIQaSJbX7o5o4BRu4VK1UVYWYWKf/qYS+YAK7LcnsCAS7lIHnQd1ZJ8XISR4PBGfExPgpbZC4=@vger.kernel.org X-Gm-Message-State: AOJu0Yw5XbO0F1H0KGF73zNGBXFT86j5yV7F5uN9cIeIjfEu7FjdpMvU zj606sqfPVOYnLD1zUNSGq404o5L0J0fXLIiy5CS0amruA2XtsSCD01mjl6LRBc= X-Gm-Gg: ASbGncu8fAtc2QJzUsL5MrPphpKsJLDTbALUzZy8BuhEYM913T5PpS8GAleS3Edb0ix posLHBDa0hEcNDMgrF3aJ0nx7YnPqdd+ZQEo+poEn1R/rB98ky/3Fev9SwmGAddQB4ajPzqRkey AOh+5qXUU7p21MCHfVOhOZ2JD1aFfrGldLy41Bh/RJWKroxBTkx5cKUXhzV3IGw3OW13p6cRuN3 WZTnw2TS7Q3jNCrvGbBh3RDSSeo5Djpy2+WiRbnpoJnP+ACJnfdbbl21Cg= X-Google-Smtp-Source: AGHT+IEQwIlC+JLtLtee+bYn5GDdoWVZ3hShcRyhT/V0Hier8yuFXFLUZ2GFZ3aUCqKCEmcFYWLBlw== X-Received: by 2002:a05:6000:184e:b0:382:46ea:113f with SMTP id ffacd0b85a97d-38a872fc1b3mr23588975f8f.10.1736868707122; Tue, 14 Jan 2025 07:31:47 -0800 (PST) Received: from [127.0.1.1] ([87.13.70.66]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38a8e4b8116sm15049907f8f.79.2025.01.14.07.31.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Jan 2025 07:31:46 -0800 (PST) From: Angelo Dureghello X-Google-Original-From: Angelo Dureghello Date: Tue, 14 Jan 2025 16:30:12 +0100 Subject: [PATCH v4 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: <20250114-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v4-3-979402e33545@baylibre.com> References: <20250114-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v4-0-979402e33545@baylibre.com> In-Reply-To: <20250114-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v4-0-979402e33545@baylibre.com> To: Lars-Peter Clausen , Michael Hennerich , Jonathan Cameron , David Lechner , Nuno Sa 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") Reviewed-by: Nuno Sa Signed-off-by: Angelo Dureghello --- drivers/iio/dac/adi-axi-dac.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/iio/dac/adi-axi-dac.c b/drivers/iio/dac/adi-axi-dac.c index b143f7ed6847..ac871deb8063 100644 --- a/drivers/iio/dac/adi-axi-dac.c +++ b/drivers/iio/dac/adi-axi-dac.c @@ -585,6 +585,14 @@ 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) + 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 Tue Dec 16 05:43:01 2025 Received: from mail-wr1-f54.google.com (mail-wr1-f54.google.com [209.85.221.54]) (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 3D318190077 for ; Tue, 14 Jan 2025 15:31:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736868713; cv=none; b=stBdc3VnHJwXuR3so7c+35t9ulHNIPoy9AFKeGmMa7rdGBmED2iMfstMcHvfw2sC9yHgeWLWk/U3TXYJolDyjyeeUrA44c8ZyrfCFFsI9qUBBhoLm2xlnOUbYJ8InkWD2q6EVdvcaMWpdiq8rELDaAd4rwAvdNb5Pw4LkwrmGg8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736868713; c=relaxed/simple; bh=M6naqnLCM4ZXUGO/uUploLBwKizmZEKciSJDiKFWV0I=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=X3F0TYog0+mGxiuPsPjDpRQa44hMaVmkhOn+mlEPzG0jGoFCxop+E3hrlL2eTMAerOhhZFZraZR/pkahpLfQynvtA2laNdBIQjrc7XGmNNborl1PdBbVh0Y2Hm1NmaKvv/kfssVKOKZCHpoKr3Da64xD0o+y1wvN0KeeAmdDOE8= 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=h/w/dpAF; arc=none smtp.client-ip=209.85.221.54 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="h/w/dpAF" Received: by mail-wr1-f54.google.com with SMTP id ffacd0b85a97d-3862b40a6e0so3061956f8f.0 for ; Tue, 14 Jan 2025 07:31:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1736868709; x=1737473509; 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=/d4iBZJ3r931DOCGukuu/0h9Or44VrIVD3hzoFAX6nY=; b=h/w/dpAF6EFGk6sg9pebrS2lLNC+55gD4hcy2KPfr96LptWOY0KyiRk+FOdz7FkwAu NfKn0I09y0StokeTwGy4WC7TLcptwmaj15QPdZKRQsUfSzDxMtcm/+T+tvt8/ZzN88j5 gNYc0YMD4upkNBluiPYrIpq69wtvgDRQlm/Pe26FFH2ZTd/xJ60kT4JV07Gcw+aJQsWd cDphIHPApaToUHkr52YFCvHWA1n8gZRQu1HLaFo9AKcncJlHvp4geLJvNIUPzADSTj9L BRWcAevPsiuweor2Zc3yK4T1T53XQ3Hve83fUYiJcYmvjOLA/9XQPQCgASbMPji8kLNL ceYQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736868709; x=1737473509; 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=/d4iBZJ3r931DOCGukuu/0h9Or44VrIVD3hzoFAX6nY=; b=sNGomQbsm5iw7R1/ClMRl9VOT5F37oACKC+qQy/pDSPkQWKP077OxIMHQcrwNULFkR LyLMIk4kXsx6GDlrSVPxSuyFJPCSBRFndgTFXf373FBrqpXO/QxvykxqP7hm8MNLILiq 6EKdMxSt731Zhnj4abEBEKKNXMWwncL0n0Hwec1fNB9IL4qkXmnyCGJcY+F0Euh5CZ7x VFpIhAiZt+2bcvaU+tC9cUdhBq8xnZPdP8mI9H9Tbt0I1xGOxfh778wlMC8rQ5UuKus5 601mJNifKG+Ht9NttTxiOzxEerOFk9ry8OFJeF0iHDW4ksK/M4LpCdtjNYtf+ya16Puy s6lA== X-Forwarded-Encrypted: i=1; AJvYcCUUP9aQM3PgLaQkc8NhnExAGuz2Ew/eLLYOVI55ILCf21/HOBrOgA+xBnDyOY8FqU16vKuv3Inm3coPndU=@vger.kernel.org X-Gm-Message-State: AOJu0YyccNtbQio7sM39nHU2gCNhKs9M8lRroRvI/D+fY9tazC6gDU8m ejyjDxKfzOl760dI8P6qtuAbKnZaMz00Lhi1Uc1mk/2+UU6NWNkepqw3RZzrEHU= X-Gm-Gg: ASbGncu/VqMYrEXfsHofi/yuqaVOETrw7Upy0IEB+CjB6IuDA8tc/hj4uFNcyOruiaq eLF7upnlaUtzMXGCNVO98+AMYdirWBQ79FV4CiSv42vpDnzFFjVlzYajJNUPbMkBmJVLKfUmqx1 1LxJkrjRTcIcDSEpH9O/RtQl/zJmYyPf/iT169lf9l8MQudutp9+kMLhmYCApXzdDDNMAc6C56Z ZNKmf3YVP9YzXHul9lwqoijn1F1wCbDlLyM/cf8uQ8re5e2YyxjNLckAu8= X-Google-Smtp-Source: AGHT+IFms9UiV+PF4o0FViAbBpzFXZQSmkQPq9Fro0GWF4ObbRaN0Lk34b6EYD+QAzvkkhtkVZRtzw== X-Received: by 2002:a5d:6484:0:b0:385:f092:e00 with SMTP id ffacd0b85a97d-38a87355760mr21235499f8f.50.1736868708533; Tue, 14 Jan 2025 07:31:48 -0800 (PST) Received: from [127.0.1.1] ([87.13.70.66]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38a8e4b8116sm15049907f8f.79.2025.01.14.07.31.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Jan 2025 07:31:47 -0800 (PST) From: Angelo Dureghello X-Google-Original-From: Angelo Dureghello Date: Tue, 14 Jan 2025 16:30:13 +0100 Subject: [PATCH v4 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: <20250114-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v4-4-979402e33545@baylibre.com> References: <20250114-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v4-0-979402e33545@baylibre.com> In-Reply-To: <20250114-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v4-0-979402e33545@baylibre.com> To: Lars-Peter Clausen , Michael Hennerich , Jonathan Cameron , David Lechner , Nuno Sa 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, depending on the DAC type, target TRANSFER_REGISTER "MULTI_IO_MODE" bitfield can be set between: SPI (configuration, entire ad35xxr family), DSPI (ad354xr), QSPI (ad355xr). Also bus IO_MODE must be set accordingly. About removal of AXI_DAC_CUSTOM_CTRL_SYNCED_TRANSFER, according to the HDL history the flag has never been used. So looks like the driver was including it by mistake or in anticipation for something that was never implemented on HDL side. Current HDL updated documentation confirm it is actually not in use anymore and replaced by the IO_MODE bits. Reviewed-by: Nuno Sa Signed-off-by: Angelo Dureghello --- drivers/iio/dac/ad3552r-hs.h | 8 ++++++++ drivers/iio/dac/adi-axi-dac.c | 25 ++++++++++++++++++++++++- 2 files changed, 32 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 ac871deb8063..ac4c96c4ccf3 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 @@ -722,6 +722,28 @@ 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; + + if (!(mode >=3D AD3552R_IO_MODE_SPI && mode <=3D AD3552R_IO_MODE_QSPI)) + return -EINVAL; + + guard(mutex)(&st->lock); + + 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; + + return 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); +} + static void axi_dac_child_remove(void *data) { platform_device_unregister(data); @@ -733,6 +755,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 Tue Dec 16 05:43:01 2025 Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 26EF21B86D5 for ; Tue, 14 Jan 2025 15:31:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736868713; cv=none; b=Yq4/WdspV5zbNpu3iUgpV9PiGhkl+AJ+WdW78xDHMC9hyDdsTarVu19B6KmUiF0KI9LSjcDM2bMqzAIuSQOJOnhISfCBJWW7QcUWUV1uLNBRsqjS+/QbOoafAYzJiaWx+/SI9JCg+xBzEnMZ8Pk3wEz9NmwONEB/HN/pdvHKuKk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736868713; c=relaxed/simple; bh=FGkqYiXXh/+bxSWU1J+RITwSb7AerkurSv9AeODl+PE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=abCugnRKU5ePqZh27BYulB0qnaZP2/31Xc8x0LHjYcpE79yHw2I3y2UROOpW3Z8qduh30kwBY1qsuyMBIaH5PChSaoRwG3tIqANHQmp8eSq1dB/pbC1puzeNMiT334nuGmsRP76QX3J/wE33sOCNDa2ayyZOZyCWXTrCiXEqX+s= 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=EghShoJj; arc=none smtp.client-ip=209.85.128.45 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="EghShoJj" Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-4368a293339so64188455e9.3 for ; Tue, 14 Jan 2025 07:31:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1736868710; x=1737473510; 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=Y9+dDQA2ZUdP/rTzes45J+HZpWx/w4e6GLVk9fKNwPA=; b=EghShoJjZC7n83byKz4XC64Hw+55eaDPWS7WLznth07smLO993wqkD1BymhlnNPf47 ZXPsKdcF5TUIge0xRwITHGashAAM9fiM3+A/p6K1JzN76xBSD9lyzCQetYAfaBQh7Aiv fO2OEICszkf5SRzr/0X6N8odUxId2sv5sVi6jhOYRvuK6Xc5SD4l/t/+QxMUeTM9157K hI0/Q+xBVo0t6iHtqvM9aAHHgs3VOi/ty814uwj/pYiyKcI+o8kqui1VmfdLoy0UoC88 AS2u29O3SPK9NAHEsN2Tib8K3glq5EFetRpqEVRgnA3Lqcj5WQAlKR0IQtt7MW/qYNEI /GaA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736868710; x=1737473510; 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=Y9+dDQA2ZUdP/rTzes45J+HZpWx/w4e6GLVk9fKNwPA=; b=AWbnQXsFGQ0+vXxao26acrI9XNZC/QrAHgIn+o6kNKW+WlySM9YVrL/meVmzOUjpms AG/+cIk+v5BembHA9r9osnZGUwe6d9OSb6xcxk0IGH25wM6k5aSOqzS/JIImZ0diqN+y Ne9ZQlG0oxfqefOPRsKP6JVr3n4dDMa/NcswQVKA4F5p/wydlyzHdepYyz2l7ic5tXTU 7YjoKA2f+2934ejDbcQipdwXu/AzIoI7l1bHrIHdfk6WqkBxhvXD7qAd02Ig/pukAz/+ 4FaqpRV/n9TkLwO/NRED8vYuzu/By4KVK2H1E5EtSzebilduF4RChPliuHw1YavvcfLk MQDQ== X-Forwarded-Encrypted: i=1; AJvYcCVJMons/6T1vUf9svDjODVR9j7IGHY4YLB6m7zWaH+HhCdrxCCcc3vlYi0W9LiJqb157IFmKEnfe2k+1N8=@vger.kernel.org X-Gm-Message-State: AOJu0YyGv0QqKsn2aZahAeHsI4m84xQrrPj7v8NwWpRgOgCSYrZYacye 7XOLqQxPWeKJnqlfBERSJDsGxg3gLvqlhGH+SGz3XhFdMLHyWR4EDrGuajbBNAc= X-Gm-Gg: ASbGncuhJHwouZZbZwikZ3BnOrguqj0RNNKHrVQTVsBqOfht+d1sC1243YJrzCRhVx2 bFXnryL/YI8aruIANEzIxE9DIWfYfKevp+2dWr3D4zTwjUanWZ3KBjNSKGBppU2CEyyDs6/J7ZT J2UiCg80He5JmUgTaoT99CQwcBHMy25wwRhggktO5XrpmNeZNYkA19+dYGkGMxQOyzDoCZCNuCQ Z7WDCFoj0aAGjeX+eOPJV1IZmkh3gKzxrpISwRae8uMmj/qmDoymm/sWBA= X-Google-Smtp-Source: AGHT+IH7AnS8Xy0AvaKh32AoS3bdK4ykrox2/qO5FDmQaEgt2abKbZj4t9TCxwZlk0zyzle/K0RGGA== X-Received: by 2002:a5d:6d83:0:b0:386:3864:5cf2 with SMTP id ffacd0b85a97d-38a8730497dmr19668664f8f.19.1736868710473; Tue, 14 Jan 2025 07:31:50 -0800 (PST) Received: from [127.0.1.1] ([87.13.70.66]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38a8e4b8116sm15049907f8f.79.2025.01.14.07.31.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Jan 2025 07:31:49 -0800 (PST) From: Angelo Dureghello X-Google-Original-From: Angelo Dureghello Date: Tue, 14 Jan 2025 16:30:14 +0100 Subject: [PATCH v4 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: <20250114-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v4-5-979402e33545@baylibre.com> References: <20250114-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v4-0-979402e33545@baylibre.com> In-Reply-To: <20250114-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v4-0-979402e33545@baylibre.com> To: Lars-Peter Clausen , Michael Hennerich , Jonathan Cameron , David Lechner , Nuno Sa 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..6bf995b50395 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_warn(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 Tue Dec 16 05:43:01 2025 Received: from mail-wr1-f42.google.com (mail-wr1-f42.google.com [209.85.221.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 83FF41C5F0F for ; Tue, 14 Jan 2025 15:31:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736868715; cv=none; b=EIfkBXmobQMV1lg51LXJ8sDY/NVzhobRrxjqTWs9E6cBWKLbnHS8HrO52mbLtgMWG8Rv9oZtKBfatKbXitE+M4BosfZt1T1D9y8rjz4fGmQ5SMFqxM7+M+rtmA8YL0vajS77z4JdnfRsZu66kiawq6qeMMqamA1b5A5D28KkKz8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736868715; c=relaxed/simple; bh=UItI2hZUiFhSBtbcXWs4AMta6KQvhi9R1iJhmuA9Jg8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Hmf4TyU5xScTUDJPoE/mTl7ZF7JKBK5JLIHbx4+EhNu2cGwY8cVYgZ09sdnyLdfF+4s537V4RqOZ/WRLd2ZWFQGJ5epPKt2ApPPaDEKtzQLgcEht5babJwuP2liegowhjCNOLuxGUANECaVQdBaDeWdQN76FfdTeh4PF1IR/9G8= 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=C+CZ7QIk; arc=none smtp.client-ip=209.85.221.42 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="C+CZ7QIk" Received: by mail-wr1-f42.google.com with SMTP id ffacd0b85a97d-3862d6d5765so3024051f8f.3 for ; Tue, 14 Jan 2025 07:31:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1736868712; x=1737473512; 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=b7AD+wJ8IOjuFx6p9gLrTL8TthqHXj7sqaFRN+y4/jo=; b=C+CZ7QIkRs+xH/tlLX7fq2E+5f532SpB2pl9myceRlKJESfMHIRCuRmnRkbl8WT/Is kw5EF+hKWuys/xsZCDe/pMsZ1wjR7ykSXZSwJMq72ECs+vO6XdDXhJZJwgi1ItcW2vfj /AKw0VWrNSafO9dtHsx+lDuluyyjWmdi5VSzHbbfLDd3214AzN/G6oVY4nF0cYuu3Q6j hwig2zQyb/JrOh4t+hxoZ30Auz38MroSJfG2EH0Zbk+yW+w86fsT1aa0wxZaLmd/loPM D5LN/DcNPzX79fS1vqGSipHxn5gYELJBy4b/UUPot7LJ/oOdEsNoUXBIvtF2+4vo0zux Jk7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736868712; x=1737473512; 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=b7AD+wJ8IOjuFx6p9gLrTL8TthqHXj7sqaFRN+y4/jo=; b=abLbM9TuTI8ksX2jYRIZCWjaOGEXeev0FbTkm8DjQ13ibqv3dBOs3dP8iaBFbfxi00 fUOJeScAiw+gcGhb7+9V8qrNG9++gaPKiRstXkHylJu70ifGLwyyEw41mNLQYLOMz6Fm +B5bu1aVBA39HSCDvWzLyVoJsler+qQFmEYDUd6+8GkABHVFDwHwLYRHSk5gFTx0c16X FLEr4EPJFGsmyarWfxQEiBx+ySB51RV4tisNvYlVnlfRLKUQ8UZU+M5ILZunu84GE6w+ Eg4MYkR7q1E2nuXKK8+iF78zCK7PLOSQhJxuIW6godan/JsfRpOV5axJxyWc+WIag3Ch 2nKQ== X-Forwarded-Encrypted: i=1; AJvYcCWiCN5DuuiKZi531Rr6hGq/AkXZWXJKmZgeD8br/PS1vbCLmDeJxiGzdekgKNQBMn/duoDyImPUyzenL7c=@vger.kernel.org X-Gm-Message-State: AOJu0Yy1cQj1dV2ANW0O1KSiXdKWw1V2fv2lT0sZu0aZYw1BNKuw8bJx ZFakOlg2keGQSyqW/RbRVSVpdymsMDt5DfEh/hmc1vLUA2rKKYVt+/B7gcOrTfI= X-Gm-Gg: ASbGncvcMu1AdcGjGwRrM/FrO8ahRmR5mYdQ1xfcOU0K1C0ll7WsUMbSUQW9e4Imrpd VD3P4gcfB0roMUkDxDmx0mtYL0kIAbL9TqENfI7cvJW+S+4d+m3p3g+W+wz2KcEPX9UKTfi/XD+ OQSdOsU8GkDMopNFZ2XxpAUlzQ4IS3GfMvYbKtVqwBVRYET1Z1rLAuePtYj3dVTyQTL+qao0Fmx cGTMqNa/TnfY3Hz09PN1XDGfMuLqacMTPo3KJ70Duy1IxIVESeTaUK3QR4= X-Google-Smtp-Source: AGHT+IEBdBTstRr21+IGJ+9lga2m4RjpAaan3Vw+TrGj1moJe+FA7MQSsGPvn31Jx0HzgkVxxzHBZA== X-Received: by 2002:a5d:584d:0:b0:386:4a16:dad7 with SMTP id ffacd0b85a97d-38a872d2a33mr24271920f8f.10.1736868711783; Tue, 14 Jan 2025 07:31:51 -0800 (PST) Received: from [127.0.1.1] ([87.13.70.66]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38a8e4b8116sm15049907f8f.79.2025.01.14.07.31.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Jan 2025 07:31:51 -0800 (PST) From: Angelo Dureghello X-Google-Original-From: Angelo Dureghello Date: Tue, 14 Jan 2025 16:30:15 +0100 Subject: [PATCH v4 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: <20250114-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v4-6-979402e33545@baylibre.com> References: <20250114-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v4-0-979402e33545@baylibre.com> In-Reply-To: <20250114-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v4-0-979402e33545@baylibre.com> To: Lars-Peter Clausen , Michael Hennerich , Jonathan Cameron , David Lechner , Nuno Sa 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 because 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 | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/drivers/iio/dac/ad3552r-hs.c b/drivers/iio/dac/ad3552r-hs.c index 6bf995b50395..25ee716b57cd 100644 --- a/drivers/iio/dac/ad3552r-hs.c +++ b/drivers/iio/dac/ad3552r-hs.c @@ -137,13 +137,20 @@ static int ad3552r_hs_buffer_postenable(struct iio_de= v *indio_dev) if (ret) return ret; =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; + /* 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); if (ret) - return ret; + goto exit_err_ddr; =20 /* Inform DAC IP to go for DDR mode from now on */ ret =3D iio_backend_ddr_enable(st->back); @@ -174,6 +181,11 @@ static int ad3552r_hs_buffer_postenable(struct iio_dev= *indio_dev) =20 iio_backend_ddr_disable(st->back); =20 +exit_err_ddr: + ad3552r_qspi_update_reg_bits(st, AD3552R_REG_ADDR_INTERFACE_CONFIG_B, + AD3552R_MASK_SINGLE_INST, + AD3552R_MASK_SINGLE_INST, 1); + return ret; } =20 @@ -198,6 +210,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 +328,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 Tue Dec 16 05:43:01 2025 Received: from mail-wr1-f42.google.com (mail-wr1-f42.google.com [209.85.221.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D3F621CDA13 for ; Tue, 14 Jan 2025 15:31:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736868716; cv=none; b=ILiFhwgxkvoXwQzL/rHl1pgal0v2eJ36tJOoZ8i85v3rUfeMrSv2H7seFbkBT0xaXaFZN5ikRCRaLnGodTbFqPfjHUMkfAKxfWErxm5raFrWYm/18/ddRQ4YNOAK3wkc1/vS79B+j/Udaw/OdEbFDw2eDKCyYZef5JvESj4GC0w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736868716; c=relaxed/simple; bh=v1+O4noY3O0s65OrfzA8R59Ys8F2s28DZZGvtlbpJsg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=cpUwct/FyoUepiCnVqzUYr2kLDF4FVTNzwSQ6u60OJ3YagfYBMO+qe8+oL72mNuYXld1YX3liZwx58vNVfK8TFxSdqKRgY1IsPyeUocEita15Ll9BCIg0Y5opoFjx18/pALZMa/N7EY7ijYjH3yXPABd/ZWpnzw37wfoyP+Qh2A= 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=b+fxTTb1; arc=none smtp.client-ip=209.85.221.42 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="b+fxTTb1" Received: by mail-wr1-f42.google.com with SMTP id ffacd0b85a97d-388cae9eb9fso3009486f8f.3 for ; Tue, 14 Jan 2025 07:31:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1736868713; x=1737473513; 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=ZuhTyNXJGoJmvY2b3b+eX+Gs7fiX+q1of8RI8yzzWR0=; b=b+fxTTb1TzxwAAIi9ec7h9eiNoFnlC30+kRP+rLVD2pV7wjZDmAaH6RCROwcrffXqt IJb4d9FVY+gqixbwGmPk9Bmhoj9Qie0LrtFJbbdLpkt3xcWEZDS5UpqAAyo2eZJSrIZG x1uUbY4MIZxp6MhTbpMkYM9u9t4NgpvNTb855y9BzmT0DKOpDqQVdyBNv5jW+NC5BpDi oM3BH+94p2pQBT9m3S7b5Z+E7FsGwCEMKtbhlZRq9JYO/vbGJZkLJKZBB9B4F2xERUQt ajw/+F8bbVj2pguKLU1XgH5n5G0kg9i63kxaHVhhU35nAnMpBz9XL/mXkPMN3QbzTsnP T/ZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736868713; x=1737473513; 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=ZuhTyNXJGoJmvY2b3b+eX+Gs7fiX+q1of8RI8yzzWR0=; b=ta0clLQ7Zt2TFJ9Y+8zoRQjJsCH5/SJzTmNbWUNPfRbxHoe/OAI7igbZiRt78WPJ1t xGuPLvZ3xTjaRTuyVIma/nCi8Q1rznoaTBl07ENrVjLHDpvUhR8q+hwyQavOhCoXwlin Wl6A1GVe96mrx8FGq8OsATzwxFGFV22PB/nDpn1Zj1BQFBks4gz9Yq6Ak3oJwFwuhgPY smRJiWtIkq3NePUDFA6BqGHCwAFPyfMvnf81CLRG8UQji+QEeu6JZFMO9DfeXpLSfqCq SZA979GQYvEBKEuMvkK4Y+nrOBgZ7VC0XM6sTIXenGbdcg9rGiAiTGMKzevsCGE5hUK9 wt4A== X-Forwarded-Encrypted: i=1; AJvYcCVZht7bCasNxZyYoafovSqdio3jhUXIpaHwxL1cCm+2j9ok/1UWtvDvUnI+SfzxawDmfK21g0JJ729UNa4=@vger.kernel.org X-Gm-Message-State: AOJu0YyWs+8Z071QEnoG1fYP6Vo4SeGJO9/Uv5WO2c99q6mxdME7cPzJ /CY4hb0cnav3EpQhL9gP5ECWiNC6nE9nSfvTVlnXXAFeZeDfzPZath8oU/tTl/c= X-Gm-Gg: ASbGnctXWsAjrTPV/eh1laca/v8WKBsiu8Erew8cK2gSl/WdNFTglicfWs2HTzMi5V2 BDxYl8juV1EOONiFUsuPAzp87HziWBtvhqer8wanJr3EslSeHtxuWe33pKpdwirNXDEbXRwVoJG fnJ3ofpjdUPJA73H4mrqQTfRHUghOcRAUuoWF3F7QH9eB6sgFWJTqN1PTF1zuLeim340Ws38k+D 3Pq/LUqZSSWgl/c3ABXOgZd5tz7+CNajGk7Kk/JFDlmiE/ooO1oxQvTEYo= X-Google-Smtp-Source: AGHT+IE4URCzRCcKwzMMg5I6jlVUcPCNFuZwZxe/rvVw9KP+ZpeRnhfpFCTY29EMVrFPBsE7qLoIQg== X-Received: by 2002:a05:6000:1564:b0:38a:8d32:274e with SMTP id ffacd0b85a97d-38a8d322b18mr18955634f8f.5.1736868713121; Tue, 14 Jan 2025 07:31:53 -0800 (PST) Received: from [127.0.1.1] ([87.13.70.66]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38a8e4b8116sm15049907f8f.79.2025.01.14.07.31.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Jan 2025 07:31:52 -0800 (PST) From: Angelo Dureghello X-Google-Original-From: Angelo Dureghello Date: Tue, 14 Jan 2025 16:30:16 +0100 Subject: [PATCH v4 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: <20250114-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v4-7-979402e33545@baylibre.com> References: <20250114-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v4-0-979402e33545@baylibre.com> In-Reply-To: <20250114-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v4-0-979402e33545@baylibre.com> To: Lars-Peter Clausen , Michael Hennerich , Jonathan Cameron , David Lechner , Nuno Sa 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. Reviewed-by: David Lechner Reviewed-by: Nuno Sa Signed-off-by: Angelo Dureghello --- drivers/iio/dac/ad3552r-common.c | 46 ++++++++++++++++++++++++++++++++++++= ---- drivers/iio/dac/ad3552r-hs.c | 8 ------- drivers/iio/dac/ad3552r.c | 36 ------------------------------- drivers/iio/dac/ad3552r.h | 6 ++++-- 4 files changed, 46 insertions(+), 50 deletions(-) diff --git a/drivers/iio/dac/ad3552r-common.c b/drivers/iio/dac/ad3552r-com= mon.c index 03e0864f5084..ded90bf57baf 100644 --- a/drivers/iio/dac/ad3552r-common.c +++ b/drivers/iio/dac/ad3552r-common.c @@ -11,23 +11,21 @@ =20 #include "ad3552r.h" =20 -const s32 ad3552r_ch_ranges[AD3552R_MAX_RANGES][2] =3D { +static const s32 ad3552r_ch_ranges[AD3552R_MAX_RANGES][2] =3D { [AD3552R_CH_OUTPUT_RANGE_0__2P5V] =3D { 0, 2500 }, [AD3552R_CH_OUTPUT_RANGE_0__5V] =3D { 0, 5000 }, [AD3552R_CH_OUTPUT_RANGE_0__10V] =3D { 0, 10000 }, [AD3552R_CH_OUTPUT_RANGE_NEG_5__5V] =3D { -5000, 5000 }, [AD3552R_CH_OUTPUT_RANGE_NEG_10__10V] =3D { -10000, 10000 } }; -EXPORT_SYMBOL_NS_GPL(ad3552r_ch_ranges, "IIO_AD3552R"); =20 -const s32 ad3542r_ch_ranges[AD3542R_MAX_RANGES][2] =3D { +static const s32 ad3542r_ch_ranges[AD3542R_MAX_RANGES][2] =3D { [AD3542R_CH_OUTPUT_RANGE_0__2P5V] =3D { 0, 2500 }, [AD3542R_CH_OUTPUT_RANGE_0__5V] =3D { 0, 5000 }, [AD3542R_CH_OUTPUT_RANGE_0__10V] =3D { 0, 10000 }, [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 /* Gain * AD3552R_GAIN_SCALE */ static const s32 gains_scaling_table[] =3D { @@ -37,6 +35,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 25ee716b57cd..98711f742c70 100644 --- a/drivers/iio/dac/ad3552r-hs.c +++ b/drivers/iio/dac/ad3552r-hs.c @@ -532,14 +532,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..3dc8d1d9c0f9 100644 --- a/drivers/iio/dac/ad3552r.h +++ b/drivers/iio/dac/ad3552r.h @@ -134,8 +134,10 @@ #define AD3542R_MAX_RANGES 5 #define AD3552R_QUAD_SPI 2 =20 -extern const s32 ad3552r_ch_ranges[AD3552R_MAX_RANGES][2]; -extern const s32 ad3542r_ch_ranges[AD3542R_MAX_RANGES][2]; +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; =20 enum ad3552r_id { AD3541R_ID =3D 0x400b, --=20 2.47.0 From nobody Tue Dec 16 05:43:01 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 75E931D54E2 for ; Tue, 14 Jan 2025 15:31:56 +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=1736868720; cv=none; b=moEYxmysqTav/9iC8uA965HXhC13s6wSyMTW9DgKGpdEAI40qfmMwH3QxqPqwP7XQzFgIl8ZOPhhMCzjdus4fXbkQ7sUemOE12BOJnNYs0DIe2dKMHJDxlPmleQnylwzCY7eEaWk97P+1iNjqqo+p9hn9FN1bdJD7qxqjlJbYIM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736868720; c=relaxed/simple; bh=3NLonDaZXZHxQwUe77tNiYWg1OYTBJ3xp2Pe4pve3KU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=fZUquu+pqstz/muwlma56ZTYfW+0KlnD5RK++gTckpGpscA+S8MNts4euWLK/cd/yp7WPHFfROL2Fx454GO7ntekeExUxwd+fs92USj8y4TXawIHy4iKU4WciFCX9eZJozGeotreysCUgI7XdNXTfI6UBZ99pZtoNgdprxSF44E= 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=R90AKZTV; 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="R90AKZTV" Received: by mail-wr1-f52.google.com with SMTP id ffacd0b85a97d-3862d6d5765so3024092f8f.3 for ; Tue, 14 Jan 2025 07:31:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1736868715; x=1737473515; 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=dl1oUp9XUDJT3tl0OP8G5+aUHgYGYfeR2svkPzgkqwc=; b=R90AKZTVv61ku/u7zZDoYYkNvk+cBeesJVTA1j9xm4S8fljwmcventdWuM65LHAkP8 sve6ZmXwSjo4dqJ3HyM3VkNwBO9cAJJnwYjqlPgA9N2UUW/LCtdkBSuaevRf788aGqFJ PlwI8FHrcGK0c6LVcaolVcICppwx9ERECJncNvAsMddsfqhIrnOE6YHWFBypZWH166Ip FRTvL6n/2U9caqXN1UAxtCfdDcoSdh4FiZoGpezwWNxr5bf2LnXrA5GXpJJwXHLYfig8 vlw4XO08aV1nixToGiEKIH9G0Fa/uQye3faxvCePcjrWq35bh9K89YLTC1hJfTkr1C4e fvMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736868715; x=1737473515; 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=dl1oUp9XUDJT3tl0OP8G5+aUHgYGYfeR2svkPzgkqwc=; b=Lvg51BEqutTsFF9It7YV73HxXzbd/oE/0V/vnEoNSoMMAONGLNWLsaMOzbslqxPxY4 9opMVFhoZz1Aet4JBrF2shQ+9V8iFZau53WjYcpvLxHCzdAiSbho6eG9xPnS81NtlnIp eYsNcKQghdVgu93oCPNu0NGNgrvArR5UYgY2QNobWqxrvqekRQHJk+DiCqwmzrz7pE+h 67KKvL7R0+qdHgbuAaCuxMTCtrE2h5XSodo/9+jLdU2xYwxvMifoMtYBBgOwM3XqXlPQ c7MIs9qdD6Cx9mfvFzf/YWYYndc45YIbA/gS19+yEUlYu0eieC1JPCiUZenf2xoXKWO4 JFSQ== X-Forwarded-Encrypted: i=1; AJvYcCULv1oCBK2u9tcFO5g6ATCWXah0tDGODLCedamtyUljTXzHqqGO23Nl/hFi6Ya4A+HZFFLwWB4/5o5N0N8=@vger.kernel.org X-Gm-Message-State: AOJu0Yw8Ha/GG6iGYYmqXiCBhC/s43va23qkX9c5qLGXY2RlQUsDhSzZ d4Ta3VNo5VihRx14DNQc9FqX+zN4eWNZCV0K7/WX88Nc+9tQc3JDngK5QirTcYs= X-Gm-Gg: ASbGncufZEk0cxc7W/LIjqtuLhgQ8ecrBWS5+oXdyzYiamkXTvQw+/7vM6UnhsBNJUM OGC9TRP3vdjl+usGCSA5VNqExdnFqI49XfqCJGdmpGJjqnxWOXKFE7WeQ08jlasOSsK4Y6Gz6sH 2w48X/yGTIlKF0MkoMQvfdKRKNmnBEA/oGYiQyYNYOSorsOecLQwTdZ6Psf+mQaHSoT4DT89ax1 mbzkTDzuuUJTEAK1TSjrgdxwY8vu513IkHw+dAJ9qPPOP8V0mKj2letAxs= X-Google-Smtp-Source: AGHT+IEfWZ2AzTIekjMqWBTl6vtRsgu2N7dbvBTSOolVxS/YcloLUk61fkXYN/4GB0Xa3Ov03DzHjg== X-Received: by 2002:a05:6000:490e:b0:386:32cb:4aa with SMTP id ffacd0b85a97d-38a8730ef59mr23946987f8f.45.1736868714557; Tue, 14 Jan 2025 07:31:54 -0800 (PST) Received: from [127.0.1.1] ([87.13.70.66]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38a8e4b8116sm15049907f8f.79.2025.01.14.07.31.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Jan 2025 07:31:53 -0800 (PST) From: Angelo Dureghello X-Google-Original-From: Angelo Dureghello Date: Tue, 14 Jan 2025 16:30:17 +0100 Subject: [PATCH v4 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: <20250114-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v4-8-979402e33545@baylibre.com> References: <20250114-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v4-0-979402e33545@baylibre.com> In-Reply-To: <20250114-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v4-0-979402e33545@baylibre.com> To: Lars-Peter Clausen , Michael Hennerich , Jonathan Cameron , David Lechner , Nuno Sa 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 sample rate to respect number of lanes. Signed-off-by: Angelo Dureghello --- drivers/iio/dac/ad3552r-common.c | 4 + drivers/iio/dac/ad3552r-hs.c | 260 +++++++++++++++++++++++++++++++----= ---- drivers/iio/dac/ad3552r.h | 3 + 3 files changed, 216 insertions(+), 51 deletions(-) diff --git a/drivers/iio/dac/ad3552r-common.c b/drivers/iio/dac/ad3552r-com= mon.c index ded90bf57baf..b8807e54fa05 100644 --- a/drivers/iio/dac/ad3552r-common.c +++ b/drivers/iio/dac/ad3552r-common.c @@ -42,6 +42,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 @@ -52,6 +53,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 @@ -62,6 +64,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 @@ -72,6 +75,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 98711f742c70..e8e309046f11 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,8 +52,19 @@ 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_hs_reg_read(struct ad3552r_hs_state *st, u32 reg, u32 *= val, + size_t xfer_size) +{ + /* No chip in the family supports DDR read. Informing of this. */ + WARN_ON_ONCE(st->config_d & AD3552R_MASK_SPI_CONFIG_DDR); + + return st->data->bus_reg_read(st->back, reg, val, xfer_size); +} + static int ad3552r_qspi_update_reg_bits(struct ad3552r_hs_state *st, u32 reg, u32 mask, u32 val, size_t xfer_size) @@ -36,7 +72,7 @@ static int ad3552r_qspi_update_reg_bits(struct ad3552r_hs= _state *st, u32 rval; int ret; =20 - ret =3D st->data->bus_reg_read(st->back, reg, &rval, xfer_size); + ret =3D ad3552r_hs_reg_read(st, reg, &rval, xfer_size); if (ret) return ret; =20 @@ -56,16 +92,20 @@ 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: - ret =3D st->data->bus_reg_read(st->back, + /* For RAW accesses, stay always in simple-spi. */ + ret =3D ad3552r_hs_reg_read(st, AD3552R_REG_ADDR_CH_DAC_16B(chan->channel), val, 2); if (ret) @@ -93,6 +133,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 +145,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) +{ + u32 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,10 +209,10 @@ static int ad3552r_hs_buffer_postenable(struct iio_de= v *indio_dev) return -EINVAL; } =20 - ret =3D st->data->bus_reg_write(st->back, AD3552R_REG_ADDR_STREAM_MODE, - loop_len, 1); - if (ret) - return ret; + /* + * With ad3541/2r support, QSPI pin is held low at reset from HDL, + * streaming start sequence must respect strictly the order below. + */ =20 /* Primary region access, set streaming mode (now in SPI + SDR). */ ret =3D ad3552r_qspi_update_reg_bits(st, @@ -144,47 +221,98 @@ static int ad3552r_hs_buffer_postenable(struct iio_de= v *indio_dev) if (ret) return ret; =20 - /* Inform DAC chip to switch into DDR mode */ + /* + * Set target loop len, keeping the value: streaming writes at address + * 0x2c or 0x2a, in descending loop (2 or 4 bytes), keeping loop len + * value so that it's not cleared hereafter when _CS is deasserted. + */ 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); + AD3552R_REG_ADDR_TRANSFER_REGISTER, + AD3552R_MASK_STREAM_LENGTH_KEEP_VALUE, + AD3552R_MASK_STREAM_LENGTH_KEEP_VALUE, 1); if (ret) - goto exit_err_ddr; + goto exit_err_streaming; + + ret =3D st->data->bus_reg_write(st->back, + AD3552R_REG_ADDR_STREAM_MODE, + loop_len, 1); + if (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: - ad3552r_qspi_update_reg_bits(st, AD3552R_REG_ADDR_INTERFACE_CONFIG_B, - AD3552R_MASK_SINGLE_INST, - AD3552R_MASK_SINGLE_INST, 1); +exit_err_ddr_mode_target: + /* + * 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; + st->data->bus_reg_write(st->back, AD3552R_REG_ADDR_INTERFACE_CONFIG_D, + st->config_d, 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); =20 return ret; } @@ -198,11 +326,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 @@ -210,6 +349,17 @@ static int ad3552r_hs_buffer_predisable(struct iio_dev= *indio_dev) if (ret) return ret; =20 + /* + * 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); + if (ret) + return ret; + /* Back to single instruction mode, disabling loop. */ ret =3D ad3552r_qspi_update_reg_bits(st, AD3552R_REG_ADDR_INTERFACE_CONFIG_B, @@ -324,6 +474,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; @@ -339,15 +490,23 @@ static int ad3552r_hs_setup(struct ad3552r_hs_state *= st) if (ret) return ret; =20 - ret =3D st->data->bus_reg_read(st->back, AD3552R_REG_ADDR_PRODUCT_ID_L, - &val, 1); + /* + * Caching config_d, needed to restore it after streaming, + * and also, to detect possible DDR read, that's not allowed. + */ + ret =3D st->data->bus_reg_read(st->back, + AD3552R_REG_ADDR_INTERFACE_CONFIG_D, + &st->config_d, 1); + if (ret) + return ret; + + ret =3D ad3552r_hs_reg_read(st, AD3552R_REG_ADDR_PRODUCT_ID_L, &val, 1); if (ret) return ret; =20 id =3D val; =20 - ret =3D st->data->bus_reg_read(st->back, AD3552R_REG_ADDR_PRODUCT_ID_H, - &val, 1); + ret =3D ad3552r_hs_reg_read(st, AD3552R_REG_ADDR_PRODUCT_ID_H, &val, 1); if (ret) return ret; =20 @@ -357,6 +516,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_dbg(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); @@ -369,14 +530,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; @@ -400,10 +553,12 @@ static int ad3552r_hs_setup(struct ad3552r_hs_state *= st) =20 ret =3D ad3552r_get_drive_strength(st->dev, &val); if (!ret) { - ret =3D ad3552r_qspi_update_reg_bits(st, + st->config_d |=3D + FIELD_PREP(AD3552R_MASK_SDO_DRIVE_STRENGTH, val); + + ret =3D st->data->bus_reg_write(st->back, AD3552R_REG_ADDR_INTERFACE_CONFIG_D, - AD3552R_MASK_SDO_DRIVE_STRENGTH, - val, 1); + st->config_d, 1); if (ret) return ret; } @@ -533,6 +688,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 3dc8d1d9c0f9..768fa264d39e 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 struct ad3552r_model_data ad3541r_model_data; @@ -153,6 +155,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 Tue Dec 16 05:43:01 2025 Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B0E1D1EBFE8 for ; Tue, 14 Jan 2025 15:31:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736868719; cv=none; b=Nvc4r5f+H+cbnpa7NHHQ/2SYgqyIRkmwKY7TMxiii+KKKKNSIDXM3kx1bcx88HvG/amNEXue3TtZmwne4Gk6B59PSE4ujj0B/nhTFesWZm2yOgPOQN3rG7qHvW6PzlFWxOxDD818fAhFE2C69/BjqIUdoXcPaxGe8zbgmhVeMp0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736868719; c=relaxed/simple; bh=qYyzsrOrzx5St4FThuHvNxAMEp85//w2zLTC8Y3IIIY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ffZ31a1fg1/GbCk4IcL6yOhmcR1H4aCxsPbZPNDb4P5mtpf2DniDc1Cj3SZEtxnKrju2C9hhJDk/nyJh3G/YVEsHHzb0BLFSQl7UyjqxCEgOSCac7rInpB2tquSZ3QwXUmFjQddafnJtj0x6q/5nRn0cxqyZTIfIBcET3pu+noQ= 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=BiL9ZafD; arc=none smtp.client-ip=209.85.128.46 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="BiL9ZafD" Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-4361e89b6daso40433465e9.3 for ; Tue, 14 Jan 2025 07:31:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1736868716; x=1737473516; 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=ylCBASlMPJkZHv6GhjEiCkHB/0+Vz29gsqJdZKd5MdM=; b=BiL9ZafD5bf+6j7JrIAiCjJcNrdDSrm0Xul3MKobnYOc6qu2HsAkTQWcFHfIa/Q0Nz LDLxLRlh4p3hrwU8FOm+u/EZfH1ZGKnlFq2yTK+dW7tXpK8B3b/QUpEKyWUJMIoI10F1 sYWcG3F3g+sUCEhLKMO4QC/Hg9IJv8A7WJt1V5gjzLElnT6LKTW9a/mf1AL6sXh0qoHx GxaCoepbuiVyz+w7/p/fzD6A8mv14GjwAVm6qCG8dLzVlvuDgMexFinU2Cfc/uWiHktD Ho7/K+RId2mZ1v+zZaw/ctOHhKkw7L1zZzQZ5XaeiiE3pCebdfI2viyZaFdCNOks2SKT kU9w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736868716; x=1737473516; 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=ylCBASlMPJkZHv6GhjEiCkHB/0+Vz29gsqJdZKd5MdM=; b=s05fGPKAghQ7NiLfd7ohaF9gIWEt8O15OljfQ/wdqe3ZHp3CdOt8TeT+l0pkP698IR MmIdzP5iVdQBYEeyZCMXjXhgkmEf2EvcCfCM0lCPPpYFEtHJLJ77drO6dnrbJOj2PT5f NvqvMHogJJSGS6sd2aw9GpcCxRABZXVQS/jtkyzuOUDWB83hPmAQMcshahfqTPW/tybx qvdK6+5ji/90dswOhhtp8w+HAje/WSxKYMXQX/Oh+PdDdZG2uNmG4Kf7EKoIwlQJEamp YWxHA+NIcER5ljNUqK0cuZEipVdBg77X6u31pEtbHxtsroLKU72NqNPm/KqMhi5WpBLY dP7g== X-Forwarded-Encrypted: i=1; AJvYcCWQGwI7qnMA8EQA7c6JHR/rVYUeOnYzttI+yDL+/qyY9BdTZBE9YiQBsxbaO68merHW6tR8qNEGzkHnIww=@vger.kernel.org X-Gm-Message-State: AOJu0YxrW2gbTsAxKk3b9IrHzyR6nxjl5Yaj2C1eiw5AERsO+L8avCcZ WY/F3lNwSjdSWSkW+53eS49n6Dxe8uEnZLFWU1qCGtPdSEG62xDHoSDnzlGRjb0= X-Gm-Gg: ASbGncsiBOJ1ri7GGxkpqzlFvymnSQoQqcPmQrWue8iW3BWjoxulwITvdWsiOm6kPz8 Id2ABhzOwEzM0ts8XAVMqpD3GFfBNMTsFKQOToEIiMIdlaW9KdA2wt9BRPTwm3P4lNXKIRDBo/5 gUuyCAICLUyvLEj2phUm+JEAFzqAs2Wwc2uMAC59esaz8voBv8nLYEWxhhOFAAn0swpn7Nw/8No OwDtYE+67aZSy2z9vpQmAmQRPemOoEIihPtY5lpYj5bPQDhuV8HQE1JhxY= X-Google-Smtp-Source: AGHT+IHGq0wfH03pxXCXZ0hcHDHI669Hj0ZbP8/2Zn0o0ALPUihu4LyMgScyCO3Pg4kIgBtCvARAqw== X-Received: by 2002:a05:6000:1787:b0:38a:41b6:d685 with SMTP id ffacd0b85a97d-38a872f6f17mr23199035f8f.3.1736868715927; Tue, 14 Jan 2025 07:31:55 -0800 (PST) Received: from [127.0.1.1] ([87.13.70.66]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38a8e4b8116sm15049907f8f.79.2025.01.14.07.31.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Jan 2025 07:31:55 -0800 (PST) From: Angelo Dureghello X-Google-Original-From: Angelo Dureghello Date: Tue, 14 Jan 2025 16:30:18 +0100 Subject: [PATCH v4 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: <20250114-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v4-9-979402e33545@baylibre.com> References: <20250114-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v4-0-979402e33545@baylibre.com> In-Reply-To: <20250114-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v4-0-979402e33545@baylibre.com> To: Lars-Peter Clausen , Michael Hennerich , Jonathan Cameron , David Lechner , Nuno Sa 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. Reviewed-by: David Lechner Signed-off-by: Angelo Dureghello --- drivers/iio/dac/ad3552r-hs.c | 60 +++++++++++++++++++++-------------------= ---- 1 file changed, 29 insertions(+), 31 deletions(-) diff --git a/drivers/iio/dac/ad3552r-hs.c b/drivers/iio/dac/ad3552r-hs.c index e8e309046f11..c1dae58c1975 100644 --- a/drivers/iio/dac/ad3552r-hs.c +++ b/drivers/iio/dac/ad3552r-hs.c @@ -65,9 +65,8 @@ static int ad3552r_hs_reg_read(struct ad3552r_hs_state *s= t, u32 reg, u32 *val, return st->data->bus_reg_read(st->back, reg, val, xfer_size); } =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_hs_update_reg_bits(struct ad3552r_hs_state *st, u32 reg, + u32 mask, u32 val, size_t xfer_size) { u32 rval; int ret; @@ -215,9 +214,9 @@ 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_hs_update_reg_bits(st, + AD3552R_REG_ADDR_INTERFACE_CONFIG_B, + AD3552R_MASK_SINGLE_INST, 0, 1); if (ret) return ret; =20 @@ -226,10 +225,10 @@ static int ad3552r_hs_buffer_postenable(struct iio_de= v *indio_dev) * 0x2c or 0x2a, in descending loop (2 or 4 bytes), keeping loop len * value so that it's not cleared hereafter when _CS is deasserted. */ - 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_hs_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 @@ -252,7 +251,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" function. + * anymore, including calling "ad3552r_hs_update_reg_bits" function. */ =20 /* Set target to best high speed mode (D or QSPI). */ @@ -353,18 +352,17 @@ static int ad3552r_hs_buffer_predisable(struct iio_de= v *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_hs_update_reg_bits(st, AD3552R_REG_ADDR_TRANSFER_REGISTER, + AD3552R_MASK_MULTI_IO_MODE, + AD3552R_SPI, 1); 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); + ret =3D ad3552r_hs_update_reg_bits(st, + AD3552R_REG_ADDR_INTERFACE_CONFIG_B, + AD3552R_MASK_SINGLE_INST, + AD3552R_MASK_SINGLE_INST, 1); if (ret) return ret; =20 @@ -381,10 +379,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_hs_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) @@ -400,10 +398,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_hs_update_reg_bits(st, + AD3552R_REG_ADDR_INTERFACE_CONFIG_A, + AD3552R_MASK_SOFTWARE_RESET, + AD3552R_MASK_SOFTWARE_RESET, 1); if (ret) return ret; } @@ -544,10 +542,10 @@ 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_hs_update_reg_bits(st, + AD3552R_REG_ADDR_SH_REFERENCE_CONFIG, + AD3552R_MASK_REFERENCE_VOLTAGE_SEL, + val, 1); if (ret) return ret; =20 --=20 2.47.0