From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-oi1-f173.google.com (mail-oi1-f173.google.com [209.85.167.173]) (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 2398E2E22B5 for ; Sat, 28 Feb 2026 17:18:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.173 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772299107; cv=none; b=qTwxLF5aszih/WiKpub4aDna3T4TRdyWNyjdLHNdbC37ofmy2R7RUjoa7A/DPDEfO10hOtunk0etS51Cj5HjCsLOQu+XZBmbMtwbuOdO+ShyQ3Tu15PfZyKlP+ZhkHe1o755JlfryFCDfXJeh7ileseII6ToP/eLJIvUNSsT0/Q= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772299107; c=relaxed/simple; bh=idqgkYUCHfUYgMSymQu8BsZ7cjUbG0UF6B0RcoRLpdA=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=OQzut6KloMuOPcMNha8mxP/DdcYMpWqYwdLSQLpc39spvRaQ6mVAQLGK3UC4y5E8M9cRuVE6L3p0apjg8vn4o5kHPsC3C/E/+3P8NtmOMs9s//oJq7oDlI1CPGN1ZzCF3//zsYvgNKwO1RNV+aPIvtzCsZtbkZL+9f/9Owy/GvQ= 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=zZJ0CJ/n; arc=none smtp.client-ip=209.85.167.173 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="zZJ0CJ/n" Received: by mail-oi1-f173.google.com with SMTP id 5614622812f47-463a94f8475so2539783b6e.0 for ; Sat, 28 Feb 2026 09:18:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1772299104; x=1772903904; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=zA8twdwXSjWkWc+DO82+Rr7rQ9hV2ihUMWLKEI8UmeY=; b=zZJ0CJ/nlBxsAHlk8lzoi12011FJDvchRy34a4OuJmZXvOgvXGTYRxYEua8iFlN1jK q26v5yfBUeWFVCuRN+bovijeeuZcJ555TmgpKDxQUOJzLSw3BtYy0oLFSfSZmtj7ANHR BeXgzUvfAvuK4hto0+9vUfTd5JaHdx+TT+lNBrqxfBH1LBrryzNUTF498vP9/xoBaLQf iMjOpn38kYg/ladNhSncoq7hb6sUInV8mX+lbtDul+wWTMMm3iUtiQllE0Y1Xt6Z8Tze n61rZ9oqmeOIq4ff2Clr/5l54nDB81oI4hAKKbhx0P3bqawMFAgxlJLF6SqXuXY+x6I+ /Rgg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772299104; x=1772903904; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=zA8twdwXSjWkWc+DO82+Rr7rQ9hV2ihUMWLKEI8UmeY=; b=G569N52NgvUKiExAojKYIZj/eaPoPuUuyusq5jzx8WSfUBmz8UxW5MANd9dBs8J4S3 LuZ9ystHDG+Xq5FQRTDNPrQv9mOty4LcJT7bXfhOJVatw/IU1zi2qNVPGr6wKqV5wMws mt0NwHDw2A6jyK5OOfJ79cqlL6G/fFB289Zp0dlyXhr+ZUqUam7v3ZZH3GOoCyAyaQOK OmMwpPBcUXr/l+vjR8/pQFLOWrLGAmYcwwA80mpmGB0jrzZz/BQVl2gOnwRCvnunNA74 3f2YMlp6+j+FUEjRpqPoQMvXeCcaB1GexOz3OWyY8ZDlRIYTppduxWx21WxV4fMWjlv2 iXCA== X-Forwarded-Encrypted: i=1; AJvYcCVE3qWHB+j2epvqYDgP/BGHD5RHpnlIAjTFQsXWfu7ev874gxJsiJQgXFqUf7VOiYBvwJszdLIrQZGhQVs=@vger.kernel.org X-Gm-Message-State: AOJu0YxogOpJvlwbtDX61fOB5d90Rof8K+YTdSbCSIxwiayPLCiSzpBr Dv8Egafui1yTN6rtALiE4y0caBvqvA4WocAwsnoFsYq8OK1V8FwqtpxOD3z5lI5ZVTw= X-Gm-Gg: ATEYQzzGQC41c9y+hBZrUToAwj63BZHAHuV74qB9HTDObAeSx3TmnMzxtkH4GxUZ/kx dRwtPUjqVnaVRaoXXXlH/6GiY+R2Qj9yEJOJijPt8bJWEoNlxt1f0yXaBzMLWPMV//+iwD7NFUb DrOc2jSkJzQmpwdmsG0xRHDybvUY5Ig87NZFCCT8So2r9oOQCEYXbiXiJS/UAMAODmc3sIqq/Tb H78oYpLnNtE7tHmvAueBGyr7ESgGEH+sAKs2fp6bXSqLtH9BS43MEh4JP+Ll0uh0ZgOhACC5Ssh mJYYA7l75bGCuKYyKakeTtaqKhNLXfhJf0IQbT0fy2gMwBEA4nBkR7ZEKJZeNBMFcLWlQV0WMoX hGkzSE4ulsnIaUrPcc+Aei8h1DWOvj8Fhpyq/Q6C/9M3N1SkK9KXfaMAU4mGazQXiaFYYinCBFS 1kzYsMUiKVYzgXOcIa7sSJUXLpIvvcIGNmrZeAcsGKAbiDkuaqlGfHh8sM3Pal7vy03HjsH0FPt g== X-Received: by 2002:a05:6808:c3ec:b0:45f:1f4:f522 with SMTP id 5614622812f47-464befc2afemr3559447b6e.25.1772299104088; Sat, 28 Feb 2026 09:18:24 -0800 (PST) Received: from ?IPV6:2600:8803:e7e4:500:1031:c44e:9f1f:17c1? ([2600:8803:e7e4:500:1031:c44e:9f1f:17c1]) by smtp.gmail.com with ESMTPSA id 5614622812f47-464bb3ab494sm4143355b6e.8.2026.02.28.09.18.22 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 28 Feb 2026 09:18:23 -0800 (PST) Message-ID: Date: Sat, 28 Feb 2026 11:18:22 -0600 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2 4/4] iio: adc: ad7768-1: add support for SPI offload To: Jonathan Santos , linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org Cc: lars@metafoo.de, Michael.Hennerich@analog.com, jic23@kernel.org, nuno.sa@analog.com, andy@kernel.org, jonath4nns@gmail.com References: <79e1004bd9e618f9376a9ed40389510066b91d1c.1771362939.git.Jonathan.Santos@analog.com> Content-Language: en-US From: David Lechner In-Reply-To: <79e1004bd9e618f9376a9ed40389510066b91d1c.1771362939.git.Jonathan.Santos@analog.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 2/23/26 5:59 AM, Jonathan Santos wrote: > The AD7768-1 family supports sampling rates up to 1 MSPS, which exceeds > the capabilities of conventional triggered buffer operations due to SPI > transaction overhead and interrupt latency. > ... > +static int ad7768_offload_buffer_postenable(struct iio_dev *indio_dev) > +{ > + struct ad7768_state *st = iio_priv(indio_dev); > + struct spi_offload_trigger_config config = { > + .type = SPI_OFFLOAD_TRIGGER_DATA_READY, > + }; > + const struct iio_scan_type *scan_type; > + unsigned int unused; > + int ret; > + > + scan_type = iio_get_current_scan_type(indio_dev, &indio_dev->channels[0]); > + if (IS_ERR(scan_type)) > + return PTR_ERR(scan_type); > + > + st->offload_xfer.len = spi_bpw_to_bytes(scan_type->realbits); > + st->offload_xfer.bits_per_word = scan_type->realbits; > + st->offload_xfer.offload_flags = SPI_OFFLOAD_XFER_RX_STREAM; > + > + spi_message_init_with_transfers(&st->offload_msg, &st->offload_xfer, 1); > + st->offload_msg.offload = st->offload; > + > + ret = spi_optimize_message(st->spi, &st->offload_msg); > + if (ret) { > + dev_err(&st->spi->dev, "failed to prepare offload, err: %d\n", ret); > + return ret; > + } > + > + /* > + * Write a 1 to the LSB of the INTERFACE_FORMAT register to enter > + * continuous read mode. Subsequent data reads do not require an > + * initial 8-bit write to query the ADC_DATA register. > + */ > + ret = regmap_write(st->regmap, AD7768_REG_INTERFACE_FORMAT, 0x01); > + if (ret) > + goto err_unoptimize_message; > + > + ret = spi_offload_trigger_enable(st->offload, st->offload_trigger, > + &config); > + if (ret) > + goto err_exit_continuous_read_mode; > + > + return 0; > + > +err_exit_continuous_read_mode: I wouldn't mind a comment here explaining what this read does. > + regmap_read(st->regmap24, AD7768_REG24_ADC_DATA, &unused); > + > +err_unoptimize_message: > + spi_unoptimize_message(&st->offload_msg); > + > + return ret; > +} ... > +static bool ad7768_offload_trigger_match(struct spi_offload_trigger *trigger, > + enum spi_offload_trigger_type type, > + u64 *args, u32 nargs) > +{ > + if (type != SPI_OFFLOAD_TRIGGER_DATA_READY) > + return false; > + > + /* Requires 1 or 2 args to indicate the trigger output signal */ Would be more clear to say "up to 2 args are allowed, but only 1 is used". > + if (nargs == 0 || nargs > 2 || args[0] != AD7768_TRIGGER_SOURCE_DRDY) > + return false; > + > + return true; > +} > +