All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jonathan Cameron <jic23@kernel.org>
To: William Breathitt Gray <vilhelm.gray@gmail.com>
Cc: kernel@pengutronix.de, linux-stm32@st-md-mailman.stormreply.com,
	a.fatoum@pengutronix.de, kamel.bouhara@bootlin.com,
	gwendal@chromium.org, alexandre.belloni@bootlin.com,
	david@lechnology.com, linux-iio@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, syednwaris@gmail.com,
	patrick.havelange@essensium.com, fabrice.gasnier@st.com,
	mcoquelin.stm32@gmail.com, alexandre.torgue@st.com,
	o.rempel@pengutronix.de, Dan Carpenter <dan.carpenter@oracle.com>
Subject: Re: [PATCH v8 13/22] counter: Internalize sysfs interface code
Date: Sun, 14 Feb 2021 17:32:07 +0000	[thread overview]
Message-ID: <20210214173207.19fc810b@archlinux> (raw)
In-Reply-To: <3fc2580af0efd6312a64a0e107bd6fa758f0d466.1613131238.git.vilhelm.gray@gmail.com>

On Fri, 12 Feb 2021 21:13:37 +0900
William Breathitt Gray <vilhelm.gray@gmail.com> wrote:

> This is a reimplementation of the Generic Counter driver interface.
> There are no modifications to the Counter subsystem userspace interface,
> so existing userspace applications should continue to run seamlessly.
> 
> The purpose of this patch is to internalize the sysfs interface code
> among the various counter drivers into a shared module. Counter drivers
> pass and take data natively (i.e. u8, u64, etc.) and the shared counter
> module handles the translation between the sysfs interface and the
> device drivers. This guarantees a standard userspace interface for all
> counter drivers, and helps generalize the Generic Counter driver ABI in
> order to support the Generic Counter chrdev interface (introduced in a
> subsequent patch) without significant changes to the existing counter
> drivers.
> 
> Note, Counter device registration is the same as before: drivers
> populate a struct counter_device with components and callbacks, then
> pass the structure to the devm_counter_register function. However,
> what's different now is how the Counter subsystem code handles this
> registration internally.
> 
> Whereas before callbacks would interact directly with sysfs data, this
> interaction is now abstracted and instead callbacks interact with native
> C data types. The counter_comp structure forms the basis for Counter
> extensions.
> 
> The counter-sysfs.c file contains the code to parse through the
> counter_device structure and register the requested components and
> extensions. Attributes are created and populated based on type, with
> respective translation functions to handle the mapping between sysfs and
> the counter driver callbacks.
> 
> The translation performed for each attribute is straightforward: the
> attribute type and data is parsed from the counter_attribute structure,
> the respective counter driver read/write callback is called, and sysfs
> I/O is handled before or after the driver read/write function is called.
> 
> Cc: Syed Nayyar Waris <syednwaris@gmail.com>
> Cc: Patrick Havelange <patrick.havelange@essensium.com>
> Cc: Kamel Bouhara <kamel.bouhara@bootlin.com>
> Cc: Fabrice Gasnier <fabrice.gasnier@st.com>
> Cc: Maxime Coquelin <mcoquelin.stm32@gmail.com>
> Cc: Alexandre Torgue <alexandre.torgue@st.com>
> Cc: David Lechner <david@lechnology.com>
> Cc: Dan Carpenter <dan.carpenter@oracle.com>
> Signed-off-by: William Breathitt Gray <vilhelm.gray@gmail.com>

A few minor comments inline.

This set is still huge, so I've only looked at the core code
for this version.  Hopefully driver maintainers will do the thorough
review of how it effects the individual drivers!

Jonathan

