From nobody Mon Feb 9 06:26:42 2026 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 B6D5E2253B2 for ; Mon, 7 Apr 2025 08:53:27 +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=1744016011; cv=none; b=XBSpkEX7cRC3NmBmMadoZMAmZ/uQ4q31vAzhsfQEbF6bjidYm+HSUj3XIsqsO37+Tp0UPzXtSXzX0TpAiysGlGXPRPLFWBDE5sA7lqTlTeWmTSiVayNfyPj4x8eOl0CGWrsYGFWDEByTCaGLBjWtNdZozTIkLvA4Dj9bjGtQsqo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744016011; c=relaxed/simple; bh=pCpjDjmBZOzK40k+vljZr2BliJA0xp91AOXjRWTRx0Y=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ApksgnY2aKII2i/4pQ3r+Crp78Y2PAl3H8uYCeN1QAMaWZ47K12q2QzXKY33AJZ+ruNIvd4q1c+Rro2DbgOidgxd+iubqAD0CCoFKsq9BfJhPYBcKBNvIqvpdcspdAs9euTBr0L2f6gDtoioGixTE3+slB3WrCF5VmD844gYWv4= 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=yIFdg0gr; 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="yIFdg0gr" Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-43cfe63c592so39009395e9.2 for ; Mon, 07 Apr 2025 01:53:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1744016006; x=1744620806; 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=yIFdg0grHJGVGw0+gsygFH0k/IVKY8xSqACiOs45DwJXts5N0quuuSVZpk8bS+hI6I P+i/odY97IRb7kIkW1FyqcaNgJk4x4v4Ycka+hZxYLElJTKnBaHhD9D8l5hwPpTosR/h S/a0iGwyFF7coiDzu8YKpb0qcKf7TnSsstiXdT0yS6bGu91FdzINefnkRIFC0VjkyQ79 ZWh1PdcaSQ43k7964WsXTud/yyl0FWHDzLiZ5drtD8l+R4+hrYaUV2OEpjC4cxvYFsyP Ihc+mW1+DXck3Q3hTtutXkIV/iwuE6+yusS6GvquJHCbJPoVrAh1q3egT6ojvT3E13QK jm8g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744016006; x=1744620806; 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=IGxwxnp9cqQkI/8BEuRJxgiReIad8XbB5DNsccYOriTF5VOTahfLY038mVrDnREL6V DTn+0a/aAOxUr+qg6nVsvwXiLfoql4wfY/t41FKkOiVehApSZ1wueRbJ7iTsPhNk++id OUVhEjLv9rTaN055gBmLwfaUN7B3MUcpSyhy5BJEAELb0F2ms8icaZMrp8sn/ZybZQL/ TrixPnCVhlh0nOYHDKCZ+ONvozap7e3qvNy1mULfl5VK97mJzB655CDHH1pCjkaVO9Nv WGpd5XvRkK4va6ZMO3DXXSESX5RGhdc8IWaI7cuKmJhd3oQeMR2LHYFj1wAynNvwSMcp SbdQ== X-Forwarded-Encrypted: i=1; AJvYcCW0BDw4bQOfTFuOXkrHb62cfVQJ/VyHNNNV/QEuMF4n2cRSZZGk8/Ksn9g8M3tDYMxvmzLlay3V2ExMU2g=@vger.kernel.org X-Gm-Message-State: AOJu0YypyWruU7t0IxuEyjKtyWmawzGv2Jfo05G6qA7AG2ZVUIs0Os2O ULIV6ZeEKx/ubS5fm+lQXg4C/h3kpKOhs167d/rRtLM5k52odHUnDvRKUvG6QRY= X-Gm-Gg: ASbGnctGkeyp4qKfwl/3buk34DOkDDByvT3jhRZe/YJ1rSy0Yqccuh0LC8UKG3xtFrT w61P5+j1w35M++V8xnB7iedhLntxAY8mXurr4ljAo8XfjzoOBt5S15Bj8H0hDpzoJNjU/fpL1WB YhRIe+yVT9yLTiepymreo5LZ1q0DAxEZK8K69jP5PRUwrlPJK7SI3XlqUOqI3xuQDVHwiahNvew F8ZEyOgQyx0Zjyf+L+YvP3AOavhmCGoHLaOCvVryZGqpEXwDasEaXJfx1wzbSC6QJrPI4q7Qj54 /s4ffbfVOHbI4D8ebvQJN1kDDljzWcYA+KFXCt7UkNwh3J5w3yMKp9TPrFf++TbHCvuobl1nY17 cKzPPRgd6p2AiAinsFkuB8w== X-Google-Smtp-Source: AGHT+IEESbUJjv5zNbby1nRneFXpbSe5k56jX92f688Vnu++FT+Kfoz76Ak446pwm5EA80vwmYPa0g== X-Received: by 2002:a05:600c:1819:b0:43c:f895:cb4e with SMTP id 5b1f17b1804b1-43ed0c6b9famr79797225e9.17.1744016006024; Mon, 07 Apr 2025 01:53:26 -0700 (PDT) Received: from [192.168.0.2] (host-87-15-70-119.retail.telecomitalia.it. [87.15.70.119]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43ec3174cf0sm126966995e9.0.2025.04.07.01.53.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Apr 2025 01:53:25 -0700 (PDT) From: Angelo Dureghello X-Google-Original-From: Angelo Dureghello Date: Mon, 07 Apr 2025 10:52:03 +0200 Subject: [PATCH v3 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: <20250407-wip-bl-ad3552r-fixes-v3-1-61874065b60f@baylibre.com> References: <20250407-wip-bl-ad3552r-fixes-v3-0-61874065b60f@baylibre.com> In-Reply-To: <20250407-wip-bl-ad3552r-fixes-v3-0-61874065b60f@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/btlsznlZLYkj/PMnG9U/8FZZrZ1Y86Vm0d8aLM0XaJgz2gVcWMub12 bOofmdX7yhlYRDjYpAVU2SpS4wwCb0dKqW8gHE2zBxWJpAhDFycAjCRa4sYGdZZ8RndWTNjdst5 H46K6Dl7Hu/8oCFaJ7hZ4rHxZlsmsUZGhi2PJJKTOWKnC34/tfRBvHBAdSRHTcYGOz7pLYtDVY7 5sQEA 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 Reviewed-by: Nuno S=C3=A1 --- 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 Mon Feb 9 06:26:42 2026 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 D442C21D011 for ; Mon, 7 Apr 2025 08:53:29 +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=1744016012; cv=none; b=NAxy7pZiUH3sEr5C6IcPtN5xtPlJfdzTJKhS6ixQy2EuhNRSLVJC+AwzKLE/+CUXIi+qLmlO63Bne9hAGYFafq1zN7L1EQ7H/67x4AxTodlVWjH4i7U9Pn7BL0wX7ej42O0YQhsZF5nqg7QLoQbe65XQy4o3p8uV4jZGlHqBamQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744016012; 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=aEqhBLuI8mt36Dw9LZGdCbXTbdsKdKL0CCVZDWRtCRwvME0jCgUfClHruHmttd9kCiO/1/kobdFZNFPpq1iVRFuS8Ax6WxsHNh10bguvzIpN9HjreIQ0y0rgP7d7p1hhnoNTxD4Ijq8Q6DJTzF7dJ09Z3TiWgwpjgXc1u39Z3VU= 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=2geaPF+y; 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="2geaPF+y" Received: by mail-wr1-f54.google.com with SMTP id ffacd0b85a97d-391342fc1f6so3652600f8f.1 for ; Mon, 07 Apr 2025 01:53:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1744016008; x=1744620808; 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=2geaPF+yGXDZstuPr3nx2VOxC/kJKOPfc3bBTu36efPt3ZC/DeG6v/oxer8SCRbCjO qpfIh8oE22SEA7nmy3zI2TPdCUof9K4sAj3O+vKYHUK46/eYaDGIMNWAR4aEAwSz67yH hFeEWkbKI85FWhJB23DpGonSjHLHmkpKO+solIg+vBmDGzchhHOyW4Y58DiQ4sHyDWgG dg1fJ1pnxoxhdt96qXJTmzM+iGuFqCOVInd+6m2zw6wy3G3VRq598080ZXW6NebbZQWI Jd+/MqukXCzH8D4CTbVuc6oJeMpyAfeQGrpp9Hlmm9wJ1CD6tgsJdpCkPb3aNz4pyZQ0 MUPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744016008; x=1744620808; 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=qsHz2BuL3EOJbwGFm0Gbj0fRVIuNnka0lkscPg8azO2iZhXOXo8nTuSCw0bxZe5GmB /hBdGiatYEU0Gk9Q0NnpLDnpbrJO0egJ94JK94LOvLuLNO8NFNERV+tc1rckRQkNiIgt +bBjYM5yQPUZCA1OC3H1hjejVGFsUMv/mQe+wIzqAe6+5UEuFS7Os9kFkJFVJ3DKfwWp e0EGvu0QKL56MK8Y4ZUdWBajAkCpNzHWYMsFs/7p8x8FAM4UaEGGXFxC/WJezdS5uLAW T9tdFg939UxobjX7R298l1T1YOekxdp0qrdl1sl8AkLfZfgwGoYnCxwmjSmppp2p44dm e5TA== X-Forwarded-Encrypted: i=1; AJvYcCU7CrfMtSG9plDUEctyXbCsDUTUCOJ1ryUirWvOv96T3VUSiPtqn9iu1MG5PEecMoy4zZHgMS3+SKy4hJU=@vger.kernel.org X-Gm-Message-State: AOJu0Yz46uHhNPQ9c/q9le+bm4IFusnqbJ1X9X4w086UZQ9LdRfHt11T CTSZvBEnxpiaB0wbIBAJ6d3rZmdPcQA4ZajTdN8b6B/qZ6Rs86qJaCHEi0CKUfA= X-Gm-Gg: ASbGnctfUMGjH9uf5kKvJSKym/d2suqVs/vdnGjFzLrzWS0RofXQavxHZoGwtyOqEmS Y877AwyDR4wtNecRHwdA0/0W8n9U/NewgofreRftQ0HH/Lng9dvwN/RGtB2UkfoPYaLxR+7ddhc PBXZntQeFSRa5P9hUWo8ZBYozmcifVHMV6yYz3XHNGbJKVIwM6T/pyqHY2vjnLwNHhUgc8/e50c 4Mm3c+OAPPRdy4CmC8eiGZn5cswuo1orVPBEy0xqDXqGDS3xYyLZdWzbLarny+tRWdcSVPtXbu1 7R2KCQ5BOEbanXkpqdZDWtNY8lQ4h4xAPYUsIiMS/EtuPL7afyvCG9moODbAnKsTF89RFPkqdr8 3lz7urRfhrHMN3fC1K+56OQ== X-Google-Smtp-Source: AGHT+IGoWMikHiILCzQyxiICmyrDcYbMbBE2+CmSWIHKyocBHZuGsTfBPMzzPfYegK5uRlhusxUWRA== X-Received: by 2002:a5d:5f4d:0:b0:391:47d8:de25 with SMTP id ffacd0b85a97d-39d0de67a0bmr10291358f8f.41.1744016008061; Mon, 07 Apr 2025 01:53:28 -0700 (PDT) Received: from [192.168.0.2] (host-87-15-70-119.retail.telecomitalia.it. [87.15.70.119]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43ec3174cf0sm126966995e9.0.2025.04.07.01.53.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Apr 2025 01:53:26 -0700 (PDT) From: Angelo Dureghello X-Google-Original-From: Angelo Dureghello Date: Mon, 07 Apr 2025 10:52:04 +0200 Subject: [PATCH v3 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: <20250407-wip-bl-ad3552r-fixes-v3-2-61874065b60f@baylibre.com> References: <20250407-wip-bl-ad3552r-fixes-v3-0-61874065b60f@baylibre.com> In-Reply-To: <20250407-wip-bl-ad3552r-fixes-v3-0-61874065b60f@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/btlsznlZLYkj/PMmGaUNurFfh9PrpW37czjvWpuGTdPnVhJqgiW062 64pOTGEdZSyMIhxMciKKbLUJUaYhN4OlVJewDgbZg4rE8gQBi5OAZgIMxsjw/nW1/eLhLYsZJq+ T6ptd7TwbYOgvKmHfbXtLqhsdr3wU4CRoeWLU/0dvc4rq5jPSjU5sj98dD/BLqgw9LNyouZhOz1 5RgA= 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 Mon Feb 9 06:26:42 2026 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 C848522A1E2 for ; Mon, 7 Apr 2025 08:53:31 +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=1744016014; cv=none; b=fG2P+8zNB9CmPLpYPTFfMkU1nzy4clCCtjWQOVhEp0oxdrjRjx8tDKNOP9MUhNAcQwoPUdqaZWSAkiivleVqtEvv0P7Dse7Brx7LLDBDcda3ENRLdkJy92AW9GEGhYEu04sPgcO63tSEr+8d4qWd/H8IZ+LEClm0mRdHdbABSQc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744016014; c=relaxed/simple; bh=hWSr+N4q8jPBwyhE+M9punDDVddf1n2Qdd8iVHO9YtM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=N0JnpfGCGXE57QPjYB1Ae5UoJj6K1IPC0cb4DJ+M7BQRcJAD2rMkDc9eEjeHy2t5MfotnkyIZm/m6pqBecMm9cdIJmExsAJPjQgNZP0o+bU+D9z+e7pGwV17HCugfOVN9asnwR9PlOTjSAxapAhgBAkgQvNQHwd9sgPO4h2zIDA= 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=2O4wOAlN; 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="2O4wOAlN" Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-43cfebc343dso25979405e9.2 for ; Mon, 07 Apr 2025 01:53:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1744016010; x=1744620810; 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=2O4wOAlNGCiq2nxlgwd1CsF5NbTgt9kPZZifV12aJtl2XZUF+QioxxQ+Rf/DOFDyFS h4ztn60U8xR2AGkAh3vbptL/yOExaF6AZ9hAEAsuL+rfRmmw7c+qoKUlXkWjVpvavVvw gXTjMWWj8rZ3ndrDLSl4NC0pFNwq4Pu8Sz7TB5KzILykjkEGnueY7EpwwjrT43vtUZth nddioDKEqUIWaQcyK4hm3cMeMjss1CLkBxNKeKNiGxOHWwhhP9+PUCQVSJueukcsfdIx CrdRghWvZ+GIy3M24jC4sI2T1/FBKEVcMb6SBH95XvcrxaZGKKzoRlyEQNYS7Z53l8+o dk1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744016010; x=1744620810; 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=oWyw/x+p3eHf431Qn/ErHnUQ8moXz/foU/yP4YM5RyK0JWdulKrcil3Nh9p6S+h6xD bVqTK2LqQaPtC3+fjtIx2ZcXuHqANAO60U1MY5Ez2tfGUHBhUnIu1tuYbOaKh86QOjK5 7eCWVzmpSxpQAWV+6r9aa7uIIfa/BUonZybAexmu9cJ2E1GQh2F0VvgpEEp1RhCXIycP HCBMBYhE4ANT8oIFnXNzVTVdsKRWbJa8Iw0uqNRiMYMbTWrj7yxaFkVO3PDHPK9pF6d7 NjZNs2Wu80CzLmxk1Lj0IhAxK98wQd4Rxr6lv9ngOX15EEYWHKR0QHbN/PFPCcGAUg47 Is9g== X-Forwarded-Encrypted: i=1; AJvYcCXEVZdqPg0aRFXrlGzNI6AbnnPe5jSt4nqHX7wpqHf4F03/eiHC+2d9WJ6MJkTBJCNyWIbiIXVLQ1q4bWY=@vger.kernel.org X-Gm-Message-State: AOJu0YxLY7pQCUgemIsftLRFYujU6TPozu/JGROSPy3GMm6pndIyTHPi ZdTyA0JP4yUJprdFY1hr8p4ltkbS6E+IPh0dj3ikbR7nv+3N9wAoJloDobaP/Rk= X-Gm-Gg: ASbGncs9IV84eYZb5UmeqIlH4pgLHAx1HoU0eEd2a83Z4Wqt8LzulNBFCWvuIvricB3 7BGiLbvhHDwsL5NGUlirTN8be2j2pMp7BI7JDROleaRlFrVtbgt7IzvRPaUtd5aRqQ1KfN3fnIQ 4RY+PWXMMa4Pl1FVM+1Z2vWup4zajF/iQGdYrNlHPmloC0iDVhqvmzu/AqplQCm09C5amI3hOVf sT6dMZWdO07t1C67itqk7E0I1i29+eD0hrKE7Bs16y4RDzurtQpBMBCOiEkLxoy5xLE2L9ogz9c IBB6K6+FVVqg0MNLELUPbfq0hTnN7DG9bmgtFzvo46rXoEg3JOWugps6F1wmRp7Qg5sSQrX+98n UMvCB9GvHZpcaZ3qlpclMiA== X-Google-Smtp-Source: AGHT+IEoRKYzi4XTLVyzGQCHVUJlc2/nLNfGyDANP2bSxKBD7Syi4BAXA2v3/anNoWltCaKQJP3DQQ== X-Received: by 2002:a05:600c:4712:b0:43b:ca39:6c75 with SMTP id 5b1f17b1804b1-43ecf8cfb3cmr114706865e9.16.1744016010047; Mon, 07 Apr 2025 01:53:30 -0700 (PDT) Received: from [192.168.0.2] (host-87-15-70-119.retail.telecomitalia.it. [87.15.70.119]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43ec3174cf0sm126966995e9.0.2025.04.07.01.53.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Apr 2025 01:53:29 -0700 (PDT) From: Angelo Dureghello X-Google-Original-From: Angelo Dureghello Date: Mon, 07 Apr 2025 10:52:05 +0200 Subject: [PATCH v3 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: <20250407-wip-bl-ad3552r-fixes-v3-3-61874065b60f@baylibre.com> References: <20250407-wip-bl-ad3552r-fixes-v3-0-61874065b60f@baylibre.com> In-Reply-To: <20250407-wip-bl-ad3552r-fixes-v3-0-61874065b60f@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/btlsznlZLYkj/PMkmoczqgCDDtUeWqZsvtzIYMG2xXml75fUX/nNJO ZOfKHl86ihlYRDjYpAVU2SpS4wwCb0dKqW8gHE2zBxWJpAhDFycAjCRt5WMDJ/DNovujT/9T1X0 zI4NNbbCwVH/cuz26P+b4342dC2zzASG/7GWJQxyt2Z0iukHG93h/PaibU8lT4s6k0LLV7es6ER RDgA= 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 Reviewed-by: Nuno S=C3=A1 --- 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 Mon Feb 9 06:26:42 2026 Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.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 E1C8422A4FE for ; Mon, 7 Apr 2025 08:53:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744016014; cv=none; b=uIgAL7SvMFLnDdjBs+60Lat48NWkgHQplQGde6KuVfGzdtIvX5m8RWhMERlK91axg4x9OlW7fhtADJMrF2UgM01UgD3UN4kKH8Wq1oPBg2VhJVEqB9AC1hydoOSt1JJTSM6GHjGljOBx3SwPNXHr805ltkdzwBY1JzIhzPFatTw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744016014; c=relaxed/simple; bh=OCoJU5I3KSv266Dud9GYmsHSuvkY/G/QdJ0ymA0kyLA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ZtgLs734/qdf3LS6xmogG8XR8ewHz2rsytU3b5qksUV9NDw513OUboWlMOfQq27N/43eH6Bg8/eCQrFuL3Wc4u5NHh7ZZjTSfbLe0TidNuykoYO2EyBO0Y2+JNaHYiRcyJ1QNmD/NhM1zNoIzSEaFklyLj2qGfLA7taOqgL1Rls= 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=t5dQ9luL; arc=none smtp.client-ip=209.85.128.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="t5dQ9luL" Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-4394a823036so37133795e9.0 for ; Mon, 07 Apr 2025 01:53:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1744016011; x=1744620811; 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=t5dQ9luLTW3NiNFEajHqSP6F/uTWMdjppO953hKmrDzyfqQyV0R8jbZUON7RbNjhmP CQOnptnH4i994yFfHtp7tG7CrbyxvQM6jRP9fXUJaPfqrFqLoLfraNKrFXfnDJNBGqvG LnrU7SJba//rAmy33++2StIbPRX1vSmcUERrwbcm9YIbMsHOEtVI9MWTJJtTi3sLbor3 LycKL42fdx5KQ6s5iZfAkYurqZK5MeUBFVqD1HiFv9pyyVPI+2fY8fbOIXu4sjIfEVc1 Ug54yUG3uLAPQOoDeGIgHcxWsv6keNTEglecCizqXQRbSiL78EflpsHTFPp8t5w7HIZl 7l2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744016011; x=1744620811; 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=M21uLAMpm4CWhmiva1nyWF3C1U0OC/o7a6vWDWjhygSX1AKLAZH1jyMMqeK1Vr4Llw IIvR2LjPguU+zzy38LB02hP7QoIEGanK90feppD99r9Pu7IVkmiMjKMy+4r0/P1TAG2d z41h4ZsV43haSj/Y9wnJTBYjW9bkhQbW1CVtMvVEWrF9wYIC4wupBpWDLeqtwq8Ci1rn RH2jlBhBm0grx6IobcXP5F9gpSmZyEzvhqJhZ86Dbs4rw5jBiqL0qCZbxn2uK84yH/7H 3sprWYugSmZzcn+zGv+Hp0djk0nJZe3SKj+NLKyODzdaydvRusFyeSD50XrWJ/qObvQI ueEg== X-Forwarded-Encrypted: i=1; AJvYcCVMlhyVpJ4FhBdwutbbpuDyjSloQEXgWCE859El77EmlGXmB0qGhH4BhBGB1H7Djb86XjbMlNfWbbxLEIU=@vger.kernel.org X-Gm-Message-State: AOJu0YwnA27QbcPEyHqguwGoFJS2/OGwB+AsWB9TrQfzMuWcEPxs3ier Zer8GNGdxHtCZJhtDAZ6vj+Ktdb2j/oN9aoWHIzh5+WQbx4ooCmXVdfvUddhMMI= X-Gm-Gg: ASbGncv/GHObgjWszfSpm+Df/GcNEVB+LiJAmGYYfFfQDLBnhuhzxrvLWf30kNH1ahj blyZlbCzMEI6MZMzqkCbCc38FWPqTFeOlVYiRNpTtMk59MD7fYFZeffEEv5FjbKfVfsV69RKV8n qDibTJ/8ueig5jaZL1T0OejkOCdL/cPBIaMJGEGmWsOMap3HTqaJfmphG+DTU75zy9HTK8bai6d o+yF0uV9ijEIsoTqMRVfgpdzyE4c1/jHbMmD8XDnWQistk83zk+/Vt7iDTw35bJf65E0BqjwbhJ H7iu+hTIuDRAEYytqRGu1BBrU/BzbAdisOifdRJGRkqO0A0dCuB1OxGdvzCDHHLWnIFQxx5eTYa +E0MBQUuLI7CSNv7RlXYRZQ== X-Google-Smtp-Source: AGHT+IG3UNqwKSmnEghN1Yf0vzRJslD7xevndIQG/1hxBxCx6zKFOX6soLxXbaPP6oJYqCIRrGEM3Q== X-Received: by 2002:a05:600c:46d5:b0:43d:fa:1f9a with SMTP id 5b1f17b1804b1-43ee077feeamr71808175e9.30.1744016011319; Mon, 07 Apr 2025 01:53:31 -0700 (PDT) Received: from [192.168.0.2] (host-87-15-70-119.retail.telecomitalia.it. [87.15.70.119]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43ec3174cf0sm126966995e9.0.2025.04.07.01.53.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Apr 2025 01:53:30 -0700 (PDT) From: Angelo Dureghello X-Google-Original-From: Angelo Dureghello Date: Mon, 07 Apr 2025 10:52:06 +0200 Subject: [PATCH v3 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: <20250407-wip-bl-ad3552r-fixes-v3-4-61874065b60f@baylibre.com> References: <20250407-wip-bl-ad3552r-fixes-v3-0-61874065b60f@baylibre.com> In-Reply-To: <20250407-wip-bl-ad3552r-fixes-v3-0-61874065b60f@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/btlsznlZLYkj/PMnGKK638KhKL68Wi2vYhOdn96hf/lEkv9XvtNbUg GKxhdW7OkpZGMS4GGTFFFnqEiNMQm+HSikvYJwNM4eVCWQIAxenAExkLjfDP+0cvQ85O3L7A+d7 nxKVPSDi+nt9CH+dUWmdwJrwVwE6FxkZZmz4um3a9phZBnpPjsjm22XXMi4OdJRfEta42ti/5GY NMwA= X-Developer-Key: i=adureghello@baylibre.com; a=openpgp; fpr=703CDFAD8B573EB00850E38366D1CB9419AF3953 From: Angelo Dureghello Add data source getter. Signed-off-by: Angelo Dureghello Reviewed-by: Nuno S=C3=A1 --- 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 Mon Feb 9 06:26:42 2026 Received: from mail-wm1-f53.google.com (mail-wm1-f53.google.com [209.85.128.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 790ED22A80D for ; Mon, 7 Apr 2025 08:53:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744016016; cv=none; b=qFoUIic7gK/0wSPRNWqyOsbpWzgVl6pfIbE02PDMi5ve6m3binOoP2AYzcLHdgi6CAQFRh/9WjduFTEARZbopI5KhjGvGY6Z1Bf31jGHtBVghw//Jh7MHz22jAGkx1fxjL1nowGs8Vr0iQ00VQbqP6Cx5r/DWv/M6PnS3bsSOVI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744016016; c=relaxed/simple; bh=6MNPW5rrCGsNlWsIK2Wq8JZEQeMCM5nkbAYK09UhOio=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=gmMKtG4BHeEViQuC5IlldWPzk43iM/ylo4AS2Cy2kL0LfCab/rLQp1Yyke9IyXKsilDZ6vnl9jbztBscjs8t08ndzSN4WyHQse2OTBwHMxX8pjm16KthHOOg5ZYdfD8olIXSHKai/EsPhFowFzmP2meY/3Rtv1ZqZfGJO82c+EI= 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=USC9vDAd; arc=none smtp.client-ip=209.85.128.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="USC9vDAd" Received: by mail-wm1-f53.google.com with SMTP id 5b1f17b1804b1-43edecbfb46so14884245e9.0 for ; Mon, 07 Apr 2025 01:53:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1744016012; x=1744620812; 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=ojvE6ZCl6dLbOE6EYPUsM9oqTlJu3LxPEQc1vnCPuHU=; b=USC9vDAdFLPYKnE9W5UU6HB1tv8qs/jmUUBhbUx9q2A180CdSbDeR5O5xqi4m2rE5p kNLveN7bw370a0r9edT8dfudNjzJ+S77dZyfozEoXmWrfG+a+5SCO/4sH/EhgfAIumx5 Vajry7AcWz6CA1U6TG7JJ73CxyStfYZil4cDCDydXscZqE37MYieFbckEC5EOroOShTX qbRNN/e/VNFEZ5Uv8aCXW/NNVZXe+adMFbpxGKBegmSFGXW8JtYqnl+EAgG8RkERu+us rBy7Kc9hhqJpaCcT8rWyaoUtE1Sch7AVkzG0KA5YbLNYwZLILxBP9aTGlv1evqTe+O0n r3/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744016012; x=1744620812; 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=ojvE6ZCl6dLbOE6EYPUsM9oqTlJu3LxPEQc1vnCPuHU=; b=gg2hIS9KGYgkVAEWSqmLWeRjSWT3G8ARfTCVL/VY05Fu/68gmXnBoLoZbQDuMHJCjm ULNJ/hdzPwWGAgzpkqUN5n7GK0sYVZOnXv6puvFKzpTpmgUYJ/PjoBjlEVyniUv+ldUV dppvCpKShnKFtO4Cj+PsQGcrveb6lEtP/tBkeB08jYWBDU2KH4HCS7Mt0P7kQFOr90QA 2uAhmBb0UuD4s+5ZBErEKxmyvzIvI+uHqke+blN1u3bElOu7NQajL4w3bJzsOr6Br+R2 sXt8Vqa2D0JKQxgbPara9Woxt5E1U8EznKHOPKm2tM35+pikLWBSusxGdSvEgDw7+uo0 viVw== X-Forwarded-Encrypted: i=1; AJvYcCW8aCvnZFYmSfTwtMj+4bNAkMvtT8MmtqMJLI8YKEwsPsRDEl9sP+h7SdObr2RO/d8z/24eY3+3H5/8R5c=@vger.kernel.org X-Gm-Message-State: AOJu0Yx4DuYeoPFFzqWoSj6nHRiWS6fLf5FLdxlENEKYAhEdMDvDf7wB YjQttkdKymt/px+7iamru5xiqjEOFjm/vrgAFmY6qNlwJT6m8fNLTutQxcpehnE= X-Gm-Gg: ASbGncvi0kCoy5DzLzBWDy5jEOrLb07Qpj6r7V4Y0ZDvqMJSrtth5t+JcvEe6HqV0CW fSV64Tr7xrcgSp0z/wEWqyQY1NIYqfvMCeS0dROlslI3oHzFAcFGOWcO1L8Nh9EK0i1qGA9HC/n w49SPLqsVIcwO1iB3WlTC2dsBqKsZlaY3jQ48TUsTRDwDpka+YQnwqInmn5maQbzFf5829fnnyg Vox5WfGO9CspOE8YjQHzFc7YIvbJ6MSYvCdvLFGAfeLOBCX3jDQUBoWQgPqjf0rvb5QfAF4bBsN G41j6u+yP4LCTrCrmAzGvRc2Erb6IV23GY/Q7zfO6AV6jOwzk49qcj36zzs21Hly646XUKrOt9V Q6Nr8qfUC6/sfKyJ7EUKCPQ== X-Google-Smtp-Source: AGHT+IHXnI5obqfnDBfnmntpuGohXNyfCrhIkcIEEy62VoAPWUc/7IHAHiJ1xPm8CUemUjAtsBJ8cQ== X-Received: by 2002:a05:600c:3505:b0:43d:cc9:b0a3 with SMTP id 5b1f17b1804b1-43ecf9fed8fmr75791135e9.22.1744016012605; Mon, 07 Apr 2025 01:53:32 -0700 (PDT) Received: from [192.168.0.2] (host-87-15-70-119.retail.telecomitalia.it. [87.15.70.119]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43ec3174cf0sm126966995e9.0.2025.04.07.01.53.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Apr 2025 01:53:32 -0700 (PDT) From: Angelo Dureghello X-Google-Original-From: Angelo Dureghello Date: Mon, 07 Apr 2025 10:52:07 +0200 Subject: [PATCH v3 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: <20250407-wip-bl-ad3552r-fixes-v3-5-61874065b60f@baylibre.com> References: <20250407-wip-bl-ad3552r-fixes-v3-0-61874065b60f@baylibre.com> In-Reply-To: <20250407-wip-bl-ad3552r-fixes-v3-0-61874065b60f@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=5557; i=adureghello@baylibre.com; h=from:subject:message-id; bh=JNHqVEoeHIkqaYfOFdlgyU6mu8jM8HeInE2c4jX+SP0=; b=owGbwMvMwCXGf3bn1e/btlsznlZLYkj/PMnGQvrUyjKLz1++Gqy3e3rJ/0HAk5/qXVHBlRsfK ZvZy9YxdJSyMIhxMciKKbLUJUaYhN4OlVJewDgbZg4rE8gQBi5OAZjIJkaG/0WyC4q1npWcXHmu Qz+65sSZn9Hsh281cxW8ZsvgOvdSrY7hf8o806VJV7UnZy34E27i9t2m01TizRtGu52Fcy1KP1t M5gEA 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 | 124 +++++++++++++++++++++++++++++++++++++++= +--- 1 file changed, 118 insertions(+), 6 deletions(-) diff --git a/drivers/iio/dac/ad3552r-hs.c b/drivers/iio/dac/ad3552r-hs.c index 37397e188f225a8099745ec03f7c604da76960b1..3dcbda23c732f5f5e655bde31c5= dab4960554bfc 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,13 @@ struct ad3552r_hs_state { struct ad3552r_hs_platform_data *data; /* INTERFACE_CONFIG_D register cache, in DDR we cannot read values. */ u32 config_d; + /* Protects backend I/O operations from concurrent accesses. */ + 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 +71,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 +501,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 +638,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 +745,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 +807,17 @@ 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; + + ret =3D devm_mutex_init(&pdev->dev, &st->lock); + if (ret) + return ret; + + ad3552r_hs_debugfs_init(indio_dev); + + return ret; } =20 static const struct of_device_id ad3552r_hs_of_id[] =3D { --=20 2.49.0