From nobody Sun Feb 8 22:40:06 2026 Received: from mail-ej1-f44.google.com (mail-ej1-f44.google.com [209.85.218.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 E36951B81DC for ; Mon, 31 Mar 2025 19:04:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743447847; cv=none; b=GxIw+y+KNV0znDbmPT6KogXuEqLtEQEpJLwQxVOXsS+aRKoVHrcNrxc+JkeIi0ltEk+WcYB02e3Unwo67Ars/dZuDUEN6ybkGXS3upnYn3Qdr47A/aD7dZuEfyTwPcElBkgk4XZvReGwSH5rCu2gO2ZtqlhXN5it0mH5wdBnOtA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743447847; c=relaxed/simple; bh=pCpjDjmBZOzK40k+vljZr2BliJA0xp91AOXjRWTRx0Y=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=tjZ9pdqWEBtAmkzhqrAQPfVT3zHYcOEli8f/xsPywGs1fJJFmL7HjRkzmpaLAh9J0kLuq8zOS24TQ4O26LXXIeytrKyu+A2UfMLE2UECoq9fvPJJg8cWS9fBwxvxti/DJ0YeasABxvGySK2JpZqiBemjKtJQJM3MQdbj93URKdM= 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=16yTkjXF; arc=none smtp.client-ip=209.85.218.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="16yTkjXF" Received: by mail-ej1-f44.google.com with SMTP id a640c23a62f3a-ac2a089fbbdso856489366b.1 for ; Mon, 31 Mar 2025 12:04:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1743447843; x=1744052643; 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=fOf9H7BQRbk9vcOFRZPDyvrAxaPKr+t8x7+lT2OYigQ=; b=16yTkjXFtBIglHFhdwmF0nFiytBdEPI/qZmziZNrDzLV3W7VYMuVe4NRLU+lQIqmyr CNJIAi3i2TXPlijRe2JUznrJvIUAz8rm4Ryeg8ZOPhVsnldQRKcoKw0WN/iGnolcFMrL 9kn1zkS1hqHrAZaWOFeVzf5S/nvmoXxPQAu+cDbah41tJxvXonwzTFX5rshoi9YSaotO vYc5eAHBTtSWMTOJ6okijT/cT1Mynu+VuovodWMYzKFvJWoraDA5R3L5Yl11X0c2OWZ3 P3DwvGjlnJl8qfN1kiYdL4fH13hxGk3eKfJXx+mj7TdaRF8mqjQaMmhABfPOQ/hDhLyE t4kQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743447843; x=1744052643; 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=fOf9H7BQRbk9vcOFRZPDyvrAxaPKr+t8x7+lT2OYigQ=; b=CPyD3F1R8ARFxhaPY17lrvIBRJoF6tG8sbJZ0RojjBqNO0sdV6M9glKpts4RwVVaoy HgWAoYJ6i+eYjah0jXqUstnUtFZUJDVBwWQtE8NzFwOCD1A9UhrQ/sqgai2A4Qijf0DG /I+N0U/IVOfoXY+G+sK9BlFuEEzcGnP5buZIOc6MDtC90sQZvKHEQZcpEpZzfxve3we/ 1y/aLkwH9/cPv6AwPPPgxmqSsIzWK09hEvg8HEFMEBlsPvIKDgTxOYv4S11YmwwNdaom oC1qbz+SA17N/+wBrrqarQDbEdsmPOfo4uQOKs+SEHoo3vB8xm1/cAonWpM1j7oy7fNQ EJZw== X-Forwarded-Encrypted: i=1; AJvYcCVzPMFzUbqlTOKkNGac28/Kp2i8Okdpgxtt4ttFOPh/CAF/Hb5PPN81yOOt8vCv+sm2CYGMlvWWV/blK14=@vger.kernel.org X-Gm-Message-State: AOJu0YzF9cNeZJv1S70hTL41832RzIFkQvOTvP9IsOVMCVEvNvBvc+Tx GoSlnMs8yZl1bzaAO3DhhGzkAcZ1DzlOaCzE8HWcKFwZb0ZR9KaPAU4+Gtt9dHY= X-Gm-Gg: ASbGncu2hXnUitVZ3beRB+li/PGGU4M8/oPz9J2bwo6fbjNMUY4eKfUdRLFq29LxXR4 WLf3nrhUkYHkhy0flltA/YqLExgiahVmFiV7X5WybmEnjnFDpWYMgS1NsXBiBrDRscXEWV1iYUU O7b0spessIaqSbrNkhc+HFPtbnkwt15mwv8ypUpSbpRSh6SILMm868rB2ad6f/Pr59Zo8f74z+V B8v7ja7UAWC0AIu4ok+NH1M/AOBEhu6C/OR0AXmCwIUy5Q05O96qwG35ilW4dxQlXVt/g10BSDT w5KGxCEmZBLZOc7+oXtPkJzfvAwii0Uei2PnMpFyhcpOJ23fqLM6BDBnQpeG///wXY6HJUj9y8s jqTrs7u2DC3CmwarRZe/UYQbZFlrS X-Google-Smtp-Source: AGHT+IEyejNkLxFRZGWHarGHeID4fM5LIi+a+hGbdyDsdvvbQ4mg/BhGzUVbVkgba/o0+UKlP4fIgg== X-Received: by 2002:a17:907:6e90:b0:ac3:d1c:89ce with SMTP id a640c23a62f3a-ac7367700fbmr867755566b.9.1743447843171; Mon, 31 Mar 2025 12:04:03 -0700 (PDT) Received: from [192.168.0.2] (host-80-116-51-172.pool80116.interbusiness.it. [80.116.51.172]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ac71961f9cfsm652288566b.122.2025.03.31.12.04.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Mar 2025 12:04:02 -0700 (PDT) From: Angelo Dureghello X-Google-Original-From: Angelo Dureghello Date: Mon, 31 Mar 2025 21:02:44 +0200 Subject: [PATCH v2 1/5] iio: dac: adi-axi-dac: add cntrl chan check 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: <20250331-wip-bl-ad3552r-fixes-v2-1-cdedb430497e@baylibre.com> References: <20250331-wip-bl-ad3552r-fixes-v2-0-cdedb430497e@baylibre.com> In-Reply-To: <20250331-wip-bl-ad3552r-fixes-v2-0-cdedb430497e@baylibre.com> To: =?utf-8?q?Nuno_S=C3=A1?= , Jonathan Cameron , Lars-Peter Clausen , Jonathan Corbet , Olivier Moysan , Michael Hennerich Cc: linux-iio@vger.kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, Angelo Dureghello X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3048; i=adureghello@baylibre.com; h=from:subject:message-id; bh=LEhJ7d3UZmGONv0UbtL1XfLYWtYo9rliWEIHzqon6QA=; b=owGbwMvMwCXGf3bn1e/btlsznlZLYkh/9ezWxmP3Xs18uCfJ+dP2ny03pzVc9jx0p/SEdeQRC 0/7lsc/jDpKWRjEuBhkxRRZ6hIjTEJvh0opL2CcDTOHlQlkCAMXpwBM5EAMw/+SwJ++Vilf9Pz3 Pbu5yujl3Ayd/WxlWx7OEHJwWL3Vp5ORkWHG6onLHm4xj4kzmr1sA18at0T5kdAaPV+hdWsP3fm wupYbAA== X-Developer-Key: i=adureghello@baylibre.com; a=openpgp; fpr=703CDFAD8B573EB00850E38366D1CB9419AF3953 From: Angelo Dureghello Add validity check on CNTRL_X channels (valid as 0 to 15). Signed-off-by: Angelo Dureghello --- drivers/iio/dac/adi-axi-dac.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/drivers/iio/dac/adi-axi-dac.c b/drivers/iio/dac/adi-axi-dac.c index 892d770aec69c4259de777058801c9ab33c79923..f86acb98b0cffb09bf4d4626f93= 2bf1edc911e2b 100644 --- a/drivers/iio/dac/adi-axi-dac.c +++ b/drivers/iio/dac/adi-axi-dac.c @@ -84,6 +84,7 @@ #define AXI_DAC_CHAN_CNTRL_7_REG(c) (0x0418 + (c) * 0x40) #define AXI_DAC_CHAN_CNTRL_7_DATA_SEL GENMASK(3, 0) =20 +#define AXI_DAC_CHAN_CNTRL_MAX 15 #define AXI_DAC_RD_ADDR(x) (BIT(7) | (x)) =20 /* 360 degrees in rad */ @@ -186,6 +187,9 @@ static int __axi_dac_frequency_get(struct axi_dac_state= *st, unsigned int chan, u32 reg, raw; int ret; =20 + if (chan > AXI_DAC_CHAN_CNTRL_MAX) + return -EINVAL; + if (!st->dac_clk) { dev_err(st->dev, "Sampling rate is 0...\n"); return -EINVAL; @@ -230,6 +234,9 @@ static int axi_dac_scale_get(struct axi_dac_state *st, int ret, vals[2]; u32 reg, raw; =20 + if (chan->channel > AXI_DAC_CHAN_CNTRL_MAX) + return -EINVAL; + if (tone_2) reg =3D AXI_DAC_CHAN_CNTRL_3_REG(chan->channel); else @@ -264,6 +271,9 @@ static int axi_dac_phase_get(struct axi_dac_state *st, u32 reg, raw, phase; int ret, vals[2]; =20 + if (chan->channel > AXI_DAC_CHAN_CNTRL_MAX) + return -EINVAL; + if (tone_2) reg =3D AXI_DAC_CHAN_CNTRL_4_REG(chan->channel); else @@ -291,6 +301,9 @@ static int __axi_dac_frequency_set(struct axi_dac_state= *st, unsigned int chan, u16 raw; int ret; =20 + if (chan > AXI_DAC_CHAN_CNTRL_MAX) + return -EINVAL; + if (!sample_rate || freq > sample_rate / 2) { dev_err(st->dev, "Invalid frequency(%u) dac_clk(%llu)\n", freq, sample_rate); @@ -342,6 +355,9 @@ static int axi_dac_scale_set(struct axi_dac_state *st, u32 raw =3D 0, reg; int ret; =20 + if (chan->channel > AXI_DAC_CHAN_CNTRL_MAX) + return -EINVAL; + ret =3D iio_str_to_fixpoint(buf, 100000, &integer, &frac); if (ret) return ret; @@ -385,6 +401,9 @@ static int axi_dac_phase_set(struct axi_dac_state *st, u32 raw, reg; int ret; =20 + if (chan->channel > AXI_DAC_CHAN_CNTRL_MAX) + return -EINVAL; + ret =3D iio_str_to_fixpoint(buf, 100000, &integer, &frac); if (ret) return ret; @@ -493,6 +512,9 @@ static int axi_dac_data_source_set(struct iio_backend *= back, unsigned int chan, { struct axi_dac_state *st =3D iio_backend_get_priv(back); =20 + if (chan > AXI_DAC_CHAN_CNTRL_MAX) + return -EINVAL; + switch (data) { case IIO_BACKEND_INTERNAL_CONTINUOUS_WAVE: return regmap_update_bits(st->regmap, @@ -521,6 +543,8 @@ static int axi_dac_set_sample_rate(struct iio_backend *= back, unsigned int chan, unsigned int freq; int ret, tone; =20 + if (chan > AXI_DAC_CHAN_CNTRL_MAX) + return -EINVAL; if (!sample_rate) return -EINVAL; if (st->reg_config & AXI_DAC_CONFIG_DDS_DISABLE) --=20 2.49.0 From nobody Sun Feb 8 22:40:06 2026 Received: from mail-ej1-f44.google.com (mail-ej1-f44.google.com [209.85.218.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 3C03A218EBE for ; Mon, 31 Mar 2025 19:04:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743447848; cv=none; b=Mf5QTG0TrKOxv2/g0zq3DonHG5YxWyq9uxvwUMdU0bJmL2NMqcXUkM7PekuWs0cgIm8dyqxZFCzv+ozUL4iRGUxrwdtHps/hgZ3j3RuU+7XAJhQwCTl44wF+ZoH4bINJrcwEIgpxxwbUq5v0LxXS2GcKQUtw7aR+OWrYkN3njeA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743447848; c=relaxed/simple; bh=F2Qod7NABbhubiuu+bmx+zE/fhm/Yo5sMggxFose+iE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=m1Ka88wXzFC6E8VhyosacXN0ct1lY2ykC0P9O4FrNJ5WE4MEwNuTWniuyqvlDVwACOPHktptRrwT9AwXzvRg+ve59kM9j5mnDRTxLNiRnHb3aG0qFljijf3TFNREqf/H9KOEcmu1YgKF1yzNQt2DLbyeQSs4svTX31ybrSfe8no= 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=botxjJON; arc=none smtp.client-ip=209.85.218.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="botxjJON" Received: by mail-ej1-f44.google.com with SMTP id a640c23a62f3a-ac3fcf5ab0dso766376966b.3 for ; Mon, 31 Mar 2025 12:04:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1743447844; x=1744052644; 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=ShsE3ZcbHwYaWyOB5JwD08uVlCnOZ4Y4zX0gXgP+EjU=; b=botxjJONMq1XNSP1m+4d0W1/82YmAgXdqwQfI1o2IjiTJnnHSsODdL3lUuw0D82TKi Wqo5qHFN4661B/tsr2Ov+ZKS+2liC5Nc78bcJeI1QNRN5gl3+FGAfBU16iYknsZivQyZ i/nHL5OGr8fUA8pOEgbvNiOAVtyN/CVEgK7V2PAzNG44T/9UuxPUTdidom2AMDSC0RWS wltDwlg0kJquszJ8lNfqb/f7LJZOpMObuOngW+TX9tb/hmTv6RK9ZoUi3nNkVWsL2k8O HJmcSI3YjAKVANaF8u6Lvx7NNE1U7SJOBqTzGc4MotJYl4Egn9Wg4WXyDtLEXfmNM0BZ Y4Qw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743447844; x=1744052644; 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=ShsE3ZcbHwYaWyOB5JwD08uVlCnOZ4Y4zX0gXgP+EjU=; b=bVeOvyKGbhtYfR2QxU32dNJVe/DB03TLPFoSiKcXkE1rw02Eem+HGCosGgtKgUpleo n066DQ84hQtDD0+VXUgHkNJvW7qY0MFrDagwT+Yvt/LyjmBSGbf1HthByXOZuIJNkOZ0 aG61X5GGrdlyeRq7RajgTnzIFaJXNSTaHHbdV20LdrM0Dmv3t4fFV63qx0etQiFFGFsZ ZfdUbW9lZsPjL3DcQ5HJ0K2Q/Rhbs82kEOzPmtJva4wDe+h7eq/P+lOq06NWe/zHOHgp OX/0KNO+fjvfsprCJUQaQmR25zl+T4b1dk8iJZtPX0liC/jZQnzd4ygdnhbLcD+XtAQh GIdg== X-Forwarded-Encrypted: i=1; AJvYcCUXOqhAKWTF4bvDWkD/qVCTw+OodVKfpacD3xQ9d2Ly8NKIQa+jcNz9NMpiiBhfqL4Ad/i4jnHPMB9sa2U=@vger.kernel.org X-Gm-Message-State: AOJu0YxAzlgprjZbYzPW9+e5XytifGTN5g+QYVCtXTxpSNUObpb/jjrX mkNeVxdtNNhV0wCpt6NMt0mhzxoNgelOhChLBXs/Tzkb/jAh+m3cyr6i2cVfDPw= X-Gm-Gg: ASbGnctXKcUiQDnH1WLOlQBfda3egd+mbao/GsaK60owtkx5E7Uz9AT0xL8Unmizbi7 vDC85a4Fntsg9RUovZ6HL9Qf1Mweil4Vk/37jBNdBuBA4JpzpQ5KTY6DA2VZVC0xqAOx5n99K2W 92hHn3SFTPV6pWjtnIY9QKgNWh0Xaw3R9OCNDCi/XwdBMGk/coDEudYyMZZmEwJAV142jUMtDmx +iD7xS1G14bQpcuEgHF5+lLPsmQqZo7N7ynP8UICznt2BBZY6YSu9+9yEz1C1vHT2Tf1yj0al2O 9t3jg0rNv1Pz85NKt4J4XORq6eQFX+1fo0GEToCtLjijk/zBnSCgYFFwMytANsvNaxoXosJTZnl eMeigXdp6x3UcKoy2Q97cAnMcVEBO X-Google-Smtp-Source: AGHT+IGuQItt9kOHohfEdRqiYQ1qj4daUOg0M2kttNOL8REmmUJaouq4B1SoHf687sYLgKm6ciKoHQ== X-Received: by 2002:a17:907:9708:b0:ac3:ed56:86dc with SMTP id a640c23a62f3a-ac738a4b283mr953684366b.31.1743447844447; Mon, 31 Mar 2025 12:04:04 -0700 (PDT) Received: from [192.168.0.2] (host-80-116-51-172.pool80116.interbusiness.it. [80.116.51.172]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ac71961f9cfsm652288566b.122.2025.03.31.12.04.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Mar 2025 12:04:03 -0700 (PDT) From: Angelo Dureghello X-Google-Original-From: Angelo Dureghello Date: Mon, 31 Mar 2025 21:02:45 +0200 Subject: [PATCH v2 2/5] docs: iio: add documentation for ad3552r driver 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: <20250331-wip-bl-ad3552r-fixes-v2-2-cdedb430497e@baylibre.com> References: <20250331-wip-bl-ad3552r-fixes-v2-0-cdedb430497e@baylibre.com> In-Reply-To: <20250331-wip-bl-ad3552r-fixes-v2-0-cdedb430497e@baylibre.com> To: =?utf-8?q?Nuno_S=C3=A1?= , Jonathan Cameron , Lars-Peter Clausen , Jonathan Corbet , Olivier Moysan , Michael Hennerich Cc: linux-iio@vger.kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, Angelo Dureghello X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4191; i=adureghello@baylibre.com; h=from:subject:message-id; bh=K6IzTR+F1J2B1DTGHtf/OPY+ArUlb20kadSjMscdtUE=; b=owGbwMvMwCXGf3bn1e/btlsznlZLYkh/9exWaIWaQl1Sgvvim+/ND1wUOxlvZZSyOOmFicU1t SQzA8nijlIWBjEuBlkxRZa6xAiT0NuhUsoLGGfDzGFlAhnCwMUpABNxOMnIcOvf041rRYquJ2Va 2QpoPv3Ata/+n+W65Y7zdy7bEVgeWMbwT0+06WiWnH9pVMvMLcsmGfuk2S3fryiV9rR/jmePNr8 UDwA= X-Developer-Key: i=adureghello@baylibre.com; a=openpgp; fpr=703CDFAD8B573EB00850E38366D1CB9419AF3953 From: Angelo Dureghello Add documentation for ad3552r driver, needed to describe the high-speed driver debugfs attributes and shows how the user may use them. Signed-off-by: Angelo Dureghello --- Documentation/iio/ad3552r.rst | 72 +++++++++++++++++++++++++++++++++++++++= ++++ Documentation/iio/index.rst | 1 + MAINTAINERS | 1 + 3 files changed, 74 insertions(+) diff --git a/Documentation/iio/ad3552r.rst b/Documentation/iio/ad3552r.rst new file mode 100644 index 0000000000000000000000000000000000000000..2af24cfe886f1f4c1b86ac679fd= 19b83635b6771 --- /dev/null +++ b/Documentation/iio/ad3552r.rst @@ -0,0 +1,72 @@ +.. SPDX-License-Identifier: GPL-2.0-only + +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D +AD3552R driver +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + +Device driver for Analog Devices Inc. AD35XXR series of DACs. The module n= ame +is ``ad3552r``. +With the same module name, two different driver variants are available, the +``generic spi`` variant, to be used with any classic SPI controllers, and = the +``hs`` (high speed) variant, for an ADI ``axi-dac`` (IP core) based contro= ller +that allows to reach the maximum sample rate supported from the DACs, usin= g the +DMA transfer and all the SPI lines available (D/QDSPI).. +The high speed driver variant is intended to be used with the ``adi-axi-da= c`` +backend support enabled, that is enabled by default when the driver is sel= ected. + +Supported devices +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + +* `AD3541R `_ +* `AD3542R `_ +* `AD3551R `_ +* `AD3552R `_ + +Wiring connections +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + +Generic SPI +----------- +Use the classic SPI S_CLK/CS/SDO/SDI connection. + +High speed (using axi-dac backend) +---------------------------------- + +:: + + .-----------------. .-------. + | |--- D/QSPI -----| | + | DAC IP CORE |--- SPI S_CLK --| DAC | + | |--- SPI CS -----| | + | |--- LDAC -------| | + | |--- RESET ------| | + |_________________| |_______| + + +High speed features +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + +Device attributes +----------------- + +The following table shows the ad35xxr related device debug files, found in= the +specific device debug folder path ``/sys/kernel/debug/iio/iio:deviceX``. + ++----------------------+--------------------------------------------------= -----+ +| Debugfs device files | Description = | ++----------------------+--------------------------------------------------= -----+ +| data_source | The used data source, = | +| | as ``iio-buffer`` or ``backend-ramp-generator``. = | ++----------------------+--------------------------------------------------= -----+ + +Usage examples +-------------- + +. code-block:: bash + root:/sys/bus/iio/devices/iio:device0# cat data_source + iio-buffer + root:/sys/bus/iio/devices/iio:device0# echo -n backend-ramp-generator > d= ata_source + root:/sys/bus/iio/devices/iio:device0# cat data_source + backend-ramp-generator + + diff --git a/Documentation/iio/index.rst b/Documentation/iio/index.rst index bbb2edce8272e7483acca500d1a757bbcc11c1e0..2d6afc5a8ed54a90cd8d5723f0d= c5212b8593d16 100644 --- a/Documentation/iio/index.rst +++ b/Documentation/iio/index.rst @@ -19,6 +19,7 @@ Industrial I/O Kernel Drivers .. toctree:: :maxdepth: 1 =20 + ad3552r ad4000 ad4030 ad4695 diff --git a/MAINTAINERS b/MAINTAINERS index 57eaab00f6cb53df52a4799eb2c1afbbd1e77a1e..52bc56a9ee22c66b90555681c47= 57ea4399adae1 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1295,6 +1295,7 @@ L: linux-iio@vger.kernel.org S: Supported W: https://ez.analog.com/linux-software-drivers F: Documentation/devicetree/bindings/iio/dac/adi,ad3552r.yaml +F: Documentation/iio/ad3552r.rst F: drivers/iio/dac/ad3552r.c =20 ANALOG DEVICES INC AD4000 DRIVER --=20 2.49.0 From nobody Sun Feb 8 22:40:06 2026 Received: from mail-ej1-f54.google.com (mail-ej1-f54.google.com [209.85.218.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 6E1F121A436 for ; Mon, 31 Mar 2025 19:04:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743447849; cv=none; b=AS4+1Z+rRhBrB8DHfvt7zgyPqTdJo/D2MIGNy8EWEAqZCZcjjumYZBZPxVhGXH9NJeVyreXQG6SwU2Fa12Yw+oNbVTTLVN17n93DAipOmuSchpCLXe/Q4etH2mZgZJYZA/LKA8qIeUyK36BI9JYX79rL1Bcu3YW+n5Em8ei4GLQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743447849; c=relaxed/simple; bh=hWSr+N4q8jPBwyhE+M9punDDVddf1n2Qdd8iVHO9YtM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=S5B1rsk2xvAZ64sSncRhD/xDCfyQBnmimT4m6t0lkXOZXuNjdsgJnLwyE2DC/31JE2ZxfEXi0aCXVFf124iS7HV4c9fBVldQRAdZjlBCZW0//fyeD7ogrt4dhZHJLePVkNg8aZd/BX1kbnOr+R3DTW5UHNlQpif/VNFq3JLYeu4= 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=CKojFNJa; arc=none smtp.client-ip=209.85.218.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="CKojFNJa" Received: by mail-ej1-f54.google.com with SMTP id a640c23a62f3a-ac2902f7c2aso839249766b.1 for ; Mon, 31 Mar 2025 12:04:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1743447846; x=1744052646; 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=Hl8ec5RDehNYBKLIScFWmbMlzzx1NzVQIVCz8eQlZvo=; b=CKojFNJaP130OSkqWeDCSHVDuIKXI+ILrLlBLxP0esZbDiPqh4rw1OG5YH2tIFA9Sb LaMxntkcFq7CKKDjviYZwZlJzCcUfpP3M12SrYrVlJ+b5WLfLMv0zgnLDwqa0XDfzApd q6Eqgsc/I/0IE7x2uQMKRbDXTtqCVWIAaSesag3RKYJBDwdABersBbCifiO3V0/FA+jh NR5jiUqhXSlniFodC4mF5UzyENv1YJMzc+evFvxBfGUp3koI/GBqO0iber05P1SAbzso Bkb39MbquuHiD1BiYc4kplSp1FmI1Lnjkb35fUAPaaJYrKNB16HSWzZkuUn9LGfHTHuz KISw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743447846; x=1744052646; 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=Hl8ec5RDehNYBKLIScFWmbMlzzx1NzVQIVCz8eQlZvo=; b=Tibfsm205K03RbFnssQTPQNz0Ut4O8PSZ7fxFkN63gvX2f1WhHK+erhQB8j8FFpLtO UobTYMcp9RWIa6UTJItHbuc6yC/RS9BCU+D7dd76kA6PsK8LUpVXOdB6LqzGMYvfSce1 PZKDKzBBw5zD0fqlWYKrexT7fMbbTZNJxN3rR/3+5AyNLohzdxHB9/ncA7xLQyINJ926 Cj6Gxrof6NqP1f9qhwi8h4jGlEP1qSdZTTQdIe8xxqBFO/xcdJx7RF9vp2WHyrGFmuVB IvP9n/KWlis/t5Av8tsSgzFTU5Y+xZ3jlxD6J99DHIb/fY+DDZk9VOH2ifUakq9AqZAU 4iOg== X-Forwarded-Encrypted: i=1; AJvYcCVL6INmT7CjcIfMPuuyMYtY9t38hSmNHKGCOdiOdVYYFDHd+K2xS4rXP6m+Tl6FGi9FDTFoEHSYn0JJTNo=@vger.kernel.org X-Gm-Message-State: AOJu0YwJF+MrxPzm38Ik2fPgEecx6LLjL/xhb9RY71vQLbQzed5XBb9k EKZfr8tiLmT2oYn1gpxF4R9/HgVU9QRwYfSnMKbWVnrhC9ynBoi7s0PGCHppBbo= X-Gm-Gg: ASbGncsR/jVF5Y2PdgSJEavOt5mW7453EvDgml9dkn4pKnc1HfblXU5VyoX6aAg0psv eUArECVDPAMeQ8WqTrXlkAt/Cs26wXShyLqKJU5AnVsxIhxfDIYD71ikb9liY6ne05KDVS8+mRq n5+0Wv7mAKPs2xHS/2BRp3S8O0q8iQEptNfaVfsPc8XpafniC7YVvqTxz2zJ7o3EQ7P0V//joZ5 gA5D4QmHLzwvwc+9Y3hY6xir6LZ+SCC+hHh0xsGLIkaL46cB/Tgscvzhj/qpdczc2JxnIUsPWLv Psri/0T/187FES3gaP53sH6F5zmvv4t0qNTHKO5GLhZKpjrQFQdjNh9NcdnhTSuUc3yUNwjtpLW Y7rel+13UNnk8qdYHIfiy7ReWarEb X-Google-Smtp-Source: AGHT+IFUxbEQNZaiCG63rBO7ylX34l7ir7rdsprXQ4WoJTKZvi2Q3tt70y30TKZLkldis7UmrRl6Mw== X-Received: by 2002:a17:906:c40a:b0:ac7:3916:327d with SMTP id a640c23a62f3a-ac739163364mr705284866b.60.1743447845790; Mon, 31 Mar 2025 12:04:05 -0700 (PDT) Received: from [192.168.0.2] (host-80-116-51-172.pool80116.interbusiness.it. [80.116.51.172]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ac71961f9cfsm652288566b.122.2025.03.31.12.04.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Mar 2025 12:04:05 -0700 (PDT) From: Angelo Dureghello X-Google-Original-From: Angelo Dureghello Date: Mon, 31 Mar 2025 21:02:46 +0200 Subject: [PATCH v2 3/5] iio: backend: add support for data source get 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: <20250331-wip-bl-ad3552r-fixes-v2-3-cdedb430497e@baylibre.com> References: <20250331-wip-bl-ad3552r-fixes-v2-0-cdedb430497e@baylibre.com> In-Reply-To: <20250331-wip-bl-ad3552r-fixes-v2-0-cdedb430497e@baylibre.com> To: =?utf-8?q?Nuno_S=C3=A1?= , Jonathan Cameron , Lars-Peter Clausen , Jonathan Corbet , Olivier Moysan , Michael Hennerich Cc: linux-iio@vger.kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, Angelo Dureghello X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3489; i=adureghello@baylibre.com; h=from:subject:message-id; bh=/X5T/C4urb1TZY56QZlmQtSfqpUWNyuJBZpY7qU/VIg=; b=owGbwMvMwCXGf3bn1e/btlsznlZLYkh/9exWLO9NLtcUtVlM7qU17WfY1ixYwFxg52M2r2TbR 8mzMQsFO0pZGMS4GGTFFFnqEiNMQm+HSikvYJwNM4eVCWQIAxenAExkzWdGhi7zfmOtmhAbnjXH 7jG9MvHIzUzuOSTifXPbiVy+7ye35jH84ThVW5VqeMwoRj7w7dtJZ//e8q3KMfVaHpi26/YOjtk qTAA= X-Developer-Key: i=adureghello@baylibre.com; a=openpgp; fpr=703CDFAD8B573EB00850E38366D1CB9419AF3953 From: Angelo Dureghello Add backend support for getting the data source used. The ad3552r HDL implements an internal ramp generator, so adding the getter to allow data source get/set by debugfs. Signed-off-by: Angelo Dureghello --- drivers/iio/industrialio-backend.c | 28 ++++++++++++++++++++++++++++ include/linux/iio/backend.h | 5 +++++ 2 files changed, 33 insertions(+) diff --git a/drivers/iio/industrialio-backend.c b/drivers/iio/industrialio-= backend.c index a43c8d1bb3d0f4dda4277cac94b0ea9232c071e4..c1eb9ef9db08aec8437d0d00cf7= 7914ad6611b72 100644 --- a/drivers/iio/industrialio-backend.c +++ b/drivers/iio/industrialio-backend.c @@ -380,6 +380,34 @@ int iio_backend_data_source_set(struct iio_backend *ba= ck, unsigned int chan, } EXPORT_SYMBOL_NS_GPL(iio_backend_data_source_set, "IIO_BACKEND"); =20 +/** + * iio_backend_data_source_get - Get current data source + * @back: Backend device + * @chan: Channel number + * @data: Pointer to receive the current source value + * + * A given backend may have different sources to stream/sync data. This al= lows + * to know what source is in use. + * + * RETURNS: + * 0 on success, negative error number on failure. + */ +int iio_backend_data_source_get(struct iio_backend *back, unsigned int cha= n, + enum iio_backend_data_source *data) +{ + int ret; + + ret =3D iio_backend_op_call(back, data_source_get, chan, data); + if (ret) + return ret; + + if (*data >=3D IIO_BACKEND_DATA_SOURCE_MAX) + return -EINVAL; + + return 0; +} +EXPORT_SYMBOL_NS_GPL(iio_backend_data_source_get, "IIO_BACKEND"); + /** * iio_backend_set_sampling_freq - Set channel sampling rate * @back: Backend device diff --git a/include/linux/iio/backend.h b/include/linux/iio/backend.h index e45b7dfbec35c094942a3034fc6057a7960b9772..e59d909cb65924b4872cadd4b7e= 5e894c13c189f 100644 --- a/include/linux/iio/backend.h +++ b/include/linux/iio/backend.h @@ -84,6 +84,7 @@ enum iio_backend_interface_type { * @chan_disable: Disable one channel. * @data_format_set: Configure the data format for a specific channel. * @data_source_set: Configure the data source for a specific channel. + * @data_source_get: Data source getter for a specific channel. * @set_sample_rate: Configure the sampling rate for a specific channel. * @test_pattern_set: Configure a test pattern. * @chan_status: Get the channel status. @@ -115,6 +116,8 @@ struct iio_backend_ops { const struct iio_backend_data_fmt *data); int (*data_source_set)(struct iio_backend *back, unsigned int chan, enum iio_backend_data_source data); + int (*data_source_get)(struct iio_backend *back, unsigned int chan, + enum iio_backend_data_source *data); int (*set_sample_rate)(struct iio_backend *back, unsigned int chan, u64 sample_rate_hz); int (*test_pattern_set)(struct iio_backend *back, @@ -176,6 +179,8 @@ int iio_backend_data_format_set(struct iio_backend *bac= k, unsigned int chan, const struct iio_backend_data_fmt *data); int iio_backend_data_source_set(struct iio_backend *back, unsigned int cha= n, enum iio_backend_data_source data); +int iio_backend_data_source_get(struct iio_backend *back, unsigned int cha= n, + enum iio_backend_data_source *data); int iio_backend_set_sampling_freq(struct iio_backend *back, unsigned int c= han, u64 sample_rate_hz); int iio_backend_test_pattern_set(struct iio_backend *back, --=20 2.49.0 From nobody Sun Feb 8 22:40:06 2026 Received: from mail-ej1-f41.google.com (mail-ej1-f41.google.com [209.85.218.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 E6216217647 for ; Mon, 31 Mar 2025 19:04:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743447850; cv=none; b=TxZn3I2wmqzoKMlXz1hVxLq9uWchSBFSF4bbv5F5S1MCXkwUCW5KvCUPiFkimaszwuYPgdlYaLQuRTRoRo3AknAa3w7CKTLje3yCeY4yaclIKJWAnnCBrhp0yErwjGK4c2r2UpTe58Dnm1yMlZEM6daF/0tFJr8iyEd+kDCnhMk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743447850; c=relaxed/simple; bh=OCoJU5I3KSv266Dud9GYmsHSuvkY/G/QdJ0ymA0kyLA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=a+1myc86TdQGu73MTU+Nuh1wrV4TStgCHj2XDotHDE/p494QC4GavUXmsbaNyXTZrdCyOty26DeLQLTr0f+xcXB+O2pOYKc4JqUUpo5A+HbbKaTeXIejdBMmLTyziNs0ktK2TTwYSj+TewKgjFR044j3TmbKha0wZiTx0eo89Z0= 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=w5UZosCU; arc=none smtp.client-ip=209.85.218.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="w5UZosCU" Received: by mail-ej1-f41.google.com with SMTP id a640c23a62f3a-ac3eb3fdd2eso911349766b.0 for ; Mon, 31 Mar 2025 12:04:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1743447847; x=1744052647; 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=oHYg6gWg3qo6Q8O/SnNRE8XUeJskhJduG/oZ7vBh458=; b=w5UZosCUMziBchXY+n7I+u74YZPlU/9HCaoXURepJbq7In5x808M/RXzw9gGSz19EZ l6CZ9NeICfUVX+MBi4EixP4aiNbbOgwp5dCXuLBt6kP79LTL7Z2nVpT3hlHZzoZtxiLB +9dOf7uEBWR/tBWuysQQl/ea4Q7eI3SFRv60OjvlS0LrMdXSQb1WHOgzgUiGM+SMtFJA eoKe0yG/c/ssJLQeYsOJSIoAWdaUiTDR4Aa6HNB7lZ+tA1EZcxmGcOjAQEg8pKiZvyFt /CZrNOfj1Yr/gTU+MeGG/dyfFKaLkEdichhvtSHs5PSgSf2l92ZXmFWzwqKwGSZ0Zsmo CxeQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743447847; x=1744052647; 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=oHYg6gWg3qo6Q8O/SnNRE8XUeJskhJduG/oZ7vBh458=; b=jsYij/AgR0llGM/RHEyI0TZBYEIxHPs/+NLF2L+tv30Zbc7oYW9NBuOEACU+rsPdUB hH0TDUVYmiL2tUZ2x2EFu1+qRHX84Omx+DAuV3rlrv/Ee0ZpPBl7/2SEzEw1cFu3uowF 2tVLi+S2d+rTXCWYqcJfZOK3z+QDZPWw/HLa8P3LvQJEjMWfUYvUwYc0Dk5S3BidpwkN vspxTb9XqKsooJkuSSRkN0h3XbG8yUSmzX4/hZpqvZ1RAQjxT0mursViNPEX3q5slUgR skH9cja4EsOlpi728TT0mA6Dsyd+aW1KoISP+5aLonCx5bq4+Mu1GhEBC9jRPcrNVHFT otzA== X-Forwarded-Encrypted: i=1; AJvYcCXGwCD4gofXFyd45GAqeXVkaMtPZ+5FzudFwgMlhWPyh1QFmCDO6/iBTB919B/bS9+xFlFf9Fq3i5cs/dQ=@vger.kernel.org X-Gm-Message-State: AOJu0YyQjTSFlXowL7MMu7kyUXKyJEjCxVHFFgwiDYkaDXiE1EeGbHs5 ja/eGpCbkIH0wS/C1ZtuQIpT8fK+8/f80StUruj6hb50ned5LpN1ih9nx8rCDnE= X-Gm-Gg: ASbGncsCfdlZ1RDBahROZOs/YSrzkruWbVlNGLJqGw9fS/q4PgQDZ08E2wNg/VBaHQT gxKfYeWL2G3UUDzPd0ORf1MnjxUQgHmGWR1gH4UGYPATAKHRFbtPQRTupH+DtSXQPiyTa2ypTVu tU/jroik6BCDSlgBni0vs8iIOOk44urPd+Psw478zpsza5xijlxA7ZBRNnTdm+uIpQ8G8t+e5+5 45XCT5sO2K4wcLqhR2mKoAl0DyN3L0uVe5PbkeQAn4dyUYu2BhktjYz2xuFOMdtHv7tsqHsvWR+ ajxRPDsNPoejVEQWF5o9VwyIn7j2GBTx6k0fxQ5PJsW32L1BqKV5v4zCa7GZAuKyKUDAh85r3Fr 2XKkjiScCQU3ZKpQCvlXNa05jP6F2 X-Google-Smtp-Source: AGHT+IH1ajlqE2F024lPljZdCaIQapi1TL3tf/zcfKCmohRAxM4jAC9APTecsk7fMbkihoBrWTAcOQ== X-Received: by 2002:a17:907:3f26:b0:abf:8f56:fe76 with SMTP id a640c23a62f3a-ac782bcd3b6mr32947166b.25.1743447847104; Mon, 31 Mar 2025 12:04:07 -0700 (PDT) Received: from [192.168.0.2] (host-80-116-51-172.pool80116.interbusiness.it. [80.116.51.172]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ac71961f9cfsm652288566b.122.2025.03.31.12.04.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Mar 2025 12:04:06 -0700 (PDT) From: Angelo Dureghello X-Google-Original-From: Angelo Dureghello Date: Mon, 31 Mar 2025 21:02:47 +0200 Subject: [PATCH v2 4/5] iio: dac: adi-axi-dac: add data source get 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: <20250331-wip-bl-ad3552r-fixes-v2-4-cdedb430497e@baylibre.com> References: <20250331-wip-bl-ad3552r-fixes-v2-0-cdedb430497e@baylibre.com> In-Reply-To: <20250331-wip-bl-ad3552r-fixes-v2-0-cdedb430497e@baylibre.com> To: =?utf-8?q?Nuno_S=C3=A1?= , Jonathan Cameron , Lars-Peter Clausen , Jonathan Corbet , Olivier Moysan , Michael Hennerich Cc: linux-iio@vger.kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, Angelo Dureghello X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1784; i=adureghello@baylibre.com; h=from:subject:message-id; bh=DrKX9r5j3TjlenOHNRW1uPlJC2BhLVb8vPawrBK+mKo=; b=owGbwMvMwCXGf3bn1e/btlsznlZLYkh/9ezWRN8TLR++uPmLB+cUv+Na/5jn4YOdP5qZXbI1p XlS1ree6ShlYRDjYpAVU2SpS4wwCb0dKqW8gHE2zBxWJpAhDFycAjCRy6wMfzgSXGZn2flX37OU cPrzc2JkpoFfH7+YpB7nAuUy5UBjFob/aQZ9G9Ubowx3Zz10Cvv17tD8hY2nY+dv/p9646G/wF4 tXgA= X-Developer-Key: i=adureghello@baylibre.com; a=openpgp; fpr=703CDFAD8B573EB00850E38366D1CB9419AF3953 From: Angelo Dureghello Add data source getter. Signed-off-by: Angelo Dureghello --- drivers/iio/dac/adi-axi-dac.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/drivers/iio/dac/adi-axi-dac.c b/drivers/iio/dac/adi-axi-dac.c index f86acb98b0cffb09bf4d4626f932bf1edc911e2b..8ed5ad1fa24cef649056bc5f4ca= 80abbf28b9323 100644 --- a/drivers/iio/dac/adi-axi-dac.c +++ b/drivers/iio/dac/adi-axi-dac.c @@ -536,6 +536,35 @@ static int axi_dac_data_source_set(struct iio_backend = *back, unsigned int chan, } } =20 +static int axi_dac_data_source_get(struct iio_backend *back, unsigned int = chan, + enum iio_backend_data_source *data) +{ + struct axi_dac_state *st =3D iio_backend_get_priv(back); + int ret; + u32 val; + + if (chan > AXI_DAC_CHAN_CNTRL_MAX) + return -EINVAL; + + ret =3D regmap_read(st->regmap, AXI_DAC_CHAN_CNTRL_7_REG(chan), &val); + if (ret) + return ret; + + switch (val) { + case AXI_DAC_DATA_INTERNAL_TONE: + *data =3D IIO_BACKEND_INTERNAL_CONTINUOUS_WAVE; + return 0; + case AXI_DAC_DATA_DMA: + *data =3D IIO_BACKEND_EXTERNAL; + return 0; + case AXI_DAC_DATA_INTERNAL_RAMP_16BIT: + *data =3D IIO_BACKEND_INTERNAL_RAMP_16BIT; + return 0; + default: + return -EIO; + } +} + static int axi_dac_set_sample_rate(struct iio_backend *back, unsigned int = chan, u64 sample_rate) { @@ -818,6 +847,7 @@ static const struct iio_backend_ops axi_ad3552r_ops =3D= { .request_buffer =3D axi_dac_request_buffer, .free_buffer =3D axi_dac_free_buffer, .data_source_set =3D axi_dac_data_source_set, + .data_source_get =3D axi_dac_data_source_get, .ddr_enable =3D axi_dac_ddr_enable, .ddr_disable =3D axi_dac_ddr_disable, .data_stream_enable =3D axi_dac_data_stream_enable, --=20 2.49.0 From nobody Sun Feb 8 22:40:06 2026 Received: from mail-ej1-f44.google.com (mail-ej1-f44.google.com [209.85.218.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 39C9321C189 for ; Mon, 31 Mar 2025 19:04:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743447852; cv=none; b=LuwBKW6i1Gqy84bNLU2eVOpbFagum1/6kIu5spsMC2gSZTdQ0McrDZ46YpXKF0e/cuLVI/HavbYoJebq2n4ERUEUipKl5/6Otw9HcB4mTY6WR/7LkPiPHszj0kOHPlZcdQJCwKp32beWx3cbqXhzVW7r0MazHMkZ3I1HMoSq7Uo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743447852; c=relaxed/simple; bh=HhntccDJjAfudcGqflMX5mA7KN1ruQeqrt4gyclxTbE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=pMgLuxmYh0CU0nvVm6/B9S74Wn0MKLJ269svXF6vw+zd408odhQgskCpHSMBDxpP2QXQRYQYMo1z5nYrnGDsClwlYSydpZk0/Oe7sQZz3TfbSu6ejP+wSPGEQgHwjWJYzFMQJbW7jhOoQu59MMzdVFRUYjggzWa3ufGsfD4I5cU= 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=li8daSgm; arc=none smtp.client-ip=209.85.218.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="li8daSgm" Received: by mail-ej1-f44.google.com with SMTP id a640c23a62f3a-abf3d64849dso738045366b.3 for ; Mon, 31 Mar 2025 12:04:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1743447848; x=1744052648; 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=oydnnGWKEEF+B555rBtJ+JTba4AdRTKZvDkfqDfc4Cc=; b=li8daSgmU4S6LHRoNVdt2gneLCbU4oB3KyXFPJzihPOzQBt1Aq3ua6eb8cOppQ1Yyf 0Jb6sohYI6Z6Jak9K1dxrLw6nW4yZQuW8k6mbYaNmhX0uHN3W1QKTiMnc+h4zCL3SJJ5 ASIGk6xLAUal7G5rmE5rP9Zs3SKvYDP6vZKRhi18VKoTMh/FFH9LbdQtQzvBuFdxaV87 cN5n5Gw0Bx2NnVE1ZAqWqbrJBjGpIwZc54fWWQ8w2H9h0zyWW5ROaiJf37JcLTpP3Hab oQv8xwAe+lZPj+QV05czE7Rag9S7U0z0cuzWrIqn4105gFxIsxvBr5VN77CxhToHq5FG fbNw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743447848; x=1744052648; 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=oydnnGWKEEF+B555rBtJ+JTba4AdRTKZvDkfqDfc4Cc=; b=XQuka5FDuKm4OFD58LYYLhg9EqSIjo1J+sUfJBueXhgIvS/8JguXXQfJ8ANMyDkCxi G4CYg+1RlKtwLILzhwQivj2jrO+M9r0UoaQG3nIwPAdsxvIPAx1JfwSF194xKqvYjdFs 30PNHuw0qCUBIv7Co77CA+TTkZZ8niQnSOXmLKAPcWYoex7ULvHkvx1VBDI7SJNTzxja u11mHVRGQoKXilcwYdAH8A8rXoJxtXTOE90xJ9yiW00YmunSPgHY5VLCCDJUnUJOobip GekE4yS+/K1LU9d43VJfJKUsucD9A3rEabmbPdxBbDvsiHuF/9zliJ2pPpzQoyN/thqr LYXA== X-Forwarded-Encrypted: i=1; AJvYcCWLq6yKoYp1QvxxIJE5wC+bmi2+dv5ZH9EiEODpQ/kHnPerZ4u0BDOge32QMTUMR2XRQ0Cg88LasuWVPWM=@vger.kernel.org X-Gm-Message-State: AOJu0YxJF7KGLVJ4V5cIjqRY+LKEC3fnOWTyRKYCsoQnz25ImT5s8XTF yP9GKEHugi196kk2m95X9WO71R8xGDSnVhYMol7v94SSbyJAFesmqNdDqzyuzWU= X-Gm-Gg: ASbGncvFaxX+J7IZHLtlsfS1nCJUQtIGAXF4Kx+FqG+6SBC21GMk8lxMHGGDLBtIKXl ES0bIDoB0eQIl8LAbUFqagpK313MTkJoHSE6wpooyxyKHySX76HOPFelHwfS9XVQmRSLSCy1dfU jJ3lLpzzDMRvMnVPJ2HvaNhUmSI4H9x2kTBLWh8r/CN6dxxyxVk/k9gO4Uth6cnBv7S8cV4uihZ RTlDfJdvdzZ9iY9/n88C0pmNlBkzEeE86NuMDpiRoj73EZZ2bZfWoxTdiwZ4/lYS6KFihCkLfJO A6uuQgG3nSE5NQ9tzoayPnxL2FbGeYY24pChc2qlCPpKM5k9JGJqaH4VA0bPczRb0g88BJrOV3k wLUdcGWl/vFKu4oM5DuOp8DnAb1DW X-Google-Smtp-Source: AGHT+IGZgaTxx+7ZjL/FlP/L9Ag5GKaaT4V+DkX9m8JecEYrquECoAyEIK4ePYCjY3znN2c1xUclZw== X-Received: by 2002:a17:906:1382:b0:ac3:eb29:2aef with SMTP id a640c23a62f3a-ac738b4fa52mr785422966b.41.1743447848417; Mon, 31 Mar 2025 12:04:08 -0700 (PDT) Received: from [192.168.0.2] (host-80-116-51-172.pool80116.interbusiness.it. [80.116.51.172]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ac71961f9cfsm652288566b.122.2025.03.31.12.04.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Mar 2025 12:04:07 -0700 (PDT) From: Angelo Dureghello X-Google-Original-From: Angelo Dureghello Date: Mon, 31 Mar 2025 21:02:48 +0200 Subject: [PATCH v2 5/5] iio: dac: ad3552r-hs: add support for internal ramp 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: <20250331-wip-bl-ad3552r-fixes-v2-5-cdedb430497e@baylibre.com> References: <20250331-wip-bl-ad3552r-fixes-v2-0-cdedb430497e@baylibre.com> In-Reply-To: <20250331-wip-bl-ad3552r-fixes-v2-0-cdedb430497e@baylibre.com> To: =?utf-8?q?Nuno_S=C3=A1?= , Jonathan Cameron , Lars-Peter Clausen , Jonathan Corbet , Olivier Moysan , Michael Hennerich Cc: linux-iio@vger.kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, Angelo Dureghello X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=5442; i=adureghello@baylibre.com; h=from:subject:message-id; bh=QKeZ0jQPU0IE/bOj+jLk3e21UXPcLFSKvsofD9UQzCU=; b=owGbwMvMwCXGf3bn1e/btlsznlZLYkh/9ezWvWOP/qknWHxtWxJwfcqf77Yuxv22uzU+l/C0Z LgWSlZndpSyMIhxMciKKbLUJUaYhN4OlVJewDgbZg4rE8gQBi5OAZhI3k1Ghnaj5IOCegVHfM6y WklvXsZd6K88J7NJZGZElFdasLeALyPDUXbWCqE/K54vFxTa5TLLwZ6JwfnKnGOuL2dUXG5pFkn gAQA= X-Developer-Key: i=adureghello@baylibre.com; a=openpgp; fpr=703CDFAD8B573EB00850E38366D1CB9419AF3953 From: Angelo Dureghello The ad3552r can be feeded from the HDL controller by an internally generated 16bit ramp, useful for debug pourposes. Add debugfs a file to enable or disable it. Signed-off-by: Angelo Dureghello --- drivers/iio/dac/ad3552r-hs.c | 122 +++++++++++++++++++++++++++++++++++++++= +--- 1 file changed, 116 insertions(+), 6 deletions(-) diff --git a/drivers/iio/dac/ad3552r-hs.c b/drivers/iio/dac/ad3552r-hs.c index 37397e188f225a8099745ec03f7c604da76960b1..d4f50b33565f99b90859e30571d= c59038d01361c 100644 --- a/drivers/iio/dac/ad3552r-hs.c +++ b/drivers/iio/dac/ad3552r-hs.c @@ -7,6 +7,7 @@ */ =20 #include +#include #include #include #include @@ -54,8 +55,12 @@ struct ad3552r_hs_state { struct ad3552r_hs_platform_data *data; /* INTERFACE_CONFIG_D register cache, in DDR we cannot read values. */ u32 config_d; + struct mutex lock; }; =20 +static const char dbgfs_src_iio_buffer[] =3D "iio-buffer"; +static const char dbgfs_src_backend_ramp_gen[] =3D "backend-ramp-generator= "; + static int ad3552r_hs_reg_read(struct ad3552r_hs_state *st, u32 reg, u32 *= val, size_t xfer_size) { @@ -65,6 +70,18 @@ static int ad3552r_hs_reg_read(struct ad3552r_hs_state *= st, u32 reg, u32 *val, return st->data->bus_reg_read(st->back, reg, val, xfer_size); } =20 +static int ad3552r_hs_set_data_source(struct ad3552r_hs_state *st, + enum iio_backend_data_source type) +{ + int ret; + + ret =3D iio_backend_data_source_set(st->back, 0, type); + if (ret) + return ret; + + return iio_backend_data_source_set(st->back, 1, type); +} + static int ad3552r_hs_update_reg_bits(struct ad3552r_hs_state *st, u32 reg, u32 mask, u32 val, size_t xfer_size) { @@ -483,6 +500,76 @@ static int ad3552r_hs_reg_access(struct iio_dev *indio= _dev, unsigned int reg, return st->data->bus_reg_write(st->back, reg, writeval, 1); } =20 +static ssize_t ad3552r_hs_show_data_source(struct file *f, char __user *us= erbuf, + size_t count, loff_t *ppos) +{ + struct ad3552r_hs_state *st =3D file_inode(f)->i_private; + enum iio_backend_data_source type; + int ret; + + guard(mutex)(&st->lock); + + ret =3D iio_backend_data_source_get(st->back, 0, &type); + if (ret) + return ret; + + switch (type) { + case IIO_BACKEND_INTERNAL_RAMP_16BIT: + return simple_read_from_buffer(userbuf, count, ppos, + dbgfs_src_backend_ramp_gen, + strlen(dbgfs_src_backend_ramp_gen)); + case IIO_BACKEND_EXTERNAL: + return simple_read_from_buffer(userbuf, count, ppos, + dbgfs_src_iio_buffer, strlen(dbgfs_src_iio_buffer)); + default: + return -EINVAL; + } +} + +static ssize_t ad3552r_hs_write_data_source(struct file *f, + const char __user *userbuf, + size_t count, loff_t *ppos) +{ + struct ad3552r_hs_state *st =3D file_inode(f)->i_private; + char buf[64]; + int ret, len; + + guard(mutex)(&st->lock); + + ret =3D simple_write_to_buffer(buf, sizeof(buf) - 1, ppos, userbuf, + count); + if (ret < 0) + return ret; + + len =3D strlen(dbgfs_src_iio_buffer); + if (count =3D=3D len && !strncmp(buf, dbgfs_src_iio_buffer, len)) { + ret =3D ad3552r_hs_set_data_source(st, IIO_BACKEND_EXTERNAL); + if (ret) + return ret; + goto exit_ok; + } + + len =3D strlen(dbgfs_src_backend_ramp_gen); + if (count =3D=3D len && !strncmp(buf, dbgfs_src_backend_ramp_gen, len)) { + ret =3D ad3552r_hs_set_data_source(st, + IIO_BACKEND_INTERNAL_RAMP_16BIT); + if (ret) + return ret; + goto exit_ok; + } + + return -EINVAL; + +exit_ok: + return count; +} + +static const struct file_operations ad3552r_hs_data_source_fops =3D { + .owner =3D THIS_MODULE, + .write =3D ad3552r_hs_write_data_source, + .read =3D ad3552r_hs_show_data_source, +}; + static int ad3552r_hs_setup(struct ad3552r_hs_state *st) { u16 id; @@ -550,11 +637,7 @@ static int ad3552r_hs_setup(struct ad3552r_hs_state *s= t) if (ret) return ret; =20 - ret =3D iio_backend_data_source_set(st->back, 0, IIO_BACKEND_EXTERNAL); - if (ret) - return ret; - - ret =3D iio_backend_data_source_set(st->back, 1, IIO_BACKEND_EXTERNAL); + ret =3D ad3552r_hs_set_data_source(st, IIO_BACKEND_EXTERNAL); if (ret) return ret; =20 @@ -661,6 +744,24 @@ static const struct iio_info ad3552r_hs_info =3D { .debugfs_reg_access =3D &ad3552r_hs_reg_access, }; =20 +static void ad3552r_hs_debugfs_init(struct iio_dev *indio_dev) +{ + struct ad3552r_hs_state *st =3D iio_priv(indio_dev); + struct dentry *d =3D iio_get_debugfs_dentry(indio_dev); + + if (!IS_ENABLED(CONFIG_DEBUG_FS)) + return; + + d =3D iio_get_debugfs_dentry(indio_dev); + if (!d) { + dev_warn(st->dev, "can't set debugfs in driver dir\n"); + return; + } + + debugfs_create_file("data_source", 0600, d, st, + &ad3552r_hs_data_source_fops); +} + static int ad3552r_hs_probe(struct platform_device *pdev) { struct ad3552r_hs_state *st; @@ -705,7 +806,16 @@ static int ad3552r_hs_probe(struct platform_device *pd= ev) if (ret) return ret; =20 - return devm_iio_device_register(&pdev->dev, indio_dev); + ret =3D devm_iio_device_register(&pdev->dev, indio_dev); + if (ret) + return ret; + + mutex_init(&st->lock); + + ad3552r_hs_debugfs_init(indio_dev); + + return ret; + } =20 static const struct of_device_id ad3552r_hs_of_id[] =3D { --=20 2.49.0