public inbox for linux-arm-kernel@lists.infradead.org
 help / color / mirror / Atom feed
* [PATCH 0/7] PCI: mediatek-gen3: add power control support
@ 2026-02-25  7:22 Chen-Yu Tsai
  2026-02-25  7:22 ` [PATCH 1/7] PCI: mediatek-gen3: Clean up mtk_pcie_parse_port() with dev_err_probe() Chen-Yu Tsai
                   ` (7 more replies)
  0 siblings, 8 replies; 24+ messages in thread
From: Chen-Yu Tsai @ 2026-02-25  7:22 UTC (permalink / raw)
  To: Matthias Brugger, AngeloGioacchino Del Regno, Ryder Lee,
	Jianjun Wang, Lorenzo Pieralisi, Krzysztof Wilczyński,
	Manivannan Sadhasivam, Rob Herring, Bjorn Helgaas
  Cc: devicetree, linux-arm-kernel, Chen-Yu Tsai, Bartosz Golaszewski,
	linux-pci, linux-mediatek, linux-kernel

Hi folks,

This series adds power control support to the MediaTek PCIe gen3
controller driver. This allows proper modeling of WiFi and NVMe
adapters in the device tree and control over their power supplies.

Patch 1 through 4 are cleanups and minor improvements to the driver.

Patch 5 adds power control support using the new pwrctrl API to the
PCIe controller driver.

Patch 6 adds the WiFi and BT power supplies for the MT8195 Cherry design.
This is actually a M.2 E-key slot, but support for that is still WIP [1].
And even with it merged, support for the USB side still needs to be
figured out.

We can either merge this as is for now, and do another conversion later,
or just keep this one out. However this is still an improvement over
the current device tree, in which the power for the slot is always on
using a pinctrl setting.

Patch 7 adds the M.2 M-key NVMe slot found on MT8195 Dojo Chromebooks.
This change actually makes use of the M.2 pwrseq driver.


Please have a look.


Thanks
ChenYu

[1] https://lore.kernel.org/linux-pci/20260224-pci-m2-e-v5-0-dd9b9501d33c@oss.qualcomm.com/

Chen-Yu Tsai (7):
  PCI: mediatek-gen3: Clean up mtk_pcie_parse_port() with
    dev_err_probe()
  PCI: mediatek-gen3: Add error path for probe and resume driver
    callbacks
  PCI: mediatek-gen3: Split out device power helpers
  PCI: mediatek-gen3: Disable device if further setup fails
  PCI: mediatek-gen3: Integrate new pwrctrl API
  arm64: dts: mediatek: mt8195-cherry: add WiFi PCIe and BT USB power
    supplies
  arm64: dts: mediatek: mt8195-cherry-dojo: Describe M.2 M-key NVMe slot

 .../dts/mediatek/mt8195-cherry-dojo-r1.dts    |  38 ++++
 .../boot/dts/mediatek/mt8195-cherry.dtsi      |  47 +++--
 drivers/pci/controller/pcie-mediatek-gen3.c   | 185 +++++++++++-------
 3 files changed, 183 insertions(+), 87 deletions(-)

-- 
2.53.0.414.gf7e9f6c205-goog



^ permalink raw reply	[flat|nested] 24+ messages in thread

* [PATCH 1/7] PCI: mediatek-gen3: Clean up mtk_pcie_parse_port() with dev_err_probe()
  2026-02-25  7:22 [PATCH 0/7] PCI: mediatek-gen3: add power control support Chen-Yu Tsai
@ 2026-02-25  7:22 ` Chen-Yu Tsai
  2026-02-25  8:11   ` Bartosz Golaszewski
  2026-02-25 13:13   ` AngeloGioacchino Del Regno
  2026-02-25  7:22 ` [PATCH 2/7] PCI: mediatek-gen3: Add error path for probe and resume driver callbacks Chen-Yu Tsai
                   ` (6 subsequent siblings)
  7 siblings, 2 replies; 24+ messages in thread
From: Chen-Yu Tsai @ 2026-02-25  7:22 UTC (permalink / raw)
  To: Matthias Brugger, AngeloGioacchino Del Regno, Ryder Lee,
	Jianjun Wang, Lorenzo Pieralisi, Krzysztof Wilczyński,
	Manivannan Sadhasivam, Rob Herring, Bjorn Helgaas
  Cc: devicetree, linux-arm-kernel, Chen-Yu Tsai, Bartosz Golaszewski,
	linux-pci, linux-mediatek, linux-kernel

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

Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
---
 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/controller/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 *pcie)
 	if (!regs)
 		return -EINVAL;
 	pcie->base = 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 base\n");
 
 	pcie->reg_base = regs->start;
 
@@ -888,34 +886,20 @@ static int mtk_pcie_parse_port(struct mtk_gen3_pcie *pcie)
 
 	ret = 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");
 
 	pcie->mac_reset = devm_reset_control_get_optional_exclusive(dev, "mac");
-	if (IS_ERR(pcie->mac_reset)) {
-		ret = PTR_ERR(pcie->mac_reset);
-		if (ret != -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 reset\n");
 
 	pcie->phy = devm_phy_optional_get(dev, "pcie-phy");
-	if (IS_ERR(pcie->phy)) {
-		ret = PTR_ERR(pcie->phy);
-		if (ret != -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");
 
 	pcie->num_clks = 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");
 
 	ret = of_property_read_u32(dev->of_node, "num-lanes", &num_lanes);
 	if (ret == 0) {
-- 
2.53.0.414.gf7e9f6c205-goog



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 2/7] PCI: mediatek-gen3: Add error path for probe and resume driver callbacks
  2026-02-25  7:22 [PATCH 0/7] PCI: mediatek-gen3: add power control support Chen-Yu Tsai
  2026-02-25  7:22 ` [PATCH 1/7] PCI: mediatek-gen3: Clean up mtk_pcie_parse_port() with dev_err_probe() Chen-Yu Tsai
@ 2026-02-25  7:22 ` Chen-Yu Tsai
  2026-02-25  8:19   ` Bartosz Golaszewski
  2026-02-25 13:13   ` AngeloGioacchino Del Regno
  2026-02-25  7:22 ` [PATCH 3/7] PCI: mediatek-gen3: Split out device power helpers Chen-Yu Tsai
                   ` (5 subsequent siblings)
  7 siblings, 2 replies; 24+ messages in thread
From: Chen-Yu Tsai @ 2026-02-25  7:22 UTC (permalink / raw)
  To: Matthias Brugger, AngeloGioacchino Del Regno, Ryder Lee,
	Jianjun Wang, Lorenzo Pieralisi, Krzysztof Wilczyński,
	Manivannan Sadhasivam, Rob Herring, Bjorn Helgaas
  Cc: devicetree, linux-arm-kernel, Chen-Yu Tsai, Bartosz Golaszewski,
	linux-pci, linux-mediatek, linux-kernel

The probe and resume callbacks currently do teardown in the conditional
block directly. This is going to get ugly when the pwrctrl calls are
added.

Move the teardown to proper error cleanup paths.

Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
---
 drivers/pci/controller/pcie-mediatek-gen3.c | 22 ++++++++++++---------
 1 file changed, 13 insertions(+), 9 deletions(-)

diff --git a/drivers/pci/controller/pcie-mediatek-gen3.c b/drivers/pci/controller/pcie-mediatek-gen3.c
index 1939cac995b5..f2bf4afbdc2f 100644
--- a/drivers/pci/controller/pcie-mediatek-gen3.c
+++ b/drivers/pci/controller/pcie-mediatek-gen3.c
@@ -1189,13 +1189,15 @@ static int mtk_pcie_probe(struct platform_device *pdev)
 	host->sysdata = pcie;
 
 	err = pci_host_probe(host);
-	if (err) {
-		mtk_pcie_irq_teardown(pcie);
-		mtk_pcie_power_down(pcie);
-		return err;
-	}
+	if (err)
+		goto err_teardown_irq_and_power_down;
 
 	return 0;
+
+err_teardown_irq_and_power_down:
+	mtk_pcie_irq_teardown(pcie);
+	mtk_pcie_power_down(pcie);
+	return err;
 }
 
 static void mtk_pcie_remove(struct platform_device *pdev)
@@ -1301,14 +1303,16 @@ static int mtk_pcie_resume_noirq(struct device *dev)
 		return err;
 
 	err = mtk_pcie_startup_port(pcie);
-	if (err) {
-		mtk_pcie_power_down(pcie);
-		return err;
-	}
+	if (err)
+		goto err_power_down;
 
 	mtk_pcie_irq_restore(pcie);
 
 	return 0;
+
+err_power_down:
+	mtk_pcie_power_down(pcie);
+	return err;
 }
 
 static const struct dev_pm_ops mtk_pcie_pm_ops = {
-- 
2.53.0.414.gf7e9f6c205-goog



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 3/7] PCI: mediatek-gen3: Split out device power helpers
  2026-02-25  7:22 [PATCH 0/7] PCI: mediatek-gen3: add power control support Chen-Yu Tsai
  2026-02-25  7:22 ` [PATCH 1/7] PCI: mediatek-gen3: Clean up mtk_pcie_parse_port() with dev_err_probe() Chen-Yu Tsai
  2026-02-25  7:22 ` [PATCH 2/7] PCI: mediatek-gen3: Add error path for probe and resume driver callbacks Chen-Yu Tsai
@ 2026-02-25  7:22 ` Chen-Yu Tsai
  2026-02-25  8:13   ` Bartosz Golaszewski
  2026-02-25 13:13   ` AngeloGioacchino Del Regno
  2026-02-25  7:22 ` [PATCH 4/7] PCI: mediatek-gen3: Disable device if further setup fails Chen-Yu Tsai
                   ` (4 subsequent siblings)
  7 siblings, 2 replies; 24+ messages in thread
From: Chen-Yu Tsai @ 2026-02-25  7:22 UTC (permalink / raw)
  To: Matthias Brugger, AngeloGioacchino Del Regno, Ryder Lee,
	Jianjun Wang, Lorenzo Pieralisi, Krzysztof Wilczyński,
	Manivannan Sadhasivam, Rob Herring, Bjorn Helgaas
  Cc: devicetree, linux-arm-kernel, Chen-Yu Tsai, Bartosz Golaszewski,
	linux-pci, linux-mediatek, linux-kernel

Split out existing code that deals with device power sequencing into
into helpers to allow cleaning up the error paths and integrating the
new PCI pwrctrl API,

This change is purely code movement.

Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
---
 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/controller/pcie-mediatek-gen3.c
index f2bf4afbdc2f..870d3b3db11d 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);
 }
 
+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 = readl_relaxed(pcie->base + PCIE_RST_CTRL_REG);
+		val |= 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 &= ~(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 = readl_relaxed(pcie->base + PCIE_RST_CTRL_REG);
+		val |= 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;
@@ -464,33 +512,9 @@ static int mtk_pcie_startup_port(struct mtk_gen3_pcie *pcie)
 	val |= PCIE_DISABLE_DVFSRC_VLT_REQ;
 	writel_relaxed(val, pcie->base + PCIE_MISC_CTRL_REG);
 
-	/*
-	 * 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 = readl_relaxed(pcie->base + PCIE_RST_CTRL_REG);
-		val |= 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 &= ~(PCIE_MAC_RSTB | PCIE_PHY_RSTB | PCIE_BRG_RSTB |
-			 PCIE_PE_RSTB);
-		writel_relaxed(val, pcie->base + PCIE_RST_CTRL_REG);
-	}
+	err = mtk_pcie_device_power_up(pcie);
+	if (err)
+		return err;
 
 	/* Check if the link is up or not */
 	err = readl_poll_timeout(pcie->base + PCIE_LINK_STATUS_REG, val,
@@ -1269,7 +1293,6 @@ static int mtk_pcie_suspend_noirq(struct device *dev)
 {
 	struct mtk_gen3_pcie *pcie = dev_get_drvdata(dev);
 	int err;
-	u32 val;
 
 	/* Trigger link to L2 state */
 	err = mtk_pcie_turn_off_link(pcie);
@@ -1278,13 +1301,7 @@ static int mtk_pcie_suspend_noirq(struct device *dev)
 		return err;
 	}
 
-	if (!(pcie->soc->flags & SKIP_PCIE_RSTB)) {
-		/* Assert the PERST# pin */
-		val = readl_relaxed(pcie->base + PCIE_RST_CTRL_REG);
-		val |= 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");
 
 	mtk_pcie_irq_save(pcie);
-- 
2.53.0.414.gf7e9f6c205-goog



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 4/7] PCI: mediatek-gen3: Disable device if further setup fails
  2026-02-25  7:22 [PATCH 0/7] PCI: mediatek-gen3: add power control support Chen-Yu Tsai
                   ` (2 preceding siblings ...)
  2026-02-25  7:22 ` [PATCH 3/7] PCI: mediatek-gen3: Split out device power helpers Chen-Yu Tsai
@ 2026-02-25  7:22 ` Chen-Yu Tsai
  2026-02-25  8:19   ` Bartosz Golaszewski
  2026-02-25 13:13   ` AngeloGioacchino Del Regno
  2026-02-25  7:22 ` [PATCH 5/7] PCI: mediatek-gen3: Integrate new pwrctrl API Chen-Yu Tsai
                   ` (3 subsequent siblings)
  7 siblings, 2 replies; 24+ messages in thread
From: Chen-Yu Tsai @ 2026-02-25  7:22 UTC (permalink / raw)
  To: Matthias Brugger, AngeloGioacchino Del Regno, Ryder Lee,
	Jianjun Wang, Lorenzo Pieralisi, Krzysztof Wilczyński,
	Manivannan Sadhasivam, Rob Herring, Bjorn Helgaas
  Cc: devicetree, linux-arm-kernel, Chen-Yu Tsai, Bartosz Golaszewski,
	linux-pci, linux-mediatek, linux-kernel

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_setup().

Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
---
 drivers/pci/controller/pcie-mediatek-gen3.c | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

diff --git a/drivers/pci/controller/pcie-mediatek-gen3.c b/drivers/pci/controller/pcie-mediatek-gen3.c
index 870d3b3db11d..7459e1c1899d 100644
--- a/drivers/pci/controller/pcie-mediatek-gen3.c
+++ b/drivers/pci/controller/pcie-mediatek-gen3.c
@@ -531,7 +531,7 @@ 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;
 	}
 
 	mtk_pcie_enable_msi(pcie);
@@ -556,10 +556,14 @@ static int mtk_pcie_startup_port(struct mtk_gen3_pcie *pcie)
 		err = mtk_pcie_set_trans_table(pcie, cpu_addr, pci_addr, size,
 					       type, &table_index);
 		if (err)
-			return err;
+			goto err_power_down_device;
 	}
 
 	return 0;
+
+err_power_down_device:
+	mtk_pcie_device_power_down(pcie);
+	return err;
 }
 
 #define MTK_MSI_FLAGS_REQUIRED (MSI_FLAG_USE_DEF_DOM_OPS	| \
@@ -1174,15 +1178,17 @@ static int mtk_pcie_setup(struct mtk_gen3_pcie *pcie)
 	/* Try link up */
 	err = mtk_pcie_startup_port(pcie);
 	if (err)
-		goto err_setup;
+		goto err_power_down;
 
 	err = mtk_pcie_setup_irq(pcie);
 	if (err)
-		goto err_setup;
+		goto err_device_power_off;
 
 	return 0;
 
-err_setup:
+err_device_power_off:
+	mtk_pcie_device_power_down(pcie);
+err_power_down:
 	mtk_pcie_power_down(pcie);
 
 	return err;
-- 
2.53.0.414.gf7e9f6c205-goog



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 5/7] PCI: mediatek-gen3: Integrate new pwrctrl API
  2026-02-25  7:22 [PATCH 0/7] PCI: mediatek-gen3: add power control support Chen-Yu Tsai
                   ` (3 preceding siblings ...)
  2026-02-25  7:22 ` [PATCH 4/7] PCI: mediatek-gen3: Disable device if further setup fails Chen-Yu Tsai
@ 2026-02-25  7:22 ` Chen-Yu Tsai
  2026-02-25  9:30   ` Bartosz Golaszewski
                     ` (2 more replies)
  2026-02-25  7:22 ` [PATCH 6/7] arm64: dts: mediatek: mt8195-cherry: add WiFi PCIe and BT USB power supplies Chen-Yu Tsai
                   ` (2 subsequent siblings)
  7 siblings, 3 replies; 24+ messages in thread
From: Chen-Yu Tsai @ 2026-02-25  7:22 UTC (permalink / raw)
  To: Matthias Brugger, AngeloGioacchino Del Regno, Ryder Lee,
	Jianjun Wang, Lorenzo Pieralisi, Krzysztof Wilczyński,
	Manivannan Sadhasivam, Rob Herring, Bjorn Helgaas
  Cc: devicetree, linux-arm-kernel, Chen-Yu Tsai, Bartosz Golaszewski,
	linux-pci, linux-mediatek, linux-kernel

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.

Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
---
 drivers/pci/controller/pcie-mediatek-gen3.c | 38 ++++++++++++++++-----
 1 file changed, 30 insertions(+), 8 deletions(-)

diff --git a/drivers/pci/controller/pcie-mediatek-gen3.c b/drivers/pci/controller/pcie-mediatek-gen3.c
index 7459e1c1899d..93e591f788f7 100644
--- a/drivers/pci/controller/pcie-mediatek-gen3.c
+++ b/drivers/pci/controller/pcie-mediatek-gen3.c
@@ -22,6 +22,7 @@
 #include <linux/of_device.h>
 #include <linux/of_pci.h>
 #include <linux/pci.h>
+#include <linux/pci-pwrctrl.h>
 #include <linux/phy/phy.h>
 #include <linux/platform_device.h>
 #include <linux/pm_domain.h>
@@ -421,15 +422,23 @@ static int mtk_pcie_device_power_up(struct mtk_gen3_pcie *pcie)
 		val |= PCIE_MAC_RSTB | PCIE_PHY_RSTB | PCIE_BRG_RSTB |
 		       PCIE_PE_RSTB;
 		writel_relaxed(val, pcie->base + PCIE_RST_CTRL_REG);
+	}
+
+	err = 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;
+	}
 
