From nobody Thu Apr 16 06:51:59 2026 Received: from mail-pl1-f178.google.com (mail-pl1-f178.google.com [209.85.214.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 E000B318EC5 for ; Mon, 2 Mar 2026 05:31:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772429482; cv=none; b=SnbGdZ19D2cicQC9L2oeSKFroFm45SaDKOx3gpM44QP+lr/l2iblpExgBHfvpwYg6Y5BGHfNz+7VlPSblJ+WWXyGnqHdOfS7wGq/jXkDX1N7nC1A89BhUWvyfuyiTqzO5s/wmYZ3b2lZf1iPdA5GvI6yskeph8ZQ8o2oKlLFujs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772429482; c=relaxed/simple; bh=lkTJEg59Xh1VTRhuvYCp7e3NEDvWSHHkSPwDRKRiOJA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=bmPmoVIJBve35Go36+zZL5vS+1ZZhyjuiYUFcC8Lx8BzgeyWs/m+IF+utlS5EiVIBugqFEL9OuhwkC61M+NmZl+uxStE9GZzg9xnK8hhoibGmq8M4stH225nU5qXoSLt6VgE+Ug1Daa6H4mt7V1a46vWusC6lnEV3a11Q+UMJEo= 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=bZKCiQsg; arc=none smtp.client-ip=209.85.214.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="bZKCiQsg" Received: by mail-pl1-f178.google.com with SMTP id d9443c01a7336-2ae41544dcfso14668685ad.1 for ; Sun, 01 Mar 2026 21:31:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1772429480; x=1773034280; 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=bZKCiQsg9/1NseC7Djo6WTbz1CTrR5mjFrPc14fLegXxO2xgGug4ZWS7dDWErtY5JK 3JL18pi4ZyvwMoe9LVRoido9lDFEnUIC6XJSTCjZo5z2JLHhzjQyDy4iH4t8hGKqfDGH dxJ/NG/SRIVRvarrsnmTl1zumQ/nM2eN8DslA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772429480; x=1773034280; 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=pZrpoofwSqTKaNAUBQlBLXwI8KV7wQ7bgPDuGSHK78HLEAvygw+IwDHx21ljEaTKL9 iYzAl4dEz5Q77xJFhzAhptd0B9Tmoylcup2cn3j0bazaqBB9+peY7TuuBzRxzN9zZ+5S nT8xBaswH8YjTs6odw99lyzx6vGts7btR3vDHgfCrfhTz532TmlvH/+/0baH2CLDxB/7 z7YjdcGo+kNw5AmMGrW+caDPb3JKQsAwcaFySL14F6enWJLJHDkGWWP6e+sOckiXVAns Omgi1wVQ5qtTtYSXyVYAQS7vhnHGfQr1GN3T51aTvZoQcasrUTTqnlTy8wwN43Eu+GYf mrmw== X-Forwarded-Encrypted: i=1; AJvYcCXh02rFiQW1fVc6hJUm/qLn49lDNaErsifvevWOE+AvHIUISInlTWhmu3CHzDMktBgt76Zazc5rJTdn2g8=@vger.kernel.org X-Gm-Message-State: AOJu0YzY8Dbnzng90hQfxij0xDBkl/ECvUhNTT2nR5LIC+HNsLYOxIf5 g84OQt5FKLkzRgdk24qRWlDq0Ys6KbWVmsqA+eYjjqRPE2BwadyskghG6A2OnuJA6g== X-Gm-Gg: ATEYQzz9fa4o00m5dgBfUWY3/f1h4FbRyboDIcCjpGxdlpky5GKIapXqoPgl7GEMw5S 35D0/75J9Qk1oNTzUUHHyQ+o8ih//vBTq+EFdwlqDqReycIidNzHbPLDQz3DGpeVwv28IRnSKx/ OGNrib068vpG0EkZ4APCq1C6xc4yECxZsdNBZOHjUw7HOCuDiAhQbqaIMZ6jk1Mb032tkJNN0VH PSWxjhtvv+ClPNkCPKNXcHBdwBUm9gBUcqZiRgz+GXYK/MRcsHFxtvopJ05b29M/HqmM3zFkmDg /7DPDbeq+6ZEqYYBxAd0YJYCFVwsLyEej0bLNahYTrMkbL/o2v3WALQ8Oj/QegFv8ZNM5GwQE/r w2B3U10MeQ0+viJrZUpNim5UVMNXKN5ye1T6Ul0+R/6932DkzbjOs2Y/W4DWMnDf74nigaSvoJl Oz0j4Nt1p5c2AtCrBUntYrp+bhs6YkBz24eqCLn5aA9Q90L2pI10scd81xmH40/SLBWB3gpn1zm EIixM3Q X-Received: by 2002:a17:902:ce0b:b0:2ae:5223:59ac with SMTP id d9443c01a7336-2ae52236614mr14979575ad.13.1772429480332; Sun, 01 Mar 2026 21:31:20 -0800 (PST) Received: from wenstp920.tpe.corp.google.com ([2a00:79e0:201d:8:b9b7:93f7:8c3c:59d8]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2ae5229cda1sm15196435ad.23.2026.03.01.21.31.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 01 Mar 2026 21:31:19 -0800 (PST) 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 v3 1/7] PCI: mediatek-gen3: Clean up mtk_pcie_parse_port() with dev_err_probe() Date: Mon, 2 Mar 2026 13:31:01 +0800 Message-ID: <20260302053109.1117091-2-wenst@chromium.org> X-Mailer: git-send-email 2.53.0.473.g4a7958ca14-goog In-Reply-To: <20260302053109.1117091-1-wenst@chromium.org> References: <20260302053109.1117091-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 16 06:51:59 2026 Received: from mail-pl1-f182.google.com (mail-pl1-f182.google.com [209.85.214.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 C737A317161 for ; Mon, 2 Mar 2026 05:31:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772429487; cv=none; b=Bta3KHtl+1hio2IUcc8XkTUmZcCx7zZism/LOoHBizuj+Ub626tzrUdUGknWYy25NuPeLwgzTsdlwDs/9wks7nPzagOdvPadKPumfeyvQc42srf6xvaK2riLPHhIYuxhdpHMj1VO6bTi9uSMvl+oukgFfxT8d0VSoxIkW9fE8Vk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772429487; c=relaxed/simple; bh=P2Y4QQxvaOUU75xMq/fkXWByug3Tfi/xVoYZkJnGDHw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=cuahu8HyK/R+i2TKUEvGHJvhllrZ5JJ9f9GGZ4r5L8ttllsvPbN/FULqEzSjxLu8QXWUdKL/PoPazGV2GM4R1mLfUOUEKfgBc5khlIeRieL2jnY5xLmSQZN4fxTyPixXX4+xfzJVkZcVqbuCXIoE1ps+i/aspa0p3qaTPPg+f2E= 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=RJ8KsLKd; arc=none smtp.client-ip=209.85.214.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="RJ8KsLKd" Received: by mail-pl1-f182.google.com with SMTP id d9443c01a7336-2ad21f437eeso30102435ad.0 for ; Sun, 01 Mar 2026 21:31:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1772429483; x=1773034283; 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=TnRLakFFOm81oUmP2rKumROQ+VIkSIJ/KocU0Q9JzsU=; b=RJ8KsLKdXrNcDAAhhLNWzZHmQ+miun4oGvTFtrGWZ7gHN1aO76/xO+Qv/VV+j87xjR 8G+25FAESVSSWCQTrWtu/BQ/mCiY3kjxSxpiPKMvY23owjzBgn+B+Gd3SRNN1ciK7/Q8 fuSSvV1nn9rfmGQM0OQ7LuxF9Ux6NRLyEdFlg= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772429483; x=1773034283; 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=TnRLakFFOm81oUmP2rKumROQ+VIkSIJ/KocU0Q9JzsU=; b=c19f2B9O0YwjMyK3U32KF+ZoXrgvi0oIBqKsioW5MQ1Q/xL21uh9HqMnet+4FbXbaF 0jLhM4Eqmu4YlT9lEED1MwvJEIio2Apd17JqJRf3+smCTqNOsfCYYfuCaRL3ZnDyHulL WW2gvPe6fXANy1C6xn/1ha1jjzpN2uhBp4cA89tg3yNQUoxOw3lQGbBwDZECoL7d+SfU ZThd1r3rukcmIlgrhcJVl8rRHUDf2eq2HwKeYPC1VEv95r+W3Xj1UGaJ7GxQHKUmxuhh j6tXG0eYjGP0+a7xtbNmLbLSDmNZsm5PgHaCpPc16/7kvnDR18lVbll4kzIZGF/LQKmw RBLw== X-Forwarded-Encrypted: i=1; AJvYcCXqxSVB2Kwabg8Cr+ybz6Khl5JqK3bNjT+8jLP0nWsanAWxJLi0tHI2S2M5klynR8S/7S2/vS2Zcwu5FfY=@vger.kernel.org X-Gm-Message-State: AOJu0YzJ7D38HJ2oSCiWk5VhCrrBgE0y7YYpRQ6dQC9TVMJEcUgYypGn ulWATkrcvaTf8RdR3XC0ZrkwSoEemq8saeQ0/c2skYltV9gOYBQyIMQHsoM/gIj/kg== X-Gm-Gg: ATEYQzxtSanZhzUTaRFpZJYWH1Q4zvDBNFM+x/lpmJVsGa7guGReh84jjcjYEI9Uykt SX0vJk9sKGPIQsD+nLxLjrpzNBxDPe5qXZkRVf72BlOKM0T6S8OikTFie8bbPCTzT0mOjv3PNxZ FW5Bnx/FfQ2hRp+4S+AoGuxuePO1hkp+U4GKkTfi9V0gLVrB0WpkPG9rT0X6FL8GoN9t5vt9blD YM2otkswO96+6yVhy4P27wFx6QzaYm0BHh407nrzlPqIJ3Z7gSipEm3t5MGroqxNoSwxFpxeATq aXInp5CcizCWiiGknaZqoc9MS5+q3bsh3ivHnFA55vsWI/bx+u2y1AaVYWdVtZXX0nm6IsHjEhc pF2QbP0kQzI9LHquLNgekPi2jX1cKdwzXNFgTS+0sDWkN6JNEF7aGMiEJAI9ru3G+K/lQKu92LS BxZaRe92mNvpGdBkVHUcEN3K1AWyBaLcYGqM4coXnhUFIdf9iSopkiqpW/s9L2LFLq45OkVl5Oq T1bute+2d3AXXWMfzY= X-Received: by 2002:a17:903:234c:b0:2a7:80bf:3125 with SMTP id d9443c01a7336-2ae2b8d4c4dmr117315385ad.13.1772429483143; Sun, 01 Mar 2026 21:31:23 -0800 (PST) Received: from wenstp920.tpe.corp.google.com ([2a00:79e0:201d:8:b9b7:93f7:8c3c:59d8]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2ae5229cda1sm15196435ad.23.2026.03.01.21.31.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 01 Mar 2026 21:31:22 -0800 (PST) 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 v3 2/7] PCI: mediatek-gen3: Add error path for probe and resume driver callbacks Date: Mon, 2 Mar 2026 13:31:02 +0800 Message-ID: <20260302053109.1117091-3-wenst@chromium.org> X-Mailer: git-send-email 2.53.0.473.g4a7958ca14-goog In-Reply-To: <20260302053109.1117091-1-wenst@chromium.org> References: <20260302053109.1117091-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 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. 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 | 22 ++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/drivers/pci/controller/pcie-mediatek-gen3.c b/drivers/pci/cont= roller/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 *p= dev) 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_teardown_irq_and_power_down; =20 return 0; + +err_teardown_irq_and_power_down: + mtk_pcie_irq_teardown(pcie); + mtk_pcie_power_down(pcie); + return err; } =20 static void mtk_pcie_remove(struct platform_device *pdev) @@ -1301,14 +1303,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 16 06:51:59 2026 Received: from mail-pl1-f171.google.com (mail-pl1-f171.google.com [209.85.214.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 A5E352FFDD6 for ; Mon, 2 Mar 2026 05:31:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772429487; cv=none; b=nvFZbvBUxAekQTrQHhtdGk3tkBg6MK2oYFy8cccfmaK+2KgCtgWgDXw4SBfUpf5Zq010BHxM8XL/mIAgx3NL9AW+tlUSsV6iMIm2NjRIJT1A6AGiV/w9eUT8VN/+FeYVeyiYBxIpUMJDIeO8QLUaz3Bcicmr7DJDau57HGMaf8w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772429487; c=relaxed/simple; bh=5Z49HdUOa24f/2sBn3EISpNxh+H0vlHUJWAvl9hOMzc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=vBWEVNad1igk+vzuZ3uPBDdhrFGWT1FKx/+dwrseTqTCJ6z4IrMYqJeUavdjQ1wkPPD26/Q2jGC6zBDJ436f5R3thdzOAjxWQh2tZ6OSArV2UWLJwsXPFSraLJys1TD4PCfl9n/hwoDuiJMyWXCCW9B4A1KUbFHL4aqCTPiIM0c= 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=VvF/q+//; arc=none smtp.client-ip=209.85.214.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="VvF/q+//" Received: by mail-pl1-f171.google.com with SMTP id d9443c01a7336-2ae46fc8ec1so5920085ad.3 for ; Sun, 01 Mar 2026 21:31:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1772429486; x=1773034286; 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=WS0H4gblPcUNTBMF+emXYCfilFNXiGuML7GCXXtTZqw=; b=VvF/q+//FPtues6dwGYrOx+Cdf9xuVLfmfveOMzKhqdKSW5cybkZCKyAojZ9RwZOJ4 VivA3acXFFfwwKdhTy/vFbjpmyi/BSKuxpU80CcoZ1B5+PLQUm+4f8MOjEY7NoRQRTik A+HC9WALQWhMTN/qSywbWTQ8+6hJm2RbyC9fU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772429486; x=1773034286; 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=WS0H4gblPcUNTBMF+emXYCfilFNXiGuML7GCXXtTZqw=; b=fq/6I7r4FEkWALJaLTqL0GaTCH8T4d1rUymP39gljUJS4I9fre1ZaOjUu0JngFf3cO TtaUVpOkkk2XWbr9dviyyzsTx51ou4oMtUFDBr6DKOA0WI+nKrxdiEyJbd0HIbTly5N7 L+p549DJY/ropzXIpqNG6Ze+JPq9VRQCDbSc0ecdm2XIE/ikGPtPLVMKymJeXqKQtrR0 ic4wYqT1Wd/gfpKZcr3tXgVFQXFK9dmAQWjFpIhg8KUbjImBT1jLfXck3KrLhj0nyqqN EJpzcrbgmly+1q+f3il0WaTOrqUPhcSSJA50cDzhKQH1mOBzVQlSw9lPBs5/NcaBNnBh VpXg== X-Forwarded-Encrypted: i=1; AJvYcCXfeG16oI8fRUiaMwzOvfYMaoBN9KkvqDwYMj5Pa06IQYfP58L2gAyUhPAZuy9sOlXww0CXdkG9KwSsc3I=@vger.kernel.org X-Gm-Message-State: AOJu0Yx7XwhDRQNRjlpbTRo1C4rF9vQWXpzBp/VYuJVKkjOr9k4P1oiM 9N7prgXBeygBc856EhZ9WIzm+U5zEL1HKuBJgTu3dXRxwX0ohwL8avBSQFZzJdbZDA== X-Gm-Gg: ATEYQzxb/sK1YvgZyDF9LNaFgb5gtLfB5Ss4CcpUvpYA6RzjXWxVijb7hcghUL2bHL6 /EyQGSS3Fp7X4EGgdhh9aG9OylDXZP6D94ugLUdZOUByX7Vpo+Q+/JjiJvueh0EyXefCvgW+BJ1 TGlZtGelYbsU5LKr4ZqaMsOVrY0wjW9QsJa9QhZSE1QsCZq4DzoTGdO1IdYL5AgMCVeRnj41b++ hCLEnYav1+X4LLyCfQyzyKiwzRBK3F+gtTtTpgWRAQ5IriBYSxn3CWnEsTJVAeY7ISKT214wcUl GcVWx/l17dFaV84p6SnnuXuur2DTd+ULzex+2ZFzmyFC6tNWQJMxf7/MXAe2/qI39TnUZe4sbWN esDvtkij/MI7d16TPKE/RaTeh3RN96ohzVr2uvkL/+uDLg04FEYa9AH+K/x/uAzlrv0xgl7JTy/ dUFmSA4DedW8HAN0/y8FVP2+6vlNJA8+Eikts+vYWRFPanqcefwHq77lohH06/UAameV8OtnNK4 fByC57z X-Received: by 2002:a17:903:390f:b0:2ae:478f:2ec with SMTP id d9443c01a7336-2ae478f12cfmr47093975ad.29.1772429485999; Sun, 01 Mar 2026 21:31:25 -0800 (PST) Received: from wenstp920.tpe.corp.google.com ([2a00:79e0:201d:8:b9b7:93f7:8c3c:59d8]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2ae5229cda1sm15196435ad.23.2026.03.01.21.31.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 01 Mar 2026 21:31:25 -0800 (PST) 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 v3 3/7] PCI: mediatek-gen3: Split out device power helpers Date: Mon, 2 Mar 2026 13:31:03 +0800 Message-ID: <20260302053109.1117091-4-wenst@chromium.org> X-Mailer: git-send-email 2.53.0.473.g4a7958ca14-goog In-Reply-To: <20260302053109.1117091-1-wenst@chromium.org> References: <20260302053109.1117091-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 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 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); } =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; @@ -464,33 +512,9 @@ 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 - /* - * 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, @@ -1269,7 +1293,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); @@ -1278,13 +1301,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 16 06:51:59 2026 Received: from mail-pl1-f177.google.com (mail-pl1-f177.google.com [209.85.214.177]) (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 8B42531A053 for ; Mon, 2 Mar 2026 05:31:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.177 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772429494; cv=none; b=nOo3xswDhBVMyyYQ90lRE+QYmNv9KyWKQr/qcJOfGVXd8fIwWny0Opos4BUA6MFRI5wA7WQuvs0dX42fTt72cHf0tFPoL5RUFN8I61ZtOFaHKZiuWSI+0GFd6izWsH+UILMNhPDDHeMEsPXr+JpbfB6rc7BLPspNQjHiYgflZZE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772429494; c=relaxed/simple; bh=sT3yqyHzruEvKWZj6k2mc4CeNmdBmWqvDm0NA0ApQa0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Y7A/g77uZZ1D5xujECytakCL1SUU14aTdbbbUzQBFmqABOnt2RQ54oJjwPTA2AigDrp4+kvNwKjYY9CWBX9KX/OCJWi+FMuDqqNvEhLDa3ESZXUlv1OTGyVZcxfZbllR56rkZ8+QijDSg6YhSSx7PfDamMgABkoq6IPgN/5o+Vc= 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=G/1mL+hf; arc=none smtp.client-ip=209.85.214.177 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="G/1mL+hf" Received: by mail-pl1-f177.google.com with SMTP id d9443c01a7336-2ad21f437eeso30103535ad.0 for ; Sun, 01 Mar 2026 21:31:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1772429489; x=1773034289; 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=tPd8tgeA/RssAFD8jAQGxHvdFlZ13vWwzgtMLfIKr3c=; b=G/1mL+hfmNlTRanAsQcPsovy6TTRyun8CDvaOVl+LAY3ZjR7XbZ4VGpVInkczECzrZ mdxyrtnCPwtzkEzh7r3PJLZcFrEHOJ1kuc44XtDtHNyQYt4R9HqLWRv2mZMANMGsYHHn m26CuCchP70mGkaZL1nwLCkhAA6+4rVi0Hd8M= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772429489; x=1773034289; 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=tPd8tgeA/RssAFD8jAQGxHvdFlZ13vWwzgtMLfIKr3c=; b=gQ1217DoHXyqh7irEKOJ9yQQpqzLHq5UU71i5s8jui+BG6ow4tDuyirD2sFkpOZkeZ 2DJMe9G7Pl2Izo7ie86xj004KlFMdFE90xRZ23t8bQNh67n5BCwhT+3p26h6Jk1FlPB3 rZd98djbAU6hv3KpAYFRC/0BY6tXc90X28snanQ1ayyWIV6X8WNhByXo9Qh7VCOqh6eF rYo+W7QxpvVPzer5ad+f/infRqrp2UKfKo4XymK5P6N+e9jpQXrxbxrhUAYgf9uRVccp Ln01VlkP5svoPxuyjGSrKRV1TkWvHdZplFZcz1sY6i3K2seIkRco5oHUyoyiQgHygkvJ Ig5g== X-Forwarded-Encrypted: i=1; AJvYcCVtM7ymLFspISafwPwcFSufqqPDHqX+yvEAO1dvpMHkEpLDORJ5J2G/AZQQCR3e7Y94D1OwwrChiWzDCMU=@vger.kernel.org X-Gm-Message-State: AOJu0YzW+IFNSyhCH48+tdIVfjBJbFtBGRUJsq982BQWLtWfaLxX/rW6 RQy8O+aaMIN1YrO0JN8cPzlhsea0Ze12+7P97TmVfAezxOo5bLLWud2dZar415BTwQ== X-Gm-Gg: ATEYQzzOk4jT3ds/BiC0IHrbP1k2zaNvJbpWgULUGuSwaocqstYc7JxEgnR4z0uKvzD eM4VxF0VPkGNnb1JV9T1j/BpGxdY94CredJHOtrGZCjr4lg6XhLsV+4dHVd5y5k82rwBl6MdBu+ ZE/JWbSJzLpoAXB9O0EXdCwEo60qTMrElYNZsPG1pRueGZ2IRR5e4AezVxIN3Nk7Tf7UuOMnFgl nr7hp9R6TX7AQ3bTD8IeoZmnPjRQCH5GAXe0+51/0xhAnoh4z7jiI5JlH5EMjarHYGgCsC+jTXs SZcPPGqSe2fC/rvL5qSeBOCSRiw07Fu41xJsPXClat/H9arN8TYPuWqjIDMc/amvhV7sjTPr8mx XAOXd+YXI2LjQkW+af3PfGk6hKD5wOXHT9dLrIm0gcb0GtZRWf0KuDdwirSCbzMvH46m2FaK/U+ S5b0s0YnQosOnF/wkeUQQUxpT0hA/YZtCPT40g/5/IK1DY742+riVVggY1/AHmIKpDaBTPGyqvK rph1o6G X-Received: by 2002:a17:902:ffce:b0:2ae:4ef0:168e with SMTP id d9443c01a7336-2ae4ef019e0mr23031325ad.13.1772429488915; Sun, 01 Mar 2026 21:31:28 -0800 (PST) Received: from wenstp920.tpe.corp.google.com ([2a00:79e0:201d:8:b9b7:93f7:8c3c:59d8]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2ae5229cda1sm15196435ad.23.2026.03.01.21.31.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 01 Mar 2026 21:31:28 -0800 (PST) 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 v3 4/7] PCI: mediatek-gen3: Disable device if further setup fails Date: Mon, 2 Mar 2026 13:31:04 +0800 Message-ID: <20260302053109.1117091-5-wenst@chromium.org> X-Mailer: git-send-email 2.53.0.473.g4a7958ca14-goog In-Reply-To: <20260302053109.1117091-1-wenst@chromium.org> References: <20260302053109.1117091-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_setup(). 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 | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/drivers/pci/controller/pcie-mediatek-gen3.c b/drivers/pci/cont= roller/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; } =20 mtk_pcie_enable_msi(pcie); @@ -556,10 +556,14 @@ static int mtk_pcie_startup_port(struct mtk_gen3_pcie= *pcie) err =3D mtk_pcie_set_trans_table(pcie, cpu_addr, pci_addr, size, type, &table_index); if (err) - 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 | \ @@ -1174,15 +1178,17 @@ static int mtk_pcie_setup(struct mtk_gen3_pcie *pci= e) /* Try link up */ err =3D mtk_pcie_startup_port(pcie); if (err) - goto err_setup; + goto err_power_down; =20 err =3D mtk_pcie_setup_irq(pcie); if (err) - goto err_setup; + goto err_device_power_off; =20 return 0; =20 -err_setup: +err_device_power_off: + mtk_pcie_device_power_down(pcie); +err_power_down: mtk_pcie_power_down(pcie); =20 return err; --=20 2.53.0.473.g4a7958ca14-goog From nobody Thu Apr 16 06:51:59 2026 Received: from mail-pl1-f173.google.com (mail-pl1-f173.google.com [209.85.214.173]) (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 73D346FC3 for ; Mon, 2 Mar 2026 05:31:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772429493; cv=none; b=jpo9DBEkq2l3QJlCEsk2aJ15H6S9RYjHMNw1Nb9r5XuSkpgg3zqIbmIV2VlGLjMNaxdei+KJRIHLsBwKLxt1+eZiJEltYP36jkBo0viam6TJ7xj1/INg144HOBFlHVGM2tl/OZKsgKB+0Un9kqOrqVEFN/kUQ7wA3RbLxza83jY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772429493; c=relaxed/simple; bh=JYzvM3prgMgwIxBkk72ctJU7YjIZt/8KSOwqrx0Zrg8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=DEbJEp1kcidVLfC2So868FtH5BAAevUi9QixB4XlXdpIzNW0Z5cmLL7Z3U5gxXK7HdA1pkJIQ1JA7MC8tXQNYTN7F9uPBBrkt0T92s9+F+gVVWC18qQkVuIWIBLL2/s35NA92Hilp/EtJozLgvh8yO4AxXid51b1uf/NiBKKcl4= 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=WYZCcdAX; arc=none smtp.client-ip=209.85.214.173 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="WYZCcdAX" Received: by mail-pl1-f173.google.com with SMTP id d9443c01a7336-2ae4d919f9bso4035485ad.0 for ; Sun, 01 Mar 2026 21:31:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1772429492; x=1773034292; 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=uFFvNBaU3ukfXIRtGlvARwBwSZQA57YUx4AEefexLes=; b=WYZCcdAX6WaH40QlTYD/vf9wx9NIEUSkTK9FaIsyy7KLjRQ3zRyl6UZ8zsVSqhTRGr E2Z9llGb+NXgEh3xB2KbmH1vIja6Y+Qf4NtRYZJN9MaXJkPxNw+iYpA9yKu2P+LlJTfB OAssa+tTQkVfC4XNnDi6IB4oeIKlh2629/75Q= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772429492; x=1773034292; 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=uFFvNBaU3ukfXIRtGlvARwBwSZQA57YUx4AEefexLes=; b=XV2/mn1YxqeU7qFW85do5d1SGAqjBouwnBmyfj/KF/A/wOOGxDD6nonCs5s3v6UTxW KogBaGvNhD2B+wTAVme1JQVaozncs4kdxi0Pe39R3eqrtJSryAxOQfd3RMT2vx/BosgT MlR4hZbKJgpLTZtqqcLrLcWpSFBRnfc8dB+QtyttV1Zxwl9HplGwfgJoCbupWhM1JOEd RDF8r+IT/R7J2uRDLYZVa1Ll8pzlH913862d3hKkGpP5g62dyL83V4iwnvV3mPNxV6aR II/Ed41ltlMwu5+G1tBp3/C2EGITk+cD3bhCWECkhTjp865xbu4x5c6l57rEbK8JJ4ls urqg== X-Forwarded-Encrypted: i=1; AJvYcCWENZSJ6ecsYZDTn6I8oCTYfd3SiA04QguosabjN3jm5TcZnCFLA0m4nXn10d5Eh7oKG0Zf4O+/yxnJNSE=@vger.kernel.org X-Gm-Message-State: AOJu0YyrPQ1jXhUGxcFoDOd6PTWETG5zP2kHOnnwasmels/rb4cN3ijH JMXRogjctYXcTz12+LYbILQawGKv0eB4Oq4gc+vXcfAgFJiSibYj/7SEYg8I7K6uWA== X-Gm-Gg: ATEYQzwUZS2QtfzHjBkLx8MFtgmof2pyad0++BAOlX0F/bpJyIyIY6GeLvO1lZhGP9d Z+TEbd1a2dYzvv98HhvUbv54Y7L2F+3c5c9Y/mpiNa8j8v+/pvpHx3CYPUC+u9qVrSKOwOurLXZ x2hm1dDQlzbIoiZP8hXzun3uBlfwkZFZYPoBPqQ4uv3onontuQ/Xug7Y07l77z918c69BWzVndO 9F7FuCjiVfEJAnl36oyQ3NvfXD7OJk7AJLiexmBeE6sKHR6pIOIY/up8vvOOVsCPY05GVxR4QYD O+KcW9ZEKM8YMMNnt7uZ5/A651DXpJO6SIwrqOTbQdqCaBaFXnZfGcOK+03ck4FXz7fWzW2iSQ1 peYVrNagK2HwT3t6Sj8v372wrG0UiG9TIfaZU/EnwWdDuUGBCyqpoq1MhHuskaprq8Jw+cH9ypi TKC/Ah0dTmInzxVay0coF3Gajrjzvk06rAEIs0vXzEc++jOouJI5w7+sZKAEfisuMDgBcoYrgXD sG5yCUJ X-Received: by 2002:a17:903:2ece:b0:2ae:3a77:a1eb with SMTP id d9443c01a7336-2ae3a77a535mr70848245ad.39.1772429491782; Sun, 01 Mar 2026 21:31:31 -0800 (PST) Received: from wenstp920.tpe.corp.google.com ([2a00:79e0:201d:8:b9b7:93f7:8c3c:59d8]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2ae5229cda1sm15196435ad.23.2026.03.01.21.31.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 01 Mar 2026 21:31:31 -0800 (PST) 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 v3 5/7] PCI: mediatek-gen3: Integrate new pwrctrl API Date: Mon, 2 Mar 2026 13:31:05 +0800 Message-ID: <20260302053109.1117091-6-wenst@chromium.org> X-Mailer: git-send-email 2.53.0.473.g4a7958ca14-goog In-Reply-To: <20260302053109.1117091-1-wenst@chromium.org> References: <20260302053109.1117091-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 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 7459e1c1899d..93e591f788f7 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); + } + + 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); + /* + * 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); =20 + 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) @@ -1211,9 +1222,13 @@ static int mtk_pcie_probe(struct platform_device *pd= ev) pcie->soc =3D device_get_match_data(dev); platform_set_drvdata(pdev, pcie); =20 + err =3D pci_pwrctrl_create_devices(pcie->dev); + if (err) + return dev_err_probe(dev, err, "failed to create pwrctrl devices\n"); + err =3D mtk_pcie_setup(pcie); if (err) - return err; + goto err_destroy_pwrctrl; =20 host->ops =3D &mtk_pcie_ops; host->sysdata =3D pcie; @@ -1226,7 +1241,12 @@ static int mtk_pcie_probe(struct platform_device *pd= ev) =20 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 !=3D -EPROBE_DEFER) + pci_pwrctrl_destroy_devices(pcie->dev); + return err; } =20 @@ -1241,7 +1261,9 @@ static void mtk_pcie_remove(struct platform_device *p= dev) pci_unlock_rescan_remove(); =20 mtk_pcie_irq_teardown(pcie); + pci_pwrctrl_power_off_devices(pcie->dev); mtk_pcie_power_down(pcie); + pci_pwrctrl_destroy_devices(pcie->dev); } =20 static void mtk_pcie_irq_save(struct mtk_gen3_pcie *pcie) --=20 2.53.0.473.g4a7958ca14-goog From nobody Thu Apr 16 06:51:59 2026 Received: from mail-pl1-f173.google.com (mail-pl1-f173.google.com [209.85.214.173]) (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 30BDA31716C for ; Mon, 2 Mar 2026 05:31:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772429500; cv=none; b=JARPBEC1EFj3DUiOs41qCBV04c//cdY3y/s00/VOlXuFdLQiGiojSwsALhKuAlt+gvqFpsJ+Fna7rd+onGC+L8YmzUfKPKTSPVTlEcq5mKVcj/oOLpSb1EMH756VXJUziPLhygx+V4UFTzTrYTP7zHcxDTKgnFkfSnQMG7LfOh8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772429500; c=relaxed/simple; bh=Ppi6hQERjQLR9FGUc7Pbwa1ZIIuN+DJU2f7GSXTRchM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=qIQd36O2jjDbrsgbynfOQj8mVwmDCUbzw96E37FhU/i75p10AseSPIFHFNnYWFoRkuLZFuSmFMXD+L2CVdYGSOymyi3MrDMeur61l8odcLVx8BHKAq+xv0UtEs44rCrhMzBZfj5nUV1hExcjCL9Uy8YSedvYpaZKwtibhwYZDxk= 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=azEew83o; arc=none smtp.client-ip=209.85.214.173 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="azEew83o" Received: by mail-pl1-f173.google.com with SMTP id d9443c01a7336-2aaf43014d0so32028585ad.2 for ; Sun, 01 Mar 2026 21:31:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1772429494; x=1773034294; 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=6ly6u8R7bmz5Bdr6kesmUkfvdxyNrxQnN2igtDps6Mw=; b=azEew83oLG4kBcq0xdKtHP4cay9iWpSMXd6t+t3FRtBhMqtuIxKP5Cz/HbErXblr5L KKWjgLwAMwtfm4qhdbZBwRYQIZutv3d5bdq6XjC2b5EIvX7LZLJGr2Gr/G3Bf/hDe3wl yK8qinvjwijz706VByQs7P3fp44AXWEmfp1W4= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772429494; x=1773034294; 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=6ly6u8R7bmz5Bdr6kesmUkfvdxyNrxQnN2igtDps6Mw=; b=gNESVenC6Cwl1dh7G6hj7ULfrfqvzQu42ztNGWJu9t+qJ6Sq5weD5A0WAGKFtpaXDo Jhp/uOUTKAZKYStsubX3/eEh/Si/eHCYpEUNdaqMzcxMBvbYyf3qxgQq9hezL+AdfCT5 I8HGVumPWEedwol5EZqu3vFds7aqlHHiI0YvHk3rPRrcu2sRqmhl0OL61thPNqMMebgi zVDpkQ2woKADdqDPGrOzutnxIX9lbeZkQSdg/EqlBCZxAUyI8bDD1H5H5oW3JQVs/dPI QKOruBRbQdihiH2zQnpAM3DEV7ltjNJGg6fnA45JTUOVvdzmJkWSe2EBzfFOZUR7C9K9 dDew== X-Forwarded-Encrypted: i=1; AJvYcCXVINrU+0YPZ03KX2HnOrFc7422hXJsp1Manyne6evm7JTnu6Vdhar8w/ysL2S9LQ887wCt/RfHxkranEM=@vger.kernel.org X-Gm-Message-State: AOJu0Ywo8Ffyh05WO2R7Qu8SfR5LZHAMcV9vugC1r2RSmgarv23ftvUr AeUvz0SNmN9iw++MkJnqVWNGje5oQpav3BbAu6tPE1yfSxpfyQWv+n8mjVsDVE+yZgR6HsXjS7S NoQ4oqg== X-Gm-Gg: ATEYQzwhrChkJIQcsNwNIHA8oD4OF93z4UuLL8Pjf6VELQ7tGDXH+e0XsgYEXUdJhL9 DbyuCUUKP33Ha42iMVrQMjt3w8Cm6Vl8iK30egbNYMSyRPXbR4Lp7aT0JURbhNgS7BevvtZ5gZv L/5QAZX1rnF08qtluiMAViCNTs89P4+ttrxPbqRfFPzsnd/gQl5ettLgQgeYv8NC/gUgwPNfTmn PXOZpwwpZLGPSeKxVUEcirMeTAauk2Awo6vrX/6+mNcyFbknY4qaPyKsCWRWnxQsFIs/Fyb8nfr NSu5nQILwXGu37n5Zlrfm5eqWKFScX30IQU5WUx2wovrBg5BjNCg9nDShyc+fugZSbpl0W0uWWX HHJGSxbO8z6vZ+6mYKrIC2A1XlJx25HRERu3vchTkFvy93QhRtVwQ3hJl9HMuMoAMJdYjpbTa/1 uccUXGHTM0DlFkiq+z1rTaHZQ7roYQtxsRwKJI4vcEeofyG+WEFTyIHaGrGCjJ/plsXHOULOXAV Ri068xI X-Received: by 2002:a17:902:e74b:b0:2ad:ae4f:3458 with SMTP id d9443c01a7336-2ae2e4e2c8fmr110384055ad.55.1772429494577; Sun, 01 Mar 2026 21:31:34 -0800 (PST) Received: from wenstp920.tpe.corp.google.com ([2a00:79e0:201d:8:b9b7:93f7:8c3c:59d8]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2ae5229cda1sm15196435ad.23.2026.03.01.21.31.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 01 Mar 2026 21:31:34 -0800 (PST) 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 Subject: [PATCH v3 6/7] arm64: dts: mediatek: mt8195-cherry: add WiFi PCIe and BT USB power supplies Date: Mon, 2 Mar 2026 13:31:06 +0800 Message-ID: <20260302053109.1117091-7-wenst@chromium.org> X-Mailer: git-send-email 2.53.0.473.g4a7958ca14-goog In-Reply-To: <20260302053109.1117091-1-wenst@chromium.org> References: <20260302053109.1117091-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 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. Reviewed-by: AngeloGioacchino Del Regno Reviewed-by: Manivannan Sadhasivam Signed-off-by: Chen-Yu Tsai --- .../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/b= oot/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 =3D <&pp3300_z2>; }; =20 + pp3300_wlan: regulator-pp3300-wlan { + compatible =3D "regulator-fixed"; + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pp3300_wlan_en_pin>; + regulator-name =3D "pp3300_wlan"; + /* load switch */ + enable-active-high; + gpio =3D <&pio 58 GPIO_ACTIVE_HIGH>; + vin-supply =3D <&pp3300_z2>; + }; + /* system wide 3.3V power rail */ pp3300_z2: regulator-pp3300-z2 { compatible =3D "regulator-fixed"; @@ -760,10 +771,25 @@ &ovl0_in { }; =20 &pcie1 { - status =3D "okay"; - pinctrl-names =3D "default"; pinctrl-0 =3D <&pcie1_pins_default>; + status =3D "okay"; + + pcie@0 { + compatible =3D "pciclass,0604"; + reg =3D <0 0 0 0 0>; + device_type =3D "pci"; + num-lanes =3D <1>; + vpcie3v3-supply =3D <&pp3300_wlan>; + #address-cells =3D <3>; + #size-cells =3D <2>; + ranges; + + wifi@0 { + reg =3D <0 0 0 0 0>; + wakeup-source; + }; + }; }; =20 &pio { @@ -1179,12 +1205,6 @@ pins-vreg-en { }; =20 pio_default: pio-default-pins { - pins-wifi-enable { - pinmux =3D ; - output-high; - drive-strength =3D <14>; - }; - pins-low-power-pd { pinmux =3D , , @@ -1222,6 +1242,12 @@ pins-low-power-pupd { }; }; =20 + pp3300_wlan_en_pin: pp3300-wlan-en-pins { + pins-en { + pinmux =3D ; + }; + }; + rt1019p_pins_default: rt1019p-default-pins { pins-amp-sdb { pinmux =3D ; @@ -1570,11 +1596,10 @@ &xhci2 { }; =20 &xhci3 { - status =3D "okay"; - /* MT7921's USB Bluetooth has issues with USB2 LPM */ usb2-lpm-disable; - vbus-supply =3D <&usb_vbus>; + vbus-supply =3D <&pp3300_wlan>; + status =3D "okay"; }; =20 #include --=20 2.53.0.473.g4a7958ca14-goog From nobody Thu Apr 16 06:51:59 2026 Received: from mail-pl1-f172.google.com (mail-pl1-f172.google.com [209.85.214.172]) (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 C783C3164D6 for ; Mon, 2 Mar 2026 05:31:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772429499; cv=none; b=E/EI7HMMmmDg84XQyf6rdXQhsnkDoOdyexSHWrdjW7zB3twrxhAqcW6G2HwUm70IWgabEapyQgArOKOkCr4nU8DwHYQK38jcaZHAEyleR/cK7SuOZCpn3KYMgwxrCyKKTGZwJRUpL5FCcBdXpuRu9r6uLdfzqIUdvg3keBGgt+c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772429499; c=relaxed/simple; bh=aUhA32YGjPQJB795po9T8wUDAYDJceDw1NoTVN5jakE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=WjqJOj3nuIM/+MLxyTl1knt0R2+bNQdjeXVCbAtcbLYoguJ5LC6vrBe++nYfol50ERj+FnzF4hS8ixejBXvlEg0soE2dSdjU4gKzkRnCZlX6Zujip9T/hmpXtfVg6nRlGO/yvqFr85VijB1gHFD5WT8BYMZkUgkN5FMe7+b6sWo= 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=UEyttflJ; arc=none smtp.client-ip=209.85.214.172 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="UEyttflJ" Received: by mail-pl1-f172.google.com with SMTP id d9443c01a7336-2ae56f8776dso1344305ad.3 for ; Sun, 01 Mar 2026 21:31:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1772429497; x=1773034297; 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=l55rscaGmzYhvn0+eMNyy4NMWKpZ4qt99Qpf3fX6h+w=; b=UEyttflJF6yEwHi5bY2zjb3aCjAXt5DoOZnFO/X85vYdLQayDwCB1CBFIxm0GHIKsH qYiYSUDkh29UQnNpe0wEs5P3VweAya0X3y+ALr+sN/CB4dgSlKuhxtGULHPguIGcmPIb EFlf6dNzpdobdXHlP9GaRj6xUSZr5mb/HdiMU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772429497; x=1773034297; 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=l55rscaGmzYhvn0+eMNyy4NMWKpZ4qt99Qpf3fX6h+w=; b=cdZaZYze72731qzSTZOa0o0nmRGRMUz8/WSICUyXPMtlGiJXc0OpG04ZRQfwegCOPh tHcmButxZvkBUaPzxM2giK8ysLGST33bGZnjGowi5JAsy7MCIYsIgk1znv3IdxIJQJEm 4bjWjFczKMhFUgqCtX7yWVgs8qasPR4Rt/kJxnAjgnb6UztjBEcjGsMR1wWxRSVVrZ0B 2HjP2FcjaEaK3JQyWD0EwbAe4X7cTA8aLwIUgAWNsJTE81nIpXu137R6mDVTgLmsvLfP Vt3md+QwERvjZLjfpH3Ae89lgkZ+Y+nhfJQhKIzSBF5qGnGIgox8QfkLNqtmo/z2yl29 pkrA== X-Forwarded-Encrypted: i=1; AJvYcCVwUnyqV9HBmsQp/VkNO0v7GzxXx2mzEteSxa8zMVOTzv4YQhM8lYk09cjqrOu3YivsJY21pBtSVEiDnCc=@vger.kernel.org X-Gm-Message-State: AOJu0YxYzXRCe4M/dx6j0D7LG7c9vGFqxcW8d9WEhBZ6Uqb9Cjf31iOx 4VxGzL3MjQNq/LfQ97+IzWX624MyLT9yvf7z0gGfx47WL82OOUoG6c0+UQtjgR1VaA== X-Gm-Gg: ATEYQzyRSJZ4elZPN4ge6TSiCXnpDqmN267PirG6meRlKU0T2azU6ycILaxVp2Ippsy CF243uJ+9YSiX59vkxMpPl6V/QRN+hmrFtirWbeQVZHoQQgILfi0gWcOVXNhsnSRUjdUIeqSMic a51qxdSj59rMhgKZ0nnhiKocp43T+tNgYIFaHuCg4lDT+XWrilAC48QOqEzxTGh/OEej5z4KJB2 GwpP4bOoHeEEDdqF2a6ZiomU05lqgTPEfOIK/gBmSxe7cWIb+Iy0vORXllUv1+LGaIz7D0skvhP Czu6M5BRfUZfPGmN5xDxVT6x4ubVfNKDk3KBdQmyLU0gUJqrhVxF/+Z96pNw4spVf8ppiEnmXkB p6hc/6pZz4qzsLndkYn4x8ylvGh2Oautgap16CBbvPYGpHBQMwTj/DefbUCsXIwDZetB4Lv0YIw HBbgNEcn6zWfQV59e1AdGGlpHYiiUYI5Po3jNTZFeVWudhNNOqVNlSxNokSDX/Sw8d/l06S4fxk lsR4EBW0bXTGQ3JxEw= X-Received: by 2002:a17:903:46cc:b0:2ae:5426:da49 with SMTP id d9443c01a7336-2ae5426dcf7mr12070805ad.34.1772429497286; Sun, 01 Mar 2026 21:31:37 -0800 (PST) Received: from wenstp920.tpe.corp.google.com ([2a00:79e0:201d:8:b9b7:93f7:8c3c:59d8]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2ae5229cda1sm15196435ad.23.2026.03.01.21.31.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 01 Mar 2026 21:31:36 -0800 (PST) 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 Subject: [PATCH v3 7/7] arm64: dts: mediatek: mt8195-cherry-dojo: Describe M.2 M-key NVMe slot Date: Mon, 2 Mar 2026 13:31:07 +0800 Message-ID: <20260302053109.1117091-8-wenst@chromium.org> X-Mailer: git-send-email 2.53.0.473.g4a7958ca14-goog In-Reply-To: <20260302053109.1117091-1-wenst@chromium.org> References: <20260302053109.1117091-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 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. Reviewed-by: AngeloGioacchino Del Regno Reviewed-by: Manivannan Sadhasivam Signed-off-by: Chen-Yu Tsai --- .../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 =3D "google,dojo-sku7", "google,dojo-sku5", "google,dojo-sku3", "google,dojo-sku1", "google,dojo", "mediatek,mt8195"; + + nvme-connector { + compatible =3D "pcie-m2-m-connector"; + /* power is controlled by EC */ + vpcie3v3-supply =3D <&pp3300_z2>; + + ports { + #address-cells =3D <1>; + #size-cells =3D <0>; + + port@0 { + reg =3D <0>; + #address-cells =3D <1>; + #size-cells =3D <0>; + + nvme_ep: endpoint@0 { + reg =3D <0>; + remote-endpoint =3D <&pcie0_ep>; + }; + }; + }; + }; }; =20 &audio_codec { @@ -72,6 +94,22 @@ &pcie0 { pinctrl-names =3D "default"; pinctrl-0 =3D <&pcie0_pins_default>; status =3D "okay"; + + pcie@0 { + compatible =3D "pciclass,0604"; + reg =3D <0 0 0 0 0>; + device_type =3D "pci"; + num-lanes =3D <2>; + #address-cells =3D <3>; + #size-cells =3D <2>; + ranges; + + port { + pcie0_ep: endpoint { + remote-endpoint =3D <&nvme_ep>; + }; + }; + }; }; =20 &pciephy { --=20 2.53.0.473.g4a7958ca14-goog