> ---
>  MAINTAINERS                             |    1 -
>  drivers/counter/104-quad-8.c            |  449 +++----
>  drivers/counter/Makefile                |    1 +
>  drivers/counter/counter-core.c          |  153 +++
>  drivers/counter/counter-sysfs.c         |  833 +++++++++++++
>  drivers/counter/counter-sysfs.h         |   13 +
>  drivers/counter/counter.c               | 1496 -----------------------
>  drivers/counter/ftm-quaddec.c           |   56 +-
>  drivers/counter/microchip-tcb-capture.c |   87 +-
>  drivers/counter/stm32-lptimer-cnt.c     |  164 ++-
>  drivers/counter/stm32-timer-cnt.c       |  142 +--
>  drivers/counter/ti-eqep.c               |  211 ++--
>  include/linux/counter.h                 |  631 +++++-----
>  include/linux/counter_enum.h            |   45 -
>  14 files changed, 1816 insertions(+), 2466 deletions(-)
>  create mode 100644 drivers/counter/counter-core.c
>  create mode 100644 drivers/counter/counter-sysfs.c
>  create mode 100644 drivers/counter/counter-sysfs.h
>  delete mode 100644 drivers/counter/counter.c
>  delete mode 100644 include/linux/counter_enum.h
> 
> diff --git a/MAINTAINERS b/MAINTAINERS
> index d858582c917b..94a19606d947 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -4543,7 +4543,6 @@ F:	Documentation/ABI/testing/sysfs-bus-counter
>  F:	Documentation/driver-api/generic-counter.rst
>  F:	drivers/counter/
>  F:	include/linux/counter.h
> -F:	include/linux/counter_enum.h
>  
>  CPMAC ETHERNET DRIVER
>  M:	Florian Fainelli <f.fainelli@gmail.com>
> diff --git a/drivers/counter/104-quad-8.c b/drivers/counter/104-quad-8.c
> index eca3f6482719..41fdbd228be3 100644
> --- a/drivers/counter/104-quad-8.c
> +++ b/drivers/counter/104-quad-8.c
> @@ -116,7 +116,7 @@ static int quad8_signal_read(struct counter_device *counter,
...

> diff --git a/drivers/counter/counter-sysfs.c b/drivers/counter/counter-sysfs.c
> new file mode 100644
> index 000000000000..52513a213cc5
> --- /dev/null
> +++ b/drivers/counter/counter-sysfs.c
> @@ -0,0 +1,833 @@

...

> +
> +static ssize_t counter_comp_u8_show(struct device *dev,
> +				    struct device_attribute *attr, char *buf)
> +{
> +	const struct counter_attribute *const a = to_counter_attribute(attr);
> +	struct counter_device *const counter = dev_get_drvdata(dev);
> +	int err;
> +	u8 data = 0;
> +
> +	switch (a->scope) {
> +	case COUNTER_SCOPE_DEVICE:
> +		err = a->comp.device_u8_read(counter, &data);
> +		break;
> +	case COUNTER_SCOPE_SIGNAL:
> +		err = a->comp.signal_u8_read(counter, a->parent, &data);
> +		break;
> +	case COUNTER_SCOPE_COUNT:
> +		err = a->comp.count_u8_read(counter, a->parent, &data);
> +		break;

I'd add a default in here just to make it obvious anything else is
an error.  Same in other similar cases that follow.

> +	}
> +	if (err < 0)
> +		return err;
> +
> +	if (a->comp.type == COUNTER_COMP_BOOL)
> +		data = !!data;
> +
> +	return sprintf(buf, "%u\n", (unsigned int)data);
> +}
> +


...

> +
> +static int counter_name_attr_create(struct device *const dev,
> +				    struct counter_attribute_group *const group,
> +				    const char *const name)
> +{
> +	struct counter_attribute *counter_attr;
> +
> +	/* Allocate Counter attribute */
> +	counter_attr = devm_kzalloc(dev, sizeof(*counter_attr), GFP_KERNEL);
> +	if (!counter_attr)
> +		return -ENOMEM;
> +
> +	/* Configure Counter attribute */
> +	counter_attr->comp.name = name;
> +
> +	/* Configure device attribute */
> +	sysfs_attr_init(&counter_attr->dev_attr.attr);
> +	counter_attr->dev_attr.attr.name = "name";
> +	counter_attr->dev_attr.attr.mode = 0444;
> +	counter_attr->dev_attr.show = counter_comp_name_show;
> +
> +	/* Store list node */
> +	list_add(&counter_attr->l, &group->attr_list);
> +	group->num_attr++;
> +
> +	return 0;
> +}

Trivial but one too many blank lines.

> +
> +
> +static struct counter_comp counter_signal_comp = {
> +	.type = COUNTER_COMP_SIGNAL_LEVEL,
> +	.name = "signal",
> +};

...


>  static struct counter_synapse ti_eqep_position_synapses[] = {
> diff --git a/include/linux/counter.h b/include/linux/counter.h
> index d16ce2819b48..76b0b06dd5db 100644
> --- a/include/linux/counter.h
> +++ b/include/linux/counter.h
> @@ -6,42 +6,184 @@
>  #ifndef _COUNTER_H_
>  #define _COUNTER_H_
>  
...

WARNING: multiple messages have this Message-ID (diff)
From: Jonathan Cameron <jic23@kernel.org>
To: William Breathitt Gray <vilhelm.gray@gmail.com>
Cc: kamel.bouhara@bootlin.com, gwendal@chromium.org,
	a.fatoum@pengutronix.de, david@lechnology.com,
	linux-iio@vger.kernel.org, patrick.havelange@essensium.com,
	alexandre.belloni@bootlin.com, mcoquelin.stm32@gmail.com,
	linux-kernel@vger.kernel.org, o.rempel@pengutronix.de,
	Dan Carpenter <dan.carpenter@oracle.com>,
	kernel@pengutronix.de, fabrice.gasnier@st.com,
	syednwaris@gmail.com, linux-stm32@st-md-mailman.stormreply.com,
	linux-arm-kernel@lists.infradead.org, alexandre.torgue@st.com
Subject: Re: [PATCH v8 13/22] counter: Internalize sysfs interface code
Date: Sun, 14 Feb 2021 17:32:07 +0000	[thread overview]
Message-ID: <20210214173207.19fc810b@archlinux> (raw)
In-Reply-To: <3fc2580af0efd6312a64a0e107bd6fa758f0d466.1613131238.git.vilhelm.gray@gmail.com>

On Fri, 12 Feb 2021 21:13:37 +0900
William Breathitt Gray <vilhelm.gray@gmail.com> wrote:

> This is a reimplementation of the Generic Counter driver interface.
> There are no modifications to the Counter subsystem userspace interface,
> so existing userspace applications should continue to run seamlessly.
> 
> The purpose of this patch is to internalize the sysfs interface code
> among the various counter drivers into a shared module. Counter drivers
> pass and take data natively (i.e. u8, u64, etc.) and the shared counter
> module handles the translation between the sysfs interface and the
> device drivers. This guarantees a standard userspace interface for all
> counter drivers, and helps generalize the Generic Counter driver ABI in
> order to support the Generic Counter chrdev interface (introduced in a
> subsequent patch) without significant changes to the existing counter
> drivers.
> 
> Note, Counter device registration is the same as before: drivers
> populate a struct counter_device with components and callbacks, then
> pass the structure to the devm_counter_register function. However,
> what's different now is how the Counter subsystem code handles this
> registration internally.
> 
> Whereas before callbacks would interact directly with sysfs data, this
> interaction is now abstracted and instead callbacks interact with native
> C data types. The counter_comp structure forms the basis for Counter
> extensions.
> 
> The counter-sysfs.c file contains the code to parse through the
> counter_device structure and register the requested components and
> extensions. Attributes are created and populated based on type, with
> respective translation functions to handle the mapping between sysfs and
> the counter driver callbacks.
> 
> The translation performed for each attribute is straightforward: the
> attribute type and data is parsed from the counter_attribute structure,
> the respective counter driver read/write callback is called, and sysfs
> I/O is handled before or after the driver read/write function is called.
> 
> Cc: Syed Nayyar Waris <syednwaris@gmail.com>
> Cc: Patrick Havelange <patrick.havelange@essensium.com>
> Cc: Kamel Bouhara <kamel.bouhara@bootlin.com>
> Cc: Fabrice Gasnier <fabrice.gasnier@st.com>
> Cc: Maxime Coquelin <mcoquelin.stm32@gmail.com>
> Cc: Alexandre Torgue <alexandre.torgue@st.com>
> Cc: David Lechner <david@lechnology.com>
> Cc: Dan Carpenter <dan.carpenter@oracle.com>
> Signed-off-by: William Breathitt Gray <vilhelm.gray@gmail.com>

A few minor comments inline.

This set is still huge, so I've only looked at the core code
for this version.  Hopefully driver maintainers will do the thorough
review of how it effects the individual drivers!

Jonathan

> ---
>  MAINTAINERS                             |    1 -
>  drivers/counter/104-quad-8.c            |  449 +++----
>  drivers/counter/Makefile                |    1 +
>  drivers/counter/counter-core.c          |  153 +++
>  drivers/counter/counter-sysfs.c         |  833 +++++++++++++
>  drivers/counter/counter-sysfs.h         |   13 +
>  drivers/counter/counter.c               | 1496 -----------------------
>  drivers/counter/ftm-quaddec.c           |   56 +-
>  drivers/counter/microchip-tcb-capture.c |   87 +-
>  drivers/counter/stm32-lptimer-cnt.c     |  164 ++-
>  drivers/counter/stm32-timer-cnt.c       |  142 +--
>  drivers/counter/ti-eqep.c               |  211 ++--
>  include/linux/counter.h                 |  631 +++++-----
>  include/linux/counter_enum.h            |   45 -
>  14 files changed, 1816 insertions(+), 2466 deletions(-)
>  create mode 100644 drivers/counter/counter-core.c
>  create mode 100644 drivers/counter/counter-sysfs.c
>  create mode 100644 drivers/counter/counter-sysfs.h
>  delete mode 100644 drivers/counter/counter.c
>  delete mode 100644 include/linux/counter_enum.h
> 
> diff --git a/MAINTAINERS b/MAINTAINERS
> index d858582c917b..94a19606d947 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -4543,7 +4543,6 @@ F:	Documentation/ABI/testing/sysfs-bus-counter
>  F:	Documentation/driver-api/generic-counter.rst
>  F:	drivers/counter/
>  F:	include/linux/counter.h
> -F:	include/linux/counter_enum.h
>  
>  CPMAC ETHERNET DRIVER
>  M:	Florian Fainelli <f.fainelli@gmail.com>
> diff --git a/drivers/counter/104-quad-8.c b/drivers/counter/104-quad-8.c
> index eca3f6482719..41fdbd228be3 100644
> --- a/drivers/counter/104-quad-8.c
> +++ b/drivers/counter/104-quad-8.c
> @@ -116,7 +116,7 @@ static int quad8_signal_read(struct counter_device *counter,
...

> diff --git a/drivers/counter/counter-sysfs.c b/drivers/counter/counter-sysfs.c
> new file mode 100644
> index 000000000000..52513a213cc5
> --- /dev/null
> +++ b/drivers/counter/counter-sysfs.c
> @@ -0,0 +1,833 @@

...

> +
> +static ssize_t counter_comp_u8_show(struct device *dev,
> +				    struct device_attribute *attr, char *buf)
> +{
> +	const struct counter_attribute *const a = to_counter_attribute(attr);
> +	struct counter_device *const counter = dev_get_drvdata(dev);
> +	int err;
> +	u8 data = 0;
> +
> +	switch (a->scope) {
> +	case COUNTER_SCOPE_DEVICE:
> +		err = a->comp.device_u8_read(counter, &data);
> +		break;
> +	case COUNTER_SCOPE_SIGNAL:
> +		err = a->comp.signal_u8_read(counter, a->parent, &data);
> +		break;
> +	case COUNTER_SCOPE_COUNT:
> +		err = a->comp.count_u8_read(counter, a->parent, &data);
> +		break;

I'd add a default in here just to make it obvious anything else is
an error.  Same in other similar cases that follow.

> +	}
> +	if (err < 0)
> +		return err;
> +
> +	if (a->comp.type == COUNTER_COMP_BOOL)
> +		data = !!data;
> +
> +	return sprintf(buf, "%u\n", (unsigned int)data);
> +}
> +


...

> +
> +static int counter_name_attr_create(struct device *const dev,
> +				    struct counter_attribute_group *const group,
> +				    const char *const name)
> +{
> +	struct counter_attribute *counter_attr;
> +
> +	/* Allocate Counter attribute */
> +	counter_attr = devm_kzalloc(dev, sizeof(*counter_attr), GFP_KERNEL);
> +	if (!counter_attr)
> +		return -ENOMEM;
> +
> +	/* Configure Counter attribute */
> +	counter_attr->comp.name = name;
> +
> +	/* Configure device attribute */
> +	sysfs_attr_init(&counter_attr->dev_attr.attr);
> +	counter_attr->dev_attr.attr.name = "name";
> +	counter_attr->dev_attr.attr.mode = 0444;
> +	counter_attr->dev_attr.show = counter_comp_name_show;
> +
> +	/* Store list node */
> +	list_add(&counter_attr->l, &group->attr_list);
> +	group->num_attr++;
> +
> +	return 0;
> +}

Trivial but one too many blank lines.

> +
> +
> +static struct counter_comp counter_signal_comp = {
> +	.type = COUNTER_COMP_SIGNAL_LEVEL,
> +	.name = "signal",
> +};

...


>  static struct counter_synapse ti_eqep_position_synapses[] = {
> diff --git a/include/linux/counter.h b/include/linux/counter.h
> index d16ce2819b48..76b0b06dd5db 100644
> --- a/include/linux/counter.h
> +++ b/include/linux/counter.h
> @@ -6,42 +6,184 @@
>  #ifndef _COUNTER_H_
>  #define _COUNTER_H_
>  
...

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2021-02-14 17:33 UTC|newest]

Thread overview: 140+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-12 12:13 [PATCH v8 00/22] Introduce the Counter character device interface William Breathitt Gray
2021-02-12 12:13 ` William Breathitt Gray
2021-02-12 12:13 ` [PATCH v8 01/22] docs: counter: Consolidate Counter sysfs attributes documentation William Breathitt Gray
2021-02-12 12:13   ` William Breathitt Gray
2021-02-14 16:57   ` Jonathan Cameron
2021-02-14 16:57     ` Jonathan Cameron
2021-02-15 11:05     ` William Breathitt Gray
2021-02-15 11:05       ` William Breathitt Gray
2021-02-20 16:25   ` David Lechner
2021-02-20 16:25     ` David Lechner
2021-02-12 12:13 ` [PATCH v8 02/22] docs: counter: Fix spelling William Breathitt Gray
2021-02-12 12:13   ` William Breathitt Gray
2021-02-20 16:26   ` David Lechner
2021-02-20 16:26     ` David Lechner
2021-02-12 12:13 ` [PATCH v8 03/22] counter: 104-quad-8: Return error when invalid mode during ceiling_write William Breathitt Gray
2021-02-12 12:13   ` William Breathitt Gray
2021-02-20 16:30   ` David Lechner
2021-02-20 16:30     ` David Lechner
2021-02-22  2:06     ` William Breathitt Gray
2021-02-22  2:06       ` William Breathitt Gray
2021-02-12 12:13 ` [PATCH v8 04/22] counter: 104-quad-8: Annotate hardware config module parameter William Breathitt Gray
2021-02-12 12:13   ` William Breathitt Gray
2021-02-12 12:13 ` [PATCH v8 05/22] counter: 104-quad-8: Add const qualifiers for quad8_preset_register_set William Breathitt Gray
2021-02-12 12:13   ` William Breathitt Gray
2021-02-12 12:13 ` [PATCH v8 06/22] counter: 104-quad-8: Add const qualifier for functions_list array William Breathitt Gray
2021-02-12 12:13   ` William Breathitt Gray
2021-02-12 12:13 ` [PATCH v8 07/22] counter: 104-quad-8: Add const qualifier for actions_list array William Breathitt Gray
2021-02-12 12:13   ` William Breathitt Gray
2021-02-12 12:13 ` [PATCH v8 08/22] counter: ftm-quaddec: " William Breathitt Gray
2021-02-12 12:13   ` William Breathitt Gray
2021-02-12 12:13 ` [PATCH v8 09/22] counter: Return error code on invalid modes William Breathitt Gray
2021-02-12 12:13   ` William Breathitt Gray
2021-02-14 17:07   ` Jonathan Cameron
2021-02-14 17:07     ` Jonathan Cameron
2021-02-20 16:43   ` David Lechner
2021-02-20 16:43     ` David Lechner
2021-02-22  4:42     ` William Breathitt Gray
2021-02-22  4:42       ` William Breathitt Gray
2021-02-12 12:13 ` [PATCH v8 10/22] counter: Standardize to ERANGE for limit exceeded errors William Breathitt Gray
2021-02-12 12:13   ` William Breathitt Gray
2021-02-14 17:10   ` Jonathan Cameron
2021-02-14 17:10     ` Jonathan Cameron
2021-02-16  1:26     ` William Breathitt Gray
2021-02-16  1:26       ` William Breathitt Gray
2021-02-21 14:03       ` Jonathan Cameron
2021-02-21 14:03         ` Jonathan Cameron
2021-02-20 16:48   ` David Lechner
2021-02-20 16:48     ` David Lechner
2021-02-12 12:13 ` [PATCH v8 11/22] counter: Rename counter_signal_value to counter_signal_level William Breathitt Gray
2021-02-12 12:13   ` William Breathitt Gray
2021-02-20 16:52   ` David Lechner
2021-02-20 16:52     ` David Lechner
2021-02-12 12:13 ` [PATCH v8 12/22] counter: Rename counter_count_function to counter_function William Breathitt Gray
2021-02-12 12:13   ` William Breathitt Gray
2021-02-14 17:13   ` Jonathan Cameron
2021-02-14 17:13     ` Jonathan Cameron
2021-02-20 16:56     ` David Lechner
2021-02-20 16:56       ` David Lechner
2021-02-23  5:14       ` William Breathitt Gray
2021-02-23  5:14         ` William Breathitt Gray
2021-02-12 12:13 ` [PATCH v8 13/22] counter: Internalize sysfs interface code William Breathitt Gray
2021-02-14 17:32   ` Jonathan Cameron [this message]
2021-02-14 17:32     ` Jonathan Cameron
2021-02-20 17:50   ` David Lechner
2021-02-20 17:50     ` David Lechner
2021-02-12 12:13 ` [PATCH v8 14/22] counter: Update counter.h comments to reflect sysfs internalization William Breathitt Gray
2021-02-12 12:13   ` William Breathitt Gray
2021-02-12 12:13 ` [PATCH v8 15/22] docs: counter: Update " William Breathitt Gray
2021-02-12 12:13   ` William Breathitt Gray
2021-02-12 12:13 ` [PATCH v8 16/22] counter: Move counter enums to uapi header William Breathitt Gray
2021-02-12 12:13   ` William Breathitt Gray
2021-02-20 23:55   ` David Lechner
2021-02-20 23:55     ` David Lechner
2021-02-12 12:13 ` [PATCH v8 17/22] counter: Add character device interface William Breathitt Gray
2021-02-12 12:13   ` William Breathitt Gray
2021-02-14 18:06   ` Jonathan Cameron
2021-02-14 18:06     ` Jonathan Cameron
2021-02-24  5:34     ` William Breathitt Gray
2021-02-24  5:34       ` William Breathitt Gray
2021-02-15  9:24   ` Oleksij Rempel
2021-02-15  9:24     ` Oleksij Rempel
2021-02-16  1:53     ` William Breathitt Gray
2021-02-16  1:53       ` William Breathitt Gray
2021-02-12 12:13 ` [PATCH v8 18/22] docs: counter: Document " William Breathitt Gray
2021-02-12 12:13   ` William Breathitt Gray
2021-02-14 17:48   ` Jonathan Cameron
2021-02-14 17:48     ` Jonathan Cameron
2021-02-22 10:11     ` Pavel Machek
2021-02-22 10:11       ` Pavel Machek
2021-02-26  0:27       ` William Breathitt Gray
2021-02-26  0:27         ` William Breathitt Gray
2021-02-26  0:22     ` William Breathitt Gray
2021-02-26  0:22       ` William Breathitt Gray
2021-02-12 12:13 ` [PATCH v8 19/22] counter: Implement extension*_name sysfs attributes William Breathitt Gray
2021-02-12 12:13   ` William Breathitt Gray
2021-02-14 18:09   ` Jonathan Cameron
2021-02-14 18:09     ` Jonathan Cameron
2021-02-19  8:51     ` William Breathitt Gray
2021-02-19  8:51       ` William Breathitt Gray
2021-02-21 14:05       ` Jonathan Cameron
2021-02-21 14:05         ` Jonathan Cameron
2021-02-25 23:32         ` William Breathitt Gray
2021-02-25 23:32           ` William Breathitt Gray
2021-02-27 15:14           ` Jonathan Cameron
2021-02-27 15:14             ` Jonathan Cameron
2021-02-12 12:13 ` [PATCH v8 20/22] counter: Implement events_queue_size sysfs attribute William Breathitt Gray
2021-02-12 12:13   ` William Breathitt Gray
2021-02-14 18:11   ` Jonathan Cameron
2021-02-14 18:11     ` Jonathan Cameron
2021-02-18 10:32     ` William Breathitt Gray
2021-02-18 10:32       ` William Breathitt Gray
2021-02-21 15:51       ` Jonathan Cameron
2021-02-21 15:51         ` Jonathan Cameron
2021-02-26  0:03         ` William Breathitt Gray
2021-02-26  0:03           ` William Breathitt Gray
2021-02-27  0:14           ` David Lechner
2021-02-27  0:14             ` David Lechner
2021-02-27  0:20             ` William Breathitt Gray
2021-02-27  0:20               ` William Breathitt Gray
2021-02-27 15:18           ` Jonathan Cameron
2021-02-27 15:18             ` Jonathan Cameron
2021-02-28  2:46             ` William Breathitt Gray
2021-02-28  2:46               ` William Breathitt Gray
2021-02-12 12:13 ` [PATCH v8 21/22] counter: 104-quad-8: Replace mutex with spinlock William Breathitt Gray
2021-02-12 12:13   ` William Breathitt Gray
2021-02-14 18:19   ` Jonathan Cameron
2021-02-14 18:19     ` Jonathan Cameron
2021-02-16  2:16     ` William Breathitt Gray
2021-02-16  2:16       ` William Breathitt Gray
2021-02-16 19:27       ` Jonathan Cameron
2021-02-16 19:27         ` Jonathan Cameron
2021-02-18 10:16         ` William Breathitt Gray
2021-02-18 10:16           ` William Breathitt Gray
2021-02-12 12:13 ` [PATCH v8 22/22] counter: 104-quad-8: Add IRQ support for the ACCES 104-QUAD-8 William Breathitt Gray
2021-02-12 12:13   ` William Breathitt Gray
2021-02-14 18:24   ` Jonathan Cameron
2021-02-14 18:24     ` Jonathan Cameron
2021-02-19  9:21     ` William Breathitt Gray
2021-02-19  9:21       ` William Breathitt Gray
2021-02-12 23:14 [PATCH v8 13/22] counter: Internalize sysfs interface code kernel test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210214173207.19fc810b@archlinux \
    --to=jic23@kernel.org \
    --cc=a.fatoum@pengutronix.de \
    --cc=alexandre.belloni@bootlin.com \
    --cc=alexandre.torgue@st.com \
    --cc=dan.carpenter@oracle.com \
    --cc=david@lechnology.com \
    --cc=fabrice.gasnier@st.com \
    --cc=gwendal@chromium.org \
    --cc=kamel.bouhara@bootlin.com \
    --cc=kernel@pengutronix.de \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-stm32@st-md-mailman.stormreply.com \
    --cc=mcoquelin.stm32@gmail.com \
    --cc=o.rempel@pengutronix.de \
    --cc=patrick.havelange@essensium.com \
    --cc=syednwaris@gmail.com \
    --cc=vilhelm.gray@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.