devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Mathieu Poirier <mathieu.poirier@linaro.org>
To: Suzuki K Poulose <suzuki.poulose@arm.com>
Cc: linux-arm-kernel@lists.infradead.org, robh@kernel.org,
	frowand.list@gmail.com, mark.rutland@arm.com,
	sudeep.holla@arm.com, arm@kernel.org,
	linux-kernel@vger.kernel.org, matt.sealey@arm.com,
	john.horley@arm.com, charles.garcia-tobin@arm.com,
	coresight@lists.linaro.org, devicetree@vger.kernel.org,
	mike.leach@linaro.org
Subject: Re: [PATCH 09/20] coresight: dts: Define new bindings for direction of data flow
Date: Fri, 8 Jun 2018 15:39:25 -0600	[thread overview]
Message-ID: <20180608213925.GH30587@xps15> (raw)
In-Reply-To: <1528235011-30691-10-git-send-email-suzuki.poulose@arm.com>

On Tue, Jun 05, 2018 at 10:43:20PM +0100, Suzuki K Poulose wrote:
> So far we have relied on an undocumented property "slave-mode",
> to indicate if the given port is input or not. Since we are
> redefining the coresight bindings, define new property for the
> "direction" of data flow for a given connection endpoint in the
> device.
> 
> Each endpoint must define the following property.
> 
>  - "direction" : 0 => Port is input
> 		 1 => Port is output
> 
> Cc: Sudeep Holla <sudeep.holla@arm.com>
> Cc: Rob Herring <robh@kernel.org>
> Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
> Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
> ---
>  .../devicetree/bindings/arm/coresight.txt          | 24 ++++++++++++++--------
>  drivers/hwtracing/coresight/of_coresight.c         | 22 ++++++++++++++++----
>  2 files changed, 34 insertions(+), 12 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/arm/coresight.txt b/Documentation/devicetree/bindings/arm/coresight.txt
> index bf75ab3..ff382bc 100644
> --- a/Documentation/devicetree/bindings/arm/coresight.txt
> +++ b/Documentation/devicetree/bindings/arm/coresight.txt
> @@ -103,9 +103,11 @@ with a specific direction of data flow, each connection must define the
>  following properties to uniquely identify the connection details.
>  
>   * Direction of the data flow w.r.t the component :
> -   Each input port must have the following property defined at the "endpoint"
> +   Each hardware port must have the following property defined at the "endpoint"
>     for the port.
> -	"slave-mode"
> +	"direction" - 32bit integer, whose values are defined as follows :
> +		0 => the endpoint is an Input port
> +		1 => the endpoint is an Output port.
>  
>   * Hardware Port number at the component:
>       - Each "endpoint" must define the hardware port of the local end of the
> @@ -129,7 +131,7 @@ Example:
>  		clock-names = "apb_pclk";
>  		port {
>  			etb_in_port: endpoint@0 {
> -				slave-mode;
> +				direction = <0>;
>  				remote-endpoint = <&replicator_out_port0>;
>  				coresight,hwid = <0>;
>  			};
> @@ -144,7 +146,7 @@ Example:
>  		clock-names = "apb_pclk";
>  		port {
>  			tpiu_in_port: endpoint@0 {
> -				slave-mode;
> +				direction = <0>;
>  				remote-endpoint = <&replicator_out_port1>;
>  				coresight,hwid = <0>;
>  			};
> @@ -166,6 +168,7 @@ Example:
>  			port@0 {
>  				reg = <0>;
>  				replicator_out_port0: endpoint {
> +					direction = <1>;
>  					remote-endpoint = <&etb_in_port>;
>  					coresight,hwid = <0>;
>  				};
> @@ -174,6 +177,7 @@ Example:
>  			port@1 {
>  				reg = <1>;
>  				replicator_out_port1: endpoint {
> +					direction = <1>;
>  					remote-endpoint = <&tpiu_in_port>;
>  					coresight,hwid = <1>;
>  				};
> @@ -183,7 +187,7 @@ Example:
>  			port@2 {
>  				reg = <1>;
>  				replicator_in_port0: endpoint {
> -					slave-mode;
> +					direction = <0>;
>  					remote-endpoint = <&funnel_out_port0>;
>  					coresight,hwid = <0>;
>  				};
> @@ -205,6 +209,7 @@ Example:
>  			port@0 {
>  				reg = <0>;
>  				funnel_out_port0: endpoint {
> +					direction = <1>;
>  					remote-endpoint =
>  							<&replicator_in_port0>;
>  					coresight,hwid = <0>;
> @@ -215,7 +220,7 @@ Example:
>  			port@1 {
>  				reg = <1>;
>  				funnel_in_port0: endpoint {
> -					slave-mode;
> +					direction = <0>;
>  					remote-endpoint = <&ptm0_out_port>;
>  					coresight,hwid = <0>;
>  				};
> @@ -224,7 +229,7 @@ Example:
>  			port@2 {
>  				reg = <2>;
>  				funnel_in_port1: endpoint {
> -					slave-mode;
> +					direction = <0>;
>  					remote-endpoint = <&ptm1_out_port>;
>  					coresight,hwid = <1>;
>  				};
> @@ -233,7 +238,7 @@ Example:
>  			port@3 {
>  				reg = <3>;
>  				funnel_in_port2: endpoint {
> -					slave-mode;
> +					direction = <0>;
>  					remote-endpoint = <&etm0_out_port>;
>  					coresight,hwid = <2>;
>  				};
> @@ -252,6 +257,7 @@ Example:
>  		clock-names = "apb_pclk";
>  		port {
>  			ptm0_out_port: endpoint {
> +				direction = <1>;
>  				remote-endpoint = <&funnel_in_port0>;
>  				coresight,hwid = <0>;
>  			};
> @@ -267,6 +273,7 @@ Example:
>  		clock-names = "apb_pclk";
>  		port {
>  			ptm1_out_port: endpoint {
> +				direction = <1>;
>  				remote-endpoint = <&funnel_in_port1>;
>  				coresight,hwid = <0>;
>  			};
> @@ -284,6 +291,7 @@ Example:
>  		clock-names = "apb_pclk";
>  		port {
>  			stm_out_port: endpoint {
> +				direction = <1>;
>  				remote-endpoint = <&main_funnel_in_port2>;
>  				coresight,hwid = <0>;
>  			};
> diff --git a/drivers/hwtracing/coresight/of_coresight.c b/drivers/hwtracing/coresight/of_coresight.c
> index d23d7dd..0d6e6a9 100644
> --- a/drivers/hwtracing/coresight/of_coresight.c
> +++ b/drivers/hwtracing/coresight/of_coresight.c
> @@ -45,7 +45,20 @@ of_coresight_get_endpoint_device(struct device_node *endpoint)
>  			       endpoint, of_dev_node_match);
>  }
>  
> -static void of_coresight_get_ports(const struct device_node *node,
> +static bool of_coresight_endpoint_is_input(struct device *dev,
> +					   struct device_node *ep_node)
> +{
> +	u32 dir;
> +
> +	if (!of_property_read_u32(ep_node, "direction", &dir))
> +		return dir == 0;
> +
> +	dev_warn_once(dev, "Missing mandatory \"direction\" property!\n");
> +	return of_property_read_bool(ep_node, "slave-mode");
> +}
> +
> +static void of_coresight_get_ports(struct device *dev,
> +				   const struct device_node *node,
>  				   int *nr_inport, int *nr_outport)
>  {
>  	struct device_node *ep = NULL;
> @@ -56,7 +69,7 @@ static void of_coresight_get_ports(const struct device_node *node,
>  		if (!ep)
>  			break;
>  
> -		if (of_property_read_bool(ep, "slave-mode"))
> +		if (of_coresight_endpoint_is_input(dev, ep))
>  			in++;
>  		else
>  			out++;
> @@ -149,7 +162,7 @@ static int of_coresight_parse_endpoint(struct device *dev,
>  		 * No need to deal with input ports, processing for as
>  		 * processing for output ports will deal with them.
>  		 */
> -		if (of_find_property(ep, "slave-mode", NULL))
> +		if (of_coresight_endpoint_is_input(dev, ep))
>  			break;
>  
>  		/* Parse the local port details */
> @@ -212,7 +225,8 @@ of_get_coresight_platform_data(struct device *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);
> +	of_coresight_get_ports(dev, node,
> +			       &pdata->nr_inport, &pdata->nr_outport);
>  
>  	/* If there are not output connections, we are done */
>  	if (!pdata->nr_outport)

For both the binding and the code:
Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org>

> -- 
> 2.7.4
> 

  reply	other threads:[~2018-06-08 21:39 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-05 21:43 [PATCH 00/20] coresight: Update device tree bindings Suzuki K Poulose
2018-06-05 21:43 ` [PATCH 01/20] coresight: Fix memory leak in coresight_register Suzuki K Poulose
2018-06-06  6:44   ` Arvind Yadav
2018-06-06 10:16     ` Suzuki K Poulose
2018-06-05 21:43 ` [PATCH 02/20] coresight: of: Fix refcounting for graph nodes Suzuki K Poulose
2018-06-08 19:55   ` Mathieu Poirier
2018-06-11  9:18     ` Suzuki K Poulose
2018-06-05 21:43 ` [PATCH 03/20] coresight: Fix remote endpoint parsing Suzuki K Poulose
2018-06-08 20:05   ` Mathieu Poirier
2018-06-05 21:43 ` [PATCH 04/20] coresight: Cleanup platform description data Suzuki K Poulose
2018-06-08 19:41   ` Mathieu Poirier
2018-06-05 21:43 ` [PATCH 05/20] coresight: platform: Cleanup coresight connection handling Suzuki K Poulose
2018-06-08 20:18   ` Mathieu Poirier
2018-06-05 21:43 ` [PATCH 06/20] coresight: Handle errors in finding input/output ports Suzuki K Poulose
2018-06-08 20:24   ` Mathieu Poirier
2018-06-05 21:43 ` [PATCH 07/20] coresight: dts: Document usage of graph bindings Suzuki K Poulose
2018-06-08 20:30   ` Mathieu Poirier
2018-06-05 21:43 ` [PATCH 08/20] coresight: dts: Cleanup device tree " Suzuki K Poulose
2018-06-08 21:22   ` Mathieu Poirier
2018-06-11  9:22     ` Suzuki K Poulose
2018-06-11 16:52       ` Mathieu Poirier
2018-06-11 16:55         ` Suzuki K Poulose
2018-06-11 21:51           ` Mathieu Poirier
2018-06-05 21:43 ` [PATCH 09/20] coresight: dts: Define new bindings for direction of data flow Suzuki K Poulose
2018-06-08 21:39   ` Mathieu Poirier [this message]
2018-06-05 21:43 ` [PATCH 10/20] dts: juno: Update coresight bindings for hw port Suzuki K Poulose
2018-06-08 21:49   ` Mathieu Poirier
2018-06-08 21:52     ` Mathieu Poirier
2018-06-12  9:50       ` Suzuki K Poulose
2018-06-12 10:42       ` Sudeep Holla
2018-06-05 21:43 ` [PATCH 11/20] dts: hisilicon: Update coresight bindings for hw ports Suzuki K Poulose
2018-06-05 21:43 ` [PATCH 12/20] dts: spreadtrum: " Suzuki K Poulose
2018-06-05 21:43 ` [PATCH 13/20] dts: qcom: " Suzuki K Poulose
2018-06-05 21:43 ` [PATCH 14/20] dts: arm: hisilicon: Update coresight bindings for hardware port Suzuki K Poulose
2018-06-05 21:43 ` [PATCH 15/20] dts: arm: imx7{d,s}: Update coresight binding for hardware ports Suzuki K Poulose
2018-06-19  2:12   ` Shawn Guo
2018-06-19 10:35     ` Stefan Agner
2018-06-19 14:57     ` Mathieu Poirier
2018-06-05 21:43 ` [PATCH 16/20] dts: arm: omap: Update coresight bindings " Suzuki K Poulose
2018-07-03  7:09   ` Tony Lindgren
2018-07-03  7:59     ` Suzuki K Poulose
2018-07-03  8:12       ` Tony Lindgren
2018-06-05 21:43 ` [PATCH 17/20] dts: arm: qcom: " Suzuki K Poulose
2018-06-05 21:43 ` [PATCH 18/20] dts: sama5d2: " Suzuki K Poulose
2018-06-19 21:24   ` Alexandre Belloni
2018-06-20  9:44     ` Suzuki K Poulose
2018-06-20 10:53       ` Alexandre Belloni
2018-06-05 21:43 ` [PATCH 19/20] dts: ste-dbx5x0: Update coresight bindings for hardware port Suzuki K Poulose
2018-06-26  9:30   ` Linus Walleij
2018-06-26  9:31     ` Suzuki K Poulose
2018-06-05 21:43 ` [PATCH 20/20] dts: tc2: Update coresight bindings for hardware ports Suzuki K Poulose
2018-06-20  9:53 ` [PATCH 00/20] coresight: Update device tree 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=20180608213925.GH30587@xps15 \
    --to=mathieu.poirier@linaro.org \
    --cc=arm@kernel.org \
    --cc=charles.garcia-tobin@arm.com \
    --cc=coresight@lists.linaro.org \
    --cc=devicetree@vger.kernel.org \
    --cc=frowand.list@gmail.com \
    --cc=john.horley@arm.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=matt.sealey@arm.com \
    --cc=mike.leach@linaro.org \
    --cc=robh@kernel.org \
    --cc=sudeep.holla@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;
as well as URLs for NNTP newsgroup(s).