public inbox for linux-arm-kernel@lists.infradead.org
 help / color / mirror / Atom feed
From: Mathieu Poirier <mathieu.poirier@linaro.org>
To: Suzuki K Poulose <suzuki.poulose@arm.com>
Cc: coresight@lists.linaro.org, rjw@rjwysocki.net,
	linux-kernel@vger.kernel.org, robert.walker@arm.com,
	linux-arm-kernel@lists.infradead.org, mike.leach@linaro.org
Subject: Re: [PATCH v2 14/36] coresight: Rename of_coresight to coresight-platform
Date: Thu, 18 Apr 2019 11:22:45 -0600	[thread overview]
Message-ID: <20190418172245.GB10675@xps15> (raw)
In-Reply-To: <1555344260-12375-15-git-send-email-suzuki.poulose@arm.com>

On Mon, Apr 15, 2019 at 05:03:57PM +0100, Suzuki K Poulose wrote:
> Rename the firmware handling file to a more generic
> name, in preparation for adding ACPI support.

I am in agreement with this patch and also understand why you're doing it.  But
for someone without context and with this very short changelog, it would
certainly be cryptic.

Please enhance the description so that someone without background can have a
better understanding of what is going on.

With that:

Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org>

> 
> Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
> Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
> ---
>  drivers/hwtracing/coresight/Makefile             |   3 +-
>  drivers/hwtracing/coresight/coresight-platform.c | 298 +++++++++++++++++++++++
>  drivers/hwtracing/coresight/of_coresight.c       | 297 ----------------------
>  3 files changed, 299 insertions(+), 299 deletions(-)
>  create mode 100644 drivers/hwtracing/coresight/coresight-platform.c
>  delete mode 100644 drivers/hwtracing/coresight/of_coresight.c
> 
> diff --git a/drivers/hwtracing/coresight/Makefile b/drivers/hwtracing/coresight/Makefile
> index 3b435aa..3c0ac42 100644
> --- a/drivers/hwtracing/coresight/Makefile
> +++ b/drivers/hwtracing/coresight/Makefile
> @@ -2,8 +2,7 @@
>  #
>  # Makefile for CoreSight drivers.
>  #
> -obj-$(CONFIG_CORESIGHT) += coresight.o coresight-etm-perf.o
> -obj-$(CONFIG_OF) += of_coresight.o
> +obj-$(CONFIG_CORESIGHT) += coresight.o coresight-etm-perf.o coresight-platform.o
>  obj-$(CONFIG_CORESIGHT_LINK_AND_SINK_TMC) += coresight-tmc.o \
>  					     coresight-tmc-etf.o \
>  					     coresight-tmc-etr.o
> diff --git a/drivers/hwtracing/coresight/coresight-platform.c b/drivers/hwtracing/coresight/coresight-platform.c
> new file mode 100644
> index 0000000..514cc2b
> --- /dev/null
> +++ b/drivers/hwtracing/coresight/coresight-platform.c
> @@ -0,0 +1,298 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * Copyright (c) 2012, The Linux Foundation. All rights reserved.
> + */
> +
> +#include <linux/types.h>
> +#include <linux/err.h>
> +#include <linux/slab.h>
> +#include <linux/clk.h>
> +#include <linux/of.h>
> +#include <linux/of_address.h>
> +#include <linux/of_graph.h>
> +#include <linux/of_platform.h>
> +#include <linux/platform_device.h>
> +#include <linux/amba/bus.h>
> +#include <linux/coresight.h>
> +#include <linux/cpumask.h>
> +#include <asm/smp_plat.h>
> +
> +#ifdef CONFIG_OF
> +static int of_dev_node_match(struct device *dev, void *data)
> +{
> +	return dev->of_node == data;
> +}
> +
> +static struct device *
> +of_coresight_get_endpoint_device(struct device_node *endpoint)
> +{
> +	struct device *dev = NULL;
> +
> +	/*
> +	 * If we have a non-configurable replicator, it will be found on the
> +	 * platform bus.
> +	 */
> +	dev = bus_find_device(&platform_bus_type, NULL,
> +			      endpoint, of_dev_node_match);
> +	if (dev)
> +		return dev;
> +
> +	/*
> +	 * We have a configurable component - circle through the AMBA bus
> +	 * looking for the device that matches the endpoint node.
> +	 */
> +	return bus_find_device(&amba_bustype, NULL,
> +			       endpoint, of_dev_node_match);
> +}
> +
> +static inline bool of_coresight_legacy_ep_is_input(struct device_node *ep)
> +{
> +	return of_property_read_bool(ep, "slave-mode");
> +}
> +
> +static void of_coresight_get_ports_legacy(const struct device_node *node,
> +					  int *nr_inport, int *nr_outport)
> +{
> +	struct device_node *ep = NULL;
> +	int in = 0, out = 0;
> +
> +	do {
> +		ep = of_graph_get_next_endpoint(node, ep);
> +		if (!ep)
> +			break;
> +
> +		if (of_coresight_legacy_ep_is_input(ep))
> +			in++;
> +		else
> +			out++;
> +
> +	} while (ep);
> +
> +	*nr_inport = in;
> +	*nr_outport = out;
> +}
> +
> +static struct device_node *of_coresight_get_port_parent(struct device_node *ep)
> +{
> +	struct device_node *parent = of_graph_get_port_parent(ep);
> +
> +	/*
> +	 * Skip one-level up to the real device node, if we
> +	 * are using the new bindings.
> +	 */
> +	if (of_node_name_eq(parent, "in-ports") ||
> +	    of_node_name_eq(parent, "out-ports"))
> +		parent = of_get_next_parent(parent);
> +
> +	return parent;
> +}
> +
> +static inline struct device_node *
> +of_coresight_get_input_ports_node(const struct device_node *node)
> +{
> +	return of_get_child_by_name(node, "in-ports");
> +}
> +
> +static inline struct device_node *
> +of_coresight_get_output_ports_node(const struct device_node *node)
> +{
> +	return of_get_child_by_name(node, "out-ports");
> +}
> +
> +static inline int
> +of_coresight_count_ports(struct device_node *port_parent)
> +{
> +	int i = 0;
> +	struct device_node *ep = NULL;
> +
> +	while ((ep = of_graph_get_next_endpoint(port_parent, ep)))
> +		i++;
> +	return i;
> +}
> +
> +static void of_coresight_get_ports(const struct device_node *node,
> +				   int *nr_inport, int *nr_outport)
> +{
> +	struct device_node *input_ports = NULL, *output_ports = NULL;
> +
> +	input_ports = of_coresight_get_input_ports_node(node);
> +	output_ports = of_coresight_get_output_ports_node(node);
> +
> +	if (input_ports || output_ports) {
> +		if (input_ports) {
> +			*nr_inport = of_coresight_count_ports(input_ports);
> +			of_node_put(input_ports);
> +		}
> +		if (output_ports) {
> +			*nr_outport = of_coresight_count_ports(output_ports);
> +			of_node_put(output_ports);
> +		}
> +	} else {
> +		/* Fall back to legacy DT bindings parsing */
> +		of_coresight_get_ports_legacy(node, nr_inport, nr_outport);
> +	}
> +}
> +
> +static int of_coresight_alloc_memory(struct device *dev,
> +			struct coresight_platform_data *pdata)
> +{
> +	if (pdata->nr_outport) {
> +		pdata->conns = devm_kzalloc(dev, pdata->nr_outport *
> +					    sizeof(*pdata->conns),
> +					    GFP_KERNEL);
> +		if (!pdata->conns)
> +			return -ENOMEM;
> +	}
> +
> +	return 0;
> +}
> +
> +int of_coresight_get_cpu(const struct device_node *node)
> +{
> +	int cpu;
> +	struct device_node *dn;
> +
> +	dn = of_parse_phandle(node, "cpu", 0);
> +	/* Affinity defaults to CPU0 */
> +	if (!dn)
> +		return 0;
> +	cpu = of_cpu_node_to_id(dn);
> +	of_node_put(dn);
> +
> +	/* Affinity to CPU0 if no cpu nodes are found */
> +	return (cpu < 0) ? 0 : cpu;
> +}
> +EXPORT_SYMBOL_GPL(of_coresight_get_cpu);
> +
> +/*
> + * of_coresight_parse_endpoint : Parse the given output endpoint @ep
> + * and fill the connection information in @conn
> + *
> + * Parses the local port, remote device name and the remote port.
> + *
> + * Returns :
> + *	 1	- If the parsing is successful and a connection record
> + *		  was created for an output connection.
> + *	 0	- If the parsing completed without any fatal errors.
> + *	-Errno	- Fatal error, abort the scanning.
> + */
> +static int of_coresight_parse_endpoint(struct device *dev,
> +				       struct device_node *ep,
> +				       struct coresight_connection *conn)
> +{
> +	int ret = 0;
> +	struct of_endpoint endpoint, rendpoint;
> +	struct device_node *rparent = NULL;
> +	struct device_node *rep = NULL;
> +	struct device *rdev = NULL;
> +
> +	do {
> +		/* Parse the local port details */
> +		if (of_graph_parse_endpoint(ep, &endpoint))
> +			break;
> +		/*
> +		 * Get a handle on the remote endpoint and the device it is
> +		 * attached to.
> +		 */
> +		rep = of_graph_get_remote_endpoint(ep);
> +		if (!rep)
> +			break;
> +		rparent = of_coresight_get_port_parent(rep);
> +		if (!rparent)
> +			break;
> +		if (of_graph_parse_endpoint(rep, &rendpoint))
> +			break;
> +
> +		/* If the remote device is not available, defer probing */
> +		rdev = of_coresight_get_endpoint_device(rparent);
> +		if (!rdev) {
> +			ret = -EPROBE_DEFER;
> +			break;
> +		}
> +
> +		conn->outport = endpoint.port;
> +		conn->child_name = devm_kstrdup(dev,
> +						dev_name(rdev),
> +						GFP_KERNEL);
> +		conn->child_port = rendpoint.port;
> +		/* Connection record updated */
> +		ret = 1;
> +	} while (0);
> +
> +	of_node_put(rparent);
> +	of_node_put(rep);
> +	put_device(rdev);
> +
> +	return ret;
> +}
> +
> +struct coresight_platform_data *
> +of_get_coresight_platform_data(struct device *dev,
> +			       const struct device_node *node)
> +{
> +	int ret = 0;
> +	struct coresight_platform_data *pdata;
> +	struct coresight_connection *conn;
> +	struct device_node *ep = NULL;
> +	const struct device_node *parent = NULL;
> +	bool legacy_binding = false;
> +
> +	pdata = devm_kzalloc(dev, sizeof(*pdata), GFP_KERNEL);
> +	if (!pdata)
> +		return ERR_PTR(-ENOMEM);
> +
> +	/* Use device name as sysfs handle */
> +	pdata->name = dev_name(dev);
> +	pdata->cpu = of_coresight_get_cpu(node);
> +
> +	/* Get the number of input and output port for this component */
> +	of_coresight_get_ports(node, &pdata->nr_inport, &pdata->nr_outport);
> +
> +	/* If there are no output connections, we are done */
> +	if (!pdata->nr_outport)
> +		return pdata;
> +
> +	ret = of_coresight_alloc_memory(dev, pdata);
> +	if (ret)
> +		return ERR_PTR(ret);
> +
> +	parent = of_coresight_get_output_ports_node(node);
> +	/*
> +	 * If the DT uses obsoleted bindings, the ports are listed
> +	 * under the device and we need to filter out the input
> +	 * ports.
> +	 */
> +	if (!parent) {
> +		legacy_binding = true;
> +		parent = node;
> +		dev_warn_once(dev, "Uses obsolete Coresight DT bindings\n");
> +	}
> +
> +	conn = pdata->conns;
> +
> +	/* Iterate through each output port to discover topology */
> +	while ((ep = of_graph_get_next_endpoint(parent, ep))) {
> +		/*
> +		 * Legacy binding mixes input/output ports under the
> +		 * same parent. So, skip the input ports if we are dealing
> +		 * with legacy binding, as they processed with their
> +		 * connected output ports.
> +		 */
> +		if (legacy_binding && of_coresight_legacy_ep_is_input(ep))
> +			continue;
> +
> +		ret = of_coresight_parse_endpoint(dev, ep, conn);
> +		switch (ret) {
> +		case 1:
> +			conn++;		/* Fall through */
> +		case 0:
> +			break;
> +		default:
> +			return ERR_PTR(ret);
> +		}
> +	}
> +
> +	return pdata;
> +}
> +EXPORT_SYMBOL_GPL(of_get_coresight_platform_data);
> +#endif
> diff --git a/drivers/hwtracing/coresight/of_coresight.c b/drivers/hwtracing/coresight/of_coresight.c
> deleted file mode 100644
> index 7045930..0000000
> --- a/drivers/hwtracing/coresight/of_coresight.c
> +++ /dev/null
> @@ -1,297 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0
> -/*
> - * Copyright (c) 2012, The Linux Foundation. All rights reserved.
> - */
> -
> -#include <linux/types.h>
> -#include <linux/err.h>
> -#include <linux/slab.h>
> -#include <linux/clk.h>
> -#include <linux/of.h>
> -#include <linux/of_address.h>
> -#include <linux/of_graph.h>
> -#include <linux/of_platform.h>
> -#include <linux/platform_device.h>
> -#include <linux/amba/bus.h>
> -#include <linux/coresight.h>
> -#include <linux/cpumask.h>
> -#include <asm/smp_plat.h>
> -
> -
> -static int of_dev_node_match(struct device *dev, void *data)
> -{
> -	return dev->of_node == data;
> -}
> -
> -static struct device *
> -of_coresight_get_endpoint_device(struct device_node *endpoint)
> -{
> -	struct device *dev = NULL;
> -
> -	/*
> -	 * If we have a non-configurable replicator, it will be found on the
> -	 * platform bus.
> -	 */
> -	dev = bus_find_device(&platform_bus_type, NULL,
> -			      endpoint, of_dev_node_match);
> -	if (dev)
> -		return dev;
> -
> -	/*
> -	 * We have a configurable component - circle through the AMBA bus
> -	 * looking for the device that matches the endpoint node.
> -	 */
> -	return bus_find_device(&amba_bustype, NULL,
> -			       endpoint, of_dev_node_match);
> -}
> -
> -static inline bool of_coresight_legacy_ep_is_input(struct device_node *ep)
> -{
> -	return of_property_read_bool(ep, "slave-mode");
> -}
> -
> -static void of_coresight_get_ports_legacy(const struct device_node *node,
> -					  int *nr_inport, int *nr_outport)
> -{
> -	struct device_node *ep = NULL;
> -	int in = 0, out = 0;
> -
> -	do {
> -		ep = of_graph_get_next_endpoint(node, ep);
> -		if (!ep)
> -			break;
> -
> -		if (of_coresight_legacy_ep_is_input(ep))
> -			in++;
> -		else
> -			out++;
> -
> -	} while (ep);
> -
> -	*nr_inport = in;
> -	*nr_outport = out;
> -}
> -
> -static struct device_node *of_coresight_get_port_parent(struct device_node *ep)
> -{
> -	struct device_node *parent = of_graph_get_port_parent(ep);
> -
> -	/*
> -	 * Skip one-level up to the real device node, if we
> -	 * are using the new bindings.
> -	 */
> -	if (of_node_name_eq(parent, "in-ports") ||
> -	    of_node_name_eq(parent, "out-ports"))
> -		parent = of_get_next_parent(parent);
> -
> -	return parent;
> -}
> -
> -static inline struct device_node *
> -of_coresight_get_input_ports_node(const struct device_node *node)
> -{
> -	return of_get_child_by_name(node, "in-ports");
> -}
> -
> -static inline struct device_node *
> -of_coresight_get_output_ports_node(const struct device_node *node)
> -{
> -	return of_get_child_by_name(node, "out-ports");
> -}
> -
> -static inline int
> -of_coresight_count_ports(struct device_node *port_parent)
> -{
> -	int i = 0;
> -	struct device_node *ep = NULL;
> -
> -	while ((ep = of_graph_get_next_endpoint(port_parent, ep)))
> -		i++;
> -	return i;
> -}
> -
> -static void of_coresight_get_ports(const struct device_node *node,
> -				   int *nr_inport, int *nr_outport)
> -{
> -	struct device_node *input_ports = NULL, *output_ports = NULL;
> -
> -	input_ports = of_coresight_get_input_ports_node(node);
> -	output_ports = of_coresight_get_output_ports_node(node);
> -
> -	if (input_ports || output_ports) {
> -		if (input_ports) {
> -			*nr_inport = of_coresight_count_ports(input_ports);
> -			of_node_put(input_ports);
> -		}
> -		if (output_ports) {
> -			*nr_outport = of_coresight_count_ports(output_ports);
> -			of_node_put(output_ports);
> -		}
> -	} else {
> -		/* Fall back to legacy DT bindings parsing */
> -		of_coresight_get_ports_legacy(node, nr_inport, nr_outport);
> -	}
> -}
> -
> -static int of_coresight_alloc_memory(struct device *dev,
> -			struct coresight_platform_data *pdata)
> -{
> -	if (pdata->nr_outport) {
> -		pdata->conns = devm_kzalloc(dev, pdata->nr_outport *
> -					    sizeof(*pdata->conns),
> -					    GFP_KERNEL);
> -		if (!pdata->conns)
> -			return -ENOMEM;
> -	}
> -
> -	return 0;
> -}
> -
> -int of_coresight_get_cpu(const struct device_node *node)
> -{
> -	int cpu;
> -	struct device_node *dn;
> -
> -	dn = of_parse_phandle(node, "cpu", 0);
> -	/* Affinity defaults to CPU0 */
> -	if (!dn)
> -		return 0;
> -	cpu = of_cpu_node_to_id(dn);
> -	of_node_put(dn);
> -
> -	/* Affinity to CPU0 if no cpu nodes are found */
> -	return (cpu < 0) ? 0 : cpu;
> -}
> -EXPORT_SYMBOL_GPL(of_coresight_get_cpu);
> -
> -/*
> - * of_coresight_parse_endpoint : Parse the given output endpoint @ep
> - * and fill the connection information in @conn
> - *
> - * Parses the local port, remote device name and the remote port.
> - *
> - * Returns :
> - *	 1	- If the parsing is successful and a connection record
> - *		  was created for an output connection.
> - *	 0	- If the parsing completed without any fatal errors.
> - *	-Errno	- Fatal error, abort the scanning.
> - */
> -static int of_coresight_parse_endpoint(struct device *dev,
> -				       struct device_node *ep,
> -				       struct coresight_connection *conn)
> -{
> -	int ret = 0;
> -	struct of_endpoint endpoint, rendpoint;
> -	struct device_node *rparent = NULL;
> -	struct device_node *rep = NULL;
> -	struct device *rdev = NULL;
> -
> -	do {
> -		/* Parse the local port details */
> -		if (of_graph_parse_endpoint(ep, &endpoint))
> -			break;
> -		/*
> -		 * Get a handle on the remote endpoint and the device it is
> -		 * attached to.
> -		 */
> -		rep = of_graph_get_remote_endpoint(ep);
> -		if (!rep)
> -			break;
> -		rparent = of_coresight_get_port_parent(rep);
> -		if (!rparent)
> -			break;
> -		if (of_graph_parse_endpoint(rep, &rendpoint))
> -			break;
> -
> -		/* If the remote device is not available, defer probing */
> -		rdev = of_coresight_get_endpoint_device(rparent);
> -		if (!rdev) {
> -			ret = -EPROBE_DEFER;
> -			break;
> -		}
> -
> -		conn->outport = endpoint.port;
> -		conn->child_name = devm_kstrdup(dev,
> -						dev_name(rdev),
> -						GFP_KERNEL);
> -		conn->child_port = rendpoint.port;
> -		/* Connection record updated */
> -		ret = 1;
> -	} while (0);
> -
> -	of_node_put(rparent);
> -	of_node_put(rep);
> -	put_device(rdev);
> -
> -	return ret;
> -}
> -
> -struct coresight_platform_data *
> -of_get_coresight_platform_data(struct device *dev,
> -			       const struct device_node *node)
> -{
> -	int ret = 0;
> -	struct coresight_platform_data *pdata;
> -	struct coresight_connection *conn;
> -	struct device_node *ep = NULL;
> -	const struct device_node *parent = NULL;
> -	bool legacy_binding = false;
> -
> -	pdata = devm_kzalloc(dev, sizeof(*pdata), GFP_KERNEL);
> -	if (!pdata)
> -		return ERR_PTR(-ENOMEM);
> -
> -	/* Use device name as sysfs handle */
> -	pdata->name = dev_name(dev);
> -	pdata->cpu = of_coresight_get_cpu(node);
> -
> -	/* Get the number of input and output port for this component */
> -	of_coresight_get_ports(node, &pdata->nr_inport, &pdata->nr_outport);
> -
> -	/* If there are no output connections, we are done */
> -	if (!pdata->nr_outport)
> -		return pdata;
> -
> -	ret = of_coresight_alloc_memory(dev, pdata);
> -	if (ret)
> -		return ERR_PTR(ret);
> -
> -	parent = of_coresight_get_output_ports_node(node);
> -	/*
> -	 * If the DT uses obsoleted bindings, the ports are listed
> -	 * under the device and we need to filter out the input
> -	 * ports.
> -	 */
> -	if (!parent) {
> -		legacy_binding = true;
> -		parent = node;
> -		dev_warn_once(dev, "Uses obsolete Coresight DT bindings\n");
> -	}
> -
> -	conn = pdata->conns;
> -
> -	/* Iterate through each output port to discover topology */
> -	while ((ep = of_graph_get_next_endpoint(parent, ep))) {
> -		/*
> -		 * Legacy binding mixes input/output ports under the
> -		 * same parent. So, skip the input ports if we are dealing
> -		 * with legacy binding, as they processed with their
> -		 * connected output ports.
> -		 */
> -		if (legacy_binding && of_coresight_legacy_ep_is_input(ep))
> -			continue;
> -
> -		ret = of_coresight_parse_endpoint(dev, ep, conn);
> -		switch (ret) {
> -		case 1:
> -			conn++;		/* Fall through */
> -		case 0:
> -			break;
> -		default:
> -			return ERR_PTR(ret);
> -		}
> -	}
> -
> -	return pdata;
> -}
> -EXPORT_SYMBOL_GPL(of_get_coresight_platform_data);
> -- 
> 2.7.4
> 

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

  reply	other threads:[~2019-04-18 17:23 UTC|newest]

