From nobody Mon Feb 9 09:36:05 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DFFAC30AADC for ; Fri, 24 Oct 2025 09:33:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761298416; cv=none; b=pHc8+xjwTMdCPM1Rv2pfQQsFeAixCb4tqtIZDtuW2ik0UwsttB/Hi1v1eHcuybU0pOT21mV+hPvR2T6s5kZ0Fb7TufpHJoRqAlrLwq8YkeaYotjk3zCLrOrrPNj64MEFMiNP9D0GGYXmoq4TdlKjLyTK7IszC6LhHh5HFrhJP20= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761298416; c=relaxed/simple; bh=sLfc6/pV30D5lq+QPBhYvo6G/wXhYAzok8S7hahT+7E=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=CV/sqPgjjZo5IEGF0vzi/Oeeb1gx2DBmIHf6m1nM+lJ8dLcQoddvn0FTsmoecNR4CI4yGjss+pfQXmqMy4gs6fAvGMB2+yimSdC8eCy2MnrcY4DaaDObev3qPMcGaRzsRcpXPHUbfESJqNk1AKQvx3KJqNpua2o7XNbyYMfqIGI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=PVxUHoqQ; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="PVxUHoqQ" Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 59O3FLaB014872 for ; Fri, 24 Oct 2025 09:33:33 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= BFsQ8QDek/CRCSn3Sn2QCbGXL9ljG8jJXnynkhQ8/wA=; b=PVxUHoqQpdk3Qd3Z zenZ8FkKkE5N79dpFY5gw3CrMyiuzk3gl8xjqFB3SHr6n8xb3ICBBjST0e3WmYmv xE8yRYNonw93SQXilO6LHegF9k7wwtZTZPJYH2ykRYn1IVFykUg+YHSWJA8VuLbP OsnGGSNyYYUHnjmcchB1kq/JhUp68gKqnphIoQCxHFFgwf8gj9Sd6viP0JNFSgim iTO5WMOaqGBT03b2+PaRm+cZ4xt4TxYcl5zURZYMx4sSypWUYWc0F88v0U47IU+1 a6GMErki3GUKHh4c1/qC1KFNISRD3ldSU1SLjYDuPV0qYXOzT5Wfj8oOGH7IgQLM /5MCuw== Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com [209.85.210.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 49v08puse3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Fri, 24 Oct 2025 09:33:33 +0000 (GMT) Received: by mail-pf1-f199.google.com with SMTP id d2e1a72fcca58-76e2e60221fso3607246b3a.0 for ; Fri, 24 Oct 2025 02:33:33 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1761298412; x=1761903212; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=BFsQ8QDek/CRCSn3Sn2QCbGXL9ljG8jJXnynkhQ8/wA=; b=UQ4V4P3wU0U5b/7MuzvYqkENLgU2I2K6ECe0CvEpgsqGoa3tfXr1g2M7T/sTqFRnHr 66psCbzK9DmaWtUT30EsLhEiRIy2Juz+6pOJt4Om2KIPmFqxoP5XjVdifJsZtMS17NUN 3OiTj/0wjGABXTivN4r+1bZKUfg3PSXlrZnBv13Ocf87RSHt0uTDYaLYIar1jgpYnkLr kdjwy3sr1mCjWtGKmSGX8UXheHbu6ZFFw+LFj1uExeR+iXy3kQmDjQxyKPM2gLINZfOF WgmseXpqoABMiwWhkb+JenzHIlW7gCLF134tfmISqk1lfXRUbYD16+K0irJvoWe7VoRT 0V7A== X-Forwarded-Encrypted: i=1; AJvYcCUmj1mH9QKlukApfEQu5Wh3oWs6R5gfglToX4PGCg6mMOBf4bNJqn5jg4e2XJQe+aWVmJQ9LDuy+9mrgvY=@vger.kernel.org X-Gm-Message-State: AOJu0YycZY7K/JN7KCcjQvx4MvtbiX/+ViShoeF88LAwlNOIAMqssmdl x6dsHKP2r+pmCjsZQ8R8jzqUAXYG0cowQT0d9AmFPkS3tlb4cQ+32S0nhTLQ0ClQtVevMuzEN2A /QEEQW66tSXG0hysSqISbNSZsZelUrAVwF/7WGiz1d1XOB0Ziy+8+r24A4LXcbiVnmUA= X-Gm-Gg: ASbGncvvyTizal3GM7PcHisbw/PB9xK/JA4Pv09l7oGBUcV6AN+WwpHOVMp0PuqiI0n yreft2EYvRfDMHiTZn4ZZNIWcSj2aLHf1HyWUagwgDUN8e9yMyA+KXl40XycvqgaixGPAHi1/Qp J/CYLkdODtwlXwUvJa11G2yfHalXSPvrtRrbGIu+uxMDE5Zm+enVpO8fgqj+3zcvNn3iUeqknrP 30ikdoVKleYxPLZ9yNlkKKytQDgQQH7/MJI1TKKBw9JmExF0uZVgFM42yEr840g1F/L82ik7Wmq nzjj8k02xWfDda+2+OvbpvmXVPyXQtu7Ir6/HYp614RGiEugqOp6OcrfX0vSqPnb9qqBLIH6OIo 8E5b/sMGf8gwn++94Um0MxuzjdrrG5LMdjA== X-Received: by 2002:a05:6a00:1916:b0:793:11fc:783f with SMTP id d2e1a72fcca58-7a220d2ebb7mr32870197b3a.29.1761298412277; Fri, 24 Oct 2025 02:33:32 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGXf9hXKUbGYeXNisbeDICxOQKlKaEkz3DZyx21OlN2Wx/k/LrRUL017iNPl39reqGmwOs8Tg== X-Received: by 2002:a05:6a00:1916:b0:793:11fc:783f with SMTP id d2e1a72fcca58-7a220d2ebb7mr32870160b3a.29.1761298411772; Fri, 24 Oct 2025 02:33:31 -0700 (PDT) Received: from hu-jprakash-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7a274dc33easm5270332b3a.68.2025.10.24.02.33.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Oct 2025 02:33:31 -0700 (PDT) From: Jishnu Prakash Date: Fri, 24 Oct 2025 15:03:21 +0530 Subject: [PATCH v3 1/3] dt-bindings: spmi: split out common QCOM SPMI PMIC arbiter properties Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251024-pmic_arb_v8-v3-1-cad8d6a2cbc0@oss.qualcomm.com> References: <20251024-pmic_arb_v8-v3-0-cad8d6a2cbc0@oss.qualcomm.com> In-Reply-To: <20251024-pmic_arb_v8-v3-0-cad8d6a2cbc0@oss.qualcomm.com> To: Stephen Boyd , Rob Herring , Krzysztof Kozlowski , Conor Dooley , David Collins Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Jishnu Prakash , aiqun.yu@oss.qualcomm.com, kamal.wadhwa@oss.qualcomm.com, jingyi.wang@oss.qualcomm.com X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1761298404; l=4364; i=jishnu.prakash@oss.qualcomm.com; s=20251014; h=from:subject:message-id; bh=sLfc6/pV30D5lq+QPBhYvo6G/wXhYAzok8S7hahT+7E=; b=OOLipLvIqkKmby+XtgeiARJi6Q7hKTpNM25DoMrZf+1ImHEB9gLCCWLjrEN/4eub69Fcm3ndG QwZwUkOhoXvB13EsfFcmh3e5beeU3+/8jYkxnNU886bDrXj+HuEE7w5 X-Developer-Key: i=jishnu.prakash@oss.qualcomm.com; a=ed25519; pk=g89pXdLVwRjdTeQ+uX1QzvBO346E3hQAc1N7fcTXgmk= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDE4MDAwMCBTYWx0ZWRfX8COuLqDU0ySv R28s7ddbQa/VT/H9RchcONt86K+k6sd2P3COsfbu4lDdJFqfonmwSaXIGlcoPUeKYZPkMUHpFGv +PQMOVnx4W66f9lM7zlNrvMTssEdpsm/raafa0SCRT6cCsNc2DNrvGOGjJgUJIQO6/nQwalqp+p O54Tj9+GsrNmSm8m4T84KpwDetab0ekX+t3fJD6ykwfdIMmC3X760MGBT+V+If5dLBCiDR13Je4 /Q+XZCWSbhc0W5DzZrCDaNXNoLUwdvadZXXG3VBzVZFdFYmW/iawHlob3f02wXRM2MgQpN3+rXL jm+4EMemtWqjnGcvr9bokgW7JKqoKuVFO3mhz3tW3kaftjZYTmQS5hqYWPmRaKAKfO3i4yIf9z4 pcdle8Pd9ICd3TQJfY9rN35zxu7beA== X-Proofpoint-GUID: k5bGFETTHQBp5fHDTLdvAjL_4oF_TI6Y X-Authority-Analysis: v=2.4 cv=Up1u9uwB c=1 sm=1 tr=0 ts=68fb47ed cx=c_pps a=WW5sKcV1LcKqjgzy2JUPuA==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=x6icFKpwvdMA:10 a=VkNPw1HP01LnGYTKEx00:22 a=gEfo2CItAAAA:8 a=EUspDBNiAAAA:8 a=w24Q35eUI-_Cj95TU7gA:9 a=QEXdDO2ut3YA:10 a=OpyuDcXvxspvyRM73sMx:22 a=sptkURWiP4Gy88Gu7hUp:22 X-Proofpoint-ORIG-GUID: k5bGFETTHQBp5fHDTLdvAjL_4oF_TI6Y X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-24_01,2025-10-22_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 adultscore=0 suspectscore=0 malwarescore=0 clxscore=1015 impostorscore=0 bulkscore=0 priorityscore=1501 spamscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2510020000 definitions=main-2510180000 Split out the common SPMI PMIC arbiter properties for QCOM devices into a separate file so that it can be included as a reference for devices using them. This will be needed for the upcoming PMIC v8 arbiter support patch, as the v8 arbiter also uses these common properties. Signed-off-by: Jishnu Prakash Reviewed-by: Rob Herring (Arm) --- .../bindings/spmi/qcom,spmi-pmic-arb-common.yaml | 35 ++++++++++++++++++= ++++ .../bindings/spmi/qcom,spmi-pmic-arb.yaml | 17 +---------- .../bindings/spmi/qcom,x1e80100-spmi-pmic-arb.yaml | 21 +++---------- 3 files changed, 40 insertions(+), 33 deletions(-) diff --git a/Documentation/devicetree/bindings/spmi/qcom,spmi-pmic-arb-comm= on.yaml b/Documentation/devicetree/bindings/spmi/qcom,spmi-pmic-arb-common.= yaml new file mode 100644 index 000000000000..8c38ed145e74 --- /dev/null +++ b/Documentation/devicetree/bindings/spmi/qcom,spmi-pmic-arb-common.yaml @@ -0,0 +1,35 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/spmi/qcom,spmi-pmic-arb-common.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Qualcomm Technologies, Inc. SPMI Controller (common) + +maintainers: + - David Collins + +description: | + This defines some common properties used to define Qualcomm SPMI control= lers + for PMIC arbiter. + +properties: + qcom,ee: + $ref: /schemas/types.yaml#/definitions/uint32 + minimum: 0 + maximum: 5 + description: + indicates the active Execution Environment identifier + + qcom,channel: + $ref: /schemas/types.yaml#/definitions/uint32 + minimum: 0 + maximum: 5 + description: + which of the PMIC Arb provided channels to use for accesses + +required: + - qcom,ee + - qcom,channel + +additionalProperties: true diff --git a/Documentation/devicetree/bindings/spmi/qcom,spmi-pmic-arb.yaml= b/Documentation/devicetree/bindings/spmi/qcom,spmi-pmic-arb.yaml index 51daf1b847a9..d0c683dd5284 100644 --- a/Documentation/devicetree/bindings/spmi/qcom,spmi-pmic-arb.yaml +++ b/Documentation/devicetree/bindings/spmi/qcom,spmi-pmic-arb.yaml @@ -19,6 +19,7 @@ description: | =20 allOf: - $ref: spmi.yaml + - $ref: qcom,spmi-pmic-arb-common.yaml =20 properties: compatible: @@ -71,20 +72,6 @@ properties: =20 '#size-cells': true =20 - qcom,ee: - $ref: /schemas/types.yaml#/definitions/uint32 - minimum: 0 - maximum: 5 - description: > - indicates the active Execution Environment identifier - - qcom,channel: - $ref: /schemas/types.yaml#/definitions/uint32 - minimum: 0 - maximum: 5 - description: > - which of the PMIC Arb provided channels to use for accesses - qcom,bus-id: $ref: /schemas/types.yaml#/definitions/uint32 minimum: 0 @@ -97,8 +84,6 @@ properties: required: - compatible - reg-names - - qcom,ee - - qcom,channel =20 unevaluatedProperties: false =20 diff --git a/Documentation/devicetree/bindings/spmi/qcom,x1e80100-spmi-pmic= -arb.yaml b/Documentation/devicetree/bindings/spmi/qcom,x1e80100-spmi-pmic-= arb.yaml index 7c3cc20a80d6..08369fdd2161 100644 --- a/Documentation/devicetree/bindings/spmi/qcom,x1e80100-spmi-pmic-arb.ya= ml +++ b/Documentation/devicetree/bindings/spmi/qcom,x1e80100-spmi-pmic-arb.ya= ml @@ -17,6 +17,9 @@ description: | The PMIC Arbiter can also act as an interrupt controller, providing inte= rrupts to slave devices. =20 +allOf: + - $ref: qcom,spmi-pmic-arb-common.yaml + properties: compatible: oneOf: @@ -45,20 +48,6 @@ properties: '#size-cells': const: 2 =20 - qcom,ee: - $ref: /schemas/types.yaml#/definitions/uint32 - minimum: 0 - maximum: 5 - description: > - indicates the active Execution Environment identifier - - qcom,channel: - $ref: /schemas/types.yaml#/definitions/uint32 - minimum: 0 - maximum: 5 - description: > - which of the PMIC Arb provided channels to use for accesses - patternProperties: "^spmi@[a-f0-9]+$": type: object @@ -96,10 +85,8 @@ patternProperties: required: - compatible - reg-names - - qcom,ee - - qcom,channel =20 -additionalProperties: false +unevaluatedProperties: false =20 examples: - | --=20 2.25.1 From nobody Mon Feb 9 09:36:05 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4EA18307AEE for ; Fri, 24 Oct 2025 09:33:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761298420; cv=none; b=e9AjsS6MztUliKZp4OWZ64IdKm7brBTHnQ6r1L8WrZnB5AfXkwxtNZYF9apYxX49CDO59/ZCjxwy8+I/o5tE3P5A8NApisT4DO6/tfVeBDvF0GeAVevVzd2y4suaS/ClJ3OL6RKNC6DalQboNnl8yXHhuxrc/4vsHUnkjGLhdHA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761298420; c=relaxed/simple; bh=aJDb+NHHQuno7cwN3CiGpg2o/Y516jxogFCrK6JxNqA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=IA7GFWOGVDIwmUwNXSiFnbCrsAwm4oV7Rtwsvhv6vSbbaKXix/88Fa09VgLKhhkke74e9r+XY6PicrpWSE+6O5RF3JiZ+7CtaaDzIXSWKyXvscXQb7V1MqLsaQKZyaWnf6ZtYxXhoPHL0A5XbtYmsEIZ8n0P3MwOtGBLOBs7cMs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=ngGz33Cm; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="ngGz33Cm" Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 59O3FGC5015821 for ; Fri, 24 Oct 2025 09:33:37 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= ub5W/Kkbd1Alzx9NyyOxlMByJyQ868SAcsxXG1ockE0=; b=ngGz33CmGIhxfsox Q+6NcNAs9csb+0UcCu31rU9S0WU+h+DWDinuCJ69B4JYRGr7ReBBsbTl2QzBVgUE IIwu3kTwFim5zEHDenRViJ/2b4UdGbKbJoUsEzzSNhHyliYqNTMZIyUUwsEfZSs1 pM6RK0xlZwWvSoZ6aFEVbkvqKTIrcZCPEVndUHTV/UdaWOSYd1v72aXIrK2x7LyP f0cTm8W/BgML4Ia6etKj/dSSllWYLYcv2mhW11Arclog4BQRbzzkXdirvTsPTxkc NlE3QS2o7xAO71qgEwLaQXdmnfEBeRCOKaxrVVJ2Lzl9KolgRkQ45w1/8cqiZNwQ tAHFlw== Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 49xkpsh56q-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Fri, 24 Oct 2025 09:33:37 +0000 (GMT) Received: by mail-pf1-f198.google.com with SMTP id d2e1a72fcca58-7900f597d08so1389335b3a.1 for ; Fri, 24 Oct 2025 02:33:37 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1761298416; x=1761903216; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ub5W/Kkbd1Alzx9NyyOxlMByJyQ868SAcsxXG1ockE0=; b=mb4vhuNe4NKsSMGQmf9BvbbxYsVbtY0wpBiPFV68V9JLLdQfVg+LBsg2UmYh4Uf+qU 0FVNf8eElaBqCKxZ+udXTnI7z9wkX4+Hd1Sr+1K1F9Xo+9H+/ucBIJd3jC8DMYlcF+g0 rFdndFyYrGtN+Q0H7IP14T1GUzPM5ZHAQ1kNWKn09xp8HieAnCkeVV6gRt6OsxHAJAPl 40p77fKCVRQNGkNaKO40eQ1cOdoyZkq9X9Ql2uiS0NKBE7dMA6QYc6VnmCLA0QYL/du/ Rum0RGK3WMhhkyD2zdSvVYJi7DE/wyyUxfLrd3/Lx+89a5fvaGWP1j+NEBKnEvpeWDM1 h+jQ== X-Forwarded-Encrypted: i=1; AJvYcCWhmXN4UbBWUqQn2oJsPU8ksztxmK4dgfhv6aN64H8QbXjN0WqmiOSmcNdW+kt+jmflKW0PeCuNKW8REi4=@vger.kernel.org X-Gm-Message-State: AOJu0Yz1ws/fxeR6SJPZkt6Yjjdi0PD5bsyTgZXIRGsgTm4S+cxy8F9u vIdTJMF4zc+buqlVTi54FFDiDcCpOjQ5jem27U6fdIda2W4Wphj7/10rWYONvOLfGWCU1qhG4mS dPTcPFpfGlGm5eiLpQwvhCBGT+BE216rqXzFXUgPEJ1pd/Vs6c8jVcYcQrEG2pjHfZzA47plC/Y w= X-Gm-Gg: ASbGnctFXfSwDzi7YqfjSp3GJa5X1wv6TaYDGXHzN0dpW2nVskC9mkDBCAc7EaOO/62 TjDzSAyam0gtqyNldjXK2PfdVDtT5fpKKjyDLbgOS/ZPpmIeLUC+9SG/JiM+w7yYT6bIoypHdYs tod80p0LOCal9CdeFRYQzPLUkRk38dDx826IVFgqmWWDZnOMVEEu6e6gyWo9z+wjNiyCgLZdE9D eGpt9bzInrdjZocbyWGAYWrZZl7rvXKQ2ipCXf7oJJ6rKDZIpKboweYvtpx+tSC4d6vdvnLzpQZ b3c6dvmhQRsUqxwzz2aUqDPzp1qZmquzVuXtFVvl6U9JTKCE+CJN+kGSRsQz7wCPSq8QvFMV60+ KbsxZZoPTkSML0+SI+PICT/smeGHcYMnRdQ== X-Received: by 2002:a05:6a00:26d6:b0:7a2:6e61:c2a4 with SMTP id d2e1a72fcca58-7a26e61c50cmr7606567b3a.18.1761298416102; Fri, 24 Oct 2025 02:33:36 -0700 (PDT) X-Google-Smtp-Source: AGHT+IE3lz4HxbH9WXF2OdylXm8XVAgL+lrYMWY4oLNzS+JocMh0r8Y5PYPpgSPgMekzxEa8glMGtA== X-Received: by 2002:a05:6a00:26d6:b0:7a2:6e61:c2a4 with SMTP id d2e1a72fcca58-7a26e61c50cmr7606529b3a.18.1761298415568; Fri, 24 Oct 2025 02:33:35 -0700 (PDT) Received: from hu-jprakash-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7a274dc33easm5270332b3a.68.2025.10.24.02.33.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Oct 2025 02:33:35 -0700 (PDT) From: Jishnu Prakash Date: Fri, 24 Oct 2025 15:03:22 +0530 Subject: [PATCH v3 2/3] dt-bindings: spmi: add support for glymur-spmi-pmic-arb (arbiter v8) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251024-pmic_arb_v8-v3-2-cad8d6a2cbc0@oss.qualcomm.com> References: <20251024-pmic_arb_v8-v3-0-cad8d6a2cbc0@oss.qualcomm.com> In-Reply-To: <20251024-pmic_arb_v8-v3-0-cad8d6a2cbc0@oss.qualcomm.com> To: Stephen Boyd , Rob Herring , Krzysztof Kozlowski , Conor Dooley , David Collins Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Jishnu Prakash , aiqun.yu@oss.qualcomm.com, kamal.wadhwa@oss.qualcomm.com, jingyi.wang@oss.qualcomm.com, Pankaj Patil X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1761298404; l=5722; i=jishnu.prakash@oss.qualcomm.com; s=20251014; h=from:subject:message-id; bh=aJDb+NHHQuno7cwN3CiGpg2o/Y516jxogFCrK6JxNqA=; b=crW6gL8X14t7FzTo6LkrNkMHJnC+2Hfrusd048oxV6OixqVXcbj7/cM67CRNUelVk74M0UdDl aYN5OHKf4uDC3dICNg3qachNWM4qZaM1jl7KUhIZjTm5UF7Jxbcn/YK X-Developer-Key: i=jishnu.prakash@oss.qualcomm.com; a=ed25519; pk=g89pXdLVwRjdTeQ+uX1QzvBO346E3hQAc1N7fcTXgmk= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDIxMDE5MCBTYWx0ZWRfXyUDX56qGcbkW K4p3GMMcbNWlZWmwCZ6ODDScCQfGmDXgC8uQ4nuG+36sXyZFq8cUS0clNuGdHyvaYJVwTFQPITN ziPCbpd3cWuu2I0sWBln1qcP9+FzMY1PyBQeRA+PxQKvirR9k+WPoH/JcI/15EUZtMIM4ENUG9O +9UuYmRir38L18gT2iQ/8srDVEha8KldiOBmW3gCXe4YPUzGdi0KgfH8JNnEDfr8s0xkLYZo9Xp G5doSffeGYE216nYUsvxamdsmPC8kp/0YJ+1XAW2htbxeYlwAOi/BzALfYlXDJer/WqJoMqmGFo P0E/ujZzMKJVBzlCi9eGLUW+d9fo0rm2gm5v45ETqdDq2NkuUYnqxKPeWW0lbzwLJ9idy8eJnkZ uQ4qNuK1k3KWEN+DEacqwuXY+TwO1g== X-Authority-Analysis: v=2.4 cv=FbM6BZ+6 c=1 sm=1 tr=0 ts=68fb47f1 cx=c_pps a=m5Vt/hrsBiPMCU0y4gIsQw==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=x6icFKpwvdMA:10 a=VkNPw1HP01LnGYTKEx00:22 a=gEfo2CItAAAA:8 a=EUspDBNiAAAA:8 a=t41Tp4pyULMMg2XcS3IA:9 a=QEXdDO2ut3YA:10 a=IoOABgeZipijB_acs4fv:22 a=sptkURWiP4Gy88Gu7hUp:22 X-Proofpoint-GUID: wgno6AcPvOSlZr-ZdDebBQEMZ49GQNVl X-Proofpoint-ORIG-GUID: wgno6AcPvOSlZr-ZdDebBQEMZ49GQNVl X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-24_01,2025-10-22_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 phishscore=0 bulkscore=0 lowpriorityscore=0 priorityscore=1501 suspectscore=0 spamscore=0 impostorscore=0 clxscore=1015 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2510020000 definitions=main-2510210190 SPMI PMIC Arbiter version 8 builds upon version 7 with support for up to four SPMI buses. To achieve this, the register map was slightly rearranged. Add a new binding file and compatible string for version 8 using the name 'glymur' as the Qualcomm Technologies, Inc. Glymur SoC is the first one to use PMIC arbiter version 8. This specifies the new register ranges needed only for version 8. Also document SPMI PMIC Arbiter for Qualcomm Kaanapali SoC, by adding fallback to Glymur compatible string, as it too has version 8 functionality. Signed-off-by: David Collins Signed-off-by: Pankaj Patil Signed-off-by: Kamal Wadhwa Signed-off-by: Jingyi Wang Signed-off-by: Jishnu Prakash Reviewed-by: Rob Herring (Arm) --- .../bindings/spmi/qcom,glymur-spmi-pmic-arb.yaml | 150 +++++++++++++++++= ++++ 1 file changed, 150 insertions(+) diff --git a/Documentation/devicetree/bindings/spmi/qcom,glymur-spmi-pmic-a= rb.yaml b/Documentation/devicetree/bindings/spmi/qcom,glymur-spmi-pmic-arb.= yaml new file mode 100644 index 000000000000..3b5005b96c6d --- /dev/null +++ b/Documentation/devicetree/bindings/spmi/qcom,glymur-spmi-pmic-arb.yaml @@ -0,0 +1,150 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/spmi/qcom,glymur-spmi-pmic-arb.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Qualcomm Technologies, Inc. Glymur SPMI Controller (PMIC Arbiter v8) + +maintainers: + - David Collins + +description: | + The Glymur SPMI PMIC Arbiter implements HW version 8 and it's an SPMI + controller with wrapping arbitration logic to allow for multiple on-chip + devices to control up to 4 SPMI separate buses. + + The PMIC Arbiter can also act as an interrupt controller, providing inte= rrupts + to slave devices. + +allOf: + - $ref: /schemas/spmi/qcom,spmi-pmic-arb-common.yaml + +properties: + compatible: + oneOf: + - items: + - enum: + - qcom,kaanapali-spmi-pmic-arb + - const: qcom,glymur-spmi-pmic-arb + - enum: + - qcom,glymur-spmi-pmic-arb + + reg: + items: + - description: core registers + - description: tx-channel per virtual slave registers + - description: rx-channel (called observer) per virtual slave regist= ers + - description: channel to PMIC peripheral mapping registers + + reg-names: + items: + - const: core + - const: chnls + - const: obsrvr + - const: chnl_map + + ranges: true + + '#address-cells': + const: 2 + + '#size-cells': + const: 2 + +patternProperties: + "^spmi@[a-f0-9]+$": + type: object + $ref: /schemas/spmi/spmi.yaml + unevaluatedProperties: false + + properties: + reg: + items: + - description: configuration registers + - description: interrupt controller registers + - description: channel owner EE mapping registers + + reg-names: + items: + - const: cnfg + - const: intr + - const: chnl_owner + + interrupts: + maxItems: 1 + + interrupt-names: + const: periph_irq + + interrupt-controller: true + + '#interrupt-cells': + const: 4 + description: | + cell 1: slave ID for the requested interrupt (0-15) + cell 2: peripheral ID for requested interrupt (0-255) + cell 3: the requested peripheral interrupt (0-7) + cell 4: interrupt flags indicating level-sense information, + as defined in dt-bindings/interrupt-controller/irq.h + +required: + - compatible + - reg-names + +unevaluatedProperties: false + +examples: + - | + #include + + soc { + #address-cells =3D <2>; + #size-cells =3D <2>; + + arbiter@c400000 { + compatible =3D "qcom,glymur-spmi-pmic-arb"; + reg =3D <0x0 0xc400000 0x0 0x3000>, + <0x0 0xc900000 0x0 0x400000>, + <0x0 0xc4c0000 0x0 0x400000>, + <0x0 0xc403000 0x0 0x8000>; + reg-names =3D "core", "chnls", "obsrvr", "chnl_map"; + + qcom,ee =3D <0>; + qcom,channel =3D <0>; + + #address-cells =3D <2>; + #size-cells =3D <2>; + ranges; + + spmi@c426000 { + reg =3D <0x0 0xc426000 0x0 0x4000>, + <0x0 0xc8c0000 0x0 0x10000>, + <0x0 0xc42a000 0x0 0x8000>; + reg-names =3D "cnfg", "intr", "chnl_owner"; + + interrupts-extended =3D <&pdc 1 IRQ_TYPE_LEVEL_HIGH>; + interrupt-names =3D "periph_irq"; + interrupt-controller; + #interrupt-cells =3D <4>; + + #address-cells =3D <2>; + #size-cells =3D <0>; + }; + + spmi@c437000 { + reg =3D <0x0 0xc437000 0x0 0x4000>, + <0x0 0xc8d0000 0x0 0x10000>, + <0x0 0xc43b000 0x0 0x8000>; + reg-names =3D "cnfg", "intr", "chnl_owner"; + + interrupts-extended =3D <&pdc 3 IRQ_TYPE_LEVEL_HIGH>; + interrupt-names =3D "periph_irq"; + interrupt-controller; + #interrupt-cells =3D <4>; + + #address-cells =3D <2>; + #size-cells =3D <0>; + }; + }; + }; --=20 2.25.1 From nobody Mon Feb 9 09:36:05 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E489930BF6A for ; Fri, 24 Oct 2025 09:33:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761298425; cv=none; b=aSdOwOLq6SdbKGi9Tj6ffd+3jeurzAW3ySm2TqFO57kCrUw3KeaQvEOjAE+nFi77rvQfPTm8Fu5qomheLibBCwFhuUCyeliAo44JBwNXPXq6FcluVDHLjR7EgjKMzcyvcVgc5cZbq3a551V68ADQIu4IJxCvs03h88fSw7vHRso= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761298425; c=relaxed/simple; bh=rWAjSbFtiyB04c6nt4HJX+xdhVrF7eu03nOf4isKpPM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=KBaGBte6gUM8whYQMMlX6/WOqmVMYFFbgAVO/6OVrtDSXQ+V1rqJ+b4dHO7kZ+GCNWOtRASROcWFTnhuxb2+5yRvfSx7UBn8gEQ53DoCQuJhnq805QLq+6L3oSc9aFYgX3x2TuuWYGRVcacvfIHWDUM6tVhdGbkod0Nr6m04F/A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=n43lT2YI; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="n43lT2YI" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 59O3FRnK021007 for ; Fri, 24 Oct 2025 09:33:41 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= CMLd+stHl7HCnBT3FoRlbRpIJvQccMUYmaLcGjtU+ZM=; b=n43lT2YIUXEeuVcj 6ZoRY1rbA+Zneb8qkarH801WB6RpebltStGlhWYGs+YM7WvqVAg8WRGikjF4DicI 52RcckhoyDqOTkZqJp3B/O7wUw33v9RaJbmyM2Nhlyd3VBv9qriOK4B/bvBpCeiH ALl3ZLYoM3FBFrw1vb9IRaZknvOL4YOujrXgAQRSytYmEukUaTqW3tp4J15BdfpT 4wx0difr+odTkkC3bPNwhYTjEXk68QgQM9Gq5p7BXaZMdSGzzVDEBI1PUEkOfJKn aVetgvRucEzkfxBYt69xSse5AlnctZ/+Qf51PxDrRQ+C857nG58ugm4CLV2alrHW WiwH+A== Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 49xhe0shhv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Fri, 24 Oct 2025 09:33:41 +0000 (GMT) Received: by mail-pf1-f198.google.com with SMTP id d2e1a72fcca58-7a277277cb7so2801542b3a.3 for ; Fri, 24 Oct 2025 02:33:41 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1761298420; x=1761903220; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=CMLd+stHl7HCnBT3FoRlbRpIJvQccMUYmaLcGjtU+ZM=; b=l61n1Q/+b65nmLRji9BltBsv5Zyc4lcjDn8/Y0TNxEPRaf0G52leOrDOlndjAxRwj0 JCu6tK5Kr65Syc8U0LGgH12NYmF8g1UNDellPJfgu5QFlg4EiOzw+VRFd7/WL9oHVAvm 364xUj75fIvycyiYQOdScKDs5EwgDu+Ox2U7a40WO1fbNP3tgv0Ydn/Nirz8OXZuwWLk 3+iLagJopALUnAONIPfKQOE5qSFBv3Hmp1L/Fuu2A/s6ew/lvrPtYcBOge9UB8RxvY7p w0mfQhNlj5t65sEZP0UQ0T/lHCOdkj6SwLUsmhHpYpOgeCDyYmWf/rPeN1vHHDm1khja FiYA== X-Forwarded-Encrypted: i=1; AJvYcCVlgQEsSLFwNnYdPrHbdUJ0gHK4ks9wo6Ghx5Kuill+Wfkmfo4XJ8qzRkcBpvmP4pE9eSNDWk+9HM6PCDQ=@vger.kernel.org X-Gm-Message-State: AOJu0YwUNukoYECiQqP/H3alXKGHQiajmMWlf6t8IgXa8T/VPbN71Yjf T6BIPO6SdcrmkRfMNUJ85gG3RDfwfbj0ep+GUmUKchTZ+8aO+Zovk1EMfmFFrpkHPXhEoVIp8v9 9/hGS/Jfan2eWi4XXmt2aja4zbpZj/Hv95a42veMmrizg+MrUFor72EM73844UptR8pY= X-Gm-Gg: ASbGncsvm7r6PCNm+9rFA/jF2Ca24nYdGdQTLo3OOkUv9jLkJCcf/epK9IHoc0OHoul HzqsbHBJvREpqo3usqg47SBoK6JmzAw9Ezy8DnEProsQre6gDLYp2ItwybstJdVLVfnzAvFfq0a X1dFcg/iBz2+BT71vqwG8SuSkX9N9K5eWvpO431To0hbLpzTXrFqwxAVyl45GRYT6kQ3IOM0dB3 EfgXShCDpIlxeh+jmFlx550rAyZGc6LO1xjclkVtw5Dc/z/8jyfhQO27mBYJ8gxNCSvpK/nBm/y dxYVXZ1OR1BF0/WEWwi8O3aLwOV4C5D6PSb5+o3jgEhg2OjDjINFm7ROSRdaF8OiDCyz5erXbNB 5tBG9OS5oB52nNeksdSM6fJND4j0nRuKPpA== X-Received: by 2002:a05:6a00:1394:b0:783:9b67:e96a with SMTP id d2e1a72fcca58-7a2865efc1cmr1894945b3a.0.1761298420006; Fri, 24 Oct 2025 02:33:40 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGl3S6wdGnnL5kcUzBrxlxSlnyZjEhdzflBFPC+ZiDZ07BeDunkPQ9EmriWxHV0ng9iSPLzkg== X-Received: by 2002:a05:6a00:1394:b0:783:9b67:e96a with SMTP id d2e1a72fcca58-7a2865efc1cmr1894912b3a.0.1761298419377; Fri, 24 Oct 2025 02:33:39 -0700 (PDT) Received: from hu-jprakash-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7a274dc33easm5270332b3a.68.2025.10.24.02.33.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Oct 2025 02:33:38 -0700 (PDT) From: Jishnu Prakash Date: Fri, 24 Oct 2025 15:03:23 +0530 Subject: [PATCH v3 3/3] spmi: spmi-pmic-arb: add support for PMIC arbiter v8 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251024-pmic_arb_v8-v3-3-cad8d6a2cbc0@oss.qualcomm.com> References: <20251024-pmic_arb_v8-v3-0-cad8d6a2cbc0@oss.qualcomm.com> In-Reply-To: <20251024-pmic_arb_v8-v3-0-cad8d6a2cbc0@oss.qualcomm.com> To: Stephen Boyd , Rob Herring , Krzysztof Kozlowski , Conor Dooley , David Collins Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Jishnu Prakash , aiqun.yu@oss.qualcomm.com, kamal.wadhwa@oss.qualcomm.com, jingyi.wang@oss.qualcomm.com X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1761298404; l=19123; i=jishnu.prakash@oss.qualcomm.com; s=20251014; h=from:subject:message-id; bh=EUTxHm7CeAn35CYzL1L/agjl2XgJqMH40T8awwhQhzI=; b=JxXNxG+FxwFbQyBaogmr1iMZ3NOoETM/lYqkgCSEO4vEuMys/ThzuGHvIynf4bhwVdwm4UBvk iukK0l16U3pDcxD9000RYnOrF3qnxhbuNG/tE5wyg1i1OkMGLh0BEL/ X-Developer-Key: i=jishnu.prakash@oss.qualcomm.com; a=ed25519; pk=g89pXdLVwRjdTeQ+uX1QzvBO346E3hQAc1N7fcTXgmk= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDIxMDE2NyBTYWx0ZWRfXxbVySJrFkCmr MHQ9KM9HVqh27xJLSwZOz55kJflMK7dbkMANs4tk4Dmo3dKyxYgd3weAGz7q8yJZswFIKp0YLDN xdfyDSZpRT+wv51Kfe7UXVN9PYFEDNHdwVqZLOaGXquR96s/GII8K17eA0CFTw5867O7y8C7vEw KlTBRYPQDPD50Tc+fY9AY1TdB1de16HpzAga/2ppt7UyRMX2isMLECncksyP6TJY6cQunLeHbMK HACxaGNljd5wvd3qg84VlXq7+3grCUNe7ISkQtl2uN7g4kk+faMhCAZoK8+BSkQwCLBahPEX1Vq 45Ucps+0gpPNpI/gOg7cqv2uTg31N3VZzYxB54EEGAcIiZXpxrmhPv261eJBla2eOfWLKanAG6f 8D2AECHytwlaeEKi/Jp1qQOO9hRToA== X-Proofpoint-ORIG-GUID: 309blgi_MbItA2jrm6bOB5ev3J4FHAIZ X-Authority-Analysis: v=2.4 cv=WYUBqkhX c=1 sm=1 tr=0 ts=68fb47f5 cx=c_pps a=m5Vt/hrsBiPMCU0y4gIsQw==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=x6icFKpwvdMA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=Ik5BXOhrgj9YKjSFxXcA:9 a=QEXdDO2ut3YA:10 a=IoOABgeZipijB_acs4fv:22 X-Proofpoint-GUID: 309blgi_MbItA2jrm6bOB5ev3J4FHAIZ X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-24_01,2025-10-22_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 adultscore=0 bulkscore=0 impostorscore=0 spamscore=0 priorityscore=1501 clxscore=1015 malwarescore=0 lowpriorityscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2510020000 definitions=main-2510210167 From: David Collins PMIC arbiter v8 supports up to 4 SPMI buses and up to 8192 PMIC peripherals. Its register map differs from v7 as several fields increased in size. Add support for PMIC arbiter version 8. Signed-off-by: David Collins Signed-off-by: Kamal Wadhwa Signed-off-by: Jishnu Prakash --- drivers/spmi/spmi-pmic-arb.c | 324 +++++++++++++++++++++++++++++++++++++++= ---- 1 file changed, 294 insertions(+), 30 deletions(-) diff --git a/drivers/spmi/spmi-pmic-arb.c b/drivers/spmi/spmi-pmic-arb.c index 91581974ef84..612736973e4b 100644 --- a/drivers/spmi/spmi-pmic-arb.c +++ b/drivers/spmi/spmi-pmic-arb.c @@ -3,6 +3,7 @@ * Copyright (c) 2012-2015, 2017, 2021, The Linux Foundation. All rights r= eserved. */ #include +#include #include #include #include @@ -25,10 +26,12 @@ #define PMIC_ARB_VERSION_V3_MIN 0x30000000 #define PMIC_ARB_VERSION_V5_MIN 0x50000000 #define PMIC_ARB_VERSION_V7_MIN 0x70000000 +#define PMIC_ARB_VERSION_V8_MIN 0x80000000 #define PMIC_ARB_INT_EN 0x0004 =20 #define PMIC_ARB_FEATURES 0x0004 #define PMIC_ARB_FEATURES_PERIPH_MASK GENMASK(10, 0) +#define PMIC_ARB_FEATURES_V8_PERIPH_MASK GENMASK(12, 0) =20 #define PMIC_ARB_FEATURES1 0x0008 =20 @@ -50,9 +53,10 @@ #define SPMI_MAPPING_BIT_IS_1_RESULT(X) (((X) >> 0) & 0xFF) =20 #define SPMI_MAPPING_TABLE_TREE_DEPTH 16 /* Maximum of 16-bits */ -#define PMIC_ARB_MAX_PPID BIT(12) /* PPID is 12bit */ +#define PMIC_ARB_MAX_PPID BIT(13) #define PMIC_ARB_APID_VALID BIT(15) #define PMIC_ARB_CHAN_IS_IRQ_OWNER(reg) ((reg) & BIT(24)) +#define PMIC_ARB_V8_CHAN_IS_IRQ_OWNER(reg) ((reg) & BIT(31)) #define INVALID_EE 0xFF =20 /* Ownership Table */ @@ -96,30 +100,33 @@ enum pmic_arb_channel { PMIC_ARB_CHANNEL_OBS, }; =20 -#define PMIC_ARB_MAX_BUSES 2 +#define PMIC_ARB_MAX_BUSES 4 +#define PMIC_ARB_MAX_BUSES_V8 4 =20 /* Maximum number of support PMIC peripherals */ #define PMIC_ARB_MAX_PERIPHS 512 #define PMIC_ARB_MAX_PERIPHS_V7 1024 +#define PMIC_ARB_MAX_PERIPHS_V8 8192 #define PMIC_ARB_TIMEOUT_US 1000 #define PMIC_ARB_MAX_TRANS_BYTES (8) =20 #define PMIC_ARB_APID_MASK 0xFF #define PMIC_ARB_PPID_MASK 0xFFF +#define PMIC_ARB_V8_PPID_MASK 0x1FFF =20 /* interrupt enable bit */ #define SPMI_PIC_ACC_ENABLE_BIT BIT(0) =20 #define spec_to_hwirq(slave_id, periph_id, irq_id, apid) \ - ((((slave_id) & 0xF) << 28) | \ - (((periph_id) & 0xFF) << 20) | \ - (((irq_id) & 0x7) << 16) | \ - (((apid) & 0x3FF) << 0)) + (FIELD_PREP(GENMASK(28, 24), (slave_id)) | \ + FIELD_PREP(GENMASK(23, 16), (periph_id)) | \ + FIELD_PREP(GENMASK(15, 13), (irq_id)) | \ + FIELD_PREP(GENMASK(12, 0), (apid))) =20 -#define hwirq_to_sid(hwirq) (((hwirq) >> 28) & 0xF) -#define hwirq_to_per(hwirq) (((hwirq) >> 20) & 0xFF) -#define hwirq_to_irq(hwirq) (((hwirq) >> 16) & 0x7) -#define hwirq_to_apid(hwirq) (((hwirq) >> 0) & 0x3FF) +#define hwirq_to_sid(hwirq) FIELD_GET(GENMASK(28, 24), (hwirq)) +#define hwirq_to_per(hwirq) FIELD_GET(GENMASK(23, 16), (hwirq)) +#define hwirq_to_irq(hwirq) FIELD_GET(GENMASK(15, 13), (hwirq)) +#define hwirq_to_apid(hwirq) FIELD_GET(GENMASK(12, 0), (hwirq)) =20 struct pmic_arb_ver_ops; =20 @@ -138,11 +145,12 @@ struct spmi_pmic_arb; * @domain: irq domain object for PMIC IRQ domain * @intr: address of the SPMI interrupt control registers. * @cnfg: address of the PMIC Arbiter configuration registers. + * @apid_owner: on v8: address of APID owner mapping table registers * @spmic: spmi controller registered for this bus * @lock: lock to synchronize accesses. - * @base_apid: on v7: minimum APID associated with the particular SPMI - * bus instance - * @apid_count: on v5 and v7: number of APIDs associated with the + * @base_apid: on v7 and v8: minimum APID associated with the + * particular SPMI bus instance + * @apid_count: on v5, v7 and v8: number of APIDs associated with the * particular SPMI bus instance * @mapping_table: in-memory copy of PPID -> APID mapping table. * @mapping_table_valid:bitmap containing valid-only periphs @@ -159,6 +167,7 @@ struct spmi_pmic_arb_bus { struct irq_domain *domain; void __iomem *intr; void __iomem *cnfg; + void __iomem *apid_owner; struct spmi_controller *spmic; raw_spinlock_t lock; u16 base_apid; @@ -181,6 +190,7 @@ struct spmi_pmic_arb_bus { * @wr_base: on v1 "core", on v2 "chnls" register base off DT. * @core: core register base for v2 and above only (see above) * @core_size: core register base size + * @apid_map: on v8, APID mapping table register base * @channel: execution environment channel to use for accesses. * @ee: the current Execution Environment * @ver_ops: version dependent operations. @@ -193,6 +203,7 @@ struct spmi_pmic_arb { void __iomem *wr_base; void __iomem *core; resource_size_t core_size; + void __iomem *apid_map; u8 channel; u8 ee; const struct pmic_arb_ver_ops *ver_ops; @@ -206,6 +217,7 @@ struct spmi_pmic_arb { * * @ver_str: version string. * @get_core_resources: initializes the core, observer and channels + * @get_bus_resources: requests per-SPMI bus register resources * @init_apid: finds the apid base and count * @ppid_to_apid: finds the apid for a given ppid. * @non_data_cmd: on v1 issues an spmi non-data command. @@ -227,6 +239,9 @@ struct spmi_pmic_arb { struct pmic_arb_ver_ops { const char *ver_str; int (*get_core_resources)(struct platform_device *pdev, void __iomem *cor= e); + int (*get_bus_resources)(struct platform_device *pdev, + struct device_node *node, + struct spmi_pmic_arb_bus *bus); int (*init_apid)(struct spmi_pmic_arb_bus *bus, int index); int (*ppid_to_apid)(struct spmi_pmic_arb_bus *bus, u16 ppid); /* spmi commands (read_cmd, write_cmd, cmd) functionality */ @@ -656,7 +671,7 @@ static int periph_interrupt(struct spmi_pmic_arb_bus *b= us, u16 apid) unsigned int irq; u32 status, id; int handled =3D 0; - u8 sid =3D (bus->apid_data[apid].ppid >> 8) & 0xF; + u8 sid =3D (bus->apid_data[apid].ppid >> 8) & 0x1F; u8 per =3D bus->apid_data[apid].ppid & 0xFF; =20 status =3D readl_relaxed(pmic_arb->ver_ops->irq_status(bus, apid)); @@ -686,7 +701,7 @@ static void pmic_arb_chained_irq(struct irq_desc *desc) int last =3D bus->max_apid; /* * acc_offset will be non-zero for the secondary SPMI bus instance on - * v7 controllers. + * v7 and v8 controllers. */ int acc_offset =3D bus->base_apid >> 5; u8 ee =3D pmic_arb->ee; @@ -913,7 +928,7 @@ static int qpnpint_irq_domain_translate(struct irq_doma= in *d, return -EINVAL; if (fwspec->param_count !=3D 4) return -EINVAL; - if (intspec[0] > 0xF || intspec[1] > 0xFF || intspec[2] > 0x7) + if (intspec[0] > 0x1F || intspec[1] > 0xFF || intspec[2] > 0x7) return -EINVAL; =20 ppid =3D intspec[0] << 8 | intspec[1]; @@ -1160,6 +1175,24 @@ static int pmic_arb_ppid_to_apid_v2(struct spmi_pmic= _arb_bus *bus, u16 ppid) return apid_valid & ~PMIC_ARB_APID_VALID; } =20 +static void pmic_arb_dump_apid_map(struct spmi_pmic_arb_bus *bus) +{ + struct apid_data *apidd; + u16 apid, ppid; + + /* Dump the mapping table for debug purposes. */ + dev_dbg(&bus->spmic->dev, "PPID APID Write-EE IRQ-EE\n"); + for (ppid =3D 0; ppid < PMIC_ARB_MAX_PPID; ppid++) { + apid =3D bus->ppid_to_apid[ppid]; + if (apid & PMIC_ARB_APID_VALID) { + apid &=3D ~PMIC_ARB_APID_VALID; + apidd =3D &bus->apid_data[apid]; + dev_dbg(&bus->spmic->dev, "%#03X %3u %2u %2u\n", + ppid, apid, apidd->write_ee, apidd->irq_ee); + } + } +} + static int pmic_arb_read_apid_map_v5(struct spmi_pmic_arb_bus *bus) { struct spmi_pmic_arb *pmic_arb =3D bus->pmic_arb; @@ -1222,17 +1255,7 @@ static int pmic_arb_read_apid_map_v5(struct spmi_pmi= c_arb_bus *bus) bus->last_apid =3D i; } =20 - /* Dump the mapping table for debug purposes. */ - dev_dbg(&bus->spmic->dev, "PPID APID Write-EE IRQ-EE\n"); - for (ppid =3D 0; ppid < PMIC_ARB_MAX_PPID; ppid++) { - apid =3D bus->ppid_to_apid[ppid]; - if (apid & PMIC_ARB_APID_VALID) { - apid &=3D ~PMIC_ARB_APID_VALID; - apidd =3D &bus->apid_data[apid]; - dev_dbg(&bus->spmic->dev, "%#03X %3u %2u %2u\n", - ppid, apid, apidd->write_ee, apidd->irq_ee); - } - } + pmic_arb_dump_apid_map(bus); =20 return 0; } @@ -1346,7 +1369,7 @@ static int pmic_arb_get_core_resources_v7(struct plat= form_device *pdev, } =20 /* - * Only v7 supports 2 buses. Each bus will get a different apid count, read + * Arbiter v7 supports 2 buses. Each bus will get a different apid count, = read * from different registers. */ static int pmic_arb_init_apid_v7(struct spmi_pmic_arb_bus *bus, int index) @@ -1424,6 +1447,185 @@ static int pmic_arb_offset_v7(struct spmi_pmic_arb_= bus *bus, u8 sid, u16 addr, return offset; } =20 +static int pmic_arb_get_core_resources_v8(struct platform_device *pdev, + void __iomem *core) +{ + struct spmi_pmic_arb *pmic_arb =3D platform_get_drvdata(pdev); + + pmic_arb->apid_map =3D devm_platform_ioremap_resource_byname(pdev, + "chnl_map"); + if (IS_ERR(pmic_arb->apid_map)) + return PTR_ERR(pmic_arb->apid_map); + + pmic_arb->core =3D core; + + pmic_arb->max_periphs =3D PMIC_ARB_MAX_PERIPHS_V8; + + return pmic_arb_get_obsrvr_chnls_v2(pdev); +} + +static int pmic_arb_get_bus_resources_v8(struct platform_device *pdev, + struct device_node *node, + struct spmi_pmic_arb_bus *bus) +{ + int index; + + index =3D of_property_match_string(node, "reg-names", "chnl_owner"); + if (index < 0) { + dev_err(&pdev->dev, "chnl_owner reg region missing\n"); + return -EINVAL; + } + + bus->apid_owner =3D devm_of_iomap(&pdev->dev, node, index, NULL); + + return PTR_ERR_OR_ZERO(bus->apid_owner); +} + +static int pmic_arb_read_apid_map_v8(struct spmi_pmic_arb_bus *bus) +{ + struct spmi_pmic_arb *pmic_arb =3D bus->pmic_arb; + struct apid_data *apidd; + struct apid_data *prev_apidd; + u16 i, apid, ppid, apid_max; + bool valid, is_irq_ee; + u32 regval, offset; + + /* + * In order to allow multiple EEs to write to a single PPID in arbiter + * version 8, there can be more than one APID mapped to each PPID. The + * owner field for each of these mappings specifies the EE which is + * allowed to write to the APID. The owner of the last (highest) APID + * which has the IRQ owner bit set for a given PPID will receive + * interrupts from the PPID. + * + * In arbiter version 8, the APID numbering space is divided between + * the SPMI buses according to this mapping: + * APID =3D 0 to N-1 --> bus 0 + * APID =3D N to N+M-1 --> bus 1 + * APID =3D N+M to N+M+P-1 --> bus 2 + * APID =3D N+M+P to N+M+P+Q-1 --> bus 3 + * where N =3D number of APIDs supported by bus 0 + * M =3D number of APIDs supported by bus 1 + * P =3D number of APIDs supported by bus 2 + * Q =3D number of APIDs supported by bus 3 + */ + apidd =3D &bus->apid_data[bus->base_apid]; + apid_max =3D bus->base_apid + bus->apid_count; + for (i =3D bus->base_apid; i < apid_max; i++, apidd++) { + offset =3D pmic_arb->ver_ops->apid_map_offset(i); + regval =3D readl_relaxed(pmic_arb->apid_map + offset); + if (!regval) + continue; + ppid =3D regval & PMIC_ARB_V8_PPID_MASK; + is_irq_ee =3D PMIC_ARB_V8_CHAN_IS_IRQ_OWNER(regval); + + regval =3D readl_relaxed(pmic_arb->ver_ops->apid_owner(bus, i)); + apidd->write_ee =3D SPMI_OWNERSHIP_PERIPH2OWNER(regval); + + apidd->irq_ee =3D is_irq_ee ? apidd->write_ee : INVALID_EE; + + valid =3D bus->ppid_to_apid[ppid] & PMIC_ARB_APID_VALID; + apid =3D bus->ppid_to_apid[ppid] & ~PMIC_ARB_APID_VALID; + prev_apidd =3D &bus->apid_data[apid]; + + if (!valid || apidd->write_ee =3D=3D pmic_arb->ee) { + /* First PPID mapping or one for this EE */ + bus->ppid_to_apid[ppid] =3D i | PMIC_ARB_APID_VALID; + } else if (valid && is_irq_ee && + prev_apidd->write_ee =3D=3D pmic_arb->ee) { + /* + * Duplicate PPID mapping after the one for this EE; + * override the irq owner + */ + prev_apidd->irq_ee =3D apidd->irq_ee; + } + + apidd->ppid =3D ppid; + bus->last_apid =3D i; + } + + pmic_arb_dump_apid_map(bus); + + return 0; +} + +static int pmic_arb_init_apid_v8(struct spmi_pmic_arb_bus *bus, int index) +{ + struct spmi_pmic_arb *pmic_arb =3D bus->pmic_arb; + int ret, i; + + if (index < 0 || index >=3D PMIC_ARB_MAX_BUSES_V8) { + dev_err(&bus->spmic->dev, "Unsupported bus index %d detected\n", + index); + return -EINVAL; + } + + bus->base_apid =3D 0; + bus->apid_count =3D 0; + for (i =3D 0; i <=3D index; i++) { + bus->base_apid +=3D bus->apid_count; + bus->apid_count =3D readl_relaxed(pmic_arb->core + PMIC_ARB_FEATURES + i= * 4) & + PMIC_ARB_FEATURES_V8_PERIPH_MASK; + } + + if (bus->apid_count =3D=3D 0) { + dev_err(&bus->spmic->dev, "Bus %d not implemented\n", index); + return -EINVAL; + } else if (bus->base_apid + bus->apid_count > pmic_arb->max_periphs) { + dev_err(&bus->spmic->dev, "Unsupported max APID %d detected\n", + bus->base_apid + bus->apid_count); + return -EINVAL; + } + + ret =3D pmic_arb_init_apid_min_max(bus); + if (ret) + return ret; + + ret =3D pmic_arb_read_apid_map_v8(bus); + if (ret) { + dev_err(&bus->spmic->dev, "could not read APID->PPID mapping table, rc= =3D %d\n", + ret); + return ret; + } + + return 0; +} + +/* + * v8 offset per ee and per apid for observer channels and per apid for + * read/write channels. + */ +static int pmic_arb_offset_v8(struct spmi_pmic_arb_bus *bus, u8 sid, u16 a= ddr, + enum pmic_arb_channel ch_type) +{ + struct spmi_pmic_arb *pmic_arb =3D bus->pmic_arb; + u16 apid; + int rc; + u32 offset =3D 0; + u16 ppid =3D (sid << 8) | (addr >> 8); + + rc =3D pmic_arb->ver_ops->ppid_to_apid(bus, ppid); + if (rc < 0) + return rc; + + apid =3D rc; + switch (ch_type) { + case PMIC_ARB_CHANNEL_OBS: + offset =3D 0x40000 * pmic_arb->ee + 0x20 * apid; + break; + case PMIC_ARB_CHANNEL_RW: + if (bus->apid_data[apid].write_ee !=3D pmic_arb->ee) { + dev_err(&bus->spmic->dev, "disallowed SPMI write to sid=3D%u, addr=3D0x= %04X\n", + sid, addr); + return -EPERM; + } + offset =3D 0x200 * apid; + break; + } + + return offset; +} + static u32 pmic_arb_fmt_cmd_v1(u8 opc, u8 sid, u16 addr, u8 bc) { return (opc << 27) | ((sid & 0xf) << 20) | (addr << 4) | (bc & 0x7); @@ -1490,6 +1692,14 @@ pmic_arb_acc_enable_v7(struct spmi_pmic_arb_bus *bus= , u16 n) return pmic_arb->wr_base + 0x100 + 0x1000 * n; } =20 +static void __iomem * +pmic_arb_acc_enable_v8(struct spmi_pmic_arb_bus *bus, u16 n) +{ + struct spmi_pmic_arb *pmic_arb =3D bus->pmic_arb; + + return pmic_arb->wr_base + 0x100 + 0x200 * n; +} + static void __iomem * pmic_arb_irq_status_v1(struct spmi_pmic_arb_bus *bus, u16 n) { @@ -1516,6 +1726,14 @@ pmic_arb_irq_status_v7(struct spmi_pmic_arb_bus *bus= , u16 n) return pmic_arb->wr_base + 0x104 + 0x1000 * n; } =20 +static void __iomem * +pmic_arb_irq_status_v8(struct spmi_pmic_arb_bus *bus, u16 n) +{ + struct spmi_pmic_arb *pmic_arb =3D bus->pmic_arb; + + return pmic_arb->wr_base + 0x104 + 0x200 * n; +} + static void __iomem * pmic_arb_irq_clear_v1(struct spmi_pmic_arb_bus *bus, u16 n) { @@ -1542,6 +1760,14 @@ pmic_arb_irq_clear_v7(struct spmi_pmic_arb_bus *bus,= u16 n) return pmic_arb->wr_base + 0x108 + 0x1000 * n; } =20 +static void __iomem * +pmic_arb_irq_clear_v8(struct spmi_pmic_arb_bus *bus, u16 n) +{ + struct spmi_pmic_arb *pmic_arb =3D bus->pmic_arb; + + return pmic_arb->wr_base + 0x108 + 0x200 * n; +} + static u32 pmic_arb_apid_map_offset_v2(u16 n) { return 0x800 + 0x4 * n; @@ -1557,6 +1783,12 @@ static u32 pmic_arb_apid_map_offset_v7(u16 n) return 0x2000 + 0x4 * n; } =20 +static u32 pmic_arb_apid_map_offset_v8(u16 n) +{ + /* For v8, offset is from "chnl_map" base register, not "core". */ + return 0x4 * n; +} + static void __iomem * pmic_arb_apid_owner_v2(struct spmi_pmic_arb_bus *bus, u16 n) { @@ -1564,7 +1796,7 @@ pmic_arb_apid_owner_v2(struct spmi_pmic_arb_bus *bus,= u16 n) } =20 /* - * For arbiter version 7, APID ownership table registers have independent + * For arbiter version 7 and 8, APID ownership table registers have indepe= ndent * numbering space for each SPMI bus instance, so each is indexed starting= from * 0. */ @@ -1574,6 +1806,12 @@ pmic_arb_apid_owner_v7(struct spmi_pmic_arb_bus *bus= , u16 n) return bus->cnfg + 0x4 * (n - bus->base_apid); } =20 +static void __iomem * +pmic_arb_apid_owner_v8(struct spmi_pmic_arb_bus *bus, u16 n) +{ + return bus->apid_owner + 0x4 * (n - bus->base_apid); +} + static const struct pmic_arb_ver_ops pmic_arb_v1 =3D { .ver_str =3D "v1", .get_core_resources =3D pmic_arb_get_core_resources_v1, @@ -1654,6 +1892,23 @@ static const struct pmic_arb_ver_ops pmic_arb_v7 =3D= { .apid_owner =3D pmic_arb_apid_owner_v7, }; =20 +static const struct pmic_arb_ver_ops pmic_arb_v8 =3D { + .ver_str =3D "v8", + .get_core_resources =3D pmic_arb_get_core_resources_v8, + .get_bus_resources =3D pmic_arb_get_bus_resources_v8, + .init_apid =3D pmic_arb_init_apid_v8, + .ppid_to_apid =3D pmic_arb_ppid_to_apid_v5, + .non_data_cmd =3D pmic_arb_non_data_cmd_v2, + .offset =3D pmic_arb_offset_v8, + .fmt_cmd =3D pmic_arb_fmt_cmd_v2, + .owner_acc_status =3D pmic_arb_owner_acc_status_v7, + .acc_enable =3D pmic_arb_acc_enable_v8, + .irq_status =3D pmic_arb_irq_status_v8, + .irq_clear =3D pmic_arb_irq_clear_v8, + .apid_map_offset =3D pmic_arb_apid_map_offset_v8, + .apid_owner =3D pmic_arb_apid_owner_v8, +}; + static const struct irq_domain_ops pmic_arb_irq_domain_ops =3D { .activate =3D qpnpint_irq_domain_activate, .alloc =3D qpnpint_irq_domain_alloc, @@ -1731,6 +1986,12 @@ static int spmi_pmic_arb_bus_init(struct platform_de= vice *pdev, bus->spmic =3D ctrl; bus->id =3D bus_index; =20 + if (pmic_arb->ver_ops->get_bus_resources) { + ret =3D pmic_arb->ver_ops->get_bus_resources(pdev, node, bus); + if (ret) + return ret; + } + ret =3D pmic_arb->ver_ops->init_apid(bus, bus_index); if (ret) return ret; @@ -1825,8 +2086,10 @@ static int spmi_pmic_arb_probe(struct platform_devic= e *pdev) pmic_arb->ver_ops =3D &pmic_arb_v3; else if (hw_ver < PMIC_ARB_VERSION_V7_MIN) pmic_arb->ver_ops =3D &pmic_arb_v5; - else + else if (hw_ver < PMIC_ARB_VERSION_V8_MIN) pmic_arb->ver_ops =3D &pmic_arb_v7; + else + pmic_arb->ver_ops =3D &pmic_arb_v8; =20 err =3D pmic_arb->ver_ops->get_core_resources(pdev, core); if (err) @@ -1875,6 +2138,7 @@ static void spmi_pmic_arb_remove(struct platform_devi= ce *pdev) static const struct of_device_id spmi_pmic_arb_match_table[] =3D { { .compatible =3D "qcom,spmi-pmic-arb", }, { .compatible =3D "qcom,x1e80100-spmi-pmic-arb", }, + { .compatible =3D "qcom,glymur-spmi-pmic-arb", }, {}, }; MODULE_DEVICE_TABLE(of, spmi_pmic_arb_match_table); --=20 2.25.1