Received: by 2002:a5b:505:0:0:0:0:0 with SMTP id o5csp2203122ybp; Sat, 5 Oct 2019 07:34:47 -0700 (PDT) X-Google-Smtp-Source: APXvYqxPxBrMo7gusWoyhlKlW8zuPQPnNty5epFgl2R2gj2gtLepA1SCzIEJJI6OKt5deV0EtqgS X-Received: by 2002:a17:906:e92:: with SMTP id p18mr16860913ejf.308.1570286086955; Sat, 05 Oct 2019 07:34:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1570286086; cv=none; d=google.com; s=arc-20160816; b=awvBBXeoymn700k1W09wMM2Vg4JeV5gZrXfGgAzWn+BlL/QO4mCIW78mb36Vb/moIE 4C3QlCPbdaOzcfq4evoOwJF6J9spow8zBcBin/gY/3+ekZolRhV70fxmMOaJXV94shlu BIl6V7REgGEtbHISzaOd3OLD0uNc2UMfMT5R2ZnLWdzQEzIo07vfT69F1UOx3uHiHb0/ lx+MlFDhumeN4D9PtWFHOn/W6lUURCoYHrVkdeJ4NL5xqUFaH8TdY4FRZSzziVqHVNjO Y4dqqFgbDcXrbgMY8DGEmxJ5qJEzzrAypxvvVPuYbpTHqbldD6xYAq5yLrn+8s29zmxY qvuA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:subject:cc:to:from:date :dkim-signature; bh=YvR+gv+ULgpxrwFFgqpCCAIGx3or+cHYVnPNfPUDBv0=; b=gFnNzPkwbGkZV+ASDnofabH6vqS2lIH3f5sv/AV0nSF+kJNewQGUACxb/cFTDawb+y 6D9fyGMssc0ROcZr03shyIT79eqSJ8yPL+b/3YC1BrKWwO+mjq9umbYUGbHZzupbc21F G4qiKWS6PG0Ebw4cqjxff8AgNaVr3R6d+JifoWOVS3mBvQsFu1VVC05YkXezc3VM2SxR 1UMIVBg48Nd9tQHqgPrQeU1xJU7p8g/1ELxaKVxCSy+6EtykQs929ug/S5uSGCVZUX7w UMbZwFFgi6IUqIcSS40j1Ss+Ex8Z1OTJc0q2PkadNaqqlRRB0a6KCFpB+t91K5gBm/mI eDng== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=tYD3tKIX; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id h19si4711243ejd.142.2019.10.05.07.34.23; Sat, 05 Oct 2019 07:34:46 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=tYD3tKIX; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728404AbfJEOdO (ORCPT + 99 others); Sat, 5 Oct 2019 10:33:14 -0400 Received: from mail.kernel.org ([198.145.29.99]:40642 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726269AbfJEOdO (ORCPT ); Sat, 5 Oct 2019 10:33:14 -0400 Received: from archlinux (cpc149474-cmbg20-2-0-cust94.5-4.cable.virginm.net [82.4.196.95]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 3C353218AC; Sat, 5 Oct 2019 14:33:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1570285993; bh=1E6FbiJ9RjkjVUjC0fOSMFfb/6RKb7Y9Sxoe+r1QIJE=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=tYD3tKIXuCTMl4xJnOV6NiYaq2BoYVoY3VZIpxrDTB4BTY8BLBD5v4kfr/Dk2IQrh Ubb+jT6aE9eWjLM0XYtc+sWqGZ1gkcQZOsnjqeTcRpQ6oOiX3Uo6oEKW3cVlsnVX3G Kuhjep/UNYsWXqPhpUUqWKScghfav5Cy87ChbBmA= Date: Sat, 5 Oct 2019 15:33:08 +0100 From: Jonathan Cameron To: William Breathitt Gray Cc: linux-kernel@vger.kernel.org, linux-iio@vger.kernel.org, patrick.havelange@essensium.com, fabrice.gasnier@st.com, mcoquelin.stm32@gmail.com, alexandre.torgue@st.com, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, benjamin.gaignard@linaro.org Subject: Re: [PATCH v3 0/2] Simplify count_read/count_write/signal_read Message-ID: <20191005153255.4290ce81@archlinux> In-Reply-To: References: X-Mailer: Claws Mail 3.17.4 (GTK+ 2.24.32; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi William, This all makes sense to me. Do you want to wait for some more reviews or should I pick them up now through IIO? We are really early in the cycle so plenty of time, unless there are new drivers coming you want to use these from the start. Thanks, Jonathan On Wed, 18 Sep 2019 23:22:44 +0900 William Breathitt Gray wrote: > Changes in v3: > - Squash code changes to single patch to avoid compilation error > > The changes in this patchset will not affect the userspace interface. > Rather, these changes are intended to simplify the kernelspace Counter > callbacks for counter device driver authors. > > The following main changes are proposed: > > * Retire the opaque counter_count_read_value/counter_count_write_value > structures and simply represent count data as an unsigned integer. > > * Retire the opaque counter_signal_read_value structure and represent > Signal data as a counter_signal_value enum. > > These changes should reduce some complexity and code in the use and > implementation of the count_read, count_write, and signal_read > callbacks. > > The opaque structures for Count data and Signal data were introduced > originally in anticipation of supporting various representations of > counter data (e.g. arbitrary-precision tallies, floating-point spherical > coordinate positions, etc). However, with the counter device drivers > that have appeared, it's become apparent that utilizing opaque > structures in kernelspace is not the best approach to take. > > I believe it is best to let userspace applications decide how to > interpret the count data they receive. There are a couple of reasons why > it would be good to do so: > > * Users use their devices in unexpected ways. > > For example, a quadrature encoder counter device is typically used to > keep track of the position of a motor, but a user could set the device > in a pulse-direction mode and instead use it to count sporadic rising > edges from an arbitrary signal line unrelated to positioning. Users > should have the freedom to decide what their data represents. > > * Most counter devices represent data as unsigned integers anyway. > > For example, whether the device is a tally counter or position > counter, the count data is represented to the user as an unsigned > integer value. So specifying that one device is representing tallies > while the other specifies positions does not provide much utility from > an interface perspective. > > For these reasons, the count_read and count_write callbacks have been > redefined to pass count data directly as unsigned long instead of passed > via opaque structures: > > count_read(struct counter_device *counter, > struct counter_count *count, unsigned long *val); > count_write(struct counter_device *counter, > struct counter_count *count, unsigned long val); > > Similarly, the signal_read is redefined to pass Signal data directly as > a counter_signal_value enum instead of via an opaque structure: > > signal_read(struct counter_device *counter, > struct counter_signal *signal, > enum counter_signal_value *val); > > The counter_signal_value enum is simply the counter_signal_level enum > redefined to remove the references to the Signal data "level" data type. > > William Breathitt Gray (2): > counter: Simplify the count_read and count_write callbacks > docs: driver-api: generic-counter: Update Count and Signal data types > > Documentation/driver-api/generic-counter.rst | 22 ++-- > drivers/counter/104-quad-8.c | 33 ++---- > drivers/counter/counter.c | 101 +++---------------- > drivers/counter/ftm-quaddec.c | 14 +-- > drivers/counter/stm32-lptimer-cnt.c | 5 +- > drivers/counter/stm32-timer-cnt.c | 17 +--- > include/linux/counter.h | 74 ++------------ > 7 files changed, 53 insertions(+), 213 deletions(-) >