From patchwork Tue Oct 10 21:12:34 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Lechner X-Patchwork-Id: 150967 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2908:b0:403:3b70:6f57 with SMTP id ib8csp139934vqb; Tue, 10 Oct 2023 14:13:52 -0700 (PDT) X-Google-Smtp-Source: AGHT+IH9bkzavXxqykNUig/t8AhFcc6P+ZEH0vcIwp7k95r0yDV35Wrci5O4AQ/8l3tez3uvZ1FB X-Received: by 2002:a17:902:f54e:b0:1bb:d7d4:e2b with SMTP id h14-20020a170902f54e00b001bbd7d40e2bmr21869027plf.0.1696972432179; Tue, 10 Oct 2023 14:13:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1696972432; cv=none; d=google.com; s=arc-20160816; b=IW8lobg8jLHk5VquqtkXPkcYeAr3GFDjI8I+z42a2kEGThKA5XUJWrB4yzWzsw8AI8 OiIr70isocv4RV/4R3jfXYp/55JhuSTnWECcOD1A9vbRVxbP6m50PX6Kx/zKsb9PqHpH 2RUr0a7ib+QkUBlupqDw54S9L8VLpQP48BjXOaIEwJMBUUyI8U6sV/6Q6gJ1RV2fxMnE gXKlMuVtoe8XBVzfpI50leq4DuCdpdJP8X01ceR6uYZROIActoToCCsIefFyYb2Z4wzI HtidVnZIg6LXtscArdIuNRks8J/VjFFiwBmsqUk3g5tAxYDh+SvZ4e2FQ9OzEh/L2LKZ cCzw== 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=5DYF1hS/5DymrCK+wzJy8sJOlUG28zHWF8r/ohf2D3c=; fh=kszEk+gff9dv1Go/VyZgnfqxXXEwVKycZ4FkCeISyE4=; b=yWFDxtd9Lt1tOvcUYtsCvNLJLJWFRst5yYcOp+7BlMhULoaTPU/qdZV+fomX91bjWk A5mygjXgBjKW/6eC+ZnEPWeThebqEaqQCBF355vQZIvsKYbOgaWFYXd5GewdrPoDk7NA wiRFnhWiNYCS2nKHgmSg2CTGclY9b3lCdqofbpUpijl9b4hC1coNuuYXzCe9GXQs+1Eb k/3wBFRzETigFn6WseRWxXx6HdgvnbzQYs4PeF8uLoWOLjLTRYMYiVM4bDuzZx/bYdTW 3FIBtOKNbmaZKJ8s8ULqzXNaQO7CWmuB/ZmTZXgI6Yk5VIumqUHID0P/t0EDkCzmLiwb sEvQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@baylibre-com.20230601.gappssmtp.com header.s=20230601 header.b=s3mcMq8j; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from lipwig.vger.email (lipwig.vger.email. [2620:137:e000::3:3]) by mx.google.com with ESMTPS id ld13-20020a170902facd00b001c5bb1f0cccsi12143125plb.275.2023.10.10.14.13.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Oct 2023 14:13:52 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) client-ip=2620:137:e000::3:3; Authentication-Results: mx.google.com; dkim=pass header.i=@baylibre-com.20230601.gappssmtp.com header.s=20230601 header.b=s3mcMq8j; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 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 lipwig.vger.email (Postfix) with ESMTP id 2FE21807D0E9; Tue, 10 Oct 2023 14:13:50 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1343991AbjJJVND (ORCPT + 19 others); Tue, 10 Oct 2023 17:13:03 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52392 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234598AbjJJVM6 (ORCPT ); Tue, 10 Oct 2023 17:12:58 -0400 Received: from mail-ot1-x32c.google.com (mail-ot1-x32c.google.com [IPv6:2607:f8b0:4864:20::32c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4FAE79E for ; Tue, 10 Oct 2023 14:12:56 -0700 (PDT) Received: by mail-ot1-x32c.google.com with SMTP id 46e09a7af769-6c63588b554so4172414a34.0 for ; Tue, 10 Oct 2023 14:12:56 -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=5DYF1hS/5DymrCK+wzJy8sJOlUG28zHWF8r/ohf2D3c=; b=s3mcMq8j3JSUASvkKDnNiZnuvk5b5lyGFJs5G+sHN2deakumu5WD2vpRyzJr514x22 XsGm5RK4Y4OayeyMk/Qne5g319Fh2PtYzV0+4XZMzod9rfDE18F/ivF98+aw/3Z96Ux3 oLrNrHODpCbTqX1CUylh78pT7bflW5gHGcSbZZZYCoct7J3Nif2Z1DZvNSdmsylhhtrs 6KqcxYPYyCYOlmiG5Yd3U3SVn/goP7Iclx8kRvK0eagaBFMz94fQOQP7UuqYAaHQnEay fIftmNp1XKd5qoFBNUfI/DlNUlB9yX0FX6/5ddfq9NsN4k+/jNcEVVL/kpBdzmzpBmbw M0uQ== 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=5DYF1hS/5DymrCK+wzJy8sJOlUG28zHWF8r/ohf2D3c=; b=NMLDHHI8MIEWNNTlkZk/010Kxl7j+oEjssUpE3yHNdBagLCeZUIgkqKap8jIhPfjo8 jOuwZhr/n7nDL6PX8/qoUoFCmUPj4q4Hd81UGgL6VqEw7VxiHUHTuzytnFhTMbAv1H7f pkFG8yD70qYVaxEs/UvrW+AjcFtBQe+2mWO8dOhEKL5AmHUhDoyLPtgJxWsdKhlQL5GJ kq3IyxxnyHnGs3AgdZV5dykWyQIwAc0Lz7FmYDZGkKpH+Pq285w1iFkuHzga5oi/eET+ t/2e8ZoOCleY53UVN8LIbrKZXmWMZPPiuQdYfcnlQfESR9xw+h8cgrqDAM2ntuHxo3TV Ig3w== X-Gm-Message-State: AOJu0Yzj60HNBiKyG23E9bTN7wuHFYo8g1QJ0+ObFDg249tAmGADgVV8 r2kmkPamOPewKFaQVLvKsDtGzw== X-Received: by 2002:a05:6870:2198:b0:1c1:e6da:f88d with SMTP id l24-20020a056870219800b001c1e6daf88dmr22531136oae.56.1696972375541; Tue, 10 Oct 2023 14:12:55 -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:55 -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 2/4] staging: iio: resolver: ad2s1210: clear faults after soft reset Date: Tue, 10 Oct 2023 16:12:34 -0500 Message-ID: <20231010-ad2s1210-mainline-v5-2-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=2.8 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_SBL_CSS, SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email 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 (lipwig.vger.email [0.0.0.0]); Tue, 10 Oct 2023 14:13:50 -0700 (PDT) X-Spam-Level: ** X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1779404564923447697 X-GMAIL-MSGID: 1779404564923447697 When a software reset is performed on the AD2S1210 to make the selected excitation frequency take effect, it always triggers faults on the input signals because the output signal is interrupted momentarily. So we need to clear the faults after the software reset to avoid triggering fault events the next time a sample is read. The datasheet specifies a time t[track] in Table 27 that specifies the settle time in milliseconds after a reset depending on the selected resolution. This is used in the driver to add an appropriate delay. Signed-off-by: David Lechner --- v5 changes: New patch in v5. drivers/staging/iio/resolver/ad2s1210.c | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/drivers/staging/iio/resolver/ad2s1210.c b/drivers/staging/iio/resolver/ad2s1210.c index 59c273a4b6a9..cf4018434447 100644 --- a/drivers/staging/iio/resolver/ad2s1210.c +++ b/drivers/staging/iio/resolver/ad2s1210.c @@ -314,6 +314,9 @@ static void ad2s1210_toggle_sample_line(struct ad2s1210_state *st) static int ad2s1210_reinit_excitation_frequency(struct ad2s1210_state *st, u16 fexcit) { + /* Map resolution to settle time in milliseconds. */ + static const int track_time_ms[] = { 10, 20, 25, 60 }; + unsigned int ignored; int ret; u8 fcw; @@ -329,7 +332,27 @@ static int ad2s1210_reinit_excitation_frequency(struct ad2s1210_state *st, * Software reset reinitializes the excitation frequency output. * It does not reset any of the configuration registers. */ - return regmap_write(st->regmap, AD2S1210_REG_SOFT_RESET, 0); + ret = regmap_write(st->regmap, AD2S1210_REG_SOFT_RESET, 0); + if (ret < 0) + return ret; + + /* + * Soft reset always triggers some faults due the change in the output + * signal so clear the faults too. We need to delay for some time + * (what datasheet calls t[track]) to allow things to settle before + * clearing the faults. + */ + msleep(track_time_ms[st->resolution] * 8192000 / st->clkin_hz); + + /* Reading the fault register clears the faults. */ + ret = regmap_read(st->regmap, AD2S1210_REG_FAULT, &ignored); + if (ret < 0) + return ret; + + /* Have to toggle sample line to get fault output pins to reset. */ + ad2s1210_toggle_sample_line(st); + + return 0; } static void ad2s1210_push_events(struct iio_dev *indio_dev,