From patchwork Tue Oct 10 21:12:33 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Lechner X-Patchwork-Id: 150964 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2908:b0:403:3b70:6f57 with SMTP id ib8csp139614vqb; Tue, 10 Oct 2023 14:13:11 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHv86XeYWsqomOgRkv5+P9XNmOu7BHZKOCGaR3k/X4mC2D4F5MICDyVwAxbRbXV+tvheyac X-Received: by 2002:a05:6a20:1584:b0:15d:f804:6907 with SMTP id h4-20020a056a20158400b0015df8046907mr23699179pzj.0.1696972391177; Tue, 10 Oct 2023 14:13:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1696972391; cv=none; d=google.com; s=arc-20160816; b=vEhg3NGivWks6QotLXJ5VAe+9zivAepM5G381EfsKTZP7JYLGwa5GFb1oI1hwl4f8X EY8VYJCf5IJ7Tm+lL710U7EGv7W1hMsj4t6SW2KcAzndvOBZ7CKIQy5AWL7gLbO7qjEy mGsEuOBA1H87B4l19LBJWUMQWZG+QL4lfi6l1RA7wbCqZAv5hE0ixTtihGofMScDnL6e xcPC2/RxHm+MNdjqh/Iqdnxoh90mk85RsAAsz1Rxi6k1/VJQVhRRMdnexhRBNLFKYvbJ 0UJk3dXJDgCuozhFdRuTCeGwiW9en6TzkbjpaxTZXBSzjpyMqiADhb6EvP679xDPpjnK 71wA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=7dl0PVkUbqTQUh7CeF07K0JAD05VmhLtJ0L4pxcpgSQ=; fh=kszEk+gff9dv1Go/VyZgnfqxXXEwVKycZ4FkCeISyE4=; b=GLldZxiFRJ3/ma3ICYu24/dUptElkXAfO50faa/IlhSNy+dKB7vfYhtVj2Vjnh91rW 1wBsb9zZSJSv/59nKk7wwLgtmxYvB3aoLaOxPst7AMiH1D6HaK6ivjYK6UcI9Ocvh1ny DIYtLPed3AH6+/NfCtoBx7m5f9dn1PLrTbSw4lLdx8FICs0jClVr20Hkq3OqK3IPwpJG 1TFuI5r2sMLrPKtOTut2WyNI7UB47ppbR3zRg8F/ZqjFgZmkDGhTGg4S6pWlQRAFIyC6 i2UMB6JEdXipXqJEQjp0KORCJpHiHgEn2Z1vsqckhLwcfuiQqg0B/0FEMOHnKy/Y7xrW 8wXQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@baylibre-com.20230601.gappssmtp.com header.s=20230601 header.b=3DdiKNuX; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from snail.vger.email (snail.vger.email. [2620:137:e000::3:7]) by mx.google.com with ESMTPS id cb4-20020a056a00430400b00690d8405fe6si10040165pfb.317.2023.10.10.14.13.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Oct 2023 14:13:11 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) client-ip=2620:137:e000::3:7; Authentication-Results: mx.google.com; dkim=pass header.i=@baylibre-com.20230601.gappssmtp.com header.s=20230601 header.b=3DdiKNuX; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 6C4EA801BA5B; Tue, 10 Oct 2023 14:13:10 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1343964AbjJJVNB (ORCPT + 19 others); Tue, 10 Oct 2023 17:13:01 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52380 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234546AbjJJVM6 (ORCPT ); Tue, 10 Oct 2023 17:12:58 -0400 Received: from mail-oa1-x2e.google.com (mail-oa1-x2e.google.com [IPv6:2001:4860:4864:20::2e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BA46798 for ; Tue, 10 Oct 2023 14:12:55 -0700 (PDT) Received: by mail-oa1-x2e.google.com with SMTP id 586e51a60fabf-1dd1714b9b6so4248478fac.0 for ; Tue, 10 Oct 2023 14:12:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1696972375; x=1697577175; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=7dl0PVkUbqTQUh7CeF07K0JAD05VmhLtJ0L4pxcpgSQ=; b=3DdiKNuXIbm+BaIGBuSLXIhp/76erp9K6yOykYfDGiQCNoO+E/nXhy5Sid4PT7Sppu 66i2p2yTXUg6B0oLK17QZ+QqM/MHeM+x+LCIk5oaIfpS7SBAhbBMg9BV4yA4YKG1uHTF K2RY+nS1eZWpjfa092PQOls3szKl7pkgPEP/lvZ82qBiiMSEtpBWtRhl5SpX+swLVFdq GX2zyEjdwyTJfLOTK8zlX9Bce8uq5rfckbCx3m+H9iUNZU8zYR8W1uqKFyXQyDUPCORv AWORnz5GR01lMIfBi5G/cYSquCZZfqu1UWvG+2CVE8q22kUlU6xs2eDLmG2KSat/N38k RWog== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1696972375; x=1697577175; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=7dl0PVkUbqTQUh7CeF07K0JAD05VmhLtJ0L4pxcpgSQ=; b=P0rbBS0sbvAa+90g+9Z+s4aZ1rdDdm494etvZHIz6EpuatfuTyxtZGISc+1BENPxAr lXeL6rlx61cAzvaeY6Z7PPQQo+pmc+8vSClCQdJM+RIenpl5MrCmY1T3PskEEkQ3rpTq A7gayWTNhuTTMDMDYTxWXTdo+T+ixP5JqIKorxd0ytwVI8voCmkSP/Sfj/Sdz+l5/hG4 DDGd8vPu8DUJAGbB7VtyJB4lh0pjZpdnKhNdOWyDJOfMPSSaIVxjw3jUb3y9CG/BpYK1 JmWOGP7Vqy+kH9s49iMvscVELnf+do+1rXt1A5nLtj5ym0UgTjEp262EvCxECChIwbc/ BJDQ== X-Gm-Message-State: AOJu0Yz0rvi4sTk7SR7kRV1q16mquwFaneysbgH31uIWrs90bx3IPR9d jc0kalHfvIH49NXpyC1tpWMVMA== X-Received: by 2002:a05:6870:2326:b0:1bb:8867:f7ed with SMTP id w38-20020a056870232600b001bb8867f7edmr23858681oao.33.1696972374798; Tue, 10 Oct 2023 14:12:54 -0700 (PDT) Received: from freyr.lechnology.com (ip98-183-112-25.ok.ok.cox.net. [98.183.112.25]) by smtp.gmail.com with ESMTPSA id ed46-20020a056870b7ae00b001e98b1544fesm52494oab.9.2023.10.10.14.12.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Oct 2023 14:12:54 -0700 (PDT) From: David Lechner To: linux-iio@vger.kernel.org, linux-staging@lists.linux.dev Cc: David Lechner , Jonathan Cameron , Michael Hennerich , =?utf-8?q?Nuno_S=C3=A1?= , Axel Haslam , Philip Molloy , linux-kernel@vger.kernel.org Subject: [PATCH v5 1/4] staging: iio: resolver: ad2s1210: refactor sample toggle Date: Tue, 10 Oct 2023 16:12:33 -0500 Message-ID: <20231010-ad2s1210-mainline-v5-1-35a0f6ffa04a@baylibre.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231010-ad2s1210-mainline-v5-0-35a0f6ffa04a@baylibre.com> References: <20231010-ad2s1210-mainline-v5-0-35a0f6ffa04a@baylibre.com> MIME-Version: 1.0 X-Mailer: b4 0.12.3 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Tue, 10 Oct 2023 14:13:10 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1779404522172161435 X-GMAIL-MSGID: 1779404522172161435 This refactors the sample line toggle in the ad2s1210 resolver driver to a separate function. The sample has some timing requirements, so this ensures that it is always done the same way, both in the existing call sites and any future usage. Previously, the sample line was kept on for the duration of the read, but this is not necessary. Data is latched in on the rising edge and after the specified delay the state of the sample line does not matter. Signed-off-by: David Lechner --- v5 changes: New patch in v5. drivers/staging/iio/resolver/ad2s1210.c | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/drivers/staging/iio/resolver/ad2s1210.c b/drivers/staging/iio/resolver/ad2s1210.c index e0bea3c68664..59c273a4b6a9 100644 --- a/drivers/staging/iio/resolver/ad2s1210.c +++ b/drivers/staging/iio/resolver/ad2s1210.c @@ -286,6 +286,26 @@ static int ad2s1210_regmap_reg_read(void *context, unsigned int reg, return 0; } +/* + * Toggles the SAMPLE line on the AD2S1210 to latch in the current position, + * velocity, and faults. + * + * Must be called with lock held. + */ +static void ad2s1210_toggle_sample_line(struct ad2s1210_state *st) +{ + /* + * Datasheet specifies minimum hold time t16 = 2 * tck + 20 ns. So the + * longest time needed is when CLKIN is 6.144 MHz, in which case t16 + * ~= 350 ns. The same delay is also needed before re-asserting the + * SAMPLE line. + */ + gpiod_set_value(st->sample_gpio, 1); + ndelay(350); + gpiod_set_value(st->sample_gpio, 0); + ndelay(350); +} + /* * Sets the excitation frequency and performs software reset. * @@ -405,10 +425,8 @@ static int ad2s1210_single_conversion(struct iio_dev *indio_dev, int ret; mutex_lock(&st->lock); - gpiod_set_value(st->sample_gpio, 1); + ad2s1210_toggle_sample_line(st); timestamp = iio_get_time_ns(indio_dev); - /* delay (6 * tck + 20) nano seconds */ - udelay(1); switch (chan->type) { case IIO_ANGL: @@ -444,9 +462,6 @@ static int ad2s1210_single_conversion(struct iio_dev *indio_dev, ad2s1210_push_events(indio_dev, st->sample.fault, timestamp); error_ret: - gpiod_set_value(st->sample_gpio, 0); - /* delay (2 * tck + 20) nano seconds */ - udelay(1); mutex_unlock(&st->lock); return ret; } @@ -1268,7 +1283,7 @@ static irqreturn_t ad2s1210_trigger_handler(int irq, void *p) mutex_lock(&st->lock); memset(&st->scan, 0, sizeof(st->scan)); - gpiod_set_value(st->sample_gpio, 1); + ad2s1210_toggle_sample_line(st); if (test_bit(0, indio_dev->active_scan_mask)) { ret = ad2s1210_set_mode(st, MOD_POS); @@ -1298,7 +1313,6 @@ static irqreturn_t ad2s1210_trigger_handler(int irq, void *p) iio_push_to_buffers_with_timestamp(indio_dev, &st->scan, pf->timestamp); error_ret: - gpiod_set_value(st->sample_gpio, 0); mutex_unlock(&st->lock); iio_trigger_notify_done(indio_dev->trig);