Thread overview: 74+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-04-15 16:03 [PATCH v2 00/36] coresight: Support for ACPI bindings Suzuki K Poulose
2019-04-15 16:03 ` [PATCH v2 01/36] coresight: Fix freeing up the coresight connections Suzuki K Poulose
2019-04-15 16:03 ` [PATCH v2 02/36] coresight: etb10: Cleanup power management Suzuki K Poulose
2019-04-15 16:03 ` [PATCH v2 03/36] coresight: tpiu: " Suzuki K Poulose
2019-04-15 16:03 ` [PATCH v2 04/36] coresight: catu: " Suzuki K Poulose
2019-04-15 16:03 ` [PATCH v2 05/36] coresight: tmc: " Suzuki K Poulose
2019-04-17 20:03   ` Mathieu Poirier
2019-04-23  9:33     ` Suzuki K Poulose
2019-04-15 16:03 ` [PATCH v2 06/36] coresight: funnel: Clean up device book keeping Suzuki K Poulose
2019-04-17 20:14   ` Mathieu Poirier
2019-04-15 16:03 ` [PATCH v2 07/36] coresight: replicator: Cleanup device tracking Suzuki K Poulose
2019-04-17 20:34   ` Mathieu Poirier
2019-04-15 16:03 ` [PATCH v2 08/36] coresight: tmc: Clean up device specific data Suzuki K Poulose
2019-04-17 21:23   ` Mathieu Poirier
2019-05-03 17:13     ` Suzuki K Poulose
2019-04-15 16:03 ` [PATCH v2 09/36] coresight: catu: Cleanup " Suzuki K Poulose
2019-04-17 21:40   ` Mathieu Poirier
2019-04-15 16:03 ` [PATCH v2 10/36] coresight: tpiu: Clean up " Suzuki K Poulose
2019-04-17 21:41   ` Mathieu Poirier
2019-04-15 16:03 ` [PATCH v2 11/36] coresight: stm: Cleanup " Suzuki K Poulose
2019-04-18 16:50   ` Mathieu Poirier
2019-04-15 16:03 ` [PATCH v2 12/36] coresight: etm: Clean up " Suzuki K Poulose
2019-04-15 16:03 ` [PATCH v2 13/36] coresight: etb10: " Suzuki K Poulose
2019-04-15 16:03 ` [PATCH v2 14/36] coresight: Rename of_coresight to coresight-platform Suzuki K Poulose
2019-04-18 17:22   ` Mathieu Poirier [this message]
2019-04-15 16:03 ` [PATCH v2 15/36] coresight: etm3x: Rearrange cp14 access detection Suzuki K Poulose
2019-04-15 16:03 ` [PATCH v2 16/36] coresight: stm: Rearrange probing the stimulus area Suzuki K Poulose
2019-04-15 16:04 ` [PATCH v2 17/36] coresight: tmc-etr: Rearrange probing default buffer size Suzuki K Poulose
2019-04-15 16:04 ` [PATCH v2 18/36] coresight: platform: Make memory allocation helper generic Suzuki K Poulose
2019-04-15 16:04 ` [PATCH v2 19/36] coresight: Introduce generic platform data helper Suzuki K Poulose
2019-04-22 18:09   ` Mathieu Poirier
2019-04-23  9:43     ` Suzuki K Poulose
2019-04-15 16:04 ` [PATCH v2 20/36] coresight: Make device to CPU mapping generic Suzuki K Poulose
2019-04-18 18:14   ` Mathieu Poirier
2019-04-15 16:04 ` [PATCH v2 21/36] coresight: Remove cpu field from platform data Suzuki K Poulose
2019-04-15 16:04 ` [PATCH v2 22/36] coresight: Remove name from platform description Suzuki K Poulose
2019-04-15 16:04 ` [PATCH v2 23/36] coresight: Cleanup coresight_remove_conns Suzuki K Poulose
2019-04-15 16:04 ` [PATCH v2 24/36] coresight: Reuse platform data structure for connection tracking Suzuki K Poulose
2019-04-22 17:06   ` Mathieu Poirier
2019-04-15 16:04 ` [PATCH v2 25/36] coresight: Rearrange platform data probing Suzuki K Poulose
2019-04-22 17:16   ` Mathieu Poirier
2019-04-25 17:12     ` Suzuki K Poulose
2019-04-15 16:04 ` [PATCH v2 26/36] coresight: Add support for releasing platform specific data Suzuki K Poulose
2019-04-15 16:04 ` [PATCH v2 27/36] drivers: Add a generic helper to match device by fwnode handle Suzuki K Poulose
2019-04-16 10:20   ` Rafael J. Wysocki
2019-04-16 10:34     ` Suzuki K Poulose
2019-04-16 10:45       ` Rafael J. Wysocki
2019-04-16 10:39   ` [RESEND][PATCH " Suzuki K Poulose
2019-04-16 10:48     ` Rafael J. Wysocki
2019-04-16 10:56       ` Suzuki K Poulose
2019-04-18 14:39         ` Rafael J. Wysocki
2019-04-18 15:18           ` Suzuki K Poulose
2019-04-15 16:04 ` [PATCH v2 28/36] coresight: platform: Use fwnode handle for device search Suzuki K Poulose
2019-04-23 16:17   ` Mathieu Poirier
2019-04-15 16:04 ` [PATCH v2 29/36] coresight: Use fwnode handle instead of device names Suzuki K Poulose
2019-04-23 16:14   ` Mathieu Poirier
2019-04-15 16:04 ` [PATCH v2 30/36] coresight: Use platform agnostic names Suzuki K Poulose
2019-04-23 17:38   ` Mathieu Poirier
2019-04-15 16:04 ` [PATCH v2 31/36] coresight: stm: ACPI support for parsing stimulus base Suzuki K Poulose
2019-04-23 17:59   ` Mathieu Poirier
2019-04-25 16:17     ` Suzuki K Poulose
2019-04-15 16:04 ` [PATCH v2 32/36] coresight: Support for ACPI bindings Suzuki K Poulose
2019-04-25 16:50   ` Mathieu Poirier
2019-04-25 17:30     ` Suzuki K Poulose
2019-04-15 16:04 ` [PATCH v2 33/36] coresight: acpi: Support for components Suzuki K Poulose
2019-04-25 17:45   ` Mathieu Poirier
2019-04-29  8:54     ` Suzuki K Poulose
2019-04-15 16:04 ` [PATCH v2 34/36] [RFC] coresight: Pass coresight_device for coresight_release_platform_data Suzuki K Poulose
2019-04-29 17:40   ` Mathieu Poirier
2019-04-15 16:04 ` [PATCH v2 35/36] [RFC] coresight: add return value for fixup connections Suzuki K Poulose
2019-04-29 17:44   ` Mathieu Poirier
2019-04-15 16:04 ` [PATCH v2 36/36] [RFC] coresight: Expose device connections via sysfs Suzuki K Poulose
2019-04-29 20:50   ` Mathieu Poirier
2019-04-15 16:04 ` [TEST PATCH 37/36][EDK2] edk2-platform: juno: Update ACPI CoreSight Bindings Suzuki K Poulose

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=20190418172245.GB10675@xps15 \
    --to=mathieu.poirier@linaro.org \
    --cc=coresight@lists.linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mike.leach@linaro.org \
    --cc=rjw@rjwysocki.net \
    --cc=robert.walker@arm.com \
    --cc=suzuki.poulose@arm.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox