linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH V2 1/1] ARM: dts: imx7d: add cortex-a7 coresight component
@ 2015-06-01 20:54 Frank.Li at freescale.com
  2015-06-02  9:26 ` Ivan T. Ivanov
                   ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Frank.Li at freescale.com @ 2015-06-01 20:54 UTC (permalink / raw)
  To: linux-arm-kernel

From: Frank Li <Frank.Li@freescale.com>

Added etm, etb, funnel and replicator

usage example:

    echo 1 >/sys/bus/coresight/devices/30086000.etr/enable_sink
    echo 1 >/sys/bus/coresight/devices/3007c000.etm/enable_source

        coresight-tmc 30086000.etr: TMC enabled
        coresight-replicator replicator.1: REPLICATOR enabled
        coresight-tmc 30084000.tmc: TMC enabled
        coresight-funnel 30083000.funnel: FUNNEL inport 0 enabled
        coresight-funnel 30041000.funnel: FUNNEL inport 0 enabled
        coresight-etm3x 3007c000.etm: ETM tracing enabled

    etm enable here.
    trace data save at /dev/30086000.etr

    cat /dev/30086000.etr > trace.data

        coresight-tmc 30086000.etr: TMC read start
        coresight-tmc 30086000.etr: TMC read end

    use ptm2human(https://github.com/hwangcc23/ptm2human) to show trace data

    ptm2human -i trace.data

Signed-off-by: Frank Li <Frank.Li@freescale.com>
---
Change from V1 to V2
 - remove "0" after @
 - add comments about unused funnel input port
 - add comments about add  arm,primecell-periphid

 arch/arm/boot/dts/imx7d.dtsi | 202 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 202 insertions(+)

diff --git a/arch/arm/boot/dts/imx7d.dtsi b/arch/arm/boot/dts/imx7d.dtsi
index b4cd8fd..d715501 100644
--- a/arch/arm/boot/dts/imx7d.dtsi
+++ b/arch/arm/boot/dts/imx7d.dtsi
@@ -121,6 +121,208 @@
 		clock-output-names = "osc";
 	};
 
+	etr at 30086000 {
+		compatible = "arm,coresight-tmc", "arm,primecell";
+		reg = <0x30086000 0x1000>;
+
+		clocks = <&clks IMX7D_MAIN_AXI_ROOT_CLK>;
+		clock-names = "apb_pclk";
+
+		port {
+			etr_in_port: endpoint {
+				slave-mode;
+				remote-endpoint = <&replicator_out_port1>;
+			};
+		};
+	};
+
+	tpiu at 30087000 {
+		compatible = "arm,coresight-tpiu", "arm,primecell";
+		reg = <0x30087000 0x1000>;
+
+		clocks = <&clks IMX7D_MAIN_AXI_ROOT_CLK>;
+		clock-names = "apb_pclk";
+		port {
+			tpiu_in_port: endpoint at 0 {
+				slave-mode;
+				remote-endpoint = <&replicator_out_port1>;
+			};
+		};
+	};
+
+	replicator {
+		/* non-configurable replicators don't show up on the
+		 * AMBA bus.  As such no need to add "arm,primecell"
+		 */
+		compatible = "arm,coresight-replicator";
+
+		ports {
+			#address-cells = <1>;
+			#size-cells = <0>;
+
+			/* replicator output ports */
+			port at 0 {
+				reg = <0>;
+				replicator_out_port0: endpoint {
+					remote-endpoint = <&tpiu_in_port>;
+				};
+			};
+
+			port at 1 {
+				reg = <1>;
+				replicator_out_port1: endpoint {
+					remote-endpoint = <&etr_in_port>;
+				};
+			};
+
+			/* replicator input port */
+			port at 2 {
+				reg = <0>;
+				replicator_in_port0: endpoint {
+					slave-mode;
+					remote-endpoint = <&etf_out_port>;
+				};
+			};
+		};
+	};
+
+	etf at 30084000 {
+		compatible = "arm,coresight-tmc", "arm,primecell";
+		reg = <0x30084000 0x1000>;
+		clocks = <&clks IMX7D_MAIN_AXI_ROOT_CLK>;
+		clock-names = "apb_pclk";
+
+		ports {
+			#address-cells = <1>;
+			#size-cells = <0>;
+
+			port at 0 {
+				reg = <0>;
+				etf_in_port: endpoint {
+					slave-mode;
+					remote-endpoint = <&hugo_funnel_out_port0>;
+				};
+			};
+
+			port at 1 {
+				reg = <0>;
+				etf_out_port: endpoint {
+					remote-endpoint = <&replicator_in_port0>;
+				};
+			};
+		};
+	};
+
+	funnel at 30083000 {
+		compatible = "arm,coresight-funnel", "arm,primecell";
+		reg = <0x30083000 0x1000>;
+		clocks = <&clks IMX7D_MAIN_AXI_ROOT_CLK>;
+		clock-names = "apb_pclk";
+
+		ports {
+			#address-cells = <1>;
+			#size-cells = <0>;
+
+			/* funnel input ports */
+			port at 0 {
+				reg = <0>;
+				hugo_funnel_in_port0: endpoint {
+					slave-mode;
+					remote-endpoint = <&ca_funnel_out_port0>;
+				};
+			};
+
+			port at 1 {
+				reg = <1>;
+				hugo_funnel_in_port1: endpoint {
+					slave-mode; /* M4 input */
+				};
+			};
+
+			port at 2 {
+				reg = <0>;
+				hugo_funnel_out_port0: endpoint {
+					remote-endpoint = <&etf_in_port>;
+				};
+			};
+
+			/* the other input ports are not connect to anything */
+		};
+	};
+
+	funnel at 30041000 {
+		compatible = "arm,coresight-funnel", "arm,primecell";
+		reg = <0x30041000 0x1000>;
+		clocks = <&clks IMX7D_MAIN_AXI_ROOT_CLK>;
+		clock-names = "apb_pclk";
+
+		ports {
+			#address-cells = <1>;
+			#size-cells = <0>;
+
+			/* funnel input ports */
+			port at 0 {
+				reg = <0>;
+				ca_funnel_in_port0: endpoint {
+					slave-mode;
+					remote-endpoint = <&etm0_out_port>;
+				};
+			};
+
+			port at 1 {
+				reg = <1>;
+				ca_funnel_in_port1: endpoint {
+					slave-mode;
+					remote-endpoint = <&etm1_out_port>;
+				};
+			};
+
+			/* funnel output port */
+			port at 2 {
+				reg = <0>;
+				ca_funnel_out_port0: endpoint {
+					remote-endpoint = <&hugo_funnel_in_port0>;
+				};
+			};
+
+			/* the other input ports are not connect to anything */
+		};
+	};
+
+	etm at 3007c000 {
+		compatible = "arm,coresight-etm3x", "arm,primecell";
+		reg = <0x3007c000 0x1000>;
+		cpu = <&cpu0>;
+		clocks = <&clks IMX7D_MAIN_AXI_ROOT_CLK>;
+		clock-names = "apb_pclk";
+
+		port {
+			etm0_out_port: endpoint {
+				remote-endpoint = <&ca_funnel_in_port0>;
+			};
+		};
+	};
+
+	etm at 3007d000 {
+		compatible = "arm,coresight-etm3x", "arm,primecell";
+		reg = <0x3007d000 0x1000>;
+
+		/* System will hang if added nosmp in kernel command line
+		 * without arm,primecell-periphid because amba bus try to
+		 * read id and core1 power off at this time.
+		 */
+		arm,primecell-periphid =  <0xbb956>;
+		cpu = <&cpu1>;
+		clocks = <&clks IMX7D_MAIN_AXI_ROOT_CLK>;
+		clock-names = "apb_pclk";
+
+		port {
+			etm1_out_port: endpoint {
+				remote-endpoint = <&ca_funnel_in_port1>;
+			};
+		};
+	};
+
 	soc {
 		#address-cells = <1>;
 		#size-cells = <1>;
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH V2 1/1] ARM: dts: imx7d: add cortex-a7 coresight component
  2015-06-01 20:54 [PATCH V2 1/1] ARM: dts: imx7d: add cortex-a7 coresight component Frank.Li at freescale.com
@ 2015-06-02  9:26 ` Ivan T. Ivanov
  2015-06-02 10:54   ` Russell King - ARM Linux
  2015-06-02 14:36 ` Mathieu Poirier
  2015-06-28 13:39 ` Shawn Guo
  2 siblings, 1 reply; 9+ messages in thread
From: Ivan T. Ivanov @ 2015-06-02  9:26 UTC (permalink / raw)
  To: linux-arm-kernel


Hi, 

On Tue, 2015-06-02 at 04:54 +0800, Frank.Li at freescale.com wrote:
> 
> +
> +???????etm at 3007d000 {
> +               compatible = "arm,coresight-etm3x", "arm,primecell";
> +               reg = <0x3007d000 0x1000>;
> +
> +               /* System will hang if added nosmp in kernel command line
> +                       * without arm,primecell-periphid because amba bus try to
> +                       * read id and core1 power off at this time.
> +                       */
> +               arm,primecell-periphid =  <0xbb956>;

I do have similar problem, but in my case it is APB clock which is
missing during device creation time. And I don't know how to fix it.

Adding Russell King as he's the maintainer of the arm,primecell bus.

> +               cpu = <&cpu1>;
> +               clocks = <&clks IMX7D_MAIN_AXI_ROOT_CLK>;
> +               clock-names = "apb_pclk";

Regards,
Ivan

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH V2 1/1] ARM: dts: imx7d: add cortex-a7 coresight component
  2015-06-02  9:26 ` Ivan T. Ivanov
