From: Bjorn Helgaas <helgaas@kernel.org>
To: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>
Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>,
Andrew Murray <andrew.murray@arm.com>,
Masahiro Yamada <yamada.masahiro@socionext.com>,
Rob Herring <robh+dt@kernel.org>,
Mark Rutland <mark.rutland@arm.com>,
linux-pci@vger.kernel.org, devicetree@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org,
Masami Hiramatsu <masami.hiramatsu@linaro.org>,
Jassi Brar <jaswinder.singh@linaro.org>
Subject: Re: [PATCH v2 2/2] PCI: uniphier: Add UniPhier PCIe endpoint controller support
Date: Thu, 19 Mar 2020 12:06:59 -0500 [thread overview]
Message-ID: <20200319170659.GA158868@google.com> (raw)
In-Reply-To: <1584604449-13461-3-git-send-email-hayashi.kunihiko@socionext.com>
On Thu, Mar 19, 2020 at 04:54:09PM +0900, Kunihiko Hayashi wrote:
> This introduces specific glue layer for UniPhier platform to support
> PCIe controller that is based on the DesignWare PCIe core, and
> this driver supports endpoint mode. This supports for Pro5 SoC only.
Possible alternate text: ("specific glue layer" isn't the usual way to
describe a driver)
PCI: uniphier: Add Socionext UniPhier Pro5 SoC endpoint controller driver
Add driver for the Socionext UniPhier Pro5 SoC endpoint controller.
This controller is based on the DesignWare PCIe core.
> +/* assertion time of intx in usec */
s/intx/INTx/ to match usage in spec (and in comments below :))
> +#define PCL_INTX_WIDTH_USEC 30
> +struct uniphier_pcie_ep_soc_data {
> + bool is_legacy;
I'd prefer "unsigned int is_legacy:1". See [1].
But AFAICT you actually don't need this at all (yet), since you only
have a single of_device_id, and it sets "is_legacy = true". That
means the *not* legacy code is effectively dead and hasn't been
tested.
My preference would be to add "is_legacy" and the associated tests
when you actually *need* them, i.e., when you add support for a
non-legacy device.
> +static int uniphier_pcie_ep_raise_legacy_irq(struct dw_pcie_ep *ep)
> +{
> + struct dw_pcie *pci = to_dw_pcie_from_ep(ep);
> + struct uniphier_pcie_ep_priv *priv = to_uniphier_pcie(pci);
> + u32 val;
> +
> + /* assert INTx */
> + val = readl(priv->base + PCL_APP_INTX);
> + val |= PCL_APP_INTX_SYS_INT;
> + writel(val, priv->base + PCL_APP_INTX);
> +
> + udelay(PCL_INTX_WIDTH_USEC);
> +
> + /* deassert INTx */
> + val = readl(priv->base + PCL_APP_INTX);
Why do you need to read PCL_APP_INTX again here?
> + val &= ~PCL_APP_INTX_SYS_INT;
> + writel(val, priv->base + PCL_APP_INTX);
> +
> + return 0;
> +}
> + ret = dw_pcie_ep_init(ep);
> + if (ret) {
> + dev_err(dev, "Failed to initialize endpoint (%d)\n", ret);
> + return ret;
> + }
> +
> + return 0;
This is equivalent to:
ret = dw_pcie_ep_init(ep);
if (ret)
dev_err(dev, "Failed to initialize endpoint (%d)\n", ret);
return ret;
> +}
[1] https://lore.kernel.org/linux-fsdevel/CA+55aFzKQ6Pj18TB8p4Yr0M4t+S+BsiHH=BJNmn=76-NcjTj-g@mail.gmail.com/
WARNING: multiple messages have this Message-ID (diff)
From: Bjorn Helgaas <helgaas@kernel.org>
To: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>
Cc: Mark Rutland <mark.rutland@arm.com>,
devicetree@vger.kernel.org,
Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>,
Masami Hiramatsu <masami.hiramatsu@linaro.org>,
Jassi Brar <jaswinder.singh@linaro.org>,
linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org,
Masahiro Yamada <yamada.masahiro@socionext.com>,
Rob Herring <robh+dt@kernel.org>,
Andrew Murray <andrew.murray@arm.com>,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v2 2/2] PCI: uniphier: Add UniPhier PCIe endpoint controller support
Date: Thu, 19 Mar 2020 12:06:59 -0500 [thread overview]
Message-ID: <20200319170659.GA158868@google.com> (raw)
In-Reply-To: <1584604449-13461-3-git-send-email-hayashi.kunihiko@socionext.com>
On Thu, Mar 19, 2020 at 04:54:09PM +0900, Kunihiko Hayashi wrote:
> This introduces specific glue layer for UniPhier platform to support
> PCIe controller that is based on the DesignWare PCIe core, and
> this driver supports endpoint mode. This supports for Pro5 SoC only.
Possible alternate text: ("specific glue layer" isn't the usual way to
describe a driver)
PCI: uniphier: Add Socionext UniPhier Pro5 SoC endpoint controller driver
Add driver for the Socionext UniPhier Pro5 SoC endpoint controller.
This controller is based on the DesignWare PCIe core.
> +/* assertion time of intx in usec */
s/intx/INTx/ to match usage in spec (and in comments below :))
> +#define PCL_INTX_WIDTH_USEC 30
> +struct uniphier_pcie_ep_soc_data {
> + bool is_legacy;
I'd prefer "unsigned int is_legacy:1". See [1].
But AFAICT you actually don't need this at all (yet), since you only
have a single of_device_id, and it sets "is_legacy = true". That
means the *not* legacy code is effectively dead and hasn't been
tested.
My preference would be to add "is_legacy" and the associated tests
when you actually *need* them, i.e., when you add support for a
non-legacy device.
> +static int uniphier_pcie_ep_raise_legacy_irq(struct dw_pcie_ep *ep)
> +{
> + struct dw_pcie *pci = to_dw_pcie_from_ep(ep);
> + struct uniphier_pcie_ep_priv *priv = to_uniphier_pcie(pci);
> + u32 val;
> +
> + /* assert INTx */
> + val = readl(priv->base + PCL_APP_INTX);
> + val |= PCL_APP_INTX_SYS_INT;
> + writel(val, priv->base + PCL_APP_INTX);
> +
> + udelay(PCL_INTX_WIDTH_USEC);
> +
> + /* deassert INTx */
> + val = readl(priv->base + PCL_APP_INTX);
Why do you need to read PCL_APP_INTX again here?
> + val &= ~PCL_APP_INTX_SYS_INT;
> + writel(val, priv->base + PCL_APP_INTX);
> +
> + return 0;
> +}
> + ret = dw_pcie_ep_init(ep);
> + if (ret) {
> + dev_err(dev, "Failed to initialize endpoint (%d)\n", ret);
> + return ret;
> + }
> +
> + return 0;
This is equivalent to:
ret = dw_pcie_ep_init(ep);
if (ret)
dev_err(dev, "Failed to initialize endpoint (%d)\n", ret);
return ret;
> +}
[1] https://lore.kernel.org/linux-fsdevel/CA+55aFzKQ6Pj18TB8p4Yr0M4t+S+BsiHH=BJNmn=76-NcjTj-g@mail.gmail.com/
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2020-03-19 17:07 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-19 7:54 [PATCH v2 0/2] PCI: Add new UniPhier PCIe endpoint driver Kunihiko Hayashi
2020-03-19 7:54 ` Kunihiko Hayashi
2020-03-19 7:54 ` [PATCH v2 1/2] dt-bindings: PCI: Add UniPhier PCIe endpoint controller description Kunihiko Hayashi
2020-03-19 7:54 ` Kunihiko Hayashi
2020-03-19 7:54 ` [PATCH v2 2/2] PCI: uniphier: Add UniPhier PCIe endpoint controller support Kunihiko Hayashi
2020-03-19 7:54 ` Kunihiko Hayashi
2020-03-19 17:06 ` Bjorn Helgaas [this message]
2020-03-19 17:06 ` Bjorn Helgaas
2020-03-23 4:03 ` Kunihiko Hayashi
2020-03-23 4:03 ` Kunihiko Hayashi
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=20200319170659.GA158868@google.com \
--to=helgaas@kernel.org \
--cc=andrew.murray@arm.com \
--cc=devicetree@vger.kernel.org \
--cc=hayashi.kunihiko@socionext.com \
--cc=jaswinder.singh@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=lorenzo.pieralisi@arm.com \
--cc=mark.rutland@arm.com \
--cc=masami.hiramatsu@linaro.org \
--cc=robh+dt@kernel.org \
--cc=yamada.masahiro@socionext.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 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.