-		/*
-		 * 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);
+	/*
+	 * 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 &= ~(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 |= PCIE_PE_RSTB;
 		writel_relaxed(val, pcie->base + PCIE_RST_CTRL_REG);
 	}
+
+	pci_pwrctrl_power_off_devices(pcie->dev);
 }
 
 static int mtk_pcie_startup_port(struct mtk_gen3_pcie *pcie)
@@ -1211,9 +1222,13 @@ static int mtk_pcie_probe(struct platform_device *pdev)
 	pcie->soc = device_get_match_data(dev);
 	platform_set_drvdata(pdev, pcie);
 
+	err = pci_pwrctrl_create_devices(pcie->dev);
+	if (err)
+		return dev_err_probe(dev, err, "failed to create pwrctrl devices\n");
+
 	err = mtk_pcie_setup(pcie);
 	if (err)
-		return err;
+		goto err_destroy_pwrctrl;
 
 	host->ops = &mtk_pcie_ops;
 	host->sysdata = pcie;
@@ -1226,7 +1241,12 @@ static int mtk_pcie_probe(struct platform_device *pdev)
 
 err_teardown_irq_and_power_down:
 	mtk_pcie_irq_teardown(pcie);
+	mtk_pcie_device_power_down(pcie);
 	mtk_pcie_power_down(pcie);
+err_destroy_pwrctrl:
+	if (err != -EPROBE_DEFER)
+		pci_pwrctrl_destroy_devices(pcie->dev);
+
 	return err;
 }
 
@@ -1241,7 +1261,9 @@ static void mtk_pcie_remove(struct platform_device *pdev)
 	pci_unlock_rescan_remove();
 
 	mtk_pcie_irq_teardown(pcie);
+	pci_pwrctrl_power_off_devices(pcie->dev);
 	mtk_pcie_power_down(pcie);
+	pci_pwrctrl_destroy_devices(pcie->dev);
 }
 
 static void mtk_pcie_irq_save(struct mtk_gen3_pcie *pcie)
-- 
2.53.0.414.gf7e9f6c205-goog



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 6/7] arm64: dts: mediatek: mt8195-cherry: add WiFi PCIe and BT USB power supplies
  2026-02-25  7:22 [PATCH 0/7] PCI: mediatek-gen3: add power control support Chen-Yu Tsai
                   ` (4 preceding siblings ...)
  2026-02-25  7:22 ` [PATCH 5/7] PCI: mediatek-gen3: Integrate new pwrctrl API Chen-Yu Tsai
@ 2026-02-25  7:22 ` Chen-Yu Tsai
  2026-02-25 13:12   ` AngeloGioacchino Del Regno
  2026-02-25  7:22 ` [PATCH 7/7] arm64: dts: mediatek: mt8195-cherry-dojo: Describe M.2 M-key NVMe slot Chen-Yu Tsai
  2026-02-25 13:25 ` [PATCH 0/7] PCI: mediatek-gen3: add power control support Manivannan Sadhasivam
  7 siblings, 1 reply; 24+ messages in thread
From: Chen-Yu Tsai @ 2026-02-25  7:22 UTC (permalink / raw)
  To: Matthias Brugger, AngeloGioacchino Del Regno, Ryder Lee,
	Jianjun Wang, Lorenzo Pieralisi, Krzysztof Wilczyński,
	Manivannan Sadhasivam, Rob Herring, Bjorn Helgaas
  Cc: devicetree, linux-arm-kernel, Chen-Yu Tsai, Bartosz Golaszewski,
	linux-pci, linux-mediatek, linux-kernel

The MT8195 Cherry design features an M.2 E-key slot wired up with PCIe
and USB for a WiFi+BT adapter. Previously the power was just enabled
all the time with a default pinctrl setting that set the GPIO pin high.

With the PCIe slot description DT binding in place, the power supplies
can at least be added and tied to the PCIe and USB hosts. Once the
M.2 E-key binding is merged, this description can be further converted
to an M.2 E-key.

Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
---
 .../boot/dts/mediatek/mt8195-cherry.dtsi      | 47 ++++++++++++++-----
 1 file changed, 36 insertions(+), 11 deletions(-)

diff --git a/arch/arm64/boot/dts/mediatek/mt8195-cherry.dtsi b/arch/arm64/boot/dts/mediatek/mt8195-cherry.dtsi
index 6e99122c65ac..f1ff64a84267 100644
--- a/arch/arm64/boot/dts/mediatek/mt8195-cherry.dtsi
+++ b/arch/arm64/boot/dts/mediatek/mt8195-cherry.dtsi
@@ -83,6 +83,17 @@ pp3300_s3: regulator-pp3300-s3 {
 		vin-supply = <&pp3300_z2>;
 	};
 
+	pp3300_wlan: regulator-pp3300-wlan {
+		compatible = "regulator-fixed";
+		pinctrl-names = "default";
+		pinctrl-0 = <&pp3300_wlan_en_pin>;
+		regulator-name = "pp3300_wlan";
+		/* load switch */
+		enable-active-high;
+		gpio = <&pio 58 GPIO_ACTIVE_HIGH>;
+		vin-supply = <&pp3300_z2>;
+	};
+
 	/* system wide 3.3V power rail */
 	pp3300_z2: regulator-pp3300-z2 {
 		compatible = "regulator-fixed";
@@ -760,10 +771,25 @@ &ovl0_in {
 };
 
 &pcie1 {
-	status = "okay";
-
 	pinctrl-names = "default";
 	pinctrl-0 = <&pcie1_pins_default>;
+	status = "okay";
+
+	pcie@0 {
+		compatible = "pciclass,0604";
+		reg = <0 0 0 0 0>;
+		device_type = "pci";
+		num-lanes = <1>;
+		vpcie3v3-supply = <&pp3300_wlan>;
+		#address-cells = <3>;
+		#size-cells = <2>;
+		ranges;
+
+		wifi@0 {
+			reg = <0 0 0 0 0>;
+			wakeup-source;
+		};
+	};
 };
 
 &pio {
@@ -1179,12 +1205,6 @@ pins-vreg-en {
 	};
 
 	pio_default: pio-default-pins {
-		pins-wifi-enable {
-			pinmux = <PINMUX_GPIO58__FUNC_GPIO58>;
-			output-high;
-			drive-strength = <14>;
-		};
-
 		pins-low-power-pd {
 			pinmux = <PINMUX_GPIO25__FUNC_GPIO25>,
 				 <PINMUX_GPIO26__FUNC_GPIO26>,
@@ -1222,6 +1242,12 @@ pins-low-power-pupd {
 		};
 	};
 
+	pp3300_wlan_en_pin: pp3300-wlan-en-pins {
+		pins-en {
+			pinmux = <PINMUX_GPIO58__FUNC_GPIO58>;
+		};
+	};
+
 	rt1019p_pins_default: rt1019p-default-pins {
 		pins-amp-sdb {
 			pinmux = <PINMUX_GPIO100__FUNC_GPIO100>;
@@ -1570,11 +1596,10 @@ &xhci2 {
 };
 
 &xhci3 {
-	status = "okay";
-
 	/* MT7921's USB Bluetooth has issues with USB2 LPM */
 	usb2-lpm-disable;
-	vbus-supply = <&usb_vbus>;
+	vbus-supply = <&pp3300_wlan>;
+	status = "okay";
 };
 
 #include <arm/cros-ec-keyboard.dtsi>
-- 
2.53.0.414.gf7e9f6c205-goog



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 7/7] arm64: dts: mediatek: mt8195-cherry-dojo: Describe M.2 M-key NVMe slot
  2026-02-25  7:22 [PATCH 0/7] PCI: mediatek-gen3: add power control support Chen-Yu Tsai
                   ` (5 preceding siblings ...)
  2026-02-25  7:22 ` [PATCH 6/7] arm64: dts: mediatek: mt8195-cherry: add WiFi PCIe and BT USB power supplies Chen-Yu Tsai
@ 2026-02-25  7:22 ` Chen-Yu Tsai
  2026-02-25 13:12   ` AngeloGioacchino Del Regno
  2026-02-25 13:25 ` [PATCH 0/7] PCI: mediatek-gen3: add power control support Manivannan Sadhasivam
  7 siblings, 1 reply; 24+ messages in thread
From: Chen-Yu Tsai @ 2026-02-25  7:22 UTC (permalink / raw)
  To: Matthias Brugger, AngeloGioacchino Del Regno, Ryder Lee,
	Jianjun Wang, Lorenzo Pieralisi, Krzysztof Wilczyński,
	Manivannan Sadhasivam, Rob Herring, Bjorn Helgaas
  Cc: devicetree, linux-arm-kernel, Chen-Yu Tsai, Bartosz Golaszewski,
	linux-pci, linux-mediatek, linux-kernel

The Dojo device has a M.2 M-key slot for an included NVMe on some
models.

Add a proper device tree description based on the new M.2 M-key binding.
Power for the slot is controlled by the embedded controller. As far as
the main SoC is concerned, it is always on.

Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
---
 .../dts/mediatek/mt8195-cherry-dojo-r1.dts    | 38 +++++++++++++++++++
 1 file changed, 38 insertions(+)

diff --git a/arch/arm64/boot/dts/mediatek/mt8195-cherry-dojo-r1.dts b/arch/arm64/boot/dts/mediatek/mt8195-cherry-dojo-r1.dts
index 49664de99b88..57cc329f49c4 100644
--- a/arch/arm64/boot/dts/mediatek/mt8195-cherry-dojo-r1.dts
+++ b/arch/arm64/boot/dts/mediatek/mt8195-cherry-dojo-r1.dts
@@ -11,6 +11,28 @@ / {
 	compatible = "google,dojo-sku7", "google,dojo-sku5",
 		     "google,dojo-sku3", "google,dojo-sku1",
 		     "google,dojo", "mediatek,mt8195";
+
+	nvme-connector {
+		compatible = "pcie-m2-m-connector";
+		/* power is controlled by EC */
+		vpcie3v3-supply = <&pp3300_z2>;
+
+		ports {
+			#address-cells = <1>;
+			#size-cells = <0>;
+
+			port@0 {
+				reg = <0>;
+				#address-cells = <1>;
+				#size-cells = <0>;
+
+				nvme_ep: endpoint@0 {
+					reg = <0>;
+					remote-endpoint = <&pcie0_ep>;
+				};
+			};
+		};
+	};
 };
 
 &audio_codec {
@@ -72,6 +94,22 @@ &pcie0 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&pcie0_pins_default>;
 	status = "okay";
+
+	pcie@0 {
+		compatible = "pciclass,0604";
+		reg = <0 0 0 0 0>;
+		device_type = "pci";
+		num-lanes = <2>;
+		#address-cells = <3>;
+		#size-cells = <2>;
+		ranges;
+
+		port {
+			pcie0_ep: endpoint {
+				remote-endpoint = <&nvme_ep>;
+			};
+		};
+	};
 };
 
 &pciephy {
-- 
2.53.0.414.gf7e9f6c205-goog



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* Re: [PATCH 1/7] PCI: mediatek-gen3: Clean up mtk_pcie_parse_port() with dev_err_probe()
  2026-02-25  7:22 ` [PATCH 1/7] PCI: mediatek-gen3: Clean up mtk_pcie_parse_port() with dev_err_probe() Chen-Yu Tsai
@ 2026-02-25  8:11   ` Bartosz Golaszewski
  2026-02-25 13:13   ` AngeloGioacchino Del Regno
  1 sibling, 0 replies; 24+ messages in thread
From: Bartosz Golaszewski @ 2026-02-25  8:11 UTC (permalink / raw)
  To: Chen-Yu Tsai
  Cc: devicetree, linux-arm-kernel, Bartosz Golaszewski, linux-pci,
	linux-mediatek, linux-kernel, Matthias Brugger,
	AngeloGioacchino Del Regno, Ryder Lee, Jianjun Wang,
	Lorenzo Pieralisi, Krzysztof Wilczyński,
	Manivannan Sadhasivam, Rob Herring, Bjorn Helgaas

On Wed, 25 Feb 2026 08:22:18 +0100, Chen-Yu Tsai <wenst@chromium.org> said:
> 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
>
> Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
> ---

Reviewed-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 3/7] PCI: mediatek-gen3: Split out device power helpers
  2026-02-25  7:22 ` [PATCH 3/7] PCI: mediatek-gen3: Split out device power helpers Chen-Yu Tsai
@ 2026-02-25  8:13   ` Bartosz Golaszewski
  2026-02-25 13:13   ` AngeloGioacchino Del Regno
  1 sibling, 0 replies; 24+ messages in thread
From: Bartosz Golaszewski @ 2026-02-25  8:13 UTC (permalink / raw)
  To: Chen-Yu Tsai
  Cc: Matthias Brugger, AngeloGioacchino Del Regno, Ryder Lee,
	Jianjun Wang, Lorenzo Pieralisi, Krzysztof Wilczyński,
	Manivannan Sadhasivam, Rob Herring, Bjorn Helgaas, devicetree,
	linux-arm-kernel, Bartosz Golaszewski, linux-pci, linux-mediatek,
	linux-kernel

On Wed, 25 Feb 2026 08:22:20 +0100, Chen-Yu Tsai <wenst@chromium.org> said:
> Split out existing code that deals with device power sequencing into
> into helpers to allow cleaning up the error paths and integrating the
> new PCI pwrctrl API,
>
> This change is purely code movement.
>
> Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
> ---

Reviewed-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 2/7] PCI: mediatek-gen3: Add error path for probe and resume driver callbacks
  2026-02-25  7:22 ` [PATCH 2/7] PCI: mediatek-gen3: Add error path for probe and resume driver callbacks Chen-Yu Tsai
@ 2026-02-25  8:19   ` Bartosz Golaszewski
  2026-02-25 13:13   ` AngeloGioacchino Del Regno
  1 sibling, 0 replies; 24+ messages in thread
From: Bartosz Golaszewski @ 2026-02-25  8:19 UTC (permalink / raw)
  To: Chen-Yu Tsai
  Cc: devicetree, linux-arm-kernel, Bartosz Golaszewski, linux-pci,
	linux-mediatek, linux-kernel, Matthias Brugger,
	AngeloGioacchino Del Regno, Ryder Lee, Jianjun Wang,
	Lorenzo Pieralisi, Krzysztof Wilczyński,
	Manivannan Sadhasivam, Rob Herring, Bjorn Helgaas

On Wed, 25 Feb 2026 08:22:19 +0100, Chen-Yu Tsai <wenst@chromium.org> said:
> The probe and resume callbacks currently do teardown in the conditional
> block directly. This is going to get ugly when the pwrctrl calls are
> added.
>
> Move the teardown to proper error cleanup paths.
>
> Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
> ---

Reviewed-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 4/7] PCI: mediatek-gen3: Disable device if further setup fails
  2026-02-25  7:22 ` [PATCH 4/7] PCI: mediatek-gen3: Disable device if further setup fails Chen-Yu Tsai
@ 2026-02-25  8:19   ` Bartosz Golaszewski
  2026-02-25 13:13   ` AngeloGioacchino Del Regno
  1 sibling, 0 replies; 24+ messages in thread
From: Bartosz Golaszewski @ 2026-02-25  8:19 UTC (permalink / raw)
  To: Chen-Yu Tsai
  Cc: devicetree, linux-arm-kernel, Bartosz Golaszewski, linux-pci,
	linux-mediatek, linux-kernel, Matthias Brugger,
	AngeloGioacchino Del Regno, Ryder Lee, Jianjun Wang,
	Lorenzo Pieralisi, Krzysztof Wilczyński,
	Manivannan Sadhasivam, Rob Herring, Bjorn Helgaas

On Wed, 25 Feb 2026 08:22:21 +0100, Chen-Yu Tsai <wenst@chromium.org> said:
> 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_setup().
>
> Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
> ---

Reviewed-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 5/7] PCI: mediatek-gen3: Integrate new pwrctrl API
  2026-02-25  7:22 ` [PATCH 5/7] PCI: mediatek-gen3: Integrate new pwrctrl API Chen-Yu Tsai
@ 2026-02-25  9:30   ` Bartosz Golaszewski
  2026-02-25  9:37     ` Chen-Yu Tsai
  2026-02-25 13:13   ` AngeloGioacchino Del Regno
  2026-02-25 13:20   ` Manivannan Sadhasivam
  2 siblings, 1 reply; 24+ messages in thread
From: Bartosz Golaszewski @ 2026-02-25  9:30 UTC (permalink / raw)
  To: Chen-Yu Tsai
  Cc: devicetree, linux-arm-kernel, Bartosz Golaszewski, linux-pci,
	linux-mediatek, linux-kernel, Matthias Brugger,
	AngeloGioacchino Del Regno, Ryder Lee, Jianjun Wang,
	Lorenzo Pieralisi, Krzysztof Wilczyński,
	Manivannan Sadhasivam, Rob Herring, Bjorn Helgaas

On Wed, 25 Feb 2026 08:22:22 +0100, Chen-Yu Tsai <wenst@chromium.org> said:
> 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.
>
> Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
> ---

Thanks, looks small and sweet.

Reviewed-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 5/7] PCI: mediatek-gen3: Integrate new pwrctrl API
  2026-02-25  9:30   ` Bartosz Golaszewski
@ 2026-02-25  9:37     ` Chen-Yu Tsai
  0 siblings, 0 replies; 24+ messages in thread
From: Chen-Yu Tsai @ 2026-02-25  9:37 UTC (permalink / raw)
  To: Bartosz Golaszewski
  Cc: Chen-Yu Tsai, devicetree, linux-arm-kernel, Bartosz Golaszewski,
	linux-pci, linux-mediatek, linux-kernel, Matthias Brugger,
	AngeloGioacchino Del Regno, Ryder Lee, Jianjun Wang,
	Lorenzo Pieralisi, Krzysztof Wilczyński,
	Manivannan Sadhasivam, Rob Herring, Bjorn Helgaas

On Wed, Feb 25, 2026 at 5:30 PM Bartosz Golaszewski <brgl@kernel.org> wrote:
>
> On Wed, 25 Feb 2026 08:22:22 +0100, Chen-Yu Tsai <wenst@chromium.org> said:
> > 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.
> >
> > Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
> > ---
>
> Thanks, looks small and sweet.

Thanks! I originally had one large patch that was kind of ugly. I managed
to dissect it into this series.

> Reviewed-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
>


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 7/7] arm64: dts: mediatek: mt8195-cherry-dojo: Describe M.2 M-key NVMe slot
  2026-02-25  7:22 ` [PATCH 7/7] arm64: dts: mediatek: mt8195-cherry-dojo: Describe M.2 M-key NVMe slot Chen-Yu Tsai
@ 2026-02-25 13:12   ` AngeloGioacchino Del Regno
  0 siblings, 0 replies; 24+ messages in thread
