From nobody Fri Dec 19 17:30:51 2025 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 C8D6A26E143 for ; Mon, 19 May 2025 09:43:54 +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=1747647836; cv=none; b=WcvVHISVuwn+AQ3A3gHeVW3H7y6CZqc4YdYw1u6sSySyk7fOQ7H95spJE1qNUGHGkHlGhkqo7bQCHaNEitT4IpmRkM0f3SRYibvTvcUm8TCy46xV2H8LIEEGK84yolXaP2y4sY7bIwmUkq4oq+My7Ys4R+xHzU44lH0N1QhIMV8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747647836; c=relaxed/simple; bh=T0NWxEeit0FkTClv+OgVI5h2belfjblWs7pI02lhyuA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=WPmgCqZXzzUFWCx6J5MV19VMd2G7Q0rtyj0R7RBEs45qSjrE3oN1Va7QeRA5HXD9NVMkbrPjap+yb3Z/HdIRkdx5IrFN1mk7bgKWSAMsju8VeXc192Wv5crkva5RQkV5i6g69dY9R6LrSj+vre8+b2Rvat9P4VZHeZXr7KhGnsE= 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=Cofpnuv/; 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="Cofpnuv/" Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 54ILaKFN007889 for ; Mon, 19 May 2025 09:43:53 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= qRVHI8/PRu42Vqh4HuSgclK2SbkQHWxggBlquWyWIxQ=; b=Cofpnuv/SbPbPmum mOg/azUhsuV9+yaOnOWWnXp43mis01mYqJ/AuFutf9LrYHERSJD6HZqK+FAIIoc+ 0dsW3IVCzIBrX4xqZEx4iwcFNvOUcUmmlUTwkCaY7KeK3vydbcj9gVFPr7LoLMMm 8PpTb8iyq5gKfYDwoooQrOfoAcssj6cxlpjQiJlHwjP/A8TxnyJQLzJxm4VWaorP fR8m3uLyoh9mctfKKm0vpL+QTCElfnLatCKGL/NNDkCS8yFsEXB1Gxvfh5zghEA2 aV9MChn3tpJsjz/mAF+Jpaw2uT05ew/JKG8UtKqVGS74hAMZEElrkd1wQZ6ZhDCm y4v1UA== Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 46pjm4ku73-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Mon, 19 May 2025 09:43:53 +0000 (GMT) Received: by mail-pf1-f198.google.com with SMTP id d2e1a72fcca58-7394792f83cso3174652b3a.3 for ; Mon, 19 May 2025 02:43:53 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747647816; x=1748252616; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=qRVHI8/PRu42Vqh4HuSgclK2SbkQHWxggBlquWyWIxQ=; b=qdcVk6wAnn2DqOCH08k6EIyir4TTnRseyfaXXSEJ0O/PeiZjZ83wrVeSf+DdAX5qxq SopBBRWsN1YjC/WTEsJfJZG1s1KM+ZI/VMVxrb/UPjH8aEC5S/NdZYiFSCdL564WOuJt yZoRi5rIBL2Z7vjd0zn99BufWGn76rbyVHc98tZUL4B7Tl8+wsZ/RXZasPSAYKExFj/K N8yA7X/hvUYvjhoCoWTexqCd4P9h29Bl4Q2fwT3Dq/tjvuO/Lc58Y/GvH33NSpEAcd09 2YU20OsACSL2F1eXdzWSXlOkA3zoWYqYP47zM+aIKXkD1Q1fAsGPF0vcerqUH+di9Af1 DXJA== X-Forwarded-Encrypted: i=1; AJvYcCU/B8ONqQYrmwdJGNiOBS5BI6j5hnnZtvygMtGkerNUzITZFDLO7myewC9MGG0SHbZw9yjNQL7yuxTRx5Q=@vger.kernel.org X-Gm-Message-State: AOJu0YydrAR2UmPgaqKuM1ZdcV1OiFEn9+ddidLCgEC162zflugm/fyc HQcBsoDmRUj+sMiIbY2nweTxw9HPSRVmqOFxVZTrLj1qv+OfE+UIV8ercDVIT/uaFGRu0AvgMnz y9H+tbdIaVbo6J2P4vRGX8liHPIEZNrs/qATbJmeoFOHEQkspFc2N1WmVeEAdlNt2k0o= X-Gm-Gg: ASbGnctALRmrxxXeHzVhwqifQsbAyErJ8J8YiA3kcOeDo6vTOevlayZasZPcVc08545 ZseCY/a4npyQSXh9HN/m91UVhmzzp5XIjBuvQcD631gQLjATKgSBOUo2SR+CaPoRabVzp2TU+Mp yNVbBGOg2Utw6ZkO1SKn+mjxga8DW7E05kg3mkiNi0UVmGIFBazHBCL1Fx2cjInq6sM5PYN4+1z BLzGKLKCTteT3dL07WhDsMgRI5yVnZzKzSkl7lS/fNolGmIBqeXNcr2n8l5ycamyzd7QpBocLK+ qdfWp8/MGSTT5ZK0K5B76uVt5V/PVIKyuFDO4dSrUvAQe7U= X-Received: by 2002:a05:6a20:258e:b0:1f5:7fcb:397d with SMTP id adf61e73a8af0-2162189eedemr17085540637.16.1747647815826; Mon, 19 May 2025 02:43:35 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGBn3YQuItzmOTeDJuwyBkkScPtNvgmsDQnEm68ODCFtCJxD6yFeqm20eMNewUKrXrunStz3Q== X-Received: by 2002:a05:6a20:258e:b0:1f5:7fcb:397d with SMTP id adf61e73a8af0-2162189eedemr17085507637.16.1747647815410; Mon, 19 May 2025 02:43:35 -0700 (PDT) Received: from hu-krichai-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-742a97398f8sm5809092b3a.78.2025.05.19.02.43.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 19 May 2025 02:43:35 -0700 (PDT) From: Krishna Chaitanya Chundru Date: Mon, 19 May 2025 15:12:24 +0530 Subject: [PATCH v3 11/11] wifi: ath11k: Add support for MHI bandwidth scaling Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250519-mhi_bw_up-v3-11-3acd4a17bbb5@oss.qualcomm.com> References: <20250519-mhi_bw_up-v3-0-3acd4a17bbb5@oss.qualcomm.com> In-Reply-To: <20250519-mhi_bw_up-v3-0-3acd4a17bbb5@oss.qualcomm.com> To: Bjorn Helgaas , =?utf-8?q?Ilpo_J=C3=A4rvinen?= , Jingoo Han , Manivannan Sadhasivam , Lorenzo Pieralisi , =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= , Rob Herring , Johannes Berg , Jeff Johnson , Bartosz Golaszewski Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, mhi@lists.linux.dev, linux-wireless@vger.kernel.org, ath11k@lists.infradead.org, qiang.yu@oss.qualcomm.com, quic_vbadigan@quicinc.com, quic_vpernami@quicinc.com, quic_mrana@quicinc.com, Krishna Chaitanya Chundru , Jeff Johnson , Miaoqing Pan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1747647743; l=3170; i=krishna.chundru@oss.qualcomm.com; s=20230907; h=from:subject:message-id; bh=iRU0Yv6S7aDJfgJ0sXHZ6i8h1thDD71OEAeHK48lWWg=; b=pXC6t6KaeeBZiubaUAqowVVgtQcd663spifrqVy/Jik6wxRwizcXUr66OHogqm7b7P17DWCKX VrPMhEfEqf+B12YjfPKGzQBoQhF857+WH09MfRydBuondK7ulCXpE33 X-Developer-Key: i=krishna.chundru@oss.qualcomm.com; a=ed25519; pk=10CL2pdAKFyzyOHbfSWHCD0X0my7CXxj8gJScmn1FAg= X-Proofpoint-ORIG-GUID: Elkmiv6jQ3OyWN8Oks9fLAp7-5AbrLNj X-Authority-Analysis: v=2.4 cv=C4bpyRP+ c=1 sm=1 tr=0 ts=682afd59 cx=c_pps a=m5Vt/hrsBiPMCU0y4gIsQw==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=dt9VzEwgFbYA:10 a=COk6AnOGAAAA:8 a=EUspDBNiAAAA:8 a=262QNBeyodYRG1lUGOYA:9 a=QEXdDO2ut3YA:10 a=IoOABgeZipijB_acs4fv:22 a=TjNXssC_j7lpFel5tvFf:22 X-Proofpoint-GUID: Elkmiv6jQ3OyWN8Oks9fLAp7-5AbrLNj X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTE5MDA5MiBTYWx0ZWRfX6Gge0BOG7+CB YKSvmia78NPBGAgc8Gt2mRQDxarvzjLxgT0zBZATj+YGNTAoLDrByrALtJpGjYUzImodDP9bBp+ FsbZ+wXunwiwBQnqKw+MyjwmRETmE2WUz5xxwhzzRiSK00gV6sMrX8N6pcPx3u7AaRbESnE0JhM FKUynE5Lm7HfHoBPawyR9tXtRT99GWS/SUvH2YjeT7e1J4kE90N14UeBkxDCD/KqmmCrp91fabX V6X0JY3Saqqb1pu4mG7KU3QgGP8ei9EM/maeKoAAyUMl3J0fetcwcTGpp+S8WdGZob9K+1ru+DH IgjtMd18+EFkUwBa8Dgr6tEQbk+GiINSoNAoq4jGYb+worK0+vQ2tCvOKyWpFCeL0vpjjNLYBsG OK/t0pSLmtSkOtJ439l+EUjF3C+Cl+8RdQHGbl2EZTYc0Fz8JQD7+pF+dO+4JNWLSKWaAaRw X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-05-19_04,2025-05-16_03,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 suspectscore=0 impostorscore=0 adultscore=0 mlxlogscore=999 spamscore=0 lowpriorityscore=0 phishscore=0 mlxscore=0 bulkscore=0 clxscore=1015 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2505070000 definitions=main-2505190092 From: Miaoqing Pan Add support for MHI bandwidth scaling, which will reduce power consumption if WLAN operates with lower bandwidth. This feature is only enabled for QCA6390. Bandwidth scaling is initiated by the endpoint firmware based upon the bandwidth requirements, if there is high bandwidth data endpoint requests for higher data rates or if there is less bandwidth they request for lower data rates to reduce power. Endpoint initiates this through MHI protocol. Tested-on: WCN6855 hw2.1 PCI WLAN.HSP.1.1-04546-QCAHSPSWPL_V1_V2_SILICONZ_I= OE-1 Signed-off-by: Miaoqing Pan Signed-off-by: Krishna Chaitanya Chundru --- drivers/net/wireless/ath/ath11k/mhi.c | 41 +++++++++++++++++++++++++++++++= ++++ 1 file changed, 41 insertions(+) diff --git a/drivers/net/wireless/ath/ath11k/mhi.c b/drivers/net/wireless/a= th/ath11k/mhi.c index fc77eac83e953148b96cad096d26b32222157b24..8057031d654d794f9e882a975f9= 9083c193e492c 100644 --- a/drivers/net/wireless/ath/ath11k/mhi.c +++ b/drivers/net/wireless/ath/ath11k/mhi.c @@ -20,6 +20,7 @@ #define MHI_TIMEOUT_DEFAULT_MS 20000 #define RDDM_DUMP_SIZE 0x420000 #define MHI_CB_INVALID 0xff +#define MHI_BW_SCALE_CHAN_DB 126 =20 static const struct mhi_channel_config ath11k_mhi_channels_qca6390[] =3D { { @@ -73,6 +74,17 @@ static struct mhi_event_config ath11k_mhi_events_qca6390= [] =3D { .client_managed =3D false, .offload_channel =3D false, }, + { + .num_elements =3D 8, + .irq_moderation_ms =3D 0, + .irq =3D 1, + .mode =3D MHI_DB_BRST_DISABLE, + .data_type =3D MHI_ER_BW_SCALE, + .priority =3D 2, + .hardware_event =3D false, + .client_managed =3D false, + .offload_channel =3D false, + }, }; =20 static const struct mhi_controller_config ath11k_mhi_config_qca6390 =3D { @@ -313,6 +325,33 @@ static void ath11k_mhi_op_write_reg(struct mhi_control= ler *mhi_cntrl, writel(val, addr); } =20 +static int ath11k_mhi_op_get_misc_doorbell(struct mhi_controller *mhi_cntr= l, + enum mhi_er_data_type type) +{ + if (type =3D=3D MHI_ER_BW_SCALE) + return MHI_BW_SCALE_CHAN_DB; + + return -EINVAL; +} + +static int ath11k_mhi_op_bw_scale(struct mhi_controller *mhi_cntrl, + struct mhi_link_info *link_info) +{ + enum pci_bus_speed speed =3D pci_lnkctl2_bus_speed(link_info->target_link= _speed); + struct ath11k_base *ab =3D dev_get_drvdata(mhi_cntrl->cntrl_dev); + struct pci_dev *pci_dev =3D to_pci_dev(ab->dev); + struct pci_dev *pdev; + + if (!pci_dev) + return -EINVAL; + + pdev =3D pci_upstream_bridge(pci_dev); + if (!pdev) + return -ENODEV; + + return pcie_set_target_speed(pdev, speed, true); +} + static int ath11k_mhi_read_addr_from_dt(struct mhi_controller *mhi_ctrl) { struct device_node *np; @@ -389,6 +428,8 @@ int ath11k_mhi_register(struct ath11k_pci *ab_pci) mhi_ctrl->status_cb =3D ath11k_mhi_op_status_cb; mhi_ctrl->read_reg =3D ath11k_mhi_op_read_reg; mhi_ctrl->write_reg =3D ath11k_mhi_op_write_reg; + mhi_ctrl->bw_scale =3D ath11k_mhi_op_bw_scale; + mhi_ctrl->get_misc_doorbell =3D ath11k_mhi_op_get_misc_doorbell; =20 switch (ab->hw_rev) { case ATH11K_HW_QCN9074_HW10: --=20 2.34.1