From nobody Fri Sep 25 01:22:50 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 4BB693DD86B for ; Fri, 18 Sep 2026 04:29:07 +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=1789705749; cv=none; b=FlnhDAHEUkri8LexFUVK3rYby8V7qVMd9BKPX9pOLwnc5nDRf79bY9qx/F3kja8fnnjugckg70Htgjlx2spYuSfUnCGAncqloWIBz6sn8snx6yBfJF3TCAZp1zvJQ0gsr43op0Mzb1b3zPZNucoFcoQHaZEPGGspaVYtsy2oalg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789705749; c=relaxed/simple; bh=4j95AdScqCZUqe78NadBsPLDTCF86ubLqdl/5jQITZo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hO//vXEtpUIbn305ZcLmn/y40zUA3Z5wy99Te9xO8fFXeIKlybTiKLbXZM648lMDlHmwMK1mdrYbMjfC4LwQA25LKuMAubK6LAzfLOji0GoUh7Xvyb04qPJN6tzy+Iz2nJ9qMJre+X9clx/JT1ZTJTIIfSnGbXWmuFSoGjuhArI= 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=MCiZK+C5; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Jv3kbSl0; 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="MCiZK+C5"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Jv3kbSl0" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 68I2UZv92851857 for ; Fri, 18 Sep 2026 04:29:07 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= vNSqr+Rk87YOsnTrOXZyhE/rjTTAgCWWWaJtccYCJRo=; b=MCiZK+C5xkpdMfCF pUhTzAW3gMPXzSoN1bNcB2CNWC+0CN3POeVCK2sGrjk80vVuP4l1NF9I2eEYghWy h2aeQcdq1Q5VWuFrOOa+5NP3fXP0Crm/7CYgSRYdasTJV0M1gP59uuvT7qDWtBzk BGAFVV8ayK+p9q6PvWUCbLS1OzuZ+J0XKVOkBgKAbma5bJQQ9fgtvob96/6ZIJ9z y2QuLDiHLbC5w4WK+MFxClYxz1tgLUGVzg0d7gj+iQfu1Rgj83Bsn1UqTdnxUKxZ Bw4VQdiOYjLtJxKBwGBTRXduGdJIr/QNs/YHs6uDvpjrCGiD1F/PaL6yKybF2Bt+ RXCDmQ== Received: from mail-pg1-f200.google.com (mail-pg1-f200.google.com [209.85.215.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4grq2ksqf2-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 18 Sep 2026 04:29:06 +0000 (GMT) Received: by mail-pg1-f200.google.com with SMTP id 41be03b00d2f7-cc2229450b4so283661a12.1 for ; Thu, 17 Sep 2026 21:29:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1789705746; x=1790310546; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=vNSqr+Rk87YOsnTrOXZyhE/rjTTAgCWWWaJtccYCJRo=; b=Jv3kbSl0QaY5d9aZl0A1p/vPC4oAMeuPtm0wlFQr0Tr+AYdBrWwcQ65g7ngCmEsK5V 58ahdB8K0H69wptz6kaXXzszRXDxyCisv91Gc5VbBfTDZoHGBXbxpEhFTsodrs2r3mPk sH2myarg+z71+c1KfxujAyzen5gjZWPTpuX+MUBrgBJe6T+GS3d7H1EKgVOW0J4sM6TY Y4GSHLtKmdjuSsZovW87w/pQsNCtF5QgmxOpfeHcI7iUwq9HcgJ3ieCDubduXmeHtzPi 64zisFDRLNEWs21M41xLxVXLdhcdTkDvvm5t9woZbCvZrXQhyP1tpd538XQKCtcfi601 veHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789705746; x=1790310546; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=vNSqr+Rk87YOsnTrOXZyhE/rjTTAgCWWWaJtccYCJRo=; b=rMJ4wQv2/Vy89yizjH4MU/GPOpBDw3Th005TGc7pY1QXZFsKtkS/rbg+WBD9SqMwh+ 3+5dq7PC2Xpj9f7ukfKjhsjHK8jRf+Nplbf3sw7Q1d6k8XTkS1zTlbmTILNISawcq/so 4+INlAYMzt5HwkZy895qOCpqc/u6kh7bXfCSDoRiPqC6BnLJ+8OgLEowSmB50JCGEp3J VVPZaP45frV82hJi3DBea259FV/2/k9NeyqlxwVgk2/huNQW69QzAcpJUXltbZpP9Xfu zmyRpRnulJ1YnY2yVVN5LROVncOV0k0MQWib9GB+Zcj88a7hUWfFm0eIZMeIk0CMum4k O+Hg== X-Forwarded-Encrypted: i=1; AKwUvByATEryyqGBIrMP9RJqH6s+8/1fEEAbwGe4l463Xd4aE/ySfy5WHBHVV9gEMZWR0vyZGN/uG1Plh2RxrqE=@vger.kernel.org X-Gm-Message-State: AFuF++kGatNBw3VBcCw/d8Rpo1QdbF1As9K051l8DbiXzSht6Y4PlZQY qAqCbQaC+YrHWZliRwLTpTguxokZ1O0N07Fh9sufUA7RKROgAlFZF1oh6KJXD7xvpRYQHtHb2No YRSMusG9JW2Qfsz/MW90qRSyfRI3P76KxmDD83B7dHOxfNB6fDAUKfsLAZbTLl/VpbgA= X-Gm-Gg: AYBFou2b6ZeRFjG8x0DN4Ef/qM0pZ3Wsin3EfDaVXOx6t12XcioRDHqXxly0sHBw3lt DCobOyeQPfCN7rGFpWrmXQjdSrRx75/bEzTzOrwImXq09Vz87A4TUgerxarHnSEvscWnIoh1v1I QY0OxKig00r94Kcjna6ng22x2L8EsJgxpOJV44+i5cybwKuVoOXGNu2VdOnQZzhVCbTp1A33RAE TLo9PviHNKkbikTvdD6FJMAt6RIPxhJnCQlbitpO2wKMB5Cf0WFRizWY2ppDNsmLm1TVUjeK76m YFYse93HUIZ+XNByevrueHUfZ46OMNXMoB6w6I6suRHtMTP/PuKdahdqGETOmTLSw5tkyH7uWZ/ m8L2jqnJRg1MLfhMaoaEtIonnmlKgW0g= X-Received: by 2002:a05:6a21:1690:b0:3da:7140:da35 with SMTP id adf61e73a8af0-3dd8c39ad61mr2809859637.15.1789705745803; Thu, 17 Sep 2026 21:29:05 -0700 (PDT) X-Received: by 2002:a05:6a21:1690:b0:3da:7140:da35 with SMTP id adf61e73a8af0-3dd8c39ad61mr2809814637.15.1789705745400; Thu, 17 Sep 2026 21:29:05 -0700 (PDT) Received: from WANGAOW-LAB01.ap.qualcomm.com ([114.94.8.21]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cc5c4dba322sm214595a12.10.2026.09.17.21.29.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Sep 2026 21:29:04 -0700 (PDT) From: Wangao Wang Date: Fri, 18 Sep 2026 12:28:40 +0800 Subject: [PATCH 1/6] dt-bindings: media: venus,common: relax clock/power-domain/iommu limits for Hawi 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: <20260918-add_iris_for_hawi-v1-1-ac60fd15c98b@oss.qualcomm.com> References: <20260918-add_iris_for_hawi-v1-0-ac60fd15c98b@oss.qualcomm.com> In-Reply-To: <20260918-add_iris_for_hawi-v1-0-ac60fd15c98b@oss.qualcomm.com> To: Vikash Garodia , Dikshita Agarwal , Bryan O'Donoghue , Mauro Carvalho Chehab , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Stanimir Varbanov , Abhinav Kumar , Philipp Zabel Cc: linux-arm-msm@vger.kernel.org, linux-media@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Wangao Wang X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1789705735; l=1480; i=wangao.wang@oss.qualcomm.com; s=20251021; h=from:subject:message-id; bh=4j95AdScqCZUqe78NadBsPLDTCF86ubLqdl/5jQITZo=; b=UOByjBVunhomcKzMaDfypw9PHAHMVJ97wORuq+6SfPAfwq3ZcnGMRssw5XKGY9GbnrZJJitwi dHb46wPCYFyB9I6+6uk1TgO1HOkLJ8HUklft7dunsj1xj9os6Al9Ww2 X-Developer-Key: i=wangao.wang@oss.qualcomm.com; a=ed25519; pk=bUPgYblBUAsoPyGfssbNR7ZXUSGF8v1VF4FJzSO6/aA= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTE4MDA1NiBTYWx0ZWRfXxR0X287TUpxW hoRQsWoHaPmOZV3zgU2GpD06OcnArZAS/0Rn2umHzIxnHWzBm7176lD7EAsmXsjetNc+DRezru/ vToh+tWTDynrTUZwsabI4BXNw2qwo0AwWVDDzfrS3FH2uWlsgHW1N43bGK4JRNi8Wuq57wxMWa3 TLkHBBTgyherSw9MI1B0Ah0R/16YqoLVZsfnYiYnnP4idj82ent+lWpG0lvuM1vibwrJ91APWOG z/VWuYrFHIwqoFtt7BK06YA3Xm1CJfDYPhmbA8EiL8dPEdil39oYKmDfsY03b2DCqerAIQBIX5r F5KTzk/VFBwBMSSsHNyVNOEtlenOA8+XzPKU0aBgy4RGct5ULxcp9pVbUrkdhCv2yuiqFSkv7tU 5obc3u8pe0tj2lb14NldtHOvkS2bJYtloC/hOs7kttCo/RS0hsIXQzks+t1iUwoUhIA1eRXERHl xGZTgWdMKyEtUzUgCng== X-Proofpoint-GUID: dXIP8M5YePTLbdNDBLCPV7qYGg7vfFhu X-Authority-Analysis: v=2.4 cv=bcD+w+PB c=1 sm=1 tr=0 ts=6aacbe12 cx=c_pps a=oF/VQ+ItUULfLr/lQ2/icg==:117 a=Uz3yg00KUFJ2y2WijEJ4bw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=EUspDBNiAAAA:8 a=HhAAYa2kYXLYgDpgJ-QA:9 a=QEXdDO2ut3YA:10 a=3WC7DwWrALyhR5TkjVHa:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwOTE4MDA1NiBTYWx0ZWRfX8eY6sVtmI5Ds 2cDB4aC4pP7DbGcqcThDck1PDpX7k9fvns4MWnJY8vUJ3IEoYxbt3tTJ8d2344i2isuz6hAADd7 FzxpfOlqc9xHexXn7x29wMeuYN4Uf44= X-Proofpoint-ORIG-GUID: dXIP8M5YePTLbdNDBLCPV7qYGg7vfFhu X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-18_01,2026-09-16_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 clxscore=1015 adultscore=0 suspectscore=0 priorityscore=1501 bulkscore=0 phishscore=0 impostorscore=0 lowpriorityscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2609040000 definitions=main-2609180056 The Hawi Soc Iris5 video codec requires more clocks, power domain entries and IOMMU mappings than the current limits allow. Relax the common schema constraints to accommodate it. Signed-off-by: Wangao Wang --- .../devicetree/bindings/media/qcom,venus-common.yaml | 13 +++++++--= ---- 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/Documentation/devicetree/bindings/media/qcom,venus-common.yaml= b/Documentation/devicetree/bindings/media/qcom,venus-common.yaml index 68d5e592a028c5eecde04ce72cd5ae6815ba5c82..18891f0859eef7e8e3739a4b94e= 3abcdcb9d6009 100644 --- a/Documentation/devicetree/bindings/media/qcom,venus-common.yaml +++ b/Documentation/devicetree/bindings/media/qcom,venus-common.yaml @@ -20,11 +20,11 @@ properties: =20 clocks: minItems: 3 - maxItems: 7 + maxItems: 13 =20 clock-names: minItems: 3 - maxItems: 7 + maxItems: 13 =20 firmware-name: maxItems: 1 @@ -41,11 +41,11 @@ properties: =20 power-domains: minItems: 1 - maxItems: 4 + maxItems: 9 =20 power-domain-names: minItems: 1 - maxItems: 4 + maxItems: 9 =20 '#address-cells': const: 1 @@ -64,9 +64,10 @@ properties: =20 properties: iommus: - maxItems: 1 + minItems: 1 + maxItems: 3 iommu-ranges: - maxItems: 1 + maxItems: 2 required: - iommus - iommu-ranges --=20 2.43.0 From nobody Fri Sep 25 01:22:50 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 B8B8A3DAAC0 for ; Fri, 18 Sep 2026 04:29:12 +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=1789705755; cv=none; b=Evla+pZ0v6btzZSLD1N/QtQurKLf330VILNW6Ne6vjgltrEghMn25MfBwU/qATLEfOcnpZZf5doDwz0PS2xg1t7H0rhBju+HMZ0REDEuY7jDVGPIxdGJdXcQBHKfbBBV4ZgX5wW82KcvNIGUI0jSMzf2u7Bpqo3rIx9bjqBSQtQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789705755; c=relaxed/simple; bh=54FLL9iRc8kj3te2Nv7oowlynIqip7DIG+tP9u5qIsA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Zu/8wkWnqljBqz65pUQ6ygW/si/22tEvycMPXtk/7ADJ8+tvv72BMcdYg+7bZhxbt76Xf+kMvfU1Ig7H9mvBYlPoIWqMw3LwL409GHhT6XGa5Y2PKLtRysjB/h6H201xlv9KAAJJWPHXFFjNbFj4qwul/YYLfvJIjagFxRQUDYw= 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=ftyLc6Rq; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=V103Z0Ul; 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="ftyLc6Rq"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="V103Z0Ul" Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 68I2UItu457244 for ; Fri, 18 Sep 2026 04:29:12 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= LsD6XZOf+vZtB4mF6qxwR1zn9GbLPaac34Hj4VScJ6M=; b=ftyLc6RqyZHdvF4G +2elqaADBfpTwsmBIAc273vkfhI2PFH3dhdaDMbjQLhn6Rsh6Mw2t9CnnGf3UgMj owW0YSRDt0hhycIulNuIqThsiwH19PX4hF+LBqNk1/803Xt4onLoVlY6MahSVaAD bl3tBnjgt/Ug3XWePcLD3fYpxea7K32IJohE+3wbW6910D+je2Al79iMU5pZnpr1 8FiHPguJqNQvtFMhX1we/GuHXffFh0vYwh4+RRfP8C6zgjEPfoZdcK/y6cXFtOmT Hzyy22cnM6Y8/BMD1ENuCtpSjPItywLeEIMmUF67BYfaC4+d/zY8gNEtFx7h2Xy7 8jVEEA== Received: from mail-pf1-f197.google.com (mail-pf1-f197.google.com [209.85.210.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4grtdpru7v-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 18 Sep 2026 04:29:11 +0000 (GMT) Received: by mail-pf1-f197.google.com with SMTP id d2e1a72fcca58-86a43fc3527so1994658b3a.1 for ; Thu, 17 Sep 2026 21:29:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1789705751; x=1790310551; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=LsD6XZOf+vZtB4mF6qxwR1zn9GbLPaac34Hj4VScJ6M=; b=V103Z0UlWiOmteEolEjRO0hJqmjhAhO8hG6/sq0RlDw5R4xjQZs7RZNuLRwbGUalby 1bfbExoiAgC9/9KIQGTzc3O3VX/sbN6Rtcg9XZD12vqNVA2EBn+sioidD9zeOd9E82GH 50U2OWKD/WVm5Rd15YBXClIbv/31uSV6Bn9PAqxBxSV2DF+V132XYwh6wL/NPE3TNhj2 Bpsr2lcJ2YJ8LaXPijVnpAhKSd/jFIdaFPFKt7GaxrrmN9q29b/OuyJAEitIQOhXh73u B1KyrAJL4e3d0JmsUDhZB1sQmb8s0anWEaI0l79fxIPzh5XFM7jzUmRfnV/hLoCyevnA 26vA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789705751; x=1790310551; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=LsD6XZOf+vZtB4mF6qxwR1zn9GbLPaac34Hj4VScJ6M=; b=Xoyp5b2eiCubd+2YApWjSiJ0+K7URfjkTtaJgMwCFn0BMqZJiUFip4vxrdwHqPGeCw Gk/gqU5iO+ZHHSvQ5DhrJKNfV3cj3rMmG7EGlgjrzxlfICF9XdEUonzELbT2wVTN06YX oGdmPWzsipwc88CAu2qfYvFLhy57Et/xUEHdABZYCG7m/1UiI3UKtxNh8Q7Ov3IMoER0 7DYYdCtiiMWl3TW95g4xzydUrHJMMaSwAwBhctwzBAPzQMZj/dwTvrVMzExqIJqE9Ewj B5owwyrz/6BpWF8ISIPrjmZQV1J3Ohx3E9QHsQ1L6f5JAALXbGbjQ++OW7qcDNARvBFa 01cQ== X-Forwarded-Encrypted: i=1; AKwUvBxMh9I8zdOe8a1aniG9Hq/UlVYmacaD7tbomKDIRyg1Z8NZp8mQV3QUAYZHOs7Xlqxfqv/c/t0eXNEa15g=@vger.kernel.org X-Gm-Message-State: AFuF++lpmA9XNGOIHBDQ9OuRFn+poXcWRr1935mstlEpb1owvh2Cw+E+ VYC3Hnwc0Jpf13ABnLEcT3WwzKvpZnB0H0J+Go4V8Pz+s5LVD44NuEcmP2jRiG2n+ndyHWjLDw6 8OQOFEh7rVLmCaG1rabd+nBzcy3sdxGNddf3VSYFYs6owLeXG2R3SFOAMr19ireYabX4= X-Gm-Gg: AYBFou10Nm9iMW2ff16Z8uhrUtVzfHb8LPdOiFg0YcVJDQwZ1nmFHRXYk9j80z/9Sbd o+uPw3KARuJeXvB3ywqgaWpw9O2cp8WR4nGkwDauJKSb8V6NSOhgRHdpRCppuKcS4QP5yNTZxlI EreD1LieT8QzdWdKI034lKavpDwU/IZg2y7llcga/pJb+EyzWPLUdPHPTBli4B4HCKsFR3TfmRB 2NaACMftw7fTbSdwPDlTaAJzDToIhSxwcu8tTP6H/QYu0vQTYTP5N/9rpsV/C9vL1vTET9+Rltx YnHxxX67vnqeg0X1YK8U+Wtoga1vBMMfjkFGt+pgIZ3GCikth1l/8gCw6Jnzx79MK+x8JVI+H1j H9VSR7diOnPcbmSqSmhLgaU4CXsBpy2Q= X-Received: by 2002:a05:6a20:20c3:b0:3db:4bf:53fc with SMTP id adf61e73a8af0-3dd72522a1dmr8042906637.9.1789705751055; Thu, 17 Sep 2026 21:29:11 -0700 (PDT) X-Received: by 2002:a05:6a20:20c3:b0:3db:4bf:53fc with SMTP id adf61e73a8af0-3dd72522a1dmr8042879637.9.1789705750625; Thu, 17 Sep 2026 21:29:10 -0700 (PDT) Received: from WANGAOW-LAB01.ap.qualcomm.com ([114.94.8.21]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cc5c4dba322sm214595a12.10.2026.09.17.21.29.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Sep 2026 21:29:10 -0700 (PDT) From: Wangao Wang Date: Fri, 18 Sep 2026 12:28:41 +0800 Subject: [PATCH 2/6] dt-bindings: media: qcom,hawi-iris: Add Hawi video codec 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: <20260918-add_iris_for_hawi-v1-2-ac60fd15c98b@oss.qualcomm.com> References: <20260918-add_iris_for_hawi-v1-0-ac60fd15c98b@oss.qualcomm.com> In-Reply-To: <20260918-add_iris_for_hawi-v1-0-ac60fd15c98b@oss.qualcomm.com> To: Vikash Garodia , Dikshita Agarwal , Bryan O'Donoghue , Mauro Carvalho Chehab , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Stanimir Varbanov , Abhinav Kumar , Philipp Zabel Cc: linux-arm-msm@vger.kernel.org, linux-media@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Wangao Wang X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1789705735; l=9201; i=wangao.wang@oss.qualcomm.com; s=20251021; h=from:subject:message-id; bh=54FLL9iRc8kj3te2Nv7oowlynIqip7DIG+tP9u5qIsA=; b=Tb/aXX0HfacRi1ExLolgr0K+3KJ+rLWF4/UpXdtHthzP690a+hSDh1QE2PxW3j1vdLqpyA6ev nTUzqX75CxVBm8gAb67Rn4c5rnHmwF9dHcRVEcId7ZLeknwH4fl9qH8 X-Developer-Key: i=wangao.wang@oss.qualcomm.com; a=ed25519; pk=bUPgYblBUAsoPyGfssbNR7ZXUSGF8v1VF4FJzSO6/aA= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTE4MDA1NiBTYWx0ZWRfX1znUpX8kwQKx 8K+SlRUS6+o/YJYsW6d5N0Nv1Bx0jNuPUjx8y4OINRUSuLF/NoD1EXamAayn43gNedsxUu3v4e6 lPjgp5Jp0iI0j9fvXr2JTJN6HdpT++IVpmtQAznqbbLymLWtFRXnWlkqnRZOqLXBBqe5MW8KAXj rkpx/jduq7Keo9jY/2iovN6Db7QcO+l77zva5N6y0vUWkmoSKLKpzhKnbFkfs5moQ1aWQ41r6QR fMxAIfcrqdCpMrtDoD78RZaE70wByXf21+3YcaOB/W6fgUEGUuYA0ElH2V+gAR1/PuD2E+E+2+3 oew9JuJ7p9F4u0HTfx4hfHdFZEo6j15MH1A7E9rRk4WhpdOLh+edZvxw4OWAVoSUI+p4nSa+mrH xkDz6lviK/gRunqU9BpYuREHbO+G8hAs+ZzpExu31TpN47NLQf+lWfwEgNJJWj4WfQnIYv9ev/U YehRsiDTDA5xSFpRyFQ== X-Authority-Analysis: v=2.4 cv=N+e8hG9B c=1 sm=1 tr=0 ts=6aacbe17 cx=c_pps a=rEQLjTOiSrHUhVqRoksmgQ==:117 a=Uz3yg00KUFJ2y2WijEJ4bw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=gEfo2CItAAAA:8 a=EUspDBNiAAAA:8 a=Z9fkTJdRl1zmM-sw7WcA:9 a=QEXdDO2ut3YA:10 a=2VI0MkxyNR6bbpdq8BZq:22 a=sptkURWiP4Gy88Gu7hUp:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwOTE4MDA1NiBTYWx0ZWRfX19aASZYAm3Zt ziPSU5gytJ2JzaiQ78gewkrbemU+ah8BkcMRFL7dkS0MEJRbJOxBeJlRmq5BbMgHBek7p2Tl1ig ExCdZyOCnn27ODt7So2gScmBmt73Ztg= X-Proofpoint-ORIG-GUID: zKYq9NVeTeEa3-4nVaQiC9d9CeY11EoU X-Proofpoint-GUID: zKYq9NVeTeEa3-4nVaQiC9d9CeY11EoU X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-18_01,2026-09-16_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 suspectscore=0 lowpriorityscore=0 priorityscore=1501 malwarescore=0 clxscore=1015 spamscore=0 adultscore=0 impostorscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2609040000 definitions=main-2609180056 Add a devicetree binding for the Iris5 video encoder and decoder block found on the Qualcomm Hawi SoC. Compared to the Iris4 generation, this block has - additional power domains for internal NoC(cx & mm). - additional clock for internal NoC(cx_iface). - additional power domain and clock for apv codec. - different reset lines. Signed-off-by: Wangao Wang --- .../devicetree/bindings/media/qcom,hawi-iris.yaml | 262 +++++++++++++++++= ++++ 1 file changed, 262 insertions(+) diff --git a/Documentation/devicetree/bindings/media/qcom,hawi-iris.yaml b/= Documentation/devicetree/bindings/media/qcom,hawi-iris.yaml new file mode 100644 index 0000000000000000000000000000000000000000..362911c6535c92bdc10b6d92b62= 0d886acf6e502 --- /dev/null +++ b/Documentation/devicetree/bindings/media/qcom,hawi-iris.yaml @@ -0,0 +1,262 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/media/qcom,hawi-iris.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Qualcomm Hawi SoC Iris video encoder and decoder + +maintainers: + - Vikash Garodia + - Dikshita Agarwal + +description: + The Iris video processing unit on Qualcomm Hawi SoC is a video encode and + decode accelerator. + +properties: + compatible: + enum: + - qcom,hawi-iris + + reg: + maxItems: 1 + + interrupts: + maxItems: 1 + + clocks: + maxItems: 13 + + clock-names: + items: + - const: iface + - const: ifacec + - const: core + - const: core_freerun + - const: core_ctl_freerun + - const: core_debug + - const: cx_iface + - const: vcodec0_core + - const: vcodec_vpp0 + - const: vcodec_vpp1 + - const: vcodec_vpp0_vpp1_gating + - const: vcodec_apv + - const: vcodec_bse + + firmware-name: + maxItems: 1 + + interconnects: + maxItems: 2 + + interconnect-names: + items: + - const: cpu-cfg + - const: video-mem + + power-domains: + maxItems: 9 + + power-domain-names: + items: + - const: venus + - const: vcodec0 + - const: mxc + - const: mmcx + - const: vpp0 + - const: vpp1 + - const: apv + - const: mm-int + - const: cx-int + + resets: + maxItems: 2 + + reset-names: + items: + - const: bus0 + - const: core + + iommus: + maxItems: 4 + + dma-coherent: true + + operating-points-v2: true + + opp-table: + type: object + +required: + - compatible + - dma-coherent + - interconnects + - interconnect-names + - power-domain-names + - resets + - reset-names + +allOf: + - $ref: qcom,venus-common.yaml# + +unevaluatedProperties: false + +examples: + - | + #include + #include + #include + #include + #include + #include + + video-codec@2000000 { + compatible =3D "qcom,hawi-iris"; + reg =3D <0x02000000 0xf0000>; + + interrupts =3D ; + + clocks =3D <&gcc GCC_VIDEO_AXI0_CLK>, + <&gcc GCC_VIDEO_AXI0C_CLK>, + <&videocc VIDEO_CC_MVS0C_CLK>, + <&videocc VIDEO_CC_MVS0C_FREERUN_CLK>, + <&videocc VIDEO_CC_MVS0C_CTL_FREERUN_CLK>, + <&videocc VIDEO_CC_MVS0C_DEBUG_CLK>, + <&videocc VIDEO_CC_CX_AXI0_CLK>, + <&videocc VIDEO_CC_MVS0_CLK>, + <&videocc VIDEO_CC_MVS0_VPP0_CLK>, + <&videocc VIDEO_CC_MVS0_VPP1_CLK>, + <&videocc VIDEO_CC_MVS0_VPP0_VPP1_GATING_CLK>, + <&videocc VIDEO_CC_MVS0A_CLK>, + <&videocc VIDEO_CC_MVS0B_CLK>; + clock-names =3D "iface", + "ifacec", + "core", + "core_freerun", + "core_ctl_freerun", + "core_debug", + "cx_iface", + "vcodec0_core", + "vcodec_vpp0", + "vcodec_vpp1", + "vcodec_vpp0_vpp1_gating", + "vcodec_apv", + "vcodec_bse"; + + dma-coherent; + + interconnects =3D <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_= ONLY + &config_noc SLAVE_IRIS_CFG QCOM_ICC_TAG_ACTIVE_O= NLY>, + <&mmss_noc MASTER_VIDEO_MVP QCOM_ICC_TAG_ALWAYS + &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>; + interconnect-names =3D "cpu-cfg", + "video-mem"; + + memory-region =3D <&video_mem>; + + power-domains =3D <&videocc VIDEO_CC_MVS0C_GDSC>, + <&videocc VIDEO_CC_MVS0_GDSC>, + <&rpmhpd RPMHPD_MXC>, + <&rpmhpd RPMHPD_MMCX>, + <&videocc VIDEO_CC_MVS0_VPP0_GDSC>, + <&videocc VIDEO_CC_MVS0_VPP1_GDSC>, + <&videocc VIDEO_CC_MVS0A_GDSC>, + <&videocc VIDEO_CC_MM_INT_GDSC>, + <&videocc VIDEO_CC_AXI0_CX_INT_GDSC>; + power-domain-names =3D "venus", + "vcodec0", + "mxc", + "mmcx", + "vpp0", + "vpp1", + "apv", + "mm-int", + "cx-int"; + + resets =3D <&gcc GCC_VIDEO_AXI0C_CLK_ARES>, + <&videocc VIDEO_CC_MVS0C_CTL_FREERUN_CLK_ARES>; + reset-names =3D "bus0", + "core"; + + operating-points-v2 =3D <&iris_opp_table>; + + #address-cells =3D <1>; + #size-cells =3D <1>; + dma-ranges =3D <0x0 0x0 0xffc00000>; + + non-pixel { + iommus =3D <&apps_smmu 0x1540 0x0000>, + <&apps_smmu 0x1620 0x0000>, + <&apps_smmu 0x1544 0x0000>; + iommu-ranges =3D <0x32000000 0xcdc00000>; + }; + + pixel { + iommus =3D <&apps_smmu 0x1543 0x0000>; + }; + + iris_opp_table: opp-table { + compatible =3D "operating-points-v2"; + + opp-150000000 { + opp-hz =3D /bits/ 64 <150000000 150000000 150000000 225000= 000>; + required-opps =3D <&rpmhpd_opp_low_svs_d2>, + <&rpmhpd_opp_low_svs_d2>; + }; + + opp-240000000 { + opp-hz =3D /bits/ 64 <240000000 240000000 240000000 360000= 000>; + required-opps =3D <&rpmhpd_opp_low_svs>, + <&rpmhpd_opp_low_svs_d1>; + }; + + opp-285000000 { + opp-hz =3D /bits/ 64 <285000000 240000000 240000000 360000= 000>; + required-opps =3D <&rpmhpd_opp_low_svs>, + <&rpmhpd_opp_low_svs_d0>; + }; + + opp-311000000 { + opp-hz =3D /bits/ 64 <311000000 338000000 311000000 430000= 000>; + required-opps =3D <&rpmhpd_opp_low_svs>, + <&rpmhpd_opp_low_svs>; + }; + + opp-420000000 { + opp-hz =3D /bits/ 64 <420000000 420000000 420000000 557000= 000>; + required-opps =3D <&rpmhpd_opp_svs_l1>, + <&rpmhpd_opp_svs>; + }; + + opp-444000000 { + opp-hz =3D /bits/ 64 <444000000 444000000 444000000 634000= 000>; + required-opps =3D <&rpmhpd_opp_svs_l1>, + <&rpmhpd_opp_svs_l1>; + }; + + opp-533000000 { + opp-hz =3D /bits/ 64 <533000000 533000000 533000000 782000= 000>; + required-opps =3D <&rpmhpd_opp_svs_l1>, + <&rpmhpd_opp_nom>; + }; + + opp-630000000 { + opp-hz =3D /bits/ 64 <630000000 630000000 630000000 928000= 000>; + required-opps =3D <&rpmhpd_opp_nom>, + <&rpmhpd_opp_turbo>; + }; + + opp-714000000 { + opp-hz =3D /bits/ 64 <714000000 710000000 667000000 106000= 0000>; + required-opps =3D <&rpmhpd_opp_turbo>, + <&rpmhpd_opp_turbo_l1>; + }; + + opp-826000000 { + opp-hz =3D /bits/ 64 <826000000 710000000 710000000 117000= 0000>; + required-opps =3D <&rpmhpd_opp_turbo>, + <&rpmhpd_opp_turbo_l3>; + }; + }; + }; --=20 2.43.0 From nobody Fri Sep 25 01:22:50 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 4B5A01E505 for ; Fri, 18 Sep 2026 04:29:18 +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=1789705760; cv=none; b=d9CnN20OW42FDj/8Jcw0Ot/T57+nf3chOhUDs+o4VG10xB6oVXPMdvae04jFbOKGSsSWIK8mXqjol8rPd5peWnaCh+WTQIZ6s3ewHRox97uOO69pA31NrOoZPChMKCISSShYFY3mlF36WXZXQePFqNGCfOkmk1FpgYWvdGmRsRI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789705760; c=relaxed/simple; bh=Xlbwl6Vx4+HGBNlzMqIIKgTeAZAgMjnSyrLdOon688A=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=gdTee+dMJ3i5BSqRcZ67oXboAIJLX5Kin3h7bUC6L/7icZqj0UAU5GpYUTxDPRaVimWzX6tlzURbf4zWlRsvCjizl5bICsHqaK+b32n5QIZIu4tJRt/VBKIsGjnNm1Q5CU9eOUHLWhcS3MgaxEM3DgN/2woPF0AGZbdZOmPfksg= 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=daH1IsZ6; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=QdCxLHnO; 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="daH1IsZ6"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="QdCxLHnO" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 68I2UZ472851847 for ; Fri, 18 Sep 2026 04:29:17 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= m11kiYCAwMQ7W55vXcbMY21fBGFpt1wSVq3rfYTVbAI=; b=daH1IsZ6isAEM7hW OdFa/wwhfvA9EuVOTCUDzlM2TERjNWF+LqfGUBDmCexFdXvWyfTrnV6gU8hC3WIQ Ktbr375AxTrtXqOaNAUHPzgVua9bOeEqtnwbx8BRonbgMLB7Kzv71/YwRQrqZ5te OFob6hRZb2sjTzGHAQ7Wp3GMo+568clVUIAtcdqbxiNfNTINeKXAfgxI9mG+wuDB iCvyU5Ape+JlROehQ2zpTRbXk8wbfB/WFL0BQ2Q1uSfdH8gADlbAEMC2g62zAnsN re7er5IKCs2JnqWYwBPYuqTn9wlpOecEymSc17MJ4iAiemaTMy63bm4gea+u4OwX CYFBTA== Received: from mail-pg1-f199.google.com (mail-pg1-f199.google.com [209.85.215.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4grq2ksqfp-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 18 Sep 2026 04:29:17 +0000 (GMT) Received: by mail-pg1-f199.google.com with SMTP id 41be03b00d2f7-cc4ac5feaa4so409324a12.1 for ; Thu, 17 Sep 2026 21:29:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1789705756; x=1790310556; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=m11kiYCAwMQ7W55vXcbMY21fBGFpt1wSVq3rfYTVbAI=; b=QdCxLHnO1ROaTCrXMTbLrg9b0rVXCsCfIUdxuFeoVMnjE5HxfoRJfU6ahnuHMRiuIH HRGs6Mttud31FLRaXYhZuE1uwhlksg9h9cu2z982Tb52jVBQbP/TXRX0TeJGi0UXxnI8 QE2n2QdTJYv33v5YjzC7XmXjsJkrUzlR7FwsybeqfDWk3zGQsC4TaVjGOE2hf/fCBRmP UY3NM2IB/UyY7hodT92U85sVJUmxH1EV8a06EVsrmFq8Vo2rnKUIsavA7RvwQ9haug92 /Ja4Wa9Q0djUFWnFDcpQd1eTvGZTOSpAAK+G85DzBidQbBwURf1s4ycoEGZF9EhS2oFV UfIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789705756; x=1790310556; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=m11kiYCAwMQ7W55vXcbMY21fBGFpt1wSVq3rfYTVbAI=; b=cxQeu2nyGInribZOrcG1lTfHVT+p0rvpchqYYJw7pSUzf+2F5WBs9o1rqZzf3oonaJ 7lWSO2yxFR70aBsI0F7ctep5V6cw8ZVGsxKexoJJbXXihFbiDp+HOK8PkMhcIl81VQWk o4aB3Z2tYuuRoQY9/MOn8WqO5DBLvFCKoD18X6JF4MX2EsFvzY3i0uQF0D6TpaLzEq7A 6wtcbvBilx97R9wPRLtyPGKKUyPN6989fpbOvtKEo7oxp6gQ5IjXvUfU21WRMrA3rzmj 9z9TU6wGM2nPgdR7utWfKiMBsyuRNFXqKu9B+qkC/amVIiX9V6XjHRVCl7bbBj1GvbCv xdxA== X-Forwarded-Encrypted: i=1; AKwUvBzJLA/H56K7TIICjmcfiAfFzl0ko3VpkC03I9CZavy+gDgKDMR4IYcI424LPojkU/E85WyovIrqJlpkaI4=@vger.kernel.org X-Gm-Message-State: AFuF++kVh7x96/Oy18bqjCWh9LEOcf72AqF9LHVuhr8xK/FGMQFmKXLG JrkJGywhQI+tPSDj9YiN8JhFWG4eFM6la4tFTPcTC7fl4FjAwugluZwEQoXBGRnZde1fgN9modB JBPLvV45Q8nGwCmSOkiKD/8gSpPvFX9Z/0kGKTg6QDE1zlBxkISMw7EtY0nyJ8Pd66ng= X-Gm-Gg: AYBFou1pWcNXjdNxBRJnpBFbCa/X9YsbYHb6GJvqA/ykFCj8GQ8Szp62lx/ZFpJiRxT mGPp+vFQCFRGJDdxbNr1OBDQcDgEiVbpz3zq+4PVv+1UIZAg20eqnL5vcBdfyzrZvcprVxb0SaO SVIUDIoB3EYhku5DwFiUvHv6iyeoaf8cyVaZjyxPv4aeQhbmsNeorvgqOBt21yYscLftd8/krbu fyRQWPwaQucb55xXbM+qLhyqMykcXdzxZbHegtwpbzcLdsxPUoz/Nr0/vwloWOvlZTho+PIouzW +TK0L4WZJq7k5JD7swmWdeViDG7UjJ3SVR9sA3vW55kQ0kQvnwITaoTlyaX+lPKCwPI3hU6gGRJ aSH3EaUCcRmTOC+9mcn4gtlFGQKDQCcM= X-Received: by 2002:a05:6a20:2d08:b0:3dd:85a8:4c61 with SMTP id adf61e73a8af0-3dd8c5c9c87mr2361474637.40.1789705756209; Thu, 17 Sep 2026 21:29:16 -0700 (PDT) X-Received: by 2002:a05:6a20:2d08:b0:3dd:85a8:4c61 with SMTP id adf61e73a8af0-3dd8c5c9c87mr2361428637.40.1789705755735; Thu, 17 Sep 2026 21:29:15 -0700 (PDT) Received: from WANGAOW-LAB01.ap.qualcomm.com ([114.94.8.21]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cc5c4dba322sm214595a12.10.2026.09.17.21.29.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Sep 2026 21:29:15 -0700 (PDT) From: Wangao Wang Date: Fri, 18 Sep 2026 12:28:42 +0800 Subject: [PATCH 3/6] media: iris: move shared APV PM helpers to iris_vpu_common 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: <20260918-add_iris_for_hawi-v1-3-ac60fd15c98b@oss.qualcomm.com> References: <20260918-add_iris_for_hawi-v1-0-ac60fd15c98b@oss.qualcomm.com> In-Reply-To: <20260918-add_iris_for_hawi-v1-0-ac60fd15c98b@oss.qualcomm.com> To: Vikash Garodia , Dikshita Agarwal , Bryan O'Donoghue , Mauro Carvalho Chehab , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Stanimir Varbanov , Abhinav Kumar , Philipp Zabel Cc: linux-arm-msm@vger.kernel.org, linux-media@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Wangao Wang X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1789705735; l=12865; i=wangao.wang@oss.qualcomm.com; s=20251021; h=from:subject:message-id; bh=Xlbwl6Vx4+HGBNlzMqIIKgTeAZAgMjnSyrLdOon688A=; b=xS/tl3pnaZ2o/d9+wyb7in3zm6Tx2ldq41g/h8xWGa6tc1BlX7exdtKF90UewjF2pboKoVG1a j/wuhcWjvRfDcZn/0vaRn74eQJs0N5U2MBPvQvV/icdh4tflUqsgFiJ X-Developer-Key: i=wangao.wang@oss.qualcomm.com; a=ed25519; pk=bUPgYblBUAsoPyGfssbNR7ZXUSGF8v1VF4FJzSO6/aA= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTE4MDA1NiBTYWx0ZWRfX5923enHJxrTB kNihAr+dO11DaXvdMQ2Gb2ARNJvacmfmKKMlaG8ma2jPd7e5zYr4dcv4kYSBR8FDdzrXEWhKxvK 6vmr8f+nVmjaFejV8NaqEEjY1b/QrIrlaLgkdzn3FNCdDuGDukLBMsAOrfAVFCnkh8mgIAo9m7s 0WYVRrzO3l6fycuvZ2sVZ8qZOg+eWnWB2YY5KsxYkh19z0CQme5DN4CAXsq4VCcVvvWw7EgTs6q VMqeg8mKLfbK+bqA3Hdg7uBfo7cYOZm8VIBOqxOQUoBakasP5Nvp0mBLarg2UmgqrMeV6VmZMNk Mf0gpSUTriRhGbuihEra0kTX8nMFws5ejwknJud2uC5RjYZjnezD4DRAZ5gZeAeYJA7bKr9shif 4ZredrGFozB5N+oBDogBH6x5f573CXlG4E44wntUZB2pfxAV71xc7b3eDv4zm1ol/FQ0cjxpU7L qY9THH3gDYAvYU2WFXQ== X-Proofpoint-GUID: mVtkCdwjlPUREWovFqopB_aMM-LYV-xL X-Authority-Analysis: v=2.4 cv=bcD+w+PB c=1 sm=1 tr=0 ts=6aacbe1d cx=c_pps a=Oh5Dbbf/trHjhBongsHeRQ==:117 a=Uz3yg00KUFJ2y2WijEJ4bw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=EUspDBNiAAAA:8 a=jRDX25Ug_5KbIaVBG-EA:9 a=QEXdDO2ut3YA:10 a=_Vgx9l1VpLgwpw_dHYaR:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwOTE4MDA1NiBTYWx0ZWRfX3a7bOmIC/2AU nYnVQ4upZ/EZez1OIoNxbUTBeCtmbpYPjSfgyE1+uMqaXQ6bqjjEk21TU0xPwvugG/C+RRgH2x+ mDTCXpJJh1asUZ2MdUdc9BtZ07KWKXI= X-Proofpoint-ORIG-GUID: mVtkCdwjlPUREWovFqopB_aMM-LYV-xL X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-18_01,2026-09-16_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 clxscore=1015 adultscore=0 suspectscore=0 priorityscore=1501 bulkscore=0 phishscore=0 impostorscore=0 lowpriorityscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2609040000 definitions=main-2609180056 The APV power on/off sequences and AHB bridge sync reset helpers are currently local to iris_vpu4x.c. VPU5x uses the same sequences, so keeping them in the VPU4x implementation would either prevent reuse or require duplicating the code. Move the helpers to iris_vpu_common.c and rename them with a vpu4x_vpu5x prefix to reflect their shared usage. Move the associated register constants, including APV_CLK_HALT, the efuse control bits, CPU_CS_APV_BRIDGE_SYNC_RESET, WRAPPER_EFUSE_MONITOR, and AON_WRAPPER_MVP_NOC_RESET_SYNCRST, to iris_vpu_register_defines.h so both implementations can use them. Signed-off-by: Wangao Wang --- drivers/media/platform/qcom/iris/iris_vpu4x.c | 105 +----------------= ---- drivers/media/platform/qcom/iris/iris_vpu_common.c | 91 ++++++++++++++++++ drivers/media/platform/qcom/iris/iris_vpu_common.h | 4 + .../platform/qcom/iris/iris_vpu_register_defines.h | 10 ++ 4 files changed, 109 insertions(+), 101 deletions(-) diff --git a/drivers/media/platform/qcom/iris/iris_vpu4x.c b/drivers/media/= platform/qcom/iris/iris_vpu4x.c index 02e100a4045fced33d7a3545b632cc5f0955233f..93acbfa0f471fdec1cb75db732f= 37ef6c6ef5cbf 100644 --- a/drivers/media/platform/qcom/iris/iris_vpu4x.c +++ b/drivers/media/platform/qcom/iris/iris_vpu4x.c @@ -10,18 +10,11 @@ #include "iris_vpu_common.h" #include "iris_vpu_register_defines.h" =20 -#define AON_WRAPPER_MVP_NOC_RESET_SYNCRST (AON_MVP_NOC_RESET + 0x08) -#define CPU_CS_APV_BRIDGE_SYNC_RESET (CPU_BASE_OFFS + 0x174) #define MVP_NOC_RESET_REQ_MASK 0x70103 #define VPU_IDLE_BITS 0x7103 -#define WRAPPER_EFUSE_MONITOR (WRAPPER_BASE_OFFS + 0x08) =20 -#define APV_CLK_HALT BIT(1) #define CORE_CLK_HALT BIT(0) #define CORE_PWR_ON BIT(1) -#define DISABLE_VIDEO_APV_BIT BIT(27) -#define DISABLE_VIDEO_VPP1_BIT BIT(28) -#define DISABLE_VIDEO_VPP0_BIT BIT(29) =20 static int iris_vpu4x_genpd_set_hwmode(struct iris_core *core, bool hw_mod= e, u32 efuse_value) { @@ -68,96 +61,6 @@ static int iris_vpu4x_genpd_set_hwmode(struct iris_core = *core, bool hw_mode, u32 return ret; } =20 -static int iris_vpu4x_power_on_apv(struct iris_core *core) -{ - int ret; - - ret =3D iris_enable_power_domains(core, - core->pmdomain_tbl->pd_devs[IRIS_APV_HW_POWER_DOMAIN]); - if (ret) - return ret; - - ret =3D iris_prepare_enable_clock(core, IRIS_APV_HW_CLK); - if (ret) - goto disable_apv_hw_power_domain; - - return 0; - -disable_apv_hw_power_domain: - iris_disable_power_domains(core, core->pmdomain_tbl->pd_devs[IRIS_APV_HW_= POWER_DOMAIN]); - - return ret; -} - -static void iris_vpu4x_power_off_apv(struct iris_core *core) -{ - bool handshake_done, handshake_busy; - u32 value, count =3D 0; - int ret; - - value =3D readl(core->reg_base + WRAPPER_CORE_CLOCK_CONFIG); - - if (value & APV_CLK_HALT) - writel(0x0, core->reg_base + WRAPPER_CORE_CLOCK_CONFIG); - - do { - writel(REQ_POWER_DOWN_PREP, core->reg_base + AON_WRAPPER_MVP_NOC_LPI_CON= TROL); - usleep_range(10, 20); - value =3D readl(core->reg_base + AON_WRAPPER_MVP_NOC_LPI_STATUS); - - handshake_done =3D value & NOC_LPI_STATUS_DONE; - handshake_busy =3D value & (NOC_LPI_STATUS_DENY | NOC_LPI_STATUS_ACTIVE); - - if (handshake_done || !handshake_busy) - break; - - writel(0x0, core->reg_base + AON_WRAPPER_MVP_NOC_LPI_CONTROL); - usleep_range(10, 20); - - } while (++count < 1000); - - if (!handshake_done && handshake_busy) - dev_err(core->dev, "LPI handshake timeout\n"); - - writel(0x080200, core->reg_base + AON_WRAPPER_MVP_NOC_RESET_REQ); - ret =3D readl_poll_timeout(core->reg_base + AON_WRAPPER_MVP_NOC_RESET_ACK, - value, value & 0x080200, 200, 2000); - if (ret) - goto disable_clocks_and_power; - - writel(0x0, core->reg_base + AON_WRAPPER_MVP_NOC_RESET_SYNCRST); - writel(0x0, core->reg_base + AON_WRAPPER_MVP_NOC_RESET_REQ); - ret =3D readl_poll_timeout(core->reg_base + AON_WRAPPER_MVP_NOC_RESET_ACK, - value, value =3D=3D 0x0, 200, 2000); - if (ret) - goto disable_clocks_and_power; - - writel(CORE_BRIDGE_SW_RESET | CORE_BRIDGE_HW_RESET_DISABLE, core->reg_bas= e + - CPU_CS_APV_BRIDGE_SYNC_RESET); - writel(CORE_BRIDGE_HW_RESET_DISABLE, core->reg_base + CPU_CS_APV_BRIDGE_S= YNC_RESET); - writel(0x0, core->reg_base + CPU_CS_APV_BRIDGE_SYNC_RESET); - -disable_clocks_and_power: - iris_disable_unprepare_clock(core, IRIS_APV_HW_CLK); - iris_disable_power_domains(core, core->pmdomain_tbl->pd_devs[IRIS_APV_HW_= POWER_DOMAIN]); -} - -static void iris_vpu4x_ahb_sync_reset_apv(struct iris_core *core) -{ - writel(CORE_BRIDGE_SW_RESET | CORE_BRIDGE_HW_RESET_DISABLE, core->reg_bas= e + - CPU_CS_APV_BRIDGE_SYNC_RESET); - writel(CORE_BRIDGE_HW_RESET_DISABLE, core->reg_base + CPU_CS_APV_BRIDGE_S= YNC_RESET); - writel(0x0, core->reg_base + CPU_CS_APV_BRIDGE_SYNC_RESET); -} - -static void iris_vpu4x_ahb_sync_reset_hardware(struct iris_core *core) -{ - writel(CORE_BRIDGE_SW_RESET | CORE_BRIDGE_HW_RESET_DISABLE, core->reg_bas= e + - CPU_CS_AHB_BRIDGE_SYNC_RESET); - writel(CORE_BRIDGE_HW_RESET_DISABLE, core->reg_base + CPU_CS_AHB_BRIDGE_S= YNC_RESET); - writel(0x0, core->reg_base + CPU_CS_AHB_BRIDGE_SYNC_RESET); -} - static int iris_vpu4x_enable_hardware_clocks(struct iris_core *core, u32 e= fuse_value) { int ret; @@ -249,7 +152,7 @@ static int iris_vpu4x_power_on_hardware(struct iris_cor= e *core) goto disable_vpp1_power_domain; =20 if (!(efuse_value & DISABLE_VIDEO_APV_BIT)) { - ret =3D iris_vpu4x_power_on_apv(core); + ret =3D iris_vpu4x_vpu5x_power_on_apv(core); if (ret) goto disable_hw_clocks; } @@ -282,7 +185,7 @@ static void iris_vpu4x_power_off_hardware(struct iris_c= ore *core) iris_vpu4x_genpd_set_hwmode(core, false, efuse_value); =20 if (!(efuse_value & DISABLE_VIDEO_APV_BIT)) - iris_vpu4x_power_off_apv(core); + iris_vpu4x_vpu5x_power_off_apv(core); =20 value =3D readl(core->reg_base + WRAPPER_CORE_POWER_STATUS); =20 @@ -353,9 +256,9 @@ static int iris_vpu4x_set_hwmode(struct iris_core *core) u32 efuse_value =3D readl(core->reg_base + WRAPPER_EFUSE_MONITOR); =20 if (!(efuse_value & DISABLE_VIDEO_APV_BIT)) - iris_vpu4x_ahb_sync_reset_apv(core); + iris_vpu4x_vpu5x_ahb_sync_reset_apv(core); =20 - iris_vpu4x_ahb_sync_reset_hardware(core); + iris_vpu4x_vpu5x_ahb_sync_reset_hardware(core); =20 return iris_vpu4x_genpd_set_hwmode(core, true, efuse_value); } diff --git a/drivers/media/platform/qcom/iris/iris_vpu_common.c b/drivers/m= edia/platform/qcom/iris/iris_vpu_common.c index e4847c1077097160cfc8324e807b4aabd9747812..a0129ed39cf2dfd0d56ecdc63d9= 09f26f8acedf8 100644 --- a/drivers/media/platform/qcom/iris/iris_vpu_common.c +++ b/drivers/media/platform/qcom/iris/iris_vpu_common.c @@ -21,6 +21,7 @@ #define CTRL_INIT_IDLE_MSG_BMSK 0x40000000 #define CTRL_ERROR_STATUS__M 0xfe #define CTRL_STATUS_PC_READY 0x100 +#define NOC_RESET_APV 0x080200 =20 #define QTBL_INFO (CPU_CS_BASE_OFFS + 0x50) #define QTBL_ENABLE BIT(0) @@ -501,6 +502,96 @@ int iris_vpu_power_on(struct iris_core *core) return ret; } =20 +int iris_vpu4x_vpu5x_power_on_apv(struct iris_core *core) +{ + int ret; + + ret =3D iris_enable_power_domains(core, + core->pmdomain_tbl->pd_devs[IRIS_APV_HW_POWER_DOMAIN]); + if (ret) + return ret; + + ret =3D iris_prepare_enable_clock(core, IRIS_APV_HW_CLK); + if (ret) + goto disable_apv_hw_power_domain; + + return 0; + +disable_apv_hw_power_domain: + iris_disable_power_domains(core, core->pmdomain_tbl->pd_devs[IRIS_APV_HW_= POWER_DOMAIN]); + + return ret; +} + +void iris_vpu4x_vpu5x_power_off_apv(struct iris_core *core) +{ + bool handshake_done, handshake_busy; + u32 value, count =3D 0; + int ret; + + value =3D readl(core->reg_base + WRAPPER_CORE_CLOCK_CONFIG); + + if (value & APV_CLK_HALT) + writel(0x0, core->reg_base + WRAPPER_CORE_CLOCK_CONFIG); + + do { + writel(REQ_POWER_DOWN_PREP, core->reg_base + AON_WRAPPER_MVP_NOC_LPI_CON= TROL); + usleep_range(10, 20); + value =3D readl(core->reg_base + AON_WRAPPER_MVP_NOC_LPI_STATUS); + + handshake_done =3D value & NOC_LPI_STATUS_DONE; + handshake_busy =3D value & (NOC_LPI_STATUS_DENY | NOC_LPI_STATUS_ACTIVE); + + if (handshake_done || !handshake_busy) + break; + + writel(0x0, core->reg_base + AON_WRAPPER_MVP_NOC_LPI_CONTROL); + usleep_range(10, 20); + + } while (++count < 1000); + + if (!handshake_done && handshake_busy) + dev_err(core->dev, "LPI handshake timeout\n"); + + writel(NOC_RESET_APV, core->reg_base + AON_WRAPPER_MVP_NOC_RESET_REQ); + ret =3D readl_poll_timeout(core->reg_base + AON_WRAPPER_MVP_NOC_RESET_ACK, + value, value & NOC_RESET_APV, 200, 2000); + if (ret) + goto disable_clocks_and_power; + + writel(0x0, core->reg_base + AON_WRAPPER_MVP_NOC_RESET_SYNCRST); + writel(0x0, core->reg_base + AON_WRAPPER_MVP_NOC_RESET_REQ); + ret =3D readl_poll_timeout(core->reg_base + AON_WRAPPER_MVP_NOC_RESET_ACK, + value, value =3D=3D 0x0, 200, 2000); + if (ret) + goto disable_clocks_and_power; + + writel(CORE_BRIDGE_SW_RESET | CORE_BRIDGE_HW_RESET_DISABLE, core->reg_bas= e + + CPU_CS_APV_BRIDGE_SYNC_RESET); + writel(CORE_BRIDGE_HW_RESET_DISABLE, core->reg_base + CPU_CS_APV_BRIDGE_S= YNC_RESET); + writel(0x0, core->reg_base + CPU_CS_APV_BRIDGE_SYNC_RESET); + +disable_clocks_and_power: + iris_disable_unprepare_clock(core, IRIS_APV_HW_CLK); + iris_disable_power_domains(core, core->pmdomain_tbl->pd_devs[IRIS_APV_HW_= POWER_DOMAIN]); +} + +void iris_vpu4x_vpu5x_ahb_sync_reset_apv(struct iris_core *core) +{ + writel(CORE_BRIDGE_SW_RESET | CORE_BRIDGE_HW_RESET_DISABLE, core->reg_bas= e + + CPU_CS_APV_BRIDGE_SYNC_RESET); + writel(CORE_BRIDGE_HW_RESET_DISABLE, core->reg_base + CPU_CS_APV_BRIDGE_S= YNC_RESET); + writel(0x0, core->reg_base + CPU_CS_APV_BRIDGE_SYNC_RESET); +} + +void iris_vpu4x_vpu5x_ahb_sync_reset_hardware(struct iris_core *core) +{ + writel(CORE_BRIDGE_SW_RESET | CORE_BRIDGE_HW_RESET_DISABLE, core->reg_bas= e + + CPU_CS_AHB_BRIDGE_SYNC_RESET); + writel(CORE_BRIDGE_HW_RESET_DISABLE, core->reg_base + CPU_CS_AHB_BRIDGE_S= YNC_RESET); + writel(0x0, core->reg_base + CPU_CS_AHB_BRIDGE_SYNC_RESET); +} + void iris_vpu_set_preset_registers(struct iris_core *core) { writel(0x0, core->reg_base + 0xb0088); diff --git a/drivers/media/platform/qcom/iris/iris_vpu_common.h b/drivers/m= edia/platform/qcom/iris/iris_vpu_common.h index 09799a375c1426d808ab5ea4fdfcac3a203e15b3..cc22c7459c4b77fdcb95b546fb8= a55eea522bfb8 100644 --- a/drivers/media/platform/qcom/iris/iris_vpu_common.h +++ b/drivers/media/platform/qcom/iris/iris_vpu_common.h @@ -41,6 +41,10 @@ int iris_vpu35_vpu4x_power_off_controller(struct iris_co= re *core); int iris_vpu35_vpu4x_power_on_controller(struct iris_core *core); void iris_vpu35_vpu4x_program_bootup_registers(struct iris_core *core); u64 iris_vpu3x_vpu4x_calculate_frequency(struct iris_inst *inst, size_t da= ta_size); +int iris_vpu4x_vpu5x_power_on_apv(struct iris_core *core); +void iris_vpu4x_vpu5x_power_off_apv(struct iris_core *core); +void iris_vpu4x_vpu5x_ahb_sync_reset_apv(struct iris_core *core); +void iris_vpu4x_vpu5x_ahb_sync_reset_hardware(struct iris_core *core); =20 void iris_vpu_set_preset_registers(struct iris_core *core); =20 diff --git a/drivers/media/platform/qcom/iris/iris_vpu_register_defines.h b= /drivers/media/platform/qcom/iris/iris_vpu_register_defines.h index 72168b9ffa7385d53d7190265d1c0922ee04a656..33f3d01cf79d763a62a2be9eac9= 10a462bcd479b 100644 --- a/drivers/media/platform/qcom/iris/iris_vpu_register_defines.h +++ b/drivers/media/platform/qcom/iris/iris_vpu_register_defines.h @@ -19,6 +19,7 @@ #define VIDEO_NOC_RESET_REQ (BIT(0) | BIT(1)) =20 #define AON_WRAPPER_MVP_NOC_RESET_ACK (AON_MVP_NOC_RESET + 0x004) +#define AON_WRAPPER_MVP_NOC_RESET_SYNCRST (AON_MVP_NOC_RESET + 0x08) =20 #define CPU_CS_BASE_OFFS (CPU_BASE_OFFS) #define CPU_IC_BASE_OFFS (CPU_BASE_OFFS) @@ -40,6 +41,14 @@ #define MSK_SIGNAL_FROM_TENSILICA BIT(0) #define MSK_CORE_POWER_ON BIT(1) =20 +#define CPU_CS_APV_BRIDGE_SYNC_RESET (CPU_CS_BASE_OFFS + 0x174) + +/* Efuse bits controlling optional hardware blocks */ +#define WRAPPER_EFUSE_MONITOR (WRAPPER_BASE_OFFS + 0x08) +#define DISABLE_VIDEO_APV_BIT BIT(27) +#define DISABLE_VIDEO_VPP1_BIT BIT(28) +#define DISABLE_VIDEO_VPP0_BIT BIT(29) + #define WRAPPER_INTR_STATUS (WRAPPER_BASE_OFFS + 0x0C) #define WRAPPER_INTR_STATUS_A2HWD_BMSK BIT(3) #define WRAPPER_INTR_STATUS_A2H_BMSK BIT(2) @@ -62,6 +71,7 @@ #define WRAPPER_CORE_POWER_STATUS (WRAPPER_BASE_OFFS + 0x80) #define WRAPPER_CORE_CLOCK_CONFIG (WRAPPER_BASE_OFFS + 0x88) #define CORE_CLK_RUN 0x0 +#define APV_CLK_HALT BIT(1) =20 #define WRAPPER_TZ_CPU_STATUS (WRAPPER_TZ_BASE_OFFS + 0x10) =20 --=20 2.43.0 From nobody Fri Sep 25 01:22:50 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 283373D5663 for ; Fri, 18 Sep 2026 04:29:23 +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=1789705765; cv=none; b=swsKydV5FfjrxyLx6XAx6i81kt5/6hWlKHn5GagXQgCASPEdThItS4Gv3rdAn30m+bKz4Jr8Ti6QRpa0qC38q1MhzD6jlv/hiOZ0JU0xUEJrTd4WiRYSyow4Lu3gf0bUvUSzofF77sY+kBo/EkJf8jQhdAzq9AjcEH+e7oaoM7k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789705765; c=relaxed/simple; bh=K+YPxUBqxffdlzoZVOwR84o7xjT9qJ/uotZNQAAU9gI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=X2E42ZjyLboc/whA5AV66v+76zIGCTtaEZK9U2nCWb8rSeH6FYJRpwWP4R9hRhtTomS+R50v306AlN2n3htDI1sTFZUNdHNnfK7dOg1CT8wYDP4rr31mkfIH9sZY6KbAbtJQk0olhD+98ooSpzKql5dyMjenvf0AAtvLoOO6Hk0= 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=jzVQ4ZZj; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Kbbbh3UM; 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="jzVQ4ZZj"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Kbbbh3UM" Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 68I43soC3833437 for ; Fri, 18 Sep 2026 04:29:22 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= wRBOaiA6EUI8kVzk5SZxKGQ9npxRNCfy/U7puyUcR3c=; b=jzVQ4ZZjvE5XbxKR 0n0moxiG1Aq+p7DfSc2odPrJSrmSo3/E7fptzhU5QByRA/+gfWS1W2x2iqWoqpoB b8IG2zSDJ4zQqXAMhf9WZ1IHk8/eV5XKc3m39TuGHsZsyPNV3rPO//HW+HLFknX0 U918c5QiQq9LGVzzGabqq+m7HmRayfkI6CKHMaW1iHjRdOdSascF5p3NjVPABIri VRBnD8ZPl9duhMyW+s45j2dMp2P9elA5fNBPlNNlW+xVXKSncleRcUt2GIJR1iQK Ahp9nlac939C45NcTfCQ0cg1X6BE/dIBEPabF+m11zWV5v0DfZGh/BCSCXvqP5Xc fSR9Ig== Received: from mail-pg1-f199.google.com (mail-pg1-f199.google.com [209.85.215.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4grwxrr2j0-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 18 Sep 2026 04:29:22 +0000 (GMT) Received: by mail-pg1-f199.google.com with SMTP id 41be03b00d2f7-cc2229450b4so283829a12.1 for ; Thu, 17 Sep 2026 21:29:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1789705762; x=1790310562; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=wRBOaiA6EUI8kVzk5SZxKGQ9npxRNCfy/U7puyUcR3c=; b=Kbbbh3UMhvB/758aEHAuqr5xx8VBOhdTnYLPq5ZIyCdDRzgIWKp49yV4S/GUKwMr2z Ey1cc75HSsiixeIkhOmdf8q+cMADIMz+TFVZQJPSvl1YK5/6J2trTzJugGMXvu1F/0ZP Uly76PHvJ0eZ8Q9u0URzG+nyRnUFLZ5nKBxnHJDnI3+ViWZbUgI70/+S/ARwUG3I5kWR GLQKd+z3UgKkkiByvcwx6mimQ0qjV+zu4RL/lGkdG+UxYuTuFT0C8ptNjsPgkFL8B2h3 F1lNhOPXwazWWprd0fY/gsWTqFshdN/o/2OP1xh9XEiD1OgtufAOVx+GGnazX/4k0f5/ 4Vgg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789705762; x=1790310562; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=wRBOaiA6EUI8kVzk5SZxKGQ9npxRNCfy/U7puyUcR3c=; b=MOgJ7V1X5YHi/IWV68PrXMDiFFu2NJdfmcRGb4X6W7smZQHKnLju1Ckma/cgfUexxE qas1WLX4jTGBrqEd8BLQJ5ODpUmu7pVFSXKpn2tKdJtLnnD/MhBLx0SGI4yD7JnXE5CX mmrlqB3hffGR+4YDyI7B+a/VsSXLYEM8J343cFpEikKlDTtwJOP1hqEb+kVkqCn69J0F Un4MGe8RLoPgUigZbh8Suk0zAZ1XsMAZk8kJFC3KHf+SXcQv9KyuS5hy0ubk+LGGh6FV DO1a2eycFYr/s4KP4Bx6edBtjyB7Clb9hjRUziz6DzBfXYI6De4IU5Is+V91Vf2kY7ho L6mg== X-Forwarded-Encrypted: i=1; AKwUvByEVVIks0jR/QTk5YzBzUthRxW/jyVsC7aC7d9qbznBFEDoOMIVDl5EDYFLR1Rh8RsXqqhXj+NGrRO0Nug=@vger.kernel.org X-Gm-Message-State: AFuF++lk+S9lUUEPymIwkOgcmCwOZdmF0CsiqmsyJjYtLqIqF9gzCQMv OGRmo6YpzLHAZDfl4iPTV9L0g2RE5epfBMQVTKbTptGRNbkXA/UXjlLHxBAJ28WjvH6q9d9sDD0 n0JJa0oL8Qwia/XBr/BjfmU7AtTn/ofkRMNi/rVhKh24tZ5XkByXdV+nypAqetFhfwGU= X-Gm-Gg: AYBFou0xLoBVoQqyo5LVLdfhbVAQXy1M83qRSXRKUNjYMPytZsDKf4jDD2yHXQcrdQy U5+papuv080lgqUoYw+Frum9jvoOxHc7x+4HXi4pd6j4Fh1KMMgd6qy2f90P9vm1qg578zlns3K VxHm7egoe7bi65HMjQkqZ3DIvmfky2wUo9hmd6VksfB0DlKv0xOQ+8rle04aBGo2vAdRtLs3IwC 0nDnNnJjBr7Q+Viw/M+WmLXdIokth6gcE3kmbhJ21hNZTWchxCuOODDPcwXD/IDHReLdNbkrlz6 EWBbCTD/nQ2+7VILVmWUpeapgk9/MWUsEazRsihaRJaMwJQ05c5Kml53qm9oLixP/ZVlJ/u1u+3 sztg/5qSCueBcUPNkIz5Wsx3SmJo7gng= X-Received: by 2002:a05:6a21:e081:b0:3be:b0b3:3962 with SMTP id adf61e73a8af0-3dd8c37cc76mr2875310637.9.1789705761368; Thu, 17 Sep 2026 21:29:21 -0700 (PDT) X-Received: by 2002:a05:6a21:e081:b0:3be:b0b3:3962 with SMTP id adf61e73a8af0-3dd8c37cc76mr2875246637.9.1789705760832; Thu, 17 Sep 2026 21:29:20 -0700 (PDT) Received: from WANGAOW-LAB01.ap.qualcomm.com ([114.94.8.21]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cc5c4dba322sm214595a12.10.2026.09.17.21.29.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Sep 2026 21:29:20 -0700 (PDT) From: Wangao Wang Date: Fri, 18 Sep 2026 12:28:43 +0800 Subject: [PATCH 4/6] media: iris: add VPU5x hardware ops 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: <20260918-add_iris_for_hawi-v1-4-ac60fd15c98b@oss.qualcomm.com> References: <20260918-add_iris_for_hawi-v1-0-ac60fd15c98b@oss.qualcomm.com> In-Reply-To: <20260918-add_iris_for_hawi-v1-0-ac60fd15c98b@oss.qualcomm.com> To: Vikash Garodia , Dikshita Agarwal , Bryan O'Donoghue , Mauro Carvalho Chehab , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Stanimir Varbanov , Abhinav Kumar , Philipp Zabel Cc: linux-arm-msm@vger.kernel.org, linux-media@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Wangao Wang X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1789705735; l=24148; i=wangao.wang@oss.qualcomm.com; s=20251021; h=from:subject:message-id; bh=K+YPxUBqxffdlzoZVOwR84o7xjT9qJ/uotZNQAAU9gI=; b=FIPgm8tL7QLLIrN4TrlAbrmLsP0xHzhdozennPkfVpjzqGkUa2bHuW7z5xZ+SWL5ETxuJbmZd VdL2lGRAsYrDC5okatShtfkJgXdalqgEROmEgQw2C6b5+mei8bEpYUP X-Developer-Key: i=wangao.wang@oss.qualcomm.com; a=ed25519; pk=bUPgYblBUAsoPyGfssbNR7ZXUSGF8v1VF4FJzSO6/aA= X-Authority-Analysis: v=2.4 cv=EMWTQFZC c=1 sm=1 tr=0 ts=6aacbe22 cx=c_pps a=Oh5Dbbf/trHjhBongsHeRQ==:117 a=Uz3yg00KUFJ2y2WijEJ4bw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22 a=EUspDBNiAAAA:8 a=4L-smajPeleGBe0zsKoA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=_Vgx9l1VpLgwpw_dHYaR:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTE4MDA1NiBTYWx0ZWRfX4PH02hC1yCVU ZAO+aB1OVjSK5pN64ASsi9cBQcYcI2jqpafco7DYOBpyiZKgPBxcpJV5m50/UkMvZqtuqYv7q+X ZPzD5hkzklTEDWSV++ZNtBG7+6zI9ieAxBWpQueNeTAMFnU514ZEd4ok4OO4j+uUEAarvsL0ZV8 t3oRYcYxUdYzjrz1yh4+Si1aw74WQ4B4O6jUbj53K/ISGF0kpQOPfq1LF5CGVmi0E9gU9bXrR1L 4/aTC81wZg2l+AIxKZ2u+MZ2SaCHXo0DBqxpp6qCAq84wEWxfW5mOuPdTvvrfktP4x3e5XSoZOA 2C7+TNKSMe2ybbdJj8JO0IV8S+PyhT1SaCuk5Ew0foNYWydYMZz32SBQQwKzxpYzjZqUTPuI/q0 laqBsX6SGs9jFVAz8TkcC+K4HnPbS99J/9tb04z81b8WPg2XWk3TlfmTz0Tc8pC9N3BDfchtfqE 4BLZFXPc6ykDdMDs7vg== X-Proofpoint-GUID: Z28we3eo4fC6hm5qwNnqwG2i59P-wZYD X-Proofpoint-ORIG-GUID: Z28we3eo4fC6hm5qwNnqwG2i59P-wZYD X-Proofpoint-Spam-Info: AW1haW4tMjYwOTE4MDA1NiBTYWx0ZWRfX2bDCJovAVe3I rWvXFy4V3ySLuych9t0L8X/Mf5qeK+8ebhs2CWEQoYpd7UJDrf2LDn02tnbfynlrlTb1plZP3Mt iqYX2/bwTRnt3ygTEh+M8YHQmsFqUJA= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-18_01,2026-09-16_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 priorityscore=1501 lowpriorityscore=0 bulkscore=0 adultscore=0 spamscore=0 malwarescore=0 impostorscore=0 phishscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2609040000 definitions=main-2609180056 The Hawi SoC uses the VPU5x generation of the Iris video hardware, which requires handling for two new power domains =E2=80=94 mm-int for the intern= al memory interconnect and cx-int for the CX domain AXI interface =E2=80=94 as= well as additional generation-specific clocks. Without a VPU5x vpu_ops implementation the Iris driver cannot power on or off the hardware on Hawi. Move the shared idle and core power status definitions to the common register header so they can be used by both VPU4x and VPU5x code. Signed-off-by: Wangao Wang --- drivers/media/platform/qcom/iris/Makefile | 1 + .../platform/qcom/iris/iris_platform_common.h | 6 + drivers/media/platform/qcom/iris/iris_vpu4x.c | 4 - drivers/media/platform/qcom/iris/iris_vpu5x.c | 588 +++++++++++++++++= ++++ drivers/media/platform/qcom/iris/iris_vpu_common.h | 1 + .../platform/qcom/iris/iris_vpu_register_defines.h | 4 + 6 files changed, 600 insertions(+), 4 deletions(-) diff --git a/drivers/media/platform/qcom/iris/Makefile b/drivers/media/plat= form/qcom/iris/Makefile index 48e415cbc4390bc596f6239fefa2a2ad2cd3a2bb..3ca4db45cb07323bdc18e5aba99= ec7195087fe73 100644 --- a/drivers/media/platform/qcom/iris/Makefile +++ b/drivers/media/platform/qcom/iris/Makefile @@ -26,6 +26,7 @@ qcom-iris-objs +=3D iris_buffer.o \ iris_vpu2.o \ iris_vpu3x.o \ iris_vpu4x.o \ + iris_vpu5x.o \ iris_vpu_buffer.o \ iris_vpu_common.o \ =20 diff --git a/drivers/media/platform/qcom/iris/iris_platform_common.h b/driv= ers/media/platform/qcom/iris/iris_platform_common.h index 9748095091461ba13443c63955a42906fa4f050c..193e6f293cda5462ecca9acc0eb= c79c936b68bb4 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_common.h +++ b/drivers/media/platform/qcom/iris/iris_platform_common.h @@ -76,6 +76,10 @@ enum platform_clk_type { IRIS_VPP0_HW_CLK, IRIS_VPP1_HW_CLK, IRIS_APV_HW_CLK, + IRIS_AXIC_CLK, + IRIS_CTRL_DEBUG_CLK, + IRIS_VPP_GATING_CLK, + IRIS_CX_AXI_CLK, }; =20 struct platform_clk_data { @@ -237,6 +241,8 @@ enum platform_pm_domain_type { IRIS_VPP0_HW_POWER_DOMAIN, IRIS_VPP1_HW_POWER_DOMAIN, IRIS_APV_HW_POWER_DOMAIN, + IRIS_MM_INT_POWER_DOMAIN, + IRIS_CX_INT_POWER_DOMAIN, }; =20 struct iris_firmware_data { diff --git a/drivers/media/platform/qcom/iris/iris_vpu4x.c b/drivers/media/= platform/qcom/iris/iris_vpu4x.c index 93acbfa0f471fdec1cb75db732f37ef6c6ef5cbf..267139a732d923b8e4939bc7d29= 32d06fac7a006 100644 --- a/drivers/media/platform/qcom/iris/iris_vpu4x.c +++ b/drivers/media/platform/qcom/iris/iris_vpu4x.c @@ -11,10 +11,6 @@ #include "iris_vpu_register_defines.h" =20 #define MVP_NOC_RESET_REQ_MASK 0x70103 -#define VPU_IDLE_BITS 0x7103 - -#define CORE_CLK_HALT BIT(0) -#define CORE_PWR_ON BIT(1) =20 static int iris_vpu4x_genpd_set_hwmode(struct iris_core *core, bool hw_mod= e, u32 efuse_value) { diff --git a/drivers/media/platform/qcom/iris/iris_vpu5x.c b/drivers/media/= platform/qcom/iris/iris_vpu5x.c new file mode 100644 index 0000000000000000000000000000000000000000..726c3f35ece4dd1abe4fd3916a5= db699029d154e --- /dev/null +++ b/drivers/media/platform/qcom/iris/iris_vpu5x.c @@ -0,0 +1,588 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + */ + +#include +#include +#include + +#include "iris_instance.h" +#include "iris_vpu_common.h" +#include "iris_vpu_register_defines.h" + +/* + * iris5 specific register defines. + * Many base offsets are shared with prior generations: + * WRAPPER_BASE_OFFS =3D 0x000B0000 + * AON_BASE_OFFS =3D 0x000E0000 + * AON_MVP_NOC_RESET =3D 0x0001F000 + * CPU_BASE_OFFS =3D 0x000A0000 + */ + +#define WRAPPER_MVP_NOC_LPI_CONTROL (WRAPPER_BASE_OFFS + 0x110) +#define WRAPPER_MVP_NOC_LPI_STATUS (WRAPPER_BASE_OFFS + 0x114) +#define WRAPPER_MVP_NOC_CX_LPI_CONTROL (WRAPPER_BASE_OFFS + 0x118) +#define WRAPPER_MVP_NOC_CX_LPI_STATUS (WRAPPER_BASE_OFFS + 0x11C) + +#define AON_WRAPPER_MVP_NOC_ARCG_CONTROL (AON_BASE_OFFS + 0x10) + +#define AON_WRAPPER_MVP_VIDEO_CTL_NOC_LPI_CONTROL (AON_BASE_OFFS + 0x2C) +#define AON_WRAPPER_MVP_VIDEO_CTL_NOC_LPI_STATUS (AON_BASE_OFFS + 0x30) + +#define CPU_NOC_BASE_OFFS 0x000D0000 +#define CPU_NOC_ERRORLOGGER_MAINCTL_LOW (CPU_NOC_BASE_OFFS + 0x08) +#define CPU_NOC_SBM_FAULTINEN0_LOW (CPU_NOC_BASE_OFFS + 0x240) + +#define NOC_BASE_OFFS 0x00010000 +#define NOC_ERL_ERRORLOGGER_MAINCTL_LOW (NOC_BASE_OFFS + 0xA008) +#define NOC_ERL_ERRORLOGGER_ERRCLR_LOW (NOC_BASE_OFFS + 0xA018) +#define NOC_SBM_FAULTINEN0_LOW (NOC_BASE_OFFS + 0x7040) + +#define NOC5_RESET_VPP0_ONLY_DISABLED 0x36010E +#define NOC5_RESET_VPP1_DISABLED 0x35000F +#define NOC5_RESET_ALL_VPP_ENABLED 0x37010F + +#define NOC_LPI_PD_QREQ BIT(0) +#define NOC_SBM_FAULTINEN0_PORT0 BIT(0) +#define NOC_ERRORLOGGER_MAINCTL_FAULTEN BIT(0) +#define NOC_ERL_ERRORLOGGER_ERRCLR BIT(0) +#define AON_MVP_NOC_ARCG_OVERRIDE BIT(0) + +#define WRAPPER_INTR_MASK_SS_CPU_NOC BIT(6) +#define WRAPPER_INTR_MASK_SS_NOC BIT(5) + +static bool iris_vpu5x_hw_power_collapsed(struct iris_core *core) +{ + u32 value =3D readl(core->reg_base + WRAPPER_CORE_POWER_STATUS); + + return !(value & CORE_PWR_ON); +} + +static int iris_vpu5x_genpd_set_hwmode(struct iris_core *core, bool hw_mod= e, u32 efuse_value) +{ + int ret; + + ret =3D dev_pm_genpd_set_hwmode(core->pmdomain_tbl->pd_devs[IRIS_HW_POWER= _DOMAIN], hw_mode); + if (ret) + return ret; + + if (!(efuse_value & DISABLE_VIDEO_VPP0_BIT)) { + ret =3D dev_pm_genpd_set_hwmode(core->pmdomain_tbl->pd_devs + [IRIS_VPP0_HW_POWER_DOMAIN], hw_mode); + if (ret) + goto restore_hw_domain_mode; + } + + if (!(efuse_value & DISABLE_VIDEO_VPP1_BIT)) { + ret =3D dev_pm_genpd_set_hwmode(core->pmdomain_tbl->pd_devs + [IRIS_VPP1_HW_POWER_DOMAIN], hw_mode); + if (ret) + goto restore_vpp0_domain_mode; + } + + if (!(efuse_value & DISABLE_VIDEO_APV_BIT)) { + ret =3D dev_pm_genpd_set_hwmode(core->pmdomain_tbl->pd_devs + [IRIS_APV_HW_POWER_DOMAIN], hw_mode); + if (ret) + goto restore_vpp1_domain_mode; + } + + ret =3D dev_pm_genpd_set_hwmode(core->pmdomain_tbl->pd_devs[IRIS_MM_INT_P= OWER_DOMAIN], + hw_mode); + if (ret) + goto restore_apv_domain_mode; + + ret =3D dev_pm_genpd_set_hwmode(core->pmdomain_tbl->pd_devs[IRIS_CX_INT_P= OWER_DOMAIN], + hw_mode); + if (ret) + goto restore_mm_int_domain_mode; + + return 0; + +restore_mm_int_domain_mode: + dev_pm_genpd_set_hwmode(core->pmdomain_tbl->pd_devs[IRIS_MM_INT_POWER_DOM= AIN], !hw_mode); + +restore_apv_domain_mode: + if (!(efuse_value & DISABLE_VIDEO_APV_BIT)) + dev_pm_genpd_set_hwmode(core->pmdomain_tbl->pd_devs[IRIS_APV_HW_POWER_DO= MAIN], + !hw_mode); +restore_vpp1_domain_mode: + if (!(efuse_value & DISABLE_VIDEO_VPP1_BIT)) + dev_pm_genpd_set_hwmode(core->pmdomain_tbl->pd_devs[IRIS_VPP1_HW_POWER_D= OMAIN], + !hw_mode); +restore_vpp0_domain_mode: + if (!(efuse_value & DISABLE_VIDEO_VPP0_BIT)) + dev_pm_genpd_set_hwmode(core->pmdomain_tbl->pd_devs[IRIS_VPP0_HW_POWER_D= OMAIN], + !hw_mode); +restore_hw_domain_mode: + dev_pm_genpd_set_hwmode(core->pmdomain_tbl->pd_devs[IRIS_HW_POWER_DOMAIN]= , !hw_mode); + + return ret; +} + +static int iris_vpu5x_set_hwmode(struct iris_core *core) +{ + u32 efuse_value =3D readl(core->reg_base + WRAPPER_EFUSE_MONITOR); + + if (!(efuse_value & DISABLE_VIDEO_APV_BIT)) + iris_vpu4x_vpu5x_ahb_sync_reset_apv(core); + + iris_vpu4x_vpu5x_ahb_sync_reset_hardware(core); + + return iris_vpu5x_genpd_set_hwmode(core, true, efuse_value); +} + +/* + * Perform an LPI power-down handshake on a single NOC interface. + * + * Sets QREQ and polls for the status DONE bit. On a busy response the req= uest + * is toggled and, when @errclr_offs is non-zero, the NOC error-log clear + * register at that offset is written between retries to unblock the fabri= c. + * Pass @errclr_offs =3D 0 for interfaces that do not require error cleari= ng. + */ +static void iris_vpu5x_noc_lpi_handshake(struct iris_core *core, + u32 ctrl_offs, u32 status_offs, + u32 busy_mask, u32 errclr_offs, + const char *name) +{ + bool handshake_done, handshake_busy; + u32 value, count =3D 0; + int ret; + + do { + if (errclr_offs) { + value =3D readl(core->reg_base + errclr_offs); + value |=3D NOC_ERL_ERRORLOGGER_ERRCLR; + writel(value, core->reg_base + errclr_offs); + } + + value =3D readl(core->reg_base + ctrl_offs); + value |=3D NOC_LPI_PD_QREQ; + writel(value, core->reg_base + ctrl_offs); + usleep_range(10, 20); + + value =3D readl(core->reg_base + status_offs); + handshake_done =3D value & NOC_LPI_STATUS_DONE; + handshake_busy =3D value & busy_mask; + + if (handshake_done || !handshake_busy) + break; + + value =3D readl(core->reg_base + ctrl_offs); + value &=3D ~NOC_LPI_PD_QREQ; + writel(value, core->reg_base + ctrl_offs); + usleep_range(10, 20); + + } while (++count < 1000); + + if (!handshake_done && handshake_busy) + dev_err(core->dev, "%s NOC LPI handshake timeout\n", name); + + ret =3D readl_poll_timeout(core->reg_base + status_offs, + value, value & NOC_LPI_STATUS_DONE, 200, 2000); + if (ret) + dev_err(core->dev, "%s NOC LPI status timeout\n", name); + + value =3D readl(core->reg_base + ctrl_offs); + value &=3D ~NOC_LPI_PD_QREQ; + writel(value, core->reg_base + ctrl_offs); +} + +static int iris_vpu5x_power_on_cx_int(struct iris_core *core) +{ + u32 value; + int ret; + + ret =3D iris_enable_power_domains(core, + core->pmdomain_tbl->pd_devs[IRIS_CX_INT_POWER_DOMAIN]); + if (ret) + return ret; + + ret =3D iris_prepare_enable_clock(core, IRIS_CX_AXI_CLK); + if (ret) + goto err_disable_cx_int_power; + + value =3D readl(core->reg_base + WRAPPER_MVP_NOC_CX_LPI_CONTROL); + value &=3D ~NOC_LPI_PD_QREQ; + writel(value, core->reg_base + WRAPPER_MVP_NOC_CX_LPI_CONTROL); + + readl_poll_timeout(core->reg_base + WRAPPER_MVP_NOC_CX_LPI_STATUS, + value, !(value & NOC_LPI_STATUS_DONE), 200, 2000); + + return 0; + +err_disable_cx_int_power: + iris_disable_power_domains(core, core->pmdomain_tbl->pd_devs[IRIS_CX_INT_= POWER_DOMAIN]); + + return ret; +} + +static void iris_vpu5x_power_off_cx_int(struct iris_core *core) +{ + iris_vpu5x_noc_lpi_handshake(core, + WRAPPER_MVP_NOC_CX_LPI_CONTROL, + WRAPPER_MVP_NOC_CX_LPI_STATUS, + NOC_LPI_STATUS_DENY | NOC_LPI_STATUS_ACTIVE, + NOC_ERL_ERRORLOGGER_ERRCLR_LOW, "CX"); + + iris_disable_unprepare_clock(core, IRIS_CX_AXI_CLK); + iris_disable_power_domains(core, core->pmdomain_tbl->pd_devs[IRIS_CX_INT_= POWER_DOMAIN]); +} + +static int iris_vpu5x_power_on_mm_int(struct iris_core *core) +{ + u32 value; + int ret; + + ret =3D iris_enable_power_domains(core, + core->pmdomain_tbl->pd_devs[IRIS_MM_INT_POWER_DOMAIN]); + if (ret) + return ret; + + ret =3D iris_prepare_enable_clock(core, IRIS_HW_FREERUN_CLK); + if (ret) + goto err_disable_mm_int_power; + + value =3D readl(core->reg_base + WRAPPER_MVP_NOC_LPI_CONTROL); + value &=3D ~NOC_LPI_PD_QREQ; + writel(value, core->reg_base + WRAPPER_MVP_NOC_LPI_CONTROL); + + readl_poll_timeout(core->reg_base + WRAPPER_MVP_NOC_LPI_STATUS, + value, !(value & NOC_LPI_STATUS_DONE), 200, 2000); + + return 0; + +err_disable_mm_int_power: + iris_disable_power_domains(core, core->pmdomain_tbl->pd_devs[IRIS_MM_INT_= POWER_DOMAIN]); + + return ret; +} + +static void iris_vpu5x_power_off_mm_int(struct iris_core *core) +{ + u32 value; + + value =3D readl(core->reg_base + WRAPPER_MVP_NOC_LPI_CONTROL); + value &=3D ~NOC_LPI_PD_QREQ; + writel(value, core->reg_base + WRAPPER_MVP_NOC_LPI_CONTROL); + + value =3D readl(core->reg_base + WRAPPER_MVP_NOC_CX_LPI_CONTROL); + value &=3D ~NOC_LPI_PD_QREQ; + writel(value, core->reg_base + WRAPPER_MVP_NOC_CX_LPI_CONTROL); + + iris_vpu5x_noc_lpi_handshake(core, + WRAPPER_MVP_NOC_LPI_CONTROL, + WRAPPER_MVP_NOC_LPI_STATUS, + NOC_LPI_STATUS_DENY | NOC_LPI_STATUS_ACTIVE, + NOC_ERL_ERRORLOGGER_ERRCLR_LOW, "MM"); + + iris_disable_unprepare_clock(core, IRIS_HW_FREERUN_CLK); + iris_disable_power_domains(core, core->pmdomain_tbl->pd_devs[IRIS_MM_INT_= POWER_DOMAIN]); +} + +static int iris_vpu5x_enable_hw_clocks(struct iris_core *core, u32 efuse_v= alue) +{ + int ret; + + ret =3D iris_prepare_enable_clock(core, IRIS_AXI_CLK); + if (ret) + return ret; + + ret =3D iris_prepare_enable_clock(core, IRIS_HW_CLK); + if (ret) + goto err_disable_axi_clk; + + ret =3D iris_prepare_enable_clock(core, IRIS_BSE_HW_CLK); + if (ret) + goto err_disable_hw_clk; + + if (!(efuse_value & DISABLE_VIDEO_VPP0_BIT)) { + ret =3D iris_prepare_enable_clock(core, IRIS_VPP0_HW_CLK); + if (ret) + goto err_disable_bse_clk; + } + + if (!(efuse_value & DISABLE_VIDEO_VPP1_BIT)) { + ret =3D iris_prepare_enable_clock(core, IRIS_VPP1_HW_CLK); + if (ret) + goto err_disable_vpp0_clk; + } + + ret =3D iris_prepare_enable_clock(core, IRIS_VPP_GATING_CLK); + if (ret) + goto err_disable_vpp1_clk; + + return 0; + +err_disable_vpp1_clk: + if (!(efuse_value & DISABLE_VIDEO_VPP1_BIT)) + iris_disable_unprepare_clock(core, IRIS_VPP1_HW_CLK); +err_disable_vpp0_clk: + if (!(efuse_value & DISABLE_VIDEO_VPP0_BIT)) + iris_disable_unprepare_clock(core, IRIS_VPP0_HW_CLK); +err_disable_bse_clk: + iris_disable_unprepare_clock(core, IRIS_BSE_HW_CLK); +err_disable_hw_clk: + iris_disable_unprepare_clock(core, IRIS_HW_CLK); +err_disable_axi_clk: + iris_disable_unprepare_clock(core, IRIS_AXI_CLK); + + return ret; +} + +static void iris_vpu5x_disable_hw_clocks(struct iris_core *core, u32 efuse= _value) +{ + iris_disable_unprepare_clock(core, IRIS_VPP_GATING_CLK); + + if (!(efuse_value & DISABLE_VIDEO_VPP1_BIT)) + iris_disable_unprepare_clock(core, IRIS_VPP1_HW_CLK); + + if (!(efuse_value & DISABLE_VIDEO_VPP0_BIT)) + iris_disable_unprepare_clock(core, IRIS_VPP0_HW_CLK); + + iris_disable_unprepare_clock(core, IRIS_BSE_HW_CLK); + iris_disable_unprepare_clock(core, IRIS_HW_CLK); + iris_disable_unprepare_clock(core, IRIS_AXI_CLK); +} + +static int iris_vpu5x_power_on_hardware(struct iris_core *core) +{ + u32 efuse_value =3D readl(core->reg_base + WRAPPER_EFUSE_MONITOR); + int ret; + + ret =3D iris_vpu5x_power_on_cx_int(core); + if (ret) + return ret; + + ret =3D iris_vpu5x_power_on_mm_int(core); + if (ret) + goto err_disable_cx_int; + + ret =3D iris_enable_power_domains(core, core->pmdomain_tbl->pd_devs[IRIS_= HW_POWER_DOMAIN]); + if (ret) + goto err_disable_mm_int; + + if (!(efuse_value & DISABLE_VIDEO_VPP0_BIT)) { + ret =3D iris_enable_power_domains(core, core->pmdomain_tbl->pd_devs + [IRIS_VPP0_HW_POWER_DOMAIN]); + if (ret) + goto err_disable_hw_power; + } + + if (!(efuse_value & DISABLE_VIDEO_VPP1_BIT)) { + ret =3D iris_enable_power_domains(core, core->pmdomain_tbl->pd_devs + [IRIS_VPP1_HW_POWER_DOMAIN]); + if (ret) + goto err_disable_vpp0_power; + } + + ret =3D iris_vpu5x_enable_hw_clocks(core, efuse_value); + if (ret) + goto err_disable_vpp1_power; + + if (!(efuse_value & DISABLE_VIDEO_APV_BIT)) { + ret =3D iris_vpu4x_vpu5x_power_on_apv(core); + if (ret) + goto err_disable_hw_clocks; + } + + return 0; + +err_disable_hw_clocks: + iris_vpu5x_disable_hw_clocks(core, efuse_value); +err_disable_vpp1_power: + if (!(efuse_value & DISABLE_VIDEO_VPP1_BIT)) + iris_disable_power_domains(core, core->pmdomain_tbl->pd_devs + [IRIS_VPP1_HW_POWER_DOMAIN]); +err_disable_vpp0_power: + if (!(efuse_value & DISABLE_VIDEO_VPP0_BIT)) + iris_disable_power_domains(core, core->pmdomain_tbl->pd_devs + [IRIS_VPP0_HW_POWER_DOMAIN]); +err_disable_hw_power: + iris_disable_power_domains(core, core->pmdomain_tbl->pd_devs[IRIS_HW_POWE= R_DOMAIN]); +err_disable_mm_int: + iris_vpu5x_power_off_mm_int(core); +err_disable_cx_int: + iris_vpu5x_power_off_cx_int(core); + + return ret; +} + +static void iris_vpu5x_power_off_hardware(struct iris_core *core) +{ + u32 efuse_value =3D readl(core->reg_base + WRAPPER_EFUSE_MONITOR); + u32 noc_reset_mask; + u32 value; + int ret; + + iris_vpu5x_genpd_set_hwmode(core, false, efuse_value); + + if (!(efuse_value & DISABLE_VIDEO_APV_BIT)) + iris_vpu4x_vpu5x_power_off_apv(core); + + if (iris_vpu5x_hw_power_collapsed(core)) + goto disable_clocks_and_power; + + value =3D readl(core->reg_base + WRAPPER_CORE_CLOCK_CONFIG); + if (value & CORE_CLK_HALT) + writel(CORE_CLK_RUN, core->reg_base + WRAPPER_CORE_CLOCK_CONFIG); + + readl_poll_timeout(core->reg_base + VCODEC_SS_IDLE_STATUSN, + value, (value & VPU_IDLE_BITS) =3D=3D VPU_IDLE_BITS, 2000, 20000); + + if (efuse_value & DISABLE_VIDEO_VPP0_BIT) + noc_reset_mask =3D NOC5_RESET_VPP0_ONLY_DISABLED; + else if (efuse_value & DISABLE_VIDEO_VPP1_BIT) + noc_reset_mask =3D NOC5_RESET_VPP1_DISABLED; + else + noc_reset_mask =3D NOC5_RESET_ALL_VPP_ENABLED; + + writel(noc_reset_mask, core->reg_base + AON_WRAPPER_MVP_NOC_RESET_REQ); + ret =3D readl_poll_timeout(core->reg_base + AON_WRAPPER_MVP_NOC_RESET_ACK, + value, (value & noc_reset_mask) =3D=3D noc_reset_mask, 200, 2000); + if (ret) + dev_err(core->dev, "MVP NOC reset ack timeout\n"); + + writel(noc_reset_mask, core->reg_base + AON_WRAPPER_MVP_NOC_RESET_SYNCRST= ); + writel(0x0, core->reg_base + AON_WRAPPER_MVP_NOC_RESET_SYNCRST); + writel(0x0, core->reg_base + AON_WRAPPER_MVP_NOC_RESET_REQ); + + ret =3D readl_poll_timeout(core->reg_base + AON_WRAPPER_MVP_NOC_RESET_ACK, + value, value =3D=3D 0x0, 200, 2000); + if (ret) + dev_err(core->dev, "MVP NOC reset deassert timeout\n"); + + writel(CORE_BRIDGE_SW_RESET | CORE_BRIDGE_HW_RESET_DISABLE, + core->reg_base + CPU_CS_AHB_BRIDGE_SYNC_RESET); + writel(CORE_BRIDGE_HW_RESET_DISABLE, core->reg_base + CPU_CS_AHB_BRIDGE_S= YNC_RESET); + writel(0x0, core->reg_base + CPU_CS_AHB_BRIDGE_SYNC_RESET); + +disable_clocks_and_power: + iris_vpu5x_disable_hw_clocks(core, efuse_value); + + if (!(efuse_value & DISABLE_VIDEO_VPP1_BIT)) + iris_disable_power_domains(core, core->pmdomain_tbl->pd_devs + [IRIS_VPP1_HW_POWER_DOMAIN]); + + if (!(efuse_value & DISABLE_VIDEO_VPP0_BIT)) + iris_disable_power_domains(core, core->pmdomain_tbl->pd_devs + [IRIS_VPP0_HW_POWER_DOMAIN]); + + iris_disable_power_domains(core, core->pmdomain_tbl->pd_devs[IRIS_HW_POWE= R_DOMAIN]); + iris_vpu5x_power_off_mm_int(core); + iris_vpu5x_power_off_cx_int(core); +} + +static int iris_vpu5x_power_on_controller(struct iris_core *core) +{ + u32 mask_val; + int ret; + + ret =3D iris_enable_power_domains(core, core->pmdomain_tbl->pd_devs[IRIS_= CTRL_POWER_DOMAIN]); + if (ret) + return ret; + + ret =3D iris_prepare_enable_clock(core, IRIS_CTRL_CLK); + if (ret) + goto err_disable_ctrl_power; + + ret =3D iris_prepare_enable_clock(core, IRIS_AXIC_CLK); + if (ret) + goto err_disable_ctrl_clk; + + ret =3D iris_prepare_enable_clock(core, IRIS_CTRL_FREERUN_CLK); + if (ret) + goto err_disable_axic_clk; + + ret =3D iris_prepare_enable_clock(core, IRIS_CTRL_DEBUG_CLK); + if (ret) + goto err_disable_ctrl_freerun_clk; + + mask_val =3D readl(core->reg_base + CPU_NOC_SBM_FAULTINEN0_LOW); + mask_val |=3D NOC_SBM_FAULTINEN0_PORT0; + writel(mask_val, core->reg_base + CPU_NOC_SBM_FAULTINEN0_LOW); + + mask_val =3D readl(core->reg_base + CPU_NOC_ERRORLOGGER_MAINCTL_LOW); + mask_val |=3D NOC_ERRORLOGGER_MAINCTL_FAULTEN; + writel(mask_val, core->reg_base + CPU_NOC_ERRORLOGGER_MAINCTL_LOW); + + mask_val =3D readl(core->reg_base + WRAPPER_INTR_MASK); + mask_val &=3D ~WRAPPER_INTR_MASK_SS_CPU_NOC; + writel(mask_val, core->reg_base + WRAPPER_INTR_MASK); + + mask_val =3D readl(core->reg_base + NOC_SBM_FAULTINEN0_LOW); + mask_val |=3D NOC_SBM_FAULTINEN0_PORT0; + writel(mask_val, core->reg_base + NOC_SBM_FAULTINEN0_LOW); + + mask_val =3D readl(core->reg_base + NOC_ERL_ERRORLOGGER_MAINCTL_LOW); + mask_val |=3D NOC_ERRORLOGGER_MAINCTL_FAULTEN; + writel(mask_val, core->reg_base + NOC_ERL_ERRORLOGGER_MAINCTL_LOW); + + mask_val =3D readl(core->reg_base + WRAPPER_INTR_MASK); + mask_val &=3D ~WRAPPER_INTR_MASK_SS_NOC; + writel(mask_val, core->reg_base + WRAPPER_INTR_MASK); + + return 0; + +err_disable_ctrl_freerun_clk: + iris_disable_unprepare_clock(core, IRIS_CTRL_FREERUN_CLK); +err_disable_axic_clk: + iris_disable_unprepare_clock(core, IRIS_AXIC_CLK); +err_disable_ctrl_clk: + iris_disable_unprepare_clock(core, IRIS_CTRL_CLK); +err_disable_ctrl_power: + iris_disable_power_domains(core, core->pmdomain_tbl->pd_devs[IRIS_CTRL_PO= WER_DOMAIN]); + + return ret; +} + +static int iris_vpu5x_power_off_controller(struct iris_core *core) +{ + u32 ctrl_rst_tbl_size =3D core->iris_platform_data->controller_rst_tbl_si= ze; + u32 value; + + writel(MSK_SIGNAL_FROM_TENSILICA | MSK_CORE_POWER_ON, + core->reg_base + CPU_CS_X2RPMH); + + iris_vpu5x_noc_lpi_handshake(core, + WRAPPER_IRIS_CPU_NOC_LPI_CONTROL, + WRAPPER_IRIS_CPU_NOC_LPI_STATUS, + NOC_LPI_STATUS_DENY, 0, "CPU"); + + iris_vpu5x_noc_lpi_handshake(core, + AON_WRAPPER_MVP_VIDEO_CTL_NOC_LPI_CONTROL, + AON_WRAPPER_MVP_VIDEO_CTL_NOC_LPI_STATUS, + NOC_LPI_STATUS_DENY | NOC_LPI_STATUS_ACTIVE, 0, "Video CTL"); + + writel(0x0, core->reg_base + WRAPPER_DEBUG_BRIDGE_LPI_CONTROL); + readl_poll_timeout(core->reg_base + WRAPPER_DEBUG_BRIDGE_LPI_STATUS, + value, value =3D=3D 0x0, 200, 2000); + + iris_disable_power_domains(core, core->pmdomain_tbl->pd_devs[IRIS_CTRL_PO= WER_DOMAIN]); + + value =3D readl(core->reg_base + AON_WRAPPER_MVP_NOC_ARCG_CONTROL); + value |=3D AON_MVP_NOC_ARCG_OVERRIDE; + writel(value, core->reg_base + AON_WRAPPER_MVP_NOC_ARCG_CONTROL); + + iris_disable_unprepare_clock(core, IRIS_CTRL_DEBUG_CLK); + iris_disable_unprepare_clock(core, IRIS_CTRL_FREERUN_CLK); + iris_disable_unprepare_clock(core, IRIS_AXIC_CLK); + iris_disable_unprepare_clock(core, IRIS_CTRL_CLK); + + reset_control_bulk_assert(ctrl_rst_tbl_size, core->controller_resets); + usleep_range(400, 500); + reset_control_bulk_deassert(ctrl_rst_tbl_size, core->controller_resets); + + return 0; +} + +const struct vpu_ops iris_vpu5x_ops =3D { + .power_off_hw =3D iris_vpu5x_power_off_hardware, + .power_on_hw =3D iris_vpu5x_power_on_hardware, + .power_off_controller =3D iris_vpu5x_power_off_controller, + .power_on_controller =3D iris_vpu5x_power_on_controller, + .program_bootup_registers =3D iris_vpu35_vpu4x_program_bootup_registers, + .calc_freq =3D iris_vpu3x_vpu4x_calculate_frequency, + .set_hwmode =3D iris_vpu5x_set_hwmode, +}; diff --git a/drivers/media/platform/qcom/iris/iris_vpu_common.h b/drivers/m= edia/platform/qcom/iris/iris_vpu_common.h index cc22c7459c4b77fdcb95b546fb8a55eea522bfb8..888b4b9407d0e0c7222448fe61b= f8a41b669d2d6 100644 --- a/drivers/media/platform/qcom/iris/iris_vpu_common.h +++ b/drivers/media/platform/qcom/iris/iris_vpu_common.h @@ -13,6 +13,7 @@ extern const struct vpu_ops iris_vpu3_ops; extern const struct vpu_ops iris_vpu33_ops; extern const struct vpu_ops iris_vpu35_ops; extern const struct vpu_ops iris_vpu4x_ops; +extern const struct vpu_ops iris_vpu5x_ops; =20 struct vpu_ops { void (*power_off_hw)(struct iris_core *core); diff --git a/drivers/media/platform/qcom/iris/iris_vpu_register_defines.h b= /drivers/media/platform/qcom/iris/iris_vpu_register_defines.h index 33f3d01cf79d763a62a2be9eac910a462bcd479b..3d08ea15eacb7ababaefd6e233b= 6232ce39f2cb5 100644 --- a/drivers/media/platform/qcom/iris/iris_vpu_register_defines.h +++ b/drivers/media/platform/qcom/iris/iris_vpu_register_defines.h @@ -85,4 +85,8 @@ #define AON_WRAPPER_MVP_NOC_LPI_CONTROL (AON_BASE_OFFS) #define AON_WRAPPER_MVP_NOC_LPI_STATUS (AON_BASE_OFFS + 0x4) =20 +#define VPU_IDLE_BITS 0x7103 +#define CORE_CLK_HALT BIT(0) +#define CORE_PWR_ON BIT(1) + #endif --=20 2.43.0 From nobody Fri Sep 25 01:22:50 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 CDF4D3DAAC0 for ; Fri, 18 Sep 2026 04:29:27 +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=1789705770; cv=none; b=dy/0kM0FGpQJcJ3tiZTu4AFt62I22JPIv2wLBMZr8BZx99PjSYvILqIscPI116SGTrwicDJTD80pQ4o5VKoY8GSNIHw5HeAfj8hESCdxONv47DguKHQnrurb3rAGc+DRRxvf5za3twiCmVmMN3ZrmbLNfMU/he9d3a8xwBGlS5E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789705770; c=relaxed/simple; bh=SLS2J/inJ/xz1uivwN9BV3DhzJjwQFdcgOgS4Ib0jys=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Xg8H4c3XnpNyg694rOMhHvSYXCwDHCOu3KD5UtpXCMcAms3M2SA8WdTO4XYE3L/M/d6VOg0uiPIZkXypzbBHNGINF6aarWNOnHPexBuQHyOFewXgpn+2KpROIzATR17bz6du5OwZzCkpEjbyeaqtI+QbvgyjuKCw5VxsU50FSKg= 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=aMowxlnY; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=a/iSWKam; 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="aMowxlnY"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="a/iSWKam" Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 68I2UWlv262860 for ; Fri, 18 Sep 2026 04:29:27 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= GCIBXw9ShbhLlQUDUJ12iBhDL+xTV61EhMEc4eN+bNE=; b=aMowxlnYR9fTaDsA jufzVGOm1uR0zB2j4iiEi7CWN+TvHYejXlmo4rdacNy/i/gQS3lMDwRoi9aedD50 SprOgAefz4wewZE77kmPcYqQ6R38O3gAkmXIaEZFSKOThD6CTqJ1BR9htbTaAX4k an3W4yI6JigdO8yzvTyexWXvRFYpUCulRVlKuprzSJ/DcPYhjVYgbZvRBS7le7x2 feHQItIKeiKPvlPW9ijk3iGrbiqA0u/zyXoUwP3iRpFAdDkYOIzOTwojmuOfUKkk CIrH//pDD2WZ3yErL7uvNLt1zDbVSevcY/2jIBT5KX1zt7k44f0P7xb3AxpbmbiK wYo70g== Received: from mail-pg1-f198.google.com (mail-pg1-f198.google.com [209.85.215.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4grrg41a6f-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 18 Sep 2026 04:29:27 +0000 (GMT) Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-c89704da8c7so412420a12.0 for ; Thu, 17 Sep 2026 21:29:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1789705766; x=1790310566; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=GCIBXw9ShbhLlQUDUJ12iBhDL+xTV61EhMEc4eN+bNE=; b=a/iSWKamgm3zMCA7+XP1F+OfPQ8PkfJm80CIf1aI14/+uJTbFUJgCv3X9Hs4ejzugL rWkxsvM7c0laHUipX6sk1gxj21J/JFQ0WTG3bDJRA1E9kmB3IMiw36b/haC/bEK6mrth o2fJA51+l5pjQriNjwPCfc9SG/HCEZVIK0SVUXTtb6NSc/h63JtsFnv0cG4c1n8ujH5+ Rggiy1WGI7FqLBUt0md2VCJTwc/b0xAkK4Z7pArQj/+JtHw17JH0FTRYzjdeSW5ig7Kg bDQSk+aqIPFPM/Ryii1DwgTuy9cgiNaFaC7vL/X3rB1ISLzjYlWzDl7S8wgERxL0GmCS pznQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789705766; x=1790310566; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=GCIBXw9ShbhLlQUDUJ12iBhDL+xTV61EhMEc4eN+bNE=; b=f4n5GfY4t3i1se8MuFYRCusAPlV3xnVMi1oMs9EH9xdXmfip6Fp2r7vBFwDfS12OS/ /07vxUnV3Kk/IDHRm3+6ok65lSTjwDZMBpziaU7Y/3+7LJ8Bcasu7Jj67Sc4AmKn2kmS iL8dtc3kHm5Kckq9N3wdyY4h7D9y//ICJP23PiUM1+q8U1qOnzTjDZ71DU0aKb023iyM nRaxLc/5uaZxjJJn/WfrnrunHFCtYXck2sH4fnmHWUxAUIch+5AiUsUoZxya38t91hNj g18WGrIGrpgDw2zHa2WcUcLfw7luqf0sIddmQiuQhh337nMT6ugZxT1FdfhXX5LOm0ds dLMg== X-Forwarded-Encrypted: i=1; AKwUvBxombI4F3J5co0rPAZlMzEjth/gV+cym8ob2NHQbxr4SOFR07zWY5lS5L5uMCS7usgZCQgfwNvXXtE+aOI=@vger.kernel.org X-Gm-Message-State: AFuF++kubYdcx8LWMZ3PZYOfNUrGUxjxh6x6iRlku75x5d2WFFCWSQ5A s0coNjD2iJm9W8XD4hv6kxTAmmd2hDro8wypIBr6CwR4T4MZhyDlgs2NdrKKr2eTTsC7edEILOA Sd9unxcDb0bfelhD4BO7mmrACBwy5cwfneXyIEdqYhklsRBKwlf5cRNTcan8aHgRJnEA= X-Gm-Gg: AYBFou0w33P5SxvIGgcgNLA2HZnZwOuNI2y3BtxEEGP7WWyhmqvekdUSTMf6D8sJEnH ckeiLUuPWIcAHemt/CBM3iFljMTV53IK6hccvV19mwHKQUZJozJgsHVcqb4Qq/muLdRIg8WVIXQ bpptW8F5jGuC6aGx5mWi5zcrZWA8ISBcW9Y6dc7g3zA/LfI2KQZlKj7l42L4QgFAXZTFVh7/Olb qrx+fqRFdOby67ZQNSPcpWiGIx7HABJz5J8gazVV42xCY4wbTr/VkW3mOSpFtK/LYq79Fv7b2R3 XP6Z5E9cvx42EDHT9zPXurDNVJvSHx1VOD4NHyLDNdDr2UAXauHeQl0tL/TluCW0NMGUjrGvtx6 tjiN4JAP0KuRElng48YqOnEBy9Iszzl8= X-Received: by 2002:a05:6a21:1f89:b0:398:8870:b58f with SMTP id adf61e73a8af0-3dd8c36b679mr2696758637.14.1789705766482; Thu, 17 Sep 2026 21:29:26 -0700 (PDT) X-Received: by 2002:a05:6a21:1f89:b0:398:8870:b58f with SMTP id adf61e73a8af0-3dd8c36b679mr2696723637.14.1789705766023; Thu, 17 Sep 2026 21:29:26 -0700 (PDT) Received: from WANGAOW-LAB01.ap.qualcomm.com ([114.94.8.21]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cc5c4dba322sm214595a12.10.2026.09.17.21.29.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Sep 2026 21:29:25 -0700 (PDT) From: Wangao Wang Date: Fri, 18 Sep 2026 12:28:44 +0800 Subject: [PATCH 5/6] media: iris: add VPU5x internal buffer size calculations 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: <20260918-add_iris_for_hawi-v1-5-ac60fd15c98b@oss.qualcomm.com> References: <20260918-add_iris_for_hawi-v1-0-ac60fd15c98b@oss.qualcomm.com> In-Reply-To: <20260918-add_iris_for_hawi-v1-0-ac60fd15c98b@oss.qualcomm.com> To: Vikash Garodia , Dikshita Agarwal , Bryan O'Donoghue , Mauro Carvalho Chehab , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Stanimir Varbanov , Abhinav Kumar , Philipp Zabel Cc: linux-arm-msm@vger.kernel.org, linux-media@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Wangao Wang X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1789705735; l=6876; i=wangao.wang@oss.qualcomm.com; s=20251021; h=from:subject:message-id; bh=SLS2J/inJ/xz1uivwN9BV3DhzJjwQFdcgOgS4Ib0jys=; b=dtcoH7e8zZ8GVz2n+cLkdmEugNu5REVW8os+9FFJKtfpPcf4VYusV+gbNJW2n2XbDMx/RA+IH ECaaD+X0FC3CM5zEW9g1Wv2w1MQZRemJm804IkzkDdWL9YXURtQfcQl X-Developer-Key: i=wangao.wang@oss.qualcomm.com; a=ed25519; pk=bUPgYblBUAsoPyGfssbNR7ZXUSGF8v1VF4FJzSO6/aA= X-Proofpoint-GUID: YeX-UOe6Zqp2aKR6dlY0OuRK8bb7SsFQ X-Authority-Analysis: v=2.4 cv=ZO9CCn7b c=1 sm=1 tr=0 ts=6aacbe27 cx=c_pps a=Qgeoaf8Lrialg5Z894R3/Q==:117 a=Uz3yg00KUFJ2y2WijEJ4bw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=Um2Pa8k9VHT-vaBCBUpS:22 a=EUspDBNiAAAA:8 a=TQKVwlwO4xRIBFL53c4A:9 a=QEXdDO2ut3YA:10 a=x9snwWr2DeNwDh03kgHS:22 X-Proofpoint-ORIG-GUID: YeX-UOe6Zqp2aKR6dlY0OuRK8bb7SsFQ X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTE4MDA1NiBTYWx0ZWRfX4EyTEC3Aigbc Axco7ywZTduQyQhfhS4+asQ68cj9+PkQiwvxW6wun9xgvJEcqFTuYwzxNqxhoAIR0T62XSIExaZ By0aVnGSliyOlinCeJ2v02Xq347zZhYU9Z22kT7Xwb6p46u1uz5dZKYFpGYRFVfLiNfcDv9gP4H H7XEvRv0GSUYeigRqrEp/TmAJYERzm/IZ6jxY3pEBOiqpjhhGeG8WRWUsqtDH6FewHesm4ZkHWL kb2Oy2nELEGcGKcpvkaHqMd1pzKetkiTMFzTeyw7Vb0Jchs3pHLKgfzzXNQgBfLTIWzjaL/LP3Z 6U8KUYgzVPIFFwoZryOkw9CkAIGhgyzNnCewkSPoJ4GSoGsK7WzWQKWQDF6SBHM9lKgAAiNbymj SocAQnEGGyQnGrwtqlsu25MQmsMSOLBw4l8C7B0pFYOTZbXySE+qRZAa9TAP3rbMXMFgr94eEG8 1JFFdiLyfb5qTQCXGDw== X-Proofpoint-Spam-Info: AW1haW4tMjYwOTE4MDA1NiBTYWx0ZWRfX9ZPzLf0Vdwh/ A6vT6t/CHJPkhOSiSuR6oDjeRyupPwRrKWtFNmFyhjb0Zw/2La+boPHIxgT+Ap7giR/MuQ7r77N gIrlCoF8Trrr2Zpic4k4V452Zl+Noyg= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-18_01,2026-09-16_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 phishscore=0 priorityscore=1501 suspectscore=0 adultscore=0 spamscore=0 lowpriorityscore=0 impostorscore=0 bulkscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2609040000 definitions=main-2609180056 VPU5x firmware uses internal buffer formulas that differ from VPU4x. In particular, the H.265 decoder persistent buffer needs space for SEI unregistered userdata and three-dimensional userdata, and the encoder calculations use a larger lambda LUT size. Add a VPU5x buffer-size dispatcher and a VPU5x-specific H.265 persistent buffer calculation while reusing the existing helpers for buffer types whose formulas are unchanged. Signed-off-by: Wangao Wang --- drivers/media/platform/qcom/iris/iris_vpu_buffer.c | 93 ++++++++++++++++++= ++++ drivers/media/platform/qcom/iris/iris_vpu_buffer.h | 5 +- 2 files changed, 97 insertions(+), 1 deletion(-) diff --git a/drivers/media/platform/qcom/iris/iris_vpu_buffer.c b/drivers/m= edia/platform/qcom/iris/iris_vpu_buffer.c index faebb54728660cc621f8822dabf2e44ce8c55c58..9a44d627b413fa61c7d97cad95d= 182d3107b9ee5 100644 --- a/drivers/media/platform/qcom/iris/iris_vpu_buffer.c +++ b/drivers/media/platform/qcom/iris/iris_vpu_buffer.c @@ -1868,6 +1868,54 @@ static u32 iris_vpu4x_dec_persist_size(struct iris_i= nst *inst) return 0; } =20 +static u32 hfi_vpu5x_buffer_persist_h265d(bool rpu_enabled) +{ + u32 slist_buf =3D SIZE_SLIST_BUF_H265 * NUM_SLIST_BUF_H265; + u32 frame_info =3D H265_NUM_FRM_INFO * H265_DISPLAY_BUF_SIZE; + u32 tile_info =3D H265_NUM_TILE * sizeof(u32); + u32 per_pic =3D NUM_HW_PIC_BUF * + (SIZE_SEI_USERDATA + SIZE_SEI_USERDATA_UNREGISTERED + SIZE_H265D_A= RP + + SIZE_THREE_DIMENSION_USERDATA); + u32 dolby_rpu =3D rpu_enabled * NUM_HW_PIC_BUF * SIZE_DOLBY_RPU_METADATA; + + return ALIGN(slist_buf + frame_info + tile_info + per_pic + dolby_rpu, DM= A_ALIGNMENT); +} + +static u32 hfi_vpu5x_buffer_persist_av1d(u32 max_width, u32 max_height, u3= 2 total_ref_count) +{ + u32 comv_size =3D hfi_buffer_comv_av1d(max_width, max_height, total_ref_c= ount); + u32 seq_hdr =3D SIZE_AV1D_SEQUENCE_HEADER * 2 + SIZE_AV1D_METADATA; + u32 per_pic =3D AV1D_NUM_HW_PIC_BUF * + (SIZE_AV1D_TILE_OFFSET + SIZE_AV1D_QM + SIZE_AV1D_ARP + SIZE_AV1D_= METADATA); + u32 frame_hdr =3D AV1D_NUM_FRAME_HEADERS * + (SIZE_AV1D_FRAME_HEADER + 2 * SIZE_AV1D_PROB_TABLE); + + return ALIGN(seq_hdr + per_pic + frame_hdr + comv_size + HDR10_HIST_EXTRA= DATA_SIZE, + DMA_ALIGNMENT); +} + +static u32 iris_vpu5x_dec_persist_size(struct iris_inst *inst) +{ + struct platform_inst_caps *caps; + + if (inst->codec =3D=3D V4L2_PIX_FMT_H264) { + return hfi_buffer_persist_h264d(); + } else if (inst->codec =3D=3D V4L2_PIX_FMT_HEVC) { + return hfi_vpu5x_buffer_persist_h265d(0); + } else if (inst->codec =3D=3D V4L2_PIX_FMT_VP9) { + return hfi_vpu4x_buffer_persist_vp9d(); + } else if (inst->codec =3D=3D V4L2_PIX_FMT_AV1) { + caps =3D inst->core->iris_platform_data->inst_caps; + if (inst->fw_caps[DRAP].value) + return hfi_vpu5x_buffer_persist_av1d(caps->max_frame_width, + caps->max_frame_height, 16); + else + return hfi_vpu5x_buffer_persist_av1d(0, 0, 0); + } + + return 0; +} + static u32 size_se_lb(u32 standard, u32 num_vpp_pipes_enc, u32 frame_width_coded, u32 frame_height_coded) { @@ -2194,6 +2242,51 @@ u32 iris_vpu4x_buf_size(struct iris_inst *inst, enum= iris_buffer_type buffer_typ return size; } =20 +u32 iris_vpu5x_buf_size(struct iris_inst *inst, enum iris_buffer_type buff= er_type) +{ + const struct iris_vpu_buf_type_handle *buf_type_handle_arr =3D NULL; + u32 size =3D 0, buf_type_handle_size =3D 0, i; + + static const struct iris_vpu_buf_type_handle dec_internal_buf_type_handle= [] =3D { + {BUF_BIN, iris_vpu_dec_bin_size }, + {BUF_COMV, iris_vpu3x_4x_dec_comv_size }, + {BUF_NON_COMV, iris_vpu_dec_non_comv_size }, + {BUF_LINE, iris_vpu4x_dec_line_size }, + {BUF_PERSIST, iris_vpu5x_dec_persist_size }, + {BUF_DPB, iris_vpu_dec_dpb_size }, + {BUF_SCRATCH_1, iris_vpu_dec_scratch1_size }, + {BUF_PARTIAL, iris_vpu_dec_partial_size }, + }; + + static const struct iris_vpu_buf_type_handle enc_internal_buf_type_handle= [] =3D { + {BUF_BIN, iris_vpu_enc_bin_size }, + {BUF_COMV, iris_vpu_enc_comv_size }, + {BUF_NON_COMV, iris_vpu_enc_non_comv_size }, + {BUF_LINE, iris_vpu4x_enc_line_size }, + {BUF_ARP, iris_vpu_enc_arp_size }, + {BUF_VPSS, iris_vpu_enc_vpss_size }, + {BUF_SCRATCH_1, iris_vpu_enc_scratch1_size }, + {BUF_SCRATCH_2, iris_vpu_enc_scratch2_size }, + }; + + if (inst->domain =3D=3D DECODER) { + buf_type_handle_size =3D ARRAY_SIZE(dec_internal_buf_type_handle); + buf_type_handle_arr =3D dec_internal_buf_type_handle; + } else if (inst->domain =3D=3D ENCODER) { + buf_type_handle_size =3D ARRAY_SIZE(enc_internal_buf_type_handle); + buf_type_handle_arr =3D enc_internal_buf_type_handle; + } + + for (i =3D 0; i < buf_type_handle_size; i++) { + if (buf_type_handle_arr[i].type =3D=3D buffer_type) { + size =3D buf_type_handle_arr[i].handle(inst); + break; + } + } + + return size; +} + static u32 internal_buffer_count(struct iris_inst *inst, enum iris_buffer_type buffer_type) { diff --git a/drivers/media/platform/qcom/iris/iris_vpu_buffer.h b/drivers/m= edia/platform/qcom/iris/iris_vpu_buffer.h index 8c0d6b7b5de85f7d7aaa8fc36218e8d095419569..46210a2ec4942642ef61fc09cb0= cc414f109607f 100644 --- a/drivers/media/platform/qcom/iris/iris_vpu_buffer.h +++ b/drivers/media/platform/qcom/iris/iris_vpu_buffer.h @@ -64,6 +64,7 @@ struct iris_inst; #define VP9_UDC_HEADER_BUF_SIZE (3 * 128) =20 #define SIZE_SEI_USERDATA 4096 +#define SIZE_SEI_USERDATA_UNREGISTERED 256 #define SIZE_DOLBY_RPU_METADATA (41 * 1024) #define H264_CABAC_HDR_RATIO_HD_TOT 1 #define H264_CABAC_RES_RATIO_HD_TOT 3 @@ -116,11 +117,12 @@ struct iris_inst; #define SIZE_AV1D_TILE_OFFSET 65536 #define SIZE_AV1D_QM 3328 #define SIZE_AV1D_PROB_TABLE 22784 +#define SIZE_AV1D_ARP 9728 =20 #define SIZE_SLICE_CMD_BUFFER (ALIGN(20480, 256)) #define SIZE_SPS_PPS_SLICE_HDR (2048 + 4096) #define SIZE_BSE_SLICE_CMD_BUF ((((8192 << 2) + 7) & (~7)) * 3) -#define SIZE_LAMBDA_LUT (256 * 11) +#define SIZE_LAMBDA_LUT (256 * 13) =20 #define HFI_COL_FMT_NV12C_Y_TILE_HEIGHT (8) #define HFI_COL_FMT_NV12C_Y_TILE_WIDTH (32) @@ -288,6 +290,7 @@ static inline u32 size_av1d_qp(u32 frame_width, u32 fra= me_height) u32 iris_vpu_buf_size(struct iris_inst *inst, enum iris_buffer_type buffer= _type); u32 iris_vpu33_buf_size(struct iris_inst *inst, enum iris_buffer_type buff= er_type); u32 iris_vpu4x_buf_size(struct iris_inst *inst, enum iris_buffer_type buff= er_type); +u32 iris_vpu5x_buf_size(struct iris_inst *inst, enum iris_buffer_type buff= er_type); int iris_vpu_buf_count(struct iris_inst *inst, enum iris_buffer_type buffe= r_type); =20 #endif --=20 2.43.0 From nobody Fri Sep 25 01:22:50 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 1C6443F3277 for ; Fri, 18 Sep 2026 04:29:33 +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=1789705775; cv=none; b=XRC7HbjIrjMmV2aneVIGqu1YDR49XO+jfg1EmsX84mnR1jH51xyfN8fH3y2S8EojMLlgdbRwYpGupGFU/WwBY4IMFk1zsGEjfnDNX3OYzSYlHBrO/HEw18XuaXGgXbilseCNRwnAL2pQv9JiDrqYBfrKutN2fj5W+NbqQE5IzAs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789705775; c=relaxed/simple; bh=VDncICb4cyA2swdK3ezYrt+ezqlf7ozvYxBHzhEQoVk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=aUUQCgJAnBYmIi17+dPeWmXJsi1EWewvL9T4RARFNy4D0ilpStqL+o2mPIHzn6BFCCsMyIpWjn7i2I+yG+aKCSNoxq//Uz5TrQvc/pqdnBXfBBelTO+mSvZ0ma09P8G9pcYmp5bufgRouZI0Tq8/aMijHEkfFpIpRpKbvRXtMYU= 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=Zws8HyDo; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=eDZF9aR+; 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="Zws8HyDo"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="eDZF9aR+" Received: from pps.filterd (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 68I2VDOJ4104955 for ; Fri, 18 Sep 2026 04:29:32 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= IbRfDSJoMUHlkBQLK0yHnHTYPiVwydvfPWthJ49O4cA=; b=Zws8HyDo3suRXQDt kTImm9n1+zXC4X1NRtqCg1wQ8kYu3hFWlMkHr/E3CEUrHc92zvrjjN54XtU5xlSn ntT+TmX6rk+D6xsYfh2DY9QYlGXU2WQrcYF7XciRmiyMjAUQO52lhfagwdynG+w+ eYTytoCOKKbVV1L06wzn//9ZsSzn6E8SmjsdwFbBrj5RxcF9OoLCayCatL3c/o/F meSJOIeIZ7GmnBZoAa8vRvERLljc6GmCYBmia4McSGPeDhXyy0faSmrGusfFttNb BQLQDZY0J05ze0jr/usw9XEm/aYLnQtpF4r8Q6ZDYot93CjfNLilwIc4ZKLlceEZ 8zRdMQ== Received: from mail-pg1-f198.google.com (mail-pg1-f198.google.com [209.85.215.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4grhs6kdq9-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 18 Sep 2026 04:29:32 +0000 (GMT) Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-c89704da8c7so412505a12.0 for ; Thu, 17 Sep 2026 21:29:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1789705772; x=1790310572; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=IbRfDSJoMUHlkBQLK0yHnHTYPiVwydvfPWthJ49O4cA=; b=eDZF9aR+UsJpL+y0WoKeVMOlL/MyP7q7qo859PBLH+ht59Wc0QKWnwr7VPUo3DZTTL BhYXfdvP7YX+Ne0zvinl/uOjr4CcdPI25jkdxSUlHvF55plN1lwQ2Oz1x/G13qUJkSab ZoU0EEgdG9wNItyCsYtDB3ZIB0CCzhIMevpcC6dU3v6rNt1MLvIJ8OEkA9pbnrymRIZg PVLdIytVm6aoKKg//67pRWAgm5jbqcS8zRwV8dRapR4q7YK/IomiNck2iahxVeeHrUHY NJ2/P5LrTmMacHJfWvKp5P5HQjuZKNuTojHXkEWR6JQXcZsNbDNWEZN1wOAY+GQ0bW04 dgZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789705772; x=1790310572; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=IbRfDSJoMUHlkBQLK0yHnHTYPiVwydvfPWthJ49O4cA=; b=KDKOettJB2gIcfT67J/c8wWjSFyqngHoiVDRokbUGRQIwS8TjmLdSXMRaNSl9aIYJV lymn6sOwjyNJriVxUdTHNNTa0vrOIabfCLluqNyBPkiMVIpreR7enivDTI9lGvRmZl4o ST9DaLjw06h/tAivtyas4dSqwyotFUKBhq/QMSXZ36dAw8/h+JV4u0TIvKRUbiWL1rXB zrHvT1FgOQiC1btALF9gZ8amrPTujRqjq4/icFNiv3ZjRBPwfL4fqrOC7I1UDc7tAnkY akivwd01/Q4EJC2TIzurTr5SdwNIol9lF2JJpHNmt/C/WYnYgTIwpJq0mr0l3YWJn8Hc Ejwg== X-Forwarded-Encrypted: i=1; AKwUvBzcd6hC2nR/ufqYiwJUYHwPQWMuM6vxBq1abyjl3nWWZEIOBazvzaAdj1LSvIP+9aDNMs3sQ/Uf96XDt5A=@vger.kernel.org X-Gm-Message-State: AFuF++mbZPcUeACN/sAuIZpbW9ei9pbQ0FDZSRKZL0rBEf+b8seLjzSw PumXdfzH1vDhFJBe5oHia3bdE2ezB5ny6TYcC2LQcdvVQnucq2YK3zYUj8H6EIZcrmbq98zIYxk VcrExLVoqt/fbZ9YgO07zXB804DclQXaW7Y3Wl0g4/KrHZ5/1gzhT2cQ5F8tFWyhnctk= X-Gm-Gg: AYBFou3arWDYZJAJmD9x1C9vYqOoVKcYGdPlbTuo2X9JF7s8lxW9GvIXMsJtTqHa+id SSRPbIGNXcRszVxcHOxP2rJzpoZXrz6taktuzCTsAcahlMHw4rQhSBEwyhc0DKwMl19VjDM0COW KvM3Hf80c3VYFOYKvn72z3t/V4BJdBuKQAaudM6mAdJpa9Es8hkK0APY8vx/3BRcvLn3hQoR1Pb Uh5wykPNYNrnhbMle6/w2lXl2eEbSRK1OKQ3XQhnCVkbp39hTKnlx/6hyFM0opvWLnd06E1VDc3 tI/mL0rV4y/BNJ+aV0GfW0QI5cIJrPDq0qhvbgEIjZ+EiQOnUjbQY9FZHlPfoEjjHUKLp6cicIM ieMeaJgVT2G8JwjJoH6P698LwteqMy1A= X-Received: by 2002:a05:6300:2204:b0:3cd:67e9:8565 with SMTP id adf61e73a8af0-3dd8c32eefbmr2992406637.9.1789705771693; Thu, 17 Sep 2026 21:29:31 -0700 (PDT) X-Received: by 2002:a05:6300:2204:b0:3cd:67e9:8565 with SMTP id adf61e73a8af0-3dd8c32eefbmr2992368637.9.1789705771292; Thu, 17 Sep 2026 21:29:31 -0700 (PDT) Received: from WANGAOW-LAB01.ap.qualcomm.com ([114.94.8.21]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cc5c4dba322sm214595a12.10.2026.09.17.21.29.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Sep 2026 21:29:30 -0700 (PDT) From: Wangao Wang Date: Fri, 18 Sep 2026 12:28:45 +0800 Subject: [PATCH 6/6] media: iris: add hawi platform data 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: <20260918-add_iris_for_hawi-v1-6-ac60fd15c98b@oss.qualcomm.com> References: <20260918-add_iris_for_hawi-v1-0-ac60fd15c98b@oss.qualcomm.com> In-Reply-To: <20260918-add_iris_for_hawi-v1-0-ac60fd15c98b@oss.qualcomm.com> To: Vikash Garodia , Dikshita Agarwal , Bryan O'Donoghue , Mauro Carvalho Chehab , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Stanimir Varbanov , Abhinav Kumar , Philipp Zabel Cc: linux-arm-msm@vger.kernel.org, linux-media@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Wangao Wang X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1789705735; l=7690; i=wangao.wang@oss.qualcomm.com; s=20251021; h=from:subject:message-id; bh=VDncICb4cyA2swdK3ezYrt+ezqlf7ozvYxBHzhEQoVk=; b=9fqMmz8gkGU8HFLEiNafn8acCjlby+d9fKhH0CuKWRlk1ON3CBRB4k6dHh9caFzF657X63hb7 k/LFK8v3k+hBrQ5xt1jr8x8hHuUfTFjHT1TfaKuj6Ml7rNir74XrUfe X-Developer-Key: i=wangao.wang@oss.qualcomm.com; a=ed25519; pk=bUPgYblBUAsoPyGfssbNR7ZXUSGF8v1VF4FJzSO6/aA= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTE4MDA1NiBTYWx0ZWRfXxURx9vuJpBSS IADVHSmhD3S9Q1SfMlgHFPrQ0OB3XXcLk4TI7UUmOQvZ6XeJ+ExHmFiLIpBJ22Dn0Lg9/xaPQAs J/q+MP/F5I75iwAu6EVGhHaD0Q6lmCwaXoSh4C0IvIp/pRdcnNTqL+sbzSKAk/S8hjbXIa3cOMB TzLeXVWtPfO070h0Een1bm1cPiNP/R5pcuxvICOGnXS7E5X7CIJYnqXOkQMwNHluJdNg4y+6eOI dACTYbCLq9CjZiEMQRat8AAta69VXU0ZHbr8H6C7/rAv+/NR7ZYMRpeRjZTO0/ru1r+gVFHsuRd 4UriBP8MEfylvbO4gOTh7UBk3apf0CnseLc3N4w93UqRsEkdnT+QMNXs4h4At/rQzONmVASuDWm k8F28Jp6QgVKu4er7PoIwRb2Na++4CKMkK2OUclNgZT5SJK3ocks9TA23xWI3fHJVrGHGzDB1qv oYtxMJVPu6wNT8e5dyg== X-Proofpoint-GUID: zAeQvCwN2p01AUWxkj1dnPy3hGulek0R X-Proofpoint-Spam-Info: AW1haW4tMjYwOTE4MDA1NiBTYWx0ZWRfX5zVmC+1A//by gnFpXw3fWIVC5caHEwJg0gCNdEeeigRASOcUDQFSuYy5+Ztn+8bXXj5jnEjzNA+pJNdRDvkZmLF JbVDRb8sTT489f6zmJFp3vK7E3PU4XI= X-Proofpoint-ORIG-GUID: zAeQvCwN2p01AUWxkj1dnPy3hGulek0R X-Authority-Analysis: v=2.4 cv=cvwOAF4i c=1 sm=1 tr=0 ts=6aacbe2c cx=c_pps a=Qgeoaf8Lrialg5Z894R3/Q==:117 a=Uz3yg00KUFJ2y2WijEJ4bw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=3WHJM1ZQz_JShphwDgj5:22 a=EUspDBNiAAAA:8 a=f3iahYxl3_2vxJznN8gA:9 a=QEXdDO2ut3YA:10 a=x9snwWr2DeNwDh03kgHS:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-18_01,2026-09-16_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 malwarescore=0 adultscore=0 spamscore=0 suspectscore=0 lowpriorityscore=0 clxscore=1015 impostorscore=0 phishscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2609040000 definitions=main-2609180056 The Iris block in the Hawi SoC is a VPU5 capable of decoding H.264, H.265, VP9 and AV1, and encoding H.264 and H.265. Add the platform data entry describing the Hawi-specific clock tree, power domains, firmware image, bandwidth table, DMA address range, and secure memory regions so the Iris driver can match the qcom,hawi-iris compatible and initialize the hardware. Signed-off-by: Wangao Wang --- drivers/media/platform/qcom/iris/Makefile | 1 + .../platform/qcom/iris/iris_platform_common.h | 4 + .../media/platform/qcom/iris/iris_platform_hawi.h | 48 ++++++++++++ .../media/platform/qcom/iris/iris_platform_vpu5.c | 86 ++++++++++++++++++= ++++ drivers/media/platform/qcom/iris/iris_probe.c | 4 + 5 files changed, 143 insertions(+) diff --git a/drivers/media/platform/qcom/iris/Makefile b/drivers/media/plat= form/qcom/iris/Makefile index 3ca4db45cb07323bdc18e5aba99ec7195087fe73..6c6f11184a1d0e46786e9aeebed= 5b79ee414aa15 100644 --- a/drivers/media/platform/qcom/iris/Makefile +++ b/drivers/media/platform/qcom/iris/Makefile @@ -14,6 +14,7 @@ qcom-iris-objs +=3D iris_buffer.o \ iris_hfi_queue.o \ iris_platform_vpu2.o \ iris_platform_vpu3x.o \ + iris_platform_vpu5.o \ iris_power.o \ iris_probe.o \ iris_resources.o \ diff --git a/drivers/media/platform/qcom/iris/iris_platform_common.h b/driv= ers/media/platform/qcom/iris/iris_platform_common.h index 193e6f293cda5462ecca9acc0ebc79c936b68bb4..67f79cf86136f4e2374467b436c= b43438cd02d6c 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_common.h +++ b/drivers/media/platform/qcom/iris/iris_platform_common.h @@ -39,6 +39,9 @@ struct iris_inst; #define MAX_HEVC_VBR_LAYER_HP_SLIDING_WINDOW 5 #define MAX_HIER_CODING_LAYER_GEN1 6 =20 +#define VIDEO_REGION_VM0_SECURE_NP_ID 1 +#define VIDEO_REGION_VM0_NONSECURE_NP_ID 5 + enum stage_type { STAGE_1 =3D 1, STAGE_2 =3D 2, @@ -54,6 +57,7 @@ extern const struct iris_firmware_data iris_hfi_gen1_data; extern const struct iris_firmware_data iris_hfi_gen2_data; extern const struct iris_firmware_data iris_hfi_milos_data; =20 +extern const struct iris_platform_data hawi_data; extern const struct iris_platform_data milos_data; extern const struct iris_platform_data qcs8300_data; extern const struct iris_platform_data sc7280_data; diff --git a/drivers/media/platform/qcom/iris/iris_platform_hawi.h b/driver= s/media/platform/qcom/iris/iris_platform_hawi.h new file mode 100644 index 0000000000000000000000000000000000000000..90d9282ce59821489c941d7282b= 3f23e8c06622e --- /dev/null +++ b/drivers/media/platform/qcom/iris/iris_platform_hawi.h @@ -0,0 +1,48 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + */ + +#ifndef __MEDIA_IRIS_PLATFORM_HAWI_H__ +#define __MEDIA_IRIS_PLATFORM_HAWI_H__ + +static const char * const hawi_clk_reset_table[] =3D { + "bus0", + "core", +}; + +static const struct platform_clk_data hawi_clk_table[] =3D { + {IRIS_AXI_CLK, "iface" }, + {IRIS_AXIC_CLK, "ifacec" }, + {IRIS_CTRL_CLK, "core" }, + {IRIS_HW_FREERUN_CLK, "core_freerun" }, + {IRIS_CTRL_FREERUN_CLK, "core_ctl_freerun" }, + {IRIS_CTRL_DEBUG_CLK, "core_debug" }, + {IRIS_CX_AXI_CLK, "cx_iface" }, + {IRIS_HW_CLK, "vcodec0_core" }, + {IRIS_VPP0_HW_CLK, "vcodec_vpp0" }, + {IRIS_VPP1_HW_CLK, "vcodec_vpp1" }, + {IRIS_VPP_GATING_CLK, "vcodec_vpp0_vpp1_gating" }, + {IRIS_APV_HW_CLK, "vcodec_apv" }, + {IRIS_BSE_HW_CLK, "vcodec_bse" }, +}; + +static const char *const hawi_opp_clk_table[] =3D { + "vcodec0_core", + "vcodec_apv", + "vcodec_bse", + "core", + NULL, +}; + +static const char * const hawi_pmdomain_table[] =3D { + "venus", + "vcodec0", + "vpp0", + "vpp1", + "apv", + "mm-int", + "cx-int", +}; + +#endif diff --git a/drivers/media/platform/qcom/iris/iris_platform_vpu5.c b/driver= s/media/platform/qcom/iris/iris_platform_vpu5.c new file mode 100644 index 0000000000000000000000000000000000000000..0240b4dad6ad483feaad480a35c= 365c7a211ac42 --- /dev/null +++ b/drivers/media/platform/qcom/iris/iris_platform_vpu5.c @@ -0,0 +1,86 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + */ + +#include "iris_core.h" +#include "iris_ctrls.h" +#include "iris_hfi_gen2.h" +#include "iris_hfi_gen2_defines.h" +#include "iris_platform_common.h" +#include "iris_vpu_buffer.h" +#include "iris_vpu_common.h" + +#include "iris_platform_sm8550.h" +#include "iris_platform_hawi.h" + +static const struct iris_firmware_desc iris_vpu50_p2_s8_gen2_desc =3D { + .firmware_data =3D &iris_hfi_gen2_data, + .get_vpu_buffer_size =3D iris_vpu5x_buf_size, + .fwname =3D "qcom/vpu/vpu50_p2_s8.mbn", +}; + +static const u32 iris_fmts_vpu5_dec[] =3D { + [IRIS_FMT_H264] =3D V4L2_PIX_FMT_H264, + [IRIS_FMT_HEVC] =3D V4L2_PIX_FMT_HEVC, + [IRIS_FMT_VP9] =3D V4L2_PIX_FMT_VP9, + [IRIS_FMT_AV1] =3D V4L2_PIX_FMT_AV1, +}; + +static const struct icc_info iris_icc_info_vpu5[] =3D { + { "cpu-cfg", 1000, 1000 }, + { "video-mem", 1000, 15000000 }, +}; + +static const struct bw_info iris_bw_table_dec_vpu5[] =3D { + { ((4096 * 2160) / 256) * 60, 1608000 }, + { ((4096 * 2160) / 256) * 30, 826000 }, + { ((1920 * 1080) / 256) * 60, 567000 }, + { ((1920 * 1080) / 256) * 30, 294000 }, +}; + +static const char * const iris_opp_pd_table_vpu5[] =3D { "mxc", "mmcx" }; + +static const struct tz_cp_config tz_cp_config_vpu5[] =3D { + { + .cp_start =3D VIDEO_REGION_VM0_SECURE_NP_ID, + .cp_size =3D 0, + .cp_nonpixel_start =3D 0x0d000000, + .cp_nonpixel_size =3D 0x25000000, + }, + { + .cp_start =3D VIDEO_REGION_VM0_NONSECURE_NP_ID, + .cp_size =3D 0, + .cp_nonpixel_start =3D 0x32000000, + .cp_nonpixel_size =3D 0xcdc00000, + }, +}; + +const struct iris_platform_data hawi_data =3D { + .firmware_desc_gen2 =3D &iris_vpu50_p2_s8_gen2_desc, + .vpu_ops =3D &iris_vpu5x_ops, + .icc_tbl =3D iris_icc_info_vpu5, + .icc_tbl_size =3D ARRAY_SIZE(iris_icc_info_vpu5), + .clk_rst_tbl =3D hawi_clk_reset_table, + .clk_rst_tbl_size =3D ARRAY_SIZE(hawi_clk_reset_table), + .bw_tbl_dec =3D iris_bw_table_dec_vpu5, + .bw_tbl_dec_size =3D ARRAY_SIZE(iris_bw_table_dec_vpu5), + .pmdomain_tbl =3D hawi_pmdomain_table, + .pmdomain_tbl_size =3D ARRAY_SIZE(hawi_pmdomain_table), + .opp_pd_tbl =3D iris_opp_pd_table_vpu5, + .opp_pd_tbl_size =3D ARRAY_SIZE(iris_opp_pd_table_vpu5), + .clk_tbl =3D hawi_clk_table, + .clk_tbl_size =3D ARRAY_SIZE(hawi_clk_table), + .opp_clk_tbl =3D hawi_opp_clk_table, + /* Upper bound of DMA address range */ + .dma_mask =3D 0xffc00000 - 1, + .inst_iris_fmts =3D iris_fmts_vpu5_dec, + .inst_iris_fmts_size =3D ARRAY_SIZE(iris_fmts_vpu5_dec), + .inst_caps =3D &platform_inst_cap_sm8550, + .tz_cp_config_data =3D tz_cp_config_vpu5, + .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_vpu5), + .num_vpp_pipe =3D 2, + .max_session_count =3D 16, + .max_core_mbpf =3D NUM_MBS_8K * 2, + .max_core_mbps =3D NUM_MBS_8K * 60, +}; diff --git a/drivers/media/platform/qcom/iris/iris_probe.c b/drivers/media/= platform/qcom/iris/iris_probe.c index 4bdb078d83b5c331869dab2409bc4d10ab302737..3512ad7cad4ae9fc07d21bad339= 176ed959e3dc4 100644 --- a/drivers/media/platform/qcom/iris/iris_probe.c +++ b/drivers/media/platform/qcom/iris/iris_probe.c @@ -427,6 +427,10 @@ static const struct dev_pm_ops iris_pm_ops =3D { }; =20 static const struct of_device_id iris_dt_match[] =3D { + { + .compatible =3D "qcom,hawi-iris", + .data =3D &hawi_data, + }, { .compatible =3D "qcom,milos-iris", .data =3D &milos_data, --=20 2.43.0