From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 6868044B68D; Thu, 7 May 2026 16:06:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778169978; cv=none; b=seWmVEkaMO7XtPf2dACNhBLFEIfmqZabVrabjj8fy8+4lcx9nqpH0QMi+7sB2iM+L9CLpCRrf6CThV2L0caczxoPOUoOqVmYd6HeoPX1e82QHBD4lx5rd17kqVED4ZtdEPAB++bAnNMM+9ULNJp5B0Mq1UsZXXe87Fle0/CoRMs= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778169978; c=relaxed/simple; bh=4n1I9oI3eMG4upUXXN8n/9Z86UiaZWYxbvDtBalxfHw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=u2VlyrqFBKmXDEffTnRlW9JgVCJmdk9me7XQS5qKScmu3CFzde9NnYsWobkbq5hxS0b+lR7Y+UYUpN+IcSKZ7bp7+/X84obOK3lyi7YztjCFDvWentjOs3itLWjFCmvfSjlRgm4RUbCfvYRQY6yVlSiFTasMBSNKQKRPs2jN5wU= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=V/51pAYb; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="V/51pAYb" Received: by smtp.kernel.org (Postfix) with ESMTPS id 41909C2BCFA; Thu, 7 May 2026 16:06:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1778169978; bh=4n1I9oI3eMG4upUXXN8n/9Z86UiaZWYxbvDtBalxfHw=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=V/51pAYbAf0pcVgxwacJ2Xyq+cuCy3NAPCVtWHSFYw3mogx2bFEgv0MEda3ijBSiR 1oGZslfDiv8KqbqR382/u90+Pfk4bHU/t2rnNgC++BRHiEpMzg2y7fHZiInj2wrkSC QkEFdNeql+EfoUnvfCMk0nULBQCjPOk6BREXFBMQ9s1pKlBZ0xqxPs+hQ/7sY1FU1p WveOiD9kYNcQgrCFSNj8kw9naL3N0YmYIv4mvLJSJoK9881P50rCRpgTHpGsckIgQM 64O5ScDsaniYP57S+2dqY4LtV7CzQw6cTW0HqBeqQaB50pumT0naJ8lr1Zcb+e3wFN K5SRcCI5Z0jCg== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 39863CD343B; Thu, 7 May 2026 16:06:18 +0000 (UTC) From: Manivannan Sadhasivam via B4 Relay Date: Thu, 07 May 2026 21:36:13 +0530 Subject: [PATCH v2 5/9] power: sequencing: pcie-m2: Create BT node based on the pci_device_id[] table Precedence: bulk X-Mailing-List: linux-pm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20260507-pwrseq-m2-bt-v2-5-1740bd478539@oss.qualcomm.com> References: <20260507-pwrseq-m2-bt-v2-0-1740bd478539@oss.qualcomm.com> In-Reply-To: <20260507-pwrseq-m2-bt-v2-0-1740bd478539@oss.qualcomm.com> To: Bartosz Golaszewski , Manivannan Sadhasivam , Marcel Holtmann , Luiz Augusto von Dentz , Shuai Zhang Cc: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-bluetooth@vger.kernel.org, Wei Deng , Luiz Augusto von Dentz , Manivannan Sadhasivam X-Mailer: b4 0.15.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=3150; i=manivannan.sadhasivam@oss.qualcomm.com; h=from:subject:message-id; bh=xjEm538gZBQEYn7oXNptHVF8tgSr+6Z5aqABuWX2NJ4=; b=owEBbQGS/pANAwAKAVWfEeb+kc71AcsmYgBp/Lh3GF+LKDHDTzP32ISWBbWA+aulCjKfYYm/4 +4h88PcA42JATMEAAEKAB0WIQRnpUMqgUjL2KRYJ5dVnxHm/pHO9QUCafy4dwAKCRBVnxHm/pHO 9aySB/0YT7cVdCU8BXzt6eK4adbfX2b1bCryMl6/yQx2rTULDy84LDi9fl1gABZXAS33kBp3o0s Ist/m/urLflOd55P5TahBo7YcBlLes7y2jAyQHo++LfTWQSm7Wzsl/sUKy5sdQZIkQjiZllbs5w ww3ig7P5rQFq51LEEbAGQeBP/+v7Gd0KYlDqmVsZyOEyhNIOE2MpQ+hR91sFxHtmJGVcwczTNGc Hk+NFf1hencRYFEG68VbvmQunm++6vuhgmIzUP2LnP2GVCDYlIoV61+b1dXY1ugzH8X/iz68vt0 i+uaz+ily2+AS0UWyA0w4I0F6MWAjpOtzC+oyaEd8Bs3AxCv X-Developer-Key: i=manivannan.sadhasivam@oss.qualcomm.com; a=openpgp; fpr=C668AEC3C3188E4C611465E7488550E901166008 X-Endpoint-Received: by B4 Relay for manivannan.sadhasivam@oss.qualcomm.com/default with auth_id=461 X-Original-From: Manivannan Sadhasivam Reply-To: manivannan.sadhasivam@oss.qualcomm.com From: Manivannan Sadhasivam Currently, pwrseq_pcie_m2_create_bt_node() hardcodes the BT compatible for creating the devicetree node. But to allow adding support for more devices in the future, create the BT node based on the pci_device_id[] table. The BT compatible is passed using 'driver_data'. Co-developed-by: Wei Deng Signed-off-by: Wei Deng Signed-off-by: Manivannan Sadhasivam --- drivers/power/sequencing/pwrseq-pcie-m2.c | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/drivers/power/sequencing/pwrseq-pcie-m2.c b/drivers/power/sequencing/pwrseq-pcie-m2.c index 0a37a375a89d..efeb25ba9c79 100644 --- a/drivers/power/sequencing/pwrseq-pcie-m2.c +++ b/drivers/power/sequencing/pwrseq-pcie-m2.c @@ -185,14 +185,29 @@ static int pwrseq_pcie_m2_match(struct pwrseq_device *pwrseq, return PWRSEQ_NO_MATCH; } +static const struct pci_device_id pwrseq_m2_pci_ids[] = { + { PCI_DEVICE(PCI_VENDOR_ID_QCOM, 0x1107), + .driver_data = (kernel_ulong_t)"qcom,wcn7850-bt" }, + { } /* Sentinel */ +}; + static int pwrseq_pcie_m2_create_bt_node(struct pwrseq_pcie_m2_ctx *ctx, struct pwrseq_pci_dev *pci_dev, - struct device_node *parent) + struct device_node *parent, + struct pci_dev *pdev) { + const struct pci_device_id *id; struct device *dev = ctx->dev; + const char *compatible; struct device_node *np; int ret; + id = pci_match_id(pwrseq_m2_pci_ids, pdev); + if (WARN_ON_ONCE(!id)) /* Shouldn't happen */ + return -ENODEV; + + compatible = (const char *)id->driver_data; + pci_dev->ocs = kzalloc_obj(*pci_dev->ocs); if (!pci_dev->ocs) return -ENOMEM; @@ -206,7 +221,7 @@ static int pwrseq_pcie_m2_create_bt_node(struct pwrseq_pcie_m2_ctx *ctx, goto err_destroy_changeset; } - ret = of_changeset_add_prop_string(pci_dev->ocs, np, "compatible", "qcom,wcn7850-bt"); + ret = of_changeset_add_prop_string(pci_dev->ocs, np, "compatible", compatible); if (ret) { dev_err(dev, "Failed to add bluetooth compatible: %d\n", ret); goto err_destroy_changeset; @@ -281,13 +296,14 @@ static int __pwrseq_pcie_m2_create_serdev(struct pwrseq_pcie_m2_ctx *ctx, goto err_free_pci_dev; } - ret = pwrseq_pcie_m2_create_bt_node(ctx, pci_dev, serdev_parent); + ret = pwrseq_pcie_m2_create_bt_node(ctx, pci_dev, serdev_parent, pdev); if (ret) goto err_free_serdev; ret = serdev_device_add(pci_dev->serdev); if (ret) { - dev_err(dev, "Failed to add serdev for WCN7850: %d\n", ret); + dev_err(dev, "Failed to add serdev for PCI device (%s): %d\n", + pci_name(pdev), ret); goto err_free_dt_node; } @@ -353,11 +369,6 @@ static void pwrseq_pcie_m2_remove_serdev(struct pwrseq_pcie_m2_ctx *ctx, mutex_unlock(&ctx->list_lock); } -static const struct pci_device_id pwrseq_m2_pci_ids[] = { - { PCI_DEVICE(PCI_VENDOR_ID_QCOM, 0x1107) }, - { } /* Sentinel */ -}; - static int pwrseq_pcie_m2_notify(struct notifier_block *nb, unsigned long action, void *data) { -- 2.51.0