On Mon, Aug 19, 2024 at 11:51:41AM +0200, Krzysztof Kozlowski wrote: > On 19/08/2024 10:51, JieGan wrote: > > On Mon, Aug 19, 2024 at 08:25:33AM +0200, Krzysztof Kozlowski wrote: > >> On 19/08/2024 03:49, JieGan wrote: > >>> On Sun, Aug 18, 2024 at 08:28:34AM -0600, Rob Herring wrote: > >>>> On Mon, Aug 12, 2024 at 10:41:39AM +0800, Jie Gan wrote: > >>>>> Add binding file to specify how to define a Coresight TMC > >>>>> Control Unit device in device tree. > >>>>> > >>>>> It is responsible for controlling the data filter function > >>>>> based on the source device's Trace ID for TMC ETR device. > >>>>> The trace data with that Trace id can get into ETR's buffer > >>>>> while other trace data gets ignored. > >>>>> > >>>>> Signed-off-by: Jie Gan <quic_jiegan@xxxxxxxxxxx> > >>>>> --- > >>>>> .../bindings/arm/qcom,coresight-ctcu.yaml | 79 +++++++++++++++++++ > >>>>> 1 file changed, 79 insertions(+) > >>>>> create mode 100644 Documentation/devicetree/bindings/arm/qcom,coresight-ctcu.yaml > >>>>> > >>>>> diff --git a/Documentation/devicetree/bindings/arm/qcom,coresight-ctcu.yaml b/Documentation/devicetree/bindings/arm/qcom,coresight-ctcu.yaml > >>>>> new file mode 100644 > >>>>> index 000000000000..7a9580007942 > >>>>> --- /dev/null > >>>>> +++ b/Documentation/devicetree/bindings/arm/qcom,coresight-ctcu.yaml > >>>>> @@ -0,0 +1,79 @@ > >>>>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > >>>>> +%YAML 1.2 > >>>>> +--- > >>>>> +$id: http://devicetree.org/schemas/arm/qcom,coresight-ctcu.yaml# > >>>>> +$schema: http://devicetree.org/meta-schemas/core.yaml# > >>>>> + > >>>>> +title: CoreSight TMC Control Unit > >>>>> + > >>>>> +maintainers: > >>>>> + - Yuanfang Zhang <quic_yuanfang@xxxxxxxxxxx> > >>>>> + - Mao Jinlong <quic_jinlmao@xxxxxxxxxxx> > >>>>> + - Jie Gan <quic_jiegan@xxxxxxxxxxx> > >>>>> + > >>>>> +description: > >>>>> + The Coresight TMC Control unit controls various Coresight behaviors. > >>>>> + It works as a helper device when connected to TMC ETR device. > >>>>> + It is responsible for controlling the data filter function based on > >>>>> + the source device's Trace ID for TMC ETR device. The trace data with > >>>>> + that Trace id can get into ETR's buffer while other trace data gets > >>>>> + ignored. > >>>> > >>>> Nowhere is TMC defined. > >>> The Coresight TMC control unit(CTCU) connected to Coresight TMC device via replicator and > >>> works as a helper device to TMC device. > >> > >> Did you understand the feedback or just responding with whatever to get > >> rid of reviewers? > > > > Sorry for the insufficient clarity in my response, I am just misunderstood the feedback and try > > to explain the relationship between TMC and CTCU device. > > > > I will add the TMC description to explain what TMC is as shown below: > > The Trace Memory Controller(TMC) is used for Embedded Trace Buffer(ETB), Embedded Trace FIFO(ETF) > > and Embedded Trace Router(ETR) configurations. The configuration mode (ETB, ETF, ETR) is > > discovered at boot time when the device is probed. > > Thanks. > > > > >> > >>> > >>> The in-ports listed below illustrate their connection to TMC devices. > >>> > >>>> > >>>>> + > >>>>> +properties: > >>>>> + compatible: > >>>>> + enum: > >>>>> + - qcom,sa8775p-ctcu > >>>>> + > >>>>> + reg: > >>>>> + maxItems: 1 > >>>>> + > >>>>> + clocks: > >>>>> + maxItems: 1 > >>>>> + > >>>>> + clock-names: > >>>>> + items: > >>>>> + - const: apb > >>>>> + > >>>>> + in-ports: > >>>> > >>>> Use 'ports' unless you have both in and out ports. > >>> The ‘in-ports’ and ‘out-ports’ properties will be parsed by ‘of_coresight_get_port_parent’ > >>> and their relationships to other devices will be stored in the coresight_platform_data structure. > >>> > >>> for example: > >>> struct coresight_platform_data { > >>> int nr_inconns; > >>> int nr_outconns; > >>> struct coresight_connection **out_conns; > >>> struct coresight_connection **in_conns; > >>> }; > >>> > >>> https://elixir.bootlin.com/linux/v6.11-rc4/source/drivers/hwtracing/coresight/coresight-platform.c#L147 > >> > >> and? If you respond with some unrelated argument, we will respond with > >> the same: Use 'ports' unless you have both in and out ports. > > > > Sorry for the insufficient response. > > > > The Coresight driver prefers using ‘in-ports’ and ‘out-ports’ instead of the ‘ports’ property, as each > > Coresight component needs to specify its input and output directions. > > > > The Coresight system operates by integrating all Coresight components and construting its data flow path > > based on the defined directions. > > > > Consequently, the data flow direction cannot be determined when utilizing the ‘ports’ property in the > > Coresight system. > > It can be determined. Driver knows that there are only in-ports, so you > cannot have here other direction. Maybe the drivers have somehow this > hard-coded? But that's a bit annoying limitation. > In Coresight platform driver, the of_coresight_get_port_parent function is used to retrieve the parent of the 'ports' node. The function is specifically hard-coded to recognize 'in-ports' and 'out-ports'. I think that's the limitation for 'ports' property. https://elixir.bootlin.com/linux/v6.11-rc4/source/drivers/hwtracing/coresight/coresight-platform.c#L147 Thnaks, Jie