From patchwork Sun Sep 15 05:57:56 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: William Breathitt Gray X-Patchwork-Id: 11145819 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 5FC981599 for ; Sun, 15 Sep 2019 05:58:55 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 34D7921479 for ; Sun, 15 Sep 2019 05:58:55 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="g655PQ9I" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726339AbfIOF6j (ORCPT ); Sun, 15 Sep 2019 01:58:39 -0400 Received: from mail-pl1-f194.google.com ([209.85.214.194]:36184 "EHLO mail-pl1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726252AbfIOF6j (ORCPT ); Sun, 15 Sep 2019 01:58:39 -0400 Received: by mail-pl1-f194.google.com with SMTP id f19so15067250plr.3; Sat, 14 Sep 2019 22:58:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Xjl+nKMauFdQMucZCGYFJNYkEcd8nmtmKLzonD2DvBw=; b=g655PQ9IlN8hq0p+5TDCqjVifJpojbCk/nQ0WgAKyarCg8+7bTpkJVNjgK6odD5wr+ 1TxRvIIJj6MpXscW2aQv6IlbpGCQviR2UF2AcdGcnPsNNsSDnGepF1Lfljeq79t/ygOU Fq8rlw3Nu7LruAJf5UUvqOoPVr1IulyjVcCSXNutWoD3WR9V8sFm5nR4gGHLOGzyErcK 6mEhuwgE0s7YQ7zfb5z0UoTOJP8is1+uG29vTY7IrW1zPtkAuvx+ViHSqZ21ehP4FiB0 6wAmNWeKWAFbj7Ghzr7z5wyH9r8rrmzVptoy6qktoSL0o1x+NY0vPRsruDSIzAopidpb Ermw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Xjl+nKMauFdQMucZCGYFJNYkEcd8nmtmKLzonD2DvBw=; b=kKe40wOxdFleBY54HOsmfQHd9bjEjGMRx96AtZAhTL9thTOhT/iAFfAvSnlmaLlb3y DeyrzEn1PG9iO3SYWPyv/QdOjDl4luWAyRYXB9D6Yizkj9qbHkBk6dtcAZ6XuEm2ZWgr K1/WOeC4rCvxrYvTVlS+rVk6cqipPn/6M3udpQ39Msj0kHXvPZneA4h/dVK2djicyb2n +Rp34DnUh6ktLA2SaCsknwW3uHeWFsI+CX+X5Q3/YnjJDKWO+j/WxDajabFQvyqDnbpC 4sPffN+06h8ahtMStgCNHoPvEEFEPsEBaZfB7owYpQKrVWrFdI6qyXAPmGOltiiqf0aa XGkA== X-Gm-Message-State: APjAAAUpc6cdwH5yNgNpLcyrP5dbpQN0x+//G0FZh9GXaxuAeuUibgWr f2Wt1czwhkeTk4kHtRwxiLI= X-Google-Smtp-Source: APXvYqwMaogFax2o3ovVUIdITmUISWpPbOBLK2pKyeuy2P7AkzNI8a9Qu92CjJyVBKLh59igBUfoEg== X-Received: by 2002:a17:902:8d8d:: with SMTP id v13mr57498097plo.137.1568527117956; Sat, 14 Sep 2019 22:58:37 -0700 (PDT) Received: from localhost.localdomain ([2001:268:c144:8b8a:e7a2:82ca:6689:77bb]) by smtp.gmail.com with ESMTPSA id 22sm3696658pfj.139.2019.09.14.22.58.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 14 Sep 2019 22:58:37 -0700 (PDT) From: William Breathitt Gray To: jic23@jic23.retrosnub.co.uk Cc: linux-kernel@vger.kernel.org, linux-iio@vger.kernel.org, William Breathitt Gray Subject: [RFC 1/4] counter: Simplify the count_read and count_write callbacks Date: Sun, 15 Sep 2019 14:57:56 +0900 Message-Id: <20190915055759.408690-2-vilhelm.gray@gmail.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20190915055759.408690-1-vilhelm.gray@gmail.com> References: <20190915055759.408690-1-vilhelm.gray@gmail.com> MIME-Version: 1.0 Sender: linux-iio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org The count_read and count_write callbacks are simplified to pass val as unsigned long rather than as an opaque data structure. The opaque counter_count_read_value and counter_count_write_value structures, counter_count_value_type enum, and relevant counter_count_read_value_set and counter_count_write_value_get functions, are removed as they are no longer used. Signed-off-by: William Breathitt Gray --- drivers/counter/counter.c | 66 +++++---------------------------------- include/linux/counter.h | 43 +++---------------------- 2 files changed, 12 insertions(+), 97 deletions(-) diff --git a/drivers/counter/counter.c b/drivers/counter/counter.c index 106bc7180cd8..1d08f1437b1b 100644 --- a/drivers/counter/counter.c +++ b/drivers/counter/counter.c @@ -246,60 +246,6 @@ void counter_signal_read_value_set(struct counter_signal_read_value *const val, } EXPORT_SYMBOL_GPL(counter_signal_read_value_set); -/** - * counter_count_read_value_set - set counter_count_read_value data - * @val: counter_count_read_value structure to set - * @type: property Count data represents - * @data: Count data - * - * This function sets an opaque counter_count_read_value structure with the - * provided Count data. - */ -void counter_count_read_value_set(struct counter_count_read_value *const val, - const enum counter_count_value_type type, - void *const data) -{ - switch (type) { - case COUNTER_COUNT_POSITION: - val->len = sprintf(val->buf, "%lu\n", *(unsigned long *)data); - break; - default: - val->len = 0; - } -} -EXPORT_SYMBOL_GPL(counter_count_read_value_set); - -/** - * counter_count_write_value_get - get counter_count_write_value data - * @data: Count data - * @type: property Count data represents - * @val: counter_count_write_value structure containing data - * - * This function extracts Count data from the provided opaque - * counter_count_write_value structure and stores it at the address provided by - * @data. - * - * RETURNS: - * 0 on success, negative error number on failure. - */ -int counter_count_write_value_get(void *const data, - const enum counter_count_value_type type, - const struct counter_count_write_value *const val) -{ - int err; - - switch (type) { - case COUNTER_COUNT_POSITION: - err = kstrtoul(val->buf, 0, data); - if (err) - return err; - break; - } - - return 0; -} -EXPORT_SYMBOL_GPL(counter_count_write_value_get); - struct counter_attr_parm { struct counter_device_attr_group *group; const char *prefix; @@ -788,13 +734,13 @@ static ssize_t counter_count_show(struct device *dev, const struct counter_count_unit *const component = devattr->component; struct counter_count *const count = component->count; int err; - struct counter_count_read_value val = { .buf = buf }; + unsigned long val; err = counter->ops->count_read(counter, count, &val); if (err) return err; - return val.len; + return sprintf(buf, "%lu\n", val); } static ssize_t counter_count_store(struct device *dev, @@ -806,9 +752,13 @@ static ssize_t counter_count_store(struct device *dev, const struct counter_count_unit *const component = devattr->component; struct counter_count *const count = component->count; int err; - struct counter_count_write_value val = { .buf = buf }; + unsigned long val; + + err = kstrtoul(buf, 0, &val); + if (err) + return err; - err = counter->ops->count_write(counter, count, &val); + err = counter->ops->count_write(counter, count, val); if (err) return err; diff --git a/include/linux/counter.h b/include/linux/counter.h index a061cdcdef7c..7e40796598a6 100644 --- a/include/linux/counter.h +++ b/include/linux/counter.h @@ -300,24 +300,6 @@ struct counter_signal_read_value { size_t len; }; -/** - * struct counter_count_read_value - Opaque Count read value - * @buf: string representation of Count read value - * @len: length of string in @buf - */ -struct counter_count_read_value { - char *buf; - size_t len; -}; - -/** - * struct counter_count_write_value - Opaque Count write value - * @buf: string representation of Count write value - */ -struct counter_count_write_value { - const char *buf; -}; - /** * struct counter_ops - Callbacks from driver * @signal_read: optional read callback for Signal attribute. The read @@ -328,15 +310,10 @@ struct counter_count_write_value { * signal_read callback. * @count_read: optional read callback for Count attribute. The read * value of the respective Count should be passed back via - * the val parameter. val points to an opaque type which - * should be set only by calling the - * counter_count_read_value_set function from within the - * count_read callback. + * the val parameter. * @count_write: optional write callback for Count attribute. The write * value for the respective Count is passed in via the val - * parameter. val points to an opaque type which should be - * accessed only by calling the - * counter_count_write_value_get function. + * parameter. * @function_get: function to get the current count function mode. Returns * 0 on success and negative error code on error. The index * of the respective Count's returned function mode should @@ -357,11 +334,9 @@ struct counter_ops { struct counter_signal *signal, struct counter_signal_read_value *val); int (*count_read)(struct counter_device *counter, - struct counter_count *count, - struct counter_count_read_value *val); + struct counter_count *count, unsigned long *val); int (*count_write)(struct counter_device *counter, - struct counter_count *count, - struct counter_count_write_value *val); + struct counter_count *count, unsigned long val); int (*function_get)(struct counter_device *counter, struct counter_count *count, size_t *function); int (*function_set)(struct counter_device *counter, @@ -486,19 +461,9 @@ enum counter_signal_value_type { COUNTER_SIGNAL_LEVEL = 0 }; -enum counter_count_value_type { - COUNTER_COUNT_POSITION = 0, -}; - void counter_signal_read_value_set(struct counter_signal_read_value *const val, const enum counter_signal_value_type type, void *const data); -void counter_count_read_value_set(struct counter_count_read_value *const val, - const enum counter_count_value_type type, - void *const data); -int counter_count_write_value_get(void *const data, - const enum counter_count_value_type type, - const struct counter_count_write_value *const val); int counter_register(struct counter_device *const counter); void counter_unregister(struct counter_device *const counter); From patchwork Sun Sep 15 05:57:57 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: William Breathitt Gray X-Patchwork-Id: 11145821 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 8ED8117E6 for ; Sun, 15 Sep 2019 05:58:55 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 6DEE321479 for ; Sun, 15 Sep 2019 05:58:55 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="XqXxUFIa" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726374AbfIOF6p (ORCPT ); Sun, 15 Sep 2019 01:58:45 -0400 Received: from mail-pg1-f193.google.com ([209.85.215.193]:38710 "EHLO mail-pg1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726252AbfIOF6o (ORCPT ); Sun, 15 Sep 2019 01:58:44 -0400 Received: by mail-pg1-f193.google.com with SMTP id d10so17471756pgo.5; Sat, 14 Sep 2019 22:58:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=y1oWvoEblal6EMi7QOA2PERi1JLfxSYAnMiBp+6pVPo=; b=XqXxUFIabHtNEQs/ODV+krGKdOu/9F07NDIDgMqw5TRtza8eGpItgH3mr+HlR0UoH7 +5gK90Qqvqyw+qdZBdJPzQtgDZBCQuHdrmrP7w39acKFTe1zbXXhtzkIvI8DUbiDNhCA e4+7Kg3ZGTHTVmsk6kHwtnDPgZToBJFpWrbd2cmh/gtXilEOGXWjjyap5O1lc67yi9m2 qHwkpCeLj46hZoQnaDheYrHf3fB2lwxQFmZ1dqz7O0pyqH6y2zuxSqmvvomz9+1skyMI it+Mt0wDLqm/usj/uNASFRcBRLw5ccC7dj1w/QnZLnFe3IEpNPLdk0SpUrdKqDLcTTzr 0N1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=y1oWvoEblal6EMi7QOA2PERi1JLfxSYAnMiBp+6pVPo=; b=MY/FIS9NJUOcFevWZZZRXVZ5G1IryWjZEZWA6QZA6XW1vFu+/mENxZ4Lw8kpkfhWiM 1dTSW9GV+I4UsvInjHeShF7TYXYg+eR+06lEFwwa2QLOKD3C1Bwvq085wIZUQBgn2Iv9 6WIzB8KZVw3vPf9wilncdI10tKfa7P7SbdcnjsUtaf90l9+LLjG+SibMob4TRH8MxIaG IPkk4Xh3XVM20e5M+sqQCPcksWMRX3HCR8BkWyugwwbxMFrGSudJZMBWCp7TZ5pndBKY 0KKJvQS0xoFLyYkHM8FIZS8zIhnIBU3YuLIoO8vnGH2mJrwfwTvV3Ccw1Hoj0DkvvwFT FM3w== X-Gm-Message-State: APjAAAXs0F2b6t0X9Iy4AQEy0qsfmoJqoqY97boSGCaXAIbM8NAWV6kr YR62MjtyIL5Oay4B6yVu+TM= X-Google-Smtp-Source: APXvYqxOvken+mjuq8Gu3saW8bcynzHFCLF3r7N2C3h58KecuVEdCIzVmp7i8XAPVMgxQ3rIKRIiNA== X-Received: by 2002:a63:2346:: with SMTP id u6mr18346540pgm.304.1568527121195; Sat, 14 Sep 2019 22:58:41 -0700 (PDT) Received: from localhost.localdomain ([2001:268:c144:8b8a:e7a2:82ca:6689:77bb]) by smtp.gmail.com with ESMTPSA id 22sm3696658pfj.139.2019.09.14.22.58.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 14 Sep 2019 22:58:40 -0700 (PDT) From: William Breathitt Gray To: jic23@jic23.retrosnub.co.uk Cc: linux-kernel@vger.kernel.org, linux-iio@vger.kernel.org, William Breathitt Gray Subject: [RFC 2/4] counter: Simplify the signal_read callback Date: Sun, 15 Sep 2019 14:57:57 +0900 Message-Id: <20190915055759.408690-3-vilhelm.gray@gmail.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20190915055759.408690-1-vilhelm.gray@gmail.com> References: <20190915055759.408690-1-vilhelm.gray@gmail.com> MIME-Version: 1.0 Sender: linux-iio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org The signal_read callback is simplified to pass val as a counter_signal_val enum rather than as an opaque data structure. The opaque counter_signal_read_value structure and relevant counter_signal_read_value_set function are removed as they are no longer used. In addition, the counter_signal_level enum is replaced by the similar counter_signal_value enum. Signed-off-by: William Breathitt Gray --- drivers/counter/counter.c | 35 +++++++---------------------------- include/linux/counter.h | 31 +++++-------------------------- 2 files changed, 12 insertions(+), 54 deletions(-) diff --git a/drivers/counter/counter.c b/drivers/counter/counter.c index 1d08f1437b1b..6a683d086008 100644 --- a/drivers/counter/counter.c +++ b/drivers/counter/counter.c @@ -220,32 +220,6 @@ ssize_t counter_device_enum_available_read(struct counter_device *counter, } EXPORT_SYMBOL_GPL(counter_device_enum_available_read); -static const char *const counter_signal_level_str[] = { - [COUNTER_SIGNAL_LEVEL_LOW] = "low", - [COUNTER_SIGNAL_LEVEL_HIGH] = "high" -}; - -/** - * counter_signal_read_value_set - set counter_signal_read_value data - * @val: counter_signal_read_value structure to set - * @type: property Signal data represents - * @data: Signal data - * - * This function sets an opaque counter_signal_read_value structure with the - * provided Signal data. - */ -void counter_signal_read_value_set(struct counter_signal_read_value *const val, - const enum counter_signal_value_type type, - void *const data) -{ - if (type == COUNTER_SIGNAL_LEVEL) - val->len = sprintf(val->buf, "%s\n", - counter_signal_level_str[*(enum counter_signal_level *)data]); - else - val->len = 0; -} -EXPORT_SYMBOL_GPL(counter_signal_read_value_set); - struct counter_attr_parm { struct counter_device_attr_group *group; const char *prefix; @@ -315,6 +289,11 @@ struct counter_signal_unit { struct counter_signal *signal; }; +static const char *const counter_signal_value_str[] = { + [COUNTER_SIGNAL_LOW] = "low", + [COUNTER_SIGNAL_HIGH] = "high" +}; + static ssize_t counter_signal_show(struct device *dev, struct device_attribute *attr, char *buf) { @@ -323,13 +302,13 @@ static ssize_t counter_signal_show(struct device *dev, const struct counter_signal_unit *const component = devattr->component; struct counter_signal *const signal = component->signal; int err; - struct counter_signal_read_value val = { .buf = buf }; + enum counter_signal_value val; err = counter->ops->signal_read(counter, signal, &val); if (err) return err; - return val.len; + return sprintf(buf, "%s\n", counter_signal_value_str[val]); } struct counter_name_unit { diff --git a/include/linux/counter.h b/include/linux/counter.h index 7e40796598a6..32fb4d8cc3fd 100644 --- a/include/linux/counter.h +++ b/include/linux/counter.h @@ -290,24 +290,16 @@ struct counter_device_state { const struct attribute_group **groups; }; -/** - * struct counter_signal_read_value - Opaque Signal read value - * @buf: string representation of Signal read value - * @len: length of string in @buf - */ -struct counter_signal_read_value { - char *buf; - size_t len; +enum counter_signal_value { + COUNTER_SIGNAL_LOW = 0, + COUNTER_SIGNAL_HIGH }; /** * struct counter_ops - Callbacks from driver * @signal_read: optional read callback for Signal attribute. The read * value of the respective Signal should be passed back via - * the val parameter. val points to an opaque type which - * should be set only by calling the - * counter_signal_read_value_set function from within the - * signal_read callback. + * the val parameter. * @count_read: optional read callback for Count attribute. The read * value of the respective Count should be passed back via * the val parameter. @@ -332,7 +324,7 @@ struct counter_signal_read_value { struct counter_ops { int (*signal_read)(struct counter_device *counter, struct counter_signal *signal, - struct counter_signal_read_value *val); + enum counter_signal_value *val); int (*count_read)(struct counter_device *counter, struct counter_count *count, unsigned long *val); int (*count_write)(struct counter_device *counter, @@ -452,19 +444,6 @@ struct counter_device { void *priv; }; -enum counter_signal_level { - COUNTER_SIGNAL_LEVEL_LOW = 0, - COUNTER_SIGNAL_LEVEL_HIGH -}; - -enum counter_signal_value_type { - COUNTER_SIGNAL_LEVEL = 0 -}; - -void counter_signal_read_value_set(struct counter_signal_read_value *const val, - const enum counter_signal_value_type type, - void *const data); - int counter_register(struct counter_device *const counter); void counter_unregister(struct counter_device *const counter); int devm_counter_register(struct device *dev, From patchwork Sun Sep 15 05:57:58 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: William Breathitt Gray X-Patchwork-Id: 11145823 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id C33081800 for ; Sun, 15 Sep 2019 05:58:55 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 9871B21479 for ; Sun, 15 Sep 2019 05:58:55 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ImJxU2R0" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726428AbfIOF6r (ORCPT ); Sun, 15 Sep 2019 01:58:47 -0400 Received: from mail-pg1-f170.google.com ([209.85.215.170]:34393 "EHLO mail-pg1-f170.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726252AbfIOF6q (ORCPT ); Sun, 15 Sep 2019 01:58:46 -0400 Received: by mail-pg1-f170.google.com with SMTP id n9so17486253pgc.1; Sat, 14 Sep 2019 22:58:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=X0YlaBg0eWRFmg01LcYcEakBboU2udItKz/WvLmsstE=; b=ImJxU2R0GJ4SvUPU3OFTOmBFH8Vpam8zm/yXtHC20IxUjwM0MLxEJfuiGwZWr7cCsc Ftp7v4GDahPsmeBzLJYSwcOppIQiN7/PE8/cpSzup8pN67YsbCZL95sD1Kz5DAiFlUS9 TjwDC5vt4dhTHb/VidMUQM9ETR0cmvR9XuEcUJevtbtK10zHlMR4M7XM2jTfP0NyTx/+ 7UkUMS9jFCwCF0ynDF6o35WnVYaGoAYSijxQEbr7CtBrK2ynyikR85DPJIne828DffMB /duIRbIeVCg92r8hX/vV3RFnjEXuTOrWHcoVKz6aRM+kNhLkH0LpviTuZng+hgPqWQoF 4rkA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=X0YlaBg0eWRFmg01LcYcEakBboU2udItKz/WvLmsstE=; b=pmPjdQaD+404kOISXapF79E94siGSN++dcxrJEZZc+XWJpS7cx0a1ymn7WyTD3ciR1 7Y2PniQrnBFfScrPRHupy1rK+/CIXIOXKITJ85V/3973oPVb+IbnmYutYx8xYLCc9Cst b+5B7TppBnWkC2+RcRcveTtCW9tBkqbofEhCeVnjCUB9pkmvKDkhp91w+zuNIfAjmfw7 ukLocQ1pkGisvO+ffDjhuCwHpFM+RN20tM67EA+8r1aLKzovOMTU5CzqE35O/76sMAXA 4mrxJH8drrbAgr24lROcKjvX5vkSIModTFDVt34TaQ/l6H7e8MwZpfdijtFZxmr/TbTf R5dQ== X-Gm-Message-State: APjAAAVJ+eGDKYgyt+lJskkel30mgfNJg5O/0oWcIef0tcS953nvxSGq t3jNKaJuW+IDWw9OtM16glI= X-Google-Smtp-Source: APXvYqzj5kSNmAivQcPNxvF+89CgdhtEibJZP+YyQc+exlQwth5wjcsgepb95Cx8nx+30MFqZOl6aA== X-Received: by 2002:a63:6097:: with SMTP id u145mr51395010pgb.227.1568527124005; Sat, 14 Sep 2019 22:58:44 -0700 (PDT) Received: from localhost.localdomain ([2001:268:c144:8b8a:e7a2:82ca:6689:77bb]) by smtp.gmail.com with ESMTPSA id 22sm3696658pfj.139.2019.09.14.22.58.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 14 Sep 2019 22:58:43 -0700 (PDT) From: William Breathitt Gray To: jic23@jic23.retrosnub.co.uk Cc: linux-kernel@vger.kernel.org, linux-iio@vger.kernel.org, William Breathitt Gray Subject: [RFC 3/4] docs: driver-api: generic-counter: Update Count and Signal data types Date: Sun, 15 Sep 2019 14:57:58 +0900 Message-Id: <20190915055759.408690-4-vilhelm.gray@gmail.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20190915055759.408690-1-vilhelm.gray@gmail.com> References: <20190915055759.408690-1-vilhelm.gray@gmail.com> MIME-Version: 1.0 Sender: linux-iio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org Count data is now always represented as an unsigned integer, while Signal data is either SIGNAL_LOW or SIGNAL_HIGH. Signed-off-by: William Breathitt Gray --- Documentation/driver-api/generic-counter.rst | 22 +++++++------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/Documentation/driver-api/generic-counter.rst b/Documentation/driver-api/generic-counter.rst index 8382f01a53e3..161652fc1025 100644 --- a/Documentation/driver-api/generic-counter.rst +++ b/Documentation/driver-api/generic-counter.rst @@ -39,10 +39,7 @@ There are three core components to a counter: COUNT ----- A Count represents the count data for a set of Signals. The Generic -Counter interface provides the following available count data types: - -* COUNT_POSITION: - Unsigned integer value representing position. +Counter interface represents the count data as an unsigned integer. A Count has a count function mode which represents the update behavior for the count data. The Generic Counter interface provides the following @@ -93,19 +90,16 @@ SIGNAL A Signal represents a counter input data; this is the input data that is evaluated by the counter to determine the count data; e.g. a quadrature signal output line of a rotary encoder. Not all counter devices provide -user access to the Signal data. - -The Generic Counter interface provides the following available signal -data types for when the Signal data is available for user access: +user access to the Signal data, so exposure is optional for drivers. -* SIGNAL_LEVEL: - Signal line state level. The following states are possible: +When the Signal data is available for user access, the Generic Counter +interface provides the following available signal values: - - SIGNAL_LEVEL_LOW: - Signal line is in a low state. +* SIGNAL_LOW: + Signal line is in a low state. - - SIGNAL_LEVEL_HIGH: - Signal line is in a high state. +* SIGNAL_HIGH: + Signal line is in a high state. A Signal may be associated with one or more Counts. From patchwork Sun Sep 15 05:57:59 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: William Breathitt Gray X-Patchwork-Id: 11145825 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id EDBBB1746 for ; Sun, 15 Sep 2019 05:58:55 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id CCA9921479 for ; Sun, 15 Sep 2019 05:58:55 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="g23mLma/" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726530AbfIOF6v (ORCPT ); Sun, 15 Sep 2019 01:58:51 -0400 Received: from mail-pl1-f195.google.com ([209.85.214.195]:33159 "EHLO mail-pl1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726514AbfIOF6s (ORCPT ); Sun, 15 Sep 2019 01:58:48 -0400 Received: by mail-pl1-f195.google.com with SMTP id t11so15088262plo.0; Sat, 14 Sep 2019 22:58:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=LsvbpETHylsMeIUTajAZCGUDIJ8fG7jkQ6/Zagal4f4=; b=g23mLma/2a6TaARGhUpC7gc6bpoYubqK0V9iy2PkfkRtOXM1F5gvrxfIiXhJBme5NI WV0cMLB3tZCevcXhcGXgFfhCz19PeWIau37uiY1B0OEEAyvnn+uVAmCuVZid9Uqqe+A1 2MU8ASRmN8yamgq9wotT2olJRnlhRMtwQTl2TyyM79EP0ioLdj3EXiOtlx98xhN2m8H3 ICvvZuF6lEhpVZ3b52ZBoBbOe8QeaJR0iws23FIumQKGOqIhznsh+H0K3jxbIVt7AvKd 542a81zArZr3+QeGwmOsAGeL8FtdVAHI8iWzT4lzNMJPeIpySFm1aM6EXt5c7q3irRsQ f+yQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=LsvbpETHylsMeIUTajAZCGUDIJ8fG7jkQ6/Zagal4f4=; b=QEpzJHc6C4R75VrsMqrONnvU37jE8By4XE2+WiSDxA2X1qjHF5HSKLa8ihBL9kcaiA kmSmiMHUnIcltzHP8n88q306hX24LfJuEytzDxw5hWCL5R4v+Hi9Bm63T2tO8l5vqYCB MMA6MP13Kz55gpomYVwA87EPYLVeFAqqW8rWab2VjfMRDQyteMVy/ztwCNCexMPZpdXE 5KtBuU7jOY3/4gtnhQrUXosjn9Fp42FApulEprRa21UuuP9ahoBD6SmQ9gTzjamm0LiK wQ8nUpUGW03gyrrQL8F95J45FuS6e/QjnmmAfUunK1s59bg/TC6wN4kGnE/nsmhg6rnF 4xzA== X-Gm-Message-State: APjAAAXoe6WpOLJxqtYyycvHgl/OyHCsZoEP1MFrHoX2MqYBAdLh7Xj0 /we98TBANEg5Q/GKoBMqk44= X-Google-Smtp-Source: APXvYqwE0q5NRJrimFW4H90K69yTDrGNMv6VHcHSbTnWP2cDMJiiW65zcneGUxGeO/WAa8Oh297njQ== X-Received: by 2002:a17:902:b607:: with SMTP id b7mr54622951pls.38.1568527127485; Sat, 14 Sep 2019 22:58:47 -0700 (PDT) Received: from localhost.localdomain ([2001:268:c144:8b8a:e7a2:82ca:6689:77bb]) by smtp.gmail.com with ESMTPSA id 22sm3696658pfj.139.2019.09.14.22.58.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 14 Sep 2019 22:58:46 -0700 (PDT) From: William Breathitt Gray To: jic23@jic23.retrosnub.co.uk Cc: linux-kernel@vger.kernel.org, linux-iio@vger.kernel.org, William Breathitt Gray Subject: [RFC 4/4] counter: 104-quad-8: Update count_read/count_write/signal_read callbacks Date: Sun, 15 Sep 2019 14:57:59 +0900 Message-Id: <20190915055759.408690-5-vilhelm.gray@gmail.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20190915055759.408690-1-vilhelm.gray@gmail.com> References: <20190915055759.408690-1-vilhelm.gray@gmail.com> MIME-Version: 1.0 Sender: linux-iio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org The count_read and count_write callbacks pass unsigned long now, while the signal_read callback passes an enum counter_signal_value. Signed-off-by: William Breathitt Gray --- drivers/counter/104-quad-8.c | 33 ++++++++++----------------------- 1 file changed, 10 insertions(+), 23 deletions(-) diff --git a/drivers/counter/104-quad-8.c b/drivers/counter/104-quad-8.c index 00b113f4b958..17e67a84777d 100644 --- a/drivers/counter/104-quad-8.c +++ b/drivers/counter/104-quad-8.c @@ -562,11 +562,10 @@ static const struct iio_chan_spec quad8_channels[] = { }; static int quad8_signal_read(struct counter_device *counter, - struct counter_signal *signal, struct counter_signal_read_value *val) + struct counter_signal *signal, enum counter_signal_value *val) { const struct quad8_iio *const priv = counter->priv; unsigned int state; - enum counter_signal_level level; /* Only Index signal levels can be read */ if (signal->id < 16) @@ -575,22 +574,19 @@ static int quad8_signal_read(struct counter_device *counter, state = inb(priv->base + QUAD8_REG_INDEX_INPUT_LEVELS) & BIT(signal->id - 16); - level = (state) ? COUNTER_SIGNAL_LEVEL_HIGH : COUNTER_SIGNAL_LEVEL_LOW; - - counter_signal_read_value_set(val, COUNTER_SIGNAL_LEVEL, &level); + *val = (state) ? COUNTER_SIGNAL_HIGH : COUNTER_SIGNAL_LOW; return 0; } static int quad8_count_read(struct counter_device *counter, - struct counter_count *count, struct counter_count_read_value *val) + struct counter_count *count, unsigned long *val) { const struct quad8_iio *const priv = counter->priv; const int base_offset = priv->base + 2 * count->id; unsigned int flags; unsigned int borrow; unsigned int carry; - unsigned long position; int i; flags = inb(base_offset + 1); @@ -598,36 +594,27 @@ static int quad8_count_read(struct counter_device *counter, carry = !!(flags & QUAD8_FLAG_CT); /* Borrow XOR Carry effectively doubles count range */ - position = (unsigned long)(borrow ^ carry) << 24; + *val = (unsigned long)(borrow ^ carry) << 24; /* Reset Byte Pointer; transfer Counter to Output Latch */ outb(QUAD8_CTR_RLD | QUAD8_RLD_RESET_BP | QUAD8_RLD_CNTR_OUT, base_offset + 1); for (i = 0; i < 3; i++) - position |= (unsigned long)inb(base_offset) << (8 * i); - - counter_count_read_value_set(val, COUNTER_COUNT_POSITION, &position); + *val |= (unsigned long)inb(base_offset) << (8 * i); return 0; } static int quad8_count_write(struct counter_device *counter, - struct counter_count *count, struct counter_count_write_value *val) + struct counter_count *count, unsigned long val) { const struct quad8_iio *const priv = counter->priv; const int base_offset = priv->base + 2 * count->id; - int err; - unsigned long position; int i; - err = counter_count_write_value_get(&position, COUNTER_COUNT_POSITION, - val); - if (err) - return err; - /* Only 24-bit values are supported */ - if (position > 0xFFFFFF) + if (val > 0xFFFFFF) return -EINVAL; /* Reset Byte Pointer */ @@ -635,7 +622,7 @@ static int quad8_count_write(struct counter_device *counter, /* Counter can only be set via Preset Register */ for (i = 0; i < 3; i++) - outb(position >> (8 * i), base_offset); + outb(val >> (8 * i), base_offset); /* Transfer Preset Register to Counter */ outb(QUAD8_CTR_RLD | QUAD8_RLD_PRESET_CNTR, base_offset + 1); @@ -644,9 +631,9 @@ static int quad8_count_write(struct counter_device *counter, outb(QUAD8_CTR_RLD | QUAD8_RLD_RESET_BP, base_offset + 1); /* Set Preset Register back to original value */ - position = priv->preset[count->id]; + val = priv->preset[count->id]; for (i = 0; i < 3; i++) - outb(position >> (8 * i), base_offset); + outb(val >> (8 * i), base_offset); /* Reset Borrow, Carry, Compare, and Sign flags */ outb(QUAD8_CTR_RLD | QUAD8_RLD_RESET_FLAGS, base_offset + 1);