From: AngeloGioacchino Del Regno @ 2026-02-25 13:12 UTC (permalink / raw)
  To: Chen-Yu Tsai, Matthias Brugger, Ryder Lee, Jianjun Wang,
	Lorenzo Pieralisi, Krzysztof Wilczyński,
	Manivannan Sadhasivam, Rob Herring, Bjorn Helgaas
  Cc: devicetree, linux-arm-kernel, Bartosz Golaszewski, linux-pci,
	linux-mediatek, linux-kernel

Il 25/02/26 08:22, Chen-Yu Tsai ha scritto:
> The Dojo device has a M.2 M-key slot for an included NVMe on some
> models.
> 
> Add a proper device tree description based on the new M.2 M-key binding.
> Power for the slot is controlled by the embedded controller. As far as
> the main SoC is concerned, it is always on.
> 
> Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>

The M.2 connector description that you're adding here is pure awesomeness.
Sunglasses on.

Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>




^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 6/7] arm64: dts: mediatek: mt8195-cherry: add WiFi PCIe and BT USB power supplies
  2026-02-25  7:22 ` [PATCH 6/7] arm64: dts: mediatek: mt8195-cherry: add WiFi PCIe and BT USB power supplies Chen-Yu Tsai
@ 2026-02-25 13:12   ` AngeloGioacchino Del Regno
  0 siblings, 0 replies; 24+ messages in thread
