Received: by 2002:a05:7412:37c9:b0:e2:908c:2ebd with SMTP id jz9csp2156339rdb; Thu, 21 Sep 2023 10:01:16 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEQwSGahK1MCeADN+MlmgovylDjCs5PA+gUbn5CpXTxQEMoR0Mny/tutPdgrOOK7WB/sD4u X-Received: by 2002:a05:6e02:1d0d:b0:34f:739d:9bec with SMTP id i13-20020a056e021d0d00b0034f739d9becmr7378954ila.31.1695315676141; Thu, 21 Sep 2023 10:01:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695315676; cv=none; d=google.com; s=arc-20160816; b=YLhZkak/xQzrUKN7TCdPEUQGrVggi1gwkzn7h61aWb3SKYebvwQiA8ZEijieE7QSF4 adOduTPC72jigZFU7j0/JIJIucAwsWBgL8TD0RQqh//2x2QvR+3WurfvtoUplBLOWFx3 88HlgQCHCDymtozCx8IMz6eN1xw7OHZQ5KCoAAY4a1KKSKeO+WO7UOc1VeWegA2YROjX zWY1QLyz5vyHdArGK8fmVbN+sYWuD4ZqUIs9lxjK5GghsZFC5gi1rniZOmiZzjn6dqBz 6MDEhU+dwKOwWIQdTvA9Mhyyo4AsazZgph12G9lZw1p/7z7/6JOu+3U0rlEDHMeXt5Rd SqrA== 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=KOpCcNV6j9iTZ27CTjWaCDIdMX1O3RrazUel0O6z0DH8olc3oCuQ4uCo/ZT2KlS+I0 JGX/9bmOLiau+Jr7S2i/R8tbzydSExWGRwqGBVCX0FwZxFooaCJBGM5K5iDqlI46Xyql aYZdlXiD5wjOTGO5QeIUlCizavdkRU8n8tZzuhy4O2AjhhKTpE3uDvLenm/a9oTZv7aB BMvCf/wWRc9WD28lT22TiXIrb5UmwcTbY2UGhzFIC/2XlZysgvi4UwLs+TlHczXvl012 bkstvmB/aQRdfqElDvtmO+l1c9C6qPHEPhscGb3zXrncrwUSYNkh4/xRKLW2auhacADg p8tQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@baylibre-com.20230601.gappssmtp.com header.s=20230601 header.b=uqTYfFEe; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from pete.vger.email (pete.vger.email. [23.128.96.36]) by mx.google.com with ESMTPS id u14-20020a63f64e000000b00565f37c5472si1782046pgj.781.2023.09.21.10.01.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Sep 2023 10:01:16 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 as permitted sender) client-ip=23.128.96.36; Authentication-Results: mx.google.com; dkim=pass header.i=@baylibre-com.20230601.gappssmtp.com header.s=20230601 header.b=uqTYfFEe; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 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 pete.vger.email (Postfix) with ESMTP id 6081F80BF1FF; Thu, 21 Sep 2023 10:00:28 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at pete.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229625AbjIUQ7m (ORCPT + 99 others); Thu, 21 Sep 2023 12:59:42 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51628 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229634AbjIUQ7g (ORCPT ); Thu, 21 Sep 2023 12:59:36 -0400 Received: from mail-lj1-x236.google.com (mail-lj1-x236.google.com [IPv6:2a00:1450:4864:20::236]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D38971FD7 for ; Thu, 21 Sep 2023 09:58:52 -0700 (PDT) Received: by mail-lj1-x236.google.com with SMTP id 38308e7fff4ca-2bffc55af02so20982981fa.2 for ; Thu, 21 Sep 2023 09:58:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1695315526; x=1695920326; 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=uqTYfFEeeWgBsPBStdNoN6apMlc4EyrOu2AbgpXVG4DcUx9ILbxXSOwXzWM+PPzlC6 ub+ecZiA98fguJ3K6NHrGtHFV8IjM0kA8iBvcp6A7NOEi86ZQIg+0AGOfCYYe3YrXT/n Bv35QgNrfgOjoYWPbr6cXj8TlXSmG7QbuwptozoSmQ0wluy65JKlaf4PVvIk9Cc6Kzgf 2NZdiAdOhr4M6jHxBZobLTnCeg34hKX172wpU68rt/S7CiU+1QLJMx1opmc+k6F0rPor CBCeLqRp+kICmN0PaCZ7iVLdiQiA1NfUJBcTLL0xQZinJ5JgY7QFx7pZxrMKfK9ac9fc sDcA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695315526; x=1695920326; 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=rTqGW5p5ZMk9rphJzV4YVQeWyt0yIeqg/QlKlCnRJ5qnv1KxYTCN1k1PTvRPlSvyXO uQe/jPrlBBCJOy15Z0YhHUVWVRQBpjuIGZ+Hjsdc0SbELFntKl3P5qNb/uQgNPy2qoHP 8Wd1NXguIlBGHjdu+SPcgrA0gzWW02Ywn3jMOOYDteZiKkbXmBLIoXyiRBMO/N2jfN9v nS4ihZDTbzgc893OoyPciJ3HyZ2aIwsKQoby7rrGjRU66HIO7AlJUnJsuHC6ZwnmLi42 FLPft6Tv/T2bH7OZzWqV+jF/XbaFnimxoFY3WH+UZU6EBlYPxJ8+V8N7DA86a2yfoFnX 0kuA== X-Gm-Message-State: AOJu0Yx9DbhdxLnn1cpqS6r0zBkId4900uZ7ZNj/fcLknQMLRvBPuAO/ igYSbI2SnNilHwMevUSzqLOaIL4wxJBwfOoxrPzdtKE7 X-Received: by 2002:a1c:7718:0:b0:401:d803:6242 with SMTP id t24-20020a1c7718000000b00401d8036242mr5422512wmi.27.1695307464880; Thu, 21 Sep 2023 07:44:24 -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 s17-20020a1cf211000000b003fe2a40d287sm2125515wmc.1.2023.09.21.07.44.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Sep 2023 07:44:24 -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: [PATCH v2 14/19] staging: iio: resolver: ad2s1210: refactor setting excitation frequency Date: Thu, 21 Sep 2023 09:43:55 -0500 Message-Id: <20230921144400.62380-15-dlechner@baylibre.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230921144400.62380-1-dlechner@baylibre.com> References: <20230921144400.62380-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 pete.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 (pete.vger.email [0.0.0.0]); Thu, 21 Sep 2023 10:00:29 -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