From: Bjorn Helgaas <helgaas@kernel.org>
To: Christian Bruel <christian.bruel@foss.st.com>
Cc: lpieralisi@kernel.org, kwilczynski@kernel.org, mani@kernel.org,
robh@kernel.org, bhelgaas@google.com, krzk+dt@kernel.org,
conor+dt@kernel.org, mcoquelin.stm32@gmail.com,
alexandre.torgue@foss.st.com, p.zabel@pengutronix.de,
johan+linaro@kernel.org, cassel@kernel.org,
shradha.t@samsung.com, thippeswamy.havalige@amd.com,
quic_schintav@quicinc.com, linux-pci@vger.kernel.org,
devicetree@vger.kernel.org,
linux-stm32@st-md-mailman.stormreply.com,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org,
Linus Walleij <linus.walleij@linaro.org>
Subject: Re: [PATCH v12 2/9] PCI: stm32: Add PCIe host support for STM32MP25
Date: Mon, 18 Aug 2025 18:06:40 -0500 [thread overview]
Message-ID: <20250818230640.GA560877@bhelgaas> (raw)
In-Reply-To: <917c9323-9c0c-406f-a314-a6e4a5511b45@foss.st.com>
[+cc Linus]
On Mon, Aug 18, 2025 at 12:50:19PM +0200, Christian Bruel wrote:
> On 8/13/25 21:29, Bjorn Helgaas wrote:
> > On Tue, Jun 10, 2025 at 11:07:07AM +0200, Christian Bruel wrote:
> > > Add driver for the STM32MP25 SoC PCIe Gen1 2.5 GT/s and Gen2 5GT/s
> > > controller based on the DesignWare PCIe core.
> > > ...
> > > +static int stm32_pcie_resume_noirq(struct device *dev)
> > > +{
> > > + struct stm32_pcie *stm32_pcie = dev_get_drvdata(dev);
> > > + int ret;
> > > +
> > > + /*
> > > + * The core clock is gated with CLKREQ# from the COMBOPHY REFCLK,
> > > + * thus if no device is present, must force it low with an init pinmux
> > > + * to be able to access the DBI registers.
> >
> > What happens on initial probe if no device is present? I assume we
> > access DBI registers in the dw_pcie_host_init() path, and it seems
> > like we'd have the same issue with DBI not being accessible when no
> > device is present.
>
> Correct, same issue. The magic happens with the PINCTRL init state that is
> automatically called before probe. As I tried to explain in the
> Documentation in the pinctrl patch:
>
> - if ``init`` and ``default`` are defined in the device tree, the "init"
> state is selected before the driver probe and the "default" state is
> selected after the driver probe.
OK, thanks for that reminder!
The fact that the pinctrl init state is set implicitly before .probe(),
but we have to do it explicitly in .stm32_pcie_resume_noirq() seems a
*little* bit weird and makes the driver harder to review. But ... I
guess that's out of scope for this series.
I see that Linus has given his approval to merge the new
pinctrl_pm_select_init_state() along with this series. Would you mind
pulling those changes [1] and the use [2] into a v13 of this series?
That way I won't have to collect up all the pieces and risk missing
something.
BTW, I noticed a s/platformm/platform/ typo in the "[PATCH v1 2/2]
pinctrl: Add pinctrl_pm_select_init_state helper function" patch.
> > > + if (!IS_ERR(dev->pins->init_state))
> > > + ret = pinctrl_select_state(dev->pins->p, dev->pins->init_state);
> > > + else
> > > + ret = pinctrl_pm_select_default_state(dev);
> > > +
> > > + if (ret) {
> > > + dev_err(dev, "Failed to activate pinctrl pm state: %d\n", ret);
> > > + return ret;
> > > + }
> > > +static int stm32_add_pcie_port(struct stm32_pcie *stm32_pcie)
> > > +{
> > > + struct device *dev = stm32_pcie->pci.dev;
> > > + unsigned int wake_irq;
> > > + int ret;
> > > +
> > > + /* Start to enable resources with PERST# asserted */
> >
> > I guess if device tree doesn't describe PERST#, we assume PERST# is
> > actually *deasserted* already at this point (because
> > stm32_pcie_deassert_perst() does nothing other than the delay)?
>
> yes, this also implies that PV is stable
Maybe we could update the comment somehow? Or maybe even just remove
it, since we actually don't know the state of PERST# at this point?
It sounds like we don't know the PERST# state until after we call
stm32_pcie_deassert_perst() below.
> > > + ret = phy_set_mode(stm32_pcie->phy, PHY_MODE_PCIE);
> > > + if (ret)
> > > + return ret;
> > > +
> > > + ret = phy_init(stm32_pcie->phy);
> > > + if (ret)
> > > + return ret;
> > > +
> > > + ret = regmap_update_bits(stm32_pcie->regmap, SYSCFG_PCIECR,
> > > + STM32MP25_PCIECR_TYPE_MASK,
> > > + STM32MP25_PCIECR_RC);
> > > + if (ret)
> > > + goto err_phy_exit;
> > > +
> > > + stm32_pcie_deassert_perst(stm32_pcie);
Bjorn
[1] https://lore.kernel.org/r/20250813081139.93201-1-christian.bruel@foss.st.com
[2] https://lore.kernel.org/r/20250813115319.212721-1-christian.bruel@foss.st.com
next prev parent reply other threads:[~2025-08-18 23:06 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-10 9:07 [PATCH v12 0/9] Add STM32MP25 PCIe drivers Christian Bruel
2025-06-10 9:07 ` [PATCH v12 1/9] dt-bindings: PCI: Add STM32MP25 PCIe Root Complex bindings Christian Bruel
2025-06-10 9:07 ` [PATCH v12 2/9] PCI: stm32: Add PCIe host support for STM32MP25 Christian Bruel
2025-08-07 18:09 ` Bjorn Helgaas
2025-08-08 14:55 ` Christian Bruel
2025-08-08 16:45 ` Bjorn Helgaas
2025-08-11 13:30 ` Christian Bruel
2025-08-13 19:29 ` Bjorn Helgaas
2025-08-18 10:50 ` Christian Bruel
2025-08-18 23:06 ` Bjorn Helgaas [this message]
2025-08-19 13:01 ` Christian Bruel
2025-06-10 9:07 ` [PATCH v12 3/9] dt-bindings: PCI: Add STM32MP25 PCIe Endpoint bindings Christian Bruel
2025-06-10 9:07 ` [PATCH v12 4/9] PCI: stm32: Add PCIe Endpoint support for STM32MP25 Christian Bruel
2025-06-10 9:07 ` [PATCH v12 5/9] MAINTAINERS: add entry for ST STM32MP25 PCIe drivers Christian Bruel
2025-06-10 9:07 ` [PATCH v12 6/9] arm64: dts: st: add PCIe pinctrl entries in stm32mp25-pinctrl.dtsi Christian Bruel
2025-06-10 9:07 ` [PATCH v12 7/9] arm64: dts: st: Add PCIe Root Complex mode on stm32mp251 Christian Bruel
2025-06-23 12:15 ` Manivannan Sadhasivam
2025-06-10 9:07 ` [PATCH v12 8/9] arm64: dts: st: Add PCIe Endpoint " Christian Bruel
2025-06-23 12:15 ` Manivannan Sadhasivam
2025-06-10 9:07 ` [PATCH v12 9/9] arm64: dts: st: Enable PCIe on the stm32mp257f-ev1 board Christian Bruel
2025-06-23 12:13 ` (subset) [PATCH v12 0/9] Add STM32MP25 PCIe drivers Manivannan Sadhasivam
2025-06-24 22:22 ` Bjorn Helgaas
2025-06-25 4:00 ` Manivannan Sadhasivam
2025-06-25 10:18 ` Christian Bruel
2025-06-25 13:09 ` Manivannan Sadhasivam
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250818230640.GA560877@bhelgaas \
--to=helgaas@kernel.org \
--cc=alexandre.torgue@foss.st.com \
--cc=bhelgaas@google.com \
--cc=cassel@kernel.org \
--cc=christian.bruel@foss.st.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=johan+linaro@kernel.org \
--cc=krzk+dt@kernel.org \
--cc=kwilczynski@kernel.org \
--cc=linus.walleij@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=linux-stm32@st-md-mailman.stormreply.com \
--cc=lpieralisi@kernel.org \
--cc=mani@kernel.org \
--cc=mcoquelin.stm32@gmail.com \
--cc=p.zabel@pengutronix.de \
--cc=quic_schintav@quicinc.com \
--cc=robh@kernel.org \
--cc=shradha.t@samsung.com \
--cc=thippeswamy.havalige@amd.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).