From: AngeloGioacchino Del Regno @ 2026-02-25 13:12 UTC (permalink / raw)
  To: Chen-Yu Tsai, Matthias Brugger, Ryder Lee, Jianjun Wang,
	Lorenzo Pieralisi, Krzysztof Wilczyński,
	Manivannan Sadhasivam, Rob Herring, Bjorn Helgaas
  Cc: devicetree, linux-arm-kernel, Bartosz Golaszewski, linux-pci,
	linux-mediatek, linux-kernel

Il 25/02/26 08:22, Chen-Yu Tsai ha scritto:
> The MT8195 Cherry design features an M.2 E-key slot wired up with PCIe
> and USB for a WiFi+BT adapter. Previously the power was just enabled
> all the time with a default pinctrl setting that set the GPIO pin high.
> 
> With the PCIe slot description DT binding in place, the power supplies
> can at least be added and tied to the PCIe and USB hosts. Once the
> M.2 E-key binding is merged, this description can be further converted
> to an M.2 E-key.
> 
> Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>

Eh, the binding is a little confusing (as in, I'd call the node "pcie-class" or
"pcie-port", but it's not your fault. Let's just go with this for now.

Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>

P.S.: Thanks for the `status` cleanups too!


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 5/7] PCI: mediatek-gen3: Integrate new pwrctrl API
  2026-02-25  7:22 ` [PATCH 5/7] PCI: mediatek-gen3: Integrate new pwrctrl API Chen-Yu Tsai
  2026-02-25  9:30   ` Bartosz Golaszewski
