From patchwork Thu Sep 21 14:19:28 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Lechner X-Patchwork-Id: 143011 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:172:b0:3f2:4152:657d with SMTP id h50csp5212698vqi; Thu, 21 Sep 2023 16:46:42 -0700 (PDT) X-Google-Smtp-Source: AGHT+IH+gPQA9Ro3JgDOTT3cJ3DTNr8KxJUno4FOTGJLVwz/F6RWokfkdRf84CWe88azFvch3Fcb X-Received: by 2002:a17:90b:1056:b0:273:4672:98b5 with SMTP id gq22-20020a17090b105600b00273467298b5mr6310311pjb.42.1695340002150; Thu, 21 Sep 2023 16:46:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695340002; cv=none; d=google.com; s=arc-20160816; b=H5JS/sRBCgmEEKVoxsMNszrmYHofJKveTc4PzgIdauFn0QQgtySN1zajpy432INI0R adfjd/SpfVxQzPmYFa04V38jBH0JtZkNKV4WqzX8LgD3XkY9OAeCDeNEwbRfSF/ne/8b rSrZ/DiLsCCZGovGNzpUQzPEoPUNGw8udem0t7KqukV+qO+Hmmf1BQe086cC3PMqdfDA hR4ef/yPGyN/mzspD4h6vUr1RFPGR7XjBPfabqXUKLLvriobY1mzQIgLiORtmHDU4y24 +HYHYRORDPpl0eZeUDZnF+QWlWwACWXNLp1X8yRH6P6QnEJCvzbVIln4vFbY8qKByi7X jNHQ== 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=y5XZRvh5FJ3F9RXkqi8NbBrwtIOGm1RUjmAFGYn0SWM=; fh=rOC7q8UJisRayejF6PsoKdRfRTtXVZOwgDCXOG0B/ws=; b=BnpDNxcnmaIasqfiYd42xmehYo7Cw2smBfB9PQi0Yxzz1JZdjf6pBuaB5+fmtRSPmM lQfSr1fEHVHQ+v4a1hj1A9puNO+1WRT+bogwMwyI/ds2HBarEy9uff8AFbdwM9WnTVZC JtPLfmKpOOmUi88cmh2k1nTWpjfbJT9y/GRB5tpGRgDkuxj1uJ8xtscCcnAAmpDG7Icu nKqIwlozSMHTgqzyEffnSu501M/wSGGyaG0XK3KDqrFVdQOg4Os4hk/zdxkwuk1OoKDo /nlHaUjMt7klZyRVpj7mLRyuTkj77DTX93GojYAZuZeD/tPfwFkOln01PwK5S65sW3LP w6TQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@baylibre-com.20230601.gappssmtp.com header.s=20230601 header.b=JLwuvSRq; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from fry.vger.email (fry.vger.email. [2620:137:e000::3:8]) by mx.google.com with ESMTPS id t19-20020a17090a951300b002748c1bbd79si4920078pjo.6.2023.09.21.16.46.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Sep 2023 16:46:42 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) client-ip=2620:137:e000::3:8; Authentication-Results: mx.google.com; dkim=pass header.i=@baylibre-com.20230601.gappssmtp.com header.s=20230601 header.b=JLwuvSRq; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 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 fry.vger.email (Postfix) with ESMTP id E412980952D8; Thu, 21 Sep 2023 13:25:38 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at fry.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231603AbjIUUZ2 (ORCPT + 29 others); Thu, 21 Sep 2023 16:25:28 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56948 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232249AbjIUUZK (ORCPT ); Thu, 21 Sep 2023 16:25:10 -0400 Received: from mail-wr1-x42b.google.com (mail-wr1-x42b.google.com [IPv6:2a00:1450:4864:20::42b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C26ED73AD5 for ; Thu, 21 Sep 2023 10:33:57 -0700 (PDT) Received: by mail-wr1-x42b.google.com with SMTP id ffacd0b85a97d-3226b8de467so535317f8f.3 for ; Thu, 21 Sep 2023 10:33:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1695317634; x=1695922434; 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=y5XZRvh5FJ3F9RXkqi8NbBrwtIOGm1RUjmAFGYn0SWM=; b=JLwuvSRq2iI8y1NRhksb7fblxFUXl6RqQPpspzhudgUzafu9rVDcXQCeAvc66wgNR1 AzhGOdsEO5FEnLigknHA1ahWxzMMWOtebrBA6JiZwAcncrv/u6RDdsrvuDPQ5+P4N/3H ES+ZqO2WHd4QGreCSeSNvL1Qeo88sRkXMj3tu8uObkLaTydca/lrDGQIs5HA3yDsKgG5 Dcdp7QieDh1L3o84/HysbXRTX1deTnhk5oiCymyAcVZrptB3p/zmny84uw75/QFvs5Ao GqTBNgbwWZr9jfscfh4ZMb9Z8rnqPL52C5ucyb7gSyywyPtlW3gppwyl8kACaU1o5IJ6 cSug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695317634; x=1695922434; 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=y5XZRvh5FJ3F9RXkqi8NbBrwtIOGm1RUjmAFGYn0SWM=; b=opK+++jSzoFlcN5RlFZBh5VNYO98aCzNKXVC3QywTB3jSJMJI+mNA803tw9uPi7krf +jBzEkwA5/XNCCOxREKd5OoPWdi7/68EjlfaPjIN3u+3sWVellVy/bFpDUghfEpavcIt YYUl5mVVuIEM2ZhLsS1wcE5vzD1E2/YsupR5x1mbjSIkbGTv07jc9Carl6XAi9+YkGwO n947oAvgnKyYd5oYgeUXvlR4n7qcbIaMWuaqFm/LZruXc/7WJIROp36hPvsZt9fihZ96 7GmJjIUKuh2Ecg4Ytzcz1nOyx0YB6xCd8IYc2SfAltaOj7r+PD2LP6eAeoK//FzAlFhK 0xFQ== X-Gm-Message-State: AOJu0YzPn8Quld4GOtRfh54jCRGwQfatuN4HgvkHr9h7fC7ifOq8b8HZ msbKbaClbIKXP/Ck2SfW+NYtaYY7SNzo1D9Wzuddrxds X-Received: by 2002:adf:fd4f:0:b0:317:636b:fcb1 with SMTP id h15-20020adffd4f000000b00317636bfcb1mr5633352wrs.27.1695306151764; Thu, 21 Sep 2023 07:22:31 -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.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Sep 2023 07:22:31 -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_S=C3=A1?= , Axel Haslam , Philip Molloy , David Lechner Subject: [PATCH 1/2] staging: iio: resolver: ad2s1210: add phase_lock_range attributes Date: Thu, 21 Sep 2023 09:19:28 -0500 Message-Id: <20230921141947.57784-3-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 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 fry.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 (fry.vger.email [0.0.0.0]); Thu, 21 Sep 2023 13:25:39 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1777692837742375225 X-GMAIL-MSGID: 1777692837742375225 This adds new phase_lock_range and phase_lock_range_available attributes to the ad2s1210 resolver driver. These attributes allow the user to set the phase lock range bit in the control register to modify the behavior of the resolver to digital converter. Signed-off-by: David Lechner --- drivers/staging/iio/resolver/ad2s1210.c | 58 +++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/drivers/staging/iio/resolver/ad2s1210.c b/drivers/staging/iio/resolver/ad2s1210.c index 71f0913b7e2e..f5b8b290e860 100644 --- a/drivers/staging/iio/resolver/ad2s1210.c +++ b/drivers/staging/iio/resolver/ad2s1210.c @@ -259,6 +259,60 @@ static ssize_t excitation_frequency_store(struct device *dev, return ret; } +static ssize_t phase_lock_range_show(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + struct ad2s1210_state *st = iio_priv(dev_to_iio_dev(dev)); + int ret; + + mutex_lock(&st->lock); + ret = regmap_test_bits(st->regmap, AD2S1210_REG_CONTROL, + AD2S1210_PHASE_LOCK_RANGE_44); + if (ret < 0) + goto error_ret; + + ret = sprintf(buf, "%d\n", ret ? 44 : 360); + +error_ret: + mutex_unlock(&st->lock); + return ret; +} + +static ssize_t phase_lock_range_store(struct device *dev, + struct device_attribute *attr, + const char *buf, size_t len) +{ + struct ad2s1210_state *st = iio_priv(dev_to_iio_dev(dev)); + u16 udata; + int ret; + + ret = kstrtou16(buf, 10, &udata); + if (ret < 0 || (udata != 44 && udata != 360)) + return -EINVAL; + + mutex_lock(&st->lock); + + ret = regmap_update_bits(st->regmap, AD2S1210_REG_CONTROL, + AD2S1210_PHASE_LOCK_RANGE_44, + udata == 44 ? AD2S1210_PHASE_LOCK_RANGE_44 : 0); + if (ret < 0) + goto error_ret; + + ret = len; + +error_ret: + mutex_unlock(&st->lock); + return ret; +} + +static ssize_t phase_lock_range_available_show(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + return sprintf(buf, "44 360\n"); +} + /* read the fault register since last sample */ static ssize_t ad2s1210_show_fault(struct device *dev, struct device_attribute *attr, char *buf) @@ -506,6 +560,8 @@ static int ad2s1210_write_raw(struct iio_dev *indio_dev, } static IIO_DEVICE_ATTR_RW(excitation_frequency, 0); +static IIO_DEVICE_ATTR_RW(phase_lock_range, 0); +static IIO_DEVICE_ATTR_RO(phase_lock_range_available, 0); static IIO_DEVICE_ATTR(fault, 0644, ad2s1210_show_fault, ad2s1210_clear_fault, 0); @@ -552,6 +608,8 @@ static const struct iio_chan_spec ad2s1210_channels[] = { static struct attribute *ad2s1210_attributes[] = { &iio_dev_attr_excitation_frequency.dev_attr.attr, + &iio_dev_attr_phase_lock_range.dev_attr.attr, + &iio_dev_attr_phase_lock_range_available.dev_attr.attr, &iio_dev_attr_fault.dev_attr.attr, &iio_dev_attr_los_thrd.dev_attr.attr, &iio_dev_attr_dos_ovr_thrd.dev_attr.attr, From patchwork Thu Sep 21 14:19:29 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Lechner X-Patchwork-Id: 142851 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:172:b0:3f2:4152:657d with SMTP id h50csp5079521vqi; Thu, 21 Sep 2023 12:14:51 -0700 (PDT) X-Google-Smtp-Source: AGHT+IESQKR/k8Bkks2mo+KGxIf95ozNGC8LQKGeI7ZbAqfSu8a5DobH/lsQvULFcgeHwkXhn0jT X-Received: by 2002:a17:902:7e8f:b0:1c4:4c0f:8d91 with SMTP id z15-20020a1709027e8f00b001c44c0f8d91mr5402464pla.69.1695323690739; Thu, 21 Sep 2023 12:14:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695323690; cv=none; d=google.com; s=arc-20160816; b=rdeZGxUCG8Pi4SaJiTZP4qhRONdqwthmLC2urMNaBRueWE6WNwE/8wk5+AzstPd+Vi z1XdvXiMoQaVdi0nsk9SxXM7oYOkSci9FLVnF9cHIBoJg9aE3VFKh1ymauaqaxzA45GF 6fCc0uxfkXa/zLwIlHKK1W5H12rPrmw01vJTHMzMsfDyQLDpHqhyMpxw1N6HlJJT7LPl n3ZnU8k9RRmV0k/Fe1S/47kqcd/xwQhRjcmC937Y+YUNKMtKP3vKlAKniwFPhwawuq+w bq/+4/KkuwxtdvRR84Dy2RT4MCeC4o/xCGC3dcGnyY4Dw0QNbYk5okosC+NX1iv6f1Wd rbnw== 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=dOWL8UFN0vGXrTIparX6s/KCVRR+pmZ6D/qH1lVsdWQ=; fh=rOC7q8UJisRayejF6PsoKdRfRTtXVZOwgDCXOG0B/ws=; b=uiXg9a7xJG4EMNEYfV9Zk481XMSdwJYawraiyQCEDNNnqBjsl3YwbV06kHIBuhIJEo Yo13brCzsAQma6A8IwKQTlZlX3ySyEo1eaix1uBdSA9CEUEIFujDasoKqB+jhGXI2nTM L5AW0WVL5sVgEuHnXOiXaWJdDd7s1ctA4rE32JH2oo+91p2SAjPjgNuv1XKaZLzYAwOs HUmZpyP0rMM2tAwe9JrP11bahV1Zjh/fGdw9sEZhnOrLM/w3uEiQyZr/2tpHzCSFYaOu Cg5m4cKYlcIE17pFzxJ+gsDM8yGV7TZsqAJQM9g5Z/i1YU3flwbshGZJsyBTNo8BO24y YfAQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@baylibre-com.20230601.gappssmtp.com header.s=20230601 header.b=SKFFvN3k; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.34 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from howler.vger.email (howler.vger.email. [23.128.96.34]) by mx.google.com with ESMTPS id c1-20020a170903234100b001c4401a7e18si2121487plh.382.2023.09.21.12.14.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Sep 2023 12:14:50 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.34 as permitted sender) client-ip=23.128.96.34; Authentication-Results: mx.google.com; dkim=pass header.i=@baylibre-com.20230601.gappssmtp.com header.s=20230601 header.b=SKFFvN3k; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.34 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 howler.vger.email (Postfix) with ESMTP id 434E68226AF5; Thu, 21 Sep 2023 10:24:30 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at howler.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229875AbjIURYX (ORCPT + 29 others); Thu, 21 Sep 2023 13:24:23 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40224 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229534AbjIURYA (ORCPT ); Thu, 21 Sep 2023 13:24:00 -0400 Received: from mail-lf1-x142.google.com (mail-lf1-x142.google.com [IPv6:2a00:1450:4864:20::142]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 156AD86B1 for ; Thu, 21 Sep 2023 10:05:31 -0700 (PDT) Received: by mail-lf1-x142.google.com with SMTP id 2adb3069b0e04-50309daf971so2068626e87.3 for ; Thu, 21 Sep 2023 10:05:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1695315930; x=1695920730; 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=dOWL8UFN0vGXrTIparX6s/KCVRR+pmZ6D/qH1lVsdWQ=; b=SKFFvN3kCENMePMcKKC9HCfjrzdwz6Js7iC7W5L/c+u2OpF6a5ZQOHqA1uI3swvAGw Ae1b3mtQgo0S9fdd2TvFe2fzSASXKEeT9gU21B1BeFH5rWCwaQM4vy8Pa32aM0I26JQ1 Mj2AbmrKPjdYdXv4oq4Lvxbc4eOvf1DZgbOdmQDIOcZKYy1KbK0HJBy1Vh1XmNEyHGfA 79V7B70F09zL4T5ileYyz9nUnIpj7h9BT9c5HeC8YHW3chkA3FMOjOSYWq9yRuGBHukJ dWviIgDOlXibw/BZFii4DZWrLie3x0rImYHbkRU+Yqhnxm7KE58hbLL12/ZUPJJLB8OP QVbg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695315930; x=1695920730; 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=dOWL8UFN0vGXrTIparX6s/KCVRR+pmZ6D/qH1lVsdWQ=; b=gAU5lu31GNjoC2fgsE4MTbzlt5QXlPa4gw+OU8gHiR0gLjbIoCRANSj7eO2L6f/gD0 toM4PRBUxAEi4ooyJhonCENqOjY5uewOkbdzpj8zBWnvEw/qv8XyGqZMc57NvpZmX+ws wCjPp1JjNmQtky1E+sjj9gsuBlZEggOZXlU2cSG3zsQTvzCjNzcqdaHD0l8KcAaNI99P MrcCeBFvc3ed9NwwXvGq3zcHyuzlEDcFhbfelAnC4PR6d+fyedfuwF5kYXUuhBs2QtJ0 7AEKV+qYa/4yxiQGYCIIY9yKKNHikklI/dQYGCUlFchrybqzKnJVHMINYoYZJSSXE0ek gbTw== X-Gm-Message-State: AOJu0YwAHVOmmSh7DE8YOLcuKLgMzRLd0Sbo/khiq29b+O2Q1CMQy/rO MS9SKGTeFWZpuVPk9yKVe390N0WeqliM1M1ovlrV5QC8Yv8= X-Received: by 2002:a5d:6405:0:b0:319:6ec3:79c7 with SMTP id z5-20020a5d6405000000b003196ec379c7mr5205794wru.36.1695306152763; Thu, 21 Sep 2023 07:22:32 -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.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Sep 2023 07:22:32 -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_S=C3=A1?= , Axel Haslam , Philip Molloy , David Lechner Subject: [v2 02/19] staging: iio: Documentation: document IIO resolver AD2S1210 sysfs attributes Date: Thu, 21 Sep 2023 09:19:29 -0500 Message-Id: <20230921141947.57784-4-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 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 (howler.vger.email [0.0.0.0]); Thu, 21 Sep 2023 10:24:30 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1777675734350058438 X-GMAIL-MSGID: 1777675734350058438 This adds documentation for the device-specific sysfs attributes of the iio/resolver/ad2s1210 driver. Signed-off-by: David Lechner --- .../sysfs-bus-iio-resolver-ad2s1210 | 109 ++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 drivers/staging/iio/Documentation/sysfs-bus-iio-resolver-ad2s1210 diff --git a/drivers/staging/iio/Documentation/sysfs-bus-iio-resolver-ad2s1210 b/drivers/staging/iio/Documentation/sysfs-bus-iio-resolver-ad2s1210 new file mode 100644 index 000000000000..32890c85168e --- /dev/null +++ b/drivers/staging/iio/Documentation/sysfs-bus-iio-resolver-ad2s1210 @@ -0,0 +1,109 @@ +What: /sys/bus/iio/devices/iio:deviceX/dos_mis_thrd +KernelVersion: 6.7 +Contact: linux-iio@vger.kernel.org +Description: + Reading returns the current Degradation of Signal Mismatch + Threshold value. Writing sets the value. Valid values are 0 (0V) + to 127 (4.826V). To convert the value to volts, multiply by + 0.038. + +What: /sys/bus/iio/devices/iio:deviceX/dos_ovr_thrd +KernelVersion: 6.7 +Contact: linux-iio@vger.kernel.org +Description: + Reading returns the current Degradation of Signal Overrange + Threshold value. Writing sets the value. Valid values are 0 (0V) + to 127 (4.826V). To convert the value to volts, multiply by + 0.038. + +What: /sys/bus/iio/devices/iio:deviceX/dos_rst_max_thrd +KernelVersion: 6.7 +Contact: linux-iio@vger.kernel.org +Description: + Reading returns the current Degradation of Signal Reset Maximum + Threshold value. Writing sets the value. Valid values are 0 (0V) + to 127 (4.826V). To convert the value to volts, multiply by + 0.038. + +What: /sys/bus/iio/devices/iio:deviceX/dos_rst_min_thrd +KernelVersion: 6.7 +Contact: linux-iio@vger.kernel.org +Description: + Reading returns the current Degradation of Signal Reset Minimum + Threshold value. Writing sets the value. Valid values are 0 (0V) + to 127 (4.826V). To convert the value to volts, multiply by + 0.038. + +What: /sys/bus/iio/devices/iio:deviceX/fault +KernelVersion: 6.7 +Contact: linux-iio@vger.kernel.org +Description: + Reading returns a hex value containing the fault bit flags. + + Bit Description + --- ----------- + D7 Sine/cosine inputs clipped + D6 Sine/cosine inputs below LOS threshold + D5 Sine/cosine inputs exceed DOS overrange threshold + D4 Sine/cosine inputs exceed DOS mismatch threshold + D3 Tracking error exceeds LOT threshold + D2 Velocity exceeds maximum tracking rate + D1 Phase error exceeds phase lock range + D0 Configuration parity error + + Writing any value will clear any fault conditions. + +What: /sys/bus/iio/devices/iio:deviceX/excitation_frequency +KernelVersion: 6.7 +Contact: linux-iio@vger.kernel.org +Description: + Reading returns the current Excitation Frequency in Hz. Writing + sets the Excitation Frequency and performs a software reset on + the device to apply the change. Valid values are 2000 (2kHz) to + 20000 (20kHz). + +What: /sys/bus/iio/devices/iio:deviceX/los_thrd +KernelVersion: 6.7 +Contact: linux-iio@vger.kernel.org +Description: + Reading returns the current Loss of Signal Reset Threshold + value. Writing sets the value. Valid values are 0 (0V) to + 127 (4.826V). To convert the value to volts, multiply by 0.038. + +What: /sys/bus/iio/devices/iio:deviceX/lot_high_thrd +KernelVersion: 6.7 +Contact: linux-iio@vger.kernel.org +Description: + Reading returns the current Loss of Position Tracking Detection + High Threshold value. Writing sets the value. Valid values are + 0 (0 deg) to 127 (9/18/45 deg). The interpretation of the value + depends on the selected resolution. To convert the value to + degrees, multiply by 0.35 for 10-bit resolution, multiply by + 0.14 for 12-bit resolution or multiply by 0.09 for 14 and 16-bit + resolution. + +What: /sys/bus/iio/devices/iio:deviceX/lot_low_thrd +KernelVersion: 6.7 +Contact: linux-iio@vger.kernel.org +Description: + Reading returns the current Loss of Position Tracking Detection + Low Threshold value. Writing sets the value. Valid values are + 0 (0 deg) to 127 (9/18/45 deg). The interpretation of the value + depends on the selected resolution. To convert the value to + degrees, multiply by 0.35 for 10-bit resolution, multiply by + 0.14 for 12-bit resolution or multiply by 0.09 for 14 and 16-bit + resolution. + +What: /sys/bus/iio/devices/iio:deviceX/phase_lock_range +KernelVersion: 6.7 +Contact: linux-iio@vger.kernel.org +Description: + Reading returns the current Phase lock range in degrees. Writing + sets the value in the configuration register. + +What: /sys/bus/iio/devices/iio:deviceX/phase_lock_range_available +KernelVersion: 6.7 +Contact: linux-iio@vger.kernel.org +Description: + Reading returns the possible values for the phase_lock_range + attribute, namely 44 and 360. From patchwork Thu Sep 21 14:19:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Lechner X-Patchwork-Id: 143077 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:172:b0:3f2:4152:657d with SMTP id h50csp5264463vqi; Thu, 21 Sep 2023 18:57:23 -0700 (PDT) X-Google-Smtp-Source: AGHT+IE5GGh/5/bh0XVA+BaVw9TrWcG0vYD7S1d0xQIa7/bcfgvIzofIC7tIgl9qUoFq/Dq48ijG X-Received: by 2002:a05:620a:29d6:b0:773:a5fd:6f2a with SMTP id s22-20020a05620a29d600b00773a5fd6f2amr10154153qkp.53.1695347842929; Thu, 21 Sep 2023 18:57:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695347842; cv=none; d=google.com; s=arc-20160816; b=Bsvv6NdI5r/mLrLMVLhvXDXXu+hRpa5X0FyVsdtN+g3rTxLa8IJv+LUy0f8G9JH4Tv sDHtyf8iyiv76Z5qsZ59vWeOoVFabsuQct8dLWvDVE6sL9etroaTPtuEwLZUVltyiPH4 4+ADSjzNxQfN3HcNuveim9l6fk/OfUJ5pxovcbe2RMeaAsmLc07QEHjZAitiiOOYX67/ H/GQkokDlelrDW22yyd72N8COs9FvvD4r202CFVeX9gjorSH4j4mnNB3kl6vYfYCQSuS qK8dW+hI8ajM3FwQFX9RUzLcDTMhgn6LnNoAD1Pk9Q+QpdWX7XggIxKjeiALCZ7SWAeR UrdA== 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=NWszhBlTWMiwkXqgF1w4h8oNmYkV0xe9wPBMJvnXBgI=; fh=rOC7q8UJisRayejF6PsoKdRfRTtXVZOwgDCXOG0B/ws=; b=KMn1nnRPA6l0a1VubrJ93MEZcZrQ8xMSBQqSsv/NNojp/d5B/V51dqrb7jkFjdYObO SoelGdAxQcRS49OWmYJOruLeTl0+ovyjm2/59sYjdxg911w84CEcbkWiY3tpFsZbbycc BmGGp+xAQa6M4YSYEW3WP58vwkDwFq/bWgI3ztjUDK1c9BuKelQLCyny26De1sH68fbA lPcDxvH2phjk09BKF+xak9rdDaBJi1TRZ+y0kR/K4LK6qnh2j4SQzh8+qA9LlDb5beEz niLr/JLhMLGVicjikR5ehPRoCYVOzrhgUcIW3zuaTV2DL7RgXtjZ28Lu7AU6brdnpJx4 u18g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@baylibre-com.20230601.gappssmtp.com header.s=20230601 header.b=gGR9Ph21; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from groat.vger.email (groat.vger.email. [23.128.96.35]) by mx.google.com with ESMTPS id cf4-20020a056a02084400b005661e3f6b0dsi2697757pgb.329.2023.09.21.18.57.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Sep 2023 18:57:22 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) client-ip=23.128.96.35; Authentication-Results: mx.google.com; dkim=pass header.i=@baylibre-com.20230601.gappssmtp.com header.s=20230601 header.b=gGR9Ph21; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 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 groat.vger.email (Postfix) with ESMTP id 5BDC58057DB6; Thu, 21 Sep 2023 13:12:34 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at groat.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231152AbjIUUMV (ORCPT + 28 others); Thu, 21 Sep 2023 16:12:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52672 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230204AbjIUULz (ORCPT ); Thu, 21 Sep 2023 16:11:55 -0400 Received: from mail-ed1-x52b.google.com (mail-ed1-x52b.google.com [IPv6:2a00:1450:4864:20::52b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 634B5561ED for ; Thu, 21 Sep 2023 10:17:50 -0700 (PDT) Received: by mail-ed1-x52b.google.com with SMTP id 4fb4d7f45d1cf-5334f9a56f6so784143a12.3 for ; Thu, 21 Sep 2023 10:17:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1695316669; x=1695921469; 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=NWszhBlTWMiwkXqgF1w4h8oNmYkV0xe9wPBMJvnXBgI=; b=gGR9Ph21fAE+az4hS0gxgRHlY8bXY/GswP7AjtctrxJJIQzHJvSEqU+yW5eWlQi9rk vlQZmPOu4fM29G7+lE6+DC83crxuHW2xV3nFcgX45kDO3CuC/iDlHUt38EYPJ2/AtfOp Fa7na4vIVAIE3w3fZo8N3fRNvyxdRuyZOhnRLmmESpinoGKoz8JQgLx8VjpW/N2KTGlf anwn/M+U636gNd83CnJPHwA4toR0LE3oQHGA6SHc0TjKiF9XsdviUK//0i/7hA3HfV9T PqJ3R1/lT0hoO67nRgce1Vs/ao3flGEmIv8vDpGd91tKChnVKb4Gw8IIJvXhaep5/lgr 8weA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695316669; x=1695921469; 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=NWszhBlTWMiwkXqgF1w4h8oNmYkV0xe9wPBMJvnXBgI=; b=SgKJ6/riiHg2Az0XBTLGuOnZlsdaJuuExnhYiKSVvpi+jssmyaCRkOEec4ml0Qb0Go 96EUuQTs2L1xjYxDBdTKU3uYp2hpIFlLwr3yrdvi5hK5hjLiAgBVsEDmt8SImr3O/YpO UL6pm0fJsnzsvloHODqLF+8X8e0LdRnVd97Y/7f21Zi0rgiacOsiB+BIcOtncbLqxtq3 +2fl3hzgLNG73kfMRwhqPZFnKAuj0+ThPIMI+pSiYQioPy8hG8st5RsvQybbyRVpL//0 s0hKk/1BtXNRw237bngYOtVf70I+zOY1YFRQ22wp1iXbqhzQyi0FOYQlAoLsjj1s5wmv fk2w== X-Gm-Message-State: AOJu0YzwhHyEE93C9NJk9KbL+Nyin7KIprkVyps2OfkPkbQ/l0+gOJ/j RU1+HRtA7VqPguu/bnkz5wamb8FA8pkpVQWbc6wq1DaU X-Received: by 2002:a5d:4a82:0:b0:31f:ec91:39a7 with SMTP id o2-20020a5d4a82000000b0031fec9139a7mr5419502wrq.14.1695306154592; Thu, 21 Sep 2023 07:22:34 -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.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Sep 2023 07:22:34 -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_S=C3=A1?= , Axel Haslam , Philip Molloy , David Lechner Subject: [v2 03/19] staging: iio: resolver: ad2s1210: fix ad2s1210_show_fault Date: Thu, 21 Sep 2023 09:19:31 -0500 Message-Id: <20230921141947.57784-6-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 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 groat.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 (groat.vger.email [0.0.0.0]); Thu, 21 Sep 2023 13:12:34 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1777701059762418723 X-GMAIL-MSGID: 1777701059762418723 When reading the fault attribute, an empty string was printed if the fault register value was non-zero. This is fixed by checking that the return value is less than zero instead of not zero. Also always print two hex digits while we are touching this line. Signed-off-by: David Lechner --- drivers/staging/iio/resolver/ad2s1210.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/staging/iio/resolver/ad2s1210.c b/drivers/staging/iio/resolver/ad2s1210.c index 06de5823eb8e..84743e31261a 100644 --- a/drivers/staging/iio/resolver/ad2s1210.c +++ b/drivers/staging/iio/resolver/ad2s1210.c @@ -393,7 +393,7 @@ static ssize_t ad2s1210_show_fault(struct device *dev, ret = ad2s1210_config_read(st, AD2S1210_REG_FAULT); mutex_unlock(&st->lock); - return ret ? ret : sprintf(buf, "0x%x\n", ret); + return (ret < 0) ? ret : sprintf(buf, "0x%02x\n", ret); } static ssize_t ad2s1210_clear_fault(struct device *dev, From patchwork Thu Sep 21 14:19:32 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Lechner X-Patchwork-Id: 142909 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:172:b0:3f2:4152:657d with SMTP id h50csp5136736vqi; Thu, 21 Sep 2023 14:03:17 -0700 (PDT) X-Google-Smtp-Source: AGHT+IE72ZKSBZzQAlaiunNsmvShoZU/KJyXnb4JvI3RKEUOyhu36oAgQYmGVt8ekBIOhXpOzebD X-Received: by 2002:a05:6a20:918b:b0:140:a6ec:b55f with SMTP id v11-20020a056a20918b00b00140a6ecb55fmr7475702pzd.16.1695330197081; Thu, 21 Sep 2023 14:03:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695330197; cv=none; d=google.com; s=arc-20160816; b=a90YJLDUfB2UkvD5PRLSNFJUPG6obRC4vke2qf0w9fseeIrqMKmltGLYKglAfSild4 H4r1aAQ+MvNUwVkWzZkuiHT5BE/wDFVMriUXuryYBMkJOrVWb2gfMkYPkwLR6KB0g398 YpDKMMhN1EEwSXf7HLLZ2bLLdPG8YFyfMlAQFqgCOR8GCunLbu3k53SCOmIXnZEPkW0a 43GyvSTRx+HdnplXptinLg2LdezBLJjwRLPgeMTx8oOWad4OWBZ/rmNaQBZNLFwM0uSM zXPaJ2RycmzwANwP2WGqq+MUt1TyYrdc1cp29dZxz4moXD3UMA6Jpyk0xKLB7mwDUVZM pHyw== 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=x9YCZ78k5Zg5KKitr5PpHsZw/Rz0qYyLXQR2L135bIs=; fh=rOC7q8UJisRayejF6PsoKdRfRTtXVZOwgDCXOG0B/ws=; b=fvPOYvPkLBiijFWiamcj0M8zLEdvVDhZxvqcnpfIZJ9bK+gn0C6O9FLm/iPKQYnQWs nn4xBWYD/6GxvN4XGTj1ijzplz6T3tDXFXJQFj0lYdPrfUvBZpP/QbQjx22ljJy6cRr1 mLIjMfrxiCSyUn5E2LJZ93umDUtE24P8XoNmaH7QLcobF0vtS44hOrxOz27M+hF/thse n8PbbIwkqQ1f3lEZMNJdXWh353UL2sZ0kxGceauY/OC/TkqCHEEJMwBmvcut2KrPHNc9 H+raUKPgHienyRbOy473QnQFruVYkvYuPIYha4lqY8rZId4SerVxAm1KDxtSFfGv2rR1 1+7Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@baylibre-com.20230601.gappssmtp.com header.s=20230601 header.b="p725f+u/"; 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 e9-20020a636909000000b0056a9544e894si2163157pgc.397.2023.09.21.14.03.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Sep 2023 14:03:17 -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="p725f+u/"; 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 E432181CDE02; Thu, 21 Sep 2023 13:02:57 -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 S231561AbjIUUBs (ORCPT + 28 others); Thu, 21 Sep 2023 16:01:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47066 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230089AbjIUUBI (ORCPT ); Thu, 21 Sep 2023 16:01:08 -0400 Received: from mail-lf1-x133.google.com (mail-lf1-x133.google.com [IPv6:2a00:1450:4864:20::133]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4BDB057B08 for ; Thu, 21 Sep 2023 10:18:48 -0700 (PDT) Received: by mail-lf1-x133.google.com with SMTP id 2adb3069b0e04-503f39d3236so2125504e87.0 for ; Thu, 21 Sep 2023 10:18:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1695316726; x=1695921526; 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=x9YCZ78k5Zg5KKitr5PpHsZw/Rz0qYyLXQR2L135bIs=; b=p725f+u/GCXMgTcmvd17mKS+XZWOteY2gYOCuBCh3vzHoy4MPBVGu8WPx52QLOOrxJ /YD14zD1WxUTKzA2AjDjFfdV9UNlqtY9DrGghfgJ5F2KSjb/xJmhhQNS2EApCbOFz/GA LTrqISiUfpoTveqcCnArZJWaHZhqo/E0InpkUaDXWv2GcZBnfSkYbz/dlD9+7YyFguFR gI2LWTPZBBXU/H35iS4XTC0FaShVnZGoC5soqgO4C2AyqcRaD5J799xNJXZRDUc8QbuW ++AcZviGCZZARa6wMF5gGVps2bi3DFxPpMw4pDVhEYPCbx5a3GxhCsbXWW6lJM37f5/m oTOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695316726; x=1695921526; 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=x9YCZ78k5Zg5KKitr5PpHsZw/Rz0qYyLXQR2L135bIs=; b=i6mLRe7MfYJ1Wcfl7IKifNASPdE+i9SybKXCY4Hs2hsQb5wwJ7rCahgMAakC9dHwsc glWkaKEFQodtq7r4tDsi1pLXMzinfBqZgjJAVkvX3WLL0X9i/RWrlarwESARqFd4QQ23 SfGzmjg8IdvuolRx2f4hHcQo/kNwb2ERuPrkF7n5nE2SNRzgzbji9TUIWo61QzvaDftA hfrrslY+cwQg/AZYRMY5VudEHkGCfqp3TjMA4/0EK3SCOKUxUkiIeDGHxqJUAaHGAbQ+ NwAkYNb7uTKf2M7J9Ty5G72zVE2hwGy9Se+FRgySW8VoDVWRR7Wdj0AHVRLrJnxP7nxG c35w== X-Gm-Message-State: AOJu0YwcPqN9AQYkIZ/nV5GioALAxL+4fbZ50LKl9EcHoXxQn9PvLI3b FO5JE70pwEHAsIrDLvA2rDPIkIoMYbA2RepfcbO96NQl X-Received: by 2002:adf:fe8e:0:b0:319:f9d6:a769 with SMTP id l14-20020adffe8e000000b00319f9d6a769mr5207822wrr.45.1695306155398; Thu, 21 Sep 2023 07:22:35 -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.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Sep 2023 07:22:35 -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_S=C3=A1?= , Axel Haslam , Philip Molloy , David Lechner Subject: [v2 04/19] staging: iio: resolver: ad2s1210: fix not restoring sample gpio in channel read Date: Thu, 21 Sep 2023 09:19:32 -0500 Message-Id: <20230921141947.57784-7-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 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 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]); Thu, 21 Sep 2023 13:02:57 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1777682557010777689 X-GMAIL-MSGID: 1777682557010777689 In theory, this code path should not be reachable because of the previous switch statement. But just in case we should make sure we are restoring the SAMPLE gpio to its original state before returning in addition to releasing the mutex lock. Signed-off-by: David Lechner --- drivers/staging/iio/resolver/ad2s1210.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/staging/iio/resolver/ad2s1210.c b/drivers/staging/iio/resolver/ad2s1210.c index 84743e31261a..0bdd5a30d45d 100644 --- a/drivers/staging/iio/resolver/ad2s1210.c +++ b/drivers/staging/iio/resolver/ad2s1210.c @@ -510,8 +510,8 @@ static int ad2s1210_read_raw(struct iio_dev *indio_dev, ret = IIO_VAL_INT; break; default: - mutex_unlock(&st->lock); - return -EINVAL; + ret = -EINVAL; + break; } error_ret: From patchwork Thu Sep 21 14:19: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: 143265 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:172:b0:3f2:4152:657d with SMTP id h50csp5414624vqi; Fri, 22 Sep 2023 01:48:44 -0700 (PDT) X-Google-Smtp-Source: AGHT+IH+0pATojClTzNOFDY5a1pNo29KsbxelHtOPUrwBfzejktfTRFAqyjkT8jH5Izc/0YNov+d X-Received: by 2002:a17:902:c94d:b0:1c5:59dc:6e93 with SMTP id i13-20020a170902c94d00b001c559dc6e93mr2847949pla.3.1695372524625; Fri, 22 Sep 2023 01:48:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695372524; cv=none; d=google.com; s=arc-20160816; b=gBnqzCSfzQAr70c05Auy9K8D152JkSkLs8mjnKFF+0Mniett1jrIDzqsdpk/+2T7sm iHkBefiTNu+dZDEGV4hbqaytgu73Oa8nnH3C2xVWrV3mAEIQEs/untgewypJ0IBxCK2Y Sk7DSAuin8CrYmlzziPFElBpiviunAq+fUDckMLbZ4MItakjUTQdlcZl9PUavflLbQts QjJMowabLUWYMiBw4f9NGRi1FWEdLVVz31BvCKiHkjJcKthcef4/fesNqSVLpXbTwZmf QuS95y9eBxKqqyFXqRyjJZQMuCpCw2yjHv5UP9kr5WyQEsEAuqIpFMNNIL0uBk4O57nK YGzg== 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=NC6Tj/wZ71OdWmHfRNe2x49Rd8CoFCC05cRR7nhn858=; fh=rOC7q8UJisRayejF6PsoKdRfRTtXVZOwgDCXOG0B/ws=; b=ATO26W7XLDFPzHr8LYYO3lH2SNnaa+FCbAcjbYmoTupnl7utbsu0UfSlQGEPDVfFFr e2I4fjxkneUPxr+5rKX/BtQfS/5GKzFIy/5Nd7PKxZhNDVWZdyMdHmFxaLi873zfkDtv 6eeDNoprBtZR6KPGI7fsqg65SUBwl08rY7KcjbJ7YCl86EpvsAYjlV4+6/aduHiZHesh NE5PPamykhW89DsdgEJzvJEszh2g2m10mNAwJk7dpFys3kP7Z4DEOpIS6O+4Gq/qJncn noZtymEeIA3KSdKSm1zslGJk2qpA+W1EzY/IS6kD7+WSZpL9A0A66W9vbrYV5uDa9QiB XFfg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@baylibre-com.20230601.gappssmtp.com header.s=20230601 header.b=A2ZhzJmx; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id w20-20020a170902d11400b001b876d46162si3200590plw.38.2023.09.22.01.48.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 22 Sep 2023 01:48:44 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; dkim=pass header.i=@baylibre-com.20230601.gappssmtp.com header.s=20230601 header.b=A2ZhzJmx; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 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 D6D5B830C30E; Thu, 21 Sep 2023 13:49:29 -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 S232606AbjIUUt3 (ORCPT + 29 others); Thu, 21 Sep 2023 16:49:29 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48558 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232204AbjIUUsk (ORCPT ); Thu, 21 Sep 2023 16:48:40 -0400 Received: from mail-ej1-x629.google.com (mail-ej1-x629.google.com [IPv6:2a00:1450:4864:20::629]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E048D7960D for ; Thu, 21 Sep 2023 10:34:52 -0700 (PDT) Received: by mail-ej1-x629.google.com with SMTP id a640c23a62f3a-9aa0495f9cfso529232766b.1 for ; Thu, 21 Sep 2023 10:34:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1695317691; x=1695922491; 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=NC6Tj/wZ71OdWmHfRNe2x49Rd8CoFCC05cRR7nhn858=; b=A2ZhzJmxIK839Cicf4hvdj4BxxClLyj+V5Gi3qvkWEP/g6c3do/uM03epCNbUIyEgB MZuWFoXVX77l7oNYAwMUEr8R79r0zZQMuYwivxBS3S//wK9mxvor7uzibC5z78e/YbLi mqQQmj+MgPN9o4Uhe7gZGPOwE/2koh+6cOdAqYKlXtdWDLjYgQj7tu55O/lIC0YHIxJN fzcqt+Qm6T2d6ps71GIrWpN8MXeWQ6PaKx7biLbyX3p9YsjuxU+mFmdzjFx/mLlF4ClO GpJcf7J66eDz5wsMPbHs3eJ4P/vw10IE5rfkfHwKv2IWcgLBrG/XceAlXM5vhqaKR3rx 5eeQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695317691; x=1695922491; 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=NC6Tj/wZ71OdWmHfRNe2x49Rd8CoFCC05cRR7nhn858=; b=D8KmwB8Ay3WHNWEit0fTjInGBoXmbDCp28/zo3FiSmhFbLiqKlCg/Lh19bmdhjwwjo RnV9/qf82OYGanLuqe6z1uYJGot3NjkdISoMoxkEcv80tnmjpxxWwprNlDXTzwC9CUQG NoYgO83bl8hHoVSzMPw5qZGetUJWKISRZP81OUzEKQcbwUf4PfXHDDsgP1faz/0CHO6S suf8L3g3SiJTZ+sZTpuQHsctAZY6JZYlJyayJEmNdpiFDk6roBGr/nIiJVRtaeQNWkwK M5OLI1gALl1D7HkszkfGASrRY92Aud41Q356zbEIshUcqoLFz0Q3DYlPO0bB9FLKMX1/ 8RGw== X-Gm-Message-State: AOJu0Yy8IP8gtIojeIf2QV6IUTTNPXOGoB9Bo72nhv3OV9cotFpArgX4 ZuDu0QvjbNDRHf/ul34850qLKG9Pyhgq/1fkmXjGeMuv X-Received: by 2002:adf:e641:0:b0:31f:ffe3:b957 with SMTP id b1-20020adfe641000000b0031fffe3b957mr4444516wrn.31.1695306156350; Thu, 21 Sep 2023 07:22:36 -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.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Sep 2023 07:22:36 -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_S=C3=A1?= , Axel Haslam , Philip Molloy , David Lechner Subject: [v2 05/19] staging: iio: resolver: ad2s1210: fix probe Date: Thu, 21 Sep 2023 09:19:33 -0500 Message-Id: <20230921141947.57784-8-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 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,RCVD_IN_DNSWL_BLOCKED,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]); Thu, 21 Sep 2023 13:49:29 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1777726940608740127 X-GMAIL-MSGID: 1777726940608740127 This fixes a number of issues in the ad2s1210_probe() function: - Move call to ad2s1210_setup_gpios() after `st->sdev = spi;`. This fixes use of this pointer before it is initialized. - Check return value on ad2s1210_initial(). - Move devm_iio_device_register() to the end to avoid race of registering before fully initialized. - Remove call to spi_setup(). Note: MODE_3 was incorrect, it should be MODE_1 but we can let the device tree select this. - Change default value for fclkin. This is an external oscillator, not the SPI bus clock. (Will use device tree to get the correct value in a future patch. For now, using the eval board value.) - Remove spi_set_drvdata(). Signed-off-by: David Lechner --- drivers/staging/iio/resolver/ad2s1210.c | 30 ++++++++++++------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/drivers/staging/iio/resolver/ad2s1210.c b/drivers/staging/iio/resolver/ad2s1210.c index 0bdd5a30d45d..9c7f76114360 100644 --- a/drivers/staging/iio/resolver/ad2s1210.c +++ b/drivers/staging/iio/resolver/ad2s1210.c @@ -3,6 +3,7 @@ * ad2s1210.c support for the ADI Resolver to Digital Converters: AD2S1210 * * Copyright (c) 2010-2010 Analog Devices Inc. + * Copyright (C) 2023 BayLibre, SAS */ #include #include @@ -657,12 +658,8 @@ static int ad2s1210_probe(struct spi_device *spi) indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st)); if (!indio_dev) return -ENOMEM; - st = iio_priv(indio_dev); - ret = ad2s1210_setup_gpios(st); - if (ret < 0) - return ret; - spi_set_drvdata(spi, indio_dev); + st = iio_priv(indio_dev); mutex_init(&st->lock); st->sdev = spi; @@ -671,22 +668,25 @@ static int ad2s1210_probe(struct spi_device *spi) st->resolution = 12; st->fexcit = AD2S1210_DEF_EXCIT; + ret = ad2s1210_setup_clocks(st); + if (ret < 0) + return ret; + + ret = ad2s1210_setup_gpios(st); + if (ret < 0) + return ret; + + ret = ad2s1210_initial(st); + if (ret < 0) + return ret; + indio_dev->info = &ad2s1210_info; indio_dev->modes = INDIO_DIRECT_MODE; indio_dev->channels = ad2s1210_channels; indio_dev->num_channels = ARRAY_SIZE(ad2s1210_channels); indio_dev->name = spi_get_device_id(spi)->name; - ret = devm_iio_device_register(&spi->dev, indio_dev); - if (ret) - return ret; - - st->fclkin = spi->max_speed_hz; - spi->mode = SPI_MODE_3; - spi_setup(spi); - ad2s1210_initial(st); - - return 0; + return devm_iio_device_register(&spi->dev, indio_dev); } static const struct of_device_id ad2s1210_of_match[] = { From patchwork Thu Sep 21 14:19: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: 142945 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:172:b0:3f2:4152:657d with SMTP id h50csp5162319vqi; Thu, 21 Sep 2023 14:58:17 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHJWSFct/nRxoi7yc68chOxZkgsiLZJqXwBgapcaM8Q7SSI4jqfdrTkjB+Vyki1iqM4KXjg X-Received: by 2002:a05:6359:3201:b0:143:9235:9f1f with SMTP id rj1-20020a056359320100b0014392359f1fmr653035rwb.12.1695333497601; Thu, 21 Sep 2023 14:58:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695333497; cv=none; d=google.com; s=arc-20160816; b=0zPiWdshn/EIdWhHZdHRN0SY/LtZZCzGZP/FfjTISmHJXDobd0oIwcBbd0ZqpH8OyR UuFHi7ciy7Eehd9VFf9FhsZGi8Vv1UEYrxDLB0YFTXvonK/Gx0Rsavwpc2T+wk0sWOzN YgpbguBXmpJKgEYzeg7+Owj6oHlf6pxLXyTN9AAQ/UZusla4O7Nq+i9EfQsmv6kHPXb4 cJk+D4kPLmpp3zQIPikBmrJod/D0Q+WQ8WhjqNPTUCLjj1ZQk9xxnEPA3zWw/BJ8fMkg eKLslphNRRvB70ZOsyEYjczztwAxJjAPg+DMv3qQPkmQHK2pcdJ16sVDNhEi7XgcpSUF N4PQ== 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=gabiCx8aQ+iMVEJft2DL0LHbd3RWq71VIbUUi+w3JfM=; fh=rOC7q8UJisRayejF6PsoKdRfRTtXVZOwgDCXOG0B/ws=; b=VAAgwzCEdIql/vuN5UWTX9zxT9fVg2C+u750mi4BMnE4YrbjSa7MveVRaveLewOhqV +RDV9ok7HhV8i0dyLe5/p7HPHBRyaVgixDUKmks50sAzut4lVg0hZYRFeAlLtS4i9nJS VAklBhjDq+5SzK5MBtJ4ilxRallNnkPuRgZqKBboyblVUfzVaVdL0ViANnqXNJOZYHM6 8TiafZEfaNJaDJsAQhgBKvhjuoNjw53Q2sE1F4o8dRkxpdaw0wvvVQKLLPFHcwzAT4ft yrRanJBusZbvbc9nRWkNvWPRDBsQM+09vh93ax3IyVw1V5hb+H0PdfB4rbejj4q3/yXj cNPA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@baylibre-com.20230601.gappssmtp.com header.s=20230601 header.b=Gj1N929O; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from agentk.vger.email (agentk.vger.email. [23.128.96.32]) by mx.google.com with ESMTPS id m1-20020a656a01000000b0054fbd904b6dsi2503073pgu.500.2023.09.21.14.58.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Sep 2023 14:58:17 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) client-ip=23.128.96.32; Authentication-Results: mx.google.com; dkim=pass header.i=@baylibre-com.20230601.gappssmtp.com header.s=20230601 header.b=Gj1N929O; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 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 agentk.vger.email (Postfix) with ESMTP id AEE418082861; Thu, 21 Sep 2023 10:52:23 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at agentk.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230193AbjIURve (ORCPT + 29 others); Thu, 21 Sep 2023 13:51:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51378 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229747AbjIURvQ (ORCPT ); Thu, 21 Sep 2023 13:51:16 -0400 Received: from mail-lf1-x131.google.com (mail-lf1-x131.google.com [IPv6:2a00:1450:4864:20::131]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1BB991BF for ; Thu, 21 Sep 2023 10:22:14 -0700 (PDT) Received: by mail-lf1-x131.google.com with SMTP id 2adb3069b0e04-501eec0a373so2194305e87.3 for ; Thu, 21 Sep 2023 10:22:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1695316932; x=1695921732; 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=gabiCx8aQ+iMVEJft2DL0LHbd3RWq71VIbUUi+w3JfM=; b=Gj1N929OQhSew4rZWjj1I9EtfgztYKeM9fj6JuUS07OyUy9qA1gjz3i35SI5Czt1MN Y8Ri5S+zC+BTTYP6zdrVJTkxW+Yh5QM9FkyCOK29dAhm9LE3YdkcSWjHdgdvqP4t3gXF jQlOx6CQZImywvD5iOm1mfe73sf+/ejCHlBwPBket5W+9JW7rUqBeAloA2vTg9MzCZIm SwS4HvbXwPF1X+TkWh4J9wvrlgc9MOB4YquWu4Nx7iVcw5p4jb5ngw9COMMEURCMdwK7 biZX5to2UTYSBOVASai28EfL0Sv9Y3mqkUlx6hIej4oaYx//bx2RQ7q//O3Ikcb1UMld mp2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695316932; x=1695921732; 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=gabiCx8aQ+iMVEJft2DL0LHbd3RWq71VIbUUi+w3JfM=; b=nG9L4K9XUiUlukpbtajj9nBkKkSRQF9AAJvhujkdk9sW6r28f7HhDeJvBHfKvQXKpV bi4mogdt9daNNH7N1WXUbPEvTljz5/V3funt6GMsL3ie00JHcNqhWihWlvJMCJIdlg8g tVDSm6H1maKzcC6ZFUzy9JSKPsnR73vXETa2DeKUfUkQZ61lvKj2LE05c7Yq5u4sK2O5 uZ3a0MbC3FKL8EWwcokejQZoKJXYaned8Kvgg+MReWkpq5e8hfILYlIS+f8mPopf93cB 15Lclj9ezNQuchPgXHSbABkopmWWLS4RPaXP4gmhWAh4M0a3DIyhUcVA3NiFXYnlhLZZ GHzA== X-Gm-Message-State: AOJu0YyIZd5eF9VjBOHzvXydczZ6kiHK5E178HCo3wddxWBv2gtqJKGw J7vdS8MtgJ+mvUNfgTrCKmMeIVqYgpxX3prmpI6A4NQL X-Received: by 2002:a5d:6e54:0:b0:31a:e8e6:8a96 with SMTP id j20-20020a5d6e54000000b0031ae8e68a96mr5153996wrz.67.1695306157156; Thu, 21 Sep 2023 07:22:37 -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.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Sep 2023 07:22:36 -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_S=C3=A1?= , Axel Haslam , Philip Molloy , David Lechner Subject: [v2 06/19] staging: iio: resolver: ad2s1210: always use 16-bit value for raw read Date: Thu, 21 Sep 2023 09:19:34 -0500 Message-Id: <20230921141947.57784-9-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 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 agentk.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 (agentk.vger.email [0.0.0.0]); Thu, 21 Sep 2023 10:52:23 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1777686017550511851 X-GMAIL-MSGID: 1777686017550511851 This removes the special handling for resolutions lower than 16 bits. This will allow us to use a fixed scale independent of the resolution. Also, for the record, according to the datasheet, the logic for the special handling based on hysteresis that was removed was incorrect. Signed-off-by: David Lechner --- drivers/staging/iio/resolver/ad2s1210.c | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/drivers/staging/iio/resolver/ad2s1210.c b/drivers/staging/iio/resolver/ad2s1210.c index 9c7f76114360..985b8fecd65a 100644 --- a/drivers/staging/iio/resolver/ad2s1210.c +++ b/drivers/staging/iio/resolver/ad2s1210.c @@ -465,10 +465,7 @@ static int ad2s1210_read_raw(struct iio_dev *indio_dev, long m) { struct ad2s1210_state *st = iio_priv(indio_dev); - u16 negative; int ret = 0; - u16 pos; - s16 vel; mutex_lock(&st->lock); gpiod_set_value(st->gpios[AD2S1210_SAMPLE], 0); @@ -494,20 +491,11 @@ static int ad2s1210_read_raw(struct iio_dev *indio_dev, switch (chan->type) { case IIO_ANGL: - pos = be16_to_cpup((__be16 *)st->rx); - if (st->hysteresis) - pos >>= 16 - st->resolution; - *val = pos; + *val = be16_to_cpup((__be16 *)st->rx); ret = IIO_VAL_INT; break; case IIO_ANGL_VEL: - vel = be16_to_cpup((__be16 *)st->rx); - vel >>= 16 - st->resolution; - if (vel & 0x8000) { - negative = (0xffff >> st->resolution) << st->resolution; - vel |= negative; - } - *val = vel; + *val = (s16)be16_to_cpup((__be16 *)st->rx); ret = IIO_VAL_INT; break; default: From patchwork Thu Sep 21 14:19:35 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Lechner X-Patchwork-Id: 143422 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:172:b0:3f2:4152:657d with SMTP id h50csp5556873vqi; Fri, 22 Sep 2023 06:06:47 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFZxqG7lg4yZ1s94zWknDF5bsq0ylmICi2p833DV8PkCfRwxiGuyw19Iwt46Fj+kEchYayW X-Received: by 2002:a05:6a21:99a6:b0:15d:e68d:a850 with SMTP id ve38-20020a056a2199a600b0015de68da850mr1011780pzb.29.1695388007435; Fri, 22 Sep 2023 06:06:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695388007; cv=none; d=google.com; s=arc-20160816; b=g3696rf2zLJ30fRaZuV1ZQYBVnpnV+1RkdKkK/lpWqWbEVs4tOwDXvCjseEQENKDpQ f6Zl+95nINdTaiDQ6hFcRq/1EtC3Py2VCY7eRdjgEPrAbL/7hH/TOyLKuSw9p1MzeVYQ FKu/tNZi255awGCRLjIQNjd/Pi0QFWqLw5N8eVRZWmDozaKOwQ4hpRoNGE/KTY1CePIp RQ9uF6Aw57Idrc/SW/AUU4b6tKQWPDCOdPG3+h9poonMwAxdmw9P6sNjF9rEN/2l02+H ISH8j3ikaDU07XyHpUxpw+9XO342KnYNIU7E2aDDVOPynInJGIpYUm3VNEYrKde3Qx2u bHvA== 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=8xPn0fJb1G79vmQneRtFHd9riwOuPrJO1tNQT+KG0zw=; fh=rOC7q8UJisRayejF6PsoKdRfRTtXVZOwgDCXOG0B/ws=; b=ESePoky0GJMp0lkSRmQBt6dX3HaZKb7mm7Uvyz6oKiodPR0XZCxqBCJbzJepYNG9bI eVt5MkfCKEG4vUHuPQOUTg0w/eS6e433dSMRXT30s3iyM+d45U7iTZSkLRtfOiPESxTY 8jBuLf50DoDvZqljO1xVvjc322zcU3mjTj2xT3Vy4P1DEDG5uQoVao4zHLx3NQJ2yqhy 65LO4xHd+W3VYdwY8rKFaWwmhDHJXF/bCC27VEuzBl707bGvspiJB8jRv28iojtdSb4r 1zcBHcl6+F8Ldr8Tn2g5hjuBsNIDP9nNemXeVjCn7iunLXzHucowVNU95hCshgp37EgH vbyA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@baylibre-com.20230601.gappssmtp.com header.s=20230601 header.b=h+hIf0yJ; 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 morse.vger.email (morse.vger.email. [23.128.96.31]) by mx.google.com with ESMTPS id bz14-20020a056a02060e00b00578e7a37c44si4445591pgb.42.2023.09.22.06.06.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 22 Sep 2023 06:06:47 -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=h+hIf0yJ; 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 21FFC80E341E; Thu, 21 Sep 2023 14:30:49 -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 S231305AbjIUVaT (ORCPT + 29 others); Thu, 21 Sep 2023 17:30:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55372 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232913AbjIUV3t (ORCPT ); Thu, 21 Sep 2023 17:29:49 -0400 Received: from mail-lf1-x12c.google.com (mail-lf1-x12c.google.com [IPv6:2a00:1450:4864:20::12c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 23EF45A547 for ; Thu, 21 Sep 2023 10:21:05 -0700 (PDT) Received: by mail-lf1-x12c.google.com with SMTP id 2adb3069b0e04-50309daf971so2094804e87.3 for ; Thu, 21 Sep 2023 10:21:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1695316863; x=1695921663; 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=8xPn0fJb1G79vmQneRtFHd9riwOuPrJO1tNQT+KG0zw=; b=h+hIf0yJTtxC72bXuY5NuqQFwkiUreo703I7TggGX1vLVGqRCpqzbfVUTIjhmbt840 JT4/6OYVPq8qQCgh4Hmms9gLcXl8blCuNe0BGPx6sdlJqw6jfGc2l8ZFXEGTHQu4daKL pdrOkXXG6NrsREwYjM5Tn2on4XW63es2Kw5S3m8HrJ5iRQHOMrGQ8IvTYbS9x5z1uSpD SwyDGYeMozAtVkH/NotniAcAC7yxijZHGgNyNkwIbFRWSMKqaxnnoK9jczNU47+v6JCM hm6AKztTlNdB47tlBxKDDiEex2r00SZxfKX2+VlmB5j3LthsTEgn1np+BTeHD6vz8Fie j20A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695316863; x=1695921663; 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=8xPn0fJb1G79vmQneRtFHd9riwOuPrJO1tNQT+KG0zw=; b=InytAFA2UIu6S4d1YFfRtCgt+TGKlkFr7T2RKDb5277tzL40fFewoYng9wAZ96/vtu ACknd8Eqp//45/GOMEKKQc8/Osv3lwE0g5seAR7hs+SrAbFGZ2lz3cb5n0SxgOnIB6rU BJtz624CQLbh9oVG+X5L/HStuBCwWa4uiMUUhi28J00OAndZ6a4xxKmsIOQIU7XydvlA moe3UVjPcqSN4+UdMrCVHuxd2csAitZSpzo7emH4A9mtFshJnuupiJIfaF/Oih+iOLq6 VbG2oqjyfnFiNMpV+0V3aMGoUUljXmwLPr3ql5l/iYyTavO5c+w8X7IPl3xDLKoXjPnj 790Q== X-Gm-Message-State: AOJu0Yw0eykL0JAqRRb+5pMUAcebZxLSU4EoB0De9rsNGIEee72NBThc HYa3vJB7802lwj18QEXsdCpyku0kRj58UhYBtcs8nwFT X-Received: by 2002:a5d:608d:0:b0:321:4b47:d1c0 with SMTP id w13-20020a5d608d000000b003214b47d1c0mr4847398wrt.71.1695306158083; Thu, 21 Sep 2023 07:22:38 -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.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Sep 2023 07:22:37 -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_S=C3=A1?= , Axel Haslam , Philip Molloy , David Lechner Subject: [v2 07/19] staging: iio: resolver: ad2s1210: implement IIO_CHAN_INFO_SCALE Date: Thu, 21 Sep 2023 09:19:35 -0500 Message-Id: <20230921141947.57784-10-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 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 14:30:49 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1777743174837023341 X-GMAIL-MSGID: 1777743174837023341 This adds an implementation of IIO_CHAN_INFO_SCALE to the ad2s1210 resolver driver. This allows userspace to get the scale factor for the raw values. Signed-off-by: David Lechner --- drivers/staging/iio/resolver/ad2s1210.c | 107 ++++++++++++++++-------- 1 file changed, 72 insertions(+), 35 deletions(-) diff --git a/drivers/staging/iio/resolver/ad2s1210.c b/drivers/staging/iio/resolver/ad2s1210.c index 985b8fecd65a..95d43b241a75 100644 --- a/drivers/staging/iio/resolver/ad2s1210.c +++ b/drivers/staging/iio/resolver/ad2s1210.c @@ -458,56 +458,91 @@ static ssize_t ad2s1210_store_reg(struct device *dev, return ret < 0 ? ret : len; } +static const int ad2s1210_velocity_scale[] = { + 17089132, /* 8.192MHz / (2*pi * 2500 / 2^15) */ + 42722830, /* 8.192MHz / (2*pi * 1000 / 2^15) */ + 85445659, /* 8.192MHz / (2*pi * 500 / 2^15) */ + 341782638, /* 8.192MHz / (2*pi * 125 / 2^15) */ +}; + static int ad2s1210_read_raw(struct iio_dev *indio_dev, struct iio_chan_spec const *chan, int *val, int *val2, - long m) + long mask) { struct ad2s1210_state *st = iio_priv(indio_dev); int ret = 0; - mutex_lock(&st->lock); - gpiod_set_value(st->gpios[AD2S1210_SAMPLE], 0); - /* delay (6 * tck + 20) nano seconds */ - udelay(1); + switch (mask) { + case IIO_CHAN_INFO_RAW: + mutex_lock(&st->lock); + gpiod_set_value(st->gpios[AD2S1210_SAMPLE], 0); + /* delay (6 * tck + 20) nano seconds */ + udelay(1); + + switch (chan->type) { + case IIO_ANGL: + ad2s1210_set_mode(MOD_POS, st); + break; + case IIO_ANGL_VEL: + ad2s1210_set_mode(MOD_VEL, st); + break; + default: + ret = -EINVAL; + break; + } + if (ret < 0) + goto error_info_raw; + ret = spi_read(st->sdev, st->rx, 2); + if (ret < 0) + goto error_info_raw; + + switch (chan->type) { + case IIO_ANGL: + *val = be16_to_cpup((__be16 *)st->rx); + ret = IIO_VAL_INT; + break; + case IIO_ANGL_VEL: + *val = (s16)be16_to_cpup((__be16 *)st->rx); + ret = IIO_VAL_INT; + break; + default: + ret = -EINVAL; + break; + } - switch (chan->type) { - case IIO_ANGL: - ad2s1210_set_mode(MOD_POS, st); - break; - case IIO_ANGL_VEL: - ad2s1210_set_mode(MOD_VEL, st); - break; - default: - ret = -EINVAL; +error_info_raw: + gpiod_set_value(st->gpios[AD2S1210_SAMPLE], 1); + /* delay (2 * tck + 20) nano seconds */ + udelay(1); + mutex_unlock(&st->lock); break; - } - if (ret < 0) - goto error_ret; - ret = spi_read(st->sdev, st->rx, 2); - if (ret < 0) - goto error_ret; - switch (chan->type) { - case IIO_ANGL: - *val = be16_to_cpup((__be16 *)st->rx); - ret = IIO_VAL_INT; - break; - case IIO_ANGL_VEL: - *val = (s16)be16_to_cpup((__be16 *)st->rx); - ret = IIO_VAL_INT; + case IIO_CHAN_INFO_SCALE: + switch (chan->type) { + case IIO_ANGL: + /* approx 0.3 arc min converted to radians */ + *val = 0; + *val2 = 95874; + ret = IIO_VAL_INT_PLUS_NANO; + break; + case IIO_ANGL_VEL: + *val = st->fclkin; + *val2 = ad2s1210_velocity_scale[st->resolution]; + ret = IIO_VAL_FRACTIONAL; + break; + default: + ret = -EINVAL; + break; + } break; + default: ret = -EINVAL; break; } -error_ret: - gpiod_set_value(st->gpios[AD2S1210_SAMPLE], 1); - /* delay (2 * tck + 20) nano seconds */ - udelay(1); - mutex_unlock(&st->lock); return ret; } @@ -549,12 +584,14 @@ static const struct iio_chan_spec ad2s1210_channels[] = { .type = IIO_ANGL, .indexed = 1, .channel = 0, - .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), + .info_mask_separate = BIT(IIO_CHAN_INFO_RAW) | + BIT(IIO_CHAN_INFO_SCALE), }, { .type = IIO_ANGL_VEL, .indexed = 1, .channel = 0, - .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), + .info_mask_separate = BIT(IIO_CHAN_INFO_RAW) | + BIT(IIO_CHAN_INFO_SCALE), } }; From patchwork Thu Sep 21 14:19:36 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Lechner X-Patchwork-Id: 143004 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:172:b0:3f2:4152:657d with SMTP id h50csp5209409vqi; Thu, 21 Sep 2023 16:37:22 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEAuv/Jo8BnPHgg7MIkEYNWTmegTds+f6zNOoDjmFbiTiLgshNzvKwjFCUN6fv3gWiwNdO5 X-Received: by 2002:a17:902:728a:b0:1c3:3c0f:3dee with SMTP id d10-20020a170902728a00b001c33c0f3deemr6005562pll.31.1695339442548; Thu, 21 Sep 2023 16:37:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695339442; cv=none; d=google.com; s=arc-20160816; b=Vt87LVwMJIr4+nZG+vo9Kx1XDfJDOXvyWu8bSxpR7thDnZFHbhQCKk3J3QLM1MlnPp kh4GCjKFk5AkRBo+/+jY2XBRG7tnTBQU4JEw9Py86GM6PXdrfUAxHhxEFpdj9TDpLU27 Ov4P8rRoVK4mDkiNE6SZJHcdtRZAetiNUs5eTRd6T5TuMqKeVijArKe/8uvwlMt3V/vX NKjZOyaU12SgmuI1CQG3NtIGP2S46HhmIGUucf16KNskdufQSiZjUP29EibONP+ORct0 3LGy3RMtXKYtl88IePQ0BEMy/GCmO284ErtjJfJLycTvCTXy1siU3JmE3bTuNTlA0cEE T6aw== 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=phvZq4VpwSFX4vyqlS17/uN/agj73xAJlQboMqH0z3o=; fh=rOC7q8UJisRayejF6PsoKdRfRTtXVZOwgDCXOG0B/ws=; b=K5PpVODc4E50CBEtqxWC7veuo9hlL7PSbVkQq/2eJSZmZ8QTzBBYNDaemnlZMDTCCS IhMD8eLt0MfSC0joxatg7LaCAev84+UrKS9PK+Q8qiRSZjicMdRBa74N+y2OxXF2KST5 jLKD7Xy9Gxo1XHxoB1snoNChxRmg1eDxCVvMIbgKBCxM85vWUDL1dVVfwRcZZMHkXqp4 ji3ey45hRp4KGldDVQatg2TadYvX4tNEFiFR5oteeRAJYM2AWZYNl8nZFIr+EXrySVWW Axv3RobTPRlmNryMaDPsPMpLuRs191FaVR2GdeZoHmgPe0Jk22Kogo03qC6LSbL+E/C4 Kquw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@baylibre-com.20230601.gappssmtp.com header.s=20230601 header.b="2/w3DQTs"; 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 jb22-20020a170903259600b001c4e9d53508si2316172plb.346.2023.09.21.16.37.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Sep 2023 16:37:22 -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="2/w3DQTs"; 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 20E8782CC433; Thu, 21 Sep 2023 11:15:54 -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 S230271AbjIUSP1 (ORCPT + 29 others); Thu, 21 Sep 2023 14:15:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37604 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230081AbjIUSPA (ORCPT ); Thu, 21 Sep 2023 14:15:00 -0400 Received: from mail-lf1-x133.google.com (mail-lf1-x133.google.com [IPv6:2a00:1450:4864:20::133]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F33AB4F938 for ; Thu, 21 Sep 2023 10:15:19 -0700 (PDT) Received: by mail-lf1-x133.google.com with SMTP id 2adb3069b0e04-5041335fb9cso2098797e87.0 for ; Thu, 21 Sep 2023 10:15:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1695316517; x=1695921317; 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=phvZq4VpwSFX4vyqlS17/uN/agj73xAJlQboMqH0z3o=; b=2/w3DQTsFoE8IXVo9XvxrUBOP0vOKq3/Sd8VnK0Hz2RqkTqQAyNj0y68tmNEfowjak ZoNsGqeCVsRLyxEx6rUnU7iWOwHle3SGScIb1ZtPsZxHr5tGcMB/WFlkIoVhItM6lHqF 7mMP6XnWKnubvv1qBqNpnDpDISd7BqkfWIzETAOOx2aNZvMp7ali3Rwq4jFHqan+s4/o 7GnxqdDTfpfDqjk2s4HUsQjfZrC9s0KvK4gjEZdNAjJCtrIgwV6Px0+k+gV50Xcj0I0+ 6KlOcDHzhNBO3d4OZLd3P5s/W3FWc63EdUYC13btf8IYlS+ESERwND9I5DpjS/RyCTR8 /hoQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695316517; x=1695921317; 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=phvZq4VpwSFX4vyqlS17/uN/agj73xAJlQboMqH0z3o=; b=nT5xfYcmY0pXys1BN/IlBTjyxRyCWZ7bq3248jtlV/OsUd3Yal4veIb9EFJlCK+CUC R3drd48CoN3L0DP381LMsancXvAsRbwIeoGstzq1ZzVjVqnFRf38WelDcvnmdksHMv8W D1OgXIEXgg9eOwhHnBMP1l/1n/+JN9rgHDZ2/6ACH4WasjYGlTJgnh/f4oBgFjiAtpv5 Ph4Nj5jl68H2/J25MhdCJRVeUDeYZ56RtFEpo6kvODyqLWMSsX+xaJAirtwQFUrAQypU HL1/l6tJUXWjnn0WbRSeQGEorrmbJtGGHP7eBIpugKrrnc6XXEmHe4TQNpk9CqQflFrJ cAYQ== X-Gm-Message-State: AOJu0Yw0DTVUhe99tcP1/TsHrvkQsLQbBOn6sCqB2pfNZEAL74uk4z0+ De87JVyrL/dkCKrbZOgQ1j1jInMcyvpWYkqxFDmKxHVQ X-Received: by 2002:adf:fdc3:0:b0:321:6388:bccb with SMTP id i3-20020adffdc3000000b003216388bccbmr4781473wrs.21.1695306159013; Thu, 21 Sep 2023 07:22:39 -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.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Sep 2023 07:22:38 -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_S=C3=A1?= , Axel Haslam , Philip Molloy , David Lechner Subject: [v2 08/19] staging: iio: resolver: ad2s1210: use devicetree to get fclkin Date: Thu, 21 Sep 2023 09:19:36 -0500 Message-Id: <20230921141947.57784-11-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 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,RCVD_IN_DNSWL_BLOCKED,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]); Thu, 21 Sep 2023 11:15:54 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1777692251369063098 X-GMAIL-MSGID: 1777692251369063098 This removes the fclkin sysfs attribute and replaces it with getting the fclkin clock rate using the clk subsystem (i.e. from the devicetree). The fclkin clock comes from an external oscillator that is connected directly to the AD2S1210 chip, so users of the sysfs attributes should not need to be concerned with this. Also sort includes while we are touching this. Signed-off-by: David Lechner --- drivers/staging/iio/resolver/Kconfig | 1 + drivers/staging/iio/resolver/ad2s1210.c | 76 +++++++++---------------- 2 files changed, 28 insertions(+), 49 deletions(-) diff --git a/drivers/staging/iio/resolver/Kconfig b/drivers/staging/iio/resolver/Kconfig index 6d1e2622e0b0..bebb35822c9e 100644 --- a/drivers/staging/iio/resolver/Kconfig +++ b/drivers/staging/iio/resolver/Kconfig @@ -7,6 +7,7 @@ menu "Resolver to digital converters" config AD2S1210 tristate "Analog Devices ad2s1210 driver" depends on SPI + depends on COMMON_CLK depends on GPIOLIB || COMPILE_TEST help Say yes here to build support for Analog Devices spi resolver diff --git a/drivers/staging/iio/resolver/ad2s1210.c b/drivers/staging/iio/resolver/ad2s1210.c index 95d43b241a75..153ac7704ad7 100644 --- a/drivers/staging/iio/resolver/ad2s1210.c +++ b/drivers/staging/iio/resolver/ad2s1210.c @@ -5,16 +5,17 @@ * Copyright (c) 2010-2010 Analog Devices Inc. * Copyright (C) 2023 BayLibre, SAS */ -#include -#include +#include +#include #include +#include +#include +#include #include -#include #include +#include #include -#include -#include -#include +#include #include #include @@ -91,7 +92,8 @@ struct ad2s1210_state { struct mutex lock; struct spi_device *sdev; struct gpio_desc *gpios[5]; - unsigned int fclkin; + /** The external oscillator frequency in Hz. */ + unsigned long fclkin; unsigned int fexcit; bool hysteresis; u8 resolution; @@ -198,45 +200,6 @@ static inline int ad2s1210_soft_reset(struct ad2s1210_state *st) return ad2s1210_config_write(st, 0x0); } -static ssize_t ad2s1210_show_fclkin(struct device *dev, - struct device_attribute *attr, - char *buf) -{ - struct ad2s1210_state *st = iio_priv(dev_to_iio_dev(dev)); - - return sprintf(buf, "%u\n", st->fclkin); -} - -static ssize_t ad2s1210_store_fclkin(struct device *dev, - struct device_attribute *attr, - const char *buf, - size_t len) -{ - struct ad2s1210_state *st = iio_priv(dev_to_iio_dev(dev)); - unsigned int fclkin; - int ret; - - ret = kstrtouint(buf, 10, &fclkin); - if (ret) - return ret; - if (fclkin < AD2S1210_MIN_CLKIN || fclkin > AD2S1210_MAX_CLKIN) { - dev_err(dev, "ad2s1210: fclkin out of range\n"); - return -EINVAL; - } - - mutex_lock(&st->lock); - st->fclkin = fclkin; - - ret = ad2s1210_update_frequency_control_word(st); - if (ret < 0) - goto error_ret; - ret = ad2s1210_soft_reset(st); -error_ret: - mutex_unlock(&st->lock); - - return ret < 0 ? ret : len; -} - static ssize_t ad2s1210_show_fexcit(struct device *dev, struct device_attribute *attr, char *buf) @@ -546,8 +509,6 @@ static int ad2s1210_read_raw(struct iio_dev *indio_dev, return ret; } -static IIO_DEVICE_ATTR(fclkin, 0644, - ad2s1210_show_fclkin, ad2s1210_store_fclkin, 0); static IIO_DEVICE_ATTR(fexcit, 0644, ad2s1210_show_fexcit, ad2s1210_store_fexcit, 0); static IIO_DEVICE_ATTR(control, 0644, @@ -596,7 +557,6 @@ static const struct iio_chan_spec ad2s1210_channels[] = { }; static struct attribute *ad2s1210_attributes[] = { - &iio_dev_attr_fclkin.dev_attr.attr, &iio_dev_attr_fexcit.dev_attr.attr, &iio_dev_attr_control.dev_attr.attr, &iio_dev_attr_bits.dev_attr.attr, @@ -654,6 +614,24 @@ static const struct iio_info ad2s1210_info = { .attrs = &ad2s1210_attribute_group, }; +static int ad2s1210_setup_clocks(struct ad2s1210_state *st) +{ + struct device *dev = &st->sdev->dev; + struct clk *clk; + + clk = devm_clk_get_enabled(dev, NULL); + if (IS_ERR(clk)) + return dev_err_probe(dev, PTR_ERR(clk), "failed to get clock\n"); + + st->fclkin = clk_get_rate(clk); + if (st->fclkin < AD2S1210_MIN_CLKIN || st->fclkin > AD2S1210_MAX_CLKIN) + return dev_err_probe(dev, -EINVAL, + "clock frequency out of range: %lu\n", + st->fclkin); + + return 0; +} + static int ad2s1210_setup_gpios(struct ad2s1210_state *st) { struct spi_device *spi = st->sdev; From patchwork Thu Sep 21 14:19:37 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Lechner X-Patchwork-Id: 142867 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:172:b0:3f2:4152:657d with SMTP id h50csp5094818vqi; Thu, 21 Sep 2023 12:44:14 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHiVnp+rgY7vNuGw5c5BYmuQwGdZPscEq/IbzT4EGgoUCGIf0rUOCp4B6SPlG4Z92MjMoF3 X-Received: by 2002:a17:902:e74f:b0:1b5:561a:5ca9 with SMTP id p15-20020a170902e74f00b001b5561a5ca9mr7246107plf.50.1695325454456; Thu, 21 Sep 2023 12:44:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695325454; cv=none; d=google.com; s=arc-20160816; b=Rj4isct63aA1SFXYDiO0AGhpRpul+NM4CKXBpnHUN3DirHSzwlmMDbhcUfbCk1CBJa ZhJx3rkJjiFiRt8mqDtRkE1bz+0wO/i2pvC3M/EeLA5YvZ6hrlRSpG6sZsz9QZnFiGTK CM6eeVu4oyZtIglsC8UgUYuz504qpjqwuZXKQ893gxCzOtSfOYVMRLE8mvH6R6SRQquY rSI+jtKwTj1IotWMtySkR8ZppxrOrn4Wt1mJ4sZ0MgF6jvwAzpam0LONa7EXq4d+VmV8 hGA/YHlWrfPT2ld6WS1QBHMnMkm4NL+md0kLo93CLZujTJu9+CwON6tpvv8FVstFUH1f Ytfw== 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=ms6XtDC2gqm1+y4qBooiAiA+r/YZdcas3vjvFP4dBPU=; fh=rOC7q8UJisRayejF6PsoKdRfRTtXVZOwgDCXOG0B/ws=; b=KnBpbfWzpEuyTNU/aEp+m+MWrN7FrLYs4cpDxWVsFHzkK+DVjYpPAF2Ra1DrHslsEU d+NPmpdKiwRZ4dNc7q9JmsM2Y5HPslMN9SWcmAYPS/MSZq6Q+KCV7XimNlD0kDf+ZzXa n2SK1CtkgO755bSka3cCogL73hvLn3JCq+wM4aLnnpGEl6lEcYP3WsnExPbfNuoz4cs4 ggbW+Qru0FvYj94rXHTsV8Jr5CERYdvcqfJWSExEZw95TU9KQA8MboYlVDhvi6hawdkf zf9kcoKFy3w4K0binWd8G1rXeOrOhdX1QbSw7eBz9wac1QE+bL55lz2Q89wEs9usDoov 9nWQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@baylibre-com.20230601.gappssmtp.com header.s=20230601 header.b=zB9Hv8U+; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id j10-20020a170902da8a00b001b9be39eaa8si2117460plx.348.2023.09.21.12.44.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Sep 2023 12:44:14 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; dkim=pass header.i=@baylibre-com.20230601.gappssmtp.com header.s=20230601 header.b=zB9Hv8U+; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 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 8B31D821E19C; Thu, 21 Sep 2023 11:11:33 -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 S229865AbjIUSL2 (ORCPT + 29 others); Thu, 21 Sep 2023 14:11:28 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47006 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230162AbjIUSK6 (ORCPT ); Thu, 21 Sep 2023 14:10:58 -0400 Received: from mail-wm1-x336.google.com (mail-wm1-x336.google.com [IPv6:2a00:1450:4864:20::336]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8DE6819A for ; Thu, 21 Sep 2023 10:51:20 -0700 (PDT) Received: by mail-wm1-x336.google.com with SMTP id 5b1f17b1804b1-400a087b0bfso13022415e9.2 for ; Thu, 21 Sep 2023 10:51:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1695318678; x=1695923478; 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=ms6XtDC2gqm1+y4qBooiAiA+r/YZdcas3vjvFP4dBPU=; b=zB9Hv8U+d53HTid3NzV6+rYWOl9xaUyOKct+mnAL8/ViNWrMTIT92zNt0vdGHVelYC Z+AD9C3OmMwBY1MQuehevSdi5DaALkT1qiAUxe2c05gqVeTOwdRrTXdxxliowb+RMszB AlGKqCiD3SWSgsS7HFR9Ls0AWF4Jyigo9m8RGEHFrKGtNTBHi3zrJKVKki3vPdfDWwIN jzfZaYJiG3wD096v55BOWlmYjdvA8qNHJ2X1ab1rMDhqiRt0oUt9iWeEiaMEbqQN8xjB jUZD7gey98PAfB7YsTuir361Hi1PxwOQTgrsqZUKEgSsDmz6VimtjQx2qETg/5l7d7gl hc5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695318678; x=1695923478; 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=ms6XtDC2gqm1+y4qBooiAiA+r/YZdcas3vjvFP4dBPU=; b=b0ZEkOtZ0/2MWIRVu3W8RoCi4LUtZHWnoFAwYeg/onViGms+FgCM7bAENXWfmF+j0e B18H/NPmGLKMXHHfoMmH90M16dKVrVqBN+fCQVhlAANXlMtQHEijyuJ195fwmabyq+qL 5poMlccdpg5pBclRiFJAgBVLk+OstZo1kJjyCONS8TyXlFgYwYWJmi+WWKaJsVC81X+w 2ejOGlfovTuqtLy8fYXo6taHbY1RYvcUrnauRWgRvpYLPvT6uC7se23qC8Cypn2hfC8X vXTP0mSaTKv5p+OWqP7M8kCY5IEJC+vsdhIhoZ26EjpTSNeIEgnT/AEC6I3eECG+Jy4T jQQg== X-Gm-Message-State: AOJu0YzNuVMMNyoeJCjbRBa88wfHtS5y4irokjJ3NitUf66AZfKCzYR4 5lAP+DSYsFvAS6Ysu11UJ/DpX+hIYMParo0kp02jIqRI X-Received: by 2002:adf:ea8b:0:b0:31a:e772:ddf0 with SMTP id s11-20020adfea8b000000b0031ae772ddf0mr5106504wrm.53.1695306160016; Thu, 21 Sep 2023 07:22:40 -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.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Sep 2023 07:22:39 -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_S=C3=A1?= , Axel Haslam , Philip Molloy , David Lechner Subject: [v2 09/19] staging: iio: resolver: ad2s1210: use regmap for config registers Date: Thu, 21 Sep 2023 09:19:37 -0500 Message-Id: <20230921141947.57784-12-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 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]); Thu, 21 Sep 2023 11:11:33 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1777677583672340800 X-GMAIL-MSGID: 1777677583672340800 This makes use of the regmap API to read and write the configuration registers. This simplifies code quite a bit and makes it safer (previously, it was easy to write a bad value to the config registers which causes the chip to lock up and need to be reset). Signed-off-by: David Lechner --- drivers/staging/iio/resolver/ad2s1210.c | 251 ++++++++++++++---------- 1 file changed, 149 insertions(+), 102 deletions(-) diff --git a/drivers/staging/iio/resolver/ad2s1210.c b/drivers/staging/iio/resolver/ad2s1210.c index 153ac7704ad7..3c81ee61b897 100644 --- a/drivers/staging/iio/resolver/ad2s1210.c +++ b/drivers/staging/iio/resolver/ad2s1210.c @@ -5,6 +5,7 @@ * Copyright (c) 2010-2010 Analog Devices Inc. * Copyright (C) 2023 BayLibre, SAS */ +#include #include #include #include @@ -12,6 +13,7 @@ #include #include #include +#include #include #include #include @@ -22,21 +24,20 @@ #define DRV_NAME "ad2s1210" +/* default value of control register on powerup */ #define AD2S1210_DEF_CONTROL 0x7E -#define AD2S1210_MSB_IS_HIGH 0x80 -#define AD2S1210_MSB_IS_LOW 0x7F -#define AD2S1210_PHASE_LOCK_RANGE_44 0x20 -#define AD2S1210_ENABLE_HYSTERESIS 0x10 -#define AD2S1210_SET_ENRES1 0x08 -#define AD2S1210_SET_ENRES0 0x04 -#define AD2S1210_SET_RES1 0x02 -#define AD2S1210_SET_RES0 0x01 - -#define AD2S1210_SET_RESOLUTION (AD2S1210_SET_RES1 | AD2S1210_SET_RES0) - -#define AD2S1210_REG_POSITION 0x80 -#define AD2S1210_REG_VELOCITY 0x82 +/* control register flags */ +#define AD2S1210_ADDRESS_DATA BIT(7) +#define AD2S1210_PHASE_LOCK_RANGE_44 BIT(5) +#define AD2S1210_ENABLE_HYSTERESIS BIT(4) +#define AD2S1210_SET_ENRES GENMASK(3, 2) +#define AD2S1210_SET_RES GENMASK(1, 0) + +#define AD2S1210_REG_POSITION_MSB 0x80 +#define AD2S1210_REG_POSITION_LSB 0x81 +#define AD2S1210_REG_VELOCITY_MSB 0x82 +#define AD2S1210_REG_VELOCITY_LSB 0x83 #define AD2S1210_REG_LOS_THRD 0x88 #define AD2S1210_REG_DOS_OVR_THRD 0x89 #define AD2S1210_REG_DOS_MIS_THRD 0x8A @@ -92,6 +93,8 @@ struct ad2s1210_state { struct mutex lock; struct spi_device *sdev; struct gpio_desc *gpios[5]; + /** Used to access config registers. */ + struct regmap *regmap; /** The external oscillator frequency in Hz. */ unsigned long fclkin; unsigned int fexcit; @@ -116,24 +119,51 @@ static inline void ad2s1210_set_mode(enum ad2s1210_mode mode, st->mode = mode; } -/* write 1 bytes (address or data) to the chip */ -static int ad2s1210_config_write(struct ad2s1210_state *st, u8 data) +/* + * Writes the given data to the given register address. + * + * If the mode is configurable, the device will first be placed in + * configuration mode. + */ +static int ad2s1210_regmap_reg_write(void *context, unsigned int reg, + unsigned int val) { - int ret; + struct ad2s1210_state *st = context; + struct spi_transfer xfers[] = { + { + .len = 1, + .rx_buf = &st->rx[0], + .tx_buf = &st->tx[0], + .cs_change = 1, + }, { + .len = 1, + .rx_buf = &st->rx[1], + .tx_buf = &st->tx[1], + }, + }; + + /* values can only be 7 bits, the MSB indicates an address */ + if (val & ~0x7F) + return -EINVAL; + + st->tx[0] = reg; + st->tx[1] = val; ad2s1210_set_mode(MOD_CONFIG, st); - st->tx[0] = data; - ret = spi_write(st->sdev, st->tx, 1); - if (ret < 0) - return ret; - return 0; + return spi_sync_transfer(st->sdev, xfers, ARRAY_SIZE(xfers)); } -/* read value from one of the registers */ -static int ad2s1210_config_read(struct ad2s1210_state *st, - unsigned char address) +/* + * Reads value from one of the registers. + * + * If the mode is configurable, the device will first be placed in + * configuration mode. + */ +static int ad2s1210_regmap_reg_read(void *context, unsigned int reg, + unsigned int *val) { + struct ad2s1210_state *st = context; struct spi_transfer xfers[] = { { .len = 1, @@ -146,22 +176,34 @@ static int ad2s1210_config_read(struct ad2s1210_state *st, .tx_buf = &st->tx[1], }, }; - int ret = 0; + int ret; ad2s1210_set_mode(MOD_CONFIG, st); - st->tx[0] = address | AD2S1210_MSB_IS_HIGH; + st->tx[0] = reg; + /* Must be valid register address here otherwise this could write data. + * It doesn't matter which one. + */ st->tx[1] = AD2S1210_REG_FAULT; - ret = spi_sync_transfer(st->sdev, xfers, 2); + + ret = spi_sync_transfer(st->sdev, xfers, ARRAY_SIZE(xfers)); if (ret < 0) return ret; - return st->rx[1]; + /* If the D7 bit is set on any read/write register, it indicates a + * parity error. The fault register is read-only and the D7 bit means + * something else there. + */ + if (reg != AD2S1210_REG_FAULT && st->rx[1] & AD2S1210_ADDRESS_DATA) + return -EBADMSG; + + *val = st->rx[1]; + + return 0; } static inline int ad2s1210_update_frequency_control_word(struct ad2s1210_state *st) { - int ret; unsigned char fcw; fcw = (unsigned char)(st->fexcit * (1 << 15) / st->fclkin); @@ -170,11 +212,7 @@ int ad2s1210_update_frequency_control_word(struct ad2s1210_state *st) return -ERANGE; } - ret = ad2s1210_config_write(st, AD2S1210_REG_EXCIT_FREQ); - if (ret < 0) - return ret; - - return ad2s1210_config_write(st, fcw); + return regmap_write(st->regmap, AD2S1210_REG_EXCIT_FREQ, fcw); } static const int ad2s1210_res_pins[4][2] = { @@ -191,13 +229,7 @@ static inline void ad2s1210_set_resolution_pin(struct ad2s1210_state *st) static inline int ad2s1210_soft_reset(struct ad2s1210_state *st) { - int ret; - - ret = ad2s1210_config_write(st, AD2S1210_REG_SOFT_RESET); - if (ret < 0) - return ret; - - return ad2s1210_config_write(st, 0x0); + return regmap_write(st->regmap, AD2S1210_REG_SOFT_RESET, 0); } static ssize_t ad2s1210_show_fexcit(struct device *dev, @@ -242,12 +274,13 @@ static ssize_t ad2s1210_show_control(struct device *dev, char *buf) { struct ad2s1210_state *st = iio_priv(dev_to_iio_dev(dev)); + unsigned int value; int ret; mutex_lock(&st->lock); - ret = ad2s1210_config_read(st, AD2S1210_REG_CONTROL); + ret = regmap_read(st->regmap, AD2S1210_REG_CONTROL, &value); mutex_unlock(&st->lock); - return ret < 0 ? ret : sprintf(buf, "0x%x\n", ret); + return ret < 0 ? ret : sprintf(buf, "0x%x\n", value); } static ssize_t ad2s1210_store_control(struct device *dev, @@ -264,25 +297,13 @@ static ssize_t ad2s1210_store_control(struct device *dev, return -EINVAL; mutex_lock(&st->lock); - ret = ad2s1210_config_write(st, AD2S1210_REG_CONTROL); - if (ret < 0) - goto error_ret; - data = udata & AD2S1210_MSB_IS_LOW; - ret = ad2s1210_config_write(st, data); + data = udata & ~AD2S1210_ADDRESS_DATA; + ret = regmap_write(st->regmap, AD2S1210_REG_CONTROL, data); if (ret < 0) goto error_ret; - ret = ad2s1210_config_read(st, AD2S1210_REG_CONTROL); - if (ret < 0) - goto error_ret; - if (ret & AD2S1210_MSB_IS_HIGH) { - ret = -EIO; - dev_err(dev, - "ad2s1210: write control register fail\n"); - goto error_ret; - } st->resolution = - ad2s1210_resolution_value[data & AD2S1210_SET_RESOLUTION]; + ad2s1210_resolution_value[data & AD2S1210_SET_RES]; ad2s1210_set_resolution_pin(st); ret = len; st->hysteresis = !!(data & AD2S1210_ENABLE_HYSTERESIS); @@ -315,30 +336,17 @@ static ssize_t ad2s1210_store_resolution(struct device *dev, dev_err(dev, "ad2s1210: resolution out of range\n"); return -EINVAL; } + + data = (udata - 10) >> 1; + mutex_lock(&st->lock); - ret = ad2s1210_config_read(st, AD2S1210_REG_CONTROL); - if (ret < 0) - goto error_ret; - data = ret; - data &= ~AD2S1210_SET_RESOLUTION; - data |= (udata - 10) >> 1; - ret = ad2s1210_config_write(st, AD2S1210_REG_CONTROL); - if (ret < 0) - goto error_ret; - ret = ad2s1210_config_write(st, data & AD2S1210_MSB_IS_LOW); + ret = regmap_update_bits(st->regmap, AD2S1210_REG_CONTROL, + AD2S1210_SET_RES, data); if (ret < 0) goto error_ret; - ret = ad2s1210_config_read(st, AD2S1210_REG_CONTROL); - if (ret < 0) - goto error_ret; - data = ret; - if (data & AD2S1210_MSB_IS_HIGH) { - ret = -EIO; - dev_err(dev, "ad2s1210: setting resolution fail\n"); - goto error_ret; - } + st->resolution = - ad2s1210_resolution_value[data & AD2S1210_SET_RESOLUTION]; + ad2s1210_resolution_value[data & AD2S1210_SET_RES]; ad2s1210_set_resolution_pin(st); ret = len; error_ret: @@ -351,13 +359,14 @@ static ssize_t ad2s1210_show_fault(struct device *dev, struct device_attribute *attr, char *buf) { struct ad2s1210_state *st = iio_priv(dev_to_iio_dev(dev)); + unsigned int value; int ret; mutex_lock(&st->lock); - ret = ad2s1210_config_read(st, AD2S1210_REG_FAULT); + ret = regmap_read(st->regmap, AD2S1210_REG_FAULT, &value); mutex_unlock(&st->lock); - return (ret < 0) ? ret : sprintf(buf, "0x%02x\n", ret); + return ret < 0 ? ret : sprintf(buf, "0x%02x\n", value); } static ssize_t ad2s1210_clear_fault(struct device *dev, @@ -366,6 +375,7 @@ static ssize_t ad2s1210_clear_fault(struct device *dev, size_t len) { struct ad2s1210_state *st = iio_priv(dev_to_iio_dev(dev)); + unsigned int value; int ret; mutex_lock(&st->lock); @@ -373,7 +383,7 @@ static ssize_t ad2s1210_clear_fault(struct device *dev, /* delay (2 * tck + 20) nano seconds */ udelay(1); gpiod_set_value(st->gpios[AD2S1210_SAMPLE], 1); - ret = ad2s1210_config_read(st, AD2S1210_REG_FAULT); + ret = regmap_read(st->regmap, AD2S1210_REG_FAULT, &value); if (ret < 0) goto error_ret; gpiod_set_value(st->gpios[AD2S1210_SAMPLE], 0); @@ -390,13 +400,14 @@ static ssize_t ad2s1210_show_reg(struct device *dev, { struct ad2s1210_state *st = iio_priv(dev_to_iio_dev(dev)); struct iio_dev_attr *iattr = to_iio_dev_attr(attr); + unsigned int value; int ret; mutex_lock(&st->lock); - ret = ad2s1210_config_read(st, iattr->address); + ret = regmap_read(st->regmap, iattr->address, &value); mutex_unlock(&st->lock); - return ret < 0 ? ret : sprintf(buf, "%d\n", ret); + return ret < 0 ? ret : sprintf(buf, "%d\n", value); } static ssize_t ad2s1210_store_reg(struct device *dev, @@ -409,14 +420,11 @@ static ssize_t ad2s1210_store_reg(struct device *dev, struct iio_dev_attr *iattr = to_iio_dev_attr(attr); ret = kstrtou8(buf, 10, &data); - if (ret) + if (ret < 0) return -EINVAL; + mutex_lock(&st->lock); - ret = ad2s1210_config_write(st, iattr->address); - if (ret < 0) - goto error_ret; - ret = ad2s1210_config_write(st, data & AD2S1210_MSB_IS_LOW); -error_ret: + ret = regmap_write(st->regmap, iattr->address, data); mutex_unlock(&st->lock); return ret < 0 ? ret : len; } @@ -583,23 +591,12 @@ static int ad2s1210_initial(struct ad2s1210_state *st) mutex_lock(&st->lock); ad2s1210_set_resolution_pin(st); - ret = ad2s1210_config_write(st, AD2S1210_REG_CONTROL); - if (ret < 0) - goto error_ret; - data = AD2S1210_DEF_CONTROL & ~(AD2S1210_SET_RESOLUTION); + data = AD2S1210_DEF_CONTROL & ~AD2S1210_SET_RES; data |= (st->resolution - 10) >> 1; - ret = ad2s1210_config_write(st, data); - if (ret < 0) - goto error_ret; - ret = ad2s1210_config_read(st, AD2S1210_REG_CONTROL); + ret = regmap_write(st->regmap, AD2S1210_REG_CONTROL, data); if (ret < 0) goto error_ret; - if (ret & AD2S1210_MSB_IS_HIGH) { - ret = -EIO; - goto error_ret; - } - ret = ad2s1210_update_frequency_control_word(st); if (ret < 0) goto error_ret; @@ -652,6 +649,52 @@ static int ad2s1210_setup_gpios(struct ad2s1210_state *st) return 0; } +static const struct regmap_range ad2s1210_regmap_readable_ranges[] = { + regmap_reg_range(AD2S1210_REG_POSITION_MSB, AD2S1210_REG_VELOCITY_LSB), + regmap_reg_range(AD2S1210_REG_LOS_THRD, AD2S1210_REG_LOT_LOW_THRD), + regmap_reg_range(AD2S1210_REG_EXCIT_FREQ, AD2S1210_REG_CONTROL), + regmap_reg_range(AD2S1210_REG_FAULT, AD2S1210_REG_FAULT), +}; + +static const struct regmap_access_table ad2s1210_regmap_rd_table = { + .yes_ranges = ad2s1210_regmap_readable_ranges, + .n_yes_ranges = ARRAY_SIZE(ad2s1210_regmap_readable_ranges), +}; + +static const struct regmap_range ad2s1210_regmap_writeable_ranges[] = { + regmap_reg_range(AD2S1210_REG_LOS_THRD, AD2S1210_REG_LOT_LOW_THRD), + regmap_reg_range(AD2S1210_REG_EXCIT_FREQ, AD2S1210_REG_CONTROL), + regmap_reg_range(AD2S1210_REG_SOFT_RESET, AD2S1210_REG_SOFT_RESET), + regmap_reg_range(AD2S1210_REG_FAULT, AD2S1210_REG_FAULT), +}; + +static const struct regmap_access_table ad2s1210_regmap_wr_table = { + .yes_ranges = ad2s1210_regmap_writeable_ranges, + .n_yes_ranges = ARRAY_SIZE(ad2s1210_regmap_writeable_ranges), +}; + +static int ad2s1210_setup_regmap(struct ad2s1210_state *st) +{ + struct device *dev = &st->sdev->dev; + const struct regmap_config config = { + .reg_bits = 8, + .val_bits = 8, + .disable_locking = true, + .reg_read = ad2s1210_regmap_reg_read, + .reg_write = ad2s1210_regmap_reg_write, + .rd_table = &ad2s1210_regmap_rd_table, + .wr_table = &ad2s1210_regmap_wr_table, + .can_sleep = true, + }; + + st->regmap = devm_regmap_init(dev, NULL, st, &config); + if (IS_ERR(st->regmap)) + return dev_err_probe(dev, PTR_ERR(st->regmap), + "failed to allocate register map\n"); + + return 0; +} + static int ad2s1210_probe(struct spi_device *spi) { struct iio_dev *indio_dev; @@ -679,6 +722,10 @@ static int ad2s1210_probe(struct spi_device *spi) if (ret < 0) return ret; + ret = ad2s1210_setup_regmap(st); + if (ret < 0) + return ret; + ret = ad2s1210_initial(st); if (ret < 0) return ret; From patchwork Thu Sep 21 14:19:38 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Lechner X-Patchwork-Id: 143035 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:172:b0:3f2:4152:657d with SMTP id h50csp5233671vqi; Thu, 21 Sep 2023 17:35:44 -0700 (PDT) X-Google-Smtp-Source: AGHT+IH8nGbrVckuSMIb/5xpPYeR9CxdbHb92/mMoEVkGwSLOaelVDpIf2RwIzvGNlCIxG9WSQ7P X-Received: by 2002:a17:902:e851:b0:1b8:76ce:9d91 with SMTP id t17-20020a170902e85100b001b876ce9d91mr7064501plg.1.1695342944649; Thu, 21 Sep 2023 17:35:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695342944; cv=none; d=google.com; s=arc-20160816; b=KCoHzLbSlGqlz1h122eJetAGITCwEcECiqTwEoukp0w/hK6Zk1pZfU5NIcHHlHeLcr CLQg9RUwpDIWegSOqNGdYdageq7z8KJjhCV332jmV9VCV9iXplt+Lv5RlRZhJMNHAUFT fBueHf7q6uFLxwRZaTKAxQRaEAKVwStbj3rzi0FG6ZbdapgsmQFU9KqLLaPTKoiep44t vpNO1zGIn3RqgPK6/xqpFVSK8I98Cydd+CXqvLXoNOb37fGPr5SH+1smr6F9qOdTALNJ FfTuTwzOltCotNPoorQgkvNwTxlhAmBHE2UBDhBzgBTfooNgaz14EnmTK572yNdFZo4j UsEQ== 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=NDg1sZsypbtmVZl9501Jvjfjp7cqgNO2wWu9eDz+bAo=; fh=rOC7q8UJisRayejF6PsoKdRfRTtXVZOwgDCXOG0B/ws=; b=QqEb6TSg1OR4f9XsHDL0uRkLiU6Fe00PqNqDWtTIBn5/BGWMxY9GCPkwnzMaNq9UeE J3PLbn8XlKki//hDXg+6SR51tVV5GOfgsd+HtUebGdUVZuR0vtc2ad8nr2vSu3vtNTGB J48qG2xEE4uptaj2SkjMjB45JCdr7ld9ItBzFfGBCd5Rm4GduOy3lIKS2uTElergF+MD vKL39huAh5kTIk1psGVES3Pt1bMPwObror1ofM7RRc0yBUAg8HJGuxpm8xFjhyRN6Xfq zyWtHDoI//pBWi8oBrngBB/nWKJveocF6P/OxwVrBul18lyPVp4STVBz/6Mz1TCYCqTb +Ajg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@baylibre-com.20230601.gappssmtp.com header.s=20230601 header.b=PgHTlmA9; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from fry.vger.email (fry.vger.email. [23.128.96.38]) by mx.google.com with ESMTPS id x1-20020a170902a38100b001bf20c80685si2488128pla.125.2023.09.21.17.35.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Sep 2023 17:35:44 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) client-ip=23.128.96.38; Authentication-Results: mx.google.com; dkim=pass header.i=@baylibre-com.20230601.gappssmtp.com header.s=20230601 header.b=PgHTlmA9; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 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 fry.vger.email (Postfix) with ESMTP id 5B5F682017B0; Thu, 21 Sep 2023 13:12:31 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at fry.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230458AbjIUUMR (ORCPT + 28 others); Thu, 21 Sep 2023 16:12:17 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48044 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230047AbjIUULs (ORCPT ); Thu, 21 Sep 2023 16:11:48 -0400 Received: from mail-lj1-x22c.google.com (mail-lj1-x22c.google.com [IPv6:2a00:1450:4864:20::22c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 60F145AA83 for ; Thu, 21 Sep 2023 10:21:24 -0700 (PDT) Received: by mail-lj1-x22c.google.com with SMTP id 38308e7fff4ca-2c007d6159aso21441401fa.3 for ; Thu, 21 Sep 2023 10:21:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1695316882; x=1695921682; 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=NDg1sZsypbtmVZl9501Jvjfjp7cqgNO2wWu9eDz+bAo=; b=PgHTlmA9ZZBPsUHkRek3QR07IKwzAo5DleHlDtwQe9dKPw9bk3uzFx6mC3JiqzAoe5 o2z9GDYDukAmISUOdBTofle92Q1pQ+2aIwlvIcgtu0E0wHXLDYrTmqmD2VUPmxkX2gZq uiBqm13rY++vFrNGu02o7SsNFLl3HFjhtYjr7sxDlYuuW+6eFH0el3wFrIhP6+2G569J EuqaNytOhFE+uIcSqbELz7GGluAHNTqJuNzRLIn0qRJSskyyltFj/xPV11uHDfWhE67S hOVm1tI/NayaubkwTnN29OaoEW2C3V0rIoD/hEs/jHnEXT2Y3h5wlFVrMK8N+5uX6oK7 cI9A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695316882; x=1695921682; 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=NDg1sZsypbtmVZl9501Jvjfjp7cqgNO2wWu9eDz+bAo=; b=jI0po5fbAWubTedurd+iLlsUKT582kQeAlHVMM9fpj6t00tsg7EPORknerV7kStJKi Z9FQXaiLJzMwAa0CTZleNmmnb0QLluv61BPHfFJTB4ykApDPTZ4IErI4fUhMkZwU/axY ov6I+QfYsgIr+ybU2FLk4S/iMsQkY6jKTnplaoBSi6n+ACFRai0mS8wTspTXV0Qr+ooK I+ZdoXl9zFTAYxghOSv9YlGrat7q7EOU7hQoYXqUmyoJ9+wGKDzip/Z+osSl+uHOchp9 e8ZiMTo6HNmXKGX8Vr3UQJJhfa+/S9NFL66nLte3dgmdLlFPjckNHGU+NshVKoE9jFyk kCBg== X-Gm-Message-State: AOJu0YxnqHjnD8GhrWEKFt1MdFjQDqoorpcqvbuuYolRifhP6JWHvDbC ASkSQaXvZyDl8QSI7NhDO5ErntATBxvBuehmCRODYCWR X-Received: by 2002:a5d:4c85:0:b0:31f:a259:733 with SMTP id z5-20020a5d4c85000000b0031fa2590733mr5275304wrs.20.1695306161138; Thu, 21 Sep 2023 07:22:41 -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.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Sep 2023 07:22:40 -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_S=C3=A1?= , Axel Haslam , Philip Molloy , David Lechner Subject: [v2 10/19] staging: iio: resolver: ad2s1210: add debugfs reg access Date: Thu, 21 Sep 2023 09:19:38 -0500 Message-Id: <20230921141947.57784-13-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 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 fry.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 (fry.vger.email [0.0.0.0]); Thu, 21 Sep 2023 13:12:32 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1777695923116299538 X-GMAIL-MSGID: 1777695923116299538 This add an implementation of debugfs_reg_access for the AD2S1210 driver. Signed-off-by: David Lechner --- drivers/staging/iio/resolver/ad2s1210.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/drivers/staging/iio/resolver/ad2s1210.c b/drivers/staging/iio/resolver/ad2s1210.c index 3c81ee61b897..b99928394e3f 100644 --- a/drivers/staging/iio/resolver/ad2s1210.c +++ b/drivers/staging/iio/resolver/ad2s1210.c @@ -606,9 +606,29 @@ static int ad2s1210_initial(struct ad2s1210_state *st) return ret; } +static int ad2s1210_debugfs_reg_access(struct iio_dev *indio_dev, + unsigned int reg, unsigned int writeval, + unsigned int *readval) +{ + struct ad2s1210_state *st = iio_priv(indio_dev); + int ret; + + mutex_lock(&st->lock); + + if (readval) + ret = regmap_read(st->regmap, reg, readval); + else + ret = regmap_write(st->regmap, reg, writeval); + + mutex_unlock(&st->lock); + + return ret; +} + static const struct iio_info ad2s1210_info = { .read_raw = ad2s1210_read_raw, .attrs = &ad2s1210_attribute_group, + .debugfs_reg_access = &ad2s1210_debugfs_reg_access, }; static int ad2s1210_setup_clocks(struct ad2s1210_state *st) From patchwork Thu Sep 21 14:19:39 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Lechner X-Patchwork-Id: 143082 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:172:b0:3f2:4152:657d with SMTP id h50csp5267852vqi; Thu, 21 Sep 2023 19:05:27 -0700 (PDT) X-Google-Smtp-Source: AGHT+IE0Dx94s3hhY09YO2LQcN1KLnMSRGNal1nlXgd80IcfzsoSpVbvEBV61iS0htze/nWxVTQy X-Received: by 2002:a25:b910:0:b0:d7b:57dc:2b9d with SMTP id x16-20020a25b910000000b00d7b57dc2b9dmr7076612ybj.14.1695348327150; Thu, 21 Sep 2023 19:05:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695348327; cv=none; d=google.com; s=arc-20160816; b=P8Xxp/Zpvfuvua1rSv/YqMFOZl0isLRfL54WPbTwE1Al5DR15/Ss6ibTxzFFe2jpAX N5ql+FlWkCTJ1xp7Gaae4eSHPuaRdLdxpnzrJSYNOmmXsSd3uUxt0bmnoewO7NZ49HwC N3GbFXXWOuTZw2AezgCoPBOcEXYkg7QXmFYiTBLeprs9es80H3TXk2Y/+7f3u6QMpmCn hZoF93t7oqkWuVkLKED3Y5XiDVEyt/2as09xrcUjeKXs4EE+48k0zON5Zpwv4OlKfh22 AC+LIl776DVRjVDm0X35sFiQdZz2yJN2wBRbVzSvcVlPflbI1lYJx25lXAYSUKv4m0xi znIQ== 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=T9WVKxDU/WCTxqQ52/M5ua8wasfSRRcZpI1eeblkSC8=; fh=rOC7q8UJisRayejF6PsoKdRfRTtXVZOwgDCXOG0B/ws=; b=hCQTlEipe24Dai9rEBdMP3zg0W+CYVZ8pZNuPu4e9dvpBKe6cYQBk0CLn5PQUBBT8F 2rxPc5wwCd233X8dnLg/reudEVo9t0yZDqeIFf0bTRe0jQb3GejqR39u4+tIZyw/dWD2 1yM//xJ6zkTJ3cJkHoAVrB/whb/H2O5DPCAgodAN8VCzyGmNRMZYOwd4pGmJLxoQ8SdW /zAAN5gaHAkiz62D3xl5rw7uNQu3x13Hw1G4uln4iZSpgM0KPsXJSzmuEIZzEb2xs6N9 qhY7e6HbLawlhvExNa10SWLI/bu5elkClfec0xFY+qAdclK0Knirq6SYjDrLHv6fRuyF Ta6w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@baylibre-com.20230601.gappssmtp.com header.s=20230601 header.b=0AA6CHTO; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:6 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from pete.vger.email (pete.vger.email. [2620:137:e000::3:6]) by mx.google.com with ESMTPS id t23-20020a656097000000b0057ab7f46c8csi2143037pgu.151.2023.09.21.19.05.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Sep 2023 19:05:27 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:6 as permitted sender) client-ip=2620:137:e000::3:6; Authentication-Results: mx.google.com; dkim=pass header.i=@baylibre-com.20230601.gappssmtp.com header.s=20230601 header.b=0AA6CHTO; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:6 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 196908315072; Thu, 21 Sep 2023 11:35:58 -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 S230010AbjIUSfe (ORCPT + 29 others); Thu, 21 Sep 2023 14:35:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34960 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229902AbjIUSfU (ORCPT ); Thu, 21 Sep 2023 14:35:20 -0400 Received: from mail-wm1-x330.google.com (mail-wm1-x330.google.com [IPv6:2a00:1450:4864:20::330]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0A63A37BF3 for ; Thu, 21 Sep 2023 10:24:50 -0700 (PDT) Received: by mail-wm1-x330.google.com with SMTP id 5b1f17b1804b1-4053c6f0d55so410915e9.0 for ; Thu, 21 Sep 2023 10:24:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1695317086; x=1695921886; 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=T9WVKxDU/WCTxqQ52/M5ua8wasfSRRcZpI1eeblkSC8=; b=0AA6CHTOlyn5DcYdQm82Wdh8HrYy77CMizme03XzsnhPkGK49AriWCJXP/I1UmiqUE 0BrIdNXR7UytEoX5+pParh+pZbvAaxIoLmqVL23DoQuoj3+RpnqMMWshRsK/mK66il0P TZ8UMhVNKF4nYOEQ6oytCAxyth8aUhnsQSDIv1DNPtsFyw4//yY/Gr5YIQtkImSgr2J2 JV4t3v0ORKWp8ta22c6KxZClme39ij2zihMqKJnzyl5+pSr6SbaQvsii202YwgyaDjOu /RJ2ENfZQH6RPd970i0VC0cEFo/DVmMZNKEg5z/2wiAdEv8X5vEvxpkwc3kTByDRNStp oc0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695317086; x=1695921886; 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=T9WVKxDU/WCTxqQ52/M5ua8wasfSRRcZpI1eeblkSC8=; b=SZZG0SZMJNBrqNCfmtJX5dsTSs/mD0UBCdvTwgifrW5w+i0sEOsRci88n+ljcKoiwu ghbVAYnQcap3blN5y1PPemBReZnDtfWx2jO4RN5Vc/ZIHCMwmeh5MTt6wddr7j04IXbz qZC+lZs/1PZ+BfeAkeLeDwp/gqWUhKcPiYQmGOy4qnayvSWAQJtyoHfgzYRfJnWm3wRe 7NCD7kuSAVc+2aUcc5meLCNOJuVyEJyVFGXEWm5wDGadAiTNyjtIHMvxNjJPTCsGA7Ne 2iKuY54QwYXx9M3xoa7L+AK8SoB6qG+xy41GZE34IUrsxBG2FeFoyDRLA5avKHR+PP0F ADKA== X-Gm-Message-State: AOJu0YxPJhZP2BD4Bj8jso/J92YaA7ZxCyfo2hYJDkDEZnn9UTgkHy28 tdhnLe6iJl/4Z5M8Oi8K9/f21ypDr14HSltC5GAUljEr X-Received: by 2002:a05:600c:1d1d:b0:405:336b:8307 with SMTP id l29-20020a05600c1d1d00b00405336b8307mr1536343wms.7.1695306162032; Thu, 21 Sep 2023 07:22:42 -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.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Sep 2023 07:22:41 -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_S=C3=A1?= , Axel Haslam , Philip Molloy , David Lechner Subject: [v2 11/19] staging: iio: resolver: ad2s1210: remove config attribute Date: Thu, 21 Sep 2023 09:19:39 -0500 Message-Id: <20230921141947.57784-14-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 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 11:35:58 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1777701567489845989 X-GMAIL-MSGID: 1777701567489845989 This removes the config register sysfs attribute. Writing to the config register directly can be dangerous and userspace should not need to have to know the register layout. This register can still be accessed though debugfs if needed. We can add new attributes to set specific flags in the config register in the future if needed (e.g. `enable_hysterisis` and `phase_lock_range`). Signed-off-by: David Lechner --- drivers/staging/iio/resolver/ad2s1210.c | 47 ------------------------- 1 file changed, 47 deletions(-) diff --git a/drivers/staging/iio/resolver/ad2s1210.c b/drivers/staging/iio/resolver/ad2s1210.c index b99928394e3f..223cc4702188 100644 --- a/drivers/staging/iio/resolver/ad2s1210.c +++ b/drivers/staging/iio/resolver/ad2s1210.c @@ -269,50 +269,6 @@ static ssize_t ad2s1210_store_fexcit(struct device *dev, return ret < 0 ? ret : len; } -static ssize_t ad2s1210_show_control(struct device *dev, - struct device_attribute *attr, - char *buf) -{ - struct ad2s1210_state *st = iio_priv(dev_to_iio_dev(dev)); - unsigned int value; - int ret; - - mutex_lock(&st->lock); - ret = regmap_read(st->regmap, AD2S1210_REG_CONTROL, &value); - mutex_unlock(&st->lock); - return ret < 0 ? ret : sprintf(buf, "0x%x\n", value); -} - -static ssize_t ad2s1210_store_control(struct device *dev, - struct device_attribute *attr, - const char *buf, size_t len) -{ - struct ad2s1210_state *st = iio_priv(dev_to_iio_dev(dev)); - unsigned char udata; - unsigned char data; - int ret; - - ret = kstrtou8(buf, 16, &udata); - if (ret) - return -EINVAL; - - mutex_lock(&st->lock); - data = udata & ~AD2S1210_ADDRESS_DATA; - ret = regmap_write(st->regmap, AD2S1210_REG_CONTROL, data); - if (ret < 0) - goto error_ret; - - st->resolution = - ad2s1210_resolution_value[data & AD2S1210_SET_RES]; - ad2s1210_set_resolution_pin(st); - ret = len; - st->hysteresis = !!(data & AD2S1210_ENABLE_HYSTERESIS); - -error_ret: - mutex_unlock(&st->lock); - return ret; -} - static ssize_t ad2s1210_show_resolution(struct device *dev, struct device_attribute *attr, char *buf) @@ -519,8 +475,6 @@ static int ad2s1210_read_raw(struct iio_dev *indio_dev, static IIO_DEVICE_ATTR(fexcit, 0644, ad2s1210_show_fexcit, ad2s1210_store_fexcit, 0); -static IIO_DEVICE_ATTR(control, 0644, - ad2s1210_show_control, ad2s1210_store_control, 0); static IIO_DEVICE_ATTR(bits, 0644, ad2s1210_show_resolution, ad2s1210_store_resolution, 0); static IIO_DEVICE_ATTR(fault, 0644, @@ -566,7 +520,6 @@ static const struct iio_chan_spec ad2s1210_channels[] = { static struct attribute *ad2s1210_attributes[] = { &iio_dev_attr_fexcit.dev_attr.attr, - &iio_dev_attr_control.dev_attr.attr, &iio_dev_attr_bits.dev_attr.attr, &iio_dev_attr_fault.dev_attr.attr, &iio_dev_attr_los_thrd.dev_attr.attr, From patchwork Thu Sep 21 14:19:40 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Lechner X-Patchwork-Id: 143012 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:172:b0:3f2:4152:657d with SMTP id h50csp5214411vqi; Thu, 21 Sep 2023 16:51:45 -0700 (PDT) X-Google-Smtp-Source: AGHT+IH2yeuRqEofpGyf70L12aCFz8PAbKYNAjjrwEUnE0DAbYeWcu4V0JI8N+1/mDvWg4iO9iBm X-Received: by 2002:a17:90a:cc17:b0:267:70a8:abff with SMTP id b23-20020a17090acc1700b0026770a8abffmr6600759pju.29.1695340304934; Thu, 21 Sep 2023 16:51:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695340304; cv=none; d=google.com; s=arc-20160816; b=aenAqZA5oiclgAXVNKvhy2lM1mtMRQ6ljH/HbBZwr0uDNT32g9jOfwisXKlwo3mPVK tqlHWD6wxqFUgu+tNxCjId+uPkVWjHfnh5jsnrnQxk4OZSjESZ7EE2s3cimD7ImsDTAx 2vNZnSUk95ZO51sMsuqlhbWMZiFQREdAcC7xUqTS6xJSA8G790qm5ilfpSBXgShSM4ex US67+QtzRgWOvNu1ZaOrfVTRiB4S7H8VzcYDK9TdQZzAt+bfglxo2rfqFqBZcVSlhz7U hnT95Q3hUmJUUuwpRwhAh92EOnZBT+FjYXWF6Q7tAH06hT0AWBTodRPy9cpSE2rYAdCq uedA== 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=xoiF1sc5Yv1hjuRdgeGOkvi9X2NDURf5lh9dRaGmJUM=; fh=rOC7q8UJisRayejF6PsoKdRfRTtXVZOwgDCXOG0B/ws=; b=EP9g4LGirn2zHh+I90GBsgLo3zj2/aBBOrngnqhXfmqOiurvH3oVGjTPskmVWzLzUc Hook3tvloq1fGMGOLSDXB1mMrqqR4GsUE2rbR5diFDp1sjb2xKI+YTkEf2D+/QwFQQIM W2BZQBEk+/RhqSHk4C6yYoJFVnQib0MwXz0NI97MLRX4LzY7pNqv3k7+NzAFbJRLjagf 9r1kWm2hMe8+2WKQGZZYSzzGXO35uQLwTURvR08LA38c0XQAkRsICFGVvz2wbovCY0Lk SE2YKRxQecFthL6a+Yxz1J9OqAdQWO5FhlzvLKeOXCKeCw+tUimt/POjeUvNanYf+oTo olFw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@baylibre-com.20230601.gappssmtp.com header.s=20230601 header.b="w/y6pZyn"; 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 u9-20020a17090a410900b00276ac140106si4777319pjf.165.2023.09.21.16.51.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Sep 2023 16:51:44 -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="w/y6pZyn"; 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 79FF981DD7C7; Thu, 21 Sep 2023 10:54:14 -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 S229720AbjIURyB (ORCPT + 29 others); Thu, 21 Sep 2023 13:54:01 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38418 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230250AbjIURxr (ORCPT ); Thu, 21 Sep 2023 13:53:47 -0400 Received: from mail-ed1-x530.google.com (mail-ed1-x530.google.com [IPv6:2a00:1450:4864:20::530]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 850AA5B8F8 for ; Thu, 21 Sep 2023 10:29:40 -0700 (PDT) Received: by mail-ed1-x530.google.com with SMTP id 4fb4d7f45d1cf-532addba879so2647664a12.0 for ; Thu, 21 Sep 2023 10:29:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1695317369; x=1695922169; 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=xoiF1sc5Yv1hjuRdgeGOkvi9X2NDURf5lh9dRaGmJUM=; b=w/y6pZynNzcpSeLIsCj9ynAqT8PQqmkBhda2jxXHRihnfZlMlFgLsgqltbjsKj/iut XdLHz5ezl1NIgJDXb6PwgPSHZSTu/SWNCpHnScDWy1zyIeAvhWClnD9PE69Z0/zbraip 19oigA55j9xTKIm9RdCGUXnAn192kJ4S5o+5Y2Dyp8v2MARR/zDPYvEsIDUYbi6SH69x iyCSdDtawzugou/cbkq84XMLOgkqcoQ+wbb9MAMQ1Lc6Dpmecwp2yfzcRhEOiq9XPDy8 moeINQb2csJUG6gBAYMzZnjPP9dgzcHWXCDe/fFcILlGPvefYHygEMf0VsE3Z6evn0o3 Wq0g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695317369; x=1695922169; 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=xoiF1sc5Yv1hjuRdgeGOkvi9X2NDURf5lh9dRaGmJUM=; b=gPTikhk6VX+EzxCKikz61aD998QGiWU08rCAEsrCNwr2GbJa0qcO7Vgec/roLEbKj2 TInxnQ9B+HEez86NRxJCgMS0q67wbM2SBJmSZDMi5ZbAJSvK5fh3ZgP4yrp6UH8GGkgL tyZTkVNjPsLIAWJL8FYx3/IGwpNScpefgEHjraI5ohcdtQO8kvWwb5pmZ+sfEmVeLU0H tR5p9wQKdczcSmZ7lP80eTOM/q77aqLVbGx9tPSVz84sB5oQohVvM9p0kh12j59YucSt /vCDp0EAzu9z/gOqHg+FhdUuaoHQEHP+zo8xIM20708ysyUM3ClIyj33G31d0FVfqILz 8YYQ== X-Gm-Message-State: AOJu0YxzLjCSG478BNfBSWl4HsyV8LpwaHAGgi0pTcceY5bp9esxYVU7 3FPJVHHHhTPOwXBEmUPeIWEawIc7jirb13FUw0DnTvX5 X-Received: by 2002:adf:d0cc:0:b0:31f:ebb5:cd51 with SMTP id z12-20020adfd0cc000000b0031febb5cd51mr4695038wrh.33.1695306162905; Thu, 21 Sep 2023 07:22:42 -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.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Sep 2023 07:22:42 -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_S=C3=A1?= , Axel Haslam , Philip Molloy , David Lechner Subject: [v2 12/19] staging: iio: resolver: ad2s1210: rework gpios Date: Thu, 21 Sep 2023 09:19:40 -0500 Message-Id: <20230921141947.57784-15-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 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]); Thu, 21 Sep 2023 10:54:14 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1777693156072380014 X-GMAIL-MSGID: 1777693156072380014 - Remove "adi," prefix from gpio names. - Sample gpio is now expected to be active low. - Convert A0 and A1 gpios to "mode-gpios" gpio array. - Convert RES0 and RES1 gpios to "resolution-gpios" gpio array. - Remove extraneous lookup tables. - Remove unused mode field from state struct. - Swap argument order of ad2s1210_set_mode() while we are touching this. Signed-off-by: David Lechner --- drivers/staging/iio/resolver/ad2s1210.c | 162 ++++++++++++------------ 1 file changed, 84 insertions(+), 78 deletions(-) diff --git a/drivers/staging/iio/resolver/ad2s1210.c b/drivers/staging/iio/resolver/ad2s1210.c index 223cc4702188..7a1069d948eb 100644 --- a/drivers/staging/iio/resolver/ad2s1210.c +++ b/drivers/staging/iio/resolver/ad2s1210.c @@ -60,39 +60,21 @@ #define AD2S1210_DEF_EXCIT 10000 enum ad2s1210_mode { - MOD_POS = 0, - MOD_VEL, - MOD_CONFIG, - MOD_RESERVED, + MOD_POS = 0b00, + MOD_VEL = 0b01, + MOD_RESERVED = 0b10, + MOD_CONFIG = 0b11, }; -enum ad2s1210_gpios { - AD2S1210_SAMPLE, - AD2S1210_A0, - AD2S1210_A1, - AD2S1210_RES0, - AD2S1210_RES1, -}; - -struct ad2s1210_gpio { - const char *name; - unsigned long flags; -}; - -static const struct ad2s1210_gpio gpios[] = { - [AD2S1210_SAMPLE] = { .name = "adi,sample", .flags = GPIOD_OUT_LOW }, - [AD2S1210_A0] = { .name = "adi,a0", .flags = GPIOD_OUT_LOW }, - [AD2S1210_A1] = { .name = "adi,a1", .flags = GPIOD_OUT_LOW }, - [AD2S1210_RES0] = { .name = "adi,res0", .flags = GPIOD_OUT_LOW }, - [AD2S1210_RES1] = { .name = "adi,res1", .flags = GPIOD_OUT_LOW }, -}; - -static const unsigned int ad2s1210_resolution_value[] = { 10, 12, 14, 16 }; - struct ad2s1210_state { struct mutex lock; struct spi_device *sdev; - struct gpio_desc *gpios[5]; + /** GPIO pin connected to SAMPLE line. */ + struct gpio_desc *sample_gpio; + /** GPIO pins connected to A0 and A1 lines. */ + struct gpio_descs *mode_gpios; + /** GPIO pins connected to RES0 and RES1 lines. */ + struct gpio_descs *resolution_gpios; /** Used to access config registers. */ struct regmap *regmap; /** The external oscillator frequency in Hz. */ @@ -100,23 +82,19 @@ struct ad2s1210_state { unsigned int fexcit; bool hysteresis; u8 resolution; - enum ad2s1210_mode mode; u8 rx[2] __aligned(IIO_DMA_MINALIGN); u8 tx[2]; }; -static const int ad2s1210_mode_vals[4][2] = { - [MOD_POS] = { 0, 0 }, - [MOD_VEL] = { 0, 1 }, - [MOD_CONFIG] = { 1, 1 }, -}; - -static inline void ad2s1210_set_mode(enum ad2s1210_mode mode, - struct ad2s1210_state *st) +static int ad2s1210_set_mode(struct ad2s1210_state *st, enum ad2s1210_mode mode) { - gpiod_set_value(st->gpios[AD2S1210_A0], ad2s1210_mode_vals[mode][0]); - gpiod_set_value(st->gpios[AD2S1210_A1], ad2s1210_mode_vals[mode][1]); - st->mode = mode; + struct gpio_descs *gpios = st->mode_gpios; + DECLARE_BITMAP(bitmap, 2); + + bitmap[0] = mode; + + return gpiod_set_array_value(gpios->ndescs, gpios->desc, gpios->info, + bitmap); } /* @@ -141,6 +119,7 @@ static int ad2s1210_regmap_reg_write(void *context, unsigned int reg, .tx_buf = &st->tx[1], }, }; + int ret; /* values can only be 7 bits, the MSB indicates an address */ if (val & ~0x7F) @@ -149,7 +128,9 @@ static int ad2s1210_regmap_reg_write(void *context, unsigned int reg, st->tx[0] = reg; st->tx[1] = val; - ad2s1210_set_mode(MOD_CONFIG, st); + ret = ad2s1210_set_mode(st, MOD_CONFIG); + if (ret < 0) + return ret; return spi_sync_transfer(st->sdev, xfers, ARRAY_SIZE(xfers)); } @@ -178,7 +159,10 @@ static int ad2s1210_regmap_reg_read(void *context, unsigned int reg, }; int ret; - ad2s1210_set_mode(MOD_CONFIG, st); + ret = ad2s1210_set_mode(st, MOD_CONFIG); + if (ret < 0) + return ret; + st->tx[0] = reg; /* Must be valid register address here otherwise this could write data. * It doesn't matter which one. @@ -215,16 +199,16 @@ int ad2s1210_update_frequency_control_word(struct ad2s1210_state *st) return regmap_write(st->regmap, AD2S1210_REG_EXCIT_FREQ, fcw); } -static const int ad2s1210_res_pins[4][2] = { - { 0, 0 }, {0, 1}, {1, 0}, {1, 1} -}; - -static inline void ad2s1210_set_resolution_pin(struct ad2s1210_state *st) +static int ad2s1210_set_resolution_gpios(struct ad2s1210_state *st, + u8 resolution) { - gpiod_set_value(st->gpios[AD2S1210_RES0], - ad2s1210_res_pins[(st->resolution - 10) / 2][0]); - gpiod_set_value(st->gpios[AD2S1210_RES1], - ad2s1210_res_pins[(st->resolution - 10) / 2][1]); + struct gpio_descs *gpios = st->resolution_gpios; + DECLARE_BITMAP(bitmap, 2); + + bitmap[0] = (resolution - 10) >> 1; + + return gpiod_set_array_value(gpios->ndescs, gpios->desc, gpios->info, + bitmap); } static inline int ad2s1210_soft_reset(struct ad2s1210_state *st) @@ -301,10 +285,13 @@ static ssize_t ad2s1210_store_resolution(struct device *dev, if (ret < 0) goto error_ret; - st->resolution = - ad2s1210_resolution_value[data & AD2S1210_SET_RES]; - ad2s1210_set_resolution_pin(st); + ret = ad2s1210_set_resolution_gpios(st, udata); + if (ret < 0) + goto error_ret; + + st->resolution = udata; ret = len; + error_ret: mutex_unlock(&st->lock); return ret; @@ -335,15 +322,19 @@ static ssize_t ad2s1210_clear_fault(struct device *dev, int ret; mutex_lock(&st->lock); - gpiod_set_value(st->gpios[AD2S1210_SAMPLE], 0); + + gpiod_set_value(st->sample_gpio, 1); /* delay (2 * tck + 20) nano seconds */ udelay(1); - gpiod_set_value(st->gpios[AD2S1210_SAMPLE], 1); + gpiod_set_value(st->sample_gpio, 0); + ret = regmap_read(st->regmap, AD2S1210_REG_FAULT, &value); if (ret < 0) goto error_ret; - gpiod_set_value(st->gpios[AD2S1210_SAMPLE], 0); - gpiod_set_value(st->gpios[AD2S1210_SAMPLE], 1); + + gpiod_set_value(st->sample_gpio, 1); + gpiod_set_value(st->sample_gpio, 0); + error_ret: mutex_unlock(&st->lock); @@ -404,16 +395,16 @@ static int ad2s1210_read_raw(struct iio_dev *indio_dev, switch (mask) { case IIO_CHAN_INFO_RAW: mutex_lock(&st->lock); - gpiod_set_value(st->gpios[AD2S1210_SAMPLE], 0); + gpiod_set_value(st->sample_gpio, 1); /* delay (6 * tck + 20) nano seconds */ udelay(1); switch (chan->type) { case IIO_ANGL: - ad2s1210_set_mode(MOD_POS, st); + ret = ad2s1210_set_mode(st, MOD_POS); break; case IIO_ANGL_VEL: - ad2s1210_set_mode(MOD_VEL, st); + ret = ad2s1210_set_mode(st, MOD_VEL); break; default: ret = -EINVAL; @@ -440,7 +431,7 @@ static int ad2s1210_read_raw(struct iio_dev *indio_dev, } error_info_raw: - gpiod_set_value(st->gpios[AD2S1210_SAMPLE], 1); + gpiod_set_value(st->sample_gpio, 0); /* delay (2 * tck + 20) nano seconds */ udelay(1); mutex_unlock(&st->lock); @@ -542,7 +533,9 @@ static int ad2s1210_initial(struct ad2s1210_state *st) int ret; mutex_lock(&st->lock); - ad2s1210_set_resolution_pin(st); + ret = ad2s1210_set_resolution_gpios(st, st->resolution); + if (ret < 0) + return ret; data = AD2S1210_DEF_CONTROL & ~AD2S1210_SET_RES; data |= (st->resolution - 10) >> 1; @@ -604,20 +597,34 @@ static int ad2s1210_setup_clocks(struct ad2s1210_state *st) static int ad2s1210_setup_gpios(struct ad2s1210_state *st) { - struct spi_device *spi = st->sdev; - int i, ret; - - for (i = 0; i < ARRAY_SIZE(gpios); i++) { - st->gpios[i] = devm_gpiod_get(&spi->dev, gpios[i].name, - gpios[i].flags); - if (IS_ERR(st->gpios[i])) { - ret = PTR_ERR(st->gpios[i]); - dev_err(&spi->dev, - "ad2s1210: failed to request %s GPIO: %d\n", - gpios[i].name, ret); - return ret; - } - } + struct device *dev = &st->sdev->dev; + + /* should not be sampling on startup */ + st->sample_gpio = devm_gpiod_get(dev, "sample", GPIOD_OUT_LOW); + if (IS_ERR(st->sample_gpio)) + return dev_err_probe(dev, PTR_ERR(st->sample_gpio), + "failed to request sample GPIO\n"); + + /* both pins high means that we start in config mode */ + st->mode_gpios = devm_gpiod_get_array(dev, "mode", GPIOD_OUT_HIGH); + if (IS_ERR(st->mode_gpios)) + return dev_err_probe(dev, PTR_ERR(st->mode_gpios), + "failed to request mode GPIOs\n"); + + if (st->mode_gpios->ndescs != 2) + return dev_err_probe(dev, -EINVAL, + "requires exactly 2 mode-gpios\n"); + + /* both pins high means that we start with 16-bit resolution */ + st->resolution_gpios = devm_gpiod_get_array(dev, "resolution", + GPIOD_OUT_HIGH); + if (IS_ERR(st->resolution_gpios)) + return dev_err_probe(dev, PTR_ERR(st->resolution_gpios), + "failed to request resolution GPIOs\n"); + + if (st->resolution_gpios->ndescs != 2) + return dev_err_probe(dev, -EINVAL, + "requires exactly 2 resolution-gpios\n"); return 0; } @@ -683,7 +690,6 @@ static int ad2s1210_probe(struct spi_device *spi) mutex_init(&st->lock); st->sdev = spi; st->hysteresis = true; - st->mode = MOD_CONFIG; st->resolution = 12; st->fexcit = AD2S1210_DEF_EXCIT; From patchwork Thu Sep 21 14:19:41 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Lechner X-Patchwork-Id: 143052 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:172:b0:3f2:4152:657d with SMTP id h50csp5246789vqi; Thu, 21 Sep 2023 18:08:24 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGE5dmghWAPpe6sxxYaeBmv9thOlzAfbIhto6+4Z6bK4LFvsVIqsd2MImRKh9sDHLqb2pWb X-Received: by 2002:a17:902:6941:b0:1c5:70d3:f193 with SMTP id k1-20020a170902694100b001c570d3f193mr6473638plt.10.1695344904198; Thu, 21 Sep 2023 18:08:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695344904; cv=none; d=google.com; s=arc-20160816; b=M363MFWnxjsiOOG7fvJCH98/H0GqfWMNt1iLSXhlKWYl+VKN+ZNVYgGNMt9b40pyHs atsepj9P0rvYESG8cTW9ubhk1mMfugx8iPezQxTd2LaVvgkXOxzIb2/Jfz7wJ/0AQRn3 Es2dnlhVpz2bisrajOZccyYfsDisefdDOfvC2EPgqq6DAF0Jv3F59dY+5GwLGwXV5l6Y ixXfRCYDoUcc4MuiOwHNmj+kduLBDzFSkmbACCcH2UpHFzR5YXEC05J22WfDtTAKuIl9 75BcY2vyx5DFn4eHVrk8Q2iQSlNGHIFZ8mKU6udAbsz2xUhjLeijLxc+6nTZkNp7Fzz8 Uupw== 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=AZybWEnlutF3BnUcq+xH7uoi35RICanW/277eMaA8Sc=; fh=rOC7q8UJisRayejF6PsoKdRfRTtXVZOwgDCXOG0B/ws=; b=aQkCTokWvr97T4uwsu8Tt/vT0tRk6Ahdv60KwjGmD6ogBTljZ43WkHf3oyNjT9aKtI e5SiZLu3lWOLkwhKsZQYiJr84b4RgABpEBSo2RK9KZguSriXIJTHwgUxWhIaGnNa88Qk 8XXuUH7ZyQdrfaa+MHw6TFqR5oBvNtNMp6Dwpg2Vv8EwLWFRDkWmOerRWnLj5BFhosVY RVH87FbCbUjVOIOf1cjv8XQdG2OypJtsHdGizsfXdpTUxnWmHvMazeXR5OmJxghIZJN6 TvJYDX/NyfXdQElfmoBRPI1yHlQUw+i1PsHSRDJ21ReW9qlEgVbqKoc2JYWsrdBedCUU DOtg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@baylibre-com.20230601.gappssmtp.com header.s=20230601 header.b=QX7oj5np; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from agentk.vger.email (agentk.vger.email. [23.128.96.32]) by mx.google.com with ESMTPS id kz5-20020a170902f9c500b001bde0b58abesi2436142plb.161.2023.09.21.18.08.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Sep 2023 18:08:24 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) client-ip=23.128.96.32; Authentication-Results: mx.google.com; dkim=pass header.i=@baylibre-com.20230601.gappssmtp.com header.s=20230601 header.b=QX7oj5np; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 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 agentk.vger.email (Postfix) with ESMTP id 28EBB80423AB; Thu, 21 Sep 2023 14:46:54 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at agentk.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230254AbjIUVqe (ORCPT + 29 others); Thu, 21 Sep 2023 17:46:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46218 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231576AbjIUVqS (ORCPT ); Thu, 21 Sep 2023 17:46:18 -0400 Received: from mail-wm1-x336.google.com (mail-wm1-x336.google.com [IPv6:2a00:1450:4864:20::336]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A728451024 for ; Thu, 21 Sep 2023 10:15:31 -0700 (PDT) Received: by mail-wm1-x336.google.com with SMTP id 5b1f17b1804b1-40537481094so7267745e9.0 for ; Thu, 21 Sep 2023 10:15:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1695316530; x=1695921330; 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=AZybWEnlutF3BnUcq+xH7uoi35RICanW/277eMaA8Sc=; b=QX7oj5np2ycSjEfo16DJk51/6otI5U4wdTk4MHhhoZqEQq2sMNOVJURgTOW08Lsntk p+5j6M+bsd9jDRVI1qImshIFkGzeYKzMnKImUUSvGZSCAjwsq/NyO9E8dl/geDjzbXuc p5KIAuQ+0oHnvPZgKxkoEmE88wCFB0UjpnE5moyhtJyWckY6oKGO3zOXfT/tf+668uFf hyDGFgXL38Bgc75KJsHub0gvKOIgBuCQ7WmCFlbosnp+qWsg/EAMG0MrtskE9YJ2Ovvw EVsCjYIKnDqWDvi64gG+OqlnVR/fCtZs6922yIbyzSj4p7oLGRSjDqPHhom42j4xiSAz pd2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695316530; x=1695921330; 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=AZybWEnlutF3BnUcq+xH7uoi35RICanW/277eMaA8Sc=; b=aV0zjsK0mQxc97cnskrh6OQWizP7nHbWml+2wzu0zdFjwyT9KCDp2Fn1+Sg6fIXeVs QrdgPZHyz3+CMSAbAUkh479962QS5nxPgaQQo99d+QdJifrjJ6Ii+ExBhl6pP/M36h+t NccoGWo47bvxPRg5wNkc3yS9XfsGz1n0QqA7IsdY/l7sQ535b6LfjvAqszJ5kghaUBIc oE81/4VX9fqvmhes2RbW5tMNPVhvMpyHvOa4QOBv7zzaZoZSBWzC9RhD6bnyBkaLELXe ZzmjLviKuULMR0n4ybBMA5eC9UuM20M+W1+jRmbgpuPhK+M7ZnZQM5AMkpAcy/EvQoH4 Gw/w== X-Gm-Message-State: AOJu0YxEtrso9ynsfHtXviTruqJqiQ6+ZeeDdPeeGX5oFv4TAXt/s1Jx 9aXOmpTXCvRIFpChiZNaTKQqY1bsZzgEjfqqUPlN2JAn X-Received: by 2002:adf:f68c:0:b0:320:b1b:86a9 with SMTP id v12-20020adff68c000000b003200b1b86a9mr5129294wrp.24.1695306163828; Thu, 21 Sep 2023 07:22:43 -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.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Sep 2023 07:22:43 -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_S=C3=A1?= , Axel Haslam , Philip Molloy , David Lechner Subject: [v2 13/19] staging: iio: resolver: ad2s1210: implement hysteresis as channel attr Date: Thu, 21 Sep 2023 09:19:41 -0500 Message-Id: <20230921141947.57784-16-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 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 agentk.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 (agentk.vger.email [0.0.0.0]); Thu, 21 Sep 2023 14:46:54 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1777697978121417134 X-GMAIL-MSGID: 1777697978121417134 The AD2S1210 resolver has a hysteresis feature that can be used to prevent flicker in the LSB of the position register. This can be either enabled or disabled. Disabling hysteresis is useful for increasing precision by oversampling. Signed-off-by: David Lechner --- drivers/staging/iio/resolver/ad2s1210.c | 88 ++++++++++++++++++++++++- 1 file changed, 85 insertions(+), 3 deletions(-) diff --git a/drivers/staging/iio/resolver/ad2s1210.c b/drivers/staging/iio/resolver/ad2s1210.c index 7a1069d948eb..fe413759deb9 100644 --- a/drivers/staging/iio/resolver/ad2s1210.c +++ b/drivers/staging/iio/resolver/ad2s1210.c @@ -80,7 +80,6 @@ struct ad2s1210_state { /** The external oscillator frequency in Hz. */ unsigned long fclkin; unsigned int fexcit; - bool hysteresis; u8 resolution; u8 rx[2] __aligned(IIO_DMA_MINALIGN); u8 tx[2]; @@ -456,6 +455,27 @@ static int ad2s1210_read_raw(struct iio_dev *indio_dev, } break; + case IIO_CHAN_INFO_HYSTERESIS: + switch (chan->type) { + case IIO_ANGL: + mutex_lock(&st->lock); + ret = regmap_test_bits(st->regmap, AD2S1210_REG_CONTROL, + AD2S1210_ENABLE_HYSTERESIS); + if (ret < 0) + goto error_info_hysteresis; + + *val = !!ret; + ret = IIO_VAL_INT; + +error_info_hysteresis: + mutex_unlock(&st->lock); + break; + default: + ret = -EINVAL; + break; + } + break; + default: ret = -EINVAL; break; @@ -464,6 +484,64 @@ static int ad2s1210_read_raw(struct iio_dev *indio_dev, return ret; } +static int ad2s1210_read_avail(struct iio_dev *indio_dev, + struct iio_chan_spec const *chan, + const int **vals, int *type, + int *length, long mask) +{ + static const int available[] = { 0, 1 }; + int ret = -EINVAL; + + switch (mask) { + case IIO_CHAN_INFO_HYSTERESIS: + switch (chan->type) { + case IIO_ANGL: + *vals = available; + *type = IIO_VAL_INT; + *length = ARRAY_SIZE(available); + ret = IIO_AVAIL_LIST; + break; + default: + break; + } + default: + break; + } + + return ret; +} + +static int ad2s1210_write_raw(struct iio_dev *indio_dev, + struct iio_chan_spec const *chan, + int val, int val2, long mask) +{ + struct ad2s1210_state *st = iio_priv(indio_dev); + int ret = -EINVAL; + + switch (mask) { + case IIO_CHAN_INFO_HYSTERESIS: + switch (chan->type) { + case IIO_ANGL: + mutex_lock(&st->lock); + ret = regmap_update_bits(st->regmap, AD2S1210_REG_CONTROL, + AD2S1210_ENABLE_HYSTERESIS, + val ? AD2S1210_ENABLE_HYSTERESIS + : 0); + mutex_unlock(&st->lock); + break; + + default: + break; + } + break; + + default: + break; + } + + return ret; +} + static IIO_DEVICE_ATTR(fexcit, 0644, ad2s1210_show_fexcit, ad2s1210_store_fexcit, 0); static IIO_DEVICE_ATTR(bits, 0644, @@ -499,7 +577,10 @@ static const struct iio_chan_spec ad2s1210_channels[] = { .indexed = 1, .channel = 0, .info_mask_separate = BIT(IIO_CHAN_INFO_RAW) | - BIT(IIO_CHAN_INFO_SCALE), + BIT(IIO_CHAN_INFO_SCALE) | + BIT(IIO_CHAN_INFO_HYSTERESIS), + .info_mask_separate_available = + BIT(IIO_CHAN_INFO_HYSTERESIS), }, { .type = IIO_ANGL_VEL, .indexed = 1, @@ -573,6 +654,8 @@ static int ad2s1210_debugfs_reg_access(struct iio_dev *indio_dev, static const struct iio_info ad2s1210_info = { .read_raw = ad2s1210_read_raw, + .read_avail = ad2s1210_read_avail, + .write_raw = ad2s1210_write_raw, .attrs = &ad2s1210_attribute_group, .debugfs_reg_access = &ad2s1210_debugfs_reg_access, }; @@ -689,7 +772,6 @@ static int ad2s1210_probe(struct spi_device *spi) mutex_init(&st->lock); st->sdev = spi; - st->hysteresis = true; st->resolution = 12; st->fexcit = AD2S1210_DEF_EXCIT; From patchwork Thu Sep 21 14:19:42 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Lechner X-Patchwork-Id: 143002 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:172:b0:3f2:4152:657d with SMTP id h50csp5208836vqi; Thu, 21 Sep 2023 16:35:52 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFsK9wSZmJCAK44S9f2mCpC4OC2Y2uWK0J2DTZdlME+QZgU076uAT5TAJr39uF8ca4p4P04 X-Received: by 2002:a05:6a00:13a8:b0:690:28d0:b7cf with SMTP id t40-20020a056a0013a800b0069028d0b7cfmr7688234pfg.16.1695339352063; Thu, 21 Sep 2023 16:35:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695339352; cv=none; d=google.com; s=arc-20160816; b=oRTh6y3H8qeLF57DsTUZf8NyQq4NO7Ra/TiqPl1sg9AM8p78tnzkXLyySwo3ZNFpfQ b/pLREkGKycUk9yBAl04+v6FHpscRXkC+6cc8c0GnNuZLPGuUzLz46kPaMKblGv/Qic9 BDW0nwyeM2561eZKr93YFnRmArrvEohGIqVayQttnFmS4R9bA+jmF/LPdinBcV2baImb TX5CM9i/tFXmkgUO2XGVnjpHLysEVO6fwKQlrtbfjaHYuZMhlNWiiwiVgVOeynHioafr kjZrgWULjllkx5XTDpI+6at4fMBifPuH5pEelqHstlwGcMOld0SHtFMf78haenD11BLs zdgQ== 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 2620:137:e000::3:8 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from fry.vger.email (fry.vger.email. [2620:137:e000::3:8]) by mx.google.com with ESMTPS id u9-20020a056a00158900b0069100d1fc37si2681742pfk.49.2023.09.21.16.35.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Sep 2023 16:35:52 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) client-ip=2620:137:e000::3:8; 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 2620:137:e000::3:8 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 fry.vger.email (Postfix) with ESMTP id 6FD66837D48F; Thu, 21 Sep 2023 12:29:36 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at fry.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230156AbjIUT31 (ORCPT + 28 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_S=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 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 fry.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 (fry.vger.email [0.0.0.0]); Thu, 21 Sep 2023 12:29:36 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1777692156149533934 X-GMAIL-MSGID: 1777692156149533934 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) From patchwork Thu Sep 21 14:19:43 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Lechner X-Patchwork-Id: 143128 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:172:b0:3f2:4152:657d with SMTP id h50csp5288307vqi; Thu, 21 Sep 2023 20:06:54 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFQF/wGu1A2rpsPSspVb8+XHpj3Ef31SdCuBFZkOFBfg5zv+mdkVqNTjpZhZ3NP4GOVa72e X-Received: by 2002:a05:6870:638e:b0:1b0:25b4:4b77 with SMTP id t14-20020a056870638e00b001b025b44b77mr8521679oap.14.1695352013773; Thu, 21 Sep 2023 20:06:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695352013; cv=none; d=google.com; s=arc-20160816; b=ZDk/BmXppALmkMRA6poa7djdGK0yyCsOvAtw4n6u8ZMtxteBUlUDqUONh4IZL6zcTb 37GKW3/j09TSZYmRpXNWhpruPXgKIDXY+bn28sHs5LZTyGOoMYKycgzENP135tP4CEzj VDYBLQfUPu9jv4TzxVUntB6kSS34EMK1/AwhPiAEuG5swocy9Xeg461lHXijJzOdKVaS vUyJZlLwGYeOvAuc+jHIiww/fEAeHdLHpPCnC6BZgQqjDPxMgAN0t7FNuHLX1+tmzlTL OLwIIJhURdn9AtiuRgcGAZT1/JFWahU+L/rLludbQWbCpF6dzIZVXWu6h/tYMCyITh5B N6Jw== 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=FFHoFBATjyYAR3S3Kihiw7DM+oB505Wu13vuO5lq7BQ=; fh=rOC7q8UJisRayejF6PsoKdRfRTtXVZOwgDCXOG0B/ws=; b=HUw1BrtcgXtUff1W3LWBeeaOXOVJ7oz2DxsNl+g+mPZ2//uUjFM7OnLlGErRn3+R2y J6IaZYmpOvm9pNNPOYN40ojwWC/rjADv9CoFMXu672vK6kJb+1Uknc7iSbkOabQXHFgb iBIhNoP37x3nsPeOR7D69DoXFxOou/XORSxUC6K8CzclMnwkRvC71DYe+/e1Ok9lqxwT MgAOKPgCuKus27UutQwT0MMlWfBEloIMFtOmqMsud7y+y3REc+Wb9B3eSj85+254WxfC rLteiMCr8HN9cOWTp8EMLJnoO7HkVTgTF+KntgAv90rtxvR3zWp653wtJo4Jbc/vy5Hy bVFg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@baylibre-com.20230601.gappssmtp.com header.s=20230601 header.b=yvWMD0jt; 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 e190-20020a6369c7000000b0056c55eb251csi2666174pgc.123.2023.09.21.20.06.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Sep 2023 20:06:53 -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=yvWMD0jt; 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 91D87808E66F; Thu, 21 Sep 2023 13:16:27 -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 S230317AbjIUUQ0 (ORCPT + 29 others); Thu, 21 Sep 2023 16:16:26 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39766 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230510AbjIUUP5 (ORCPT ); Thu, 21 Sep 2023 16:15:57 -0400 Received: from mail-wr1-x436.google.com (mail-wr1-x436.google.com [IPv6:2a00:1450:4864:20::436]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6B3E8561E1 for ; Thu, 21 Sep 2023 10:26:58 -0700 (PDT) Received: by mail-wr1-x436.google.com with SMTP id ffacd0b85a97d-307d58b3efbso1184971f8f.0 for ; Thu, 21 Sep 2023 10:26:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1695317217; x=1695922017; 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=FFHoFBATjyYAR3S3Kihiw7DM+oB505Wu13vuO5lq7BQ=; b=yvWMD0jtUUOnZDRS2AIp4PN9mEgHewIy4n4gE9fnEdhiTvaxpiE7n+yHXp1SpZhyE4 UgCrRCz/bh3jepA503qzJMi00Q3iRAjBCUK36bDstPlUykNn+DN4jUC20rYhzzyyxjEW 7hFePKz9LMHvBf0usRsQ9nZUeXt+4KqTg8+7eDm42KqBuuY9LOYad4OH4B7OvHOBbABB cmQtluJQb8W1YjjUbVU4Mw3AkILYHmEQtDpZx0xvrHkzsJYMyG1nnLpX3/kKpikXq9Mx 5tuWUBoqEjklRULX39xcrEADQKu2A0A6E2OtHE4KIpy8jXBjIqTB9Xcs5vU3sVFOug7n RiFg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695317217; x=1695922017; 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=FFHoFBATjyYAR3S3Kihiw7DM+oB505Wu13vuO5lq7BQ=; b=Mrns3e+v2XyDE0u76fnxoDtSvDnoUyx1rH/I556whLk/rSZrf03lHKAQxYKlThCRZa Ft/r3nBX4A4npdXAnMxt8yUSQL2Npcsvg8Gr9F6t1SjO3Y160fUYowo5oMVOAPfCT3ze nl18zlx/27HClXbgImNe7U1sLzFiQjHIv2aSToAG3l6e7slUvixm9yhoAZQrP5B07iqW F0oNYEaPBopG/R4joRO3imFXNALuKHcDYMW1dECsI37UK0HlhwwxSVFCOIW4oyLHYwHk DrSJqOiVsZ6HVDXZYR/dUgmZLyjJR+fKsR5lSIwMHwbpGrV2yIkAoMYluZEUSkNaA56s f+og== X-Gm-Message-State: AOJu0YzsO1vuSfb/rgW/SZ8LxeBhLTVJS/EO2y47X6sRSperb4rHsJ2Q lKgYkeiyt2u/XPrNwk+Zq3BDFd3LLG8T898RBkDEAlGf X-Received: by 2002:adf:fb47:0:b0:316:fc63:dfed with SMTP id c7-20020adffb47000000b00316fc63dfedmr3915975wrs.39.1695306165716; Thu, 21 Sep 2023 07:22:45 -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:45 -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_S=C3=A1?= , Axel Haslam , Philip Molloy , David Lechner Subject: [v2 15/19] staging: iio: resolver: ad2s1210: read excitation frequency from control register Date: Thu, 21 Sep 2023 09:19:43 -0500 Message-Id: <20230921141947.57784-18-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 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]); Thu, 21 Sep 2023 13:16:27 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1777705433180054388 X-GMAIL-MSGID: 1777705433180054388 This modifies the ad2s1210_show_fexcit() function to read the excitation frequency from the control register. This way we don't have to keep track of the value and don't risk returning a stale value. Signed-off-by: David Lechner --- drivers/staging/iio/resolver/ad2s1210.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/drivers/staging/iio/resolver/ad2s1210.c b/drivers/staging/iio/resolver/ad2s1210.c index f1ffee34ebbc..27294eff99ef 100644 --- a/drivers/staging/iio/resolver/ad2s1210.c +++ b/drivers/staging/iio/resolver/ad2s1210.c @@ -78,7 +78,6 @@ struct ad2s1210_state { struct regmap *regmap; /** The external oscillator frequency in Hz. */ unsigned long fclkin; - unsigned int fexcit; u8 resolution; u8 rx[2] __aligned(IIO_DMA_MINALIGN); u8 tx[2]; @@ -202,8 +201,6 @@ static int ad2s1210_set_excitation_frequency(struct ad2s1210_state *st, 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); } @@ -225,8 +222,22 @@ static ssize_t ad2s1210_show_fexcit(struct device *dev, char *buf) { struct ad2s1210_state *st = iio_priv(dev_to_iio_dev(dev)); + unsigned int value; + u16 fexcit; + int ret; - return sprintf(buf, "%u\n", st->fexcit); + mutex_lock(&st->lock); + ret = regmap_read(st->regmap, AD2S1210_REG_EXCIT_FREQ, &value); + if (ret < 0) + goto error_ret; + + fexcit = value * st->fclkin / (1 << 15); + + ret = sprintf(buf, "%u\n", fexcit); + +error_ret: + mutex_unlock(&st->lock); + return ret; } static ssize_t ad2s1210_store_fexcit(struct device *dev, From patchwork Thu Sep 21 14:19:44 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Lechner X-Patchwork-Id: 143084 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:172:b0:3f2:4152:657d with SMTP id h50csp5268827vqi; Thu, 21 Sep 2023 19:07:50 -0700 (PDT) X-Google-Smtp-Source: AGHT+IExQy++0dVnV/R6ZHGDHKdD/mRxpl0PuZmhmEXV/1AI1fNYYx3ChfkgxKeKpUSDoV4YBnyg X-Received: by 2002:a05:6870:bacd:b0:1dc:930c:6f11 with SMTP id js13-20020a056870bacd00b001dc930c6f11mr2942967oab.33.1695348470707; Thu, 21 Sep 2023 19:07:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695348470; cv=none; d=google.com; s=arc-20160816; b=Hy73pCa/uaO2VM6MAe1AgGLLGTX/Nmn21C2SC4tHIAsOCKMJNo77mNze2YiDv1aFhi OMyfPVvLM+0vlckHYz5Oi8H/uxVCwSsdiOm/XVTan+C7173xSmc95iEk3XdOz0xM2kaG EzR0VYVI2BPjCusjbj1hfwKT0/AMNfnP8/j/pjH0oiHZNAA1g3oyvomzZMM0VVbDAtec IuZIVpa08PcFZMDG3RWHCx0FR8kjUozlaiXjulUt7yNpLubzMu0aKNq6YFptiiYmTBxj sluot/NtlaexBLVgRW6QPp90L43SsJ6ZKZNw2FIkbbuDCMu6NNKrI2pB07bpZx2PyJg+ f39w== 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=nYFN9YS9lGoY3Drq+6yfHeUu5PUEzCkva/9j6XN0ZE4=; fh=rOC7q8UJisRayejF6PsoKdRfRTtXVZOwgDCXOG0B/ws=; b=c5nIh01sUuAWx5P0Yoqh2MLzXX/fM0bgYdNyweBFsstGUbqFixXY6RD1mso5sywBD1 Ud9KuV8wlgRpAB75VsXFoErq2Zqmw3G6ncHDKAU0kwToP8S+GCWRbcr+oIaopGpe8YyD QTeYHH/b/uXSvIyrvVrYJCQNvNr2gwu4OipjiIoYhEVgJuJLDBPuEAd0F8h9OtUFG4aR RkOyNGfdtxTagNCO5CIYkYpGjiMrDCoko+35IGzo8EsUOPBEyCpgg0B9AI1w+9m8cYeh /ePgROkLmaieopEBJsNmIb63qGVNkhqFflJOfvC+KB6XmsDfpLJ2DUAJj9YNMUvmJV4L 1d+Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@baylibre-com.20230601.gappssmtp.com header.s=20230601 header.b=2efiOwzU; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from morse.vger.email (morse.vger.email. [2620:137:e000::3:1]) by mx.google.com with ESMTPS id q27-20020a63751b000000b005775c7e504csi2823137pgc.145.2023.09.21.19.07.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Sep 2023 19:07:50 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 as permitted sender) client-ip=2620:137:e000::3:1; Authentication-Results: mx.google.com; dkim=pass header.i=@baylibre-com.20230601.gappssmtp.com header.s=20230601 header.b=2efiOwzU; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 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 765EF8104F5B; Thu, 21 Sep 2023 10:24:25 -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 S229630AbjIURYO (ORCPT + 29 others); Thu, 21 Sep 2023 13:24:14 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60744 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229580AbjIURXw (ORCPT ); Thu, 21 Sep 2023 13:23:52 -0400 Received: from mail-wm1-x336.google.com (mail-wm1-x336.google.com [IPv6:2a00:1450:4864:20::336]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B5C3642C3A for ; Thu, 21 Sep 2023 10:13:33 -0700 (PDT) Received: by mail-wm1-x336.google.com with SMTP id 5b1f17b1804b1-400a087b0bfso12646275e9.2 for ; Thu, 21 Sep 2023 10:13:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1695316409; x=1695921209; 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=nYFN9YS9lGoY3Drq+6yfHeUu5PUEzCkva/9j6XN0ZE4=; b=2efiOwzUDnc3Jd61Owi4Ga0h1S17k2rrXV2JoGVfTkXAtgxfVhKhYWLM/OXdtsqXCU luiAXiWMjKr7uv5z0QduzOvqBawRLsuX8h7BjV0D+QLYbUFwsPwcZlEDmKPcQyluzhff JsTV6TxWIvdlf7HAzQAIhUvLsIKBJoqA7AnXMtflGBMooCfkcPYxZx+T0+f49wS51JIU uJTLBAxaVUWmqHAXcgkqL4+C7k+rjy7Z/1FuRlPaYbOLPuVqyLbZ8aZwGgzrUZdEjodg TpQ6VnbE4D2t4SpnE6JzNBlS5iHoH5RHt3rS7TsIISA4kWZcPecGIy3kb9F3GfIvJ1S0 jjKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695316409; x=1695921209; 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=nYFN9YS9lGoY3Drq+6yfHeUu5PUEzCkva/9j6XN0ZE4=; b=MsaR840LW0G/ZKX5crRRzroQ8IAMbQBG2DUI7UFqFa8poeq+zZO8/P+RcYZGw9NL5/ FDzEQSJdU0xgA50U/1TouKQspWQoeTu+kXu2OMCb21wqcF4Ze1/nET6mpV+bV9x6ZQrF MmiQfFXa/SAj0mSsrwX4i7PAxOtirYyQQTFg/GHlLpAoDnmBpc8P4+ovyclK451Fa/4O c4uMbuyoIW813WxlzutUoAxGczzkygo8fflowsOpvW8rwnuqYfES71bsKM1nsIH1is2h qsLpvcxcjvkewJ6ISoC9Do6/roeCV0rscfZVRJ94HSQCuy3rJpnXRnom+87qh/QYb7q2 1nTw== X-Gm-Message-State: AOJu0YxysCAaztIyLe1xdIjL7P1ANBNIIZugS/rT0IMQPfkxGsUmJy0c UD7yA4Dds2MlBFoLHxwEvBKm1tjcWbSG1ivQxONOU9jI X-Received: by 2002:a1c:ed08:0:b0:405:1bbd:aa9c with SMTP id l8-20020a1ced08000000b004051bbdaa9cmr5515593wmh.34.1695306166581; Thu, 21 Sep 2023 07:22:46 -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.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Sep 2023 07:22:46 -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_S=C3=A1?= , Axel Haslam , Philip Molloy , David Lechner Subject: [v2 16/19] staging: iio: resolver: ad2s1210: rename fexcit attribute Date: Thu, 21 Sep 2023 09:19:44 -0500 Message-Id: <20230921141947.57784-19-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 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 10:24:25 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1777701717986048681 X-GMAIL-MSGID: 1777701717986048681 This renames the fexcit attribute to excitation_frequency to be more human-readable. Since we are already making many breaking changes to the staging driver, this is a good time to do this. Also make use of IIO_DEVICE_ATTR_RW while we are touching this. Signed-off-by: David Lechner --- drivers/staging/iio/resolver/ad2s1210.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/drivers/staging/iio/resolver/ad2s1210.c b/drivers/staging/iio/resolver/ad2s1210.c index 27294eff99ef..14bec2b20939 100644 --- a/drivers/staging/iio/resolver/ad2s1210.c +++ b/drivers/staging/iio/resolver/ad2s1210.c @@ -217,9 +217,9 @@ static int ad2s1210_set_resolution_gpios(struct ad2s1210_state *st, bitmap); } -static ssize_t ad2s1210_show_fexcit(struct device *dev, - struct device_attribute *attr, - char *buf) +static ssize_t excitation_frequency_show(struct device *dev, + struct device_attribute *attr, + char *buf) { struct ad2s1210_state *st = iio_priv(dev_to_iio_dev(dev)); unsigned int value; @@ -240,9 +240,9 @@ static ssize_t ad2s1210_show_fexcit(struct device *dev, return ret; } -static ssize_t ad2s1210_store_fexcit(struct device *dev, - struct device_attribute *attr, - const char *buf, size_t len) +static ssize_t excitation_frequency_store(struct device *dev, + struct device_attribute *attr, + const char *buf, size_t len) { struct ad2s1210_state *st = iio_priv(dev_to_iio_dev(dev)); u16 fexcit; @@ -555,8 +555,7 @@ static int ad2s1210_write_raw(struct iio_dev *indio_dev, return ret; } -static IIO_DEVICE_ATTR(fexcit, 0644, - ad2s1210_show_fexcit, ad2s1210_store_fexcit, 0); +static IIO_DEVICE_ATTR_RW(excitation_frequency, 0); static IIO_DEVICE_ATTR(bits, 0644, ad2s1210_show_resolution, ad2s1210_store_resolution, 0); static IIO_DEVICE_ATTR(fault, 0644, @@ -604,7 +603,7 @@ static const struct iio_chan_spec ad2s1210_channels[] = { }; static struct attribute *ad2s1210_attributes[] = { - &iio_dev_attr_fexcit.dev_attr.attr, + &iio_dev_attr_excitation_frequency.dev_attr.attr, &iio_dev_attr_bits.dev_attr.attr, &iio_dev_attr_fault.dev_attr.attr, &iio_dev_attr_los_thrd.dev_attr.attr, From patchwork Thu Sep 21 14:19:45 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Lechner X-Patchwork-Id: 142942 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:172:b0:3f2:4152:657d with SMTP id h50csp5161690vqi; Thu, 21 Sep 2023 14:56:40 -0700 (PDT) X-Google-Smtp-Source: AGHT+IG70W/7HG7Dq16G6NPymadkbQbKJpoq2sRP0R9G1T7Oz0jZomTRaJs8ek/qJntjy/1q4rv8 X-Received: by 2002:a17:903:1c1:b0:1c0:afda:7707 with SMTP id e1-20020a17090301c100b001c0afda7707mr1306421plh.34.1695333400227; Thu, 21 Sep 2023 14:56:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695333400; cv=none; d=google.com; s=arc-20160816; b=X4bWGjJkKJKpHS80uBhfurYt53i7F6Ic/ouYUaXonlNMjHtF3CXqyCmjer4yQ7Y3Al tliq8aVO3SL/dQCFeKwsTmAsi7GIFUnQOlZPQKxoNzkqJSExqLeDeiduc0XCT9QHWpTD PhxYrjUdgXECtwXAsvUmTr362Tz5Nrx6K2bgDwPJYYzWlM4p5J9XF6MPi+fH1Vo/wOxO El/HtCq+3HOtSbZYcrb0EbEgiSJn4lNt/2MGs53GFWIP++8GGx/qnRC2IbAfxuWMaZPj uCXiI6NOUq9GsylS5XWDMeNE3GA2C5cRXQXWe9QA+QjqibtJ1W0/Qi3Ap008C3PdY/3/ 6kGw== 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=bSzhqtQuH6rCmKnaqNrN1q0TijVTu8SKnjt98b8WvE0=; fh=rOC7q8UJisRayejF6PsoKdRfRTtXVZOwgDCXOG0B/ws=; b=jtBWnepDmhh6kd0K6VSVhpQLEHvR62sgP/pXzco7exp9v1RCidRfFEnlXHzkptX6gE 7xzGEoZAWs4nAyafJgQTXwnp4BOZeFn9CelJ8CXhwsj44+xmpSlZIXSJ0ujGpWrMW7H4 OyUNxZYMFS3CYpzhsT1G9dNk8aYEeh1irrkM2PJYZLW40nDL2zbxs+uibr5GdTKlJjLD 9a35fXKUh+YlSfhPaYp7SUCSlO9Lofdej3MtUoGFkS9RPVxXIU0bnco8j90NhBS6X/8u Dr09tLqKNFpRkjXBbkKCM52akZzoJJ2RLYiEHu+LN98Csu+BTfLvezKMZo7V7r3oMsgE jJfQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@baylibre-com.20230601.gappssmtp.com header.s=20230601 header.b=BWZ6pp8L; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from fry.vger.email (fry.vger.email. [2620:137:e000::3:8]) by mx.google.com with ESMTPS id jy6-20020a17090342c600b001c589ba4a08si2158178plb.1.2023.09.21.14.56.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Sep 2023 14:56:40 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) client-ip=2620:137:e000::3:8; Authentication-Results: mx.google.com; dkim=pass header.i=@baylibre-com.20230601.gappssmtp.com header.s=20230601 header.b=BWZ6pp8L; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 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 fry.vger.email (Postfix) with ESMTP id 65CDD80952D0; Thu, 21 Sep 2023 10:49:08 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at fry.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229615AbjIURs5 (ORCPT + 29 others); Thu, 21 Sep 2023 13:48:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37916 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229452AbjIURsz (ORCPT ); Thu, 21 Sep 2023 13:48:55 -0400 Received: from mail-wm1-x334.google.com (mail-wm1-x334.google.com [IPv6:2a00:1450:4864:20::334]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B00D676AC for ; Thu, 21 Sep 2023 10:31:01 -0700 (PDT) Received: by mail-wm1-x334.google.com with SMTP id 5b1f17b1804b1-404fbfac998so14316905e9.3 for ; Thu, 21 Sep 2023 10:31:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1695317454; x=1695922254; 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=bSzhqtQuH6rCmKnaqNrN1q0TijVTu8SKnjt98b8WvE0=; b=BWZ6pp8L5dlNJMOCLX7qz8iHI85oVrNy2iUdNc/Nsqs3j15b41EYuhd9OMYr3PMv+N TGHWZb1GV8ZgSLcnHJj9p/5iUqZKBPVQaKEv6Jinok8uEZAaUc2GC9niVP5Fy8oHFGID mHitnZDtImrKGGqmuB9bjSK+BPrYzwu/gtChlWCjahvToTPAWuzfDePZJK8COhHSdb2f lLEGyWi0S3DdTsXLr6c1IS1jEBSlUo05JWM8zYP0dK3/BzAEbmduqIbPFBZTDj6I/61D nwvjNgxkV/z/hyv3TTCm9+HCkXeJJ5R+bpsywmTuBSKDYhPq1+99i5jDnV3nUnH/JXrr snug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695317454; x=1695922254; 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=bSzhqtQuH6rCmKnaqNrN1q0TijVTu8SKnjt98b8WvE0=; b=SPddoW1w4I4o5DuHn85pXIm0x8LWn+52X+xuzquiRTYm+Z86GOLIP+G1TUZNP2yi51 6ZEKDn8dKxwYNvzosBM5r1sP3H4oAIGNE3dbXTdvKuZjV6jcOm9xEcBLPwxmUaVZQl8E iSjMaQgbANqigFq4csq6M6KVk0B3lzHMBHy7blfNCA+IFuMlO5vF1nvNr9CTwk2XoZpp PXeLgBC8p1lSk2TH4qBg4gaoymnqLm1godicWLRgujN7f6ecuTjI6m82e2uqeW7IvQnP nLOtdIuHZUqw372IOxktmbfefqlon41zVR3noojvImJCE14R+bKzN8LS92I7sPAHzvx1 EDnQ== X-Gm-Message-State: AOJu0YwUNRseqEcNHpZ5XcIJKO1YicJ1QAn1OK9GqgNHjJnFVCGG0dCc 4LtuixbrBvRoJqzyMDvUj/LEObg+Ng65GPQd6WoIZO49 X-Received: by 2002:a1c:f204:0:b0:404:fc5c:15ed with SMTP id s4-20020a1cf204000000b00404fc5c15edmr4949109wmc.35.1695306167586; Thu, 21 Sep 2023 07:22:47 -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.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Sep 2023 07:22:47 -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_S=C3=A1?= , Axel Haslam , Philip Molloy , David Lechner Subject: [v2 17/19] staging: iio: resolver: ad2s1210: convert resolution to devicetree property Date: Thu, 21 Sep 2023 09:19:45 -0500 Message-Id: <20230921141947.57784-20-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 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 fry.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 (fry.vger.email [0.0.0.0]); Thu, 21 Sep 2023 10:49:08 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1777685915455825365 X-GMAIL-MSGID: 1777685915455825365 Selecting the resolution was implemented as the `bits` sysfs attribute. However, the selection of the resolution depends on how the hardware is wired and the specific application, so this is rather a job for devicetree to describe. A new devicetree property `adi,resolution` to specify the resolution required for each chip is added and the `bits` sysfs attribute is removed. Since the resolution is now supplied by a devicetree property, the resolution-gpios are now optional and we can allow for the case where the resolution pins on the AD2S1210 are hard-wired instead of requiring them to be connected to gpios. Signed-off-by: David Lechner --- drivers/staging/iio/resolver/ad2s1210.c | 136 +++++++++++------------- 1 file changed, 61 insertions(+), 75 deletions(-) diff --git a/drivers/staging/iio/resolver/ad2s1210.c b/drivers/staging/iio/resolver/ad2s1210.c index 14bec2b20939..71f0913b7e2e 100644 --- a/drivers/staging/iio/resolver/ad2s1210.c +++ b/drivers/staging/iio/resolver/ad2s1210.c @@ -65,6 +65,13 @@ enum ad2s1210_mode { MOD_CONFIG = 0b11, }; +enum ad2s1210_resolution { + AD2S1210_RES_10 = 0b00, + AD2S1210_RES_12 = 0b01, + AD2S1210_RES_14 = 0b10, + AD2S1210_RES_16 = 0b11, +}; + struct ad2s1210_state { struct mutex lock; struct spi_device *sdev; @@ -72,13 +79,12 @@ struct ad2s1210_state { struct gpio_desc *sample_gpio; /** GPIO pins connected to A0 and A1 lines. */ struct gpio_descs *mode_gpios; - /** GPIO pins connected to RES0 and RES1 lines. */ - struct gpio_descs *resolution_gpios; /** Used to access config registers. */ struct regmap *regmap; /** The external oscillator frequency in Hz. */ unsigned long fclkin; - u8 resolution; + /** The selected resolution */ + enum ad2s1210_resolution resolution; u8 rx[2] __aligned(IIO_DMA_MINALIGN); u8 tx[2]; }; @@ -205,18 +211,6 @@ static int ad2s1210_set_excitation_frequency(struct ad2s1210_state *st, return regmap_write(st->regmap, AD2S1210_REG_SOFT_RESET, 0); } -static int ad2s1210_set_resolution_gpios(struct ad2s1210_state *st, - u8 resolution) -{ - struct gpio_descs *gpios = st->resolution_gpios; - DECLARE_BITMAP(bitmap, 2); - - bitmap[0] = (resolution - 10) >> 1; - - return gpiod_set_array_value(gpios->ndescs, gpios->desc, gpios->info, - bitmap); -} - static ssize_t excitation_frequency_show(struct device *dev, struct device_attribute *attr, char *buf) @@ -265,50 +259,6 @@ static ssize_t excitation_frequency_store(struct device *dev, return ret; } -static ssize_t ad2s1210_show_resolution(struct device *dev, - struct device_attribute *attr, - char *buf) -{ - struct ad2s1210_state *st = iio_priv(dev_to_iio_dev(dev)); - - return sprintf(buf, "%d\n", st->resolution); -} - -static ssize_t ad2s1210_store_resolution(struct device *dev, - struct device_attribute *attr, - const char *buf, size_t len) -{ - struct ad2s1210_state *st = iio_priv(dev_to_iio_dev(dev)); - unsigned char data; - unsigned char udata; - int ret; - - ret = kstrtou8(buf, 10, &udata); - if (ret || udata < 10 || udata > 16) { - dev_err(dev, "ad2s1210: resolution out of range\n"); - return -EINVAL; - } - - data = (udata - 10) >> 1; - - mutex_lock(&st->lock); - ret = regmap_update_bits(st->regmap, AD2S1210_REG_CONTROL, - AD2S1210_SET_RES, data); - if (ret < 0) - goto error_ret; - - ret = ad2s1210_set_resolution_gpios(st, udata); - if (ret < 0) - goto error_ret; - - st->resolution = udata; - ret = len; - -error_ret: - mutex_unlock(&st->lock); - return ret; -} - /* read the fault register since last sample */ static ssize_t ad2s1210_show_fault(struct device *dev, struct device_attribute *attr, char *buf) @@ -556,8 +506,6 @@ static int ad2s1210_write_raw(struct iio_dev *indio_dev, } static IIO_DEVICE_ATTR_RW(excitation_frequency, 0); -static IIO_DEVICE_ATTR(bits, 0644, - ad2s1210_show_resolution, ad2s1210_store_resolution, 0); static IIO_DEVICE_ATTR(fault, 0644, ad2s1210_show_fault, ad2s1210_clear_fault, 0); @@ -604,7 +552,6 @@ static const struct iio_chan_spec ad2s1210_channels[] = { static struct attribute *ad2s1210_attributes[] = { &iio_dev_attr_excitation_frequency.dev_attr.attr, - &iio_dev_attr_bits.dev_attr.attr, &iio_dev_attr_fault.dev_attr.attr, &iio_dev_attr_los_thrd.dev_attr.attr, &iio_dev_attr_dos_ovr_thrd.dev_attr.attr, @@ -626,12 +573,10 @@ static int ad2s1210_initial(struct ad2s1210_state *st) int ret; mutex_lock(&st->lock); - ret = ad2s1210_set_resolution_gpios(st, st->resolution); - if (ret < 0) - return ret; data = AD2S1210_DEF_CONTROL & ~AD2S1210_SET_RES; - data |= (st->resolution - 10) >> 1; + data |= st->resolution; + ret = regmap_write(st->regmap, AD2S1210_REG_CONTROL, data); if (ret < 0) goto error_ret; @@ -670,6 +615,26 @@ static const struct iio_info ad2s1210_info = { .debugfs_reg_access = &ad2s1210_debugfs_reg_access, }; +static int ad2s1210_setup_properties(struct ad2s1210_state *st) +{ + struct device *dev = &st->sdev->dev; + u32 val; + int ret; + + ret = device_property_read_u32(dev, "assigned-resolution-bits", &val); + if (ret < 0) + return dev_err_probe(dev, ret, + "failed to read assigned-resolution-bits property\n"); + + if (val < 10 || val > 16) + return dev_err_probe(dev, -EINVAL, + "resolution out of range: %u\n", val); + + st->resolution = (val - 10) >> 1; + + return 0; +} + static int ad2s1210_setup_clocks(struct ad2s1210_state *st) { struct device *dev = &st->sdev->dev; @@ -691,6 +656,9 @@ static int ad2s1210_setup_clocks(struct ad2s1210_state *st) static int ad2s1210_setup_gpios(struct ad2s1210_state *st) { struct device *dev = &st->sdev->dev; + struct gpio_descs *resolution_gpios; + DECLARE_BITMAP(bitmap, 2); + int ret; /* should not be sampling on startup */ st->sample_gpio = devm_gpiod_get(dev, "sample", GPIOD_OUT_LOW); @@ -708,16 +676,31 @@ static int ad2s1210_setup_gpios(struct ad2s1210_state *st) return dev_err_probe(dev, -EINVAL, "requires exactly 2 mode-gpios\n"); - /* both pins high means that we start with 16-bit resolution */ - st->resolution_gpios = devm_gpiod_get_array(dev, "resolution", - GPIOD_OUT_HIGH); - if (IS_ERR(st->resolution_gpios)) - return dev_err_probe(dev, PTR_ERR(st->resolution_gpios), + /* If resolution gpios are provided, they get set to the required + * resolution, otherwise it is assumed the RES0 and RES1 pins are + * hard-wired to match the resolution indicated in the devicetree. + */ + resolution_gpios = devm_gpiod_get_array_optional(dev, "resolution", + GPIOD_ASIS); + if (IS_ERR(resolution_gpios)) + return dev_err_probe(dev, PTR_ERR(resolution_gpios), "failed to request resolution GPIOs\n"); - if (st->resolution_gpios->ndescs != 2) - return dev_err_probe(dev, -EINVAL, - "requires exactly 2 resolution-gpios\n"); + if (resolution_gpios) { + if (resolution_gpios->ndescs != 2) + return dev_err_probe(dev, -EINVAL, + "requires exactly 2 resolution-gpios\n"); + + bitmap[0] = st->resolution; + + ret = gpiod_set_array_value(resolution_gpios->ndescs, + resolution_gpios->desc, + resolution_gpios->info, + bitmap); + if (ret < 0) + return dev_err_probe(dev, ret, + "failed to set resolution gpios\n"); + } return 0; } @@ -782,7 +765,10 @@ static int ad2s1210_probe(struct spi_device *spi) mutex_init(&st->lock); st->sdev = spi; - st->resolution = 12; + + ret = ad2s1210_setup_properties(st); + if (ret < 0) + return ret; ret = ad2s1210_setup_clocks(st); if (ret < 0) From patchwork Thu Sep 21 14:19:46 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Lechner X-Patchwork-Id: 143477 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:172:b0:3f2:4152:657d with SMTP id h50csp5624584vqi; Fri, 22 Sep 2023 07:35:31 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGji3qniADFwK+MvIGFmjJOyBF5RvSwZXUFE3neX2DsM+qgvs+0SoZBnHMYiXJimapbrvzK X-Received: by 2002:a05:6a21:a584:b0:15e:556:bc26 with SMTP id gd4-20020a056a21a58400b0015e0556bc26mr553099pzc.62.1695393331537; Fri, 22 Sep 2023 07:35:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695393331; cv=none; d=google.com; s=arc-20160816; b=wSnIAhvxxQ9xwZXAs8fKeUlxcDqJvYQDPnhY7U7CL5qHFQOuEKg6Y+DqM5MbYzn5qB Ru75/c581LjUoM+nzeP/fA/F3Kh58Fx2knFt1ngzdp/4a4OIlgh8Qxq6Y2jAF28qjB88 132SPxFA9Ta0CLJrP+gUUvsQ4lNJHYMW83iOAjZ4hlcRDgZFQOeCWfgfw3QCzzvrbAlz lk8Cw6j63DyoMFPx58heso3X2jbnGWZ12gBOd1XyrNUdi4p5qdl5fsptVENj7Cw9Ee6Y 4Q6baDDzvr3b+5Ec0rQsBztLvcvESWm0sZ2ri8782+9y78OrN+wF/QDJbq7Og73aaABf lJxg== 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=y5XZRvh5FJ3F9RXkqi8NbBrwtIOGm1RUjmAFGYn0SWM=; fh=rOC7q8UJisRayejF6PsoKdRfRTtXVZOwgDCXOG0B/ws=; b=Ry8/hcbGXA6XVId0bosYQIQO/pDncojLnHYYTg68TzMX1dqqlaltceuohlnHJfqJkq /ibjk1PQc16cuUfetiw3e76QiLQExEvBnMAZtP34FSM5ryQYHkl/wbQxYjWv4ybjQKQh cVTsNCS2GiWYaGOZxnIeWJbtvnowSapnQAZn5gXPMDdAgm7tGcY1wDrKByUy3SaB7a4I 4Ro2kbJ76CJaBWBf892NH48p7h2pblrMSxGjrszvrzPhiszuADfCadKFgnQdDsxHNkIx Uh0GqlqCAurEFo488SNEJBYwStYjsP7V00/yZtGE1rJ8CjFRp1RfcgcPzrhM6nuCdicf AUiw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@baylibre-com.20230601.gappssmtp.com header.s=20230601 header.b=JdpOrZX9; 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 j6-20020a170903024600b001c470c5906bsi4050156plh.221.2023.09.22.07.35.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 22 Sep 2023 07:35:31 -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=JdpOrZX9; 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 9DE95826751B; Thu, 21 Sep 2023 10:06:33 -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 S229630AbjIURGd (ORCPT + 29 others); Thu, 21 Sep 2023 13:06:33 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39356 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230005AbjIURGD (ORCPT ); Thu, 21 Sep 2023 13:06:03 -0400 Received: from mail-lf1-x12f.google.com (mail-lf1-x12f.google.com [IPv6:2a00:1450:4864:20::12f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1D88C49D2 for ; Thu, 21 Sep 2023 10:04:24 -0700 (PDT) Received: by mail-lf1-x12f.google.com with SMTP id 2adb3069b0e04-503f39d3236so2097994e87.0 for ; Thu, 21 Sep 2023 10:04:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1695315763; x=1695920563; 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=y5XZRvh5FJ3F9RXkqi8NbBrwtIOGm1RUjmAFGYn0SWM=; b=JdpOrZX9ujV0U2ciOIMBSCUTjIEeoVLoYKzv1A/P50NlQx0NoDH8jSrtNeMDT/qDSU pyFK90T8gbCNetzY21+QjfJVLihkMS2F8qNShxnHsMo+5ZhuSiORoQq32zHIIzTU/Olv 3BJ6gE6yB+AQwkRKdBRx1MjVCdEmvQWBpkPcrMurzlCslvBo07AbYynyWaUNdmNL3zXp cD0LE8HCIMp0tJtgGefjiCl6+nrqNz5X/SBZEUdW9llW7ciojUAbuQN73R85AtFWkjNk BCRDcaVpb2qPcfxOH4UnaDM3OqwGK2xMq6C45mGIoBn7K6BlqZT1B7ORXil/PKWd5Kma bYOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695315763; x=1695920563; 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=y5XZRvh5FJ3F9RXkqi8NbBrwtIOGm1RUjmAFGYn0SWM=; b=EboRr5giaVdFB1Opfuck56Ma3P5qvJW3D0M8M6Kf352DLRWTXpIwmYnHnvlpxKXWVV 0aID+nksOksQaMvOolWGcpvdy7CEg2fYlJO9TwBKu0forg2q6/BuOPVddSMkceYgBy8C 0n/Wtz1YX3QLDe3yi3tBl1pPdJ32Wt7WzK+bSvp2+RD7zNunH2oUyIHiZtx8goJKp86y 6fTcyGhdikRQpVuo7/6j+mCl3PnERQRkgTG/8WaL2b9D7sqYZ2eiYWjayp/gQuPNLViz vu0zmzRh6a305k8lmYgH+7iMghwy/rl3iTtWrAG0gKeb1BF8JSqe7bOAfS1N3TAW1OKJ zbIA== X-Gm-Message-State: AOJu0YxeF4F7e3Wy+3QO4k34EgAeQsYQ7ndn57GRD1a5CInGR3NKJAZa LaXrvkLBdyhuwc/0Br0JIHZKofGFIy1xQ3Wam/YG9pMl X-Received: by 2002:a05:600c:2117:b0:3fe:e7b2:c97f with SMTP id u23-20020a05600c211700b003fee7b2c97fmr5472970wml.36.1695306168409; Thu, 21 Sep 2023 07:22:48 -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.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Sep 2023 07:22:48 -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_S=C3=A1?= , Axel Haslam , Philip Molloy , David Lechner Subject: [v2 18/19] staging: iio: resolver: ad2s1210: add phase_lock_range attributes Date: Thu, 21 Sep 2023 09:19:46 -0500 Message-Id: <20230921141947.57784-21-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 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]); Thu, 21 Sep 2023 10:06:33 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1777692837742375225 X-GMAIL-MSGID: 1777748757817392092 This adds new phase_lock_range and phase_lock_range_available attributes to the ad2s1210 resolver driver. These attributes allow the user to set the phase lock range bit in the control register to modify the behavior of the resolver to digital converter. Signed-off-by: David Lechner --- drivers/staging/iio/resolver/ad2s1210.c | 58 +++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/drivers/staging/iio/resolver/ad2s1210.c b/drivers/staging/iio/resolver/ad2s1210.c index 71f0913b7e2e..f5b8b290e860 100644 --- a/drivers/staging/iio/resolver/ad2s1210.c +++ b/drivers/staging/iio/resolver/ad2s1210.c @@ -259,6 +259,60 @@ static ssize_t excitation_frequency_store(struct device *dev, return ret; } +static ssize_t phase_lock_range_show(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + struct ad2s1210_state *st = iio_priv(dev_to_iio_dev(dev)); + int ret; + + mutex_lock(&st->lock); + ret = regmap_test_bits(st->regmap, AD2S1210_REG_CONTROL, + AD2S1210_PHASE_LOCK_RANGE_44); + if (ret < 0) + goto error_ret; + + ret = sprintf(buf, "%d\n", ret ? 44 : 360); + +error_ret: + mutex_unlock(&st->lock); + return ret; +} + +static ssize_t phase_lock_range_store(struct device *dev, + struct device_attribute *attr, + const char *buf, size_t len) +{ + struct ad2s1210_state *st = iio_priv(dev_to_iio_dev(dev)); + u16 udata; + int ret; + + ret = kstrtou16(buf, 10, &udata); + if (ret < 0 || (udata != 44 && udata != 360)) + return -EINVAL; + + mutex_lock(&st->lock); + + ret = regmap_update_bits(st->regmap, AD2S1210_REG_CONTROL, + AD2S1210_PHASE_LOCK_RANGE_44, + udata == 44 ? AD2S1210_PHASE_LOCK_RANGE_44 : 0); + if (ret < 0) + goto error_ret; + + ret = len; + +error_ret: + mutex_unlock(&st->lock); + return ret; +} + +static ssize_t phase_lock_range_available_show(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + return sprintf(buf, "44 360\n"); +} + /* read the fault register since last sample */ static ssize_t ad2s1210_show_fault(struct device *dev, struct device_attribute *attr, char *buf) @@ -506,6 +560,8 @@ static int ad2s1210_write_raw(struct iio_dev *indio_dev, } static IIO_DEVICE_ATTR_RW(excitation_frequency, 0); +static IIO_DEVICE_ATTR_RW(phase_lock_range, 0); +static IIO_DEVICE_ATTR_RO(phase_lock_range_available, 0); static IIO_DEVICE_ATTR(fault, 0644, ad2s1210_show_fault, ad2s1210_clear_fault, 0); @@ -552,6 +608,8 @@ static const struct iio_chan_spec ad2s1210_channels[] = { static struct attribute *ad2s1210_attributes[] = { &iio_dev_attr_excitation_frequency.dev_attr.attr, + &iio_dev_attr_phase_lock_range.dev_attr.attr, + &iio_dev_attr_phase_lock_range_available.dev_attr.attr, &iio_dev_attr_fault.dev_attr.attr, &iio_dev_attr_los_thrd.dev_attr.attr, &iio_dev_attr_dos_ovr_thrd.dev_attr.attr, From patchwork Thu Sep 21 14:19:47 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Lechner X-Patchwork-Id: 143075 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:172:b0:3f2:4152:657d with SMTP id h50csp5259396vqi; Thu, 21 Sep 2023 18:41:32 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGVzRWuUC1H97jT7zBmN3rCc3kxkICPlxuqGZ3uM0BmjzO8IFk65G6EwHTPBR0+j/WGpuM1 X-Received: by 2002:a17:902:a407:b0:1c3:ed30:ce0a with SMTP id p7-20020a170902a40700b001c3ed30ce0amr6832630plq.19.1695346892134; Thu, 21 Sep 2023 18:41:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695346892; cv=none; d=google.com; s=arc-20160816; b=uXRxIS8YOloBceQtv90Q+eWJk0Tjgt1QiMvaG8bRzy3uP7UvRjHjPTGo48MBgH6CnY OxuTTCMkLbO2T3MglLmDFjpf+jWdjm9U+5vGLXCv3iGKL7vI2kl47GTLxOViY0vJ0oPn jiYL3H3Icw7cjV8PYi03IlFM/0QfgERM1vDtoW1iWnY47VoRh2WOZVha5MtiRkFPYC9n RmPiIP84plpTMZY4EVVIms6OogublHFCSTOY4iu9T4917vnOmYvN10ac8nWZdlmVFW34 GJ6P3bKtP3HckAaJmKrdLAXH9vtFfEKRVMnf0emYpZNDP7mHnPOe/CWnzvG5vKGhEiv/ C0OQ== 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=BurSNjw3LRUUcMvXtonPsGB5QUx7CZPo8/XQKc8tXvQ=; fh=rOC7q8UJisRayejF6PsoKdRfRTtXVZOwgDCXOG0B/ws=; b=c7MtXGHs3F90FyxCP6qR20lCHe4aGc0Ge1rT1cM9mlgHHWkyol6Kw+prioOXqGSWPh 8tkmkMl4ZC119RIko+hUAUs1mie+ERuT1lcm3kSdqNSTZZztudg7OtzSCHapk7jzqgLe vAqrnn+mjwZSJ3ZgtZrzhtbYVHbl3tqo90FrtNKFS/RISSvMFVLDuPUccZ6vtjq59mns X7Dxe+hbFhk1QcHxRl45kUcwP9kSeSMOJ3uTQhgnf9gl04NolHlarlHGYjz9CIP6SOSR d4WeQiigDJ6gZ4iezQT4QoCq+SI4Ju1T9eCAPRdeLOyIdIZtlUsEUjR5b7gB7d1HZoR5 tAFg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@baylibre-com.20230601.gappssmtp.com header.s=20230601 header.b=uiLmDGct; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from groat.vger.email (groat.vger.email. [2620:137:e000::3:5]) by mx.google.com with ESMTPS id r17-20020a170902c7d100b001bbca0a8393si2509345pla.56.2023.09.21.18.41.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Sep 2023 18:41:32 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) client-ip=2620:137:e000::3:5; Authentication-Results: mx.google.com; dkim=pass header.i=@baylibre-com.20230601.gappssmtp.com header.s=20230601 header.b=uiLmDGct; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 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 groat.vger.email (Postfix) with ESMTP id 3C15380569B5; Thu, 21 Sep 2023 13:17:51 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at groat.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230227AbjIUURp (ORCPT + 29 others); Thu, 21 Sep 2023 16:17:45 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34474 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230264AbjIUURZ (ORCPT ); Thu, 21 Sep 2023 16:17:25 -0400 Received: from mail-lf1-x12c.google.com (mail-lf1-x12c.google.com [IPv6:2a00:1450:4864:20::12c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 889172AC7B for ; Thu, 21 Sep 2023 10:11:51 -0700 (PDT) Received: by mail-lf1-x12c.google.com with SMTP id 2adb3069b0e04-503065c4b25so2031942e87.1 for ; Thu, 21 Sep 2023 10:11:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1695316309; x=1695921109; 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=BurSNjw3LRUUcMvXtonPsGB5QUx7CZPo8/XQKc8tXvQ=; b=uiLmDGcttQJgaI/M2kAy7HFwgIPiSKH5E6F19w4Lye68JpcawYXP7vHWNeIWzLAXtg fAxIQB4Vb2d6da7+OptTvdzFJiw4ItaTkCEH/of2VitRFelmI7xXl25RDJWS2FyN222z jOUUrq8VxAZdmEpS/6M2IBzQsglOz2Q1gWaZwq8lF4uo9tHCeCaCOKvpp6+tjuQSvmju g4YKvWnerCLz6UXksxrDjfqaeNJOiHQ/lyGDSHhZwv6kgH5lGFdiVN6oaMqs8QTYgXQC OkBh3VZWd2+BP9xPePZmUezk8Y48s2VET/tD6v1+E/UF2jeWprMINiKHr+jwnpxsAeC3 r6rg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695316309; x=1695921109; 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=BurSNjw3LRUUcMvXtonPsGB5QUx7CZPo8/XQKc8tXvQ=; b=EHi0WFmP0qIdHKaWzI0zAH1aJyIJVjz0zDTNbqtEHXwY3fy+QJgjaQuMjxp+RG+W4f OmGxBbiMfFRNB5yNoZyKohRNfbVvPZwZXBRZSW9iMOEtqeN5k4dmsvazNBTQ66+SfNYS uLDZ4ouFUxeCQ+X2XaCPyrpAlgkoQx+WtxdI5Guz42M2rFy3nZ/PD/kkE+35wONdxbu5 u8r3BqBSDAbKeNLSeeEXGUdOCTYM4s0faS9uoXCFKVQJVvhs5QPE8nr7UR5TBpRpJbEl bZtrN4bvLHzz/2JRmeEnZlwzePBk+YCVeiuyYiywAr0A7qsacbTqH7MWdYHlLqIEJlwJ pRfg== X-Gm-Message-State: AOJu0YwL0kV3ftgsEp4w51ZaEf/UoY+F/7TCg1cngO3OSftlyzZZ8QbB TmQRQuCozdNKnnQVq67OdGSCD8+HdHlgKEwtIw3uFYvS X-Received: by 2002:a05:600c:152:b0:404:2dbb:8943 with SMTP id w18-20020a05600c015200b004042dbb8943mr5663278wmm.2.1695306169283; Thu, 21 Sep 2023 07:22:49 -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.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Sep 2023 07:22:49 -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_S=C3=A1?= , Axel Haslam , Philip Molloy , David Lechner Subject: [v2 19/19] staging: iio: resolver: ad2s1210: add triggered buffer support Date: Thu, 21 Sep 2023 09:19:47 -0500 Message-Id: <20230921141947.57784-22-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 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 groat.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 (groat.vger.email [0.0.0.0]); Thu, 21 Sep 2023 13:17:51 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1777681918589683240 X-GMAIL-MSGID: 1777700062465097767 This adds support for triggered buffers to the AD2S1210 resolver driver. Signed-off-by: David Lechner --- drivers/staging/iio/resolver/ad2s1210.c | 84 ++++++++++++++++++++++++- 1 file changed, 83 insertions(+), 1 deletion(-) diff --git a/drivers/staging/iio/resolver/ad2s1210.c b/drivers/staging/iio/resolver/ad2s1210.c index f5b8b290e860..44a2ecaeeeff 100644 --- a/drivers/staging/iio/resolver/ad2s1210.c +++ b/drivers/staging/iio/resolver/ad2s1210.c @@ -19,8 +19,11 @@ #include #include +#include #include #include +#include +#include #define DRV_NAME "ad2s1210" @@ -85,6 +88,12 @@ struct ad2s1210_state { unsigned long fclkin; /** The selected resolution */ enum ad2s1210_resolution resolution; + /** Scan buffer */ + struct { + __be16 chan[2]; + /* Ensure timestamp is naturally aligned. */ + s64 timestamp __aligned(8); + } scan; u8 rx[2] __aligned(IIO_DMA_MINALIGN); u8 tx[2]; }; @@ -592,18 +601,35 @@ static const struct iio_chan_spec ad2s1210_channels[] = { .type = IIO_ANGL, .indexed = 1, .channel = 0, + .scan_index = 0, + .scan_type = { + .sign = 'u', + .realbits = 16, + .storagebits = 16, + .endianness = IIO_BE, + }, .info_mask_separate = BIT(IIO_CHAN_INFO_RAW) | BIT(IIO_CHAN_INFO_SCALE) | BIT(IIO_CHAN_INFO_HYSTERESIS), .info_mask_separate_available = BIT(IIO_CHAN_INFO_HYSTERESIS), + .datasheet_name = "position", }, { .type = IIO_ANGL_VEL, .indexed = 1, .channel = 0, + .scan_index = 1, + .scan_type = { + .sign = 's', + .realbits = 16, + .storagebits = 16, + .endianness = IIO_BE, + }, .info_mask_separate = BIT(IIO_CHAN_INFO_RAW) | BIT(IIO_CHAN_INFO_SCALE), - } + .datasheet_name = "velocity", + }, + IIO_CHAN_SOFT_TIMESTAMP(2), }; static struct attribute *ad2s1210_attributes[] = { @@ -665,6 +691,55 @@ static int ad2s1210_debugfs_reg_access(struct iio_dev *indio_dev, return ret; } +static irqreturn_t ad2s1210_trigger_handler(int irq, void *p) +{ + struct iio_poll_func *pf = p; + struct iio_dev *indio_dev = pf->indio_dev; + struct ad2s1210_state *st = iio_priv(indio_dev); + size_t chan = 0; + int ret; + + mutex_lock(&st->lock); + + memset(&st->scan, 0, sizeof(st->scan)); + gpiod_set_value(st->sample_gpio, 1); + + if (test_bit(0, indio_dev->active_scan_mask)) { + ret = ad2s1210_set_mode(st, MOD_POS); + if (ret < 0) + goto error_ret; + + /* REVIST: we can read 3 bytes here and also get fault flags */ + ret = spi_read(st->sdev, st->rx, 2); + if (ret < 0) + goto error_ret; + + memcpy(&st->scan.chan[chan++], st->rx, 2); + } + + if (test_bit(1, indio_dev->active_scan_mask)) { + ret = ad2s1210_set_mode(st, MOD_VEL); + if (ret < 0) + goto error_ret; + + /* REVIST: we can read 3 bytes here and also get fault flags */ + ret = spi_read(st->sdev, st->rx, 2); + if (ret < 0) + goto error_ret; + + memcpy(&st->scan.chan[chan++], st->rx, 2); + } + + 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); + + return IRQ_HANDLED; +} + static const struct iio_info ad2s1210_info = { .read_raw = ad2s1210_read_raw, .read_avail = ad2s1210_read_avail, @@ -850,6 +925,13 @@ static int ad2s1210_probe(struct spi_device *spi) indio_dev->num_channels = ARRAY_SIZE(ad2s1210_channels); indio_dev->name = spi_get_device_id(spi)->name; + ret = devm_iio_triggered_buffer_setup(&spi->dev, indio_dev, + &iio_pollfunc_store_time, + &ad2s1210_trigger_handler, NULL); + if (ret < 0) + return dev_err_probe(&spi->dev, ret, + "iio triggered buffer setup failed\n"); + return devm_iio_device_register(&spi->dev, indio_dev); }