From nobody Tue Nov 26 05:30:41 2024 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 77A8A1E7C2F; Mon, 21 Oct 2024 11:55:28 +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=1729511731; cv=none; b=YI4VzcgC3GoFY61gIwL/y+2UlJdLTL/6ok1mNecq/4m8UznySac05iBrR+dOuAtelTDznjEOMpJ9Kwgs1zANBD0R5Fg2b7zFb9Ft+84eZybR7b/CjTlATpo+ODKsjoVq/SDDAxCHjUIYjRvK2e1ibCE8/Ja+ZC/HhRW1ZATSH3U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729511731; c=relaxed/simple; bh=nUaM3nydXm+xXawjJg2+uJIKNRDcRbVCNFUNy4eJ4Ec=; h=From:Date:Subject:MIME-Version:Content-Type:Message-ID:References: In-Reply-To:To:CC; b=f6umTR3zDeAzmU0flZPMfsNKy46nzrf5CSssLBoIgyEcyyLTT714yqPs1nDU5KCja/fgoNkekUcDa21a/RzileR9LAFj/9QHIpJmV5PW6gyEPucCrgwlQ1JFhaC7gjV0Z5bD04CySXMGasCtlrkNk3zd8L9EIsMPA4M/X05FISQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=quicinc.com; spf=pass smtp.mailfrom=quicinc.com; dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com header.b=eqc70qhH; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=quicinc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=quicinc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com header.b="eqc70qhH" Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 49LAW3Ff018531; Mon, 21 Oct 2024 11:55:15 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= DsHGbttRTuxU/2VzAo+IhTKWXSK6V2xwBTuD/xvjaVc=; b=eqc70qhHOUZQHPM1 cMD5SFmx7C37F48zMq++3YjU8jIrNi9CLso7N9LsHo4wuywe/1iibdcmX7EYaCIU SZDllJGH1hFVj5enC4QPhTruo9nPhNEq82B/ZTUNMo6lgabfsnrHZRnfGEGNimQh 4T6FYy42enTw7zaSADZrUI0sm+2mie5J+DIS0Wr0R44CaxWTsmNQYQithNzz52UT rPs+IHUjR+kwOLzmJvzPawOfcg8m+Gd3Feu8R/qyRHHHJ19fu1cUiEs0aInLshOn 5HYqBbErMgYPEQlTcMd9nxDoGvza/bgVHw4p8nkfXH8jSB4ECeSDDbBS6sIzSL+d pU+Jjw== Received: from nalasppmta05.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 42c6vuvm3n-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 21 Oct 2024 11:55:15 +0000 (GMT) Received: from nalasex01a.na.qualcomm.com (nalasex01a.na.qualcomm.com [10.47.209.196]) by NALASPPMTA05.qualcomm.com (8.18.1.2/8.18.1.2) with ESMTPS id 49LBtEhr008817 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 21 Oct 2024 11:55:14 GMT Received: from [10.213.111.143] (10.80.80.8) by nalasex01a.na.qualcomm.com (10.47.209.196) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.9; Mon, 21 Oct 2024 04:55:08 -0700 From: Akhil P Oommen Date: Mon, 21 Oct 2024 17:23:42 +0530 Subject: [PATCH v2 1/3] drm/msm/adreno: Add support for ACD 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: <20241021-gpu-acd-v2-1-9c25a62803bc@quicinc.com> References: <20241021-gpu-acd-v2-0-9c25a62803bc@quicinc.com> In-Reply-To: <20241021-gpu-acd-v2-0-9c25a62803bc@quicinc.com> To: Rob Clark , Sean Paul , "Konrad Dybcio" , Abhinav Kumar , Dmitry Baryshkov , Marijn Suijten , David Airlie , "Simona Vetter" , Viresh Kumar , Nishanth Menon , Stephen Boyd , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Akhil P Oommen , Bjorn Andersson CC: , , , , , X-Mailer: b4 0.14.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1729511702; l=7012; i=quic_akhilpo@quicinc.com; s=20240726; h=from:subject:message-id; bh=nUaM3nydXm+xXawjJg2+uJIKNRDcRbVCNFUNy4eJ4Ec=; b=7slAZOeaHj7rrrTbpCCeWyQ4bpw7sSverrGZhl+fIQn7XLFIHe5EZ4YGDsbr9wEeTblA6H/rj RsWr4u7LnxPA2oBH6hKo6qOOh02Z9u4N/MGwyHzOHskQkjtirSQ5O1/ X-Developer-Key: i=quic_akhilpo@quicinc.com; a=ed25519; pk=lmVtttSHmAUYFnJsQHX80IIRmYmXA4+CzpGcWOOsfKA= X-ClientProxiedBy: nasanex01a.na.qualcomm.com (10.52.223.231) To nalasex01a.na.qualcomm.com (10.47.209.196) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-ORIG-GUID: LKvnhEt_XkcVLVStIU236bkn_1jn7NQD X-Proofpoint-GUID: LKvnhEt_XkcVLVStIU236bkn_1jn7NQD X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.680,FMLib:17.12.60.29 definitions=2024-09-06_09,2024-09-06_01,2024-09-02_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 phishscore=0 mlxlogscore=999 bulkscore=0 spamscore=0 mlxscore=0 clxscore=1015 suspectscore=0 priorityscore=1501 adultscore=0 lowpriorityscore=0 impostorscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2409260000 definitions=main-2410210084 ACD a.k.a Adaptive Clock Distribution is a feature which helps to reduce the power consumption. In some chipsets, it is also a requirement to support higher GPU frequencies. This patch adds support for GPU ACD by sending necessary data to GMU and AOSS. The feature support for the chipset is detected based on devicetree data. Signed-off-by: Akhil P Oommen --- drivers/gpu/drm/msm/adreno/a6xx_gmu.c | 81 ++++++++++++++++++++++++++++---= ---- drivers/gpu/drm/msm/adreno/a6xx_gmu.h | 1 + drivers/gpu/drm/msm/adreno/a6xx_hfi.c | 36 ++++++++++++++++ drivers/gpu/drm/msm/adreno/a6xx_hfi.h | 21 +++++++++ 4 files changed, 124 insertions(+), 15 deletions(-) diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c b/drivers/gpu/drm/msm/ad= reno/a6xx_gmu.c index 37927bdd6fbe..09fb3f397dbb 100644 --- a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c +++ b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c @@ -1021,14 +1021,6 @@ int a6xx_gmu_resume(struct a6xx_gpu *a6xx_gpu) =20 gmu->hung =3D false; =20 - /* Notify AOSS about the ACD state (unimplemented for now =3D> disable it= ) */ - if (!IS_ERR(gmu->qmp)) { - ret =3D qmp_send(gmu->qmp, "{class: gpu, res: acd, val: %d}", - 0 /* Hardcode ACD to be disabled for now */); - if (ret) - dev_err(gmu->dev, "failed to send GPU ACD state\n"); - } - /* Turn on the resources */ pm_runtime_get_sync(gmu->dev); =20 @@ -1476,6 +1468,64 @@ static int a6xx_gmu_pwrlevels_probe(struct a6xx_gmu = *gmu) return a6xx_gmu_rpmh_votes_init(gmu); } =20 +static int a6xx_gmu_acd_probe(struct a6xx_gmu *gmu) +{ + struct a6xx_gpu *a6xx_gpu =3D container_of(gmu, struct a6xx_gpu, gmu); + struct a6xx_hfi_acd_table *cmd =3D &gmu->acd_table; + struct adreno_gpu *adreno_gpu =3D &a6xx_gpu->base; + struct msm_gpu *gpu =3D &adreno_gpu->base; + int ret, i, cmd_idx =3D 0; + + cmd->version =3D 1; + cmd->stride =3D 1; + cmd->enable_by_level =3D 0; + + /* Skip freq =3D 0 and parse acd-level for rest of the OPPs */ + for (i =3D 1; i < gmu->nr_gpu_freqs; i++) { + struct dev_pm_opp *opp; + struct device_node *np; + unsigned long freq; + u32 val; + + freq =3D gmu->gpu_freqs[i]; + opp =3D dev_pm_opp_find_freq_exact(&gpu->pdev->dev, freq, true); + np =3D dev_pm_opp_get_of_node(opp); + + ret =3D of_property_read_u32(np, "qcom,opp-acd-level", &val); + of_node_put(np); + dev_pm_opp_put(opp); + if (ret =3D=3D -EINVAL) + continue; + else if (ret) { + DRM_DEV_ERROR(gmu->dev, "Unable to read acd level for freq %lu\n", freq= ); + return ret; + } + + cmd->enable_by_level |=3D BIT(i); + cmd->data[cmd_idx++] =3D val; + } + + cmd->num_levels =3D cmd_idx; + + /* We are done here if ACD is not required for any of the OPPs */ + if (!cmd->enable_by_level) + return 0; + + /* Initialize qmp node to talk to AOSS */ + gmu->qmp =3D qmp_get(gmu->dev); + if (IS_ERR(gmu->qmp)) { + cmd->enable_by_level =3D 0; + return dev_err_probe(gmu->dev, PTR_ERR(gmu->qmp), "Failed to initialize = qmp\n"); + } + + /* Notify AOSS about the ACD state */ + ret =3D qmp_send(gmu->qmp, "{class: gpu, res: acd, val: %d}", 1); + if (ret) + DRM_DEV_ERROR(gmu->dev, "failed to send GPU ACD state\n"); + + return 0; +} + static int a6xx_gmu_clocks_probe(struct a6xx_gmu *gmu) { int ret =3D devm_clk_bulk_get_all(gmu->dev, &gmu->clocks); @@ -1792,12 +1842,6 @@ int a6xx_gmu_init(struct a6xx_gpu *a6xx_gpu, struct = device_node *node) goto detach_cxpd; } =20 - gmu->qmp =3D qmp_get(gmu->dev); - if (IS_ERR(gmu->qmp) && adreno_is_a7xx(adreno_gpu)) { - ret =3D PTR_ERR(gmu->qmp); - goto remove_device_link; - } - init_completion(&gmu->pd_gate); complete_all(&gmu->pd_gate); gmu->pd_nb.notifier_call =3D cxpd_notifier_cb; @@ -1811,6 +1855,10 @@ int a6xx_gmu_init(struct a6xx_gpu *a6xx_gpu, struct = device_node *node) /* Get the power levels for the GMU and GPU */ a6xx_gmu_pwrlevels_probe(gmu); =20 + ret =3D a6xx_gmu_acd_probe(gmu); + if (ret) + goto detach_gxpd; + /* Set up the HFI queues */ a6xx_hfi_init(gmu); =20 @@ -1821,7 +1869,10 @@ int a6xx_gmu_init(struct a6xx_gpu *a6xx_gpu, struct = device_node *node) =20 return 0; =20 -remove_device_link: +detach_gxpd: + if (!IS_ERR_OR_NULL(gmu->gxpd)) + dev_pm_domain_detach(gmu->gxpd, false); + device_link_del(link); =20 detach_cxpd: diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gmu.h b/drivers/gpu/drm/msm/ad= reno/a6xx_gmu.h index 94b6c5cab6f4..2690511149ed 100644 --- a/drivers/gpu/drm/msm/adreno/a6xx_gmu.h +++ b/drivers/gpu/drm/msm/adreno/a6xx_gmu.h @@ -81,6 +81,7 @@ struct a6xx_gmu { int nr_gpu_freqs; unsigned long gpu_freqs[16]; u32 gx_arc_votes[16]; + struct a6xx_hfi_acd_table acd_table; =20 int nr_gmu_freqs; unsigned long gmu_freqs[4]; diff --git a/drivers/gpu/drm/msm/adreno/a6xx_hfi.c b/drivers/gpu/drm/msm/ad= reno/a6xx_hfi.c index cdb3f6e74d3e..af94e339188b 100644 --- a/drivers/gpu/drm/msm/adreno/a6xx_hfi.c +++ b/drivers/gpu/drm/msm/adreno/a6xx_hfi.c @@ -659,6 +659,38 @@ static int a6xx_hfi_send_bw_table(struct a6xx_gmu *gmu) NULL, 0); } =20 +#define HFI_FEATURE_ACD 12 + +static int a6xx_hfi_enable_acd(struct a6xx_gmu *gmu) +{ + struct a6xx_hfi_acd_table *acd_table =3D &gmu->acd_table; + struct a6xx_hfi_msg_feature_ctrl msg =3D { + .feature =3D HFI_FEATURE_ACD, + .enable =3D 1, + .data =3D 0, + }; + int ret; + + if (!acd_table->enable_by_level) + return 0; + + /* Enable ACD feature at GMU */ + ret =3D a6xx_hfi_send_msg(gmu, HFI_H2F_FEATURE_CTRL, &msg, sizeof(msg), N= ULL, 0); + if (ret) { + DRM_DEV_ERROR(gmu->dev, "Unable to enable ACD (%d)\n", ret); + return ret; + } + + /* Send ACD table to GMU */ + ret =3D a6xx_hfi_send_msg(gmu, HFI_H2F_MSG_ACD, &msg, sizeof(msg), NULL, = 0); + if (ret) { + DRM_DEV_ERROR(gmu->dev, "Unable to ACD table (%d)\n", ret); + return ret; + } + + return 0; +} + static int a6xx_hfi_send_test(struct a6xx_gmu *gmu) { struct a6xx_hfi_msg_test msg =3D { 0 }; @@ -756,6 +788,10 @@ int a6xx_hfi_start(struct a6xx_gmu *gmu, int boot_stat= e) if (ret) return ret; =20 + ret =3D a6xx_hfi_enable_acd(gmu); + if (ret) + return ret; + ret =3D a6xx_hfi_send_core_fw_start(gmu); if (ret) return ret; diff --git a/drivers/gpu/drm/msm/adreno/a6xx_hfi.h b/drivers/gpu/drm/msm/ad= reno/a6xx_hfi.h index 528110169398..51864c8ad0e6 100644 --- a/drivers/gpu/drm/msm/adreno/a6xx_hfi.h +++ b/drivers/gpu/drm/msm/adreno/a6xx_hfi.h @@ -151,12 +151,33 @@ struct a6xx_hfi_msg_test { u32 header; }; =20 +#define HFI_H2F_MSG_ACD 7 +#define MAX_ACD_STRIDE 2 + +struct a6xx_hfi_acd_table { + u32 header; + u32 version; + u32 enable_by_level; + u32 stride; + u32 num_levels; + u32 data[16 * MAX_ACD_STRIDE]; +}; + #define HFI_H2F_MSG_START 10 =20 struct a6xx_hfi_msg_start { u32 header; }; =20 +#define HFI_H2F_FEATURE_CTRL 11 + +struct a6xx_hfi_msg_feature_ctrl { + u32 header; + u32 feature; + u32 enable; + u32 data; +}; + #define HFI_H2F_MSG_CORE_FW_START 14 =20 struct a6xx_hfi_msg_core_fw_start { --=20 2.45.2 From nobody Tue Nov 26 05:30:41 2024 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 547791E907A; Mon, 21 Oct 2024 11:55:33 +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=1729511735; cv=none; b=R6SJJLeXGRZ7s+GarpgYlsHISbJLUMUCOm59jLbRt+onAh91WAJFUYeGrSbMNVEUDGHgymD9FfdXVN8fSEFj8fS2q6+fE7PA9RHcG9XFEdzoiPzSYbOx22rQ7h+7If59ExxfTYs/bSxTiVsgRYO59dOQ8B8HHVtJBg+/kmtinoE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729511735; c=relaxed/simple; bh=iNjDqrQmV+s1Qw90kkgq+wmuj4k0D5Ggzsx+vRIGRbk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-ID:References: In-Reply-To:To:CC; b=LnAMmapkrTXBwUdE/WPxWg65sTuLmUpXDLb0hxtgJdHFkpUUY9b3ND/ouUt63I1QzCaV/2BE3xjwh42Fe7spxPlFeNgyZfRl0V2lDFh69hf4kxMV0XjI/fp5i+6Hd5K0lnypRePclGLi+iFAj5igDV7sZPRKLr7A6dJxER/jSVA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=quicinc.com; spf=pass smtp.mailfrom=quicinc.com; dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com header.b=OMnKbRoK; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=quicinc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=quicinc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com header.b="OMnKbRoK" Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 49LA4aRf032205; Mon, 21 Oct 2024 11:55:21 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= jm8qmYE0qbYlBlDtYXO8HHGR2+G1tkkHvCXy2o1fEWA=; b=OMnKbRoKcfHIRLbW MIUyWwcTLGbEFQUUiKzQKfNqWt4wYW36tba2gtP6znR+ynnpk7BviYWAARthhUSH VviuXPhCFcV29r0HTxjBBflGqyVwv1BSYg9UXaRU4OUZupLOTP2r6AVT/YVHrcFN VeV+VbYEhgk72FBR6XgAjPnCVv2AK4Zy9cWgcNa2JWzFfDPHR5LYSO+0eqECcUu7 Phwc4oBrTQqsE8jKYp/5vygOHxLVIgXWr7zFgyiG8GFf/ViBmP8ciwbhJeMQ7Z1r OG825oFoy7EpRWvs4wWEn5TxMgFR2jv67XnwLfbSWk9ELbO39bxK2CuBdWfdYxT4 fIIrlw== Received: from nalasppmta03.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 42c6rbckt4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 21 Oct 2024 11:55:21 +0000 (GMT) Received: from nalasex01a.na.qualcomm.com (nalasex01a.na.qualcomm.com [10.47.209.196]) by NALASPPMTA03.qualcomm.com (8.18.1.2/8.18.1.2) with ESMTPS id 49LBtKrO011437 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 21 Oct 2024 11:55:20 GMT Received: from [10.213.111.143] (10.80.80.8) by nalasex01a.na.qualcomm.com (10.47.209.196) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.9; Mon, 21 Oct 2024 04:55:14 -0700 From: Akhil P Oommen Date: Mon, 21 Oct 2024 17:23:43 +0530 Subject: [PATCH v2 2/3] dt-bindings: opp: Add v2-qcom-adreno vendor bindings 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: <20241021-gpu-acd-v2-2-9c25a62803bc@quicinc.com> References: <20241021-gpu-acd-v2-0-9c25a62803bc@quicinc.com> In-Reply-To: <20241021-gpu-acd-v2-0-9c25a62803bc@quicinc.com> To: Rob Clark , Sean Paul , "Konrad Dybcio" , Abhinav Kumar , Dmitry Baryshkov , Marijn Suijten , David Airlie , "Simona Vetter" , Viresh Kumar , Nishanth Menon , Stephen Boyd , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Akhil P Oommen , Bjorn Andersson CC: , , , , , X-Mailer: b4 0.14.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1729511702; l=3814; i=quic_akhilpo@quicinc.com; s=20240726; h=from:subject:message-id; bh=iNjDqrQmV+s1Qw90kkgq+wmuj4k0D5Ggzsx+vRIGRbk=; b=wJG1rIcvvUXuHP9zLExo7bOp06CZYsNDqPkq5Zy9cwE4qopo2uNpmJILNcds5sf19MTD3yYvC dUJmStfjYgEDn534A+Gy5hr7tq97NF9YXvMBD4TH/NiiJcwj6iuLz8I X-Developer-Key: i=quic_akhilpo@quicinc.com; a=ed25519; pk=lmVtttSHmAUYFnJsQHX80IIRmYmXA4+CzpGcWOOsfKA= X-ClientProxiedBy: nasanex01a.na.qualcomm.com (10.52.223.231) To nalasex01a.na.qualcomm.com (10.47.209.196) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-ORIG-GUID: tjoC6_xN_7jA2JLqDaLZwcuWhjO1eMgb X-Proofpoint-GUID: tjoC6_xN_7jA2JLqDaLZwcuWhjO1eMgb X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.680,FMLib:17.12.60.29 definitions=2024-09-06_09,2024-09-06_01,2024-09-02_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 adultscore=0 malwarescore=0 mlxscore=0 suspectscore=0 spamscore=0 impostorscore=0 phishscore=0 mlxlogscore=999 lowpriorityscore=0 clxscore=1015 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2409260000 definitions=main-2410210085 Add a new schema which extends opp-v2 to support a new vendor specific property required for Adreno GPUs found in Qualcomm's SoCs. The new property called "qcom,opp-acd-level" carries a u32 value recommended for each opp needs to be shared to GMU during runtime. Cc: Rob Clark Signed-off-by: Akhil P Oommen --- .../bindings/opp/opp-v2-qcom-adreno.yaml | 96 ++++++++++++++++++= ++++ 1 file changed, 96 insertions(+) diff --git a/Documentation/devicetree/bindings/opp/opp-v2-qcom-adreno.yaml = b/Documentation/devicetree/bindings/opp/opp-v2-qcom-adreno.yaml new file mode 100644 index 000000000000..6d50c0405ef8 --- /dev/null +++ b/Documentation/devicetree/bindings/opp/opp-v2-qcom-adreno.yaml @@ -0,0 +1,96 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/opp/opp-v2-qcom-adreno.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Qualcomm Adreno compatible OPP supply + +description: + Adreno GPUs present in Qualcomm's Snapdragon chipsets uses an OPP specif= ic + ACD related information tailored for the specific chipset. This binding + provides the information needed to describe such a hardware value. + +maintainers: + - Rob Clark + +allOf: + - $ref: opp-v2-base.yaml# + +properties: + compatible: + items: + - const: operating-points-v2-adreno + - const: operating-points-v2 + +patternProperties: + '^opp-?[0-9]+$': + type: object + additionalProperties: false + + properties: + opp-hz: true + + opp-level: true + + opp-peak-kBps: true + + opp-supported-hw: true + + qcom,opp-acd-level: + description: | + A positive value representing the ACD (Adaptive Clock Distributi= on, + a fancy name for clk throttling during voltage droop) level asso= ciated + with this OPP node. This value is shared to a co-processor insid= e GPU + (called Graphics Management Unit a.k.a GMU) during wake up. It m= ay not + be present for some OPPs and GMU will disable ACD while transiti= oning + to that OPP. This value encodes a voltage threshold and few othe= r knobs + which are identified by characterization of the SoC. So, it does= n't have + any unit. + $ref: /schemas/types.yaml#/definitions/uint32 + + required: + - opp-hz + - opp-level + +required: + - compatible + +additionalProperties: false + +examples: + - | + #include + + gpu_opp_table: opp-table { + compatible =3D "operating-points-v2-adreno", "operating-points-v2"; + + opp-687000000 { + opp-hz =3D /bits/ 64 <687000000>; + opp-level =3D ; + opp-peak-kBps =3D <8171875>; + qcom,opp-acd-level =3D <0x882e5ffd>; + }; + + opp-550000000 { + opp-hz =3D /bits/ 64 <550000000>; + opp-level =3D ; + opp-peak-kBps =3D <6074219>; + qcom,opp-acd-level =3D <0xc0285ffd>; + }; + + opp-390000000 { + opp-hz =3D /bits/ 64 <390000000>; + opp-level =3D ; + opp-peak-kBps =3D <3000000>; + qcom,opp-acd-level =3D <0xc0285ffd>; + }; + + opp-300000000 { + opp-hz =3D /bits/ 64 <300000000>; + opp-level =3D ; + opp-peak-kBps =3D <2136719>; + /* Intentionally left out qcom,opp-acd-level property here= */ + }; + + }; --=20 2.45.2 From nobody Tue Nov 26 05:30:41 2024 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 BCD2F1E8847; Mon, 21 Oct 2024 11:55:37 +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=1729511739; cv=none; b=nAD3rin2s60UJ7d1LuC4WeOmokStt/mqC7Esxx1zPnVkzv5mXGZWTl5va4WeUWICKVmafDltHrpLu2ILN+vP8paGydvjHWcRa2jID6oWO8fChJ0ZWhnSV5AjYyUdUn8dV3Y1vg9+ucE1zMFMicTlHka6lhrX0m9VljC503Uo43w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729511739; c=relaxed/simple; bh=K4uDSeAHPqOF4dC/WveDCmG62plfuwrsaEiIRm+b/HM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-ID:References: In-Reply-To:To:CC; b=hirE0uEL4zTEFiWCDZKNjSdHVwZONwY+V419EV5rMBBBYNoN7S5EnC++2nMNrSjYncAltHPJtk890un/305we9fbHBV3ejBx261iB5mWYn2920RYnUpVR8jFFBWXl8FlCHAvxsKGZHagKtxIFOXYCCWT8qpuASBSN0oeLzMvB/k= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=quicinc.com; spf=pass smtp.mailfrom=quicinc.com; dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com header.b=GjQjqaTe; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=quicinc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=quicinc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com header.b="GjQjqaTe" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 49L8VwhH014493; Mon, 21 Oct 2024 11:55:28 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= PDz3KYrnNjKa/ecyIrk93047MeD5GWsgjdUbxViQq2M=; b=GjQjqaTeXzN6bfkJ I+HRfcTbmGM4+gym42aPkuPueJQ1hTCe9UcHJ1Ig3IQb8kjQ5HjEDDNMUhunCgs/ 92tK1ROAkjlJ9+2HrprNN6sluNqgq/ZyuL8LzapJYJVNMPf5tMFflUcx5zxoToGE zRFCxE3Ng6TqekGHmgbtNt1ZrOQnzXzvGtkytcpVXi/h/viZA1+f4fKIMxaorcOY McBcJVEN8phwSE0dEBHrz6G0wOwAdYEifhDwM+wD5n7MligO/hJSelmgYd0qSryB /Hc5LD4DIHCpF/j/OjC8ajyByE65jD/0RQmQ1jPd2wA2MNpm6YKLzVamUTbxyVkg VtU7gA== Received: from nalasppmta03.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 42dkhd0rxc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 21 Oct 2024 11:55:27 +0000 (GMT) Received: from nalasex01a.na.qualcomm.com (nalasex01a.na.qualcomm.com [10.47.209.196]) by NALASPPMTA03.qualcomm.com (8.18.1.2/8.18.1.2) with ESMTPS id 49LBtQXw011529 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 21 Oct 2024 11:55:26 GMT Received: from [10.213.111.143] (10.80.80.8) by nalasex01a.na.qualcomm.com (10.47.209.196) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.9; Mon, 21 Oct 2024 04:55:20 -0700 From: Akhil P Oommen Date: Mon, 21 Oct 2024 17:23:44 +0530 Subject: [PATCH v2 3/3] arm64: dts: qcom: x1e80100: Add ACD levels for GPU 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: <20241021-gpu-acd-v2-3-9c25a62803bc@quicinc.com> References: <20241021-gpu-acd-v2-0-9c25a62803bc@quicinc.com> In-Reply-To: <20241021-gpu-acd-v2-0-9c25a62803bc@quicinc.com> To: Rob Clark , Sean Paul , "Konrad Dybcio" , Abhinav Kumar , Dmitry Baryshkov , Marijn Suijten , David Airlie , "Simona Vetter" , Viresh Kumar , Nishanth Menon , Stephen Boyd , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Akhil P Oommen , Bjorn Andersson CC: , , , , , X-Mailer: b4 0.14.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1729511702; l=2473; i=quic_akhilpo@quicinc.com; s=20240726; h=from:subject:message-id; bh=K4uDSeAHPqOF4dC/WveDCmG62plfuwrsaEiIRm+b/HM=; b=Tf6TshaeMcHaxPvEKYzkoSzM6VVlj92PY39DFNU6ywFxnG1ElvCn7hZucYqwdEC5uys4pJ2lB LxySXa7xU65BpI6tTFoA6I494oYHj1dOCbkimDsruky3wNZV/MH3xlg X-Developer-Key: i=quic_akhilpo@quicinc.com; a=ed25519; pk=lmVtttSHmAUYFnJsQHX80IIRmYmXA4+CzpGcWOOsfKA= X-ClientProxiedBy: nasanex01a.na.qualcomm.com (10.52.223.231) To nalasex01a.na.qualcomm.com (10.47.209.196) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-ORIG-GUID: SffZm4rIcDV7iLvG4r8Rl6vOxJvQf6Gh X-Proofpoint-GUID: SffZm4rIcDV7iLvG4r8Rl6vOxJvQf6Gh X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.680,FMLib:17.12.60.29 definitions=2024-09-06_09,2024-09-06_01,2024-09-02_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 adultscore=0 phishscore=0 spamscore=0 clxscore=1015 priorityscore=1501 impostorscore=0 mlxscore=0 suspectscore=0 lowpriorityscore=0 bulkscore=0 mlxlogscore=779 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2409260000 definitions=main-2410210085 Update GPU node to include acd level values. Signed-off-by: Akhil P Oommen --- arch/arm64/boot/dts/qcom/x1e80100.dtsi | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/arch/arm64/boot/dts/qcom/x1e80100.dtsi b/arch/arm64/boot/dts/q= com/x1e80100.dtsi index a36076e3c56b..81ce8bccc7a5 100644 --- a/arch/arm64/boot/dts/qcom/x1e80100.dtsi +++ b/arch/arm64/boot/dts/qcom/x1e80100.dtsi @@ -3323,60 +3323,69 @@ zap-shader { }; =20 gpu_opp_table: opp-table { - compatible =3D "operating-points-v2"; + compatible =3D "operating-points-v2-adreno", "operating-points-v2"; =20 opp-1100000000 { opp-hz =3D /bits/ 64 <1100000000>; opp-level =3D ; opp-peak-kBps =3D <16500000>; + qcom,opp-acd-level =3D <0xa82a5ffd>; }; =20 opp-1000000000 { opp-hz =3D /bits/ 64 <1000000000>; opp-level =3D ; opp-peak-kBps =3D <14398438>; + qcom,opp-acd-level =3D <0xa82b5ffd>; }; =20 opp-925000000 { opp-hz =3D /bits/ 64 <925000000>; opp-level =3D ; opp-peak-kBps =3D <14398438>; + qcom,opp-acd-level =3D <0xa82b5ffd>; }; =20 opp-800000000 { opp-hz =3D /bits/ 64 <800000000>; opp-level =3D ; opp-peak-kBps =3D <12449219>; + qcom,opp-acd-level =3D <0xa82c5ffd>; }; =20 opp-744000000 { opp-hz =3D /bits/ 64 <744000000>; opp-level =3D ; opp-peak-kBps =3D <10687500>; + qcom,opp-acd-level =3D <0x882e5ffd>; }; =20 opp-687000000 { opp-hz =3D /bits/ 64 <687000000>; opp-level =3D ; opp-peak-kBps =3D <8171875>; + qcom,opp-acd-level =3D <0x882e5ffd>; }; =20 opp-550000000 { opp-hz =3D /bits/ 64 <550000000>; opp-level =3D ; opp-peak-kBps =3D <6074219>; + qcom,opp-acd-level =3D <0xc0285ffd>; }; =20 opp-390000000 { opp-hz =3D /bits/ 64 <390000000>; opp-level =3D ; opp-peak-kBps =3D <3000000>; + qcom,opp-acd-level =3D <0xc0285ffd>; }; =20 opp-300000000 { opp-hz =3D /bits/ 64 <300000000>; opp-level =3D ; opp-peak-kBps =3D <2136719>; + qcom,opp-acd-level =3D <0xc02b5ffd>; }; }; }; --=20 2.45.2