Received: by 2002:a05:7412:37c9:b0:e2:908c:2ebd with SMTP id jz9csp2399735rdb; Thu, 21 Sep 2023 18:43:36 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHYRD8TrOiTyZpT3k0+0PoAbIioOayTpIVFwEcYNimqPtJ2rS7zlXZ27nJhsoyeaAT3+q7i X-Received: by 2002:a05:6102:3563:b0:452:5a4f:21ad with SMTP id bh3-20020a056102356300b004525a4f21admr7816852vsb.18.1695347015772; Thu, 21 Sep 2023 18:43:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695347015; cv=none; d=google.com; s=arc-20160816; b=EaSgTOIKa2BZ8WpNfYXw/MzkVFazLH+v0pV6IrkbN4Rh85K79Di7AfnyCftdFTG4op 8XIb2qD4uVFn2zbS/2HUhQ3p9CXBztprYYDB4GsgfOMYF4XrxU13PxKmqY2IXIu5NLS2 8wv0Spjo0Na6UQeJiE4rR2gU6Lw9orLZB2XfOgQQGAdgln80KT6QOX/ZnX0x4ur5FBBM SH4IcJXexJH5fBILl0ubUb0KmptMHASzollER2gUKyIMnievk+2X2RKKvNlv9oTYVnWm qw2BB26o++KIY0XuM6cGSP1qjgzfgN7vF9psHXyFJnTdKiRFBu08KVpqHCaO89XjoOaM BNIQ== 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=lWgDNsrrXF5syWEsVgdKbxr1ASE09oFAZQly/Ty6i74=; fh=rOC7q8UJisRayejF6PsoKdRfRTtXVZOwgDCXOG0B/ws=; b=mqfNLrLH9ZBNuqqkd5fquvwGfez2Eb1X4gmEfF6B7HtCUaLIAVi7NBvs6D55tlzamD EKZpPbfNcVd3hQq4S8uYguE/iNe0Qfq4ZwzwkAWvM5ziXGLyuMLYHPd4TWYAt+20pC5C wPa1LPhF0ZZvYB5eeG39QzaeyWOQVTc6VR1jkiY09CXaBAM4Es0L7c20GmyLj280StHV BZw2R9slWP/Sc6KVq3fLU/3nF1QLuaxR5U3EDG9c+l5h5Q2Bbz2RtMuo3f/0qfrOhV5c hZp127/rkJVOxtYIbnnYsOjzIo7WWQNo4Sl1oZr511n/qDahZ9EgzxjyVyxN/72JPuSU z2hw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@baylibre-com.20230601.gappssmtp.com header.s=20230601 header.b=wNowJkgm; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from morse.vger.email (morse.vger.email. [23.128.96.31]) by mx.google.com with ESMTPS id s3-20020a656443000000b00577549e67c8si2639512pgv.601.2023.09.21.18.43.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Sep 2023 18:43:35 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 as permitted sender) client-ip=23.128.96.31; Authentication-Results: mx.google.com; dkim=pass header.i=@baylibre-com.20230601.gappssmtp.com header.s=20230601 header.b=wNowJkgm; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 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 morse.vger.email (Postfix) with ESMTP id 6C72E836D606; Thu, 21 Sep 2023 12:29:41 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at morse.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230391AbjIUT31 (ORCPT + 99 others); Thu, 21 Sep 2023 15:29:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43758 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230036AbjIUT3J (ORCPT ); Thu, 21 Sep 2023 15:29:09 -0400 Received: from mail-wr1-x434.google.com (mail-wr1-x434.google.com [IPv6:2a00:1450:4864:20::434]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 632BE5FCB for ; Thu, 21 Sep 2023 10:09:08 -0700 (PDT) Received: by mail-wr1-x434.google.com with SMTP id ffacd0b85a97d-3214cdb4b27so1214881f8f.1 for ; Thu, 21 Sep 2023 10:09:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1695316146; x=1695920946; 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=lWgDNsrrXF5syWEsVgdKbxr1ASE09oFAZQly/Ty6i74=; b=wNowJkgm6tzUaoI+x4w+v7mhL0Je6UPMVV6SPamP70hGNqS0OdnuM0NLABwqkn2TJJ yk3G6DPz+bdazgIQky6vh+hEwV1xjvjKf5RIE8NISFIc8BF8wZDyaLUcFn2JAOBdimAw p7YWei25EKwHnkVr9+a3FMTN9Ee7GMdfm6qTHxrAvUI4GmYNiQVODhCgYGfr83JlIZMz vMV5eQolyO9fSEiGA/ioNpaCwdudGyWJlxkKxwjspVnC97WRgijnLLjsgbHRfd0COs4Z Y6NdBRdCiFGj53RBKP8jo/wdyZlR1vBXPnam7C1UOi2x0XCRi7diNnXxry0UXrmrwDYJ a9bA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695316146; x=1695920946; 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=lWgDNsrrXF5syWEsVgdKbxr1ASE09oFAZQly/Ty6i74=; b=EiKDgDzVTnsdiKjgIQzgr+WpnBhKJD0iMBxE7MYztnHgjga5/xsTCGCS/2kg6RD8oI jHOX3YU49Jcfr3MsnhS1fM099GdvtOlSLBWBnDku58W4rQCqa3YGixWDhh0UjRQnyyjH e3UxaMaepT9jR6M8hwNox7iEIhT7M/7feK9lRY4GtVjCbcDQw40o1r93rALTJg6vQ8B6 PKuUzwWOtnNeJKmw76jZJoVYJqpzJmvbz59q2hss2JnB3Aa+VuD8qp5JohKkVWx7j6HZ e5s7HUZ4x/WOxqvCmTrjFBQpfLpKIVfkLFaWtbwxB11UcAAqRQ16ycdbO24FyMupsT1P u3mQ== X-Gm-Message-State: AOJu0YzLQt7cF2eJOU+kL0Oa7NRBKKBkgPTPq3+KIHc3ju/+LR/UW+7K HDTlEDt6xQoKw7gZ8+SSSc/0VxFdLQUy58Ay4+Q0Tgzz X-Received: by 2002:a5d:5192:0:b0:320:9e2:b3a2 with SMTP id k18-20020a5d5192000000b0032009e2b3a2mr4841480wrv.33.1695306164753; Thu, 21 Sep 2023 07:22:44 -0700 (PDT) Received: from localhost.localdomain (abordeaux-655-1-129-86.w90-5.abo.wanadoo.fr. [90.5.10.86]) by smtp.gmail.com with ESMTPSA id n11-20020a5d4c4b000000b0031fbbe347ebsm1901426wrt.22.2023.09.21.07.22.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Sep 2023 07:22:44 -0700 (PDT) From: David Lechner To: linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-staging@lists.linux.dev Cc: linux-kernel@vger.kernel.org, Jonathan Cameron , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Michael Hennerich , =?UTF-8?q?Nuno=20S=C3=A1?= , Axel Haslam , Philip Molloy , David Lechner Subject: [v2 14/19] staging: iio: resolver: ad2s1210: refactor setting excitation frequency Date: Thu, 21 Sep 2023 09:19:42 -0500 Message-Id: <20230921141947.57784-17-dlechner@baylibre.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230921141947.57784-1-dlechner@baylibre.com> References: <20230921141947.57784-1-dlechner@baylibre.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,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 morse.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 (morse.vger.email [0.0.0.0]); Thu, 21 Sep 2023 12:29:43 -0700 (PDT) This combines the ad2s1210_update_frequency_control_word() and ad2s1210_soft_reset() functions into a single function since they both have to be called together. Also clean up a few things while touching this: - move AD2S1210_DEF_EXCIT macro with similar macros - remove unnecessary dev_err() calls Signed-off-by: David Lechner --- drivers/staging/iio/resolver/ad2s1210.c | 63 ++++++++++++------------- 1 file changed, 31 insertions(+), 32 deletions(-) diff --git a/drivers/staging/iio/resolver/ad2s1210.c b/drivers/staging/iio/resolver/ad2s1210.c index fe413759deb9..f1ffee34ebbc 100644 --- a/drivers/staging/iio/resolver/ad2s1210.c +++ b/drivers/staging/iio/resolver/ad2s1210.c @@ -53,12 +53,11 @@ #define AD2S1210_MIN_CLKIN 6144000 #define AD2S1210_MAX_CLKIN 10240000 #define AD2S1210_MIN_EXCIT 2000 +#define AD2S1210_DEF_EXCIT 10000 #define AD2S1210_MAX_EXCIT 20000 #define AD2S1210_MIN_FCW 0x4 #define AD2S1210_MAX_FCW 0x50 -#define AD2S1210_DEF_EXCIT 10000 - enum ad2s1210_mode { MOD_POS = 0b00, MOD_VEL = 0b01, @@ -184,18 +183,29 @@ static int ad2s1210_regmap_reg_read(void *context, unsigned int reg, return 0; } -static inline -int ad2s1210_update_frequency_control_word(struct ad2s1210_state *st) +/* + * Sets the excitation frequency and performs software reset. + * + * Must be called with lock held. + */ +static int ad2s1210_set_excitation_frequency(struct ad2s1210_state *st, + u16 fexcit) { - unsigned char fcw; + int ret; + u8 fcw; - fcw = (unsigned char)(st->fexcit * (1 << 15) / st->fclkin); - if (fcw < AD2S1210_MIN_FCW || fcw > AD2S1210_MAX_FCW) { - dev_err(&st->sdev->dev, "ad2s1210: FCW out of range\n"); + fcw = fexcit * (1 << 15) / st->fclkin; + if (fcw < AD2S1210_MIN_FCW || fcw > AD2S1210_MAX_FCW) return -ERANGE; - } - return regmap_write(st->regmap, AD2S1210_REG_EXCIT_FREQ, fcw); + ret = regmap_write(st->regmap, AD2S1210_REG_EXCIT_FREQ, fcw); + if (ret < 0) + return ret; + + st->fexcit = fexcit; + + /* software reset reinitializes the excitation frequency output */ + return regmap_write(st->regmap, AD2S1210_REG_SOFT_RESET, 0); } static int ad2s1210_set_resolution_gpios(struct ad2s1210_state *st, @@ -210,11 +220,6 @@ static int ad2s1210_set_resolution_gpios(struct ad2s1210_state *st, bitmap); } -static inline int ad2s1210_soft_reset(struct ad2s1210_state *st) -{ - return regmap_write(st->regmap, AD2S1210_REG_SOFT_RESET, 0); -} - static ssize_t ad2s1210_show_fexcit(struct device *dev, struct device_attribute *attr, char *buf) @@ -229,27 +234,24 @@ static ssize_t ad2s1210_store_fexcit(struct device *dev, const char *buf, size_t len) { struct ad2s1210_state *st = iio_priv(dev_to_iio_dev(dev)); - unsigned int fexcit; + u16 fexcit; int ret; - ret = kstrtouint(buf, 10, &fexcit); - if (ret < 0) - return ret; - if (fexcit < AD2S1210_MIN_EXCIT || fexcit > AD2S1210_MAX_EXCIT) { - dev_err(dev, - "ad2s1210: excitation frequency out of range\n"); + ret = kstrtou16(buf, 10, &fexcit); + if (ret < 0 || fexcit < AD2S1210_MIN_EXCIT || fexcit > AD2S1210_MAX_EXCIT) return -EINVAL; - } + mutex_lock(&st->lock); - st->fexcit = fexcit; - ret = ad2s1210_update_frequency_control_word(st); + ret = ad2s1210_set_excitation_frequency(st, fexcit); if (ret < 0) goto error_ret; - ret = ad2s1210_soft_reset(st); + + ret = len; + error_ret: mutex_unlock(&st->lock); - return ret < 0 ? ret : len; + return ret; } static ssize_t ad2s1210_show_resolution(struct device *dev, @@ -624,10 +626,8 @@ static int ad2s1210_initial(struct ad2s1210_state *st) if (ret < 0) goto error_ret; - ret = ad2s1210_update_frequency_control_word(st); - if (ret < 0) - goto error_ret; - ret = ad2s1210_soft_reset(st); + ret = ad2s1210_set_excitation_frequency(st, AD2S1210_DEF_EXCIT); + error_ret: mutex_unlock(&st->lock); return ret; @@ -773,7 +773,6 @@ static int ad2s1210_probe(struct spi_device *spi) mutex_init(&st->lock); st->sdev = spi; st->resolution = 12; - st->fexcit = AD2S1210_DEF_EXCIT; ret = ad2s1210_setup_clocks(st); if (ret < 0) -- 2.34.1