@ 2026-02-25 13:13   ` AngeloGioacchino Del Regno
  2026-02-25 13:20   ` Manivannan Sadhasivam
  2 siblings, 0 replies; 24+ messages in thread
From: AngeloGioacchino Del Regno @ 2026-02-25 13:13 UTC (permalink / raw)
  To: Chen-Yu Tsai, Matthias Brugger, Ryder Lee, Jianjun Wang,
	Lorenzo Pieralisi, Krzysztof Wilczyński,
	Manivannan Sadhasivam, Rob Herring, Bjorn Helgaas
  Cc: devicetree, linux-arm-kernel, Bartosz Golaszewski, linux-pci,
	linux-mediatek, linux-kernel

Il 25/02/26 08:22, Chen-Yu Tsai ha scritto:
> 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.
> 
> Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>

Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>




^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 4/7] PCI: mediatek-gen3: Disable device if further setup fails
  2026-02-25  7:22 ` [PATCH 4/7] PCI: mediatek-gen3: Disable device if further setup fails Chen-Yu Tsai
  2026-02-25  8:19   ` Bartosz Golaszewski
@ 2026-02-25 13:13   ` AngeloGioacchino Del Regno
  1 sibling, 0 replies; 24+ messages in thread
From: AngeloGioacchino Del Regno @ 2026-02-25 13:13 UTC (permalink / raw)
  To: Chen-Yu Tsai, Matthias Brugger, Ryder Lee, Jianjun Wang,
	Lorenzo Pieralisi, Krzysztof Wilczyński,
	Manivannan Sadhasivam, Rob Herring, Bjorn Helgaas
  Cc: devicetree, linux-arm-kernel, Bartosz Golaszewski, linux-pci,
	linux-mediatek, linux-kernel

Il 25/02/26 08:22, Chen-Yu Tsai ha scritto:
> 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_setup().
> 
> Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>

Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>



^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 3/7] PCI: mediatek-gen3: Split out device power helpers
  2026-02-25  7:22 ` [PATCH 3/7] PCI: mediatek-gen3: Split out device power helpers Chen-Yu Tsai
  2026-02-25  8:13   ` Bartosz Golaszewski
@ 2026-02-25 13:13   ` AngeloGioacchino Del Regno
  1 sibling, 0 replies; 24+ messages in thread
From: AngeloGioacchino Del Regno @ 2026-02-25 13:13 UTC (permalink / raw)
  To: Chen-Yu Tsai, Matthias Brugger, Ryder Lee, Jianjun Wang,
	Lorenzo Pieralisi, Krzysztof Wilczyński,
	Manivannan Sadhasivam, Rob Herring, Bjorn Helgaas
  Cc: devicetree, linux-arm-kernel, Bartosz Golaszewski, linux-pci,
	linux-mediatek, linux-kernel

Il 25/02/26 08:22, Chen-Yu Tsai ha scritto:
> Split out existing code that deals with device power sequencing into
> into helpers to allow cleaning up the error paths and integrating the
> new PCI pwrctrl API,
> 
> This change is purely code movement.
> 
> Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>

I was really about to (and really wrote 80% of it) write a comment saying
that this is not really doing power up, but then I looked at the other
patches before continuing.

Eh, I agree about doing what you're doing in this number of steps, but please
write that spoiler in the commit description here :-)

Something along the lines of...

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.

This is purely moving code around, and brings no functional changes.

After which:
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>




^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 2/7] PCI: mediatek-gen3: Add error path for probe and resume driver callbacks
  2026-02-25  7:22 ` [PATCH 2/7] PCI: mediatek-gen3: Add error path for probe and resume driver callbacks Chen-Yu Tsai
  2026-02-25  8:19   ` Bartosz Golaszewski
@ 2026-02-25 13:13   ` AngeloGioacchino Del Regno
  1 sibling, 0 replies; 24+ messages in thread
From: AngeloGioacchino Del Regno @ 2026-02-25 13:13 UTC (permalink / raw)
  To: Chen-Yu Tsai, Matthias Brugger, Ryder Lee, Jianjun Wang,
	Lorenzo Pieralisi, Krzysztof Wilczyński,
	Manivannan Sadhasivam, Rob Herring, Bjorn Helgaas
  Cc: devicetree, linux-arm-kernel, Bartosz Golaszewski, linux-pci,
	linux-mediatek, linux-kernel

Il 25/02/26 08:22, Chen-Yu Tsai ha scritto:
> The probe and resume callbacks currently do teardown in the conditional
> block directly. This is going to get ugly when the pwrctrl calls are
> added.
> 
> Move the teardown to proper error cleanup paths.
> 
> Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>

Though I don't exactly like it that much, you have a "more than just good" reason,
and that's enough for me to say

Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>



^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 1/7] PCI: mediatek-gen3: Clean up mtk_pcie_parse_port() with dev_err_probe()
  2026-02-25  7:22 ` [PATCH 1/7] PCI: mediatek-gen3: Clean up mtk_pcie_parse_port() with dev_err_probe() Chen-Yu Tsai
  2026-02-25  8:11   ` Bartosz Golaszewski
@ 2026-02-25 13:13   ` AngeloGioacchino Del Regno
  1 sibling, 0 replies; 24+ messages in thread
