From nobody Sun Apr 5 18:00:39 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 42F9F39F189; Wed, 18 Mar 2026 17:56:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773856572; cv=none; b=CP7nG/p3HOR0amhAPSHBzTt8q1Lwqv8/x3QyrqdMyzViaCn+4XVkWpqnFc3idDLywF2Kh8NN1FTSd8f8HReKohQevvn97bpWoWzEllhJF3kwj4LZPrY7WuaiE5UsGMm94OiD40ZCr3yAtNLUioPSGuU/AVMKzrf7FdhlZ8bcijU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773856572; c=relaxed/simple; bh=KHz1ZgKNkvOjPJkW8pnZH/1UNOZ0PRDsW6AJFObf5Y8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=nK4u3mtstRp+XEIgutiWGwPGIYMtFpxRJ8vEshcZTaKNuXHy/8cof3ODeUF1WpM2zoU43diDGpv7TbPVdqAAf4f8tj8qJTBgRXckNRMXElzfH+zOlEVHLf66EG7Q1MvPav5vg+aH0A0kK7NUdvbi7HVMqtYPcTDpdCWZoG6Z3CM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=APcMv8Kx; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="APcMv8Kx" Received: by smtp.kernel.org (Postfix) with ESMTPS id 9A65DC2BCFC; Wed, 18 Mar 2026 17:56:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1773856571; bh=KHz1ZgKNkvOjPJkW8pnZH/1UNOZ0PRDsW6AJFObf5Y8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=APcMv8Kxcg3xE/JnPMxnauw4Dusdidz0Xe6Bv8XBADG/WNtF8Eq6iEXCyTIcCsmzO 0uWN+wLPfHgUfZ/0DhqPJ8zmUM1aUooCqngmHsx8sEDSxNm+11lGHjgXMtKfLfNq2N fgauwptWV0myYVFwvrSv/e26S0mvFCs/CLchL/qv04XE3Jv6pTnvV6OYvSo43GyO+c 4W5K9SLoxyO0KFegI7Pn4nC3/3uDFY3z0XlN159kW7x+KAOym14M3GLXtQQ7XPtCHn WhQFjWNDomdf6D34uq42qJpB5cdjfrcxwWqV5S4qStUs6YumxlilPum5pr9M+xKCFd 2y3t+JDTkKskw== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9233810775FC; Wed, 18 Mar 2026 17:56:11 +0000 (UTC) From: Rodrigo Alencar via B4 Relay Date: Wed, 18 Mar 2026 17:56:08 +0000 Subject: [PATCH RFC v2 8/9] Documentation: ABI: testing: add docs for ad9910 sysfs entries 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: <20260318-ad9910-iio-driver-v2-8-e79f93becf11@analog.com> References: <20260318-ad9910-iio-driver-v2-0-e79f93becf11@analog.com> In-Reply-To: <20260318-ad9910-iio-driver-v2-0-e79f93becf11@analog.com> To: linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org Cc: Lars-Peter Clausen , Michael Hennerich , Jonathan Cameron , David Lechner , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Philipp Zabel , Jonathan Corbet , Shuah Khan , Rodrigo Alencar X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1773856569; l=8935; i=rodrigo.alencar@analog.com; s=default; h=from:subject:message-id; bh=grE302iWPE70mi8jjbpmGZcg9LSvpB2JPaUzLTUV+HI=; b=4S3+/9p2pi1E/72fi89NhStl1mRsm4xZHHoShdJWnXAIN0qbW1Woqpy9qfQff50dOtrZrJYFl su20URI42/VDksqZ62SnIhxlBzzH5j+KXeaemkyIzbAuVZFn9ecel06 X-Developer-Key: i=rodrigo.alencar@analog.com; a=ed25519; pk=ULeHbgU/OYh/PG/4anHDfLgldFItQHAhOktYRVLMFRo= X-Endpoint-Received: by B4 Relay for rodrigo.alencar@analog.com/default with auth_id=561 X-Original-From: Rodrigo Alencar Reply-To: rodrigo.alencar@analog.com From: Rodrigo Alencar Add ABI documentation file for the DDS AD9910 with sysfs entries to control Parallel Port, Digital Ramp Generator, RAM and OSK parameters. Signed-off-by: Rodrigo Alencar --- .../ABI/testing/sysfs-bus-iio-frequency-ad9910 | 182 +++++++++++++++++= ++++ MAINTAINERS | 1 + 2 files changed, 183 insertions(+) diff --git a/Documentation/ABI/testing/sysfs-bus-iio-frequency-ad9910 b/Doc= umentation/ABI/testing/sysfs-bus-iio-frequency-ad9910 new file mode 100644 index 000000000000..120de494f6b1 --- /dev/null +++ b/Documentation/ABI/testing/sysfs-bus-iio-frequency-ad9910 @@ -0,0 +1,182 @@ +What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_profile +KernelVersion: +Contact: linux-iio@vger.kernel.org +Description: + Read/write the active profile index [0, 7] from/to the physical + channel. The AD9910 supports 8 profiles, each storing a complete + set of single tone (frequency, phase, amplitude) and RAM playback + parameters. + +What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_frequency_offset +KernelVersion: +Contact: linux-iio@vger.kernel.org +Description: + Read/write the parallel port frequency offset in Hz. This is the + base frequency tuning word (FTW register) to which the scaled + parallel port data is added during parallel data port modulation. + Valid range is [0, SYSCLK/2). + +What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_frequency_scale +KernelVersion: +Contact: linux-iio@vger.kernel.org +Description: + Read/write the parallel port frequency modulation gain. The value + must be a power of 2 in the [1, 2^15] range. This value scales the + 16-bit parallel data port input before adding it to the + frequency_offset value. + +What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_phase_offset +KernelVersion: +Contact: linux-iio@vger.kernel.org +Description: + Read/write the parallel port phase offset in radians. Valid range + is [0, 2*pi/256). This sets the lower 8 bits of the phase offset + word (POW register) used as a base during parallel port polar + modulation. + +What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_scale_offset +KernelVersion: +Contact: linux-iio@vger.kernel.org +Description: + Read/write the parallel port amplitude scale offset. Valid range + is [0, 1/256). This sets the lower 6 bits of the amplitude scale + factor (ASF register) used as a base during parallel port polar + modulation. + +What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_destination +KernelVersion: +Contact: linux-iio@vger.kernel.org +Description: + Read/write the digital ramp generator (DRG) or the RAM control + destination parameter. Determines which DDS core parameter is to + be modulated when the child mode channel is enabled. + + Available values can be read from the corresponding + out_altvoltageY_destination_available attribute. + + Valid values: "polar" (only for RAM control), "frequency", "phase" + and "amplitude" + +What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_destination_availa= ble +KernelVersion: +Contact: linux-iio@vger.kernel.org +Description: + Lists the available destination values for the DRG channel: + "frequency phase amplitude"; or for the RAM control channel: + "frequency phase amplitude polar". + +What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_operating_mode +KernelVersion: +Contact: linux-iio@vger.kernel.org +Description: + Read/write the DRG or RAM control operating mode. For the DRG + channel it controls the no-dwell behavior of the ramp. + + Available values can be read from the corresponding + out_altvoltageY_operating_mode_available attribute. + + Valid values for DRG channel: + + - "bidirectional": Normal ramp generation (ramp up then + down, dwelling at limits). + - "ramp_down": No-dwell low; the ramp resets to upper + limit upon reaching the lower limit. + - "ramp_up": No-dwell high; the ramp resets to lower + limit upon reaching the upper limit. + - "bidirectional_continuous": Both no-dwell high and low; + the ramp continuously sweeps without dwelling. + + Valid values for RAM control channel: + + - "direct_switch": start address defines fixed word to be used + by the selected profile. + - "ramp_up": One-shot ramp up through current profile's address + range. + - "bidirectional": Ramp up then down through PROFILE0 pin. + - "bidirectional_continuous": Continuous ramp up/down + through current profile's address range. + - "ramp_up_continuous": Continuous ramp up through + current profile's address range. + - "sequenced": Sequenced playback of RAM profiles up to + the active profile. Requires active profile > 0. + - "sequenced_continuous": Continuous sequenced playback + of RAM profiles up to the active profile. Requires + active profile > 0. + +What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_operating_mode_ava= ilable +KernelVersion: +Contact: linux-iio@vger.kernel.org +Description: + For the DRG channel it lists the available operating mode values: + "bidirectional ramp_down ramp_up bidirectional_continuous". + + For the RAM control channel it lists the available operating mode + values: + "direct_switch ramp_up bidirectional bidirectional_continuous + ramp_up_continuous sequenced sequenced_continuous". + +What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_frequency_step +KernelVersion: +Contact: linux-iio@vger.kernel.org +Description: + Read/write the DRG frequency step size in Hz for ramp up and ramp + down DRG channels. This is the increment/decrement step applied to + the DRG frequency value, which is input to the DDS core and it is + updated at each ramp clock tick when the DRG destination is + set to "frequency". Valid range is [0, sysclk/2). + +What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_phase_step +KernelVersion: +Contact: linux-iio@vger.kernel.org +Description: + Read/write the DRG phase step size in radians for ramp up and ramp + down DRG channels. This is the increment/decrement step applied to + the DRG phase value, which is input to the DDS core and it is + updated at each ramp clock tick when the DRG destination is + set to "phase". Valid range is [0, 2*pi). + +What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_scale_step +KernelVersion: +Contact: linux-iio@vger.kernel.org +Description: + For the DRG ramp up/down channels this is used to read/write the + DRG amplitude step size, which is applied as an + increment/decrement to the DRG amplitude value, input to the DDS + core, updated at each ramp clock tick when the DRG destination is + set to "amplitude". Valid range is [0, 1]. + + For the OSK channel this is used to read/write the automatic OSK + amplitude ramp step size. Writing a non-zero value enables + automatic OSK mode and sets the amplitude step size. Writing "0" + disables automatic OSK mode. The value is rounded to the nearest + hardware supported step: 0.000061, 0.000122, 0.000244, or + 0.000488. + +What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_address_start +KernelVersion: +Contact: linux-iio@vger.kernel.org +Description: + Read/write the RAM start address for the active profile. Defines + the first RAM word address used during playback. Cannot be + changed while RAM mode is enabled. Valid range is [0, 1023]. + If set above the current end address, the end address is + automatically adjusted to match. + +What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_address_end +KernelVersion: +Contact: linux-iio@vger.kernel.org +Description: + Read/write the RAM end address for the active profile. Defines + the last RAM word address used during playback. Cannot be + changed while RAM mode is enabled. Valid range is + [address_start, 1023]. + +What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_pinctrl_en +KernelVersion: +Contact: linux-iio@vger.kernel.org +Description: + Read/write the OSK manual external control enable. Writing '1' + enables manual control of the output amplitude envelope via an + external pin. Writing '0' disables it. When enabled, the OSK pin + directly controls the amplitude on/off state rather than using + the automatic OSK ramp. diff --git a/MAINTAINERS b/MAINTAINERS index 6403439b530d..edd87ee7da5f 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1635,6 +1635,7 @@ M: Rodrigo Alencar L: linux-iio@vger.kernel.org S: Supported W: https://ez.analog.com/linux-software-drivers +F: Documentation/ABI/testing/sysfs-bus-iio-frequency-ad9910 F: Documentation/devicetree/bindings/iio/frequency/adi,ad9910.yaml F: drivers/iio/frequency/ad9910.c =20 --=20 2.43.0