From: Mike Looijmans <mike.looijmans@topic.nl>
To: Bjorn Helgaas <helgaas@kernel.org>
Cc: linux-pci@vger.kernel.org, "Bjorn Helgaas" <bhelgaas@google.com>,
"Krzysztof Wilczyński" <kwilczynski@kernel.org>,
"Lorenzo Pieralisi" <lpieralisi@kernel.org>,
"Manivannan Sadhasivam" <mani@kernel.org>,
"Michal Simek" <michal.simek@amd.com>,
"Rob Herring" <robh@kernel.org>,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v4 2/2] PCI: xilinx: Support reset GPIO for PERST#
Date: Wed, 11 Jun 2025 08:45:32 +0200 [thread overview]
Message-ID: <ec74b712-4fe8-46dc-b446-6cb244a94198@topic.nl> (raw)
In-Reply-To: <20250610190718.GA819844@bhelgaas>
On 10-06-2025 21:07, Bjorn Helgaas wrote:
> On Tue, Jun 10, 2025 at 04:39:04PM +0200, Mike Looijmans wrote:
>> Support providing the PERST# reset signal through a devicetree binding.
>> Thus the system no longer relies on external components to perform the
>> bus reset.
>> @@ -576,11 +577,17 @@ static int xilinx_pcie_probe(struct platform_device *pdev)
>> struct device *dev = &pdev->dev;
>> struct xilinx_pcie *pcie;
>> struct pci_host_bridge *bridge;
>> + struct gpio_desc *perst_gpio;
>> int err;
>>
>> if (!dev->of_node)
>> return -ENODEV;
>>
>> + perst_gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_HIGH);
>> + if (IS_ERR(perst_gpio))
>> + return dev_err_probe(dev, PTR_ERR(perst_gpio),
>> + "Failed to request reset GPIO\n");
>> +
>> bridge = devm_pci_alloc_host_bridge(dev, sizeof(*pcie));
>> if (!bridge)
>> return -ENODEV;
>> @@ -595,6 +602,13 @@ static int xilinx_pcie_probe(struct platform_device *pdev)
>> return err;
>> }
>>
>> + if (perst_gpio) {
>> + msleep(PCIE_T_PVPERL_MS); /* Minimum assertion time */
>> + gpiod_set_value_cansleep(perst_gpio, 0);
> Are we assured that PERST# was already asserted when we entered
> xilinx_pcie_probe()?
Yes, because of the GPIOD_OUT_HIGH a few lines up, the reset GPIO is asserted
when we arrive here.
>> + /* Initial delay to provide endpoint time to initialize */
>> + msleep(PCIE_T_RRS_READY_MS);
> I don't think this is the right spot for PCIE_T_RRS_READY_MS, details
> in https://lore.kernel.org/r/20250610185734.GA819344@bhelgaas
>
> I guess the spec assumes that for ports that don't support speeds
> greater than 5.0 GT/s, 100ms is enough for the link to come up *and*
> the endpoint to initialize. But since you're going to wait for the
> link to come up immediately *after* this PCIE_T_RRS_READY_MS sleep, I
> would think you could extend the timeout in xilinx_pci_wait_link_up()
> and then do the PCIE_T_RRS_READY_MS sleep.
That would change the behavior of the original driver though, which never did
any sleep during init. But it appears to match the spec better. Note that the
hardware is limited to 5GT/s.
M.
next prev parent reply other threads:[~2025-06-11 6:48 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1b153bce-a66a-45ee-a5c6-963ea6fb1c82.949ef384-8293-46b8-903f-40a477c056ae.69fac8ab-ab7f-45b5-992e-b4c97ec31d85@emailsignatures365.codetwo.com>
2025-06-10 14:39 ` [PATCH v4 1/2] PCI: xilinx: Wait for link-up status during initialization Mike Looijmans
2025-06-10 14:39 ` [PATCH v4 2/2] PCI: xilinx: Support reset GPIO for PERST# Mike Looijmans
2025-06-10 19:07 ` Bjorn Helgaas
2025-06-11 6:45 ` Mike Looijmans [this message]
2025-06-10 18:57 ` [PATCH v4 1/2] PCI: xilinx: Wait for link-up status during initialization Bjorn Helgaas
2025-06-11 6:48 ` Mike Looijmans
2025-06-25 21:46 ` Manivannan Sadhasivam
2025-06-25 21:50 ` Manivannan Sadhasivam
2025-06-10 19:12 ` Bjorn Helgaas
2025-06-11 7:00 ` Mike Looijmans
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=ec74b712-4fe8-46dc-b446-6cb244a94198@topic.nl \
--to=mike.looijmans@topic.nl \
--cc=bhelgaas@google.com \
--cc=helgaas@kernel.org \
--cc=kwilczynski@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=lpieralisi@kernel.org \
--cc=mani@kernel.org \
--cc=michal.simek@amd.com \
--cc=robh@kernel.org \
/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).