From: AngeloGioacchino Del Regno @ 2026-02-25 13:13 UTC (permalink / raw)
  To: Chen-Yu Tsai, Matthias Brugger, Ryder Lee, Jianjun Wang,
	Lorenzo Pieralisi, Krzysztof Wilczyński,
	Manivannan Sadhasivam, Rob Herring, Bjorn Helgaas
  Cc: devicetree, linux-arm-kernel, Bartosz Golaszewski, linux-pci,
	linux-mediatek, linux-kernel

Il 25/02/26 08:22, Chen-Yu Tsai ha scritto:
> 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
> 
> Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>

Ah, finally - thanks for this cleanup, love it.

Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>




^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 5/7] PCI: mediatek-gen3: Integrate new pwrctrl API
  2026-02-25  7:22 ` [PATCH 5/7] PCI: mediatek-gen3: Integrate new pwrctrl API Chen-Yu Tsai
  2026-02-25  9:30   ` Bartosz Golaszewski
  2026-02-25 13:13   ` AngeloGioacchino Del Regno
@ 2026-02-25 13:20   ` Manivannan Sadhasivam
  2 siblings, 0 replies; 24+ messages in thread
From: Manivannan Sadhasivam @ 2026-02-25 13:20 UTC (permalink / raw)
  To: Chen-Yu Tsai
  Cc: Matthias Brugger, AngeloGioacchino Del Regno, Ryder Lee,
	Jianjun Wang, Lorenzo Pieralisi, Krzysztof Wilczyński,
	Rob Herring, Bjorn Helgaas, devicetree, linux-arm-kernel,
	Bartosz Golaszewski, linux-pci, linux-mediatek, linux-kernel

