From nobody Thu Apr 9 07:16:55 2026 Received: from mail-pf1-f171.google.com (mail-pf1-f171.google.com [209.85.210.171]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D4A1A43DA29 for ; Tue, 10 Mar 2026 09:19:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773134401; cv=none; b=tg5AMddQM+G7RJcs6V0MqbBs0KgAUsqmorE0nMH6nnIdzozrd7Pwnw/CNRcyru15OjnTyRfuvlO1yyjlJBmCxplwe0taBL19w2LGz3XmlwUI327L2eh1XQAtx6KTHHSVDV+J16l+7ugQhLMOiECtE9tLeEFCFvpnKOQasvUoyo8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773134401; c=relaxed/simple; bh=lkTJEg59Xh1VTRhuvYCp7e3NEDvWSHHkSPwDRKRiOJA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=fy9O3/aHzObILjO/vikxovhp0QT+akkj1R1f+tYTHW1/CNtsVpNC/zfQOC9EsmyEhhQnwXWQ7fHm/IaXMUGxGA09pD40ch/0e4n0xfberFgZnDdtv2SdwVprokuQAEozsDZzf0JZxRq+cZAgY/g/3X5FPinG6/piYNBH20zIgzw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=dl3DwnRy; arc=none smtp.client-ip=209.85.210.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="dl3DwnRy" Received: by mail-pf1-f171.google.com with SMTP id d2e1a72fcca58-8297e0b27e5so3411878b3a.1 for ; Tue, 10 Mar 2026 02:19:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1773134399; x=1773739199; 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=QwT2Q2k4ZVZq63ntd2xl/RXmkonC2qNh8yVsjLAAWlg=; b=dl3DwnRyGwE2MXJCMJuVNURwp5HYBmF3igd8jjy4dnS49nt0UajKK8tF247LQq8KMn EE8SXi3RA5Sr2sDfR4Pds03cJ7vOjWQxuLuuds4IdrtjQogVuJpuCT9ebhGh3VZ+Fnvk Xpu6hmSMw9MkCrVfmeOE8F6Mcg4cS9k1azMpo= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773134399; x=1773739199; 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=QwT2Q2k4ZVZq63ntd2xl/RXmkonC2qNh8yVsjLAAWlg=; b=ruWtCMmVmdvOg/ADbA1tb7gACven0247e5yRXQSaz1jPtpM2FlltbYtR16WTn2lH44 Rm0cWDLUiXfnfJPkqwHDjAKQLj11GIjnwPgEgncShEU9Issq09vzbGsFqFHvpnu5C78m sfX3ONMugvKcOmg35GPMDeqDcnLOhvlU9y0cPQNh5KBBoW1HW+R4vNB95OXAgeIZCYwx ILmNc7+x90+BHxkyjuCqf1VaSLFXWIs4wGwGlRuATAg3xWlbM+zBQ4DSfIWrfifqqS9j rBNTGOYz28r4xdeL9w7JefiDJ5tz52fTmvGjlGD0i31q/nxITyn+2lQs4ZEd+cJ8DCkI x8UQ== X-Forwarded-Encrypted: i=1; AJvYcCWNKdtE3BJA8B1IVdLYEL24GtVpvpAud7NiltFZ3E7KzCGKGdpJZLewFTmYBSlrmDF2ugTDxkrLmuKNNuc=@vger.kernel.org X-Gm-Message-State: AOJu0YzzkFfjar5Pfyk8Qmkc/GAz4z3R06blX4H4DuLoix5FBPONbCpn Y+TQEFWKgOWE5WtPrkeEGqSfBHxVwKdVllSmoNVOnAmgr5+VmihortL9PAyxjzID1w== X-Gm-Gg: ATEYQzzIEU2M4x3Qs/+d3+AJZqwLMQz5qEqMCaF1aEMgE+BfC8njiqZVPrVYyhHH8uB jjwvysPsIJs4k5bEXsloyLsVW1Vl65UUjvhvzqvUmvzDV974bJQWzhDgSCTTCcU73/1PL29Nq8u TIsaXM6juJnyk4fE1Z079Ed/yIYWnBxj7ujHiFUB0Z755qWxr1lBNELoYgMdFQkI8NbXoXGA6aq /YEvDAtAZFPezhoRjZOXZgkKJfL2gSgf3+Ov63uUu8Qp72o19MF8QcgS1BxQ7vIeJTXOqtUevef zwDVczQRDUznHJd6Ms2jKEZxmDvwa3gEFM6PwnRS54IGriW/QIoRUx2KVXbVccVPtK6LBmQYSVB WkN2FcVgkONQfGeCz12kJALHAhjPQopJyqvqxqhJIwAednxio87kBAoP9SVIfCzsL0TfJQAPtOZ N11SPOOnyREa0/DpmQn7GcsATPs/h1xez1FqEdpm2iauzZu93iQIESsLFbVtguw8J6hnkprOr/p 9EJ48fG X-Received: by 2002:a05:6a00:aa03:b0:824:b181:f492 with SMTP id d2e1a72fcca58-829a2f9ba69mr13107253b3a.45.1773134399292; Tue, 10 Mar 2026 02:19:59 -0700 (PDT) Received: from wenstp920.tpe.corp.google.com ([2a00:79e0:201d:8:ee38:e01e:e888:6900]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-829a48a3b74sm16965190b3a.45.2026.03.10.02.19.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Mar 2026 02:19:58 -0700 (PDT) From: Chen-Yu Tsai To: Matthias Brugger , AngeloGioacchino Del Regno , Ryder Lee , Lorenzo Pieralisi , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Manivannan Sadhasivam , Rob Herring , Bjorn Helgaas Cc: Chen-Yu Tsai , Bartosz Golaszewski , linux-pci@vger.kernel.org, linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org, Bartosz Golaszewski Subject: [PATCH v4 1/7] PCI: mediatek-gen3: Clean up mtk_pcie_parse_port() with dev_err_probe() Date: Tue, 10 Mar 2026 17:19:40 +0800 Message-ID: <20260310091947.2742004-2-wenst@chromium.org> X-Mailer: git-send-email 2.53.0.473.g4a7958ca14-goog In-Reply-To: <20260310091947.2742004-1-wenst@chromium.org> References: <20260310091947.2742004-1-wenst@chromium.org> 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 Content-Type: text/plain; charset="utf-8" mtk_pcie_parse_port() in the pcie-mediatek-gen driver has a bunch of if (err) { dev_err(dev, "error message\n"); return err; # or goto } patterns. Simplify these with dev_err_probe(). The system also gains proper deferred probe messages that can be seen in /sys/kernel/debug/devices_deferred Reviewed-by: AngeloGioacchino Del Regno Reviewed-by: Bartosz Golaszewski Reviewed-by: Manivannan Sadhasivam Signed-off-by: Chen-Yu Tsai --- drivers/pci/controller/pcie-mediatek-gen3.c | 36 ++++++--------------- 1 file changed, 10 insertions(+), 26 deletions(-) diff --git a/drivers/pci/controller/pcie-mediatek-gen3.c b/drivers/pci/cont= roller/pcie-mediatek-gen3.c index 75ddb8bee168..1939cac995b5 100644 --- a/drivers/pci/controller/pcie-mediatek-gen3.c +++ b/drivers/pci/controller/pcie-mediatek-gen3.c @@ -876,10 +876,8 @@ static int mtk_pcie_parse_port(struct mtk_gen3_pcie *p= cie) if (!regs) return -EINVAL; pcie->base =3D devm_ioremap_resource(dev, regs); - if (IS_ERR(pcie->base)) { - dev_err(dev, "failed to map register base\n"); - return PTR_ERR(pcie->base); - } + if (IS_ERR(pcie->base)) + return dev_err_probe(dev, PTR_ERR(pcie->base), "failed to map register b= ase\n"); =20 pcie->reg_base =3D regs->start; =20 @@ -888,34 +886,20 @@ static int mtk_pcie_parse_port(struct mtk_gen3_pcie *= pcie) =20 ret =3D devm_reset_control_bulk_get_optional_shared(dev, num_resets, pcie->phy_resets); - if (ret) { - dev_err(dev, "failed to get PHY bulk reset\n"); - return ret; - } + if (ret) + return dev_err_probe(dev, ret, "failed to get PHY bulk reset\n"); =20 pcie->mac_reset =3D devm_reset_control_get_optional_exclusive(dev, "mac"); - if (IS_ERR(pcie->mac_reset)) { - ret =3D PTR_ERR(pcie->mac_reset); - if (ret !=3D -EPROBE_DEFER) - dev_err(dev, "failed to get MAC reset\n"); - - return ret; - } + if (IS_ERR(pcie->mac_reset)) + return dev_err_probe(dev, PTR_ERR(pcie->mac_reset), "failed to get MAC r= eset\n"); =20 pcie->phy =3D devm_phy_optional_get(dev, "pcie-phy"); - if (IS_ERR(pcie->phy)) { - ret =3D PTR_ERR(pcie->phy); - if (ret !=3D -EPROBE_DEFER) - dev_err(dev, "failed to get PHY\n"); - - return ret; - } + if (IS_ERR(pcie->phy)) + return dev_err_probe(dev, PTR_ERR(pcie->phy), "failed to get PHY\n"); =20 pcie->num_clks =3D devm_clk_bulk_get_all(dev, &pcie->clks); - if (pcie->num_clks < 0) { - dev_err(dev, "failed to get clocks\n"); - return pcie->num_clks; - } + if (pcie->num_clks < 0) + return dev_err_probe(dev, pcie->num_clks, "failed to get clocks\n"); =20 ret =3D of_property_read_u32(dev->of_node, "num-lanes", &num_lanes); if (ret =3D=3D 0) { --=20 2.53.0.473.g4a7958ca14-goog From nobody Thu Apr 9 07:16:55 2026 Received: from mail-pf1-f182.google.com (mail-pf1-f182.google.com [209.85.210.182]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BA70243D4EF for ; Tue, 10 Mar 2026 09:20:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773134404; cv=none; b=BlRXgSFg74urWf5dTGHpct0m4mRwhACAZsdvcs4U9Ap1hEjTCWHBgCZW97qS08e3iQEMV26VOFgaV13R7l4KA3iz3IV50kti7S39fCzL4Ibe6EHySwFgpDSHIQ1tGZX6RRSl7ATcvfn4HQM4f6a7ufxhYX7ufUDwejtnRaEGbss= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773134404; c=relaxed/simple; bh=Wj0U1ds5tnOHTv5YHW1mT+V8EiMFt+tECNQnEdXijVc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=QS+e1MCF6jJUYKpV106NHdo/2RW9qjl+m3eWsXtkbubyvsJPVHVZ4EEk79wMJFFUwrqEn5gaW/k8C1+05kVfQ/VNPgugL3dXXgwtRDEbAxcXDGX6diAjz40S3/UdBfBtUFzpBJIta/f3GiHM9viuOMhASx+Ku0Qsxt9BD2LT5Qc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=Fnid4vXS; arc=none smtp.client-ip=209.85.210.182 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="Fnid4vXS" Received: by mail-pf1-f182.google.com with SMTP id d2e1a72fcca58-82735a41920so4678608b3a.2 for ; Tue, 10 Mar 2026 02:20:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1773134402; x=1773739202; 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=0m2X60AbRiPH6OZp8R6Aq2XdXF8mhqQvbj4ZWhmMt60=; b=Fnid4vXS4xZDnRuwOGeJ4+bLvWvkMe+/sEaYJSB9upuBoc6ws0n+s0GUgFEoYPXFFJ VNuFmdf48zEodW/lyLPFC/BOFpqhBpsV6wyu1FMHEkXjswSHDhqTBZEme0YkINblk6tS lDsJyXanlvPbemBX8wrWNvY6hPl8ziMPrnjbs= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773134402; x=1773739202; 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=0m2X60AbRiPH6OZp8R6Aq2XdXF8mhqQvbj4ZWhmMt60=; b=wtcWuoJFxAW6ywMe0hPtr1LRzoLR2Pyozd+G7tTA1mu9FY9yvaEiQB0fqZrHBH7FWK VGsSjEZ2AKCEx+vDVwyfqeOul+tUDFV+I9nBX7PRh367SzDaqDcx9ue55MxPWd8wpEek neBHqG8bbv3zofdefr7vlTXzgRQO4hFJJEECSV4zIp3ivXI4OOKUv8H/iE3cTpg6cSn0 e8xpmjRtah3CAxgDTKVkR7m4SYl7TxD10Iwx3ML05BDqsItgrKs8SLnBg5hhgInSE8se X+oAqjpF7nGinsrZdMzkInPijdEFr6C4dJpb68e88Zg3V+buSTTfX9Psox7MqMnrqFpr 6iDQ== X-Forwarded-Encrypted: i=1; AJvYcCWj0e4k+2gMdUyWlIHpBgW6B3CzCgrPGPpHYzlf7wyRIan4JUMuFoPoOY0KHrA81yQtcfvgumn9nf18YZ8=@vger.kernel.org X-Gm-Message-State: AOJu0YzfN2/gFD0AuErkO6nkIdX+WqgToIAEsniDckhPmvH6JsSu9fGn KFURpA6awhxxSDw3Wn3tVcoGHyIVHJ5iaYwmtB4W7dKu2XCCIUiEEhs396aYCOhcug== X-Gm-Gg: ATEYQzzhczk3Er6ehtTVznNSIAqvsjoVGexLD3hJ+dxlZrKe4/LXrcNViClNQZfUdzo xVk0qTLb2+rKF9yMig3TypZHr9PjbD6Qu/xPwuPiyoTrKfX3pY+HLX8fOZ/L3g07z3SEj0G7oiz B5srUeocuvrY5Ms4jQZYC/tuXAUXUjLY7Hk5WUHMOQ7zMpXdcJm6OhIyJg1EDyFoxCNPEEEq+qK lxWZmkSM36xKp01q6nG/6/D+Sq1XF9e0p6ltnN6xIPONcHQ8NpMprpHfDgRKZmMz5s5HjwlAYVO HKFQi2bvULL8ioNyJ2Dwip9Qr6qyAaNPzR2UQhHxs0Ahi89Xs5kX/JfX9v90MoldcrOsQ8HWTSH bmWb5VDuaXNoZCq/C52tin6UOv3cnkxtuEc8V7Of9FGd6X4lClPbK+RAYGImbdMiSnyh+DFmrMU 4FFarfdNv/cu1eakR5HUhkJeXzMVmldWdI36BzZ7u/DZeHcwkhE0zaDXYz3JiByfWYsCdeO9rQH YoZx59r X-Received: by 2002:a05:6a00:9510:b0:829:7ee0:1a44 with SMTP id d2e1a72fcca58-829a2d86b38mr12332941b3a.4.1773134402170; Tue, 10 Mar 2026 02:20:02 -0700 (PDT) Received: from wenstp920.tpe.corp.google.com ([2a00:79e0:201d:8:ee38:e01e:e888:6900]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-829a48a3b74sm16965190b3a.45.2026.03.10.02.19.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Mar 2026 02:20:01 -0700 (PDT) From: Chen-Yu Tsai To: Matthias Brugger , AngeloGioacchino Del Regno , Ryder Lee , Lorenzo Pieralisi , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Manivannan Sadhasivam , Rob Herring , Bjorn Helgaas Cc: Chen-Yu Tsai , Bartosz Golaszewski , linux-pci@vger.kernel.org, linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org, Bjorn Helgaas Subject: [PATCH v4 2/7] PCI: mediatek-gen3: Move mtk_pcie_setup_irq() out of mtk_pcie_setup() Date: Tue, 10 Mar 2026 17:19:41 +0800 Message-ID: <20260310091947.2742004-3-wenst@chromium.org> X-Mailer: git-send-email 2.53.0.473.g4a7958ca14-goog In-Reply-To: <20260310091947.2742004-1-wenst@chromium.org> References: <20260310091947.2742004-1-wenst@chromium.org> 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 Content-Type: text/plain; charset="utf-8" mtk_pcie_setup_irq() just sets up the IRQ domains for PCI INTx and MSI, and chains them to the controller's interrupt. It's not really related to the setup of the actual PCIe controller. Move the mtk_pcie_setup_irq() call out of and before mtk_pcie_setup(), and add a proper error message for when it fails. Reorder mtk_pcie_irq_teardown() in the remove callback to follow. Also create an error path in the probe function. Suggested-by: Bjorn Helgaas Link: https://lore.kernel.org/all/20260309215056.GA603013@bhelgaas/ Signed-off-by: Chen-Yu Tsai --- Changes since v3: - New patch --- drivers/pci/controller/pcie-mediatek-gen3.c | 25 ++++++++++++--------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/drivers/pci/controller/pcie-mediatek-gen3.c b/drivers/pci/cont= roller/pcie-mediatek-gen3.c index 1939cac995b5..04ae195d36c2 100644 --- a/drivers/pci/controller/pcie-mediatek-gen3.c +++ b/drivers/pci/controller/pcie-mediatek-gen3.c @@ -1152,10 +1152,6 @@ static int mtk_pcie_setup(struct mtk_gen3_pcie *pcie) if (err) goto err_setup; =20 - err =3D mtk_pcie_setup_irq(pcie); - if (err) - goto err_setup; - return 0; =20 err_setup: @@ -1181,21 +1177,28 @@ static int mtk_pcie_probe(struct platform_device *p= dev) pcie->soc =3D device_get_match_data(dev); platform_set_drvdata(pdev, pcie); =20 + err =3D mtk_pcie_setup_irq(pcie); + if (err) + return dev_err_probe(dev, err, "Failed to setup IRQ domains\n"); + err =3D mtk_pcie_setup(pcie); if (err) - return err; + goto err_tear_down_irq; =20 host->ops =3D &mtk_pcie_ops; host->sysdata =3D pcie; =20 err =3D pci_host_probe(host); - if (err) { - mtk_pcie_irq_teardown(pcie); - mtk_pcie_power_down(pcie); - return err; - } + if (err) + goto err_power_down_pcie; =20 return 0; + +err_power_down_pcie: + mtk_pcie_power_down(pcie); +err_tear_down_irq: + mtk_pcie_irq_teardown(pcie); + return err; } =20 static void mtk_pcie_remove(struct platform_device *pdev) @@ -1208,8 +1211,8 @@ static void mtk_pcie_remove(struct platform_device *p= dev) pci_remove_root_bus(host->bus); pci_unlock_rescan_remove(); =20 - mtk_pcie_irq_teardown(pcie); mtk_pcie_power_down(pcie); + mtk_pcie_irq_teardown(pcie); } =20 static void mtk_pcie_irq_save(struct mtk_gen3_pcie *pcie) --=20 2.53.0.473.g4a7958ca14-goog From nobody Thu Apr 9 07:16:55 2026 Received: from mail-pf1-f178.google.com (mail-pf1-f178.google.com [209.85.210.178]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CC1FD43DA47 for ; Tue, 10 Mar 2026 09:20:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773134408; cv=none; b=KYS2zscjnNTyhQT07ig2gksXv0yy54uQzVdsQJjEsxKRF1c7JdbmE6O9boy+lcC0OBN9L7kLv8i2oFWxYWdoiLaz8D8EgMxzduttYOHg+SfRpn3lxIf6Yq77BnOhMJXEL26L+6N81jdyVOkqNOjuoYxwVcnwB6U9BGEl8ul41MQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773134408; c=relaxed/simple; bh=GSJVUxAQ4MHmSdHnYI6IronOb7V0sQaRba+BpfCLK2g=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=mzy2tS2yku6cP+SrHqlc+CNnLniM7+ssShcS3zRp5yWFXEJGnew8Tqvl9/LxiAQKRxIA0P7B9Ia1P0c+OTfPglAPIbDkIQYf1FMObJFhKM7pV4HUeMPwr+Wz1YYOqqDX1gtcxpG8cTo+KyU4fgncSC6j0G1szQQex2yl+GLgZww= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=h6/oY3Nf; arc=none smtp.client-ip=209.85.210.178 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="h6/oY3Nf" Received: by mail-pf1-f178.google.com with SMTP id d2e1a72fcca58-823c56765fdso6285722b3a.1 for ; Tue, 10 Mar 2026 02:20:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1773134405; x=1773739205; 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=VkopRVj6tuJbWd5GjoKb9TnBTEgj+l2ZbxAGzKv8UNM=; b=h6/oY3Nf38cK1W1GDQh1uyOe1H42OKQ5RF1f1bdFfBEuJzBNxcLSGom76KKDd/x0Y4 AqtkA5IjJaVsFqNEN86979tyoh5KEQF3775d7ryNgGNN9TcH/v/reuXz+vMxTR5BNDa3 i3tawlOwqPmWnGJ+2yKaTv5ueJavGCvdnVYlo= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773134405; x=1773739205; 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=VkopRVj6tuJbWd5GjoKb9TnBTEgj+l2ZbxAGzKv8UNM=; b=eHb3ftY/dVnK4YOKKocaNZ8BC5PPHCLAjR5PjBmH62H1+8/o/cquJyBX2Mog/xRF7c iOdYGLfU1CSmhOFbmo4Jten2tOpNnWlZOj62uFb+Dd8Smae/S83Fs5GoqHV4MIf28uo3 pdnG30HnTrYlekc+JjBLZ7ehhxhP2EfRb0QhIfqE/v7LQh9U6rAQtGdXr3KWKqiV7Hl4 Tj52y71Gry7XgoruJU1pUwlsSJkcmapcSCBWTlor6lm9d7kiJ2RBFBfTBWX1nj5vZ+B9 +/H68PW8ZqT0p3A4Fv6jhtYPFqY4TpSEPgrnUk2svPTmxu1QTmX14kLGQivF2Fvu1rao WTWA== X-Forwarded-Encrypted: i=1; AJvYcCX4d0J5I3AyD4kuxAAQ3Lqe/2a7O937T0KvLc1gT9JzKLovyaUozVd/eh2rzLFs3l0L531a3mSqpfhYonI=@vger.kernel.org X-Gm-Message-State: AOJu0YzCohVWUcPIrMfhx1nX1YvgPDidYQrvKdMlEyD8Al0lZo/dnOC0 9i9B9QJw15kOBOQxTuMf/jV3e4y0p3WQHOmJ/Cb9FQs/Ydm+ksFhC1P8KuqgmKNj5A== X-Gm-Gg: ATEYQzz+OW/52gCS2cPdA6gc0q0liq/delxqVHEEv5Z5REqxe5JsYVKSol8I5i7UWsm F91qpoqfnl/hz0Xe9sBQw5Zelv4rXvLMeOFT1auetCDn3mqi5Z1nivEETE761yBPmZHscljPViC NN0+AqJVOFPG4KncK8Cq9ioB+C6IYOROWj2zrWTglLtH8dZql/yV1qGyyL1S46kOCSPISB9BkXz AP+0El0h/Mxq9kV3+JS0S6wTwGw1op179bOW+jU+oRJKq/1OEiC1y7tld0zNvbVu8htaUSBY6Re T7Y9D48Wr/7VMXh8WWnjdJNvYtCImWnpcvjT7enxGexurNzJUhgpQJTKU2SVrNw0GY7sG1Vt4ZT 9B8BKF4uinAeWGVGlIieB+FXj1h8OO6I1gMojxKX9EwKZAa1xQydcxvRKVNakyT+KDsTg91GBKI OOhfYZLjILChU61FP2ZzgWa+ufec/Sv7i6r/pn/vpGwqu5UPEAxroJM/EwvkuzODgPJoLIzLW8r wbm5n8c X-Received: by 2002:a05:6a00:3a1c:b0:829:737e:7d77 with SMTP id d2e1a72fcca58-829a30d131dmr13244794b3a.66.1773134405103; Tue, 10 Mar 2026 02:20:05 -0700 (PDT) Received: from wenstp920.tpe.corp.google.com ([2a00:79e0:201d:8:ee38:e01e:e888:6900]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-829a48a3b74sm16965190b3a.45.2026.03.10.02.20.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Mar 2026 02:20:04 -0700 (PDT) From: Chen-Yu Tsai To: Matthias Brugger , AngeloGioacchino Del Regno , Ryder Lee , Lorenzo Pieralisi , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Manivannan Sadhasivam , Rob Herring , Bjorn Helgaas Cc: Chen-Yu Tsai , Bartosz Golaszewski , linux-pci@vger.kernel.org, linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org, Bjorn Helgaas Subject: [PATCH v4 3/7] PCI: mediatek-gen3: Move controller setup steps before PERST# control Date: Tue, 10 Mar 2026 17:19:42 +0800 Message-ID: <20260310091947.2742004-4-wenst@chromium.org> X-Mailer: git-send-email 2.53.0.473.g4a7958ca14-goog In-Reply-To: <20260310091947.2742004-1-wenst@chromium.org> References: <20260310091947.2742004-1-wenst@chromium.org> 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 Content-Type: text/plain; charset="utf-8" Setting up the translation windows and enabling MSI involve only configuring the controller, not the device. These can be done before the device is enabled. Move these steps before the existing PERST# control. This provides a cleaner separation of controller vs device setup. This also allows the later patches that split out PERST# control and add device power control to have cleaner teardown. This change only moves code. No functional change is expected. Suggested-by: Bjorn Helgaas Link: https://lore.kernel.org/all/20260309215056.GA603013@bhelgaas/ Signed-off-by: Chen-Yu Tsai --- Changes since v3: - New patch --- drivers/pci/controller/pcie-mediatek-gen3.c | 50 ++++++++++----------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/drivers/pci/controller/pcie-mediatek-gen3.c b/drivers/pci/cont= roller/pcie-mediatek-gen3.c index 04ae195d36c2..1b6290f2c360 100644 --- a/drivers/pci/controller/pcie-mediatek-gen3.c +++ b/drivers/pci/controller/pcie-mediatek-gen3.c @@ -464,6 +464,31 @@ static int mtk_pcie_startup_port(struct mtk_gen3_pcie = *pcie) val |=3D PCIE_DISABLE_DVFSRC_VLT_REQ; writel_relaxed(val, pcie->base + PCIE_MISC_CTRL_REG); =20 + mtk_pcie_enable_msi(pcie); + + /* Set PCIe translation windows */ + resource_list_for_each_entry(entry, &host->windows) { + struct resource *res =3D entry->res; + unsigned long type =3D resource_type(res); + resource_size_t cpu_addr; + resource_size_t pci_addr; + resource_size_t size; + + if (type =3D=3D IORESOURCE_IO) + cpu_addr =3D pci_pio_to_address(res->start); + else if (type =3D=3D IORESOURCE_MEM) + cpu_addr =3D res->start; + else + continue; + + pci_addr =3D res->start - entry->offset; + size =3D resource_size(res); + err =3D mtk_pcie_set_trans_table(pcie, cpu_addr, pci_addr, size, + type, &table_index); + if (err) + return err; + } + /* * Airoha EN7581 has a hw bug asserting/releasing PCIE_PE_RSTB signal * causing occasional PCIe link down. In order to overcome the issue, @@ -510,31 +535,6 @@ static int mtk_pcie_startup_port(struct mtk_gen3_pcie = *pcie) return err; } =20 - mtk_pcie_enable_msi(pcie); - - /* Set PCIe translation windows */ - resource_list_for_each_entry(entry, &host->windows) { - struct resource *res =3D entry->res; - unsigned long type =3D resource_type(res); - resource_size_t cpu_addr; - resource_size_t pci_addr; - resource_size_t size; - - if (type =3D=3D IORESOURCE_IO) - cpu_addr =3D pci_pio_to_address(res->start); - else if (type =3D=3D IORESOURCE_MEM) - cpu_addr =3D res->start; - else - continue; - - pci_addr =3D res->start - entry->offset; - size =3D resource_size(res); - err =3D mtk_pcie_set_trans_table(pcie, cpu_addr, pci_addr, size, - type, &table_index); - if (err) - return err; - } - return 0; } =20 --=20 2.53.0.473.g4a7958ca14-goog From nobody Thu Apr 9 07:16:55 2026 Received: from mail-pf1-f170.google.com (mail-pf1-f170.google.com [209.85.210.170]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AC34743DA5E for ; Tue, 10 Mar 2026 09:20:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.170 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773134409; cv=none; b=dTlH6Q3jZQcmcmMfjA+naXTsg2eNyPYACM/ajbcklC5pqOErSPWP6VI/rMO7NOv8DHyYA3Tl7F/EJdwBwgDCN4kNGkJSCMI8kwy2TrmfpXAkFfN5fwowq67e4V0Q23iwvG9YltEgN8ABQYL9jEyfTgZuuMaCGR+dxKmm0Gyy2iA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773134409; c=relaxed/simple; bh=dh3HpoAtXE8uw7nBOrcGhCCgEUFGlm+/z1/p3QFqscs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ca+mL+XdWn/V8POhDsTddBP2ZXKeGWsAzlAzw++kwZObJl0aM83vXfQXdoC/pFJJh6LZz5D16io+vlKtHViQsJvcz+ImfnpyQndFAJ+Ossxp7dlfzz2K/tsrrXoFoCd03JFzBHGsmK3ARTK4cErANl0KHRIIhMAm7JS2Y9MOxZQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=JbfZsZZx; arc=none smtp.client-ip=209.85.210.170 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="JbfZsZZx" Received: by mail-pf1-f170.google.com with SMTP id d2e1a72fcca58-829a27414a3so2206507b3a.3 for ; Tue, 10 Mar 2026 02:20:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1773134408; x=1773739208; 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=NLaqL6RDjLUDRC9IFh+xvK4vJysRmVxopr+1H3G1aWA=; b=JbfZsZZxOwJBhy1RMKAaiuo4otC556HZbyrPygKn/IRtl+JRpjhHbo/cIByi+qRLnF vViJidn+xpOKGS0N1D4Fi9D7RNHeKbEQDYrALHvOjEpB5Xv9OYqq3qmjbvOA46475r4K B9qs+lkC/JEHCIb3dbq8m9QmmtN0HdZn9QYPo= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773134408; x=1773739208; 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=NLaqL6RDjLUDRC9IFh+xvK4vJysRmVxopr+1H3G1aWA=; b=fRA04ju7Sk/SS07ALAKdI28rADogEUxH8dlrXcsdYQxve6Z4/4QgMpLsCWPDo0qEYd +ZmmLcOsUBmiwYdWtMVaZxagBUcTjqf8SBSc+HtqMeFIA+qcUNNB4btoJ83wKDxWGLhO pMEiNET5i8D0OBCg87FhqMf9X1/+nFmpB9LLzsYMPHbCe73JqyTA8kW9bBjRsHmCETaG 1f+lW/Z9OmsS6ob9CDJJXu29tTLqXdvXjqdp9PoaozrBkEzSjhtTjq7cAdpn8gtmQZVf 0GkQaNF9ZL1ocj8FEiyVOcrtCHMwTFyrD0xeej0VFzv1bIQchzKIG/4Q9OmashujRYze UUig== X-Forwarded-Encrypted: i=1; AJvYcCW7e0P0rqEKW58/fkxUbtapqLFZ6YQh8/GPAv5yAMRJzEXSJiPyVOd7AFj/HYfJQs4Sc2iPW1VXpoRGd8A=@vger.kernel.org X-Gm-Message-State: AOJu0Yy25xnRrYfk+i/GFzA8Ch1i/2UiRMojmLtFXXheHLiLo1A/PTUv OZpmb3cy8V/Wqa3Fx8s9acoaSrGwGqjfv/rMcTUv8Qv9A6catzT9T5NPQvyHaQnJ7Q== X-Gm-Gg: ATEYQzzg/AQ17LcROpAApnW2LemNLJJJRz73WA6crNiG0fCVgBIorXMe7rMSwGULKWJ oEDiDN5Sz2lzYIFxQkfX90ykjOivIaexgBVFK5fbNnekyjlxd4E5RPy30sSO0bNoDcXZY4x9y/q iH8gBIuAdCgHGKOqiPmTq0S9m6XoKawWAZ2Yl1DekCzxgvaRhdRIpFnRZ2FDVR9F+Jp3LFDCP8H zCew0PuD04OLLtZx6MwRS5hW151qkUb1L2e3p8UunK2lqCTGwJqWrJh2NuWUCxzffs4U9CdebM8 3TpkmNsnEhVBQPjT7c6gJ8cmVa7toy888LLLSOEPReYtfsQfAkqekuNlnifyz2XZF2yOKdl1QGM rnIoGyjKxicbzrebM3GV2DbK9aFuwju4vsY9ynyvZD9kXzIGph3CbsuBG0gvkTmAO+x7Ebf50b2 b69+MuNijhu2XCqYh+3/ZS6WRUMMnwkzu3LNRnrX66+SOev9bodbK2Z5MIUVhS7zVFGhYxL9DjA FnRTUP02ljyteZedVk= X-Received: by 2002:a05:6a00:1301:b0:829:8942:2c96 with SMTP id d2e1a72fcca58-829a2de2aa3mr12505372b3a.18.1773134408064; Tue, 10 Mar 2026 02:20:08 -0700 (PDT) Received: from wenstp920.tpe.corp.google.com ([2a00:79e0:201d:8:ee38:e01e:e888:6900]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-829a48a3b74sm16965190b3a.45.2026.03.10.02.20.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Mar 2026 02:20:07 -0700 (PDT) From: Chen-Yu Tsai To: Matthias Brugger , AngeloGioacchino Del Regno , Ryder Lee , Lorenzo Pieralisi , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Manivannan Sadhasivam , Rob Herring , Bjorn Helgaas Cc: Chen-Yu Tsai , Bartosz Golaszewski , linux-pci@vger.kernel.org, linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org, Bartosz Golaszewski Subject: [PATCH v4 4/7] PCI: mediatek-gen3: Add error path for resume driver callbacks Date: Tue, 10 Mar 2026 17:19:43 +0800 Message-ID: <20260310091947.2742004-5-wenst@chromium.org> X-Mailer: git-send-email 2.53.0.473.g4a7958ca14-goog In-Reply-To: <20260310091947.2742004-1-wenst@chromium.org> References: <20260310091947.2742004-1-wenst@chromium.org> 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 Content-Type: text/plain; charset="utf-8" The resume callback currently does teardown in the conditional block directly. This is going to get ugly when the pwrctrl calls are added. Move the teardown to a proper error cleanup path. Reviewed-by: AngeloGioacchino Del Regno Reviewed-by: Bartosz Golaszewski Reviewed-by: Manivannan Sadhasivam Signed-off-by: Chen-Yu Tsai --- Changes since v3: - Dropped probe function error path; covered in previous patch --- drivers/pci/controller/pcie-mediatek-gen3.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/pci/controller/pcie-mediatek-gen3.c b/drivers/pci/cont= roller/pcie-mediatek-gen3.c index 1b6290f2c360..22a16e4ebc76 100644 --- a/drivers/pci/controller/pcie-mediatek-gen3.c +++ b/drivers/pci/controller/pcie-mediatek-gen3.c @@ -1304,14 +1304,16 @@ static int mtk_pcie_resume_noirq(struct device *dev) return err; =20 err =3D mtk_pcie_startup_port(pcie); - if (err) { - mtk_pcie_power_down(pcie); - return err; - } + if (err) + goto err_power_down; =20 mtk_pcie_irq_restore(pcie); =20 return 0; + +err_power_down: + mtk_pcie_power_down(pcie); + return err; } =20 static const struct dev_pm_ops mtk_pcie_pm_ops =3D { --=20 2.53.0.473.g4a7958ca14-goog From nobody Thu Apr 9 07:16:55 2026 Received: from mail-pf1-f179.google.com (mail-pf1-f179.google.com [209.85.210.179]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 875AD43E4AE for ; Tue, 10 Mar 2026 09:20:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.179 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773134412; cv=none; b=Fjf5S9Hr4Gcd2XMNWeMSIxUsxTRxgMq786+JwVM3LN+rvtBcttcVMD60+XhNFXceukuH4IgLHbJJXUrmjF5H6Maf8kGqxVxj8trGX759ecVrTiKb7qq8NdSXW8ZTqya+Pn+vMiy6kOQw3110inn2dX7VJJoAXenONVg7aWJIQYc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773134412; c=relaxed/simple; bh=gFJMTFEy+nnpV33A5U3bQxqrBPcmvAng71SZZE7y1fI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=BetLd/zbJ4gBd6PZv9J2OtGoUi5BuwkIJIXF1lsgjxHiQFbDuGqyv0g9L5GDZ/grK9kJKnRBLsl/bafMgS8GfNxHpZQdRYz3TOJXMGRLNQLuFDHM/R4g1WFWsPz4VI6XnkTOXBdAxtIghmSsxVCY160AfsSn47y7Pjd0wiDqBXU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=EXOiyolu; arc=none smtp.client-ip=209.85.210.179 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="EXOiyolu" Received: by mail-pf1-f179.google.com with SMTP id d2e1a72fcca58-829928e512aso2747285b3a.2 for ; Tue, 10 Mar 2026 02:20:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1773134411; x=1773739211; 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=rM88DzClemQjIwSD9XmXpaA4dBGL6dPMUDYPBc87GuI=; b=EXOiyoluDjBUCYTkc4etLuLV+nVdrtg5BWw0hHlkPJl9Pe79f9m7BPmUhXX9hIRa+G QNC8WpNP2k5gOc805jtqIS64bntxlV63nAcdjJTug/kP8ZqniqZlX0A81d0PsEl7b+ii 2CHo+91MlAWkBVl4aV4hRz6ZRnTdr2NSAJLUw= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773134411; x=1773739211; 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=rM88DzClemQjIwSD9XmXpaA4dBGL6dPMUDYPBc87GuI=; b=OGq5ciXzjNu6b6Koy3YSWOdu5RvLvvWPOT8xyA2vP6Ozou2Ikqh1hQ7lOdvcZe6Io3 nW1QiXYcEk0X7VReLrbcX+lMl3oNVqh3VqFD14gGFLWUX5agIL0U5FrW2aaRLa/DyFtZ lueVQ5bIi2femkDcAc5RzBTay45g9bYO6OAejx0D6SGEPCYublna4Rt9NgVHLqPgRFc3 mJjLJmiZY3z6i/vT7Zl9Dzf0dnCERAI3qDHs5SXrQdzXasvQQaH2Tgd/7tCRYDbE4PLW ItDRRdafSKa4Nj9zo7Pp5Olbeig6znmFZ3TuEF2920pWI6c+O/k1FPOCotOsg2UXPhyw VR9A== X-Forwarded-Encrypted: i=1; AJvYcCUsS9O5gILW1jH2vJ5RJAL1yIHSPh3MieaaT30hOFn5qxzIDKNjOksjFiTL2xE8jdu4oeoQgvTTi/tO48A=@vger.kernel.org X-Gm-Message-State: AOJu0YyB6V14BWDRzmfCujCm7iAPe3aWWEIxUP+hYUNpAPGZ34tC9hM6 lg6aF+QLbTZXIsv61ajVcPHviTbSZRi6Q3AoIxAzuF+ezV+IBIequW+lr7yQh9Rlqg== X-Gm-Gg: ATEYQzzPUKwWDFXia7zRT9eTChc+CP1eoIY40Cfip/MpTmbvfAuJyejd0Wl5a55LgwB WuXyVfLOxERg8f7BrNwLSDNrR4hDy2f2RJ0d7g5hZbzFMUZE0EP6zA9t+4eZxr9XyJwF+f/yS/x Zp2TZkf2NvfmZJK5CvCCrfF3sQgZbM6Vj7Kxc2xOj9qS8bSQoUseUlc7dbbApPhe4eWe8UbxeTA EKCU64w1i96sX7WrSzRTqelPaJInN1LiaAT2QufSdB6+BxDfexxHzovR20B0SvfuDo8ngcZbDWY JzhN5fNX/OpYh7U1VGlQA6RaRdSu4i6BDFZknzRtfjAcYduaQzWqYyEIhHel9/+AEifbCweU8cd rmbHscUeRpW/dJFTnY4jUvfebiHJfoTn+FJ8zrlpsrwajdwdC71WCmH/tjamNugXGenbVtkVw42 wMSvJPoNdY5VbMrYaijZir6D3q8+F7fFtEocRahmDMOWiDj8M+oS+Nw5BxpAk4/CaIGPUnI/cQI /vnEL7o X-Received: by 2002:a05:6a00:882:b0:829:7187:1a80 with SMTP id d2e1a72fcca58-829a2f80e50mr13446197b3a.45.1773134410893; Tue, 10 Mar 2026 02:20:10 -0700 (PDT) Received: from wenstp920.tpe.corp.google.com ([2a00:79e0:201d:8:ee38:e01e:e888:6900]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-829a48a3b74sm16965190b3a.45.2026.03.10.02.20.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Mar 2026 02:20:10 -0700 (PDT) From: Chen-Yu Tsai To: Matthias Brugger , AngeloGioacchino Del Regno , Ryder Lee , Lorenzo Pieralisi , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Manivannan Sadhasivam , Rob Herring , Bjorn Helgaas Cc: Chen-Yu Tsai , Bartosz Golaszewski , linux-pci@vger.kernel.org, linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org, Bartosz Golaszewski Subject: [PATCH v4 5/7] PCI: mediatek-gen3: Split out device power helpers Date: Tue, 10 Mar 2026 17:19:44 +0800 Message-ID: <20260310091947.2742004-6-wenst@chromium.org> X-Mailer: git-send-email 2.53.0.473.g4a7958ca14-goog In-Reply-To: <20260310091947.2742004-1-wenst@chromium.org> References: <20260310091947.2742004-1-wenst@chromium.org> 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 Content-Type: text/plain; charset="utf-8" In preparation for adding full power on/off control with the pwrctrl API, split out the existing code that only partially deals with device power sequencing into separate helper functions. The existing code only handles PERST#. This is purely moving code around, and brings no functional changes. Reviewed-by: AngeloGioacchino Del Regno Reviewed-by: Bartosz Golaszewski Reviewed-by: Manivannan Sadhasivam Signed-off-by: Chen-Yu Tsai --- Changes since v3: - Adapted to movement of existing setup code Changes since v1: - Updated commit message --- drivers/pci/controller/pcie-mediatek-gen3.c | 87 ++++++++++++--------- 1 file changed, 52 insertions(+), 35 deletions(-) diff --git a/drivers/pci/controller/pcie-mediatek-gen3.c b/drivers/pci/cont= roller/pcie-mediatek-gen3.c index 22a16e4ebc76..3e5386c4cb35 100644 --- a/drivers/pci/controller/pcie-mediatek-gen3.c +++ b/drivers/pci/controller/pcie-mediatek-gen3.c @@ -403,6 +403,54 @@ static void mtk_pcie_enable_msi(struct mtk_gen3_pcie *= pcie) writel_relaxed(val, pcie->base + PCIE_INT_ENABLE_REG); } =20 +static int mtk_pcie_device_power_up(struct mtk_gen3_pcie *pcie) +{ + int err; + u32 val; + + /* + * Airoha EN7581 has a hw bug asserting/releasing PCIE_PE_RSTB signal + * causing occasional PCIe link down. In order to overcome the issue, + * PCIE_RSTB signals are not asserted/released at this stage and the + * PCIe block is reset using en7523_reset_assert() and + * en7581_pci_enable(). + */ + if (!(pcie->soc->flags & SKIP_PCIE_RSTB)) { + /* Assert all reset signals */ + val =3D readl_relaxed(pcie->base + PCIE_RST_CTRL_REG); + val |=3D PCIE_MAC_RSTB | PCIE_PHY_RSTB | PCIE_BRG_RSTB | + PCIE_PE_RSTB; + writel_relaxed(val, pcie->base + PCIE_RST_CTRL_REG); + + /* + * Described in PCIe CEM specification revision 6.0. + * + * The deassertion of PERST# should be delayed 100ms (TPVPERL) + * for the power and clock to become stable. + */ + msleep(PCIE_T_PVPERL_MS); + + /* De-assert reset signals */ + val &=3D ~(PCIE_MAC_RSTB | PCIE_PHY_RSTB | PCIE_BRG_RSTB | + PCIE_PE_RSTB); + writel_relaxed(val, pcie->base + PCIE_RST_CTRL_REG); + } + + return 0; +} + +static void mtk_pcie_device_power_down(struct mtk_gen3_pcie *pcie) +{ + u32 val; + + if (!(pcie->soc->flags & SKIP_PCIE_RSTB)) { + /* Assert the PERST# pin */ + val =3D readl_relaxed(pcie->base + PCIE_RST_CTRL_REG); + val |=3D PCIE_PE_RSTB; + writel_relaxed(val, pcie->base + PCIE_RST_CTRL_REG); + } +} + static int mtk_pcie_startup_port(struct mtk_gen3_pcie *pcie) { struct resource_entry *entry; @@ -489,33 +537,9 @@ static int mtk_pcie_startup_port(struct mtk_gen3_pcie = *pcie) return err; } =20 - /* - * Airoha EN7581 has a hw bug asserting/releasing PCIE_PE_RSTB signal - * causing occasional PCIe link down. In order to overcome the issue, - * PCIE_RSTB signals are not asserted/released at this stage and the - * PCIe block is reset using en7523_reset_assert() and - * en7581_pci_enable(). - */ - if (!(pcie->soc->flags & SKIP_PCIE_RSTB)) { - /* Assert all reset signals */ - val =3D readl_relaxed(pcie->base + PCIE_RST_CTRL_REG); - val |=3D PCIE_MAC_RSTB | PCIE_PHY_RSTB | PCIE_BRG_RSTB | - PCIE_PE_RSTB; - writel_relaxed(val, pcie->base + PCIE_RST_CTRL_REG); - - /* - * Described in PCIe CEM specification revision 6.0. - * - * The deassertion of PERST# should be delayed 100ms (TPVPERL) - * for the power and clock to become stable. - */ - msleep(PCIE_T_PVPERL_MS); - - /* De-assert reset signals */ - val &=3D ~(PCIE_MAC_RSTB | PCIE_PHY_RSTB | PCIE_BRG_RSTB | - PCIE_PE_RSTB); - writel_relaxed(val, pcie->base + PCIE_RST_CTRL_REG); - } + err =3D mtk_pcie_device_power_up(pcie); + if (err) + return err; =20 /* Check if the link is up or not */ err =3D readl_poll_timeout(pcie->base + PCIE_LINK_STATUS_REG, val, @@ -1270,7 +1294,6 @@ static int mtk_pcie_suspend_noirq(struct device *dev) { struct mtk_gen3_pcie *pcie =3D dev_get_drvdata(dev); int err; - u32 val; =20 /* Trigger link to L2 state */ err =3D mtk_pcie_turn_off_link(pcie); @@ -1279,13 +1302,7 @@ static int mtk_pcie_suspend_noirq(struct device *dev) return err; } =20 - if (!(pcie->soc->flags & SKIP_PCIE_RSTB)) { - /* Assert the PERST# pin */ - val =3D readl_relaxed(pcie->base + PCIE_RST_CTRL_REG); - val |=3D PCIE_PE_RSTB; - writel_relaxed(val, pcie->base + PCIE_RST_CTRL_REG); - } - + mtk_pcie_device_power_down(pcie); dev_dbg(pcie->dev, "entered L2 states successfully"); =20 mtk_pcie_irq_save(pcie); --=20 2.53.0.473.g4a7958ca14-goog From nobody Thu Apr 9 07:16:55 2026 Received: from mail-pf1-f176.google.com (mail-pf1-f176.google.com [209.85.210.176]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4213D43E9ED for ; Tue, 10 Mar 2026 09:20:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.176 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773134417; cv=none; b=TU2UULyeS6RjB0i1OpTbEnphw47MmACpvtcr83axZ3bLVEzCKOuGy68jkxFMEfztTr3puAL3u1Oeve8NektcazuB8x47orTRQg5I+Ej3Zjer3pAQE4P/01CwuPqyaP6lduipTOqJZ40zobR/V84rsrFEstIfBjfX/PzU4AUR5co= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773134417; c=relaxed/simple; bh=QBdzYysaaQkUcvRADn2zPVz9rZjaIa7yreyOYyJaWT0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=JEnUdo8D42oyJEzgydLjTWtZA2kglf2z3Q+ln8YfvqAdQ6WMYzPzrf7ebcS5HZFOYBYkZJu+XHMxbQumJoW/7sArRPoCZ0NlzJpYewQbrBK9V0XUnUIJxDeSuITiGkreWUy1IvXd+MhSBH9rXpDkm6orv27wrWFULDHpyuyst7w= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=hBNinlZf; arc=none smtp.client-ip=209.85.210.176 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="hBNinlZf" Received: by mail-pf1-f176.google.com with SMTP id d2e1a72fcca58-82735a41920so4678686b3a.2 for ; Tue, 10 Mar 2026 02:20:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1773134414; x=1773739214; 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=7hRZKxmDkekxeTijUMv0DHtFKCuWghYPEZ/UxQrV0i0=; b=hBNinlZfz5/Ao5mSaRXBGBzRgPjfWNKYH89I75APg7w+1gmJzipZBItBz3g1JWBtqO vP/q1XZPZL9E7Nrgs7kQ/qg8Dcsf4rgBX6sau1c/x2EZgo17hhJtmUah92p+LjPEPYLL BaGGrCyEYyyjZXqgSuOIXZs4s5fjfFEbkfZmA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773134414; x=1773739214; 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=7hRZKxmDkekxeTijUMv0DHtFKCuWghYPEZ/UxQrV0i0=; b=kMxk45OCl7eUi3s8npnpXUMm6eaYBXa2o+GltBsvc+P50maMgB0OAI3YkGc0ahNOjR /Tv/sZbmMQjp35YsJxfGDpsEq+6s1ukFadyl9IvvXdexSXCznjEeDn/AnHma0OMvzELC s7K+7ZHyaRJnJSSrdyZ4Ultd3mbWJeguhM3j6aONa+GrFvMsQxRHPzYn1Dih7GOR5FT3 uhlrCNsGg9BS/NuF/2Lqmnp95W4VGfjO4jk1Yrt8ickhta4O42vgt0ozVo0uNQCBC1iG jfeAIVAs0xo4Wg3+O7LbnuT+Dv11I/rQJymDaoBP0kwU5AfsewztP1sCHcXeX2cQ6K6/ 1nbg== X-Forwarded-Encrypted: i=1; AJvYcCUSj8URP3aQTbwj4mWtbA1zHhH4rwIIOc3Qxa62/Y/hqgYNREPZXx1LoNZJvq7EhMOZXH2CjUBb/Iypsz8=@vger.kernel.org X-Gm-Message-State: AOJu0Yxj5lAz/vErOS+jM4mRUf8NSDFwBdIBMoOJPx3djvPklyJ+SPhM UZSayln2gvCz4rnkNywn0IbCDdGEffwdp9sFdbi3KdRkkQ6OZ88j9s+wRn6EKfpp+A== X-Gm-Gg: ATEYQzwO9vE/MMPpamSIXVSLfYeqWP0hlVDMYZ0v3X1f20UY/OdfvmkOxyoTQnp50h6 GiXHjUkVpeBDvMrXI+RRodYWedLBDmNHFFMKTemjYwgSDdbLyotkzRB0UiVsypjpuShXjrbD95a zHWGpBMd4LM30C9hlOkYq5wYPs0nYpYdvokasLvhvm26CUo+FF/qSJfWyFgd6g0HXOA/ZbtBLdb WaCrH4VMihz7lvrGx+bHBjf0/+28uBpWu44vpYN12NdOcLh/EvSf07HhuGw74ZgxF8p9i+3zNAu 05cq2BcHYDdD1nUSvCBhCDa9pObYoXuHDXqBDKDI6/SqiYQoJbovnSAORdnRx4IHuPCyTbwkCT1 mq+LHUtVg88Pl3cbgJw9L2RNNBn0wEGCLiMojQ7TwL7a8mRVjGb6Q+t0owx51eXqMmPNZbUrDsK E8E0NCGxSRj7gfGG/nAMpP+lmLlxESoCmZYpV2BFwdcez3poMWcu+Ga5eHCugRGUA5Hf7lg1ho4 TKWCFSI X-Received: by 2002:a05:6a00:13a4:b0:827:32d7:6690 with SMTP id d2e1a72fcca58-829a2d88478mr12094733b3a.13.1773134413720; Tue, 10 Mar 2026 02:20:13 -0700 (PDT) Received: from wenstp920.tpe.corp.google.com ([2a00:79e0:201d:8:ee38:e01e:e888:6900]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-829a48a3b74sm16965190b3a.45.2026.03.10.02.20.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Mar 2026 02:20:13 -0700 (PDT) From: Chen-Yu Tsai To: Matthias Brugger , AngeloGioacchino Del Regno , Ryder Lee , Lorenzo Pieralisi , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Manivannan Sadhasivam , Rob Herring , Bjorn Helgaas Cc: Chen-Yu Tsai , Bartosz Golaszewski , linux-pci@vger.kernel.org, linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org, Bartosz Golaszewski Subject: [PATCH v4 6/7] PCI: mediatek-gen3: Disable device if further setup fails Date: Tue, 10 Mar 2026 17:19:45 +0800 Message-ID: <20260310091947.2742004-7-wenst@chromium.org> X-Mailer: git-send-email 2.53.0.473.g4a7958ca14-goog In-Reply-To: <20260310091947.2742004-1-wenst@chromium.org> References: <20260310091947.2742004-1-wenst@chromium.org> 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 Content-Type: text/plain; charset="utf-8" If further setup fails after the device is powered on and link training succeeds, we want to place the device back in a quiescence state to avoid unintended activity and save power. This also helps with power state tracking and balancing once pwrctrl API is integrated. Power down the device in the error paths of mtk_pcie_startup_port() and mtk_pcie_probe(). Reviewed-by: AngeloGioacchino Del Regno Reviewed-by: Bartosz Golaszewski Reviewed-by: Manivannan Sadhasivam Signed-off-by: Chen-Yu Tsai --- Changes since v3: - Adapted to movement of existing setup code - Cleanup in mtk_pcie_setup() moved to mtk_pcie_probe() --- drivers/pci/controller/pcie-mediatek-gen3.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/pci/controller/pcie-mediatek-gen3.c b/drivers/pci/cont= roller/pcie-mediatek-gen3.c index 3e5386c4cb35..f1a70b92cc9f 100644 --- a/drivers/pci/controller/pcie-mediatek-gen3.c +++ b/drivers/pci/controller/pcie-mediatek-gen3.c @@ -556,10 +556,14 @@ static int mtk_pcie_startup_port(struct mtk_gen3_pcie= *pcie) dev_err(pcie->dev, "PCIe link down, current LTSSM state: %s (%#x)\n", ltssm_state, val); - return err; + goto err_power_down_device; } =20 return 0; + +err_power_down_device: + mtk_pcie_device_power_down(pcie); + return err; } =20 #define MTK_MSI_FLAGS_REQUIRED (MSI_FLAG_USE_DEF_DOM_OPS | \ @@ -1219,6 +1223,7 @@ static int mtk_pcie_probe(struct platform_device *pde= v) return 0; =20 err_power_down_pcie: + mtk_pcie_device_power_down(pcie); mtk_pcie_power_down(pcie); err_tear_down_irq: mtk_pcie_irq_teardown(pcie); --=20 2.53.0.473.g4a7958ca14-goog From nobody Thu Apr 9 07:16:55 2026 Received: from mail-pf1-f174.google.com (mail-pf1-f174.google.com [209.85.210.174]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5E46C441037 for ; Tue, 10 Mar 2026 09:20:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.174 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773134421; cv=none; b=MGz5PIBQKLKOTO5MNfXFdBYd2VZgHEArDD48rCKe1nf7ie4EHeXS78cItF8pSSwLRDhLsF/PG9ECbMUmz/U+tji+nzBirl47tSEQ7id7YH0e9t6bGtWpMa0DsqoEdDJCrujh+fPReXRNtmU7w7RsPfr/4yNWjqXyCm6hGEOB52E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773134421; c=relaxed/simple; bh=0s/EVo11KT6y6XGLMfn6PRuBMC+9QqPzMserznvxng4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=tsESEo7d9+sZ5TLQ5AOTaLg7FXwvZDbKDx0xk6ycRNEhDN7uzMkZKlyzMcepLqZM/qn5JxWRyQrW0vIq0J7Lw2aYcLGqAvNaA7DFEL+4dCKZPJaHMjSwT3R+boGBr3RUCBsdL3+t78X2u/p4sRGy+S5p9VZtzC6cuPumox1n9es= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=ZzGnGjMV; arc=none smtp.client-ip=209.85.210.174 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="ZzGnGjMV" Received: by mail-pf1-f174.google.com with SMTP id d2e1a72fcca58-829abaaa92bso1831021b3a.1 for ; Tue, 10 Mar 2026 02:20:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1773134416; x=1773739216; 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=af02IVkQlyjh7MHZRvKNkK4tswtXHtMfEowyRfn4+2I=; b=ZzGnGjMVv6bjsjb8PIDtW/PmvRTxeIVdHYsOHrkDjCEsuxKk2MJ3z2rAcEuBUqaVrf inZlHA4YL/T8SiE46czoToCSMygth9FbK+6ubYNfniQGtUzWjk0yGBGaL4sVe0+GNn0e qnOMx2nP7F6Ek1Csa4+PrClm27FL9LPfYiM1U= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773134416; x=1773739216; 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=af02IVkQlyjh7MHZRvKNkK4tswtXHtMfEowyRfn4+2I=; b=iC7LkTgH2GPWpcNqe00CPdy0y17QLN9Ddn0hbePILDd+2LAK1LD8pW1ZSw+7qQR8y+ sdbOuMomh4YyVIbHctrSs1guj78XLP7t7xcnl6a93upX7LjVlWra9y+MD32iJWTHs0MZ d7iOLUafVUxUeGhxOZFvmKtP7BaQQk4QM/dzaEUrWpA8rYesWe6aqqnaxHgG8x/cQXTS hFGeTL/UlkcFrrHDu+DOBiuWlgB1RCy3V2mj3KcCepYKj7L2Heh06GogucHSlvzfZNUJ wZtiAPWYQqYdiKSx32pQdM5JXTRQEyMKDJMyWrrGZPwj9u4NxfM93SCJCyWK1zzpMpQb WkFw== X-Forwarded-Encrypted: i=1; AJvYcCV0bpxzgA2SL3RPQiqvgNx7WEZi2S3+dW7DSAkFotQTfKaoghO94hUkVIdYQBum8cN8PZ2B1i+aUMxTMfU=@vger.kernel.org X-Gm-Message-State: AOJu0Yzf8NUOTmFWelMbET+uZj5TeOANHFuzpi8W/4UtamNgLDwQOQ3l HASs0ARg6nbd/0PMhNfjAXrJ4uYwQSoFjsDEDWET93/NMUZnTkXl7BXMxW1iMIoVww== X-Gm-Gg: ATEYQzwsNE7WN/OEh3XO3SOwav1PCzLbwus2uuqCZ9km8fdKYpsxP7u/g6F0UChucnx ZpCeOZRp/Gk8OY4Jl799A0FqrWlg0CLlthtB8NVSe/yFXj71t5pKC1xl8LFhXHfxvnZ7idrYwpC SwfxtpU0DbDLyZndicCoIfCJLj5VWsXEJ9pcO8bds3jFJVDC8wx6kDclV6XQKbCXOJLwB72gRTG z+lkmv50nkjZemUpeyMVKsu3ka4fjR5NtYTi8w7Gs0wOzB687eKux+fMGOro2FSYkHPAjnWLSjP ENLBmkL/ty6XFJHJiJ0vqOuqYpo8k8cZ1Lm7jxIb8hkphhh+qfbrR8s3mVXbsSDULHot5Nuh/bb ZzqupBowaTwlGoE+w2LTwwKRe/N/WIFpusMbAtiesv6HbUvZ3+ElL1FmR4oOf0UC0Jhrs6NvoYm dG9/pqxKB62tCzj+i05FxUNJTNEWZSwtpx+TmZV4C4KZho+PO7Ck/Xq4UX60x5lKYvnwsyPRkrM DRqz7V3 X-Received: by 2002:a05:6a00:2d1e:b0:819:5db9:6ac0 with SMTP id d2e1a72fcca58-829a2f397femr11923975b3a.37.1773134416561; Tue, 10 Mar 2026 02:20:16 -0700 (PDT) Received: from wenstp920.tpe.corp.google.com ([2a00:79e0:201d:8:ee38:e01e:e888:6900]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-829a48a3b74sm16965190b3a.45.2026.03.10.02.20.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Mar 2026 02:20:16 -0700 (PDT) From: Chen-Yu Tsai To: Matthias Brugger , AngeloGioacchino Del Regno , Ryder Lee , Lorenzo Pieralisi , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Manivannan Sadhasivam , Rob Herring , Bjorn Helgaas Cc: Chen-Yu Tsai , Bartosz Golaszewski , linux-pci@vger.kernel.org, linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org, Bartosz Golaszewski Subject: [PATCH v4 7/7] PCI: mediatek-gen3: Integrate new pwrctrl API Date: Tue, 10 Mar 2026 17:19:46 +0800 Message-ID: <20260310091947.2742004-8-wenst@chromium.org> X-Mailer: git-send-email 2.53.0.473.g4a7958ca14-goog In-Reply-To: <20260310091947.2742004-1-wenst@chromium.org> References: <20260310091947.2742004-1-wenst@chromium.org> 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 Content-Type: text/plain; charset="utf-8" With the new PCI pwrctrl API and PCI slot binding and power drivers, we now have a way to describe and power up WiFi/BT adapters connected through a PCIe or M.2 slot, or exploded onto the mainboard itself. Integrate the PCI pwrctrl API into the PCIe driver, so that power is properly enabled before PCIe link training is done, allowing the card to successfully be detected. Reviewed-by: AngeloGioacchino Del Regno Reviewed-by: Bartosz Golaszewski Reviewed-by: Manivannan Sadhasivam Signed-off-by: Chen-Yu Tsai --- Changes since v3: - Adapted changes to movement of existing setup code Changes since v2: - Added "select PCI_PWRCTRL_SLOT" to Kconfig to fix kernel test robot compilation error I'm wondering why the two existing uses select PCI_PWRCTRL_SLOT and not PCI_PWRCTRL though. --- drivers/pci/controller/Kconfig | 1 + drivers/pci/controller/pcie-mediatek-gen3.c | 38 ++++++++++++++++----- 2 files changed, 31 insertions(+), 8 deletions(-) diff --git a/drivers/pci/controller/Kconfig b/drivers/pci/controller/Kconfig index 5aaed8ac6e44..e72ac6934379 100644 --- a/drivers/pci/controller/Kconfig +++ b/drivers/pci/controller/Kconfig @@ -222,6 +222,7 @@ config PCIE_MEDIATEK_GEN3 depends on ARCH_AIROHA || ARCH_MEDIATEK || COMPILE_TEST depends on PCI_MSI select IRQ_MSI_LIB + select PCI_PWRCTRL_SLOT help Adds support for PCIe Gen3 MAC controller for MediaTek SoCs. This PCIe controller is compatible with Gen3, Gen2 and Gen1 speed, diff --git a/drivers/pci/controller/pcie-mediatek-gen3.c b/drivers/pci/cont= roller/pcie-mediatek-gen3.c index f1a70b92cc9f..3800d0d730f2 100644 --- a/drivers/pci/controller/pcie-mediatek-gen3.c +++ b/drivers/pci/controller/pcie-mediatek-gen3.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include @@ -421,15 +422,23 @@ static int mtk_pcie_device_power_up(struct mtk_gen3_p= cie *pcie) val |=3D PCIE_MAC_RSTB | PCIE_PHY_RSTB | PCIE_BRG_RSTB | PCIE_PE_RSTB; writel_relaxed(val, pcie->base + PCIE_RST_CTRL_REG); + } =20 - /* - * Described in PCIe CEM specification revision 6.0. - * - * The deassertion of PERST# should be delayed 100ms (TPVPERL) - * for the power and clock to become stable. - */ - msleep(PCIE_T_PVPERL_MS); + err =3D pci_pwrctrl_power_on_devices(pcie->dev); + if (err) { + dev_err(pcie->dev, "Failed to power on devices: %pe\n", ERR_PTR(err)); + return err; + } =20 + /* + * Described in PCIe CEM specification revision 6.0. + * + * The deassertion of PERST# should be delayed 100ms (TPVPERL) + * for the power and clock to become stable. + */ + msleep(PCIE_T_PVPERL_MS); + + if (!(pcie->soc->flags & SKIP_PCIE_RSTB)) { /* De-assert reset signals */ val &=3D ~(PCIE_MAC_RSTB | PCIE_PHY_RSTB | PCIE_BRG_RSTB | PCIE_PE_RSTB); @@ -449,6 +458,8 @@ static void mtk_pcie_device_power_down(struct mtk_gen3_= pcie *pcie) val |=3D PCIE_PE_RSTB; writel_relaxed(val, pcie->base + PCIE_RST_CTRL_REG); } + + pci_pwrctrl_power_off_devices(pcie->dev); } =20 static int mtk_pcie_startup_port(struct mtk_gen3_pcie *pcie) @@ -1209,9 +1220,15 @@ static int mtk_pcie_probe(struct platform_device *pd= ev) if (err) return dev_err_probe(dev, err, "Failed to setup IRQ domains\n"); =20 + err =3D pci_pwrctrl_create_devices(pcie->dev); + if (err) { + goto err_teardown_irq; + dev_err_probe(dev, err, "failed to create pwrctrl devices\n"); + } + err =3D mtk_pcie_setup(pcie); if (err) - goto err_tear_down_irq; + goto err_destroy_pwrctrl; =20 host->ops =3D &mtk_pcie_ops; host->sysdata =3D pcie; @@ -1225,6 +1242,9 @@ static int mtk_pcie_probe(struct platform_device *pde= v) err_power_down_pcie: mtk_pcie_device_power_down(pcie); mtk_pcie_power_down(pcie); +err_destroy_pwrctrl: + if (err !=3D -EPROBE_DEFER) + pci_pwrctrl_destroy_devices(pcie->dev); err_tear_down_irq: mtk_pcie_irq_teardown(pcie); return err; @@ -1240,7 +1260,9 @@ static void mtk_pcie_remove(struct platform_device *p= dev) pci_remove_root_bus(host->bus); pci_unlock_rescan_remove(); =20 + pci_pwrctrl_power_off_devices(pcie->dev); mtk_pcie_power_down(pcie); + pci_pwrctrl_destroy_devices(pcie->dev); mtk_pcie_irq_teardown(pcie); } =20 --=20 2.53.0.473.g4a7958ca14-goog