Received: by 2002:a05:6358:9144:b0:117:f937:c515 with SMTP id r4csp4388181rwr; Mon, 8 May 2023 07:05:30 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4eEGfIBuGbFJo+opUYOb6ntU1CpkvufKjxMG8Qf8T1O6xx6JGusGwc+D7mJASxeoR0gMJh X-Received: by 2002:a05:6a20:a107:b0:f0:36a3:706a with SMTP id q7-20020a056a20a10700b000f036a3706amr13668342pzk.10.1683554730343; Mon, 08 May 2023 07:05:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1683554730; cv=none; d=google.com; s=arc-20160816; b=C5MjS1deptIjX5wxdEYGKw0aPyrqFkJN+k5m3AgjELPm4rOKQNO6q0NOKlCXvCXqSh +z3pkSEpiezdo6beDnI51eLoAHBgK5hkhzZtuZPUqTFYzIVGqxbsSN3YZBR8FHTH3NvS QSH7xjY+WKpWfp8iGh1SmM/AEHQrr3+ZNHBHZH/zaQ6boeZG6h/bWArhqiv9lnRnJmVR pT7T0Vd+lnGaqOzvAOZMvCRytrE+MHJVo7Bw9MWzgQZzSmKzsDxFvMrzGRscwlMN/hgh msZAgZShVnWimZNrZWxrdad4ddwZSzdfnNIiVHwObEBZ2cGK6a9zZRRCSBdO41hBDAMO AjFA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :references:cc:to:content-language:subject:user-agent:mime-version :date:message-id:dkim-signature; bh=Bau6Vk4KRtoXkozOPOGe2vnOzpNzcPXQ2rRpuWJ1IYY=; b=PwjjXjDNVYilPi2W9NEsNYU0Z89HKiDjD4rOcwTplOoz449plqxYB3q6KEYHwZ4Gzo NiDDR4Ijn1+auhawB1dytY+Ck9YG8BN/cUP/Uiv9o+fQqgUDB313fsNWbwvO88d6vHd/ 68P2vlWkcWB/pBIim4z5Eje9XOHVPKOVWryad+MxoyHJF2760HPaidSUp6JrPuvabdLX vS1oF49MCPxQSNT0ZOWmtUiOHH75yZZfnyWtduamNtJrBeD0EErQEwunQNv63zi7HKqf vz2PUtQY/qF9/t+qkf56c3piUiz0fH5oo2oi7UDlocRlE9eqx/B8aVtczBEh+CQ9SyUg pa+g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=F0yVYJ5X; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id z126-20020a633384000000b00528b2a25b1fsi9105134pgz.258.2023.05.08.07.04.40; Mon, 08 May 2023 07:05:30 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=F0yVYJ5X; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232748AbjEHNp0 (ORCPT + 99 others); Mon, 8 May 2023 09:45:26 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33222 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233551AbjEHNpY (ORCPT ); Mon, 8 May 2023 09:45:24 -0400 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 241BD448C; Mon, 8 May 2023 06:45:23 -0700 (PDT) Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 3488QU6i005647; Mon, 8 May 2023 13:45:16 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h=message-id : date : mime-version : subject : to : cc : references : from : in-reply-to : content-type : content-transfer-encoding; s=qcppdkim1; bh=Bau6Vk4KRtoXkozOPOGe2vnOzpNzcPXQ2rRpuWJ1IYY=; b=F0yVYJ5XdCILtwgcoRcZ2ql0D3MDgo5g/6NJsXnW2/xAtY9x4uNGuo/QhFjh8GqqzzR+ 2kWT66NaXqYW44UUmuwzhfZXi7AX0okMQ33ZpGd2Xtu/aJVJIV3iLezc+c9Irv890K5l Sdztv+bXziLtBPEj+VvtdBg31vxn21DinBOAi6dPKGeLC+4m72sPtC883s000uFoGrQL GthDLk1fktp5xyslanatx2oiWYeH9GSpgr5jmiqBkAuuNQR4I1K+h/pIu3tIEGpM8OnD kYviSv4m2zLwEESeo3JzJztKH11O4eLeqlerkifd3YIO06DMZjRgaHAeP3CaywbsQBMj Ig== Received: from nalasppmta05.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3qdf4b3p1h-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 08 May 2023 13:45:15 +0000 Received: from nalasex01a.na.qualcomm.com (nalasex01a.na.qualcomm.com [10.47.209.196]) by NALASPPMTA05.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 348DjEci015991 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 8 May 2023 13:45:15 GMT Received: from [10.242.242.190] (10.80.80.8) by nalasex01a.na.qualcomm.com (10.47.209.196) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.42; Mon, 8 May 2023 06:45:06 -0700 Message-ID: <790496d7-98dc-c92e-dedc-1c89395a1ad8@quicinc.com> Date: Mon, 8 May 2023 19:15:03 +0530 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.7.2 Subject: Re: [PATCH 01/11] dt-bindings: remoteproc: qcom: Add support for multipd model Content-Language: en-US To: Krzysztof Kozlowski , , , , , , , , , , , , , , , , , , CC: , , , , , , References: <1678164097-13247-1-git-send-email-quic_mmanikan@quicinc.com> <1678164097-13247-2-git-send-email-quic_mmanikan@quicinc.com> <38a5a268-7d8a-6e61-4272-8e9155df0034@linaro.org> From: Manikanta Mylavarapu In-Reply-To: <38a5a268-7d8a-6e61-4272-8e9155df0034@linaro.org> Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [10.80.80.8] X-ClientProxiedBy: nasanex01b.na.qualcomm.com (10.46.141.250) To nalasex01a.na.qualcomm.com (10.47.209.196) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-ORIG-GUID: _7gJnAhPKd9pxAlK-QhKtJY5FEcnWg-o X-Proofpoint-GUID: _7gJnAhPKd9pxAlK-QhKtJY5FEcnWg-o X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.942,Hydra:6.0.573,FMLib:17.11.170.22 definitions=2023-05-08_10,2023-05-05_01,2023-02-09_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 suspectscore=0 clxscore=1011 priorityscore=1501 adultscore=0 impostorscore=0 bulkscore=0 mlxscore=0 lowpriorityscore=0 spamscore=0 malwarescore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2303200000 definitions=main-2305080093 X-Spam-Status: No, score=-4.6 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,NICE_REPLY_A,RCVD_IN_DNSWL_LOW, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 3/7/2023 8:47 PM, Krzysztof Kozlowski wrote: > On 07/03/2023 05:41, Manikanta Mylavarapu wrote: >> Add new binding document for multipd model remoteproc. >> IPQ5018, IPQ9574 follows multipd model. >> >> Signed-off-by: Manikanta Mylavarapu >> --- >> .../bindings/remoteproc/qcom,multipd-pil.yaml | 282 ++++++++++++++++++ >> 1 file changed, 282 insertions(+) >> create mode 100644 Documentation/devicetree/bindings/remoteproc/qcom,multipd-pil.yaml >> >> diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,multipd-pil.yaml b/Documentation/devicetree/bindings/remoteproc/qcom,multipd-pil.yaml >> new file mode 100644 >> index 000000000000..b788607f5abd >> --- /dev/null >> +++ b/Documentation/devicetree/bindings/remoteproc/qcom,multipd-pil.yaml >> @@ -0,0 +1,282 @@ >> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) >> +%YAML 1.2 >> +--- >> +$id: http://devicetree.org/schemas/remoteproc/qcom,multipd-pil.yaml# >> +$schema: http://devicetree.org/meta-schemas/core.yaml# >> + >> +title: Qualcomm Multipd Secure Peripheral Image Loader >> + >> +maintainers: >> + - Bjorn Andersson >> + - Mathieu Poirier >> + >> +description: >> + Multipd Peripheral Image Loader loads firmware and boots Q6 pd, WCSS pd >> + remoteproc's on the Qualcomm IPQ5018, IPQ9574 SoC. > > What is a "pd"? > Pd means protection domain. It's similar to process in Linux. Here QDSP6 processor runs each wifi radio functionality on a separate process. One process can't access other process resources, so this is termed as PD i.e protection domain. Here we have two pd's called root and user pd. We can correlate Root pd as root and user pd as user in linux. Root pd has more privileges than user pd. From remoteproc driver perspective, root pd corresponds to QDSP6 processor bring up and user pd corresponds to Wifi radio (WCSS) bring up. >> + >> +properties: >> + compatible: >> + enum: >> + - qcom,ipq5018-q6-mpd >> + - qcom,ipq9574-q6-mpd >> + >> + '#address-cells': true >> + >> + '#size-cells': true > > Why do you need both? > > If really needed, these should be const. > It's not required. I am going to remove it. >> + >> + 'ranges': true >> + > > Same question - why do you need it? > It's not required. I am going to remove it. >> + reg: >> + maxItems: 1 >> + >> + interrupts-extended: > > Instead interrupts > Sure. I will use 'interrupts'. >> + items: >> + - description: Watchdog interrupt >> + - description: Fatal interrupt >> + - description: Ready interrupt >> + - description: Handover interrupt >> + - description: Stop acknowledge interrupt >> + >> + interrupt-names: >> + items: >> + - const: wdog >> + - const: fatal >> + - const: ready >> + - const: handover >> + - const: stop-ack >> + >> + clocks: >> + minItems: 25 >> + maxItems: 25 > > Drop both and instead describe the items. Anyway minItems are not needed > here. > Sure. I will drop min & max items and describe clocks. >> + >> + clock-names: >> + minItems: 25 >> + maxItems: 25 > > Drop both and instead list the names. > Sure. I will drop. >> + >> + assigned-clocks: >> + minItems: 13 >> + maxItems: 13 > > Drop, they do not have to be mentioned in the binding. If you think they > need to, then why? > >> + >> + assigned-clock-rates: >> + minItems: 13 >> + maxItems: 13 > > Ditto > >> + >> + qcom,smem-states: >> + $ref: /schemas/types.yaml#/definitions/phandle-array >> + description: States used by the AP to signal the remoteprocessor >> + items: >> + - description: Shutdown Q6 >> + - description: Stop Q6 >> + >> + qcom,smem-state-names: >> + description: >> + Names of the states used by the AP to signal the remoteprocessor >> + items: >> + - const: shutdown >> + - const: stop >> + >> + memory-region: >> + items: >> + - description: Q6 pd reserved region >> + >> + glink-edge: >> + $ref: /schemas/remoteproc/qcom,glink-edge.yaml# > > unevaluatedProperties: false > Sure, will add. >> + description: >> + Qualcomm G-Link subnode which represents communication edge, channels >> + and devices related to the Modem. >> + >> +patternProperties: >> + "^remoteproc_pd1|remoteproc_pd2|remoteproc_pd3": > > No, underscores are not allowed. Also, what is pd? > Sure, will remove underscores. >> + type: object >> + description: >> + In Multipd model, WCSS pd depends on Q6 pd i.e Q6 pd should be up before >> + WCSS. It can be achieved by keeping wcss pd node as subnode of Q6 >> + device node. >> + >> + properties: >> + compatible: >> + enum: >> + - "qcom,ipq5018-wcss-ahb-mpd" >> + - "qcom,ipq9574-wcss-ahb-mpd" >> + - "qcom,ipq5018-wcss-pcie-mpd" > > Drop quotes Sure, will remove it. > >> + >> + interrupts-extended: > > Same as before > Sure, will use 'interrupts'. >> + items: >> + - description: Fatal interrupt >> + - description: Ready interrupt >> + - description: Spawn acknowledge interrupt >> + - description: Stop acknowledge interrupt >> + >> + interrupt-names: >> + items: >> + - const: fatal >> + - const: ready >> + - const: spawn-ack >> + - const: stop-ack >> + >> + qcom,smem-states: >> + $ref: /schemas/types.yaml#/definitions/phandle-array >> + description: States used by the AP to signal the remoteprocessor >> + items: >> + - description: Shutdown WCSS pd >> + - description: Stop WCSS pd >> + - description: Spawn WCSS pd >> + >> + qcom,smem-state-names: >> + description: >> + Names of the states used by the AP to signal the remoteprocessor > > remote processor > I will update. >> + items: >> + - const: shutdown >> + - const: stop >> + - const: spawn > > This is confusing. Why your children have the same properties as parent? > Here both parent & child considered as remote processor. So once they powered up/power down/crashed, they used to do some handshaking with APPS processor. So interrupts are common between parent i.e root pd and child i.e user pd >> + >> + required: >> + - compatible >> + >> + additionalProperties: false >> + >> +required: >> + - compatible >> + - reg >> + - interrupts-extended > > interrupts > Sure. I will use 'interrupts' instead of interrupts-extended >> + - interrupt-names >> + - qcom,smem-states >> + - qcom,smem-state-names >> + - memory-region >> + >> +additionalProperties: false >> + >> +allOf: >> + - if: >> + properties: >> + compatible: >> + enum: >> + - qcom,ipq9574-q6-mpd >> + then: >> + properties: >> + assigned-clocks: >> + items: >> + - description: Phandle, clock specifier of GCC_ANOC_WCSS_AXI_M_CLK >> + - description: Phandle, clock specifier of GCC_WCSS_AHB_S_CLK >> + - description: Phandle, clock specifier of GCC_WCSS_ECAHB_CLK >> + - description: Phandle, clock specifier of GCC_WCSS_ACMT_CLK >> + - description: Phandle, clock specifier of GCC_WCSS_AXI_M_CLK >> + - description: Phandle, clock specifier of GCC_Q6_AXIM_CLK >> + - description: Phandle, clock specifier of GCC_Q6_AXIM2_CLK >> + - description: Phandle, clock specifier of GCC_Q6_AHB_CLK >> + - description: Phandle, clock specifier of GCC_Q6_AHB_S_CLK >> + - description: Phandle, clock specifier of GCC_Q6SS_BOOT_CLK >> + - description: Phandle, clock specifier of GCC_MEM_NOC_Q6_AXI_CLK >> + - description: Phandle, clock specifier of GCC_WCSS_Q6_TBU_CLK >> + - description: Phandle, clock specifier of GCC_SYS_NOC_WCSS_AHB_CLK > > Eh, so here they are. But Why? Do you expect different clocks for > others? If so, where are they? > > Anyway, drop useless "Phandle, clock specifier of". Clocks cannot be > anything else than phandle and a clock specifier. Instead of using some > cryptic ACRONYM_OR_SOME_CLK, describe them. Just like we do for other > bindings. You have plenty of good examples, so please start from them. > > >> + assigned-clock-rates: >> + items: >> + - description: Must be 266666667 HZ >> + - description: Must be 133333333 HZ >> + - description: Must be 133333333 HZ >> + - description: Must be 133333333 HZ >> + - description: Must be 266666667 HZ >> + - description: Must be 533000000 HZ >> + - description: Must be 342857143 HZ >> + - description: Must be 133333333 HZ >> + - description: Must be 133333333 HZ >> + - description: Must be 342857143 HZ >> + - description: Must be 533000000 HZ >> + - description: Must be 533000000 HZ >> + - description: Must be 133333333 HZ > > ??? > > If these are fixed, why this is in DT? DT is for variable and > non-discoverable pieces and you do not have here anything variable, but > fixed. > >> + >> +examples: >> + - | >> + #include >> + #include >> + #include > > Use 4 spaces for example indentation. > Sure, will use 4 spaces. >> + >> + q6v5_wcss: remoteproc@cd00000 { >> + compatible = "qcom,ipq5018-q6-mpd"; >> + #address-cells = <1>; >> + #size-cells = <1>; >> + ranges; >> + reg = <0x0cd00000 0x4040>; >> + interrupts-extended = <&intc GIC_SPI 291 IRQ_TYPE_EDGE_RISING>, >> + <&wcss_smp2p_in 0 0>, > > Wrong alignment of indentation > Sure, will update alignment. >> + <&wcss_smp2p_in 1 0>, >> + <&wcss_smp2p_in 2 0>, >> + <&wcss_smp2p_in 3 0>; >> + interrupt-names = "wdog", >> + "fatal", >> + "ready", >> + "handover", >> + "stop-ack"; >> + >> + qcom,smem-states = <&wcss_smp2p_out 0>, >> + <&wcss_smp2p_out 1>; >> + qcom,smem-state-names = "shutdown", >> + "stop"; >> + >> + memory-region = <&q6_region>; >> + >> + glink-edge { >> + interrupts = ; >> + label = "rtr"; >> + qcom,remote-pid = <1>; >> + mboxes = <&apcs_glb 8>; >> + }; >> + >> + q6_wcss_pd1: remoteproc_pd1 { >> + compatible = "qcom,ipq5018-wcss-ahb-mpd"; >> + interrupts-extended = <&wcss_smp2p_in 8 0>, >> + <&wcss_smp2p_in 9 0>, >> + <&wcss_smp2p_in 12 0>, >> + <&wcss_smp2p_in 11 0>; >> + interrupt-names = "fatal", >> + "ready", >> + "spawn-ack", >> + "stop-ack"; >> + qcom,smem-states = <&wcss_smp2p_out 8>, >> + <&wcss_smp2p_out 9>, >> + <&wcss_smp2p_out 10>; >> + qcom,smem-state-names = "shutdown", >> + "stop", >> + "spawn"; >> + }; >> + >> + q6_wcss_pd2: remoteproc_pd2 { >> + compatible = "qcom,ipq5018-wcss-pcie-mpd"; >> + interrupts-extended = <&wcss_smp2p_in 16 0>, >> + <&wcss_smp2p_in 17 0>, >> + <&wcss_smp2p_in 20 0>, >> + <&wcss_smp2p_in 19 0>; >> + interrupt-names = "fatal", >> + "ready", >> + "spawn-ack", >> + "stop-ack"; >> + >> + qcom,smem-states = <&wcss_smp2p_out 16>, >> + <&wcss_smp2p_out 17>, >> + <&wcss_smp2p_out 18>; >> + qcom,smem-state-names = "shutdown", >> + "stop", >> + "spawn"; >> + status = "okay"; > > Drop statuses from the example. > Sure, will drop status property. > > Best regards, > Krzysztof > Thanks & Regards, Manikanta.