On Wed, Feb 25, 2026 at 03:22:22PM +0800, Chen-Yu Tsai wrote:
> 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.
> 
> Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
> ---
>  drivers/pci/controller/pcie-mediatek-gen3.c | 38 ++++++++++++++++-----
>  1 file changed, 30 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/pci/controller/pcie-mediatek-gen3.c b/drivers/pci/controller/pcie-mediatek-gen3.c
> index 7459e1c1899d..93e591f788f7 100644
> --- a/drivers/pci/controller/pcie-mediatek-gen3.c
> +++ b/drivers/pci/controller/pcie-mediatek-gen3.c
> @@ -22,6 +22,7 @@
>  #include <linux/of_device.h>
>  #include <linux/of_pci.h>
>  #include <linux/pci.h>
> +#include <linux/pci-pwrctrl.h>
>  #include <linux/phy/phy.h>
>  #include <linux/platform_device.h>
>  #include <linux/pm_domain.h>
> @@ -421,15 +422,23 @@ static int mtk_pcie_device_power_up(struct mtk_gen3_pcie *pcie)
>  		val |= PCIE_MAC_RSTB | PCIE_PHY_RSTB | PCIE_BRG_RSTB |
>  		       PCIE_PE_RSTB;
>  		writel_relaxed(val, pcie->base + PCIE_RST_CTRL_REG);
> +	}
> +
> +	err = 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;
> +	}
>  
> -		/*
> -		 * 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);
> +	/*
> +	 * 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 &= ~(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 |= PCIE_PE_RSTB;
>  		writel_relaxed(val, pcie->base + PCIE_RST_CTRL_REG);
>  	}
> +
> +	pci_pwrctrl_power_off_devices(pcie->dev);
>  }
>  
>  static int mtk_pcie_startup_port(struct mtk_gen3_pcie *pcie)
> @@ -1211,9 +1222,13 @@ static int mtk_pcie_probe(struct platform_device *pdev)
>  	pcie->soc = device_get_match_data(dev);
>  	platform_set_drvdata(pdev, pcie);
>  
> +	err = pci_pwrctrl_create_devices(pcie->dev);
> +	if (err)
> +		return dev_err_probe(dev, err, "failed to create pwrctrl devices\n");
> +
>  	err = mtk_pcie_setup(pcie);
>  	if (err)
> -		return err;
> +		goto err_destroy_pwrctrl;
>  
>  	host->ops = &mtk_pcie_ops;
>  	host->sysdata = pcie;
> @@ -1226,7 +1241,12 @@ static int mtk_pcie_probe(struct platform_device *pdev)
>  
>  err_teardown_irq_and_power_down:
>  	mtk_pcie_irq_teardown(pcie);
> +	mtk_pcie_device_power_down(pcie);
>  	mtk_pcie_power_down(pcie);
> +err_destroy_pwrctrl:
> +	if (err != -EPROBE_DEFER)

Sorry for this mess. I hope to fix it soon.

- Mani

-- 
மணிவண்ணன் சதாசிவம்


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 0/7] PCI: mediatek-gen3: add power control support
  2026-02-25  7:22 [PATCH 0/7] PCI: mediatek-gen3: add power control support Chen-Yu Tsai
                   ` (6 preceding siblings ...)
  2026-02-25  7:22 ` [PATCH 7/7] arm64: dts: mediatek: mt8195-cherry-dojo: Describe M.2 M-key NVMe slot Chen-Yu Tsai
@ 2026-02-25 13:25 ` Manivannan Sadhasivam
  2026-02-26  6:12   ` Chen-Yu Tsai
  7 siblings, 1 reply; 24+ messages in thread
From: Manivannan Sadhasivam @ 2026-02-25 13:25 UTC (permalink / raw)
  To: Chen-Yu Tsai
  Cc: Matthias Brugger, AngeloGioacchino Del Regno, Ryder Lee,
	Jianjun Wang, Lorenzo Pieralisi, Krzysztof Wilczyński,
	Rob Herring, Bjorn Helgaas, devicetree, linux-arm-kernel,
	Bartosz Golaszewski, linux-pci, linux-mediatek, linux-kernel

On Wed, Feb 25, 2026 at 03:22:17PM +0800, Chen-Yu Tsai wrote:
> Hi folks,
> 
> This series adds power control support to the MediaTek PCIe gen3
> controller driver. This allows proper modeling of WiFi and NVMe
> adapters in the device tree and control over their power supplies.
> 
> Patch 1 through 4 are cleanups and minor improvements to the driver.
> 
> Patch 5 adds power control support using the new pwrctrl API to the
> PCIe controller driver.
> 
> Patch 6 adds the WiFi and BT power supplies for the MT8195 Cherry design.
> This is actually a M.2 E-key slot, but support for that is still WIP [1].
> And even with it merged, support for the USB side still needs to be
> figured out.
> 
> We can either merge this as is for now, and do another conversion later,
> or just keep this one out. However this is still an improvement over
> the current device tree, in which the power for the slot is always on
> using a pinctrl setting.
> 
> Patch 7 adds the M.2 M-key NVMe slot found on MT8195 Dojo Chromebooks.
> This change actually makes use of the M.2 pwrseq driver.
> 

Thanks a lot for doing this! I'll also try to get the Key E support for v7.1.

For the whole series,

Reviewed-by: Manivannan Sadhasivam <mani@kernel.org>

- Mani

> 
> Please have a look.
> 
> 
> Thanks
> ChenYu
> 
> [1] https://lore.kernel.org/linux-pci/20260224-pci-m2-e-v5-0-dd9b9501d33c@oss.qualcomm.com/
> 
> Chen-Yu Tsai (7):
>   PCI: mediatek-gen3: Clean up mtk_pcie_parse_port() with
>     dev_err_probe()
>   PCI: mediatek-gen3: Add error path for probe and resume driver
>     callbacks
>   PCI: mediatek-gen3: Split out device power helpers
>   PCI: mediatek-gen3: Disable device if further setup fails
>   PCI: mediatek-gen3: Integrate new pwrctrl API
>   arm64: dts: mediatek: mt8195-cherry: add WiFi PCIe and BT USB power
>     supplies
>   arm64: dts: mediatek: mt8195-cherry-dojo: Describe M.2 M-key NVMe slot
> 
>  .../dts/mediatek/mt8195-cherry-dojo-r1.dts    |  38 ++++
>  .../boot/dts/mediatek/mt8195-cherry.dtsi      |  47 +++--
>  drivers/pci/controller/pcie-mediatek-gen3.c   | 185 +++++++++++-------
>  3 files changed, 183 insertions(+), 87 deletions(-)
> 
> -- 
> 2.53.0.414.gf7e9f6c205-goog
> 

-- 
மணிவண்ணன் சதாசிவம்


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 0/7] PCI: mediatek-gen3: add power control support
  2026-02-25 13:25 ` [PATCH 0/7] PCI: mediatek-gen3: add power control support Manivannan Sadhasivam
@ 2026-02-26  6:12   ` Chen-Yu Tsai
  0 siblings, 0 replies; 24+ messages in thread
From: Chen-Yu Tsai @ 2026-02-26  6:12 UTC (permalink / raw)
  To: Manivannan Sadhasivam
  Cc: Matthias Brugger, AngeloGioacchino Del Regno, Ryder Lee,
	Lorenzo Pieralisi, Krzysztof Wilczyński, Rob Herring,
	Bjorn Helgaas, devicetree, linux-arm-kernel, Bartosz Golaszewski,
	linux-pci, linux-mediatek, linux-kernel

On Wed, Feb 25, 2026 at 9:25 PM Manivannan Sadhasivam <mani@kernel.org> wrote:
>
> On Wed, Feb 25, 2026 at 03:22:17PM +0800, Chen-Yu Tsai wrote:
> > Hi folks,
> >
> > This series adds power control support to the MediaTek PCIe gen3
> > controller driver. This allows proper modeling of WiFi and NVMe
> > adapters in the device tree and control over their power supplies.
> >
> > Patch 1 through 4 are cleanups and minor improvements to the driver.
> >
> > Patch 5 adds power control support using the new pwrctrl API to the
> > PCIe controller driver.
> >
> > Patch 6 adds the WiFi and BT power supplies for the MT8195 Cherry design.
> > This is actually a M.2 E-key slot, but support for that is still WIP [1].
> > And even with it merged, support for the USB side still needs to be
> > figured out.
> >
> > We can either merge this as is for now, and do another conversion later,
> > or just keep this one out. However this is still an improvement over
> > the current device tree, in which the power for the slot is always on
> > using a pinctrl setting.
> >
> > Patch 7 adds the M.2 M-key NVMe slot found on MT8195 Dojo Chromebooks.
> > This change actually makes use of the M.2 pwrseq driver.
> >
>
> Thanks a lot for doing this! I'll also try to get the Key E support for v7.1.

Ack. I'll try to look into how to hook up USB for Key E.

> For the whole series,
>
> Reviewed-by: Manivannan Sadhasivam <mani@kernel.org>
>
> - Mani
>
> >
> > Please have a look.
> >
> >
> > Thanks
> > ChenYu
> >
> > [1] https://lore.kernel.org/linux-pci/20260224-pci-m2-e-v5-0-dd9b9501d33c@oss.qualcomm.com/
> >
> > Chen-Yu Tsai (7):
> >   PCI: mediatek-gen3: Clean up mtk_pcie_parse_port() with
> >     dev_err_probe()
> >   PCI: mediatek-gen3: Add error path for probe and resume driver
> >     callbacks
> >   PCI: mediatek-gen3: Split out device power helpers
> >   PCI: mediatek-gen3: Disable device if further setup fails
> >   PCI: mediatek-gen3: Integrate new pwrctrl API
> >   arm64: dts: mediatek: mt8195-cherry: add WiFi PCIe and BT USB power
> >     supplies
> >   arm64: dts: mediatek: mt8195-cherry-dojo: Describe M.2 M-key NVMe slot
> >
> >  .../dts/mediatek/mt8195-cherry-dojo-r1.dts    |  38 ++++
> >  .../boot/dts/mediatek/mt8195-cherry.dtsi      |  47 +++--
> >  drivers/pci/controller/pcie-mediatek-gen3.c   | 185 +++++++++++-------
> >  3 files changed, 183 insertions(+), 87 deletions(-)
> >
> > --
> > 2.53.0.414.gf7e9f6c205-goog
> >
>
> --
> மணிவண்ணன் சதாசிவம்


^ permalink raw reply	[flat|nested] 24+ messages in thread

end of thread, other threads:[~2026-02-26  6:12 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-02-25  7:22 [PATCH 0/7] PCI: mediatek-gen3: add power control support Chen-Yu Tsai
2026-02-25  7:22 ` [PATCH 1/7] PCI: mediatek-gen3: Clean up mtk_pcie_parse_port() with dev_err_probe() Chen-Yu Tsai
2026-02-25  8:11   ` Bartosz Golaszewski
2026-02-25 13:13   ` AngeloGioacchino Del Regno
2026-02-25  7:22 ` [PATCH 2/7] PCI: mediatek-gen3: Add error path for probe and resume driver callbacks Chen-Yu Tsai
2026-02-25  8:19   ` Bartosz Golaszewski
2026-02-25 13:13   ` AngeloGioacchino Del Regno
2026-02-25  7:22 ` [PATCH 3/7] PCI: mediatek-gen3: Split out device power helpers Chen-Yu Tsai
2026-02-25  8:13   ` Bartosz Golaszewski
2026-02-25 13:13   ` AngeloGioacchino Del Regno
2026-02-25  7:22 ` [PATCH 4/7] PCI: mediatek-gen3: Disable device if further setup fails Chen-Yu Tsai
2026-02-25  8:19   ` Bartosz Golaszewski
2026-02-25 13:13   ` AngeloGioacchino Del Regno
2026-02-25  7:22 ` [PATCH 5/7] PCI: mediatek-gen3: Integrate new pwrctrl API Chen-Yu Tsai
2026-02-25  9:30   ` Bartosz Golaszewski
2026-02-25  9:37     ` Chen-Yu Tsai
2026-02-25 13:13   ` AngeloGioacchino Del Regno
2026-02-25 13:20   ` Manivannan Sadhasivam
2026-02-25  7:22 ` [PATCH 6/7] arm64: dts: mediatek: mt8195-cherry: add WiFi PCIe and BT USB power supplies Chen-Yu Tsai
2026-02-25 13:12   ` AngeloGioacchino Del Regno
2026-02-25  7:22 ` [PATCH 7/7] arm64: dts: mediatek: mt8195-cherry-dojo: Describe M.2 M-key NVMe slot Chen-Yu Tsai
2026-02-25 13:12   ` AngeloGioacchino Del Regno
2026-02-25 13:25 ` [PATCH 0/7] PCI: mediatek-gen3: add power control support Manivannan Sadhasivam
2026-02-26  6:12   ` Chen-Yu Tsai

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox