From nobody Thu Apr 16 19:12:34 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 B9B603921E8 for ; Thu, 26 Feb 2026 07:46:54 +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=1772092016; cv=none; b=hIxr4SsWtntUzTIOuAwDxsYSlnm6pD8wKTXnhoPpbmj7nINXKuPHRRviLodCmcogp/sskQfwnL3E0fZRouhIaESXKMLEGPeUT0/OBEd5f0JzpYmI2icOs4N/ogCh2gNVTYCIQOy14plXBq4KUmiMVoNHTRsdHiK+d/4i+gpeBMg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772092016; c=relaxed/simple; bh=Bnwlk0mFSJRiSnUWwIKAs1aTXmWvlpAV9tyINHz65K4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=M9naZOBnX07cH+21f07Ty0ZF5/kiqA5SZmPPv/6rOzeKBvLHB9zotlgiXcVl3MDzCoUapakH8PHMwtjyDZQzPk1ZSnno7Ibrp9nHjaHDPkuq1XPUfQhoV1hgH+rL30UOrqtGVodpHgTUy3GNZa8cAwHSz4b44oHQTHiS46qaybs= 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=ETaI3hJb; 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="ETaI3hJb" Received: by mail-pl1-f172.google.com with SMTP id d9443c01a7336-2aaf43014d0so4551745ad.2 for ; Wed, 25 Feb 2026 23:46:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1772092014; x=1772696814; 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=B3twAdKSjYAUPCtN8pakztOmGIbXnsgFqASCUc/1Hg8=; b=ETaI3hJbczHOs2MHDTxN0PT/0pO9GsW/JtpvLKh+/0WXkoS9M9Ut18ibGZxfb8Ceet Q5VBgKL9x31gkbsdDpsmY2Sk9o+bydLQII4OVYMMM0Ul3HHF//s608a9qXSe64wYn4IV VfVhGLaoOEAjy9nsw38u5LHvyVmY1Hu0u61oI= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772092014; x=1772696814; 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=B3twAdKSjYAUPCtN8pakztOmGIbXnsgFqASCUc/1Hg8=; b=TvJYYDhQTcd9YIOAs7ymOjq3yO1kJL/FLrho0rLCgxmCXbY6Y2M6VemyMUl+MX/fGk ru5Aqyzz1ggc45O/z+no4qgsF0ArJDcPgYZBYqNVncOQEujYCl6XVrjiV+Q0dV7gtO8m UkE/SrU43CTZbjx6hKGkXR1b3aiRiJEz5i5pZGrqAaVRQu7lITuqcOxRibFd8ibjDaNU 2mHR8GhzVc5Vq2Q/mKcd/lfz8GvJFDqnYfJHo4T+yGeD02Xs5MgTGQ+WiErEroBDgkay 3zhMUnq8QiU2V9fOg7AIDvKd1WcxDzAXV3N/MkDaV+VIxrrufR64h/SS2Zjf2vkl3U6m vldA== X-Forwarded-Encrypted: i=1; AJvYcCWIgRWMArR62gB0Wo/LBgYZqLCiZjXZP+Ds/pD1VSbSPmG6Z/O5JjvpWemqgjaiUs+f0gm1yU3w88DgAxA=@vger.kernel.org X-Gm-Message-State: AOJu0YyZFPI768hc/ADMNlra3TL3/bfRrrZ0dWdViBDFO7dLvJUmlxRG QynCixMiIWjkWg/e+CGPHr1NohE6JQp/NUATGrWVwvd4H1T6s9r19x1s8ySeiQ+WLA== X-Gm-Gg: ATEYQzyefTFU0KAGDk0Dbd3CKo/jDpoZz4dkHLSANQYPdOI2T3NQrxojviSu8t/226d fNQGjiGBKWMMPBIH6xxDIXxgGyyxyCWJnsJHT9DuVcnyq8sh+LF0TX0TKjKNU3FGWxJCvPcbZcn TiL9+DgvVpkggKrTiIcKnc8OkZVzck/cLq6lb8fhBm/p1+szFi0QFlzPC1R0RU2nx6eZNxyOIba 5t88qaN9RXTdKrS3n+5gGxZ4qrAFpR7fnzYgaIitBP1u6OObmNUBXgHFKk8tGHjkcQYt8rzcWeC fv3OUueTlUgB78PXLnSWHMnqAr1mEYlHb3cZ+MA/nH7rehVNrojtn2Ylt/Cuqe9Pzaaoo9XyV3c LOC+dUotMkSnGrkjJcxbvhjmzpKFXVsuzgl7/+m7ngGN/xe30r3zIQli6Czhr9BBBlXI+J6EQmj f6lw7sOPiW9gUAY9i6Jzwnj6w7GuAaxyFqIrN8QWUignhnaw3Q4HUL2MKlfWCXz0ajzy2bSf3VZ Ri7dBqH X-Received: by 2002:a17:903:1cc:b0:2ad:ba80:df60 with SMTP id d9443c01a7336-2adba80e2d7mr69699565ad.32.1772092014180; Wed, 25 Feb 2026 23:46:54 -0800 (PST) Received: from wenstp920.tpe.corp.google.com ([2a00:79e0:201d:8:bf01:7f64:477a:2f97]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2adfb5b22f3sm15238245ad.12.2026.02.25.23.46.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 25 Feb 2026 23:46:53 -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 v2 1/7] PCI: mediatek-gen3: Clean up mtk_pcie_parse_port() with dev_err_probe() Date: Thu, 26 Feb 2026 15:45:17 +0800 Message-ID: <20260226074524.3808081-2-wenst@chromium.org> X-Mailer: git-send-email 2.53.0.414.gf7e9f6c205-goog In-Reply-To: <20260226074524.3808081-1-wenst@chromium.org> References: <20260226074524.3808081-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.414.gf7e9f6c205-goog From nobody Thu Apr 16 19:12:34 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 84595392813 for ; Thu, 26 Feb 2026 07:46:57 +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=1772092018; cv=none; b=eBd6QWvcxv9nMV9j9RkGLprEaVgpBQfnqfEz1SAj9BNzqkGgRFeRLEdY6VK0+tXz2oTa22vJCQkJBmaY2NeveWQvm1Eh6+4CtUf0VfxF2fujDnLZ3oTQot+Aht2uQ5VB/hWiUbV7sooWbZgrMBFRGT39owIo7+FbZi/imNrShr0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772092018; c=relaxed/simple; bh=ox8NATtkYE0tkr9tJOefc2pJWXV/3MDxkq2VG6zVd7U=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=O5L+uNlh7vej0XMucNGgCbPpPjLcbftDlDMvl5nI1hl7m951tysujgN9Y/u3klK0SpUys1ReLlcS1eZs94JgjX63t5uowk80ImdfcxVuAujnKVqE2he8Itb5zwC2fP6wbzu1YhPIRfhUhqtMA1pL22O+vMSmQFMBOPLv3a5Vb84= 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=lXqmsY0a; 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="lXqmsY0a" Received: by mail-pl1-f172.google.com with SMTP id d9443c01a7336-2aae146b604so4076605ad.3 for ; Wed, 25 Feb 2026 23:46:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1772092017; x=1772696817; 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=rNr9GUXcZ2JMX/g86l+sUCt0HEQieC19OqXNz4Aux8Q=; b=lXqmsY0aNSKUSH0LgSbLRWI7GOvyxo6wk3VbW5h9+/YSxAgmyK2kv149x9bMk8pEH5 agp5rJpnsGfWSye/IOhj+j4s0KvtcomRaK+oFyAbcefugUzWNkEVK1lPNfWBlaYSbRKf Vb8opiLooY2OjuoHGoe5z51ZAhe2wZrqtV6JE= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772092017; x=1772696817; 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=rNr9GUXcZ2JMX/g86l+sUCt0HEQieC19OqXNz4Aux8Q=; b=bLLLxe4E/eDAr1Nv2ZQ6zow1/9F4lF669IItOCXmRynvwb8u4nzvhw3YSPzLICnSba jO7lkdYBnrRyUUFYM6XITW/WhG5Eki3a7lm3CRahrvt278Ut02GXK5FbIy0NNAiXHw3c 5OzwcNF1AEjJ7KFtswij+lxmbEJ7mcmq9JTnYny4qwnbB4OoAxk3spYE+p28J0Jgo4UD 8Me9I/6UTnPlFSChqTQYl/ATW/vrUuGJoOUehxFHECRUamHRl+LYdY/4Yesl2VtSyN4I dLlQkopfp9IhIdt0AMwuG9IjY0HQVlhW521XeDtRaiDdlyU/gEQ1Rd/LwUm6fne1+gn+ rKrw== X-Forwarded-Encrypted: i=1; AJvYcCXVwQ+d/M3C0ZVdjOS5R73LG2gyxsKV7Lunwnp1N0RTA+3LxC7QxDXcZiNxJrEbLhO4duo0wJP1gL+L+/o=@vger.kernel.org X-Gm-Message-State: AOJu0YwAF/Mc6bmJZffKF0NdhNsG1iT0xcTHPbXkUnL7NC1/ywxN+sOJ Lj94INmVt7pqUKI1F8rJSJXz0OQdZ7M3Cm6oKgaB3sLYM9swDI45dHNzK/W7d54PPQ== X-Gm-Gg: ATEYQzyvi7RGBAlaGS4XFqN5/Ud/ijTPHjb0w1SR6lawbVtPgZ9Aalj6g9Yh/EO1bHU a90HGDOaPCmJQzhNCKOjFTYyG58vjJsx6iTsbZ9uJL+4V4mbiIYpP1DAW/lR/l1R9ZffRSs0PA0 C5W7XafLoh1eQgG6C5xnb7+TH0VgEE7mxOrdkaFaasnjMbUMsQEKSX2/aBkp/g+DfpS76+Q5DXr W065Mi4S5rlKpfYkoTW/vn3Tl1dCt7TvTSS8oSrm2giDWxLILano69D9IZ5jGSOmm9LW36PrhAh XUMSeVYDSGePZmXU38QY8dTuBKUQed4i1PDpFMtA3qzUdkFb+S/WhQ1PDGMRxG/YWSAUtjIBozm O3xB7IFcTqQ6ZlKvtxXtQMZnej8R0acQGGb4DJm6yizhm3I7WIiyEygHDuvZ2k63zxvWSBB92/A Dj0UfQmXtgxitVumS/RAkQ2J4Cfc44zNw5mBuTULq1C0JXEHNR6SX7jE9HX3H3+VVIg+GO3ZIPo eE6wGddySm2EQM/7c4= X-Received: by 2002:a17:903:1a8f:b0:2aa:e0d3:cad7 with SMTP id d9443c01a7336-2ad744dfa4cmr164499035ad.27.1772092016979; Wed, 25 Feb 2026 23:46:56 -0800 (PST) Received: from wenstp920.tpe.corp.google.com ([2a00:79e0:201d:8:bf01:7f64:477a:2f97]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2adfb5b22f3sm15238245ad.12.2026.02.25.23.46.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 25 Feb 2026 23:46:56 -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 v2 2/7] PCI: mediatek-gen3: Add error path for probe and resume driver callbacks Date: Thu, 26 Feb 2026 15:45:18 +0800 Message-ID: <20260226074524.3808081-3-wenst@chromium.org> X-Mailer: git-send-email 2.53.0.414.gf7e9f6c205-goog In-Reply-To: <20260226074524.3808081-1-wenst@chromium.org> References: <20260226074524.3808081-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.414.gf7e9f6c205-goog From nobody Thu Apr 16 19:12:34 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 4C06D38BF9E for ; Thu, 26 Feb 2026 07:47:00 +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=1772092021; cv=none; b=u3YGj4oMR/9cejD7B/pIv6ObLug3RGIdkRDwTNbHXN2XwMDV/OZWOCCWMFdnZNeKfcVCmssWjPnT8sShnkl3g169pVEy52Csff0JlIblL4xjBnrFL0/XKyTZ2b64sTX8VithZLURkY0Xh5fxHFZMesN4U2RNFNz/g4ur3NDIGkg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772092021; c=relaxed/simple; bh=dRqJzj1DDkdByCxaunY1DX8fj9LvqQkVxU3rydddggw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=GEq5LcXTAo2+qhNQI5UiCbrxmw8kXMCmiIUzU4LCkPuV4OmY+J09eRhGkB6PFdk6avIb4JzuYGqjNXFIhynUVqXn0pptJZVveEvM4Bzfa2D41vpMN298vJKltfWsFSVKxBoFebAqmR195o1y3BWPpF4+ZJZwoKiXIB8fLfEGzf8= 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=bkIa1s3J; 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="bkIa1s3J" Received: by mail-pl1-f173.google.com with SMTP id d9443c01a7336-2a7a9b8ed69so5433265ad.2 for ; Wed, 25 Feb 2026 23:47:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1772092020; x=1772696820; 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=NJjBmosUgxEe4nJy82YG84Wt5BRGXOtIFhYYPVIxdgY=; b=bkIa1s3Js7UDrOTMJbTGZJbAaE+PzQNs4L/tT5Y5MCWHKYmzVPGs8vbqvYhBG3sqeI bp/zr3ua1+bGEd+h/2JNYnSA3ldANWVzCSyF3Ae49wFOx8O74dUfvSMUXyTyt33Kv5ES UJI8EfYLo4smS3dlnTATGHrDDll2zmJl2Ljew= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772092020; x=1772696820; 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=NJjBmosUgxEe4nJy82YG84Wt5BRGXOtIFhYYPVIxdgY=; b=oxyt2alfLNFGdgAzSb0JUjEpEOjKgkmlrg1WigJ8RijOgxFZN8uTijw+SdY0JPXq4n hhhr/yBSQs/jh2btZk9vBGmddcctL+zQbshC63uJeSQXWUgsvZeQ4QfDXbpyp81lg0J7 W8rGIjTcw3yJCuDLMTHyEsgzGDsV3MZ8uG6+XvD5TGQikC10htCPhMcOcs5LnqwuK8YB kRuXKszIaNUNj5yaGE+B894gOokNsuoisJo7LlRzssSk94nd2oq0wDXJ18b2bEItpQ44 9Aowm9MuMwdG6OIAD859DqTfwWUwqvUipX3gR3qwdwmxx/j9Qg024CaWZ+fi+D3dI1eO uE2g== X-Forwarded-Encrypted: i=1; AJvYcCUNK664A9kra85sojMsY5KDjDCWMWh9Dbnic92/xmct28Gaj+gUl/yqgiD59ybbWZ+oll3DDwio5tEIarw=@vger.kernel.org X-Gm-Message-State: AOJu0YyAyB7A+6ymwYUqDEpRe6o4qIsFNe8alZHvQAEm/wQTETPi5Hzz X+yvK/mqlYFx7tApETIycKPnZDsszq2n4GHn/jV2uxB41jLNap4xX9kmcUAAh71fiQ== X-Gm-Gg: ATEYQzxjOHPcHIdfsxu62K6P+RtCqv437ux4wGv5hJP+/ABt1aLfpejAXnJWkS4mfxu 7YyLrzLUnLHhIjFKuY5icnoUqfHymOEE+Dh8D+9YaczRFpIgtC3mr4WvmXrWK7xZm4+NBX4znRB fPLEbaV6+1kuLySalbg2cS6wmEcu5ltzrDVx1N39hlE1zCzu2ThTpBSZ+1J3P10dH0LHmPKLh3N OScP/KZKOzZpaXg9VjGKKW1mbyi8itNvMY5VzRzclwnInauH6w3Whz4qIBuSrk1092vcuWIUKQw aQ8xWEIEUyGQrGGNYo8n5ne+cu7mP7YvcSgNle6tguwE6plocy9vmnULWEflEb7nDyGzsB4ANB+ cKgkEVZSZopNCzaGg/jmR1Wz2WKNrwA0zbjT5rtpJ7NMTGIm635waxxuB6OjN7QEgoAuNxRYlU9 qvF12ISGUO7V4MnX529xoF4Ds7ZbidfYXyKlZ4kgc8qmnjIBPWeEwgM6jp+EHWJA2bYb2Cia6N7 07wkYF4 X-Received: by 2002:a17:902:e543:b0:2ad:b687:831b with SMTP id d9443c01a7336-2ae029805damr18837855ad.15.1772092019763; Wed, 25 Feb 2026 23:46:59 -0800 (PST) Received: from wenstp920.tpe.corp.google.com ([2a00:79e0:201d:8:bf01:7f64:477a:2f97]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2adfb5b22f3sm15238245ad.12.2026.02.25.23.46.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 25 Feb 2026 23:46:59 -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 v2 3/7] PCI: mediatek-gen3: Split out device power helpers Date: Thu, 26 Feb 2026 15:45:19 +0800 Message-ID: <20260226074524.3808081-4-wenst@chromium.org> X-Mailer: git-send-email 2.53.0.414.gf7e9f6c205-goog In-Reply-To: <20260226074524.3808081-1-wenst@chromium.org> References: <20260226074524.3808081-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.414.gf7e9f6c205-goog From nobody Thu Apr 16 19:12:34 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 F330E392C26 for ; Thu, 26 Feb 2026 07:47:02 +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=1772092024; cv=none; b=Llm/x4jiUlo7FNtQrRFBDa5hMksPySlKe4X4eu3RpQxQWjUbBKklxJtnLb1o5oIpsDlIUmEu9/4coabGrPWu/QH+uDAP915KJgMwIgEDhm9EwcIfUKjTmExszPFcqZrbWJq3SuKk52RkYq1H5dQ3KesB1WwJAWcWpzSDk5e+du0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772092024; c=relaxed/simple; bh=PpreuyvOc5SRCGFMfbqgSxNjmkU/04H16O1k/2a0tQM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=KhE14YaiiGW4F0PaQ4V8aVrCUGQdDbkLL7DNdF5EfCSN5HdZdFQ8GfqeJ0MFruj0whaSX2ZoeRzNBG8yT4E8MKMv20I5PvKZdXXzQNclJLiIPZCsNGfSHDkKGpsIQxUzvYcJYQEAPswc/6lB6OAGfx9C2JNpqKKcpRCf0EAc8eU= 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=OmsnDdG0; 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="OmsnDdG0" Received: by mail-pl1-f182.google.com with SMTP id d9443c01a7336-2ad9a9be502so3687775ad.0 for ; Wed, 25 Feb 2026 23:47:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1772092022; x=1772696822; 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=f+lEb7tL2fG6P1YagJO3dp4mOWouUPhOQxVuQNdY/Fc=; b=OmsnDdG0JDvUGHgaNJP4vEH2O0LVV46GtwXmZ/gV0pjXFb2LdefrxBqv+cw0N0epJ1 Gpxlu4Jwu9Qs+gaIurrQHKWUM45ZilErY8QqHGuraR6vscVVYwpfyf0FIZwGT/5WiTBS OMTyNL8IETZRa3UqZlNMEh7Jumre0LmSXeCgA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772092022; x=1772696822; 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=f+lEb7tL2fG6P1YagJO3dp4mOWouUPhOQxVuQNdY/Fc=; b=mAMT83Dutx66Kf7jAG1eumomZwaZMM6jdUllAoj1JGxXF5zlFlmV29y1o6BjQnI7Rp fi7bgn42KI0MN3LIejr7W/AyTAFZkqra99sNFwt+BAiYC5W2lC6wuyZU0ncZFMoAeF4S lvfVNyNJziTihSbLdMhsqIQkb50e5fdDM7A+mDT5X7auJN6iMp8If3jHd6LQxiqCFWYx u1Pj1CJ++uXwC8r3t/lE3wsLh5tbI6aCK51MiYRswhjLLUNitq/aoFEwehYk+M9bR4w5 bXrxvyqXVcDm3tu6ZVud31H+u5BPHBcHzaVfSu666W8h1eFJH1g60y3cwdktiW3OG5JT ToYg== X-Forwarded-Encrypted: i=1; AJvYcCUu7k8RqkGsMDun28xxdOyBGPM6vddVYy7Ptxiv0lfrk7QDU29eeVMikGu6pN5weuOp0vBAtog9/EI9FDY=@vger.kernel.org X-Gm-Message-State: AOJu0YzVhT77jdIoJ/7Q4vdIcDMRYwSULMCXaIbe2f/3CNS+oYPOjIh1 6z8/dhSaZQR5NWJcwOfFT4cLo2qMA0wg3u7w5HUAM6UM4/yL6ohhFTtF3SEBbpjaQQ== X-Gm-Gg: ATEYQzwUkJ4sdS//O5sxz1duFyAakW6t6khAHcE3poqMg78hNji8r0w/7KmUt1ZyOG8 4cNdo0L621qSmb1hWM9oESyvrDvstKjVz5ae3Ly4ZjE9qMwEJo3Qa9TaskC5mEu1Anl5hc7J7ck xulgTy/k29KzJ438YwRsp2kD4iH+kBmgZHJ+uHqz9ODprDlWQ7XXVbxMEdaNMXUCEllfzfO3lP7 78oKw4qApgBk+zvadn/BEayCu0/kNU0xoOWxyayBKs4PJXNY01q7tw3c8f8nh6yicakdA8fT/ki DqPcovmVU5RT6BGgvsjqRaLK6LFkuRIamumZb/OvLBa0qEbeF98Vo7xW4WtjQO42J0qHpNcOBuC zw9mQRW4qHY7eL/e/z8lvTlLa32WQ5PCWHVXQ9JjjH0j344Yc3bY9mxxGebsxac/jp8SLaI2ruJ cGGTJQmsT5H+OyOIAasGeLAM3zVrS1GfIeqRvmkW0XbTAl+L9IV5x7Ucr4OeBp4d8yzHszfaT+B wbbrmln X-Received: by 2002:a17:902:e743:b0:2aa:f43d:7c42 with SMTP id d9443c01a7336-2ade99a71c9mr33563475ad.24.1772092022489; Wed, 25 Feb 2026 23:47:02 -0800 (PST) Received: from wenstp920.tpe.corp.google.com ([2a00:79e0:201d:8:bf01:7f64:477a:2f97]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2adfb5b22f3sm15238245ad.12.2026.02.25.23.46.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 25 Feb 2026 23:47:02 -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 v2 4/7] PCI: mediatek-gen3: Disable device if further setup fails Date: Thu, 26 Feb 2026 15:45:20 +0800 Message-ID: <20260226074524.3808081-5-wenst@chromium.org> X-Mailer: git-send-email 2.53.0.414.gf7e9f6c205-goog In-Reply-To: <20260226074524.3808081-1-wenst@chromium.org> References: <20260226074524.3808081-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.414.gf7e9f6c205-goog From nobody Thu Apr 16 19:12:34 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 3AB4B392C27 for ; Thu, 26 Feb 2026 07:47:05 +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=1772092028; cv=none; b=NlwPsCK9LJ1Af3oDySVimgEsYJl8nQ+ubK/xK8a0BAJZZMMMLEH9iYANdUBp7JDSvIMf6gGwzyAv1kSvOo5CwflmjfFwtYB2+bjAdQ3R4VCBG/4x6l2IKr/H88Lu1+vQkK/Pw8Mi+Acq4jxRjXUgmwpBKWFYb+ZM907IYr7vuZg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772092028; c=relaxed/simple; bh=5RC++a47Cc6+bz1ZFTstmq7KgujLiEAt21DhnBmRpn4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ODl02RVvvBfQVRku1JqKdKyQPZLuk2IZ+uYoiklic/Z0ytrrsmdrFv5bUFWp2sso5yaqPmIgOGbHyfkoG2cFUqEOgrw/r/CP9B1cm8J/mxe4bzyLoPUkK3e/q4YXuEbuUUxlTP+BsTZPsLT5ozEMZzbvWVHesezVbnKEfMx/FkY= 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=aQDsM4qv; 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="aQDsM4qv" Received: by mail-pl1-f172.google.com with SMTP id d9443c01a7336-2adcede372cso2151745ad.0 for ; Wed, 25 Feb 2026 23:47:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1772092025; x=1772696825; 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=hWmVa+/2NNj2zj7xs37qj/2MgusYqPpP837YIn11A8s=; b=aQDsM4qvpoBxAShjLgF7ztI89EivVC69uLOlIEWAvu0j2rqHEJ6OiAbU0Gb8jQo6XJ 0GGejH9qj+RLIhKzUJpbwX2RGKe4S3nrl3kPCygktRk2xokA1AKeULCAaYs3rr6p3z91 RzdnFer5A3NeYiIW0JI3abZx37BqG1HoeY2eQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772092025; x=1772696825; 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=hWmVa+/2NNj2zj7xs37qj/2MgusYqPpP837YIn11A8s=; b=LCHxMxTMZDoIxkDAar9iVii7mZuWc3kc7wGkZsKt2YU313ejA8/luNDqGyLsJIrBhz fM8dHtmlAZRX0Yc5ZTtuSLYmKrl98/EXluwxIy3sAJMLqTpwSGs7+aSl7l8/XFiH39bB 3B4eQUhU6xJI3ZCB6sZpGuukDFbaogVXjrhaFH8t8F7kAQywr1cnwhUs3F5/qO0zpO+R 0ANtm7j+7Go4WctK7Byk1REX5AFb2PUoFeL0Ts/5V5cnCI4CNjNKUUQ+ZE2jZ9QiWE83 mmWhNmL076MoTI4Qc44+vNyrx2RJ3paye9JfGuxyQKds+bQDd6qUIV7UfHkPJ2E1p7dV F6wQ== X-Forwarded-Encrypted: i=1; AJvYcCV+WaIiWOQqjEBbx3HGdYiSj20hHb8bsxwb9K8NFUBTfeMKL3SrfdMtszYdH2McsS4+honrn+AaR3zQ1z0=@vger.kernel.org X-Gm-Message-State: AOJu0YzlHagpvpBLaOhRPLvAekykbpEvFEjnO7jaAtz+CL9aOjiMfYbP ++KavQizvO3utoNxpxoiJ8LrBnzPWpoSIEvDF9usc1IQKL5eAz8ZBDUmH3amVUoGhg== X-Gm-Gg: ATEYQzySjPVTB2dv5ImAlDLdo/SOdOLi8zLff1OhPO0czFC2/rAyv8sTQ1fncB9n6e8 B1WNDb7y21cQ/fYZM7UE/f+yEH81U2YakoQWL+EJqqpNcCGLh6+1EWO0TI4izau6GTr+9sPMAW2 BFqQ/eIVu7pHh7k7kem4bYi6Qd/XhYdEmUfQ+FpKDk7c1qfW66vNgueXRvKjUrGcDVXTFno96GB GQ45wi2F9b6/Auw27FPfPcy6C5/viYka5yX3G1yQInf0QDu2lEUtAn+KZDBo1PoVcIyY26vtd6J /QSZDw7LJeUq4zvpby9S8ZTbYL8bEHDjEoqno0J36utwjQaUDeX05o7K+QnXLQeXr9GOuNkqDpe w1y4afIOCa0XHv0wIJrL3eRNZn4IDp8cgrqqoSN963NZDorYRM2hvwG/LwStVsUPpbHlzxtzwwQ 2Q0hMAzjdshHyf8n7Y6wCWAO6is74xZwoS2QESJ5oSN2QYyIdTT+MOFMK7612zmV3fRH+/P0ENP /Mg3Mjr X-Received: by 2002:a17:903:120e:b0:2a9:450b:104 with SMTP id d9443c01a7336-2ae0370b847mr14379195ad.55.1772092025309; Wed, 25 Feb 2026 23:47:05 -0800 (PST) Received: from wenstp920.tpe.corp.google.com ([2a00:79e0:201d:8:bf01:7f64:477a:2f97]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2adfb5b22f3sm15238245ad.12.2026.02.25.23.47.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 25 Feb 2026 23:47:04 -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 v2 5/7] PCI: mediatek-gen3: Integrate new pwrctrl API Date: Thu, 26 Feb 2026 15:45:21 +0800 Message-ID: <20260226074524.3808081-6-wenst@chromium.org> X-Mailer: git-send-email 2.53.0.414.gf7e9f6c205-goog In-Reply-To: <20260226074524.3808081-1-wenst@chromium.org> References: <20260226074524.3808081-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 --- 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/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.414.gf7e9f6c205-goog From nobody Thu Apr 16 19:12:34 2026 Received: from mail-pl1-f175.google.com (mail-pl1-f175.google.com [209.85.214.175]) (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 1B8E4393DD7 for ; Thu, 26 Feb 2026 07:47:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772092033; cv=none; b=hGkEJchYKYV+raSOVHWc4jEXgfES9aXiGZnKEwl61DHe1t7WPX4DvZszcUVNXOYRD7so4xMw9z0ZMvE3QvwSW0VAU6G815r7TGw+Pr4zeEDoDOcd5t29LLKelRDbTT1XVpdesVRFLAJ6Yn5WnE7YMLrp5koYVNwGtV/mc9VgiMg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772092033; c=relaxed/simple; bh=bUb/4Nlik/131VjE3xpg2h9tP/oPh2neu7vE6n1AEhw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=cnEI/1lQ4GLd4pQXjguB5erect0eNG9jMu/PaNC/no52lBVjy00rmovhJMySe1zFe0dnsueyPzP3PeP0lRoXfOyGOFrWzZVz0FqIjVM+cNyrxyqVuqc9jh6Rsx052n0EMJhCoowOH2eOx5rxjH9/IvTfkSoY42UHreS5MVsKMS0= 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=BrlR1z25; arc=none smtp.client-ip=209.85.214.175 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="BrlR1z25" Received: by mail-pl1-f175.google.com with SMTP id d9443c01a7336-2add623cb27so3430865ad.3 for ; Wed, 25 Feb 2026 23:47:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1772092029; x=1772696829; 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=JZd4wVxGyLj+wQvrtlXscalBZuclzdirQcI9cd7xMNY=; b=BrlR1z25HERwWfXRFWalTToxQa3kvZU4Bmxzp40lAgxFo17BawqCGv426KcPPjVk2b iXMsoHOpyxeJw96ZvRtl183jBrOBbPIHvWQIWZItDTdfyXmmKA5ADqUeKG9t3SUul6TC 7+kKD2ScArUpCI+GKdWGxX3h3aZmJ+RXT3hh0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772092029; x=1772696829; 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=JZd4wVxGyLj+wQvrtlXscalBZuclzdirQcI9cd7xMNY=; b=pzIb2DXen7x4QTQRguEN5lhFmWIEGle9FxfJxY+tVaBq8lEMkZBuZMZm2DBPl6uYRd URW/T31EczUoWS8a4SdYtuQMm4gP925mrcgAh4aHH07cXJzlyrXl0eZkNdxgtNlUtjbh cbUWAweofGcDdgFLNjN/3qzWwj+FZ8MzSYu5FJ+VUy3eJ/EdgHyNwzoPlwcyuRU95kb5 it2Nav4KmLhulThUqFHCFJMP/uwdDer0nyqFIQu4IxO1xctVET6JSAQ2W6t3GnAy9pxu Lp0/v0ew91LAF79QZSyJNbQYjEQUTDL8Uv8T0+W6vAaLnYLFMNYjs+mypQKi2eEusjO8 jJUg== X-Forwarded-Encrypted: i=1; AJvYcCXEoDF1/rDh6HKXwuyHhPL4ONaEWdLfNeS94oBsE0+McFiU7jCc7mpUDZHWju1hgaxcX7W45GFzFffPs20=@vger.kernel.org X-Gm-Message-State: AOJu0YyHzTfE6j+75WySfwpZK1NgEHE8OhdAw9A7hgToN55M3qPtFeZo iBC8xMHZRa/5Q+kNNi5jmrT9MbdXitEu/iLIRMYuf+8AckNbWVay/kVGR7RgFi68tg== X-Gm-Gg: ATEYQzxQQmKBAlQRhocOuJDo9RRhP4N0m2OdhxwuepYmg0DNvwMYWhzUosUuNqe7Rb8 mWSKQh6Z8IeSEBhDui/3xfaJua8hWfQjHtYdhM1rBq9As5DC4QEK6f4nuNm/uyObmmhNV0FLxwP YFsyoRjSkORWJzT93qgEZYlh0o/XGY4DpVFn7cBsOOQNLtsXnSkoaGZ+fhGsZnLOgbyAdjXADn4 p1d+h8HVmFbRNVumvpDOHMia6AVdKQ2MnuRg9sO42wcYhziT+Bqfmw29Hv5qPDDMAcJh1xRASbg pdh30uDvDlzSIb6BiDhJrzEOTXF8idW++0RXT+gaDmSkHUMdOxEDG9ClIo/Aw7oC4hXEElx3JHD H7hcu08KU4zouWO5aHr5lQaY/pzW4shLbXYAuOv0UxW/UbLzB9eTX4krGc+wo8TGd8KNdYvI1Qr YhaCv+53mevyO7EbgefpjO9hfpNOhGcib1e3hGg0kg0ovEHPCAI4aTuuS4oLwHZnifxt3pc860W 7sCCbJg X-Received: by 2002:a17:903:11c5:b0:2a9:322e:1964 with SMTP id d9443c01a7336-2ae034bd66fmr17012505ad.31.1772092029298; Wed, 25 Feb 2026 23:47:09 -0800 (PST) Received: from wenstp920.tpe.corp.google.com ([2a00:79e0:201d:8:bf01:7f64:477a:2f97]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2adfb5b22f3sm15238245ad.12.2026.02.25.23.47.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 25 Feb 2026 23:47:07 -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 v2 6/7] arm64: dts: mediatek: mt8195-cherry: add WiFi PCIe and BT USB power supplies Date: Thu, 26 Feb 2026 15:45:22 +0800 Message-ID: <20260226074524.3808081-7-wenst@chromium.org> X-Mailer: git-send-email 2.53.0.414.gf7e9f6c205-goog In-Reply-To: <20260226074524.3808081-1-wenst@chromium.org> References: <20260226074524.3808081-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.414.gf7e9f6c205-goog From nobody Thu Apr 16 19:12:34 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 B6CF339280D for ; Thu, 26 Feb 2026 07:47:12 +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=1772092035; cv=none; b=FgPKUIlUgkujpaj7notF0pymeA8p5O2S+tVtgMk3Zat0a427I+NTB8b4iHxuKtEwDPpwv7izCu+V56WlgZ2fcijndLMM4HueFhqNp0+lz2mWuy2oX3eBlUl+BYZZfSKsKeJspj9AgXsps+ZTASEcRhQi5/vglKOdXsribFFfkFM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772092035; c=relaxed/simple; bh=AypPDr4UgXhu7uIff8wANG2+W1ncKwh2QK1mDknKf9o=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=kOAQuSyl3db2To7Xy8GrqqlS00KWtInt2AaI07oGjcXSlbgCQgZlwD8P6y60tqipoMZGxnp8sC3NbShKmghEbnqA8MNShGxtQRl/rOspzNMELgZYJyy6WxwJ/lllm9kkSaj6awOdrBvatU7BXVUrcyVMujg6KyosTUDdOSE8b3k= 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=PLp3F/3E; 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="PLp3F/3E" Received: by mail-pl1-f177.google.com with SMTP id d9443c01a7336-2addb31945aso3837225ad.1 for ; Wed, 25 Feb 2026 23:47:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1772092032; x=1772696832; 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=cfwUdpA5rCWf9a4/nMgxhcP8TttgZio63fOINzploZA=; b=PLp3F/3EUGSCRffLeldwyJIeyW7QQf1M+/XDzP1JYOWRLnuYQ6m6rPs+K8ViO66cCV xdjYXHtAezUkhOMLSOkHoTRoIvgJhRarox/WVmewai9ml0igJ3Q7znIwdEaNkciLYUCD 53T9VYNKcOBUhVAXAs6VFCvcheU22iBI7KxXo= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772092032; x=1772696832; 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=cfwUdpA5rCWf9a4/nMgxhcP8TttgZio63fOINzploZA=; b=kjAcxuB8YAISbovWhKXWyKL0uvGHNu/V2xZQ7Vubjn6E52WhikAIcWz+0qDEhLKtDh gooacoenWRlUKJF7AHtJjQRUCcxAe89D9T0cz/vuu0cD5MB/HfAdSam6e6CzNiRO3bUt ChAyl3V7leRZU+St31J+nUYG2kCLiKRO3mUFI5Gz6DHbc79cdYG/RAApGRbgRG0+Fcsr 40OnjmeHnAVpgdkwg9hXuehsig/2q8guFmo1OEVCMDrg2l12UNCMKd2pdnPONyAPSwoR hLPZjxN1zR8QkLKZlyQpFsJ0OCSF9ssV8CWeBBX1DUOp1npaQuojRpudmtlbUlqoYx1p DkYw== X-Forwarded-Encrypted: i=1; AJvYcCVVcuut7kdLIqKsSW9DgyObxlRC61e8UW1CmwHvVHircOn1drS+KQ9D7kywj2mQpU1/YL7cbWBtDHeC0Y0=@vger.kernel.org X-Gm-Message-State: AOJu0YymsrjFAJWEOvzDMDT6fEroDkxtd0lKDgyqSFz+Fx8lKmx4SgLF SAaNjxUNTk6ygfDvct6YRh1zSk7RJjJsPrsCFPGyL9oOXod738Bygb50E1YUS4gVGw== X-Gm-Gg: ATEYQzyEw7hi4ZasjH2c6N87mTWuQyMK1sMAxQBCLEjDwlqAW3q5nBfKHXX3iK2N4Av HKXuQjYwwNpnhnjt+wF88X5bKVJr5gfuvIwzbevI1IXAVXx7Gx6gRd1plwoEfOH7KLiD+l1Who3 cey/GMgbzjLk0jnm6HdDmrdcAx6wAQcHuK0Rg6ATfVJxK3QR2IeAhoq5OKOAAZ2wBc/ZdEpjVk0 HtqeeiDZJWtPqjvXY74xNxBITkT17nN7QCH3U5Y0MmODkba3pqaR0iBitbee74k5MQpMGleHNkd JDxPq67QbH4358l3Sm+6a18bLnX4Fwku1E+GnVQqfnpsf3A4BLBsL7lpRBZXf9Kk1dcngONRY6U PNr5038IXvJhTd4g/XZJ7zHKZQO6BhrHDYpj6Mw1mG/P1YWusrn/S8zPd7HCDfFd0afe82sVFQU epbQxSumiSHU2SB5JOqtqwskvUCKfxiOA/SIFnh9NxWiqM0LY/swGdqaWxRvoanYviYtCgdpp3w hmIoRCaNoUnaCIFhns= X-Received: by 2002:a17:903:41cf:b0:2ad:ae4f:345a with SMTP id d9443c01a7336-2adae4f36bcmr89126745ad.36.1772092031982; Wed, 25 Feb 2026 23:47:11 -0800 (PST) Received: from wenstp920.tpe.corp.google.com ([2a00:79e0:201d:8:bf01:7f64:477a:2f97]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2adfb5b22f3sm15238245ad.12.2026.02.25.23.47.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 25 Feb 2026 23:47:11 -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 v2 7/7] arm64: dts: mediatek: mt8195-cherry-dojo: Describe M.2 M-key NVMe slot Date: Thu, 26 Feb 2026 15:45:23 +0800 Message-ID: <20260226074524.3808081-8-wenst@chromium.org> X-Mailer: git-send-email 2.53.0.414.gf7e9f6c205-goog In-Reply-To: <20260226074524.3808081-1-wenst@chromium.org> References: <20260226074524.3808081-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.414.gf7e9f6c205-goog