From: Marc Zyngier <maz@kernel.org>
To: Hector Martin <marcan@marcan.st>
Cc: "Lorenzo Pieralisi" <lorenzo.pieralisi@arm.com>,
"Rob Herring" <robh@kernel.org>,
"Krzysztof Wilczyński" <kw@linux.com>,
"Bjorn Helgaas" <bhelgaas@google.com>,
"Alyssa Rosenzweig" <alyssa@rosenzweig.io>,
"Sven Peter" <sven@svenpeter.dev>,
linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 3/3] PCI: apple: Add support for optional PWREN GPIO
Date: Mon, 02 May 2022 11:31:11 +0100 [thread overview]
Message-ID: <87ee1ci5u8.wl-maz@kernel.org> (raw)
In-Reply-To: <20220502093832.32778-4-marcan@marcan.st>
On Mon, 02 May 2022 10:38:32 +0100,
Hector Martin <marcan@marcan.st> wrote:
>
> WiFi and SD card devices on M1 Macs have a separate power enable GPIO.
> Add support for this to the PCIe controller. This is modeled after how
> pcie-fu740 does it.
Please update the DT binding to reflect this as an optional property.
>
> Signed-off-by: Hector Martin <marcan@marcan.st>
> ---
> drivers/pci/controller/pcie-apple.c | 35 ++++++++++++++++++++++++++---
> 1 file changed, 32 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/pci/controller/pcie-apple.c b/drivers/pci/controller/pcie-apple.c
> index e3aa2d461739..5b73c03ebe94 100644
> --- a/drivers/pci/controller/pcie-apple.c
> +++ b/drivers/pci/controller/pcie-apple.c
> @@ -518,6 +518,16 @@ static int apple_pcie_probe_port(struct device_node *np)
> }
>
> gpiod_put(gd);
> +
> + gd = gpiod_get_from_of_node(np, "pwren-gpios", 0,
> + GPIOD_OUT_LOW, "PWREN");
> + if (IS_ERR(gd)) {
> + if (PTR_ERR(gd) != -ENOENT)
> + return PTR_ERR(gd);
> + } else {
> + gpiod_put(gd);
> + }
> +
> return 0;
> }
>
> @@ -526,7 +536,7 @@ static int apple_pcie_setup_port(struct apple_pcie *pcie,
> {
> struct platform_device *platform = to_platform_device(pcie->dev);
> struct apple_pcie_port *port;
> - struct gpio_desc *reset;
> + struct gpio_desc *reset, *pwren = NULL;
> u32 stat, idx;
> int ret, i;
>
> @@ -535,6 +545,15 @@ static int apple_pcie_setup_port(struct apple_pcie *pcie,
> if (IS_ERR(reset))
> return PTR_ERR(reset);
>
> + pwren = devm_gpiod_get_from_of_node(pcie->dev, np, "pwren-gpios", 0,
> + GPIOD_OUT_LOW, "PWREN");
> + if (IS_ERR(pwren)) {
> + if (PTR_ERR(pwren) == -ENOENT)
> + pwren = NULL;
> + else
> + return PTR_ERR(pwren);
> + }
> +
> port = devm_kzalloc(pcie->dev, sizeof(*port), GFP_KERNEL);
> if (!port)
> return -ENOMEM;
> @@ -557,12 +576,22 @@ static int apple_pcie_setup_port(struct apple_pcie *pcie,
> /* Assert PERST# before setting up the clock */
> gpiod_set_value_cansleep(reset, 1);
>
> + /* Power on the device if required */
> + if (pwren)
> + gpiod_set_value_cansleep(pwren, 1);
nit: AFAICT, the gpiod_* helpers already check for a NULL descriptor,
and silently return without an error.
> +
> ret = apple_pcie_setup_refclk(pcie, port);
> if (ret < 0)
> return ret;
>
> - /* The minimal Tperst-clk value is 100us (PCIe CEM r5.0, 2.9.2) */
> - usleep_range(100, 200);
> + /*
> + * The minimal Tperst-clk value is 100us (PCIe CEM r5.0, 2.9.2)
> + * If powering up, the minimal Tpvperl is 100ms
> + */
> + if (pwren)
> + msleep(100);
> + else
> + usleep_range(100, 200);
>
> /* Deassert PERST# */
> rmw_set(PORT_PERST_OFF, port->base + PORT_PERST);
With the documentation aspect addressed:
Acked-by: Marc Zyngier <maz@kernel.org>
M.
--
Without deviation from the norm, progress is not possible.
next prev parent reply other threads:[~2022-05-02 10:31 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-02 9:38 [PATCH 0/3] PCI: apple: PWREN GPIO support & related fixes Hector Martin
2022-05-02 9:38 ` [PATCH 1/3] PCI: apple: GPIO handling nitfixes Hector Martin
2022-05-02 10:20 ` Marc Zyngier
2022-05-02 12:16 ` Hector Martin
2022-05-02 11:39 ` Greg KH
2022-05-02 9:38 ` [PATCH 2/3] PCI: apple: Probe all GPIOs for availability first Hector Martin
2022-05-02 10:23 ` Marc Zyngier
2022-05-02 9:38 ` [PATCH 3/3] PCI: apple: Add support for optional PWREN GPIO Hector Martin
2022-05-02 10:31 ` Marc Zyngier [this message]
2022-05-02 12:15 ` Hector Martin
2022-05-02 15:14 ` Rob Herring
2022-05-02 15:32 ` Hector Martin
2022-05-03 3:20 ` Hector Martin
2022-05-04 0:33 ` Rob Herring
2022-05-04 3:36 ` Hector Martin
2022-05-05 15:38 ` Marc Zyngier
-- strict thread matches above, loose matches on Subject: below --
2022-05-02 20:59 Mark Kettenis
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=87ee1ci5u8.wl-maz@kernel.org \
--to=maz@kernel.org \
--cc=alyssa@rosenzweig.io \
--cc=bhelgaas@google.com \
--cc=kw@linux.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=lorenzo.pieralisi@arm.com \
--cc=marcan@marcan.st \
--cc=robh@kernel.org \
--cc=sven@svenpeter.dev \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.