From nobody Fri Jul 24 22:54:58 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 731C940F726; Wed, 22 Jul 2026 12:11:58 +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=1784722320; cv=none; b=bJxs4Ek9GD0hdN7CGpWQptDxQpSYlNL+KygcjTK8+IWq8tRIh+DFG8XGe4HTqUPgI+z/kZ0lScDzhnCpFDAmeVSAoCFDhDJfjnqfQGOj4ktVtYBdApN+HuaxZbD45r79PoNjLv3hTmC3pH+5lQfsp0ceqn2w4iGBq54CYdxntoY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784722320; c=relaxed/simple; bh=nxvoC+le9+rt7IFXbQQQPJssctzjS/wmYDlR65Hlx58=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=gFYt0I2NHptOdj6ZivEkmRiRTHs8fKHGFrc+x7tkBTgml2ypJh61wzhNJ/wuhtK1NHx1PkIBLKFD8Gliat7NnRgYGte5d29QLG1GiYiA/nZrk/Qq0EePh3+zmyQi23diEmKXdBautpnJFGIQuDiLdAD0Q/WGX7fCWUS3x7oevQ8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=ftuLtI/Q; 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=qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="ftuLtI/Q" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66M8xaO6269720; Wed, 22 Jul 2026 12:11:47 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=SbX1kBbMO6B aebsrSoyRoO9SHkmceGWie9SS3R10Xug=; b=ftuLtI/QorEwXiHTkVoo9TzTf5a wA8omqR36V9u3YJXZs2lZA5cVrR4DQt0syp3tFnmPgHYo1udAdt9Rr3Z9JZprYZI +DV90NWy7vegZojjhGoElyuHMHbvO5opmDnqfXnjspdod8vQKe4LNbWEMnbDE3G3 QbtCnMwYmVUgwuqRwbSg0kp6febHHjP43xQahOKMEKalhpblfkpQK/8q7o9vXuCH A0457iaLKEinUlafCKQJYP1Xc8IZRU4DRpcekQ4nqLwFnjzIceswc4d9WTjapast wG51+GysLEpuDCnYp2YYnb+TOANDeqFBf1HcarLNzjmySyGiKOOnUAoSHSw== Received: from apblrppmta01.qualcomm.com (blr-bdr-fw-01_GlobalNAT_AllZones-Outside.qualcomm.com [103.229.18.19]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fjd6abwmt-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 22 Jul 2026 12:11:47 +0000 (GMT) Received: from pps.filterd (APBLRPPMTA01.qualcomm.com [127.0.0.1]) by APBLRPPMTA01.qualcomm.com (8.18.1.7/8.18.1.7) with ESMTP id 66MCBhEu015004; Wed, 22 Jul 2026 12:11:43 GMT Received: from pps.reinject (localhost [127.0.0.1]) by APBLRPPMTA01.qualcomm.com (PPS) with ESMTPS id 4fgj54dv4j-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 22 Jul 2026 12:11:43 +0000 (GMT) Received: from APBLRPPMTA01.qualcomm.com (APBLRPPMTA01.qualcomm.com [127.0.0.1]) by pps.reinject (8.18.1.12/8.18.1.12) with ESMTP id 66MCBhaZ014975; Wed, 22 Jul 2026 12:11:43 GMT Received: from hu-devc-hyd-u22-c.qualcomm.com (hu-pkumpatl-hyd.qualcomm.com [10.147.245.204]) by APBLRPPMTA01.qualcomm.com (PPS) with ESMTPS id 66MCBgj4014970 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 22 Jul 2026 12:11:43 +0000 (GMT) Received: by hu-devc-hyd-u22-c.qualcomm.com (Postfix, from userid 3914174) id 7EAD8635; Wed, 22 Jul 2026 17:32:21 +0530 (+0530) From: Prasad Kumpatla To: Bartosz Golaszewski , Bjorn Andersson , Linus Walleij , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Liam Girdwood , Mark Brown , Srinivas Kandagatla , Jaroslav Kysela , Takashi Iwai , Prasad Kumpatla Cc: Krzysztof Kozlowski , Srinivas Kandagatla , linux-arm-msm@vger.kernel.org, linux-gpio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-sound@vger.kernel.org Subject: [PATCH v5 1/4] ASoC: dt-bindings: qcom: add LPASS LPR vote clock ID Date: Wed, 22 Jul 2026 17:32:14 +0530 Message-Id: <20260722120217.3609506-2-prasad.kumpatla@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260722120217.3609506-1-prasad.kumpatla@oss.qualcomm.com> References: <20260722120217.3609506-1-prasad.kumpatla@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-QCInternal: smtphost X-QCInternal: smtphost X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIyMDExOSBTYWx0ZWRfXygz6q89GJ86I P379MO8Pn6XBjstkokKYJa4IuJQgIohi3f3lTn2/HeysZLOvRXps9HWBK+2nZHhlMacHb+ev2tI c/OZEH2Yl6S1EIuYWMJFMkR/ljPnQELWdM40Vhjm1TR22MuVwuycNI2+34lSa/qTJ6dHsiD15k3 MILfudQdmzNnxMCZwYy7vF+IfZz4ZNNntth8DS7B9plcEnxcNi8Hyi4C02iYJh/HF2zgbqJgnj9 tgMvop7h9QwCRFYgQSGCj1q6LdtdenXpwBe+clPkNkoDpSSiU3A1e+yHMCK0A8sCI11FQJ9N6Xy AFYjIBhvDcVhU6l/N3oYRINLahbxqLGp63rH5ve8y6CsajvOgPB7xSLfhPvISVydg2MLHhQIv3x Aw0L0oncr3Y7D43V8ciZSNWMgG6gKQaQgq75uv4p5APyBLuQjbB7JMfKP06UR63SiRXSTA6e0Tc lVT++OqqQHqT8q1P2lg== X-Proofpoint-GUID: usH_DGnlnciTXsXLHF91HoWAGDv1AcM_ X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIyMDExOSBTYWx0ZWRfX7GcBE7RF0T6u BhQc0ObNuztagxFBj5vLwUrYUvezdQqzVDDs9dF7xroY/tL/mnZuyaB4ZFl9Eqm0INZEBSg1U5f 2CR3iDedZsMNOrMloFS7NlTO8d7dVAA= X-Authority-Analysis: v=2.4 cv=HvJG3UTS c=1 sm=1 tr=0 ts=6a60b383 cx=c_pps a=Ou0eQOY4+eZoSc0qltEV5Q==:117 a=Ou0eQOY4+eZoSc0qltEV5Q==:17 a=RAioF0-LDSMA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=EUspDBNiAAAA:8 a=LqfxHgX1jWeFuUILl3YA:9 X-Proofpoint-ORIG-GUID: usH_DGnlnciTXsXLHF91HoWAGDv1AcM_ X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-22_03,2026-07-21_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 lowpriorityscore=0 malwarescore=0 phishscore=0 clxscore=1015 adultscore=0 priorityscore=1501 impostorscore=0 spamscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607220119 Content-Type: text/plain; charset="utf-8" Add a new clock ID, LPASS_HW_LPR_VOTE, to represent the LPASS low-power resource (LPR) vote through the PRM interface. The LPASS PRM supports a resource voting mechanism to control low-power states via PARAM_ID_RSC_CPU_LPR. Exposing this as a q6prm clock ID allows clients to request the LPR vote using the existing qcom,q6prm clock provider interface. This functionality is required on newer platforms (e.g. Hawi) where LPASS clients need to explicitly manage LPR resource voting via PRM. Signed-off-by: Prasad Kumpatla Acked-by: Krzysztof Kozlowski --- include/dt-bindings/sound/qcom,q6dsp-lpass-ports.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/dt-bindings/sound/qcom,q6dsp-lpass-ports.h b/include/d= t-bindings/sound/qcom,q6dsp-lpass-ports.h index 7b553a73b..8e04106d4 100644 --- a/include/dt-bindings/sound/qcom,q6dsp-lpass-ports.h +++ b/include/dt-bindings/sound/qcom,q6dsp-lpass-ports.h @@ -236,6 +236,7 @@ #define LPASS_HW_AVTIMER_VOTE 101 #define LPASS_HW_MACRO_VOTE 102 #define LPASS_HW_DCODEC_VOTE 103 +#define LPASS_HW_LPR_VOTE 104 =20 #define LPASS_CLK_ATTRIBUTE_INVALID 0x0 #define LPASS_CLK_ATTRIBUTE_COUPLE_NO 0x1 --=20 2.34.1 From nobody Fri Jul 24 22:54:58 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 954AD2D6407; Wed, 22 Jul 2026 12:11:58 +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=1784722320; cv=none; b=QV1hf/H79EsG3O4JPaYJ23qlbl4VhEeFNFKJHs0mplpsptlXwARjuQT1LVlQZ4BBtNly0vouMVYfvwZv1/UC/GweEO3xXUw/L1bSMDwffT+L2Spw6U8TGAHlpCX+/8ciE3T9rfzfeI4zQXQz5ejG+7RDGbKvLyoL/U2yXT0Y9QU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784722320; c=relaxed/simple; bh=rbHdrfeUxwIWt74WfrvjnGN8MKnxKio593ckSHugsMc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ZawhAJNGFn07IpHAFCQCiP2p7ShTKsxxhICaTKqwrTK9x5+niQF4io64JQUTuDN5+J3pIdhUjWd8g6R+02a7V2HLC+BZpzzjw9aDDnfuKVKr7USRkoc+YqIngSyomm5Ov2CuDuRVD09kJaeXSdC1FwnxUmbWIyptZYgAcAL0gWg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=SPpMqIfd; 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=qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="SPpMqIfd" 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 66M8x5qE140594; Wed, 22 Jul 2026 12:11:47 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=VQDCv8DYN8s ULm3XwGhBEyV+jZAq4HawEsxAhP0TGJI=; b=SPpMqIfdWkglxLsYR5rCxiRxdVw yHIPTT0nTk/GL7MEoUlrh2w8YayV4F7wa79JIWWxIss5qyfVhc2yau4CF/mpF+gm ax14o6wRHBTDrplVUttgj0Z3XTtt+VMsXizE0z5JG8gv3rSm/nWB/0RQnGxUAMQU t9s9Bj3J8F1McIc24w3cq6BpdgyjyZ4FDUzAdCUbbVasVwoT0Dl2Dm3qkPQay84P av4Qi6GEwFoVwuXWeausnJTUJGjnDPG3olWB+F/o1AiCWxtCJOecgm7NIbUO5wf5 Be+N7Se55mhU3JSxQNXayDPa/L83WbPs6H5z7ZoatChA63b99xLkjFCxNRg== Received: from apblrppmta01.qualcomm.com (blr-bdr-fw-01_GlobalNAT_AllZones-Outside.qualcomm.com [103.229.18.19]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fjtn2rtu0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 22 Jul 2026 12:11:46 +0000 (GMT) Received: from pps.filterd (APBLRPPMTA01.qualcomm.com [127.0.0.1]) by APBLRPPMTA01.qualcomm.com (8.18.1.7/8.18.1.7) with ESMTP id 66MCBhdD015001; Wed, 22 Jul 2026 12:11:43 GMT Received: from pps.reinject (localhost [127.0.0.1]) by APBLRPPMTA01.qualcomm.com (PPS) with ESMTPS id 4fgj54dv4m-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 22 Jul 2026 12:11:43 +0000 (GMT) Received: from APBLRPPMTA01.qualcomm.com (APBLRPPMTA01.qualcomm.com [127.0.0.1]) by pps.reinject (8.18.1.12/8.18.1.12) with ESMTP id 66MCBhaY014977; Wed, 22 Jul 2026 12:11:43 GMT Received: from hu-devc-hyd-u22-c.qualcomm.com (hu-pkumpatl-hyd.qualcomm.com [10.147.245.204]) by APBLRPPMTA01.qualcomm.com (PPS) with ESMTPS id 66MCBgtp014972 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 22 Jul 2026 12:11:43 +0000 (GMT) Received: by hu-devc-hyd-u22-c.qualcomm.com (Postfix, from userid 3914174) id 84DD0C07; Wed, 22 Jul 2026 17:32:21 +0530 (+0530) From: Prasad Kumpatla To: Bartosz Golaszewski , Bjorn Andersson , Linus Walleij , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Liam Girdwood , Mark Brown , Srinivas Kandagatla , Jaroslav Kysela , Takashi Iwai , Prasad Kumpatla Cc: Krzysztof Kozlowski , Srinivas Kandagatla , linux-arm-msm@vger.kernel.org, linux-gpio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-sound@vger.kernel.org Subject: [PATCH v5 2/4] ASoC: qcom: q6prm: add support for LPASS LPR resource voting Date: Wed, 22 Jul 2026 17:32:15 +0530 Message-Id: <20260722120217.3609506-3-prasad.kumpatla@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260722120217.3609506-1-prasad.kumpatla@oss.qualcomm.com> References: <20260722120217.3609506-1-prasad.kumpatla@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-QCInternal: smtphost X-QCInternal: smtphost X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIyMDExOSBTYWx0ZWRfX2odxIS9X6EjP kCvJHBAxDIy7N1KxVpsaf1qIgo+yth0lf1Ot8URapSW9Dz0WnpF9cDjJ4lRQeFm282qG/lLVFGZ IrlWOIWIl+nz4sQnCWsySHQXgtmiqU+352vHJdlU8hLs1rZjuyVfki2j5eJOP6mfs2IEdGU66uQ +hwMLlhiRyhcv5r811IO8WPaI37ynjCL2POG9dYKWqBE+/oAli4vG7dtLuEmmi6Vkx5fJ2P9ugj zMIm/hXjK6HhMT7VmSqdg1ckEvlA9JWrm5A0lGfMlomW4SN/53mGLqC6VMkB8TEkUODY6Migemj xGT0XFH6la4DLkeERxzwCV1/LVauAns0dUGfjcs3bGgfgPRtvsEF69sl4Fan3zr4SmQjHH05VUz LcGgGg9EFiYED6Aew1l/JF8z5ZhrKxYJqFOGTmaL4jFrQ5xu4nasreSmFvRjTSfAlNt4frKdzkW +yGpbuZ6ev1ISLQQWcA== X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIyMDExOSBTYWx0ZWRfX1Fhb4qCM/Ab4 Sc30JCwftoiUK7MdTbDMqMX4WcSRVid5FgI5dEQc+xu6AtAtFl1tIHSHu56IDGI+lKHSSWzHW67 TEhsKZSN6GS+RlQnfTx+s4pQ9qeMWeM= X-Proofpoint-GUID: HDVpq7McQyxg12JR3gxJ2Gfr_GgGIW-H X-Proofpoint-ORIG-GUID: HDVpq7McQyxg12JR3gxJ2Gfr_GgGIW-H X-Authority-Analysis: v=2.4 cv=T+28ifKQ c=1 sm=1 tr=0 ts=6a60b383 cx=c_pps a=Ou0eQOY4+eZoSc0qltEV5Q==:117 a=Ou0eQOY4+eZoSc0qltEV5Q==:17 a=RAioF0-LDSMA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=EUspDBNiAAAA:8 a=AiEp7IXl2_k0sn4W3poA:9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-22_03,2026-07-21_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 phishscore=0 impostorscore=0 malwarescore=0 spamscore=0 clxscore=1015 bulkscore=0 lowpriorityscore=0 adultscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607220119 Content-Type: text/plain; charset="utf-8" Add support for issuing LPASS low-power resource (LPR) votes through the PRM interface. Some platforms (e.g. Hawi) require the LPASS to be kept active via LPR resource voting instead of the existing hardware core vote mechanism. Handle this by introducing support for PARAM_ID_RSC_CPU_LPR when the LPR vote clock ID is requested. For LPR requests, use the appropriate parameter ID and payload format to disable CPU subsystem sleep, ensuring that the LPASS register space remains accessible. Also add the corresponding clock mapping for LPASS_HW_LPR_VOTE and update Q6DSP_MAX_CLK_ID to 105 to keep the q6dsp clock ID range consistent with the dt-bindings. Signed-off-by: Prasad Kumpatla Reviewed-by: Srinivas Kandagatla --- sound/soc/qcom/qdsp6/q6dsp-lpass-clocks.c | 2 +- sound/soc/qcom/qdsp6/q6prm-clocks.c | 2 ++ sound/soc/qcom/qdsp6/q6prm.c | 16 +++++++++++++--- sound/soc/qcom/qdsp6/q6prm.h | 1 + 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/sound/soc/qcom/qdsp6/q6dsp-lpass-clocks.c b/sound/soc/qcom/qds= p6/q6dsp-lpass-clocks.c index 03838582a..ab7d20580 100644 --- a/sound/soc/qcom/qdsp6/q6dsp-lpass-clocks.c +++ b/sound/soc/qcom/qdsp6/q6dsp-lpass-clocks.c @@ -12,7 +12,7 @@ #include #include "q6dsp-lpass-clocks.h" =20 -#define Q6DSP_MAX_CLK_ID 104 +#define Q6DSP_MAX_CLK_ID 105 #define Q6DSP_LPASS_CLK_ROOT_DEFAULT 0 =20 =20 diff --git a/sound/soc/qcom/qdsp6/q6prm-clocks.c b/sound/soc/qcom/qdsp6/q6p= rm-clocks.c index 4c574b48a..2b2b3872e 100644 --- a/sound/soc/qcom/qdsp6/q6prm-clocks.c +++ b/sound/soc/qcom/qdsp6/q6prm-clocks.c @@ -63,6 +63,8 @@ static const struct q6dsp_clk_init q6prm_clks[] =3D { "LPASS_HW_MACRO"), Q6DSP_VOTE_CLK(LPASS_HW_DCODEC_VOTE, Q6PRM_HW_CORE_ID_DCODEC, "LPASS_HW_DCODEC"), + Q6DSP_VOTE_CLK(LPASS_HW_LPR_VOTE, Q6PRM_HW_LPR_VOTE, + "LPASS_HW_LPR_VOTE"), }; =20 static const struct q6dsp_clk_desc q6dsp_clk_q6prm __maybe_unused =3D { diff --git a/sound/soc/qcom/qdsp6/q6prm.c b/sound/soc/qcom/qdsp6/q6prm.c index 04892fb44..1f3ce4cc0 100644 --- a/sound/soc/qcom/qdsp6/q6prm.c +++ b/sound/soc/qcom/qdsp6/q6prm.c @@ -31,10 +31,16 @@ struct q6prm { #define PARAM_ID_RSC_HW_CORE 0x08001032 #define PARAM_ID_RSC_LPASS_CORE 0x0800102B #define PARAM_ID_RSC_AUDIO_HW_CLK 0x0800102C +#define PARAM_ID_RSC_CPU_LPR 0x08001A6E + +#define LPR_CPU_SS_SLEEP_DISABLE 0x1 =20 struct prm_cmd_request_hw_core { struct apm_module_param_data param_data; - uint32_t hw_clk_id; + union { + u32 hw_clk_id; + u32 lpr_state; + }; } __packed; =20 struct prm_cmd_request_rsc { @@ -62,6 +68,7 @@ static int q6prm_set_hw_core_req(struct device *dev, uint= 32_t hw_block_id, bool struct prm_cmd_request_hw_core *req; gpr_device_t *gdev =3D prm->gdev; uint32_t opcode, rsp_opcode; + bool lpr_req =3D (hw_block_id =3D=3D Q6PRM_HW_LPR_VOTE); =20 if (enable) { opcode =3D PRM_CMD_REQUEST_HW_RSC; @@ -82,10 +89,13 @@ static int q6prm_set_hw_core_req(struct device *dev, ui= nt32_t hw_block_id, bool =20 param_data->module_instance_id =3D GPR_PRM_MODULE_IID; param_data->error_code =3D 0; - param_data->param_id =3D PARAM_ID_RSC_HW_CORE; + param_data->param_id =3D lpr_req ? PARAM_ID_RSC_CPU_LPR : PARAM_ID_RSC_HW= _CORE; param_data->param_size =3D sizeof(*req) - APM_MODULE_PARAM_DATA_SIZE; =20 - req->hw_clk_id =3D hw_block_id; + if (lpr_req) + req->lpr_state =3D LPR_CPU_SS_SLEEP_DISABLE; + else + req->hw_clk_id =3D hw_block_id; =20 return q6prm_send_cmd_sync(prm, pkt, rsp_opcode); } diff --git a/sound/soc/qcom/qdsp6/q6prm.h b/sound/soc/qcom/qdsp6/q6prm.h index a988a3208..bd5ee0c40 100644 --- a/sound/soc/qcom/qdsp6/q6prm.h +++ b/sound/soc/qcom/qdsp6/q6prm.h @@ -87,6 +87,7 @@ #define Q6PRM_LPASS_CLK_ROOT_DEFAULT 0 #define Q6PRM_HW_CORE_ID_LPASS 1 #define Q6PRM_HW_CORE_ID_DCODEC 2 +#define Q6PRM_HW_LPR_VOTE 3 =20 int q6prm_set_lpass_clock(struct device *dev, int clk_id, int clk_attr, int clk_root, unsigned int freq); --=20 2.34.1 From nobody Fri Jul 24 22:54:58 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 2A671385D7D; Wed, 22 Jul 2026 12:11:57 +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=1784722319; cv=none; b=Ztk42UztslhXhuy6l1wQ8SzkwNHohyF0zu7k4lW8Pkxvl48znVRBFjeB3hsq5P5QCPS1i3fcCKkDZB5tpWEnTKFIXm4znp2ku81oNzUPzZQ2e8Xxo+qxtoAJR08l9MNY4kgrU/qLcgeIiDCJCxdDQmLb7BD/aCQe/EddQkEGhz4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784722319; c=relaxed/simple; bh=Z1GnBoJFhlQciHigAQ0GIYROdiFc7+KkzY90/kPIztk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=FDpPf4aqQbbCBjJsGUg9pWPc0/2lUV77eAMTwwhiqqQ8+Bf6Ud/ftRTSPadAKgYnBbLRBT/5XBZCXyIiNeg37CnMyibH0SacRphKF9s5NexBq1EZgtqL7ZVrJRzrK7ADNTQbuj0VkY0WScfs00GHKruc3VwpXG8SClgfnwngXao= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=Hw/6deuZ; 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=qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="Hw/6deuZ" 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 66M8x5qD140594; Wed, 22 Jul 2026 12:11:47 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=6rxs7kqk9DJ mL6vhgNR7e1CxpZlb4ikP21eVc/uXsrY=; b=Hw/6deuZd7dJPEHQE1k5ECabPZx EZUUPH1rzhFiykoumH/1WC2Z8bqE/TTxUp++85N1bZ6tAzEOh9qF2Cy6A575bhEl KTLnQtS8gtR88i1pVDjbNmzVhzZZxtuBCj+6HgHn4gUjB6QR1xUxU8AEe3oPKuXx +eZXEudiYrywBdn4gfXlEaLHFLEJCTJf5zswGM+ctEkrcL/ibvWfW55Rz+wWX8xF C6IDjwsHUF/+7ufILjLlW7DAA+TGiDQf9AOLBcDBzIqsyB5Ca6L9adDcEhFaMXjn 3cr+ytWKrTP+CfYPDrME2m2V1JbY6V0JirRttT2OKFt0h/tLFdY7ZhZWL4A== Received: from apblrppmta01.qualcomm.com (blr-bdr-fw-01_GlobalNAT_AllZones-Outside.qualcomm.com [103.229.18.19]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fjtn2rtty-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 22 Jul 2026 12:11:46 +0000 (GMT) Received: from pps.filterd (APBLRPPMTA01.qualcomm.com [127.0.0.1]) by APBLRPPMTA01.qualcomm.com (8.18.1.7/8.18.1.7) with ESMTP id 66MCBhu4015000; Wed, 22 Jul 2026 12:11:43 GMT Received: from pps.reinject (localhost [127.0.0.1]) by APBLRPPMTA01.qualcomm.com (PPS) with ESMTPS id 4fgj54dv4g-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 22 Jul 2026 12:11:43 +0000 (GMT) Received: from APBLRPPMTA01.qualcomm.com (APBLRPPMTA01.qualcomm.com [127.0.0.1]) by pps.reinject (8.18.1.12/8.18.1.12) with ESMTP id 66MCBhXg014976; Wed, 22 Jul 2026 12:11:43 GMT Received: from hu-devc-hyd-u22-c.qualcomm.com (hu-pkumpatl-hyd.qualcomm.com [10.147.245.204]) by APBLRPPMTA01.qualcomm.com (PPS) with ESMTPS id 66MCBgec014973 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 22 Jul 2026 12:11:43 +0000 (GMT) Received: by hu-devc-hyd-u22-c.qualcomm.com (Postfix, from userid 3914174) id 89FA0C08; Wed, 22 Jul 2026 17:32:21 +0530 (+0530) From: Prasad Kumpatla To: Bartosz Golaszewski , Bjorn Andersson , Linus Walleij , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Liam Girdwood , Mark Brown , Srinivas Kandagatla , Jaroslav Kysela , Takashi Iwai , Prasad Kumpatla Cc: Krzysztof Kozlowski , Srinivas Kandagatla , linux-arm-msm@vger.kernel.org, linux-gpio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-sound@vger.kernel.org, Krzysztof Kozlowski Subject: [PATCH v5 3/4] dt-bindings: pinctrl: qcom,hawi-lpass-lpi-pinctrl: Add Hawi LPI pinctrl Date: Wed, 22 Jul 2026 17:32:16 +0530 Message-Id: <20260722120217.3609506-4-prasad.kumpatla@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260722120217.3609506-1-prasad.kumpatla@oss.qualcomm.com> References: <20260722120217.3609506-1-prasad.kumpatla@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-QCInternal: smtphost X-QCInternal: smtphost X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIyMDExOSBTYWx0ZWRfXx5XDx8UsvK/L oE9tHEthvtb3DkBvHeRktOqgUR/IGksBjpwLlo4YERfDs9DUuiT7el9hHQer8GgG8g7U9YeX7rn fuMeg2nQ/GiTmjIiX3f9ceYLiLMWn2zKGOSVIFYE0xl+f3678X6b7me9w7XikbrWPKzijOuvIi5 ybUN3YJwIycjVakbYl2RC35iS8z/7LHWTYL+svM3sDBEJoy1ZDtDWOJCgSust6PO4WpMcB/btE5 jY0F/+A7l5mVtpszKZwRclQAk7psn4ue2Eh9GgVB2O3dNCnD290yTpuQWZ6vcbm/frKq4v4vWLd iuNokkGc1+UrBhPPd0fLJMqzypnaKYQtnp8TdsUoNS9NZUanbChW+boVW8TKnVQCbIYYO9FPq5l VANO3DR+8EpGJ1+2D9edUReYnLsomXvLMjNPjb8Y2+4ON8t6ZJjdYUK9u4N1uzE+dh/jVCZlnz0 T+rq5rBAkd8pwbOuFPw== X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIyMDExOSBTYWx0ZWRfX6X5TJPuT7Pfc RXVevkwijxFomn+z/kgxzmwOrxoY0GHKx/pfwUR8UhNTJneN0T/ezmAuOHNyl+WFxVQXQEthOVd lhMNprhTJ5NIC5nB9lH+IWbAId3vA3M= X-Proofpoint-GUID: 80s5bk7vdWZ-ahUWZjnAJr8LshpdLGF1 X-Proofpoint-ORIG-GUID: 80s5bk7vdWZ-ahUWZjnAJr8LshpdLGF1 X-Authority-Analysis: v=2.4 cv=T+28ifKQ c=1 sm=1 tr=0 ts=6a60b383 cx=c_pps a=Ou0eQOY4+eZoSc0qltEV5Q==:117 a=Ou0eQOY4+eZoSc0qltEV5Q==:17 a=RAioF0-LDSMA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=gEfo2CItAAAA:8 a=EUspDBNiAAAA:8 a=VwQbUJbxAAAA:8 a=bT5XQOCXPleopHcqzpYA:9 a=sptkURWiP4Gy88Gu7hUp:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-22_03,2026-07-21_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 phishscore=0 impostorscore=0 malwarescore=0 spamscore=0 clxscore=1015 bulkscore=0 lowpriorityscore=0 adultscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607220119 Content-Type: text/plain; charset="utf-8" Add bindings for the pin controller in Low Power Audio SubSystem (LPASS) of Qualcomm Hawi SoC. The controller has 23 GPIOs (gpio0-gpio22) with functions including SoundWire, I2S, DMIC, VA I2S, ext_mclk1, slimbus and lpass_lpi_dbg_clk. Reviewed-by: Krzysztof Kozlowski Signed-off-by: Prasad Kumpatla --- .../pinctrl/qcom,hawi-lpass-lpi-pinctrl.yaml | 109 ++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 Documentation/devicetree/bindings/pinctrl/qcom,hawi-lpa= ss-lpi-pinctrl.yaml diff --git a/Documentation/devicetree/bindings/pinctrl/qcom,hawi-lpass-lpi-= pinctrl.yaml b/Documentation/devicetree/bindings/pinctrl/qcom,hawi-lpass-lp= i-pinctrl.yaml new file mode 100644 index 000000000..af6858175 --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/qcom,hawi-lpass-lpi-pinctrl= .yaml @@ -0,0 +1,109 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/pinctrl/qcom,hawi-lpass-lpi-pinctrl.yam= l# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Qualcomm Hawi SoC LPASS LPI TLMM + +maintainers: + - Krzysztof Kozlowski + - Srinivas Kandagatla + - Prasad Kumpatla + +description: + Top Level Mode Multiplexer pin controller in the Low Power Audio SubSyst= em + (LPASS) Low Power Island (LPI) of Qualcomm Hawi SoC. + +properties: + compatible: + const: qcom,hawi-lpass-lpi-pinctrl + + reg: + items: + - description: LPASS LPI TLMM Control and Status registers + + clocks: + items: + - description: LPASS LPR(Low Power Resource) voting clock + - description: LPASS Audio voting clock + + clock-names: + items: + - const: lpr + - const: audio + +patternProperties: + "-state$": + oneOf: + - $ref: "#/$defs/qcom-hawi-lpass-state" + - patternProperties: + "-pins$": + $ref: "#/$defs/qcom-hawi-lpass-state" + additionalProperties: false + +$defs: + qcom-hawi-lpass-state: + type: object + description: + Pinctrl node's client devices use subnodes for desired pin configura= tion. + Client device subnodes use below standard properties. + $ref: qcom,lpass-lpi-common.yaml#/$defs/qcom-tlmm-state + unevaluatedProperties: false + + properties: + pins: + description: + List of gpio pins affected by the properties specified in this + subnode. + items: + pattern: "^gpio([0-9]|1[0-9]|2[0-2])$" + + function: + enum: [dmic1_clk, dmic1_data, dmic2_clk, dmic2_data, dmic3_clk, + dmic3_data, dmic4_clk, dmic4_data, ext_mclk1_a, ext_mclk1_b, + ext_mclk1_c, ext_mclk1_d, ext_mclk1_e, gpio, i2s0_clk, + i2s0_data, i2s0_ws, i2s1_clk, i2s1_data, i2s1_ws, i2s2_clk, + i2s2_data, i2s2_ws, i2s3_clk, i2s3_data, i2s3_ws, + lpass_lpi_dbg_clk, qca_swr_clk, qca_swr_data, slimbus_clk, + slimbus_data, swr_rx_clk, swr_rx_data, swr_tx_clk, swr_tx_c= lk1, + swr_tx_data, va_i2s0_clk, va_i2s0_data, va_i2s0_ws, + wsa2_swr_clk, wsa2_swr_data, wsa_swr_clk, wsa_swr_data] + description: + Specify the alternative function to be configured for the specif= ied + pins. + +allOf: + - $ref: qcom,lpass-lpi-common.yaml# + +required: + - compatible + - reg + - clocks + - clock-names + +unevaluatedProperties: false + +examples: + - | + #include + + lpass_tlmm: pinctrl@7f60000 { + compatible =3D "qcom,hawi-lpass-lpi-pinctrl"; + reg =3D <0x07f60000 0x20000>; + + clocks =3D <&q6prmcc LPASS_HW_LPR_VOTE LPASS_CLK_ATTRIBUTE_COUPLE_= NO>, + <&q6prmcc LPASS_HW_DCODEC_VOTE LPASS_CLK_ATTRIBUTE_COUPLE= _NO>; + clock-names =3D "lpr", "audio"; + + gpio-controller; + #gpio-cells =3D <2>; + gpio-ranges =3D <&lpass_tlmm 0 0 23>; + + tx-swr-sleep-clk-state { + pins =3D "gpio0"; + function =3D "swr_tx_clk"; + drive-strength =3D <2>; + bias-pull-down; + }; + }; --=20 2.34.1 From nobody Fri Jul 24 22:54:58 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 955AE3B994A; Wed, 22 Jul 2026 12:11:58 +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=1784722320; cv=none; b=mx4xyw9DOZWz7A+poWI6R7YDaBdYujNTrOApdkH01Hg8wOxDHqlFiOwqyV9p4clXvot5dXPAtPBZC4i6ahfLCQ1ZISgepoN9mKy7QvmV9+ryJCBOsRC51BsF0zZL9vy9p+lZFJKJZ7EaqYoQWtCuo7iAsB9ZrhzOvm/ND80kjss= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784722320; c=relaxed/simple; bh=wETEMVUUn3cqT0N5rzG+JWF3qRKrr0LvQm9ujivrpV0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=u335+DZauGpS2hKTZsmqMXOGqygnnglsjWE384B6HnvzQxrEUCAcJDZgixoK4actNiwYERcwQ/TABrJLi+eUqMeunM20USaxob3XYcfNrVZP70a6W7OSdrGTLHM98SL+u7ZH6Lq/TVsMvzkpyWlQdJw6rhCY1giSAdRqDNlvtwQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=hI7fxh8E; 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=qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="hI7fxh8E" 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 66M8x9e7401202; Wed, 22 Jul 2026 12:11:47 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=en7fkzazS5l h29S+a3oR9DKE2ehDeoRw9xRNNFQCKr0=; b=hI7fxh8EafAAFbCaiu6ZXb8OMeY u2WLP6t2C9OoBPLfGqueFFJIgIOFZaNAd8msxqrvxl/xS6pc43WnK9LsypyI0EQz pJSaDdeqmhwL0uEDNY5FZF64PUrstxEvsNKPPeVF53oY7rbJ99MpMjEs0vkhxUJ8 imb0lv+ht2zoGxpURNmkbfVKAT8d0Htz4b2cOmQTEWd7/4yhkXp+D00Q/JEbYgas U9Hzym0f54dyIOX1hpEkDV/k0QqMXBqOv1Hc9dww/Qf6CpZ2Mpu84QXBzpahUWq/ GkCR3wFKQ3VdVe5BUkrTkQai0XnUhZToANKH7sVLLttYuvM7rkEe6SJYgPw== Received: from apblrppmta01.qualcomm.com (blr-bdr-fw-01_GlobalNAT_AllZones-Outside.qualcomm.com [103.229.18.19]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fjt798x1a-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 22 Jul 2026 12:11:47 +0000 (GMT) Received: from pps.filterd (APBLRPPMTA01.qualcomm.com [127.0.0.1]) by APBLRPPMTA01.qualcomm.com (8.18.1.7/8.18.1.7) with ESMTP id 66MCBhrG015002; Wed, 22 Jul 2026 12:11:43 GMT Received: from pps.reinject (localhost [127.0.0.1]) by APBLRPPMTA01.qualcomm.com (PPS) with ESMTPS id 4fgj54dv4k-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 22 Jul 2026 12:11:43 +0000 (GMT) Received: from APBLRPPMTA01.qualcomm.com (APBLRPPMTA01.qualcomm.com [127.0.0.1]) by pps.reinject (8.18.1.12/8.18.1.12) with ESMTP id 66MCBh8p014974; Wed, 22 Jul 2026 12:11:43 GMT Received: from hu-devc-hyd-u22-c.qualcomm.com (hu-pkumpatl-hyd.qualcomm.com [10.147.245.204]) by APBLRPPMTA01.qualcomm.com (PPS) with ESMTPS id 66MCBg8I014969 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 22 Jul 2026 12:11:43 +0000 (GMT) Received: by hu-devc-hyd-u22-c.qualcomm.com (Postfix, from userid 3914174) id 8F2DFC09; Wed, 22 Jul 2026 17:32:21 +0530 (+0530) From: Prasad Kumpatla To: Bartosz Golaszewski , Bjorn Andersson , Linus Walleij , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Liam Girdwood , Mark Brown , Srinivas Kandagatla , Jaroslav Kysela , Takashi Iwai , Prasad Kumpatla Cc: Krzysztof Kozlowski , Srinivas Kandagatla , linux-arm-msm@vger.kernel.org, linux-gpio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-sound@vger.kernel.org, Konrad Dybcio Subject: [PATCH v5 4/4] pinctrl: qcom: hawi-lpass-lpi: add Hawi LPASS LPI TLMM Date: Wed, 22 Jul 2026 17:32:17 +0530 Message-Id: <20260722120217.3609506-5-prasad.kumpatla@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260722120217.3609506-1-prasad.kumpatla@oss.qualcomm.com> References: <20260722120217.3609506-1-prasad.kumpatla@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-QCInternal: smtphost X-QCInternal: smtphost X-Authority-Analysis: v=2.4 cv=Sr6gLvO0 c=1 sm=1 tr=0 ts=6a60b383 cx=c_pps a=Ou0eQOY4+eZoSc0qltEV5Q==:117 a=Ou0eQOY4+eZoSc0qltEV5Q==:17 a=RAioF0-LDSMA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=3WHJM1ZQz_JShphwDgj5:22 a=EUspDBNiAAAA:8 a=RGdtN6rq-GqljJF8V3QA:9 a=O8hF6Hzn-FEA:10 X-Proofpoint-ORIG-GUID: vt6eiyoM7pe4eA9mbpy-1AYxacLqkjep X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIyMDExOSBTYWx0ZWRfXz2/7ApesgdBs g8z8aQhBonG36ZzhuY6kI6Glf+5p7Qn5iurbjKyBbY/nZhHb8rOCGrgfw7wy4tcEvpNxSl33y6I bMwfBevebyxjT4XMD9ZM9yJ+87N7Od2DXioyJggX6T7c+pTXKiIvHkRD6CYP4i2FstQ3rs3Hp3N v3KU5/hu6nwshNUdJ+Gs8kKGb9621v70OM2Wy8pJjJOqNQL5N3q0vaZS2h7J8+9p5jzeyYvCHag bYq/ahR9/NlvgoltE4BCAHThfPOLBsdbooALe1UiUUn/32uL2LDO/plEC9iDzq+QyDCpXi98Wln 3SJw0WV0f+l/O+A+dEXDZYVExvLlILtl0cMEdfF0rrfClxIRFgfs11rewSLVCIc4/ImxgKx7CxL qLmH6nO/OAzSqycJ/M0u6y1GoN6QoElbl6XBA4SVTeELsGRH88/42CvlBs1xvkMMU68iIBDoLAp uDqYYqjTsVSTcaAKsgA== X-Proofpoint-GUID: vt6eiyoM7pe4eA9mbpy-1AYxacLqkjep X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIyMDExOSBTYWx0ZWRfX66dr/zFXhDm0 J6ocupOeZDzTogaMumbFCx6YUmTUT/uoDoRA90auP+i/iYIgSi/yaCUDp6IObQxx/3yGokZHG9N Gc0BZNmIkCbldg250mpPYuNBgzVzwaA= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-22_03,2026-07-21_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 suspectscore=0 spamscore=0 lowpriorityscore=0 bulkscore=0 adultscore=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-2606150000 definitions=main-2607220119 Content-Type: text/plain; charset="utf-8" Add pin controller driver for the Low Power Audio SubSystem (LPASS) Low Power Island (LPI) of Qualcomm Hawi SoC. The controller has 23 GPIOs with SoundWire, I2S, DMIC, VA I2S, ext_mclk1 and slimbus mux functions. Two pins (gpio13, gpio22) require 6 mux slots due to a test_bus entry occupying a middle hardware slot. Add LPI_PINGROUP6 macro to pinctrl-lpass-lpi.h to support pins with 5 alternate functions. Reviewed-by: Konrad Dybcio Signed-off-by: Prasad Kumpatla --- drivers/pinctrl/qcom/Kconfig | 10 + drivers/pinctrl/qcom/Makefile | 1 + drivers/pinctrl/qcom/pinctrl-hawi-lpass-lpi.c | 244 ++++++++++++++++++ drivers/pinctrl/qcom/pinctrl-lpass-lpi.h | 17 ++ 4 files changed, 272 insertions(+) create mode 100644 drivers/pinctrl/qcom/pinctrl-hawi-lpass-lpi.c diff --git a/drivers/pinctrl/qcom/Kconfig b/drivers/pinctrl/qcom/Kconfig index 18db35022..707067b92 100644 --- a/drivers/pinctrl/qcom/Kconfig +++ b/drivers/pinctrl/qcom/Kconfig @@ -62,6 +62,16 @@ config PINCTRL_LPASS_LPI Qualcomm Technologies Inc LPASS (Low Power Audio SubSystem) LPI (Low Power Island) found on the Qualcomm Technologies Inc SoCs. =20 +config PINCTRL_HAWI_LPASS_LPI + tristate "Qualcomm Technologies Inc Hawi LPASS LPI pin controller driver" + depends on ARM64 || COMPILE_TEST + depends on PINCTRL_LPASS_LPI + help + This is the pinctrl, pinmux, pinconf and gpiolib driver for the + Qualcomm Technologies Inc LPASS (Low Power Audio SubSystem) LPI + (Low Power Island) found on the Qualcomm Technologies Inc Hawi + platform. + config PINCTRL_MILOS_LPASS_LPI tristate "Qualcomm Milos LPASS LPI pin controller driver" depends on ARM64 || COMPILE_TEST diff --git a/drivers/pinctrl/qcom/Makefile b/drivers/pinctrl/qcom/Makefile index 43ecd246a..987a79f9d 100644 --- a/drivers/pinctrl/qcom/Makefile +++ b/drivers/pinctrl/qcom/Makefile @@ -6,6 +6,7 @@ obj-$(CONFIG_PINCTRL_APQ8084) +=3D pinctrl-apq8084.o obj-$(CONFIG_PINCTRL_ELIZA) +=3D pinctrl-eliza.o obj-$(CONFIG_PINCTRL_GLYMUR) +=3D pinctrl-glymur.o obj-$(CONFIG_PINCTRL_HAWI) +=3D pinctrl-hawi.o +obj-$(CONFIG_PINCTRL_HAWI_LPASS_LPI) +=3D pinctrl-hawi-lpass-lpi.o obj-$(CONFIG_PINCTRL_IPQ4019) +=3D pinctrl-ipq4019.o obj-$(CONFIG_PINCTRL_IPQ5018) +=3D pinctrl-ipq5018.o obj-$(CONFIG_PINCTRL_IPQ8064) +=3D pinctrl-ipq8064.o diff --git a/drivers/pinctrl/qcom/pinctrl-hawi-lpass-lpi.c b/drivers/pinctr= l/qcom/pinctrl-hawi-lpass-lpi.c new file mode 100644 index 000000000..7036bf4c6 --- /dev/null +++ b/drivers/pinctrl/qcom/pinctrl-hawi-lpass-lpi.c @@ -0,0 +1,244 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + */ + +#include +#include +#include +#include +#include + +#include "pinctrl-lpass-lpi.h" + +enum lpass_lpi_functions { + LPI_MUX_dmic1_clk, + LPI_MUX_dmic1_data, + LPI_MUX_dmic2_clk, + LPI_MUX_dmic2_data, + LPI_MUX_dmic3_clk, + LPI_MUX_dmic3_data, + LPI_MUX_dmic4_clk, + LPI_MUX_dmic4_data, + LPI_MUX_ext_mclk1_a, + LPI_MUX_ext_mclk1_b, + LPI_MUX_ext_mclk1_c, + LPI_MUX_ext_mclk1_d, + LPI_MUX_ext_mclk1_e, + LPI_MUX_i2s0_clk, + LPI_MUX_i2s0_data, + LPI_MUX_i2s0_ws, + LPI_MUX_i2s1_clk, + LPI_MUX_i2s1_data, + LPI_MUX_i2s1_ws, + LPI_MUX_i2s2_clk, + LPI_MUX_i2s2_data, + LPI_MUX_i2s2_ws, + LPI_MUX_i2s3_clk, + LPI_MUX_i2s3_data, + LPI_MUX_i2s3_ws, + LPI_MUX_lpass_lpi_dbg_clk, + LPI_MUX_qca_swr_clk, + LPI_MUX_qca_swr_data, + LPI_MUX_slimbus_clk, + LPI_MUX_slimbus_data, + LPI_MUX_swr_rx_clk, + LPI_MUX_swr_rx_data, + LPI_MUX_swr_tx_clk, + LPI_MUX_swr_tx_clk1, + LPI_MUX_swr_tx_data, + LPI_MUX_va_i2s0_clk, + LPI_MUX_va_i2s0_data, + LPI_MUX_va_i2s0_ws, + LPI_MUX_wsa2_swr_clk, + LPI_MUX_wsa2_swr_data, + LPI_MUX_wsa_swr_clk, + LPI_MUX_wsa_swr_data, + LPI_MUX_gpio, + LPI_MUX__, +}; + +static const struct pinctrl_pin_desc hawi_lpi_pins[] =3D { + PINCTRL_PIN(0, "gpio0"), + PINCTRL_PIN(1, "gpio1"), + PINCTRL_PIN(2, "gpio2"), + PINCTRL_PIN(3, "gpio3"), + PINCTRL_PIN(4, "gpio4"), + PINCTRL_PIN(5, "gpio5"), + PINCTRL_PIN(6, "gpio6"), + PINCTRL_PIN(7, "gpio7"), + PINCTRL_PIN(8, "gpio8"), + PINCTRL_PIN(9, "gpio9"), + PINCTRL_PIN(10, "gpio10"), + PINCTRL_PIN(11, "gpio11"), + PINCTRL_PIN(12, "gpio12"), + PINCTRL_PIN(13, "gpio13"), + PINCTRL_PIN(14, "gpio14"), + PINCTRL_PIN(15, "gpio15"), + PINCTRL_PIN(16, "gpio16"), + PINCTRL_PIN(17, "gpio17"), + PINCTRL_PIN(18, "gpio18"), + PINCTRL_PIN(19, "gpio19"), + PINCTRL_PIN(20, "gpio20"), + PINCTRL_PIN(21, "gpio21"), + PINCTRL_PIN(22, "gpio22"), +}; + +static const char * const gpio_groups[] =3D { + "gpio0", "gpio1", "gpio2", "gpio3", "gpio4", "gpio5", "gpio6", "gpio7", + "gpio8", "gpio9", "gpio10", "gpio11", "gpio12", "gpio13", "gpio14", + "gpio15", "gpio16", "gpio17", "gpio18", "gpio19", "gpio20", "gpio21", + "gpio22", +}; + +static const char * const swr_tx_clk_groups[] =3D { "gpio0" }; +static const char * const i2s0_clk_groups[] =3D { "gpio0" }; +static const char * const swr_tx_data_groups[] =3D { "gpio1", "gpio2", "gp= io14" }; +static const char * const i2s0_ws_groups[] =3D { "gpio1" }; +static const char * const swr_rx_clk_groups[] =3D { "gpio3" }; +static const char * const i2s0_data_groups[] =3D { "gpio2", "gpio3", "gpio= 4", "gpio5" }; +static const char * const swr_rx_data_groups[] =3D { "gpio4", "gpio5" }; +static const char * const ext_mclk1_c_groups[] =3D { "gpio5" }; +static const char * const dmic1_clk_groups[] =3D { "gpio6" }; +static const char * const va_i2s0_clk_groups[] =3D { "gpio6" }; +static const char * const dmic1_data_groups[] =3D { "gpio7" }; +static const char * const va_i2s0_ws_groups[] =3D { "gpio7" }; +static const char * const dmic2_clk_groups[] =3D { "gpio8" }; +static const char * const va_i2s0_data_groups[] =3D { "gpio8", "gpio9" }; +static const char * const dmic2_data_groups[] =3D { "gpio9" }; +static const char * const ext_mclk1_b_groups[] =3D { "gpio9" }; +static const char * const i2s1_clk_groups[] =3D { "gpio10" }; +static const char * const wsa_swr_clk_groups[] =3D { "gpio10" }; +static const char * const i2s1_ws_groups[] =3D { "gpio11" }; +static const char * const wsa_swr_data_groups[] =3D { "gpio11", "gpio21" }; +static const char * const dmic3_clk_groups[] =3D { "gpio12" }; +static const char * const i2s3_clk_groups[] =3D { "gpio12" }; +static const char * const dmic3_data_groups[] =3D { "gpio13" }; +static const char * const i2s3_ws_groups[] =3D { "gpio13" }; +static const char * const ext_mclk1_a_groups[] =3D { "gpio13" }; +static const char * const lpass_lpi_dbg_clk_groups[] =3D { "gpio13" }; +static const char * const swr_tx_clk1_groups[] =3D { "gpio14" }; +static const char * const ext_mclk1_d_groups[] =3D { "gpio14" }; +static const char * const i2s1_data_groups[] =3D { "gpio15", "gpio16", "gp= io21", "gpio22" }; +static const char * const wsa2_swr_clk_groups[] =3D { "gpio15" }; +static const char * const wsa2_swr_data_groups[] =3D { "gpio16", "gpio22" = }; +static const char * const dmic4_clk_groups[] =3D { "gpio17" }; +static const char * const i2s3_data_groups[] =3D { "gpio17", "gpio18" }; +static const char * const dmic4_data_groups[] =3D { "gpio18" }; +static const char * const i2s2_clk_groups[] =3D { "gpio19" }; +static const char * const slimbus_clk_groups[] =3D { "gpio19" }; +static const char * const qca_swr_clk_groups[] =3D { "gpio19" }; +static const char * const i2s2_ws_groups[] =3D { "gpio20" }; +static const char * const slimbus_data_groups[] =3D { "gpio20" }; +static const char * const qca_swr_data_groups[] =3D { "gpio20" }; +static const char * const i2s2_data_groups[] =3D { "gpio21", "gpio22" }; +static const char * const ext_mclk1_e_groups[] =3D { "gpio22" }; + +static const struct lpi_pingroup hawi_groups[] =3D { + LPI_PINGROUP(0, 11, swr_tx_clk, i2s0_clk, _, _), + LPI_PINGROUP(1, 11, swr_tx_data, i2s0_ws, _, _), + LPI_PINGROUP(2, 11, swr_tx_data, i2s0_data, _, _), + LPI_PINGROUP(3, 11, swr_rx_clk, i2s0_data, _, _), + LPI_PINGROUP(4, 11, swr_rx_data, i2s0_data, _, _), + LPI_PINGROUP(5, 11, swr_rx_data, ext_mclk1_c, i2s0_data, _), + LPI_PINGROUP(6, LPI_NO_SLEW, dmic1_clk, va_i2s0_clk, _, _), + LPI_PINGROUP(7, LPI_NO_SLEW, dmic1_data, va_i2s0_ws, _, _), + LPI_PINGROUP(8, LPI_NO_SLEW, dmic2_clk, va_i2s0_data, _, _), + LPI_PINGROUP(9, LPI_NO_SLEW, dmic2_data, va_i2s0_data, ext_mclk1_b, _), + LPI_PINGROUP(10, 11, i2s1_clk, wsa_swr_clk, _, _), + LPI_PINGROUP(11, 11, i2s1_ws, wsa_swr_data, _, _), + LPI_PINGROUP(12, LPI_NO_SLEW, dmic3_clk, i2s3_clk, _, _), + LPI_PINGROUP6(13, LPI_NO_SLEW, dmic3_data, i2s3_ws, ext_mclk1_a, _, lpass= _lpi_dbg_clk), + LPI_PINGROUP(14, 11, swr_tx_data, swr_tx_clk1, ext_mclk1_d, _), + LPI_PINGROUP(15, 11, i2s1_data, wsa2_swr_clk, _, _), + LPI_PINGROUP(16, 11, i2s1_data, wsa2_swr_data, _, _), + LPI_PINGROUP(17, LPI_NO_SLEW, dmic4_clk, i2s3_data, _, _), + LPI_PINGROUP(18, LPI_NO_SLEW, dmic4_data, i2s3_data, _, _), + LPI_PINGROUP(19, LPI_NO_SLEW, i2s2_clk, slimbus_clk, qca_swr_clk, _), + LPI_PINGROUP(20, LPI_NO_SLEW, i2s2_ws, slimbus_data, qca_swr_data, _), + LPI_PINGROUP(21, 11, i2s2_data, _, wsa_swr_data, i2s1_data), + LPI_PINGROUP6(22, 11, i2s2_data, ext_mclk1_e, _, i2s1_data, wsa2_swr_data= ), +}; + +static const struct lpi_function hawi_functions[] =3D { + LPI_FUNCTION(gpio), + LPI_FUNCTION(dmic1_clk), + LPI_FUNCTION(dmic1_data), + LPI_FUNCTION(dmic2_clk), + LPI_FUNCTION(dmic2_data), + LPI_FUNCTION(dmic3_clk), + LPI_FUNCTION(dmic3_data), + LPI_FUNCTION(dmic4_clk), + LPI_FUNCTION(dmic4_data), + LPI_FUNCTION(ext_mclk1_a), + LPI_FUNCTION(ext_mclk1_b), + LPI_FUNCTION(ext_mclk1_c), + LPI_FUNCTION(ext_mclk1_d), + LPI_FUNCTION(ext_mclk1_e), + LPI_FUNCTION(i2s0_clk), + LPI_FUNCTION(i2s0_data), + LPI_FUNCTION(i2s0_ws), + LPI_FUNCTION(i2s1_clk), + LPI_FUNCTION(i2s1_data), + LPI_FUNCTION(i2s1_ws), + LPI_FUNCTION(i2s2_clk), + LPI_FUNCTION(i2s2_data), + LPI_FUNCTION(i2s2_ws), + LPI_FUNCTION(i2s3_clk), + LPI_FUNCTION(i2s3_data), + LPI_FUNCTION(i2s3_ws), + LPI_FUNCTION(lpass_lpi_dbg_clk), + LPI_FUNCTION(qca_swr_clk), + LPI_FUNCTION(qca_swr_data), + LPI_FUNCTION(slimbus_clk), + LPI_FUNCTION(slimbus_data), + LPI_FUNCTION(swr_rx_clk), + LPI_FUNCTION(swr_rx_data), + LPI_FUNCTION(swr_tx_clk), + LPI_FUNCTION(swr_tx_clk1), + LPI_FUNCTION(swr_tx_data), + LPI_FUNCTION(va_i2s0_clk), + LPI_FUNCTION(va_i2s0_data), + LPI_FUNCTION(va_i2s0_ws), + LPI_FUNCTION(wsa2_swr_clk), + LPI_FUNCTION(wsa2_swr_data), + LPI_FUNCTION(wsa_swr_clk), + LPI_FUNCTION(wsa_swr_data), +}; + +static const struct lpi_pinctrl_variant_data hawi_lpi_data =3D { + .pins =3D hawi_lpi_pins, + .npins =3D ARRAY_SIZE(hawi_lpi_pins), + .groups =3D hawi_groups, + .ngroups =3D ARRAY_SIZE(hawi_groups), + .functions =3D hawi_functions, + .nfunctions =3D ARRAY_SIZE(hawi_functions), + .flags =3D LPI_FLAG_SLEW_RATE_SAME_REG, +}; + +static const struct of_device_id lpi_pinctrl_of_match[] =3D { + { + .compatible =3D "qcom,hawi-lpass-lpi-pinctrl", + .data =3D &hawi_lpi_data, + }, + { } +}; +MODULE_DEVICE_TABLE(of, lpi_pinctrl_of_match); + +static const struct dev_pm_ops lpi_pinctrl_pm_ops =3D { + RUNTIME_PM_OPS(pm_clk_suspend, pm_clk_resume, NULL) +}; + +static struct platform_driver lpi_pinctrl_driver =3D { + .driver =3D { + .name =3D "qcom-hawi-lpass-lpi-pinctrl", + .of_match_table =3D lpi_pinctrl_of_match, + .pm =3D pm_ptr(&lpi_pinctrl_pm_ops), + }, + .probe =3D lpi_pinctrl_probe, + .remove =3D lpi_pinctrl_remove, +}; + +module_platform_driver(lpi_pinctrl_driver); +MODULE_DESCRIPTION("Qualcomm Hawi LPI GPIO pin control driver"); +MODULE_LICENSE("GPL"); diff --git a/drivers/pinctrl/qcom/pinctrl-lpass-lpi.h b/drivers/pinctrl/qco= m/pinctrl-lpass-lpi.h index 6ba0c4eba..056c4a774 100644 --- a/drivers/pinctrl/qcom/pinctrl-lpass-lpi.h +++ b/drivers/pinctrl/qcom/pinctrl-lpass-lpi.h @@ -92,6 +92,23 @@ struct pinctrl_pin_desc; .pin_offset =3D 0, \ } =20 +#define LPI_PINGROUP6(id, soff, f1, f2, f3, f4, f5) \ + { \ + .pin =3D id, \ + .slew_offset =3D soff, \ + .slew_base_spare_1 =3D false, \ + .funcs =3D (int[]){ \ + LPI_MUX_gpio, \ + LPI_MUX_##f1, \ + LPI_MUX_##f2, \ + LPI_MUX_##f3, \ + LPI_MUX_##f4, \ + LPI_MUX_##f5, \ + }, \ + .nfuncs =3D 6, \ + .pin_offset =3D 0, \ + } + /* * Slew rate control is done in the same register as rest of the * pin configuration. --=20 2.34.1