From nobody Thu Apr 9 11:17:56 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 42062399011 for ; Mon, 9 Mar 2026 11:13:21 +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=1773054802; cv=none; b=EPxOlBxPj2P9MuKQzwCy/nwDGb5s/GD7GSDG3O8WA82+VnvUAkwy/ZXlAQgJNH7oYvsd+1ibkl+2/X6dC0rM0c5wH+q9MpQ3URIVjtu7XQCfu3ai0BM0bzEsNF3+LeZAViUTtr9ZPVcdW5sJ5ka6yZJI3yjIfhn/ckAc6FCEtp8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773054802; c=relaxed/simple; bh=gYJlb63Zd53dsZ7vgXD5qYT6doFbEv5m6uL2BgBrnwk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=BtmJDXadGcdTLZRF1Rj0/I4bh1B4jjQRwoA3iN8C/JKGYQOZemYrC1eks8u/pHk9/yI5GaygvUp74FNuRqqr8Kn8v9GDVLhjjxi1BM2iCweZ2wyJvCkWpwGIE1BF2Y5072sKzzoo/NWcyipjYl7sFdBxA+075dzNEzTOGV4goqA= 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=RX9X/fB7; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=YOKc+sXG; 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="RX9X/fB7"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="YOKc+sXG" Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 629A6d3f2195101 for ; Mon, 9 Mar 2026 11:13:20 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=zLiURaoEZ7L H+73e94RS9tg/hkXxyFDfy3q31wGb3cU=; b=RX9X/fB7VT4k+OiKrYdL6e7EBs6 PM1VN0l8VkzHkWhBE+Hlw/Eav1Y9KtP6dqq8ZKH87rn+Nm4BkLJkpa+K3jF4Fw+f u5esUEq8v5CSk8Goj93Lfc7w1ATPh//r56BgrjaMxu2AidbKRWh7l4Q8N1nD4YhG h69q+PCxyCiMPeCEty1QZ7OQKUbDJDVrr8/J8zBbv2FcNho1Ir6hTp/IOHcRXHqE pyiyZ9sOKvnlRhzE6ckQjx40cGxQ2m/NYh0epCh+NlwweisSdL1OaDtLJzdJLq4y yJvY3WE6bpyfMJ4UCmnXFAXQnQH2P5tZ8M6qvjEchh3bx5z4d4dyo2Df9Fw== Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4csv5u86tt-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 09 Mar 2026 11:13:20 +0000 (GMT) Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-2ae6961bff0so297669295ad.2 for ; Mon, 09 Mar 2026 04:13:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1773054799; x=1773659599; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=zLiURaoEZ7LH+73e94RS9tg/hkXxyFDfy3q31wGb3cU=; b=YOKc+sXG7B83/UaZfD77frfk/em0YaXtSURsZ24qnFeqV+dmA9P54px1+xhjc12V1F HU/5mHCdZebds6nUkgrtlIq7dQOPAYqkU4+8pW9tFSC0Zad7jRdevrzxjLa2VQg44Umu +ZzgpEG1E1GAuR7RwWlGGGJRaltA+Bi8907Ln6OwcGLS0kzj5oY79uN57lbgEGgC3Yrv qgY+Xrtb/Ld8c5lLrs7kiKS8E0tdZSyzuX6k39NslwlXhXf+IrWMB3vAM/gLePNAP25O K9BzDcj5lkrwNRoVMOv/Lreof9FTgepb7ckPF8BFx6kzv3WtwV20JYjDkEHmuwDlis2L NduQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773054799; x=1773659599; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=zLiURaoEZ7LH+73e94RS9tg/hkXxyFDfy3q31wGb3cU=; b=FDaXnYLZ/94ODqisOn1ugRty96bbqsEJh1zg+gZjFTFNWBdVWN0OBIy77YZM0xFUVs eTAQmg3TuflAZk6ntll/w3BIYMfqFVExBJXWk5AwrUomt6M5pqd8cb0X/f6/h64CCsWu GZuo9x1PejLkJHcCQWxRMWeKrSCutzgXthA329MOwjmg1rbENT/58hRVGF/Xd0IJxBrm hEAyz/uLHxU0gEAR1Vd5V3XMxjHMDGnluWlAshWRbFHojNeFV03Y45HO3svQq+SAFMqS GQZ/CWs9C53DDvqDNrwpMghM4JyOZ8eFYcIFWEoB85o03oKvAmRC8Uss8YRvXr6Dw8Qe FoCA== X-Forwarded-Encrypted: i=1; AJvYcCUXwW2JL+3WdjlOrhJ8XlCS6RgnVR3LXk+WicC4y9kGcjsUkCLQt153UBhwJG58DO8WFekwDG8Y9NKaVV8=@vger.kernel.org X-Gm-Message-State: AOJu0YwUVrBJLakBSt6nSTc7xZjqeaBCXE+N1enRGsDG1ucHuMjUipcH clTbQxMK75jNrQWPABf85vjDaAVGca1tWGd9fXEoUhQejDT30zGEW4T12pPNRixS8Tmc7dxoyal 1KATAKTSasZehu8Nu1JwbcEVxldXRCY+N6yZJ28kJLmcwpX1zfhT5/Ra/l/kkTgXNBVA= X-Gm-Gg: ATEYQzxM3gv3XY/RkJAl/QE6u8sEjqCrVyVC9/cUTpQ4uEMq2hXyiG0/s0Rnn6q0eWq TgFERoc7eSiKKvOQJTQRC5u3wRKMvPKwfwQR4nBOAwhX8oQX4UlSFMRFFhQIlGpgn4AKfb+1G8H /KJHAAaKTwUzoeRN2O32u1SHYaA7Gryzd5wvQeumsgQUybE//cgw9odYzUVmUhp1oF9Soo9Unsx IoM5aOAw7XkiFtSuiTNqjviPXWjPTWDhGI0H0kVEVVi53C+uhuJLNY7mwZUCZtM5IlbGy+X5Kvt XGv7R6hJGcI/yEenIn2kuPJfXJUBfh+lR6ZKGleXN3CVHC+44n9wmR9QsICrz37x7WS0K9COz0I Eq60d/gdNYMsegXRoiq4/rzHnqGxtCn8Q/NOH/GZiCMpg7Hl60HzrUhnWeA== X-Received: by 2002:a17:902:d48b:b0:2ae:51bb:9809 with SMTP id d9443c01a7336-2ae82444376mr111788145ad.36.1773054799180; Mon, 09 Mar 2026 04:13:19 -0700 (PDT) X-Received: by 2002:a17:902:d48b:b0:2ae:51bb:9809 with SMTP id d9443c01a7336-2ae82444376mr111787955ad.36.1773054798670; Mon, 09 Mar 2026 04:13:18 -0700 (PDT) Received: from hu-mohs-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2ae840c9967sm145405925ad.90.2026.03.09.04.13.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Mar 2026 04:13:18 -0700 (PDT) From: Mohammad Rafi Shaik To: Srinivas Kandagatla , Liam Girdwood , Mark Brown , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Jaroslav Kysela , Takashi Iwai Cc: Krzysztof Kozlowski , linux-sound@vger.kernel.org, linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Srinivas Kandagatla Subject: [PATCH v1 1/4] ASoC: dt-bindings: qcom,q6apm-lpass-dais: Document DAI subnode Date: Mon, 9 Mar 2026 16:42:57 +0530 Message-Id: <20260309111300.2484262-2-mohammad.rafi.shaik@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260309111300.2484262-1-mohammad.rafi.shaik@oss.qualcomm.com> References: <20260309111300.2484262-1-mohammad.rafi.shaik@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-Proofpoint-GUID: 9D6bKVRSKvif_-OVT2eWVon7S3NItXSW X-Proofpoint-ORIG-GUID: 9D6bKVRSKvif_-OVT2eWVon7S3NItXSW X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzA5MDEwMyBTYWx0ZWRfX2uM9VHmeXfW8 94ISTXqj0NzLTIMQEIgqxL3PPPn/S7kELdFRT5hRv/K45T5ojeJpdmBavetgia5LvT3y9VmlS1a W3DA9qOiKFTjzsxgNPHisrdS+GoqcyAdnwk6A6mXDYSHwua8BOMrGcTy6afe4FPKV3Rg7Z9zmUM wJmv/4oWvfskeu+lbmBBP3S9ZSw/jTHj/9EbleHHFrG0sbte+MqYg5oaUi1n5z02d5twlhaV2ms pzYzwIUhvC+/ArQc89wrzhNRbc4O/A0um1oHgMBRMwkxSgtceHXlOobiH+2Jq9MTEmQpVuHJ23g lW5O/llX6wQoZT64cP+8q8shTENGbOhpMS6LKa0swL4gSQsaf4i25WLBCKtW3ED7XVBVZApx9lA Q4CH0LxE4sEvclEtIotbBO7sJG26Ezuj7Kl7ij4m/xRtfeh/RbfgdSTOk9fZ0CW+pmY1QXWPGdl DRP0K7pp2wfXxM60XSw== X-Authority-Analysis: v=2.4 cv=Xr/3+FF9 c=1 sm=1 tr=0 ts=69aeab50 cx=c_pps a=JL+w9abYAAE89/QcEU+0QA==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_glEPmIy2e8OvE2BGh3C:22 a=EUspDBNiAAAA:8 a=ToWtgBs4AJHCE2l4FVQA:9 a=324X-CrmTo6CU4MGRt3R:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-09_03,2026-03-06_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 adultscore=0 spamscore=0 impostorscore=0 suspectscore=0 lowpriorityscore=0 clxscore=1015 phishscore=0 priorityscore=1501 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2603090103 Content-Type: text/plain; charset="utf-8" Extend the qcom,q6apm-lpass-dais device tree binding to explicitly describe Digital Audio Interface (DAI) child nodes. Add #address-cells and #size-cells to allow representation of multiple DAI instances as child nodes, and define a dai@ pattern to document per-DAI properties such as the interface ID and associated clocks. Qualcomm platforms like talos integrate third-party audio codecs or use different external audio paths. These designs often require additional configuration such as explicit MI2S MCLK settings for audio to work. Co-developed-by: Srinivas Kandagatla Signed-off-by: Srinivas Kandagatla Signed-off-by: Mohammad Rafi Shaik --- .../bindings/sound/qcom,q6apm-lpass-dais.yaml | 41 ++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/sound/qcom,q6apm-lpass-dais.= yaml b/Documentation/devicetree/bindings/sound/qcom,q6apm-lpass-dais.yaml index 2fb95544d..1d770cbcb 100644 --- a/Documentation/devicetree/bindings/sound/qcom,q6apm-lpass-dais.yaml +++ b/Documentation/devicetree/bindings/sound/qcom,q6apm-lpass-dais.yaml @@ -21,6 +21,34 @@ properties: '#sound-dai-cells': const: 1 =20 + '#address-cells': + const: 1 + + '#size-cells': + const: 0 + +# Digital Audio Interfaces +patternProperties: + '^dai@[0-9]+$': + type: object + description: + Q6DSP Digital Audio Interfaces. + + properties: + reg: + description: + Digital Audio Interface ID + + clocks: + minItems: 1 + maxItems: 3 + + clock-names: + minItems: 1 + maxItems: 3 + + additionalProperties: false + required: - compatible - '#sound-dai-cells' @@ -29,7 +57,18 @@ unevaluatedProperties: false =20 examples: - | - dais { + #include + + bedais { compatible =3D "qcom,q6apm-lpass-dais"; #sound-dai-cells =3D <1>; + #address-cells =3D <1>; + #size-cells =3D <0>; + + dai@16 { + reg =3D ; + clocks =3D <&q6prmcc LPASS_CLK_ID_MCLK_1 + LPASS_CLK_ATTRIBUTE_COUPLE_NO>; + clock-names =3D "mclk"; + }; }; --=20 2.34.1 From nobody Thu Apr 9 11:17:56 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 9798A39903C for ; Mon, 9 Mar 2026 11:13:25 +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=1773054806; cv=none; b=dem7YETjnHb0/fkTtoWvgoPnRWdHS9apyT7ag28efOAXkke7w67XvkleXpOBy2bUOSE+ucGIyhp8OFjc6mTYdmASxJ1hfpB5IVQKGW1FtoL7TDSSgmQuXKI5d1rV2MxCx9Zl4BtduT5syHXrxzoBvGw+ttxT+3MN8OEVwNIOC/U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773054806; c=relaxed/simple; bh=aUGGc1R79TGDRJpaHjpkPVJWkO+5hdvgG9goHILcC2E=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Ef1d6VYo+ApKAbWizRLmZNOcWGoQ/tdVnV6JelQUkcSQrL2yWj6dkqBRASIT9iJCH0S9+PyUzjDAhS4zLqZK2tM/+3kVI7JeYUpJwHfPX38kwj+ygQ0KrbP0tdygXNyPI1K60/sGgpr6cWhs4H+fds5b57HgZ8JUAO6kYCC4uqU= 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=VdFHlEnE; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=fnx31/4j; 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="VdFHlEnE"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="fnx31/4j" Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 629A6f432195131 for ; Mon, 9 Mar 2026 11:13:24 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=swzqftm9DT4 OQqebBu7PwB37oXOhnBtbstH/+M6fp3Y=; b=VdFHlEnEP5W7a/lwqA5P8Hv9DFv UX+PYfL2enVYwv6T7difwNNUgBTgZsEifSasj/hQHxHT6kEZ58etrkKOACYTd8Iy o6TQF18z+V/51qiRXWvwfYpHGQhbttyFi52Ec9chfb56X87LYKXom0azEiE2U0Fm EHVlTqP20kgGv9RmgoHW9yleLIdPaLSFI/SeDgZI/JOcy6Ilu89d9KM9GJ76+Qaj XIdVncq8LVKhaV7CYdhoiFpKvb9zPMhwxmGDGCFyUE13OsWPCI5vBdG+ftR7nbSb X0S6QIaJuLCotHk/7R86IF/XQson1T2DSFfkh62L0mxo9s8tjeXEUyc0skg== Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4csv5u86u0-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 09 Mar 2026 11:13:24 +0000 (GMT) Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-2ae5031c6b1so70420395ad.0 for ; Mon, 09 Mar 2026 04:13:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1773054804; x=1773659604; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=swzqftm9DT4OQqebBu7PwB37oXOhnBtbstH/+M6fp3Y=; b=fnx31/4j9E93QPcUeM43XWduaiZYAp6dFn43Tq2cmRc2N4y3tdSTju7+CtgRLpoQLO SjqwhQda1X4fO3ovrYUOpXpyUmTkbXio5L4QhCrZ0wj2Hm92eBPaw4CoDE+1fLl+a7zG 1+5qXUYuIPbhNPSpYglJ80SweMj7qdWJ5Z5QDDn8echNsOAqzGPARFda1L27gnKZqWjq rHEtDpUyKCr+1WBWN9pO+JO9mKpLwYgQ/9ycrgPbw1LXMDJyKg8iCptUhosRNC6TE05U REbXL2YAgYExMJaTDunAMlZcLZErE6G6MDyD9SRvcKn8ltakqHta13iuEMXUv0C6g8wl nL0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773054804; x=1773659604; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=swzqftm9DT4OQqebBu7PwB37oXOhnBtbstH/+M6fp3Y=; b=cwj2DHoWKBax+PwwRZvTI68nKB6/6Odbh6Kc5JDyvoldjHKJVhS+6g99uzG47F7VIo qMAf4MU/eYWQ3xkBrQA89nIMQzJA5UfH4ibUtSDsBB7bhSJqozAc/YPL4UMKmHgsVwre Oxodz0cF0RNjzBeswYDqQuqIrUl6zk8BT78fPB0f8ym/wdHj6wAD1fY1Snk2EJBVwDmG MktZV0VbjhRzmP70cg4FQIrVn9Qp3oca9tn0JZDbOyca/Lz6vBMmjbTsJLjo19waVjlr l541CzcNjarSEku0BfqDiVwgXDIOJZn/Z3GpHDfjM4g/XDnenhPUR6gCTydCopj04iCt geHQ== X-Forwarded-Encrypted: i=1; AJvYcCUMy9Tfnf/7UiK+3nCSXk918npn6MCtw6q1YqhuT2wb7sGxe+XYjjxc+/oNsuUJngdye6T2odEwxl3hGzU=@vger.kernel.org X-Gm-Message-State: AOJu0YxBffBnaUuvdyXpq9yVPTTElTxsIk6sBukAr/ujsnHUz++0uxdr MWj+KRkn9V5GeReFPXnF7GfwgSWJpCAmWL4y39hVqJYqEpojRxykfQs8xYlzsnbkPCN0MRcR8GW F6Xm10p5aMUEXJsr+Si50/0A8EgXtvuA7vfOLB2fAZVpaevUc7XgFIpW6vgMyJNXzIYM= X-Gm-Gg: ATEYQzwOFcFqKMoC6RwHeavgVPVviD9+2JuYq8P1cDOcpKPMNUvJaV1g9dZbwG/T7pm Fd8iFB8YftmVJ6dXc6IIyDLEa/AAiL7Umc8KyU1MDHpH0MkAp386/ji81TfzjfcX6GuVUnQ/wsT ff8XjvxVgBjSD9IB+7UoTfJqzVFt8eW/HHiXhSKsjEmuocwPF9IOwDM42aGtOxKuj5bcE3OWiiJ ACcyXzs5zoKaptd3WwmAHFW/tT40nr9t4TLjoYku8TEIg7LNENVQ6FG/aAjEYy7IKRtD2eAxvD1 SoNMXLPk4dM4GotXP9OkEicjL3nIu8kiVxnGM1Hnf3ZkTCRKaAa3rXh/9rrcCXNkFAcFQ0ldgta zBIIlyApmBkCnUvS+U7l56+A7riI9iCqiYmC9id13TwQysU7qvdkQrt0u3g== X-Received: by 2002:a17:903:2b0b:b0:2ae:4f2c:624a with SMTP id d9443c01a7336-2ae824b8531mr100399645ad.54.1773054803521; Mon, 09 Mar 2026 04:13:23 -0700 (PDT) X-Received: by 2002:a17:903:2b0b:b0:2ae:4f2c:624a with SMTP id d9443c01a7336-2ae824b8531mr100399355ad.54.1773054803060; Mon, 09 Mar 2026 04:13:23 -0700 (PDT) Received: from hu-mohs-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2ae840c9967sm145405925ad.90.2026.03.09.04.13.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Mar 2026 04:13:22 -0700 (PDT) From: Mohammad Rafi Shaik To: Srinivas Kandagatla , Liam Girdwood , Mark Brown , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Jaroslav Kysela , Takashi Iwai Cc: Krzysztof Kozlowski , linux-sound@vger.kernel.org, linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Srinivas Kandagatla Subject: [PATCH v1 2/4] ASoC: qcom: qdsp6: q6prm: add the missing LPASS MCLK clock IDs Date: Mon, 9 Mar 2026 16:42:58 +0530 Message-Id: <20260309111300.2484262-3-mohammad.rafi.shaik@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260309111300.2484262-1-mohammad.rafi.shaik@oss.qualcomm.com> References: <20260309111300.2484262-1-mohammad.rafi.shaik@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-Proofpoint-GUID: i7a4pBYS4x2bo-Z3qUcqKlBd_IioMbHZ X-Proofpoint-ORIG-GUID: i7a4pBYS4x2bo-Z3qUcqKlBd_IioMbHZ X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzA5MDEwMyBTYWx0ZWRfXzyO3zXQ+KFse QZeBRwnjhn/Ghd510HKQB1QuCxH2tHj0DINEzAyjSi/T8dJTb8XuFlc4z2IFLp8zjdfR8BsIV15 Ow4Hj5qqwKdZ4DX6X7DKcxgUiBCydcZqBvhaZWtAPuYPGDFrlDW0f4B0wgvIoAMTTCzLb/uP2nx tHoobJePYD9x7iwxn7OWAZIOwD2u1IPUQ/P172r+G5SLzk+dNlZizR1qv5P4Ym5V5be4uHdSEFW clV9fwctF/BOqMIRQU6MR9IQAtHi85r5TAD4vmkPsRnaajEiOaKlQ/B9crd+6DDHClT8PL+ylXO ZZcaQzX6Bbl5FggpxecUFgeh9SBzh3vRqWsJa/dpF8rt/EYlyo6E8JtTLXIg13gLMV0V0kOov83 Ok1A0kVnHV7TLqscxLrS5w59JzDKXe29zS+7Qsp5LlcEPh2h1k6L19CtBnEVtUQnGkkrmIQk8z4 S1tYPaKv/FP6OTbAPEw== X-Authority-Analysis: v=2.4 cv=Xr/3+FF9 c=1 sm=1 tr=0 ts=69aeab54 cx=c_pps a=IZJwPbhc+fLeJZngyXXI0A==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_glEPmIy2e8OvE2BGh3C:22 a=EUspDBNiAAAA:8 a=xa-b9-zz7eJBtx3xZkMA:9 a=uG9DUKGECoFWVXl0Dc02:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-09_03,2026-03-06_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 adultscore=0 spamscore=0 impostorscore=0 suspectscore=0 lowpriorityscore=0 clxscore=1015 phishscore=0 priorityscore=1501 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2603090103 Content-Type: text/plain; charset="utf-8" Add the missing LPASS MCLK ids for the q6prm ADSP. Co-developed-by: Srinivas Kandagatla Signed-off-by: Srinivas Kandagatla Signed-off-by: Mohammad Rafi Shaik --- sound/soc/qcom/qdsp6/q6prm-clocks.c | 5 +++++ sound/soc/qcom/qdsp6/q6prm.h | 11 +++++++++++ 2 files changed, 16 insertions(+) diff --git a/sound/soc/qcom/qdsp6/q6prm-clocks.c b/sound/soc/qcom/qdsp6/q6p= rm-clocks.c index 4c574b48a..51b131fa9 100644 --- a/sound/soc/qcom/qdsp6/q6prm-clocks.c +++ b/sound/soc/qcom/qdsp6/q6prm-clocks.c @@ -42,6 +42,11 @@ static const struct q6dsp_clk_init q6prm_clks[] =3D { Q6PRM_CLK(LPASS_CLK_ID_INT5_MI2S_IBIT), Q6PRM_CLK(LPASS_CLK_ID_INT6_MI2S_IBIT), Q6PRM_CLK(LPASS_CLK_ID_QUI_MI2S_OSR), + Q6PRM_CLK(LPASS_CLK_ID_MCLK_1), + Q6PRM_CLK(LPASS_CLK_ID_MCLK_2), + Q6PRM_CLK(LPASS_CLK_ID_MCLK_3), + Q6PRM_CLK(LPASS_CLK_ID_MCLK_4), + Q6PRM_CLK(LPASS_CLK_ID_MCLK_5), Q6PRM_CLK(LPASS_CLK_ID_WSA_CORE_MCLK), Q6PRM_CLK(LPASS_CLK_ID_WSA_CORE_NPL_MCLK), Q6PRM_CLK(LPASS_CLK_ID_VA_CORE_MCLK), diff --git a/sound/soc/qcom/qdsp6/q6prm.h b/sound/soc/qcom/qdsp6/q6prm.h index a988a3208..8296370e3 100644 --- a/sound/soc/qcom/qdsp6/q6prm.h +++ b/sound/soc/qcom/qdsp6/q6prm.h @@ -52,6 +52,17 @@ /* Clock ID for QUINARY MI2S OSR CLK */ #define Q6PRM_LPASS_CLK_ID_QUI_MI2S_OSR 0x116 =20 +/* Clock ID for MCLK1 */ +#define Q6PRM_LPASS_CLK_ID_MCLK_1 0x300 +/* Clock ID for MCLK2 */ +#define Q6PRM_LPASS_CLK_ID_MCLK_2 0x301 +/* Clock ID for MCLK3 */ +#define Q6PRM_LPASS_CLK_ID_MCLK_3 0x302 +/* Clock ID for MCLK4 */ +#define Q6PRM_LPASS_CLK_ID_MCLK_4 0x303 +/* Clock ID for MCLK5 */ +#define Q6PRM_LPASS_CLK_ID_MCLK_5 0x304 + #define Q6PRM_LPASS_CLK_ID_WSA_CORE_MCLK 0x305 #define Q6PRM_LPASS_CLK_ID_WSA_CORE_NPL_MCLK 0x306 =20 --=20 2.34.1 From nobody Thu Apr 9 11:17:56 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 3337639A7ED for ; Mon, 9 Mar 2026 11:13:30 +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=1773054811; cv=none; b=igl5f8/aBks2esF5BCnOoKQqO/iGp7QBFAFn0h5mKjca/LyVQXZVFO1rQ3gNudv57Mz1CwK5yjUKeChi2alUfoBvGaEGTnnkxV2qfSGdpKm8ct65aW+WGIsSoYpGQ4uqTm+vXZ6c5b35I89f2ccLfWJzodLkCkK/x+K1c43n7R4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773054811; c=relaxed/simple; bh=Ui0AgihxXCFaYgr+bAZ7i2l9gkj2VFymgy3DBZqKJDc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=r2f2+9hIvAO/QDnPw5z9iLvBjbzH8kT/79YvSb8V6hEEWyVTR4PoKyRWQ5nTowSLkAGLW2oEZU0afJ0uNzH4Cj4kCXgZnHIxGUvgDUICtUCBZBm9fAIn6BjNiT4T1C4bS1SZaA4YIaI7ZzDbtBWcNmBgcv8ZMtOSf5XdJVNTBr8= 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=gf/OaFlJ; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Jnou+BRk; 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="gf/OaFlJ"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Jnou+BRk" Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 629A6f442195131 for ; Mon, 9 Mar 2026 11:13:29 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=IzHG9N+rOjY zjvGxNKtzO8J7u8GYor9iw76AiyCp3zI=; b=gf/OaFlJrNUbCnPoWTAKVuoVq55 gG4QlkXJT2JR2cPiwy2GxGqYy+i5DrKh8tnfDyu2PkjD6nWuQu69j73uJ53E0nIk sUL9z276Fqp13dnj28oV58oUR5p4wXBQj6bB7aGrZngbQEAMTX9Wt7YovOWoVret yUg/UhUBoJ8PAXk1DJqWoVoA9KFJk6Hra8pT7LGkCiSzPqVGxI/WcI38j0CPrI6/ G+vFTbanXIHbjLF5QRXEBTVpIVtpPFlrwrvUH9jap9hD1tHEmyocZEVwu6EYbIKF BYvBEyq2x8EH4DLCx0ZinTuvlZntIEf5QukImsOmTtIEFHRUTJO94NiQ0iA== Received: from mail-pj1-f71.google.com (mail-pj1-f71.google.com [209.85.216.71]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4csv5u86ub-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 09 Mar 2026 11:13:29 +0000 (GMT) Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-35979a03106so8639155a91.1 for ; Mon, 09 Mar 2026 04:13:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1773054808; x=1773659608; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=IzHG9N+rOjYzjvGxNKtzO8J7u8GYor9iw76AiyCp3zI=; b=Jnou+BRkPHOmtuLspsNSsbnv9+g4nzg9lTBTb3DZXHNkSFHQRnSRf3k3L7g+mdyuwT symdd35Vh++pYlm6Ovb+nX8HJhqtMzpnrVNnMCuBigYaeA6c+FWwZC9GdR2KosinX1wT JZd7lomQpPLWXhtKLPfv25mH3cMQFiPkSylACPTYFOx3wA5IvYWK2KHm9PY8thBa0lTK qZ8PGLymD0yeYRh2C5sb6jcU+GxI9g9I8ncA7V/yERsgyTcPXLxny55ADvMWRcw0UWAs CtWQyMO7ySvdY7rdHA2AQs2YxXIHcglNENPWBRTnUizawViR/x1t0Fv0Qa/fCDGExy7d skEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773054808; x=1773659608; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=IzHG9N+rOjYzjvGxNKtzO8J7u8GYor9iw76AiyCp3zI=; b=Xe8bIsjUAFXOvKCw4XLA3reBUZFX9XnzJtnXAGVri+vma1m4dCPD0EDfHAMZQ159Jj 7HnsQw9nP+CrPww4CArY2KNrMutIjbgCNoHDgdWfhlNsNb9QptUbWtTufyBTx8jSBBHN 0CPYIYfWdgZfmghIG/wjDAZdVUGPigLbaObmQp6Mfu6BNdMaSy9xcVE4etthDhcRH+ql ZDh4QkqD5UVTZdoAaDC91bpL2LNO0eP67ZAUGlMATbvdTeMtAz601oP4BD+3rjC7Lta9 ZLTmZ17mEIp/0guX3hB0vqlf1hgxZR2hN8yB8FggTm0HLBfbL6WEqj5GXW1QCSkmbg79 cbDw== X-Forwarded-Encrypted: i=1; AJvYcCXu4dD0pgl2UmJIRYT07z8xh5vbJfvZWXCxTN0ImEkE28HGBz0AO4DteDlkRaWWEKqUeyuaypEYLjpdF20=@vger.kernel.org X-Gm-Message-State: AOJu0YyW7PhxULIh9yfMMaGG5lcStecXxTm/YuVzFKOmKN6e4ehVOECG FqgAQRf6QUyimQ6if/vpQ1gfv7HEzw12t90ZC3DCuf6Y9uDBhL90b+rIaWJs7ZiUEDLXbaLOP4Y LeGaM14CqEfxBQ/vSlb1wbE4V875ctE3S4rY79wzQLXaGCZJXr5GQdTK6NCGC4GhwrvA= X-Gm-Gg: ATEYQzzBtwoRNw3R2xf3sPKF7Jo6AqZPO0OLUcyinihHhF4LhKCJ5EdXUaPEq922Jnj t3bbijPzeKtjKfOc8L1ZbrKv9rEOJ1ckMkudGQBBMAiXoplos47nQTQUrN1f4MiPlhU0S/CrqQX SC/5ZFzsxOkF9MBf1U4VQpfDqwB+UK/63Hhjupe3gZ1AlPtNnamqJzyZ9gBflvyS1AQu1FI0fU9 FWGTWB36AKIz1uW2gzb3kNZQOoJWmyZFqOWJ5UaY50epvC+aVNGdTOxON0T/S+joqv83eVQxGjG mnj+i5RWq169/Sm+BIOaE9PwLjrhzZdwX0R0AA5kr62ZAtzNooe9FsLixwaElgyARfmMb8flaAb Zd1aGU7rnsraJaNM7oEYSYqwq8fKY7hqSxwoB9xh1dhASCSYSS7Srf51GOQ== X-Received: by 2002:a17:902:f78e:b0:2a0:8ca7:69de with SMTP id d9443c01a7336-2ae8245c38bmr93586515ad.41.1773054807990; Mon, 09 Mar 2026 04:13:27 -0700 (PDT) X-Received: by 2002:a17:902:f78e:b0:2a0:8ca7:69de with SMTP id d9443c01a7336-2ae8245c38bmr93586155ad.41.1773054807476; Mon, 09 Mar 2026 04:13:27 -0700 (PDT) Received: from hu-mohs-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2ae840c9967sm145405925ad.90.2026.03.09.04.13.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Mar 2026 04:13:27 -0700 (PDT) From: Mohammad Rafi Shaik To: Srinivas Kandagatla , Liam Girdwood , Mark Brown , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Jaroslav Kysela , Takashi Iwai Cc: Krzysztof Kozlowski , linux-sound@vger.kernel.org, linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Srinivas Kandagatla Subject: [PATCH v1 3/4] ASoC: qcom: q6apm-lpass-dais: Add MI2S clock control Date: Mon, 9 Mar 2026 16:42:59 +0530 Message-Id: <20260309111300.2484262-4-mohammad.rafi.shaik@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260309111300.2484262-1-mohammad.rafi.shaik@oss.qualcomm.com> References: <20260309111300.2484262-1-mohammad.rafi.shaik@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-Proofpoint-GUID: vFZfOfNuqKgQtuRe71AAhhaq8DFF4Adq X-Proofpoint-ORIG-GUID: vFZfOfNuqKgQtuRe71AAhhaq8DFF4Adq X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzA5MDEwMyBTYWx0ZWRfXyVNSc3tDzusR Bn981HInp1+RjMzXHtitrMFdNg8yQoCJaX5Y4JkJ8W3vOxkIkMNozS8UcpHzyR2TRAbo3gCRQgw Sya/hAtSYTVpFB+NMa0nx0PjiqVsB8iAc5nHN8DtEMDtFwRe97ktQC8CJy8L2FnWZf/C7RS4OZe PFmOUq/7zYHLueFp9V8ECJpNiNuFMiYkjx218c7r6oWnVcPMZEXGajeHFrj/XaHMXD9lNuN+aPk BhxnlsHO0Z165BUo4qUEZgBxM3Qppz3ry47xv0r68wbNrpcAFMSEIrSll4aguaj4WLtg6gcwm1I yXwStPNZZ4x6+eZG3toba/4RimzJhQIM3H6hK4lwNwvZLWs4kgfyrValjvqlGeP3nIAVeWg/SYI ru+CkyPVOt2eZTT+Q1+GFEfuaymNzMCuBUfZNzynPrnmL7WRW/MhjOgDR9m8rXpDgG3Zu8HSbFx +VjWIYhFQHy4ofARNtQ== X-Authority-Analysis: v=2.4 cv=Xr/3+FF9 c=1 sm=1 tr=0 ts=69aeab59 cx=c_pps a=UNFcQwm+pnOIJct1K4W+Mw==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_glEPmIy2e8OvE2BGh3C:22 a=EUspDBNiAAAA:8 a=A-h2Renr4JBikGDhi8kA:9 a=uKXjsCUrEbL0IQVhDsJ9:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-09_03,2026-03-06_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 adultscore=0 spamscore=0 impostorscore=0 suspectscore=0 lowpriorityscore=0 clxscore=1015 phishscore=0 priorityscore=1501 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2603090103 Content-Type: text/plain; charset="utf-8" Add support for MI2S clock control within q6apm-lpass DAIs, including handling of MCLK, BCLK, and ECLK via the DAI .set_sysclk callback. Each MI2S port now retrieves its clock handles from the device tree, allowing per-port clock configuration and proper enable/disable during startup and shutdown. Co-developed-by: Srinivas Kandagatla Signed-off-by: Srinivas Kandagatla Signed-off-by: Mohammad Rafi Shaik --- sound/soc/qcom/qdsp6/q6apm-lpass-dais.c | 137 +++++++++++++++++++++++- sound/soc/qcom/qdsp6/q6prm.h | 4 + 2 files changed, 139 insertions(+), 2 deletions(-) diff --git a/sound/soc/qcom/qdsp6/q6apm-lpass-dais.c b/sound/soc/qcom/qdsp6= /q6apm-lpass-dais.c index 528756f13..1e739a474 100644 --- a/sound/soc/qcom/qdsp6/q6apm-lpass-dais.c +++ b/sound/soc/qcom/qdsp6/q6apm-lpass-dais.c @@ -2,10 +2,12 @@ // Copyright (c) 2021, Linaro Limited =20 #include +#include #include #include #include #include +#include #include #include #include @@ -15,13 +17,22 @@ #include "q6dsp-common.h" #include "audioreach.h" #include "q6apm.h" +#include "q6prm.h" =20 #define AUDIOREACH_BE_PCM_BASE 16 =20 +struct q6apm_dai_priv_data { + struct clk *mclk; + struct clk *bclk; + struct clk *eclk; + bool mclk_enabled, bclk_enabled, eclk_enabled; +}; + struct q6apm_lpass_dai_data { struct q6apm_graph *graph[APM_PORT_MAX]; bool is_port_started[APM_PORT_MAX]; struct audioreach_module_config module_config[APM_PORT_MAX]; + struct q6apm_dai_priv_data priv[APM_PORT_MAX]; }; =20 static int q6dma_set_channel_map(struct snd_soc_dai *dai, @@ -238,6 +249,70 @@ static int q6apm_lpass_dai_startup(struct snd_pcm_subs= tream *substream, struct s return 0; } =20 +static int q6i2s_dai_startup(struct snd_pcm_substream *substream, struct s= nd_soc_dai *dai) +{ + return q6apm_lpass_dai_startup(substream, dai); +} + +static void q6i2s_lpass_dai_shutdown(struct snd_pcm_substream *substream, = struct snd_soc_dai *dai) +{ + struct q6apm_lpass_dai_data *dai_data =3D dev_get_drvdata(dai->dev); + + if (dai_data->priv[dai->id].mclk_enabled) { + clk_disable_unprepare(dai_data->priv[dai->id].mclk); + dai_data->priv[dai->id].mclk_enabled =3D false; + } + + if (dai_data->priv[dai->id].bclk_enabled) { + clk_disable_unprepare(dai_data->priv[dai->id].bclk); + dai_data->priv[dai->id].bclk_enabled =3D false; + } + + if (dai_data->priv[dai->id].eclk_enabled) { + clk_disable_unprepare(dai_data->priv[dai->id].eclk); + dai_data->priv[dai->id].eclk_enabled =3D false; + } + q6apm_lpass_dai_shutdown(substream, dai); +} + +static int q6i2s_set_sysclk(struct snd_soc_dai *dai, int clk_id, unsigned = int freq, int dir) +{ + struct q6apm_lpass_dai_data *dai_data =3D dev_get_drvdata(dai->dev); + struct clk *sysclk; + bool *enabled; + int ret =3D 0; + + switch (clk_id) { + case LPAIF_MI2S_MCLK: + sysclk =3D dai_data->priv[dai->id].mclk; + enabled =3D &dai_data->priv[dai->id].mclk_enabled; + break; + case LPAIF_MI2S_BCLK: + sysclk =3D dai_data->priv[dai->id].bclk; + enabled =3D &dai_data->priv[dai->id].bclk_enabled; + break; + case LPAIF_MI2S_ECLK: + sysclk =3D dai_data->priv[dai->id].eclk; + enabled =3D &dai_data->priv[dai->id].eclk_enabled; + break; + default: + break; + } + + if (sysclk) { + clk_set_rate(sysclk, freq); + ret =3D clk_prepare_enable(sysclk); + if (ret) { + dev_err(dai->dev, "Error, Unable to prepare (%d) sysclk\n", clk_id); + return ret; + } + + *enabled =3D true; + } + + return ret; +} + static int q6i2s_set_fmt(struct snd_soc_dai *dai, unsigned int fmt) { struct q6apm_lpass_dai_data *dai_data =3D dev_get_drvdata(dai->dev); @@ -258,11 +333,12 @@ static const struct snd_soc_dai_ops q6dma_ops =3D { =20 static const struct snd_soc_dai_ops q6i2s_ops =3D { .prepare =3D q6apm_lpass_dai_prepare, - .startup =3D q6apm_lpass_dai_startup, - .shutdown =3D q6apm_lpass_dai_shutdown, + .startup =3D q6i2s_dai_startup, + .shutdown =3D q6i2s_lpass_dai_shutdown, .set_channel_map =3D q6dma_set_channel_map, .hw_params =3D q6dma_hw_params, .set_fmt =3D q6i2s_set_fmt, + .set_sysclk =3D q6i2s_set_sysclk, }; =20 static const struct snd_soc_dai_ops q6hdmi_ops =3D { @@ -280,6 +356,59 @@ static const struct snd_soc_component_driver q6apm_lpa= ss_dai_component =3D { .use_dai_pcm_id =3D true, }; =20 +static int of_q6apm_parse_dai_data(struct device *dev, + struct q6apm_lpass_dai_data *data) +{ + struct device_node *node; + int ret; + + for_each_child_of_node(dev->of_node, node) { + struct q6apm_dai_priv_data *priv; + int id; + + ret =3D of_property_read_u32(node, "reg", &id); + if (ret || id < 0 || id >=3D APM_PORT_MAX) { + dev_err(dev, "valid dai id not found:%d\n", ret); + continue; + } + + switch (id) { + /* MI2S specific properties */ + case PRIMARY_MI2S_RX ... QUATERNARY_MI2S_TX: + case QUINARY_MI2S_RX ... QUINARY_MI2S_TX: + priv =3D &data->priv[id]; + priv->mclk =3D of_clk_get_by_name(node, "mclk"); + if (IS_ERR(priv->mclk)) { + if (PTR_ERR(priv->mclk) =3D=3D -EPROBE_DEFER) + return dev_err_probe(dev, PTR_ERR(priv->mclk), + "unable to get mi2s mclk\n"); + priv->mclk =3D NULL; + } + + priv->bclk =3D of_clk_get_by_name(node, "bclk"); + if (IS_ERR(priv->bclk)) { + if (PTR_ERR(priv->bclk) =3D=3D -EPROBE_DEFER) + return dev_err_probe(dev, PTR_ERR(priv->bclk), + "unable to get mi2s bclk\n"); + priv->bclk =3D NULL; + } + + priv->eclk =3D of_clk_get_by_name(node, "eclk"); + if (IS_ERR(priv->eclk)) { + if (PTR_ERR(priv->eclk) =3D=3D -EPROBE_DEFER) + return dev_err_probe(dev, PTR_ERR(priv->eclk), + "unable to get mi2s eclk\n"); + priv->eclk =3D NULL; + } + break; + default: + break; + } + } + + return 0; +} + static int q6apm_lpass_dai_dev_probe(struct platform_device *pdev) { struct q6dsp_audio_port_dai_driver_config cfg; @@ -287,12 +416,16 @@ static int q6apm_lpass_dai_dev_probe(struct platform_= device *pdev) struct snd_soc_dai_driver *dais; struct device *dev =3D &pdev->dev; int num_dais; + int ret; =20 dai_data =3D devm_kzalloc(dev, sizeof(*dai_data), GFP_KERNEL); if (!dai_data) return -ENOMEM; =20 dev_set_drvdata(dev, dai_data); + ret =3D of_q6apm_parse_dai_data(dev, dai_data); + if (ret) + return ret; =20 memset(&cfg, 0, sizeof(cfg)); cfg.q6i2s_ops =3D &q6i2s_ops; diff --git a/sound/soc/qcom/qdsp6/q6prm.h b/sound/soc/qcom/qdsp6/q6prm.h index 8296370e3..a00d1eda1 100644 --- a/sound/soc/qcom/qdsp6/q6prm.h +++ b/sound/soc/qcom/qdsp6/q6prm.h @@ -3,6 +3,10 @@ #ifndef __Q6PRM_H__ #define __Q6PRM_H__ =20 +#define LPAIF_MI2S_MCLK 1 +#define LPAIF_MI2S_BCLK 2 +#define LPAIF_MI2S_ECLK 3 + /* Clock ID for Primary I2S IBIT */ #define Q6PRM_LPASS_CLK_ID_PRI_MI2S_IBIT 0x100 /* Clock ID for Primary I2S EBIT */ --=20 2.34.1 From nobody Thu Apr 9 11:17:56 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 59F83399034 for ; Mon, 9 Mar 2026 11:13:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773054815; cv=none; b=MaPtQjzZHyUtqV+7d6TYQj7iQ2Zkux4fuBxquqTZFSgmLSO8vndG+Pi39vDC5tCPD50fNuFBElt6I/nOPe+4o1wxexMC5atreIlcstOnA5plef729Dpp3oBCN5sJyhanK9TkEdKZAa6e+RJJEmYMhs34SnO9ZQv3O9+/0malxLg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773054815; c=relaxed/simple; bh=RD4c98jvLUyiYfBuTglyo98MzLCoqaUHXj1LQhon1Qo=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=A5U8UIN1ukFbh6Enm3DlQ3Am/fEvXpYOgGlId+1r8T961VULk2AIO59cAC5ip9/H8N84U2Lmi5iJ4oOF9T5z10MiL5OsKIj7/LyRVcPbP0UiuRcsjgEMyywHAevrAoR4dsgDIDy/lcpIc+1zQEeyPABN3SuHsT+D40BGled7C7o= 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=Qs6cVRXg; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=KpWxWdHG; 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="Qs6cVRXg"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="KpWxWdHG" 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 62982rCc3462729 for ; Mon, 9 Mar 2026 11:13:33 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=LckKRZ+R520 xGoLy9VPMIyB1+zTb2QRQ97fUKoxVTZw=; b=Qs6cVRXgsBB5DCwLtSqdyi838OR xvDbe+LfG6daMFWBIta/9toh6DKr1WViCZZqr4MHGFMb4MOE6XMPAQ5mky5LEp+y bVJnzJrcweV8eV8GULwMcXwEBbBnS/2ZTHSnZ80Ygn8Y1iH/qNIU2LAWJ54WxEgJ WAb21LnXsnnT0ONPfCWQl96c6H81+eW4KiI3ge5wQa8vbbuc5OC3+VVxJ49LscFk E00923DJaYl4rT+/Qoc2o2iFNpt+pc3RO3HCYLjOgY/d+g8kPqSso5dfW5hwf8Ky IW5m9/HuAfpWCJdeWnpja/gX+pUMwN9dTB4iEQwDzJelQ1R0iQhNIWaccwA== Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4crcd8d2d9-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 09 Mar 2026 11:13:33 +0000 (GMT) Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2ae49080364so66022355ad.0 for ; Mon, 09 Mar 2026 04:13:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1773054812; x=1773659612; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=LckKRZ+R520xGoLy9VPMIyB1+zTb2QRQ97fUKoxVTZw=; b=KpWxWdHGQfAY03cA9tvC7PciAjF2Pc2hV1KNXvcwBP96+KAXyZE6XUoSQdpes7dGaw t08RYaAW/I7ZnW7agm8mZ68+amDwOx/QOglv9JXd+iFd0IMREJa5cDiIf8WZUH8Ipjty NdJgHRzvGX3FWUIfxOTAtWJd4/XBeVYyJVLDHNBZtMRq8D3+frdZju5jBQv3J8/0GIDx JNfJEst75IXcSfZC3SiKBt4EMCYNdDOYhzQLCnJtSlAx5FbDFLxa7WH39drr9ed03lAz Mqrq9TM4XzQ0gZcxZ8w10TgpqPZSsUkVylpoX4L5wu6KIZZwzB32HCGYXi48Bmnqr6oL 5RwA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773054812; x=1773659612; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=LckKRZ+R520xGoLy9VPMIyB1+zTb2QRQ97fUKoxVTZw=; b=H57CNjaXAApowfAVpRnqlM7tZ9OhYm6wXpRtYOpmYy2yFXR492HcnFjZ0vlwuTNsjx NWeyXar+YxqVE+Ehk0oihy3UaN2TBrOu9So42lffEdWozf9/uUaCZpMTVljMbL38Ek89 sWvTKdHebREDsHviwWspmhofSd7IN4ktrWdS16X/uFSesgRyCrOkV9I43CiYyxinxe9i zFJOEUhqHnRfFJTWn/o1bmfhVfBeMbYRlGVnWFxfvdUDXtv2bf/20kHpu97m1c4RTwgm zEtOzHFXmnUK2Rdy9UdfT2lMwMjqSPxS/YtC30ZkoGEceQduUgIDv8uYkYagE0YaFdxc P1Tg== X-Forwarded-Encrypted: i=1; AJvYcCXc99z86E62cyDKkwY5ZYr5lHqRf2hEIZL1UzvrcQpfhRj1yGjuKUhT6U0AlVNt8ONKTM1CdffIn3UEdcc=@vger.kernel.org X-Gm-Message-State: AOJu0Yz5LA/70P9KVI2s7QeI/eq20TCbCzjfB/KIicdLfAHK5P2ySyxC liwaRbw4ILpxjeuqQLwugMHfKrJcyduknMPYcbCDYKi587rEI2et0+l0YxhjOK6H2Z/CSIp6Y1s 8gK6O2OXYIjhqR2FWTXUEt4eOiNNpItxFi/vi/1bClNrcmyJuBZmX0c8r5ekp/+TP2jE= X-Gm-Gg: ATEYQzw/JMMNCWsV7B67Rx1omvXJvV4hTxKs6QlyKx4Djv89T1md8wPhhnjVk4FHuqz 0bdH45wzWuGQh1fvVlCJEbmqpWViTnBQUHvRicXAa2XeIxNNPQBHPlv5d8nyFMYq5mSMg21dYcv Y8xZNOH3R0KGWzATfQDXDK9ErFYCecSHUyqfHayAzsN5fCgwxPuDr73T11v5zrh7f8Hf6MmdMLn HffaCbXH63izvPslF5c+fZo/VCtz+dgCvH0llpdajzhqC1LSDKohKmk0STj8mpbId0PTyGGsE8T 4VLPOuIOLrw/ehBoSbKp/6xSXpiuE9q82KwbCt+PliFvKb18a10UiWR9K5d1sgswndZh7d3ULDO ts2AfYcML0G2yEJyiwFGdUwTYbIpY8dKnlNAIZC8cqi+XKNrNjRbeJhuwcw== X-Received: by 2002:a17:902:e803:b0:2ae:5442:45cf with SMTP id d9443c01a7336-2ae82431065mr121349095ad.33.1773054812159; Mon, 09 Mar 2026 04:13:32 -0700 (PDT) X-Received: by 2002:a17:902:e803:b0:2ae:5442:45cf with SMTP id d9443c01a7336-2ae82431065mr121348795ad.33.1773054811645; Mon, 09 Mar 2026 04:13:31 -0700 (PDT) Received: from hu-mohs-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2ae840c9967sm145405925ad.90.2026.03.09.04.13.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Mar 2026 04:13:31 -0700 (PDT) From: Mohammad Rafi Shaik To: Srinivas Kandagatla , Liam Girdwood , Mark Brown , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Jaroslav Kysela , Takashi Iwai Cc: Krzysztof Kozlowski , linux-sound@vger.kernel.org, linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v1 4/4] ASoC: qcom: sc8280xp: ASoC: qcom: sc8280xp: enhance machine driver for board-specific config Date: Mon, 9 Mar 2026 16:43:00 +0530 Message-Id: <20260309111300.2484262-5-mohammad.rafi.shaik@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260309111300.2484262-1-mohammad.rafi.shaik@oss.qualcomm.com> References: <20260309111300.2484262-1-mohammad.rafi.shaik@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-Proofpoint-ORIG-GUID: Z0VIahmnSQpl50ImsdaWW_QXxJMlSq9W X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzA5MDEwMyBTYWx0ZWRfX8FXjBJtHKhmk DTrojGlvUYCOykrCDBGHNn+PwnmqhWsh/lWVrxF2oIWUUzFgNiejp0XwUBkTqfYBfQD8ibQ/uxD iXDN/I504rSns/CvTvDaxDCtn3359nMleMBO1++lhgUtAJ8CoNPg989sd6/y7k/tXGVev++H/FX 7XPTC6/OzkgLWWzu/3mFW0Z3gCtUNERLUnZ43kgp7w60TliuJAZ2CAh9uISHngSxwLxBgHmEKth p+yAOw1JsWNSCAi+5hZwil/BtahENyg8orha39Ah/SZBfWlhzTrqmJMpsSAu0zfwQXECIvXcHhp QtTdUcEJdJFMzVonFbTWQnctfl1kk/Z9DRCh5wMKMGYhclSrucHHsuzjL5xO0bn1RuU3qw22clq devBJoIAyTJ/4MQdHlE+3k+0l+1ub+YlheLVv9yjP7JdGEkKnBzgDQpFBHHwSSbq1oM8UNLpVp2 GCfM9E8MM4FacNgr1RA== X-Authority-Analysis: v=2.4 cv=O/w0fR9W c=1 sm=1 tr=0 ts=69aeab5d cx=c_pps a=MTSHoo12Qbhz2p7MsH1ifg==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=EUspDBNiAAAA:8 a=YQSOK7UB-Gan8rnKjwIA:9 a=GvdueXVYPmCkWapjIL-Q:22 X-Proofpoint-GUID: Z0VIahmnSQpl50ImsdaWW_QXxJMlSq9W X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-09_03,2026-03-06_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 clxscore=1015 spamscore=0 phishscore=0 priorityscore=1501 lowpriorityscore=0 adultscore=0 impostorscore=0 bulkscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2603090103 Content-Type: text/plain; charset="utf-8" The sc8280xp machine driver is currently written with a largely SoC-centric view and assumes a uniform audio topology across all boards. In practice, multiple products based on the same SoC use different board designs and external audio components, which require board-specific configuration to function correctly. Several Qualcomm platforms like talos integrate third-party audio codecs or use different external audio paths. These designs often require additional configuration such as explicit MI2S MCLK settings for audio to work. This change enhances the sc8280xp machine driver to support board-specific configuration such as allowing each board variant to provide its own DAPM widgets and routes, reflecting the actual audio components and connectors present and enabling MI2S MCLK programming for boards that use external codecs requiring a stable master clock. Signed-off-by: Mohammad Rafi Shaik --- sound/soc/qcom/sc8280xp.c | 180 ++++++++++++++++++++++++++++++++++---- 1 file changed, 162 insertions(+), 18 deletions(-) diff --git a/sound/soc/qcom/sc8280xp.c b/sound/soc/qcom/sc8280xp.c index 7925aa3f6..c2e9323df 100644 --- a/sound/soc/qcom/sc8280xp.c +++ b/sound/soc/qcom/sc8280xp.c @@ -12,17 +12,62 @@ #include #include #include "qdsp6/q6afe.h" +#include "qdsp6/q6apm.h" +#include "qdsp6/q6prm.h" #include "common.h" #include "sdw.h" =20 +#define MCLK_FREQ 12288000 +#define MCLK_NATIVE_FREQ 11289600 + +static struct snd_soc_dapm_widget sc8280xp_dapm_widgets[] =3D { + SND_SOC_DAPM_HP("Headphone Jack", NULL), + SND_SOC_DAPM_MIC("Mic Jack", NULL), + SND_SOC_DAPM_SPK("DP0 Jack", NULL), + SND_SOC_DAPM_SPK("DP1 Jack", NULL), + SND_SOC_DAPM_SPK("DP2 Jack", NULL), + SND_SOC_DAPM_SPK("DP3 Jack", NULL), + SND_SOC_DAPM_SPK("DP4 Jack", NULL), + SND_SOC_DAPM_SPK("DP5 Jack", NULL), + SND_SOC_DAPM_SPK("DP6 Jack", NULL), + SND_SOC_DAPM_SPK("DP7 Jack", NULL), +}; + +struct snd_soc_common { + char *driver_name; + const struct snd_soc_dapm_widget *dapm_widgets; + int num_dapm_widgets; + const struct snd_soc_dapm_route *dapm_routes; + int num_dapm_routes; + bool mi2s_mclk_enable; +}; + struct sc8280xp_snd_data { bool stream_prepared[AFE_PORT_MAX]; struct snd_soc_card *card; struct snd_soc_jack jack; struct snd_soc_jack dp_jack[8]; + struct snd_soc_common *snd_soc_common_priv; bool jack_setup; }; =20 +static inline int sc8280xp_get_mclk_feq(unsigned int rate) +{ + int freq =3D MCLK_FREQ; + + switch (rate) { + case SNDRV_PCM_RATE_11025: + case SNDRV_PCM_RATE_44100: + case SNDRV_PCM_RATE_88200: + freq =3D MCLK_NATIVE_FREQ; + break; + default: + break; + } + + return freq; +} + static int sc8280xp_snd_init(struct snd_soc_pcm_runtime *rtd) { struct sc8280xp_snd_data *data =3D snd_soc_card_get_drvdata(rtd->card); @@ -32,10 +77,6 @@ static int sc8280xp_snd_init(struct snd_soc_pcm_runtime = *rtd) int dp_pcm_id =3D 0; =20 switch (cpu_dai->id) { - case PRIMARY_MI2S_RX...QUATERNARY_MI2S_TX: - case QUINARY_MI2S_RX...QUINARY_MI2S_TX: - snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_BP_FP); - break; case WSA_CODEC_DMA_RX_0: case WSA_CODEC_DMA_RX_1: /* @@ -96,6 +137,31 @@ static int sc8280xp_be_hw_params_fixup(struct snd_soc_p= cm_runtime *rtd, return 0; } =20 +static int sc8280xp_snd_hw_params(struct snd_pcm_substream *substream, + struct snd_pcm_hw_params *params) +{ + struct snd_soc_pcm_runtime *rtd =3D snd_soc_substream_to_rtd(substream); + struct snd_soc_dai *cpu_dai =3D snd_soc_rtd_to_cpu(rtd, 0); + struct sc8280xp_snd_data *data =3D snd_soc_card_get_drvdata(rtd->card); + int mclk_freq =3D sc8280xp_get_mclk_feq(params_rate(params)); + + switch (cpu_dai->id) { + case PRIMARY_MI2S_RX...QUATERNARY_MI2S_TX: + case QUINARY_MI2S_RX...QUINARY_MI2S_TX: + snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_BP_FP); + + if (data->snd_soc_common_priv->mi2s_mclk_enable) + snd_soc_dai_set_sysclk(cpu_dai, + LPAIF_MI2S_MCLK, mclk_freq, + SND_SOC_CLOCK_IN); + break; + default: + break; + }; + + return 0; +} + static int sc8280xp_snd_prepare(struct snd_pcm_substream *substream) { struct snd_soc_pcm_runtime *rtd =3D snd_soc_substream_to_rtd(substream); @@ -117,6 +183,7 @@ static int sc8280xp_snd_hw_free(struct snd_pcm_substrea= m *substream) static const struct snd_soc_ops sc8280xp_be_ops =3D { .startup =3D qcom_snd_sdw_startup, .shutdown =3D qcom_snd_sdw_shutdown, + .hw_params =3D sc8280xp_snd_hw_params, .hw_free =3D sc8280xp_snd_hw_free, .prepare =3D sc8280xp_snd_prepare, }; @@ -145,37 +212,114 @@ static int sc8280xp_platform_probe(struct platform_d= evice *pdev) card =3D devm_kzalloc(dev, sizeof(*card), GFP_KERNEL); if (!card) return -ENOMEM; - card->owner =3D THIS_MODULE; + /* Allocate the private data */ data =3D devm_kzalloc(dev, sizeof(*data), GFP_KERNEL); if (!data) return -ENOMEM; =20 + data->snd_soc_common_priv =3D (struct snd_soc_common *)of_device_get_matc= h_data(dev); + if (!data->snd_soc_common_priv) + return -ENOMEM; + + card->owner =3D THIS_MODULE; card->dev =3D dev; dev_set_drvdata(dev, card); snd_soc_card_set_drvdata(card, data); + card->dapm_widgets =3D data->snd_soc_common_priv->dapm_widgets; + card->num_dapm_widgets =3D data->snd_soc_common_priv->num_dapm_widgets; + card->dapm_routes =3D data->snd_soc_common_priv->dapm_routes; + card->num_dapm_routes =3D data->snd_soc_common_priv->num_dapm_routes; + ret =3D qcom_snd_parse_of(card); if (ret) return ret; =20 - card->driver_name =3D of_device_get_match_data(dev); + card->driver_name =3D data->snd_soc_common_priv->driver_name; sc8280xp_add_be_ops(card); return devm_snd_soc_register_card(dev, card); } =20 +static struct snd_soc_common kaanapali_priv_data =3D { + .driver_name =3D "kaanapali", + .dapm_widgets =3D sc8280xp_dapm_widgets, + .num_dapm_widgets =3D ARRAY_SIZE(sc8280xp_dapm_widgets), +}; + +static struct snd_soc_common qcs9100_priv_data =3D { + .driver_name =3D "sa8775p", + .dapm_widgets =3D sc8280xp_dapm_widgets, + .num_dapm_widgets =3D ARRAY_SIZE(sc8280xp_dapm_widgets), +}; + +static struct snd_soc_common qcs615_priv_data =3D { + .driver_name =3D "qcs615", + .dapm_widgets =3D sc8280xp_dapm_widgets, + .num_dapm_widgets =3D ARRAY_SIZE(sc8280xp_dapm_widgets), + .mi2s_mclk_enable =3D true, +}; + +static struct snd_soc_common qcm6490_priv_data =3D { + .driver_name =3D "qcm6490", + .dapm_widgets =3D sc8280xp_dapm_widgets, + .num_dapm_widgets =3D ARRAY_SIZE(sc8280xp_dapm_widgets), +}; + +static struct snd_soc_common qcs6490_priv_data =3D { + .driver_name =3D "qcs6490", + .dapm_widgets =3D sc8280xp_dapm_widgets, + .num_dapm_widgets =3D ARRAY_SIZE(sc8280xp_dapm_widgets), +}; + +static struct snd_soc_common qcs8275_priv_data =3D { + .driver_name =3D "qcs8300", + .dapm_widgets =3D sc8280xp_dapm_widgets, + .num_dapm_widgets =3D ARRAY_SIZE(sc8280xp_dapm_widgets), +}; + +static struct snd_soc_common sc8280xp_priv_data =3D { + .driver_name =3D "sc8280xp", + .dapm_widgets =3D sc8280xp_dapm_widgets, + .num_dapm_widgets =3D ARRAY_SIZE(sc8280xp_dapm_widgets), +}; + +static struct snd_soc_common sm8450_priv_data =3D { + .driver_name =3D "sm8450", + .dapm_widgets =3D sc8280xp_dapm_widgets, + .num_dapm_widgets =3D ARRAY_SIZE(sc8280xp_dapm_widgets), +}; + +static struct snd_soc_common sm8550_priv_data =3D { + .driver_name =3D "sm8550", + .dapm_widgets =3D sc8280xp_dapm_widgets, + .num_dapm_widgets =3D ARRAY_SIZE(sc8280xp_dapm_widgets), +}; + +static struct snd_soc_common sm8650_priv_data =3D { + .driver_name =3D "sm8650", + .dapm_widgets =3D sc8280xp_dapm_widgets, + .num_dapm_widgets =3D ARRAY_SIZE(sc8280xp_dapm_widgets), +}; + +static struct snd_soc_common sm8750_priv_data =3D { + .driver_name =3D "sm8750", + .dapm_widgets =3D sc8280xp_dapm_widgets, + .num_dapm_widgets =3D ARRAY_SIZE(sc8280xp_dapm_widgets), +}; + static const struct of_device_id snd_sc8280xp_dt_match[] =3D { - {.compatible =3D "qcom,kaanapali-sndcard", "kaanapali"}, - {.compatible =3D "qcom,qcm6490-idp-sndcard", "qcm6490"}, - {.compatible =3D "qcom,qcs615-sndcard", "qcs615"}, - {.compatible =3D "qcom,qcs6490-rb3gen2-sndcard", "qcs6490"}, - {.compatible =3D "qcom,qcs8275-sndcard", "qcs8300"}, - {.compatible =3D "qcom,qcs9075-sndcard", "sa8775p"}, - {.compatible =3D "qcom,qcs9100-sndcard", "sa8775p"}, - {.compatible =3D "qcom,sc8280xp-sndcard", "sc8280xp"}, - {.compatible =3D "qcom,sm8450-sndcard", "sm8450"}, - {.compatible =3D "qcom,sm8550-sndcard", "sm8550"}, - {.compatible =3D "qcom,sm8650-sndcard", "sm8650"}, - {.compatible =3D "qcom,sm8750-sndcard", "sm8750"}, + {.compatible =3D "qcom,kaanapali-sndcard", .data =3D &kaanapali_priv_data= }, + {.compatible =3D "qcom,qcm6490-idp-sndcard", .data =3D &qcm6490_priv_data= }, + {.compatible =3D "qcom,qcs615-sndcard", .data =3D &qcs615_priv_data}, + {.compatible =3D "qcom,qcs6490-rb3gen2-sndcard", .data =3D &qcs6490_priv_= data}, + {.compatible =3D "qcom,qcs8275-sndcard", .data =3D &qcs8275_priv_data}, + {.compatible =3D "qcom,qcs9075-sndcard", .data =3D &qcs9100_priv_data}, + {.compatible =3D "qcom,qcs9100-sndcard", .data =3D &qcs9100_priv_data}, + {.compatible =3D "qcom,sc8280xp-sndcard", .data =3D &sc8280xp_priv_data}, + {.compatible =3D "qcom,sm8450-sndcard", .data =3D &sm8450_priv_data}, + {.compatible =3D "qcom,sm8550-sndcard", .data =3D &sm8550_priv_data}, + {.compatible =3D "qcom,sm8650-sndcard", .data =3D &sm8650_priv_data}, + {.compatible =3D "qcom,sm8750-sndcard", .data =3D &sm8750_priv_data}, {} }; =20 --=20 2.34.1