@ 2015-06-02 10:54   ` Russell King - ARM Linux
  2015-06-02 12:15     ` Ivan T. Ivanov
  0 siblings, 1 reply; 9+ messages in thread
From: Russell King - ARM Linux @ 2015-06-02 10:54 UTC (permalink / raw)
  To: linux-arm-kernel

On Tue, Jun 02, 2015 at 12:26:48PM +0300, Ivan T. Ivanov wrote:
> 
> Hi, 
> 
> On Tue, 2015-06-02 at 04:54 +0800, Frank.Li at freescale.com wrote:
> > 
> > +
> > +???????etm at 3007d000 {
> > +               compatible = "arm,coresight-etm3x", "arm,primecell";
> > +               reg = <0x3007d000 0x1000>;
> > +
> > +               /* System will hang if added nosmp in kernel command line
> > +                       * without arm,primecell-periphid because amba bus try to
> > +                       * read id and core1 power off at this time.
> > +                       */
> > +               arm,primecell-periphid =  <0xbb956>;
> 
> I do have similar problem, but in my case it is APB clock which is
> missing during device creation time. And I don't know how to fix it.
> 
> Adding Russell King as he's the maintainer of the arm,primecell bus.

If it was possible to postpone reading the ID until probe time, then
that's how I'd suggest to fix this problem, but unfortunately it isn't.
We need to know the device's ID by the time the bus ->match function
is called.

The problem with the match function is that it has two possible
return values: 0 and non-0 meaning "doesn't match" and "does match".
There's no possibility of returning -EPROBE_DEFER here.

So, if we don't have the ID when we're trying to match drivers to the
devices, our only option is to say "doesn't match" which effectively
means it'll never automatically match its driver.

Short of modifying the driver core (which isn't going to be popular)
I don't see an easy solution to this problem.

For Frank's problem, this looks to me like something that PM domains
should be used for - but I guess it runs into the issue that PM domains
aren't up at the time we try to bring secondary CPUs online - and
brings with it a whole host of issues surrounding the time that
resources (PM domains and therefore clocks) are available.

Maybe what we need there is some way of representing the PM domains,
one where drivers can be attached to a PM domain and enquire at load
time whether it's powered up.

-- 
FTTC broadband for 0.8mile line: currently at 10.5Mbps down 400kbps up
according to speedtest.net.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH V2 1/1] ARM: dts: imx7d: add cortex-a7 coresight component
  2015-06-02 10:54   ` Russell King - ARM Linux
@ 2015-06-02 12:15     ` Ivan T. Ivanov
  0 siblings, 0 replies; 9+ messages in thread
From: Ivan T. Ivanov @ 2015-06-02 12:15 UTC (permalink / raw)
  To: linux-arm-kernel


On Tue, 2015-06-02 at 11:54 +0100, Russell King - ARM Linux wrote:
> On Tue, Jun 02, 2015 at 12:26:48PM +0300, Ivan T. Ivanov wrote:
> > Hi,
> > 
> > On Tue, 2015-06-02 at 04:54 +0800, Frank.Li at freescale.com wrote:
> > > +
> > > +???????etm at 3007d000 {
> > > +               compatible = "arm,coresight-etm3x", "arm,primecell";
> > > +               reg = <0x3007d000 0x1000>;
> > > +
> > > +               /* System will hang if added nosmp in kernel command line
> > > +                       * without arm,primecell-periphid because amba bus try to
> > > +                       * read id and core1 power off at this time.
> > > +                       */
> > > +               arm,primecell-periphid =  <0xbb956>;
> > 
> > I do have similar problem, but in my case it is APB clock which is
> > missing during device creation time. And I don't know how to fix it.
> > 
> > Adding Russell King as he's the maintainer of the arm,primecell bus.
> 
> If it was possible to postpone reading the ID until probe time, then
> that's how I'd suggest to fix this problem, but unfortunately it isn't.
> We need to know the device's ID by the time the bus ->match function
> is called.

I have tried to read device ID again and again on every bus ->match until
succeed. with hope that driver which provide APB clock will be probed
in between, and this solve problem for me. But as Stephen Boyd point me,
this way uevent used for module auto loading will be broken. So no joy.

> Short of modifying the driver core (which isn't going to be popular)
> I don't see an easy solution to this problem.
> 

Thanks,
Ivan

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH V2 1/1] ARM: dts: imx7d: add cortex-a7 coresight component
  2015-06-01 20:54 [PATCH V2 1/1] ARM: dts: imx7d: add cortex-a7 coresight component Frank.Li at freescale.com
  2015-06-02  9:26 ` Ivan T. Ivanov
@ 2015-06-02 14:36 ` Mathieu Poirier
  2015-06-02 15:58   ` Zhi Li
  2015-06-28 13:39 ` Shawn Guo
  2 siblings, 1 reply; 9+ messages in thread
From: Mathieu Poirier @ 2015-06-02 14:36 UTC (permalink / raw)
  To: linux-arm-kernel

On 1 June 2015 at 14:54,  <Frank.Li@freescale.com> wrote:
> From: Frank Li <Frank.Li@freescale.com>
>
> Added etm, etb, funnel and replicator
>
> usage example:
>
>     echo 1 >/sys/bus/coresight/devices/30086000.etr/enable_sink
>     echo 1 >/sys/bus/coresight/devices/3007c000.etm/enable_source
>
>         coresight-tmc 30086000.etr: TMC enabled
>         coresight-replicator replicator.1: REPLICATOR enabled
>         coresight-tmc 30084000.tmc: TMC enabled
>         coresight-funnel 30083000.funnel: FUNNEL inport 0 enabled
>         coresight-funnel 30041000.funnel: FUNNEL inport 0 enabled
>         coresight-etm3x 3007c000.etm: ETM tracing enabled
>
>     etm enable here.
>     trace data save at /dev/30086000.etr
>
>     cat /dev/30086000.etr > trace.data
>
>         coresight-tmc 30086000.etr: TMC read start
>         coresight-tmc 30086000.etr: TMC read end
>
>     use ptm2human(https://github.com/hwangcc23/ptm2human) to show trace data
>
>     ptm2human -i trace.data
>
> Signed-off-by: Frank Li <Frank.Li@freescale.com>
> ---
> Change from V1 to V2
>  - remove "0" after @
>  - add comments about unused funnel input port
>  - add comments about add  arm,primecell-periphid
>
>  arch/arm/boot/dts/imx7d.dtsi | 202 +++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 202 insertions(+)
>
> diff --git a/arch/arm/boot/dts/imx7d.dtsi b/arch/arm/boot/dts/imx7d.dtsi
> index b4cd8fd..d715501 100644
> --- a/arch/arm/boot/dts/imx7d.dtsi
> +++ b/arch/arm/boot/dts/imx7d.dtsi
> @@ -121,6 +121,208 @@
>                 clock-output-names = "osc";
>         };
>
> +       etr at 30086000 {
> +               compatible = "arm,coresight-tmc", "arm,primecell";
> +               reg = <0x30086000 0x1000>;
> +
> +               clocks = <&clks IMX7D_MAIN_AXI_ROOT_CLK>;
> +               clock-names = "apb_pclk";
> +
> +               port {
> +                       etr_in_port: endpoint {
> +                               slave-mode;
> +                               remote-endpoint = <&replicator_out_port1>;
> +                       };
> +               };
> +       };
> +
> +       tpiu at 30087000 {
> +               compatible = "arm,coresight-tpiu", "arm,primecell";
> +               reg = <0x30087000 0x1000>;
> +
> +               clocks = <&clks IMX7D_MAIN_AXI_ROOT_CLK>;
> +               clock-names = "apb_pclk";
> +               port {
> +                       tpiu_in_port: endpoint at 0 {
> +                               slave-mode;
> +                               remote-endpoint = <&replicator_out_port1>;
> +                       };
> +               };
> +       };
> +
> +       replicator {
> +               /* non-configurable replicators don't show up on the
> +                * AMBA bus.  As such no need to add "arm,primecell"
> +                */
> +               compatible = "arm,coresight-replicator";
> +
> +               ports {
> +                       #address-cells = <1>;
> +                       #size-cells = <0>;
> +
> +                       /* replicator output ports */
> +                       port at 0 {
> +                               reg = <0>;
> +                               replicator_out_port0: endpoint {
> +                                       remote-endpoint = <&tpiu_in_port>;
> +                               };
> +                       };
> +
> +                       port at 1 {
> +                               reg = <1>;
> +                               replicator_out_port1: endpoint {
> +                                       remote-endpoint = <&etr_in_port>;
> +                               };
> +                       };
> +
> +                       /* replicator input port */
> +                       port at 2 {
> +                               reg = <0>;
> +                               replicator_in_port0: endpoint {
> +                                       slave-mode;
> +                                       remote-endpoint = <&etf_out_port>;
> +                               };
> +                       };
> +               };
> +       };
> +
> +       etf at 30084000 {
> +               compatible = "arm,coresight-tmc", "arm,primecell";
> +               reg = <0x30084000 0x1000>;
> +               clocks = <&clks IMX7D_MAIN_AXI_ROOT_CLK>;
> +               clock-names = "apb_pclk";
> +
> +               ports {
> +                       #address-cells = <1>;
> +                       #size-cells = <0>;
> +
> +                       port at 0 {
> +                               reg = <0>;
> +                               etf_in_port: endpoint {
> +                                       slave-mode;
> +                                       remote-endpoint = <&hugo_funnel_out_port0>;
> +                               };
> +                       };
> +
> +                       port at 1 {
> +                               reg = <0>;
> +                               etf_out_port: endpoint {
> +                                       remote-endpoint = <&replicator_in_port0>;
> +                               };
> +                       };
> +               };
> +       };
> +
> +       funnel at 30083000 {
> +               compatible = "arm,coresight-funnel", "arm,primecell";
> +               reg = <0x30083000 0x1000>;
> +               clocks = <&clks IMX7D_MAIN_AXI_ROOT_CLK>;
> +               clock-names = "apb_pclk";
> +
> +               ports {
> +                       #address-cells = <1>;
> +                       #size-cells = <0>;
> +
> +                       /* funnel input ports */
> +                       port at 0 {
> +                               reg = <0>;
> +                               hugo_funnel_in_port0: endpoint {
> +                                       slave-mode;
> +                                       remote-endpoint = <&ca_funnel_out_port0>;
> +                               };
> +                       };
> +
> +                       port at 1 {
> +                               reg = <1>;
> +                               hugo_funnel_in_port1: endpoint {
> +                                       slave-mode; /* M4 input */
> +                               };
> +                       };
> +
> +                       port at 2 {
> +                               reg = <0>;
> +                               hugo_funnel_out_port0: endpoint {
> +                                       remote-endpoint = <&etf_in_port>;
> +                               };
> +                       };
> +
> +                       /* the other input ports are not connect to anything */
> +               };
> +       };
> +
> +       funnel at 30041000 {
> +               compatible = "arm,coresight-funnel", "arm,primecell";
> +               reg = <0x30041000 0x1000>;
> +               clocks = <&clks IMX7D_MAIN_AXI_ROOT_CLK>;
> +               clock-names = "apb_pclk";
> +
> +               ports {
> +                       #address-cells = <1>;
> +                       #size-cells = <0>;
> +
> +                       /* funnel input ports */
> +                       port at 0 {
> +                               reg = <0>;
> +                               ca_funnel_in_port0: endpoint {
> +                                       slave-mode;
> +                                       remote-endpoint = <&etm0_out_port>;
> +                               };
> +                       };
> +
> +                       port at 1 {
> +                               reg = <1>;
> +                               ca_funnel_in_port1: endpoint {
> +                                       slave-mode;
> +                                       remote-endpoint = <&etm1_out_port>;
> +                               };
> +                       };
> +
> +                       /* funnel output port */
> +                       port at 2 {
> +                               reg = <0>;
> +                               ca_funnel_out_port0: endpoint {
> +                                       remote-endpoint = <&hugo_funnel_in_port0>;
> +                               };
> +                       };
> +
> +                       /* the other input ports are not connect to anything */
> +               };
> +       };
> +
> +       etm at 3007c000 {
> +               compatible = "arm,coresight-etm3x", "arm,primecell";
> +               reg = <0x3007c000 0x1000>;
> +               cpu = <&cpu0>;
> +               clocks = <&clks IMX7D_MAIN_AXI_ROOT_CLK>;
> +               clock-names = "apb_pclk";
> +
> +               port {
> +                       etm0_out_port: endpoint {
> +                               remote-endpoint = <&ca_funnel_in_port0>;
> +                       };
> +               };
> +       };
> +
> +       etm at 3007d000 {
> +               compatible = "arm,coresight-etm3x", "arm,primecell";
> +               reg = <0x3007d000 0x1000>;
> +
> +               /* System will hang if added nosmp in kernel command line
> +                * without arm,primecell-periphid because amba bus try to
> +                * read id and core1 power off at this time.
> +                */
> +               arm,primecell-periphid =  <0xbb956>;
> +               cpu = <&cpu1>;
> +               clocks = <&clks IMX7D_MAIN_AXI_ROOT_CLK>;
> +               clock-names = "apb_pclk";
> +
> +               port {
> +                       etm1_out_port: endpoint {
> +                               remote-endpoint = <&ca_funnel_in_port1>;
> +                       };
> +               };
> +       };
> +
>         soc {
>                 #address-cells = <1>;
>                 #size-cells = <1>;
> --
> 1.9.1
>

I am good with this patch and would take it in my tree but I simply
can't find "imx7d.dtsi" anywhere.  Who is the maintainer, where is the
tree?

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH V2 1/1] ARM: dts: imx7d: add cortex-a7 coresight component
  2015-06-02 14:36 ` Mathieu Poirier
@ 2015-06-02 15:58   ` Zhi Li
  2015-06-02 18:17     ` Mathieu Poirier
  0 siblings, 1 reply; 9+ messages in thread
From: Zhi Li @ 2015-06-02 15:58 UTC (permalink / raw)
  To: linux-arm-kernel

On Tue, Jun 2, 2015 at 9:36 AM, Mathieu Poirier
<mathieu.poirier@linaro.org> wrote:
> I am good with this patch and would take it in my tree but I simply
> can't find "imx7d.dtsi" anywhere.  Who is the maintainer, where is the
> tree?

It is in guo shawn's tree.

best regards
Frank Li

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH V2 1/1] ARM: dts: imx7d: add cortex-a7 coresight component
  2015-06-02 15:58   ` Zhi Li
@ 2015-06-02 18:17     ` Mathieu Poirier
  0 siblings, 0 replies; 9+ messages in thread
From: Mathieu Poirier @ 2015-06-02 18:17 UTC (permalink / raw)
  To: linux-arm-kernel

On 2 June 2015 at 09:58, Zhi Li <lznuaa@gmail.com> wrote:
> On Tue, Jun 2, 2015 at 9:36 AM, Mathieu Poirier
> <mathieu.poirier@linaro.org> wrote:
>> I am good with this patch and would take it in my tree but I simply
>> can't find "imx7d.dtsi" anywhere.  Who is the maintainer, where is the
>> tree?
>
> It is in guo shawn's tree.
>
> best regards
> Frank Li

That explains things - Shawn, can you take the patch?  Doing so please add:

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

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH V2 1/1] ARM: dts: imx7d: add cortex-a7 coresight component
  2015-06-01 20:54 [PATCH V2 1/1] ARM: dts: imx7d: add cortex-a7 coresight component Frank.Li at freescale.com
  2015-06-02  9:26 ` Ivan T. Ivanov
  2015-06-02 14:36 ` Mathieu Poirier
@ 2015-06-28 13:39 ` Shawn Guo
  2015-06-29 14:36   ` Mathieu Poirier
  2 siblings, 1 reply; 9+ messages in thread
From: Shawn Guo @ 2015-06-28 13:39 UTC (permalink / raw)
  To: linux-arm-kernel

On Tue, Jun 02, 2015 at 04:54:41AM +0800, Frank.Li at freescale.com wrote:
> From: Frank Li <Frank.Li@freescale.com>
> 
> Added etm, etb, funnel and replicator
> 
> usage example:
> 
>     echo 1 >/sys/bus/coresight/devices/30086000.etr/enable_sink
>     echo 1 >/sys/bus/coresight/devices/3007c000.etm/enable_source
> 
>         coresight-tmc 30086000.etr: TMC enabled
>         coresight-replicator replicator.1: REPLICATOR enabled
>         coresight-tmc 30084000.tmc: TMC enabled
>         coresight-funnel 30083000.funnel: FUNNEL inport 0 enabled
>         coresight-funnel 30041000.funnel: FUNNEL inport 0 enabled
>         coresight-etm3x 3007c000.etm: ETM tracing enabled
> 
>     etm enable here.
>     trace data save at /dev/30086000.etr
> 
>     cat /dev/30086000.etr > trace.data
> 
>         coresight-tmc 30086000.etr: TMC read start
>         coresight-tmc 30086000.etr: TMC read end
> 
>     use ptm2human(https://github.com/hwangcc23/ptm2human) to show trace data
> 
>     ptm2human -i trace.data
> 
> Signed-off-by: Frank Li <Frank.Li@freescale.com>
> ---
> Change from V1 to V2
>  - remove "0" after @
>  - add comments about unused funnel input port
>  - add comments about add  arm,primecell-periphid
> 
>  arch/arm/boot/dts/imx7d.dtsi | 202 +++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 202 insertions(+)
> 
> diff --git a/arch/arm/boot/dts/imx7d.dtsi b/arch/arm/boot/dts/imx7d.dtsi
> index b4cd8fd..d715501 100644
> --- a/arch/arm/boot/dts/imx7d.dtsi
> +++ b/arch/arm/boot/dts/imx7d.dtsi
> @@ -121,6 +121,208 @@
>  		clock-output-names = "osc";
>  	};
>  
> +	etr at 30086000 {
> +		compatible = "arm,coresight-tmc", "arm,primecell";
> +		reg = <0x30086000 0x1000>;
> +

Drop this new line.

> +		clocks = <&clks IMX7D_MAIN_AXI_ROOT_CLK>;
> +		clock-names = "apb_pclk";
> +
> +		port {
> +			etr_in_port: endpoint {
> +				slave-mode;
> +				remote-endpoint = <&replicator_out_port1>;
> +			};
> +		};
> +	};
> +
> +	tpiu at 30087000 {
> +		compatible = "arm,coresight-tpiu", "arm,primecell";
> +		reg = <0x30087000 0x1000>;
> +

Ditto

> +		clocks = <&clks IMX7D_MAIN_AXI_ROOT_CLK>;
> +		clock-names = "apb_pclk";

Have a new line here.

> +		port {
> +			tpiu_in_port: endpoint at 0 {

Why do we need a @unit-address here?

> +				slave-mode;
> +				remote-endpoint = <&replicator_out_port1>;
> +			};
> +		};
> +	};
> +
> +	replicator {
> +		/* non-configurable replicators don't show up on the
> +		 * AMBA bus.  As such no need to add "arm,primecell"
> +		 */

		/*
		 * Multiple-line comment
		 */

> +		compatible = "arm,coresight-replicator";
> +
> +		ports {
> +			#address-cells = <1>;
> +			#size-cells = <0>;
> +
> +			/* replicator output ports */
> +			port at 0 {
> +				reg = <0>;
> +				replicator_out_port0: endpoint {
> +					remote-endpoint = <&tpiu_in_port>;
> +				};
> +			};
> +
> +			port at 1 {
> +				reg = <1>;
> +				replicator_out_port1: endpoint {
> +					remote-endpoint = <&etr_in_port>;
> +				};
> +			};
> +
> +			/* replicator input port */
> +			port at 2 {
> +				reg = <0>;
> +				replicator_in_port0: endpoint {
> +					slave-mode;
> +					remote-endpoint = <&etf_out_port>;
> +				};
> +			};
> +		};
> +	};
> +
> +	etf at 30084000 {
> +		compatible = "arm,coresight-tmc", "arm,primecell";
> +		reg = <0x30084000 0x1000>;
> +		clocks = <&clks IMX7D_MAIN_AXI_ROOT_CLK>;
> +		clock-names = "apb_pclk";
> +
> +		ports {
> +			#address-cells = <1>;
> +			#size-cells = <0>;
> +
> +			port at 0 {
> +				reg = <0>;
> +				etf_in_port: endpoint {
> +					slave-mode;
> +					remote-endpoint = <&hugo_funnel_out_port0>;
> +				};
> +			};
> +
> +			port at 1 {
> +				reg = <0>;
> +				etf_out_port: endpoint {
> +					remote-endpoint = <&replicator_in_port0>;
> +				};
> +			};
> +		};
> +	};
> +
> +	funnel at 30083000 {
> +		compatible = "arm,coresight-funnel", "arm,primecell";
> +		reg = <0x30083000 0x1000>;
> +		clocks = <&clks IMX7D_MAIN_AXI_ROOT_CLK>;
> +		clock-names = "apb_pclk";
> +
> +		ports {
> +			#address-cells = <1>;
> +			#size-cells = <0>;
> +
> +			/* funnel input ports */
> +			port at 0 {
> +				reg = <0>;
> +				hugo_funnel_in_port0: endpoint {
> +					slave-mode;
> +					remote-endpoint = <&ca_funnel_out_port0>;
> +				};
> +			};
> +
> +			port at 1 {
> +				reg = <1>;
> +				hugo_funnel_in_port1: endpoint {
> +					slave-mode; /* M4 input */
> +				};
> +			};
> +
> +			port at 2 {
> +				reg = <0>;
> +				hugo_funnel_out_port0: endpoint {
> +					remote-endpoint = <&etf_in_port>;
> +				};
> +			};
> +
> +			/* the other input ports are not connect to anything */
> +		};
> +	};
> +
> +	funnel at 30041000 {
> +		compatible = "arm,coresight-funnel", "arm,primecell";
> +		reg = <0x30041000 0x1000>;
> +		clocks = <&clks IMX7D_MAIN_AXI_ROOT_CLK>;
> +		clock-names = "apb_pclk";
> +
> +		ports {
> +			#address-cells = <1>;
> +			#size-cells = <0>;
> +
> +			/* funnel input ports */
> +			port at 0 {
> +				reg = <0>;
> +				ca_funnel_in_port0: endpoint {
> +					slave-mode;
> +					remote-endpoint = <&etm0_out_port>;
> +				};
> +			};
> +
> +			port at 1 {
> +				reg = <1>;
> +				ca_funnel_in_port1: endpoint {
> +					slave-mode;
> +					remote-endpoint = <&etm1_out_port>;
> +				};
> +			};
> +
> +			/* funnel output port */
> +			port at 2 {
> +				reg = <0>;
> +				ca_funnel_out_port0: endpoint {
> +					remote-endpoint = <&hugo_funnel_in_port0>;
> +				};
> +			};
> +
> +			/* the other input ports are not connect to anything */
> +		};
> +	};
> +
> +	etm at 3007c000 {
> +		compatible = "arm,coresight-etm3x", "arm,primecell";
> +		reg = <0x3007c000 0x1000>;
> +		cpu = <&cpu0>;
> +		clocks = <&clks IMX7D_MAIN_AXI_ROOT_CLK>;
> +		clock-names = "apb_pclk";
> +
> +		port {
> +			etm0_out_port: endpoint {
> +				remote-endpoint = <&ca_funnel_in_port0>;
> +			};
> +		};
> +	};
> +
> +	etm at 3007d000 {
> +		compatible = "arm,coresight-etm3x", "arm,primecell";
> +		reg = <0x3007d000 0x1000>;
> +
> +		/* System will hang if added nosmp in kernel command line
> +		 * without arm,primecell-periphid because amba bus try to
> +		 * read id and core1 power off at this time.
> +		 */

		/*
		 * Multiple-line comment
		 */

> +		arm,primecell-periphid =  <0xbb956>;

One space after '='

Shawn

> +		cpu = <&cpu1>;
> +		clocks = <&clks IMX7D_MAIN_AXI_ROOT_CLK>;
> +		clock-names = "apb_pclk";
> +
> +		port {
> +			etm1_out_port: endpoint {
> +				remote-endpoint = <&ca_funnel_in_port1>;
> +			};
> +		};
> +	};
> +
>  	soc {
>  		#address-cells = <1>;
>  		#size-cells = <1>;
> -- 
> 1.9.1
> 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH V2 1/1] ARM: dts: imx7d: add cortex-a7 coresight component
  2015-06-28 13:39 ` Shawn Guo
@ 2015-06-29 14:36   ` Mathieu Poirier
  0 siblings, 0 replies; 9+ messages in thread
From: Mathieu Poirier @ 2015-06-29 14:36 UTC (permalink / raw)
  To: linux-arm-kernel

On 28 June 2015 at 07:39, Shawn Guo <shawnguo@kernel.org> wrote:
> On Tue, Jun 02, 2015 at 04:54:41AM +0800, Frank.Li at freescale.com wrote:
>> From: Frank Li <Frank.Li@freescale.com>
>>
>> Added etm, etb, funnel and replicator
>>
>> usage example:
>>
>>     echo 1 >/sys/bus/coresight/devices/30086000.etr/enable_sink
>>     echo 1 >/sys/bus/coresight/devices/3007c000.etm/enable_source
>>
>>         coresight-tmc 30086000.etr: TMC enabled
>>         coresight-replicator replicator.1: REPLICATOR enabled
>>         coresight-tmc 30084000.tmc: TMC enabled
>>         coresight-funnel 30083000.funnel: FUNNEL inport 0 enabled
>>         coresight-funnel 30041000.funnel: FUNNEL inport 0 enabled
>>         coresight-etm3x 3007c000.etm: ETM tracing enabled
>>
>>     etm enable here.
>>     trace data save at /dev/30086000.etr
>>
>>     cat /dev/30086000.etr > trace.data
>>
>>         coresight-tmc 30086000.etr: TMC read start
>>         coresight-tmc 30086000.etr: TMC read end
>>
>>     use ptm2human(https://github.com/hwangcc23/ptm2human) to show trace data
>>
>>     ptm2human -i trace.data
>>
>> Signed-off-by: Frank Li <Frank.Li@freescale.com>
>> ---
>> Change from V1 to V2
>>  - remove "0" after @
>>  - add comments about unused funnel input port
>>  - add comments about add  arm,primecell-periphid
>>
>>  arch/arm/boot/dts/imx7d.dtsi | 202 +++++++++++++++++++++++++++++++++++++++++++
>>  1 file changed, 202 insertions(+)
>>
>> diff --git a/arch/arm/boot/dts/imx7d.dtsi b/arch/arm/boot/dts/imx7d.dtsi
>> index b4cd8fd..d715501 100644
>> --- a/arch/arm/boot/dts/imx7d.dtsi
>> +++ b/arch/arm/boot/dts/imx7d.dtsi
>> @@ -121,6 +121,208 @@
>>               clock-output-names = "osc";
>>       };
>>
>> +     etr at 30086000 {
>> +             compatible = "arm,coresight-tmc", "arm,primecell";
>> +             reg = <0x30086000 0x1000>;
>> +
>
> Drop this new line.
>
>> +             clocks = <&clks IMX7D_MAIN_AXI_ROOT_CLK>;
>> +             clock-names = "apb_pclk";
>> +
>> +             port {
>> +                     etr_in_port: endpoint {
>> +                             slave-mode;
>> +                             remote-endpoint = <&replicator_out_port1>;
>> +                     };
>> +             };
>> +     };
>> +
>> +     tpiu at 30087000 {
>> +             compatible = "arm,coresight-tpiu", "arm,primecell";
>> +             reg = <0x30087000 0x1000>;
>> +
>
> Ditto
>
>> +             clocks = <&clks IMX7D_MAIN_AXI_ROOT_CLK>;
>> +             clock-names = "apb_pclk";
>
> Have a new line here.
>
>> +             port {
>> +                     tpiu_in_port: endpoint at 0 {
>
> Why do we need a @unit-address here?

Good catch - The "@0" is indeed not required.

>
>> +                             slave-mode;
>> +                             remote-endpoint = <&replicator_out_port1>;
>> +                     };
>> +             };
>> +     };
>> +
>> +     replicator {
>> +             /* non-configurable replicators don't show up on the
>> +              * AMBA bus.  As such no need to add "arm,primecell"
>> +              */
>
>                 /*
>                  * Multiple-line comment
>                  */
>
>> +             compatible = "arm,coresight-replicator";
>> +
>> +             ports {
>> +                     #address-cells = <1>;
>> +                     #size-cells = <0>;
>> +
>> +                     /* replicator output ports */
>> +                     port at 0 {
>> +                             reg = <0>;
>> +                             replicator_out_port0: endpoint {
>> +                                     remote-endpoint = <&tpiu_in_port>;
>> +                             };
>> +                     };
>> +
>> +                     port at 1 {
>> +                             reg = <1>;
>> +                             replicator_out_port1: endpoint {
>> +                                     remote-endpoint = <&etr_in_port>;
>> +                             };
>> +                     };
>> +
>> +                     /* replicator input port */
>> +                     port at 2 {
>> +                             reg = <0>;
>> +                             replicator_in_port0: endpoint {
>> +                                     slave-mode;
>> +                                     remote-endpoint = <&etf_out_port>;
>> +                             };
>> +                     };
>> +             };
>> +     };
>> +
>> +     etf at 30084000 {
>> +             compatible = "arm,coresight-tmc", "arm,primecell";
>> +             reg = <0x30084000 0x1000>;
>> +             clocks = <&clks IMX7D_MAIN_AXI_ROOT_CLK>;
>> +             clock-names = "apb_pclk";
>> +
>> +             ports {
>> +                     #address-cells = <1>;
>> +                     #size-cells = <0>;
>> +
>> +                     port at 0 {
>> +                             reg = <0>;
>> +                             etf_in_port: endpoint {
>> +                                     slave-mode;
>> +                                     remote-endpoint = <&hugo_funnel_out_port0>;
>> +                             };
>> +                     };
>> +
>> +                     port at 1 {
>> +                             reg = <0>;
>> +                             etf_out_port: endpoint {
>> +                                     remote-endpoint = <&replicator_in_port0>;
>> +                             };
>> +                     };
>> +             };
>> +     };
>> +
>> +     funnel at 30083000 {
>> +             compatible = "arm,coresight-funnel", "arm,primecell";
>> +             reg = <0x30083000 0x1000>;
>> +             clocks = <&clks IMX7D_MAIN_AXI_ROOT_CLK>;
>> +             clock-names = "apb_pclk";
>> +
>> +             ports {
>> +                     #address-cells = <1>;
>> +                     #size-cells = <0>;
>> +
>> +                     /* funnel input ports */
>> +                     port at 0 {
>> +                             reg = <0>;
>> +                             hugo_funnel_in_port0: endpoint {
>> +                                     slave-mode;
>> +                                     remote-endpoint = <&ca_funnel_out_port0>;
>> +                             };
>> +                     };
>> +
>> +                     port at 1 {
>> +                             reg = <1>;
>> +                             hugo_funnel_in_port1: endpoint {
>> +                                     slave-mode; /* M4 input */
>> +                             };
>> +                     };
>> +
>> +                     port at 2 {
>> +                             reg = <0>;
>> +                             hugo_funnel_out_port0: endpoint {
>> +                                     remote-endpoint = <&etf_in_port>;
>> +                             };
>> +                     };
>> +
>> +                     /* the other input ports are not connect to anything */
>> +             };
>> +     };
>> +
>> +     funnel at 30041000 {
>> +             compatible = "arm,coresight-funnel", "arm,primecell";
>> +             reg = <0x30041000 0x1000>;
>> +             clocks = <&clks IMX7D_MAIN_AXI_ROOT_CLK>;
>> +             clock-names = "apb_pclk";
>> +
>> +             ports {
>> +                     #address-cells = <1>;
>> +                     #size-cells = <0>;
>> +
>> +                     /* funnel input ports */
>> +                     port at 0 {
>> +                             reg = <0>;
>> +                             ca_funnel_in_port0: endpoint {
>> +                                     slave-mode;
>> +                                     remote-endpoint = <&etm0_out_port>;
>> +                             };
>> +                     };
>> +
>> +                     port at 1 {
>> +                             reg = <1>;
>> +                             ca_funnel_in_port1: endpoint {
>> +                                     slave-mode;
>> +                                     remote-endpoint = <&etm1_out_port>;
>> +                             };
>> +                     };
>> +
>> +                     /* funnel output port */
>> +                     port at 2 {
>> +                             reg = <0>;
>> +                             ca_funnel_out_port0: endpoint {
>> +                                     remote-endpoint = <&hugo_funnel_in_port0>;
>> +                             };
>> +                     };
>> +
>> +                     /* the other input ports are not connect to anything */
>> +             };
>> +     };
>> +
>> +     etm at 3007c000 {
>> +             compatible = "arm,coresight-etm3x", "arm,primecell";
>> +             reg = <0x3007c000 0x1000>;
>> +             cpu = <&cpu0>;
>> +             clocks = <&clks IMX7D_MAIN_AXI_ROOT_CLK>;
>> +             clock-names = "apb_pclk";
>> +
>> +             port {
>> +                     etm0_out_port: endpoint {
>> +                             remote-endpoint = <&ca_funnel_in_port0>;
>> +                     };
>> +             };
>> +     };
>> +
>> +     etm at 3007d000 {
>> +             compatible = "arm,coresight-etm3x", "arm,primecell";
>> +             reg = <0x3007d000 0x1000>;
>> +
>> +             /* System will hang if added nosmp in kernel command line
>> +              * without arm,primecell-periphid because amba bus try to
>> +              * read id and core1 power off at this time.
>> +              */
>
>                 /*
>                  * Multiple-line comment
>                  */
>
>> +             arm,primecell-periphid =  <0xbb956>;
>
> One space after '='
>
> Shawn
>
>> +             cpu = <&cpu1>;
>> +             clocks = <&clks IMX7D_MAIN_AXI_ROOT_CLK>;
>> +             clock-names = "apb_pclk";
>> +
>> +             port {
>> +                     etm1_out_port: endpoint {
>> +                             remote-endpoint = <&ca_funnel_in_port1>;
>> +                     };
>> +             };
>> +     };
>> +
>>       soc {
>>               #address-cells = <1>;
>>               #size-cells = <1>;
>> --
>> 1.9.1
>>
>>
>> _______________________________________________
>> linux-arm-kernel mailing list
>> linux-arm-kernel at lists.infradead.org
>> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2015-06-29 14:36 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-06-01 20:54 [PATCH V2 1/1] ARM: dts: imx7d: add cortex-a7 coresight component Frank.Li at freescale.com
2015-06-02  9:26 ` Ivan T. Ivanov
2015-06-02 10:54   ` Russell King - ARM Linux
2015-06-02 12:15     ` Ivan T. Ivanov
2015-06-02 14:36 ` Mathieu Poirier
2015-06-02 15:58   ` Zhi Li
2015-06-02 18:17     ` Mathieu Poirier
2015-06-28 13:39 ` Shawn Guo
2015-06-29 14:36   ` Mathieu Poirier

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).