* [PATCH] PCI: imx6: Add support for MX6SX LDO PCIE domain regulator
@ 2016-06-08 0:07 Fabio Estevam
2016-06-08 9:35 ` Christoph Fritz
0 siblings, 1 reply; 6+ messages in thread
From: Fabio Estevam @ 2016-06-08 0:07 UTC (permalink / raw)
To: bhelgaas
Cc: l.stach, hongxing.zhu, chf.fritz, shawnguo, linux-pci, Fabio Estevam
From: Fabio Estevam <fabio.estevam@nxp.com>
MX6SX has an internal LDO regulator for the PCIE domain, which needs
to be turned on for PCIE functionality.
Add support for it.
Signed-off-by: Fabio Estevam <fabio.estevam@nxp.com>
---
.../devicetree/bindings/pci/fsl,imx6q-pcie.txt | 2 ++
drivers/pci/host/pci-imx6.c | 29 +++++++++++++++++++++-
2 files changed, 30 insertions(+), 1 deletion(-)
diff --git a/Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.txt b/Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.txt
index f3d26f47..cfb0e86 100644
--- a/Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.txt
+++ b/Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.txt
@@ -33,6 +33,8 @@ Optional properties:
Additional required properties for imx6sx-pcie:
- clock names: Must include the following additional entry:
- "pcie_inbound_axi"
+- pcie-phy-supply: Must point to the internal PCIE power domain regulator:
+ <®_pcie>;
Example:
diff --git a/drivers/pci/host/pci-imx6.c b/drivers/pci/host/pci-imx6.c
index b741a36..ad9cc8b 100644
--- a/drivers/pci/host/pci-imx6.c
+++ b/drivers/pci/host/pci-imx6.c
@@ -27,6 +27,7 @@
#include <linux/signal.h>
#include <linux/types.h>
#include <linux/interrupt.h>
+#include <linux/regulator/consumer.h>
#include "pcie-designware.h"
@@ -55,6 +56,7 @@ struct imx6_pcie {
u32 tx_swing_full;
u32 tx_swing_low;
int link_gen;
+ struct regulator *phy_regulator;
};
/* PCIe Root Complex registers (memory-mapped) */
@@ -96,6 +98,8 @@ struct imx6_pcie {
#define PHY_RX_OVRD_IN_LO_RX_DATA_EN (1 << 5)
#define PHY_RX_OVRD_IN_LO_RX_PLL_EN (1 << 3)
+#define MX6SX_PCIE_LDO 1100000
+
static int pcie_phy_poll_ack(void __iomem *dbi_base, int exp_val)
{
u32 val;
@@ -407,11 +411,26 @@ err_pcie_phy:
static void imx6_pcie_init_phy(struct pcie_port *pp)
{
struct imx6_pcie *imx6_pcie = to_imx6_pcie(pp);
+ int ret;
+
+ if (imx6_pcie->variant == IMX6SX) {
+ ret = regulator_set_voltage(imx6_pcie->phy_regulator,
+ MX6SX_PCIE_LDO, MX6SX_PCIE_LDO);
+ if (ret) {
+ dev_err(pp->dev, "failed to set pcie phy voltage.\n");
+ return ret;
+ }
+
+ ret = regulator_enable(imx6_pcie->phy_regulator);
+ if (ret) {
+ dev_err(pp->dev, "failed to enable pcie regulator.\n");
+ return;
+ }
- if (imx6_pcie->variant == IMX6SX)
regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR12,
IMX6SX_GPR12_PCIE_RX_EQ_MASK,
IMX6SX_GPR12_PCIE_RX_EQ_2);
+ }
regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR12,
IMX6Q_GPR12_PCIE_CTL_2, 0 << 10);
@@ -680,6 +699,14 @@ static int __init imx6_pcie_probe(struct platform_device *pdev)
"pcie_incbound_axi clock missing or invalid\n");
return PTR_ERR(imx6_pcie->pcie_inbound_axi);
}
+
+ imx6_pcie->phy_regulator = devm_regulator_get(pp->dev,
+ "pcie-phy");
+ if (IS_ERR(imx6_pcie->phy_regulator)) {
+ dev_err(&pdev->dev,
+ "failed to get pcie-phy regulator\n");
+ return PTR_ERR(imx6_pcie->phy_regulator);
+ }
}
/* Grab GPR config register range */
--
1.9.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH] PCI: imx6: Add support for MX6SX LDO PCIE domain regulator
2016-06-08 0:07 [PATCH] PCI: imx6: Add support for MX6SX LDO PCIE domain regulator Fabio Estevam
@ 2016-06-08 9:35 ` Christoph Fritz
2016-06-12 13:51 ` Fabio Estevam
0 siblings, 1 reply; 6+ messages in thread
From: Christoph Fritz @ 2016-06-08 9:35 UTC (permalink / raw)
To: Fabio Estevam, Lucas Stach, Richard Zhu
Cc: bhelgaas, shawnguo, linux-pci, Fabio Estevam
Hi Fabio
On Tue, 2016-06-07 at 21:07 -0300, Fabio Estevam wrote:
> From: Fabio Estevam <fabio.estevam@nxp.com>
>
> MX6SX has an internal LDO regulator for the PCIE domain, which needs
> to be turned on for PCIE functionality.
>
> Add support for it.
>
> Signed-off-by: Fabio Estevam <fabio.estevam@nxp.com>
> ---
> .../devicetree/bindings/pci/fsl,imx6q-pcie.txt | 2 ++
> drivers/pci/host/pci-imx6.c | 29 +++++++++++++++++++++-
There was a discussion doing the handling of the regulator inside the PM
backend:
> On Mon, 2016-02-15 at 07:24 +0000, Richard Zhu wrote:
> > As Lucas discussed with me before, the GPC regulator operations should[n't] be touched in
> > Imx pcie driver at all. These bits operations should be encapsulate into the PM system,
> > for example, the regulator driver.
On Thu, 2016-02-18 at 12:59 +0100, Christoph Fritz wrote:
> Ok, for an initial version, I'll just leave the regulator in my
> devicetree enabled. For further enhancements I suppose
> arch/arm/mach-imx/gpc.c needs to get touched?
>
@Richard and @Lucas: Any further hints on this?
Thanks
-- Christoph
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] PCI: imx6: Add support for MX6SX LDO PCIE domain regulator
2016-06-08 9:35 ` Christoph Fritz
@ 2016-06-12 13:51 ` Fabio Estevam
2016-06-13 10:41 ` Lucas Stach
0 siblings, 1 reply; 6+ messages in thread
From: Fabio Estevam @ 2016-06-12 13:51 UTC (permalink / raw)
To: Christoph Fritz
Cc: Lucas Stach, Richard Zhu, Bjorn Helgaas, Shawn Guo, linux-pci,
Fabio Estevam
Hi Christoph,
On Wed, Jun 8, 2016 at 6:35 AM, Christoph Fritz
<chf.fritz@googlemail.com> wrote:
> There was a discussion doing the handling of the regulator inside the PM
> backend:
Thanks for pointing me to this discussion.
>
>> On Mon, 2016-02-15 at 07:24 +0000, Richard Zhu wrote:
>> > As Lucas discussed with me before, the GPC regulator operations should[n't] be touched in
>> > Imx pcie driver at all. These bits operations should be encapsulate into the PM system,
>> > for example, the regulator driver.
>
> On Thu, 2016-02-18 at 12:59 +0100, Christoph Fritz wrote:
>> Ok, for an initial version, I'll just leave the regulator in my
>> devicetree enabled. For further enhancements I suppose
>> arch/arm/mach-imx/gpc.c needs to get touched?
>>
> @Richard and @Lucas: Any further hints on this?
Yes, would appreciate some hints or examples as to how to properly
handle the PCI LDO regulator on mx6sx.
Thanks
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] PCI: imx6: Add support for MX6SX LDO PCIE domain regulator
2016-06-12 13:51 ` Fabio Estevam
@ 2016-06-13 10:41 ` Lucas Stach
2016-06-14 3:18 ` Fabio Estevam
0 siblings, 1 reply; 6+ messages in thread
From: Lucas Stach @ 2016-06-13 10:41 UTC (permalink / raw)
To: Fabio Estevam
Cc: Christoph Fritz, Richard Zhu, Bjorn Helgaas, Shawn Guo,
linux-pci, Fabio Estevam
Hi Fabio,
Am Sonntag, den 12.06.2016, 10:51 -0300 schrieb Fabio Estevam:
> Hi Christoph,
>
> On Wed, Jun 8, 2016 at 6:35 AM, Christoph Fritz
> <chf.fritz@googlemail.com> wrote:
>
> > There was a discussion doing the handling of the regulator inside the PM
> > backend:
>
> Thanks for pointing me to this discussion.
>
> >
> >> On Mon, 2016-02-15 at 07:24 +0000, Richard Zhu wrote:
> >> > As Lucas discussed with me before, the GPC regulator operations should[n't] be touched in
> >> > Imx pcie driver at all. These bits operations should be encapsulate into the PM system,
> >> > for example, the regulator driver.
> >
> > On Thu, 2016-02-18 at 12:59 +0100, Christoph Fritz wrote:
> >> Ok, for an initial version, I'll just leave the regulator in my
> >> devicetree enabled. For further enhancements I suppose
> >> arch/arm/mach-imx/gpc.c needs to get touched?
> >>
> > @Richard and @Lucas: Any further hints on this?
>
> Yes, would appreciate some hints or examples as to how to properly
> handle the PCI LDO regulator on mx6sx.
>
It should be handled the same way as the PU domain regulator on mx6q.
This means the regulator is a supply of the PCIe PHY power domain and
should be en-/disabled through the GPC driver.
I already posted a series to rework the GPC driver to allow adding new
power domains easily, but it was rejected by Shawn on formal grounds, as
it's mostly a single big patch to do the rework. I don't have time to
split this up further at the moment, as this is really non-trivial, but
maybe Shawn is willing to take it if someone does a proper review of the
patch.
With this series applied it should be easy to add the required power
domains and regulator handling for mx6sx.
Regards,
Lucas
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] PCI: imx6: Add support for MX6SX LDO PCIE domain regulator
2016-06-13 10:41 ` Lucas Stach
@ 2016-06-14 3:18 ` Fabio Estevam
2016-06-14 8:37 ` Lucas Stach
0 siblings, 1 reply; 6+ messages in thread
From: Fabio Estevam @ 2016-06-14 3:18 UTC (permalink / raw)
To: Lucas Stach
Cc: Christoph Fritz, Richard Zhu, Bjorn Helgaas, Shawn Guo,
linux-pci, Fabio Estevam
Hi Lucas,
On Mon, Jun 13, 2016 at 7:41 AM, Lucas Stach <l.stach@pengutronix.de> wrote:
> It should be handled the same way as the PU domain regulator on mx6q.
> This means the regulator is a supply of the PCIe PHY power domain and
> should be en-/disabled through the GPC driver.
>
> I already posted a series to rework the GPC driver to allow adding new
> power domains easily, but it was rejected by Shawn on formal grounds, as
Could you please point me to this series?
Thanks
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] PCI: imx6: Add support for MX6SX LDO PCIE domain regulator
2016-06-14 3:18 ` Fabio Estevam
@ 2016-06-14 8:37 ` Lucas Stach
0 siblings, 0 replies; 6+ messages in thread
From: Lucas Stach @ 2016-06-14 8:37 UTC (permalink / raw)
To: Fabio Estevam
Cc: Christoph Fritz, Richard Zhu, Bjorn Helgaas, Shawn Guo,
linux-pci, Fabio Estevam
Hi Fabio,
Am Dienstag, den 14.06.2016, 00:18 -0300 schrieb Fabio Estevam:
> Hi Lucas,
>
> On Mon, Jun 13, 2016 at 7:41 AM, Lucas Stach <l.stach@pengutronix.de> wrote:
>
> > It should be handled the same way as the PU domain regulator on mx6q.
> > This means the regulator is a supply of the PCIe PHY power domain and
> > should be en-/disabled through the GPC driver.
> >
> > I already posted a series to rework the GPC driver to allow adding new
> > power domains easily, but it was rejected by Shawn on formal grounds, as
>
> Could you please point me to this series?
>
Here you go:
https://patchwork.kernel.org/patch/8599181/
https://patchwork.kernel.org/patch/8599251/
https://patchwork.kernel.org/patch/8599241/
Regards,
Lucas
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2016-06-14 8:37 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-06-08 0:07 [PATCH] PCI: imx6: Add support for MX6SX LDO PCIE domain regulator Fabio Estevam
2016-06-08 9:35 ` Christoph Fritz
2016-06-12 13:51 ` Fabio Estevam
2016-06-13 10:41 ` Lucas Stach
2016-06-14 3:18 ` Fabio Estevam
2016-06-14 8:37 ` Lucas Stach
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.