* [PATCH 0/2] PCIe related fixes for DRA7xx
@ 2014-12-16 9:22 Vignesh R
2014-12-16 9:22 ` [PATCH 1/2] phy: phy-ti-pipe3: fix inconsistent enumeration of PCIe gen2 cards Vignesh R
2014-12-16 9:22 ` [PATCH 2/2] ARM: dts: DRA7X: drop id property in pcie_phy Vignesh R
0 siblings, 2 replies; 5+ messages in thread
From: Vignesh R @ 2014-12-16 9:22 UTC (permalink / raw)
To: Benoit Cousson, Tony Lindgren, Rob Herring, Pawel Moll,
Mark Rutland, Ian Campbell, Kumar Gala, Russell King,
Kishon Vijay Abraham I
Cc: devicetree, linux-omap, linux-kernel, linux-arm-kernel, Vignesh R
This patch fix inconsistent enumeration of PCIe gen2 cards on DRA7xx
boards. Tested this patch series, after applying some out of the
tree patches for resetting PCIe.
Vignesh R (2):
phy: phy-ti-pipe3: fix inconsistent enumeration of PCIe gen2 cards
ARM: dts: DRA7X: drop id property in pcie_phy
arch/arm/boot/dts/dra7.dtsi | 2 --
drivers/phy/phy-omap-control.c | 7 +++----
drivers/phy/phy-ti-pipe3.c | 10 ++++++----
include/linux/phy/omap_control_phy.h | 6 +++---
4 files changed, 12 insertions(+), 13 deletions(-)
--
1.9.1
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 1/2] phy: phy-ti-pipe3: fix inconsistent enumeration of PCIe gen2 cards
2014-12-16 9:22 [PATCH 0/2] PCIe related fixes for DRA7xx Vignesh R
@ 2014-12-16 9:22 ` Vignesh R
2014-12-16 9:22 ` [PATCH 2/2] ARM: dts: DRA7X: drop id property in pcie_phy Vignesh R
1 sibling, 0 replies; 5+ messages in thread
From: Vignesh R @ 2014-12-16 9:22 UTC (permalink / raw)
To: Benoit Cousson, Tony Lindgren, Rob Herring, Pawel Moll,
Mark Rutland, Ian Campbell, Kumar Gala, Russell King,
Kishon Vijay Abraham I
Cc: linux-omap, devicetree, linux-arm-kernel, linux-kernel, Vignesh R
Prior to DRA74x silicon rev 1.1, pcie_pcs register bits 8-15 and bits 16-23
were used to configure RC delay count for phy1 and phy2 respectively.
phyid was used as index to distinguish the phys and to configure the delay
values appropriately.
As of DRA74x silicon rev 1.1, pcie_pcs register definition has changed.
Bits 16-23 are used to configure delay values for *both* phy1 and phy2.
Hence phyid is no longer required.
So, drop id field from ti_pipe3 structure and its subsequent references
for configuring pcie_pcs register.
Also, pcie_pcs register now needs to be configured with delay value of 0x96
at bit positions 16-23. See register description of CTRL_CORE_PCIE_PCS in
ARM572x TRM, SPRUHZ6, October 2014, section 18.5.2.2, table 18-1804.
This is needed to ensure Gen2 cards are enumerated consistently.
DRA72x silicon behaves same way as DRA74x rev 1.1 as far as this functionality
is considered.
Test results on DRA74x and DRA72x EVMs:
Before patch
------------
DRA74x ES 1.0: Gen1 cards work, Gen2 cards do not work (expected result due to
silicon errata)
DRA74x ES 1.1: Gen1 cards work, Gen2 cards do not work sometimes due to incorrect
programming of register
DRA72x: Gen1 cards work, Gen2 cards do not work sometimes due to incorrect
programming of register
After patch
-----------
DRA74x ES 1.0: Gen1 cards work, Gen2 cards do not work (expected result due to
silicon errata)
DRA74x ES 1.1: Gen1 cards work, Gen2 cards work consistently.
DRA72x: Gen1 and Gen2 cards enumerate consistently.
Signed-off-by: Vignesh R <vigneshr@ti.com>
---
drivers/phy/phy-omap-control.c | 7 +++----
drivers/phy/phy-ti-pipe3.c | 10 ++++++----
include/linux/phy/omap_control_phy.h | 6 +++---
3 files changed, 12 insertions(+), 11 deletions(-)
diff --git a/drivers/phy/phy-omap-control.c b/drivers/phy/phy-omap-control.c
index c96e8183a8ff..efe724f97e02 100644
--- a/drivers/phy/phy-omap-control.c
+++ b/drivers/phy/phy-omap-control.c
@@ -29,10 +29,9 @@
/**
* omap_control_pcie_pcs - set the PCS delay count
* @dev: the control module device
- * @id: index of the pcie PHY (should be 1 or 2)
* @delay: 8 bit delay value
*/
-void omap_control_pcie_pcs(struct device *dev, u8 id, u8 delay)
+void omap_control_pcie_pcs(struct device *dev, u8 delay)
{
u32 val;
struct omap_control_phy *control_phy;
@@ -55,8 +54,8 @@ void omap_control_pcie_pcs(struct device *dev, u8 id, u8 delay)
val = readl(control_phy->pcie_pcs);
val &= ~(OMAP_CTRL_PCIE_PCS_MASK <<
- (id * OMAP_CTRL_PCIE_PCS_DELAY_COUNT_SHIFT));
- val |= delay << (id * OMAP_CTRL_PCIE_PCS_DELAY_COUNT_SHIFT);
+ OMAP_CTRL_PCIE_PCS_DELAY_COUNT_SHIFT);
+ val |= (delay << OMAP_CTRL_PCIE_PCS_DELAY_COUNT_SHIFT);
writel(val, control_phy->pcie_pcs);
}
EXPORT_SYMBOL_GPL(omap_control_pcie_pcs);
diff --git a/drivers/phy/phy-ti-pipe3.c b/drivers/phy/phy-ti-pipe3.c
index c297b7a10d30..4f31f2be4b5e 100644
--- a/drivers/phy/phy-ti-pipe3.c
+++ b/drivers/phy/phy-ti-pipe3.c
@@ -82,7 +82,6 @@ struct ti_pipe3 {
struct clk *refclk;
struct clk *div_clk;
struct pipe3_dpll_map *dpll_map;
- u8 id;
};
static struct pipe3_dpll_map dpll_map_usb[] = {
@@ -217,8 +216,13 @@ static int ti_pipe3_init(struct phy *x)
u32 val;
int ret = 0;
+ /*
+ * Set pcie_pcs register to 0x96 for proper functioning of phy
+ * as recommended in AM572x TRM SPRUHZ6, section 18.5.2.2, table
+ * 18-1804.
+ */
if (of_device_is_compatible(phy->dev->of_node, "ti,phy-pipe3-pcie")) {
- omap_control_pcie_pcs(phy->control_dev, phy->id, 0xF1);
+ omap_control_pcie_pcs(phy->control_dev, 0x96);
return 0;
}
@@ -347,8 +351,6 @@ static int ti_pipe3_probe(struct platform_device *pdev)
}
if (of_device_is_compatible(node, "ti,phy-pipe3-pcie")) {
- if (of_property_read_u8(node, "id", &phy->id) < 0)
- phy->id = 1;
clk = devm_clk_get(phy->dev, "dpll_ref");
if (IS_ERR(clk)) {
diff --git a/include/linux/phy/omap_control_phy.h b/include/linux/phy/omap_control_phy.h
index e9e6cfbfbb58..eb7d4a135a9e 100644
--- a/include/linux/phy/omap_control_phy.h
+++ b/include/linux/phy/omap_control_phy.h
@@ -66,7 +66,7 @@ enum omap_control_usb_mode {
#define OMAP_CTRL_PIPE3_PHY_TX_RX_POWEROFF 0x0
#define OMAP_CTRL_PCIE_PCS_MASK 0xff
-#define OMAP_CTRL_PCIE_PCS_DELAY_COUNT_SHIFT 0x8
+#define OMAP_CTRL_PCIE_PCS_DELAY_COUNT_SHIFT 16
#define OMAP_CTRL_USB2_PHY_PD BIT(28)
@@ -79,7 +79,7 @@ enum omap_control_usb_mode {
void omap_control_phy_power(struct device *dev, int on);
void omap_control_usb_set_mode(struct device *dev,
enum omap_control_usb_mode mode);
-void omap_control_pcie_pcs(struct device *dev, u8 id, u8 delay);
+void omap_control_pcie_pcs(struct device *dev, u8 delay);
#else
static inline void omap_control_phy_power(struct device *dev, int on)
@@ -91,7 +91,7 @@ static inline void omap_control_usb_set_mode(struct device *dev,
{
}
-static inline void omap_control_pcie_pcs(struct device *dev, u8 id, u8 delay)
+static inline void omap_control_pcie_pcs(struct device *dev, u8 delay)
{
}
#endif
--
1.9.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/2] ARM: dts: DRA7X: drop id property in pcie_phy
2014-12-16 9:22 [PATCH 0/2] PCIe related fixes for DRA7xx Vignesh R
2014-12-16 9:22 ` [PATCH 1/2] phy: phy-ti-pipe3: fix inconsistent enumeration of PCIe gen2 cards Vignesh R
@ 2014-12-16 9:22 ` Vignesh R
[not found] ` <1418721771-31184-3-git-send-email-vigneshr-l0cyMroinI0@public.gmane.org>
1 sibling, 1 reply; 5+ messages in thread
From: Vignesh R @ 2014-12-16 9:22 UTC (permalink / raw)
To: Benoit Cousson, Tony Lindgren, Rob Herring, Pawel Moll,
Mark Rutland, Ian Campbell, Kumar Gala, Russell King,
Kishon Vijay Abraham I
Cc: linux-omap, devicetree, linux-arm-kernel, linux-kernel, Vignesh R
Since phyid is no longer used by pcie driver, this field can be dropped
from the DT.
Signed-off-by: Vignesh R <vigneshr@ti.com>
---
arch/arm/boot/dts/dra7.dtsi | 2 --
1 file changed, 2 deletions(-)
diff --git a/arch/arm/boot/dts/dra7.dtsi b/arch/arm/boot/dts/dra7.dtsi
index 63bf99be1762..889e3023e68f 100644
--- a/arch/arm/boot/dts/dra7.dtsi
+++ b/arch/arm/boot/dts/dra7.dtsi
@@ -1111,7 +1111,6 @@
"wkupclk", "refclk",
"div-clk", "phy-div";
#phy-cells = <0>;
- id = <1>;
ti,hwmods = "pcie1-phy";
};
@@ -1132,7 +1131,6 @@
"div-clk", "phy-div";
#phy-cells = <0>;
ti,hwmods = "pcie2-phy";
- id = <2>;
status = "disabled";
};
};
--
1.9.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 2/2] ARM: dts: DRA7X: drop id property in pcie_phy
[not found] ` <1418721771-31184-3-git-send-email-vigneshr-l0cyMroinI0@public.gmane.org>
@ 2014-12-23 10:11 ` Kishon Vijay Abraham I
2015-01-07 23:51 ` Tony Lindgren
0 siblings, 1 reply; 5+ messages in thread
From: Kishon Vijay Abraham I @ 2014-12-23 10:11 UTC (permalink / raw)
To: Vignesh R, Benoit Cousson, Tony Lindgren, Rob Herring, Pawel Moll,
Mark Rutland, Ian Campbell, Kumar Gala, Russell King
Cc: linux-omap-u79uwXL29TY76Z2rM5mHXA,
devicetree-u79uwXL29TY76Z2rM5mHXA,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
linux-kernel-u79uwXL29TY76Z2rM5mHXA
On Tuesday 16 December 2014 02:52 PM, Vignesh R wrote:
> Since phyid is no longer used by pcie driver, this field can be dropped
> from the DT.
>
> Signed-off-by: Vignesh R <vigneshr-l0cyMroinI0@public.gmane.org>
Acked-by: Kishon Vijay Abraham I <kishon-l0cyMroinI0@public.gmane.org>
> ---
> arch/arm/boot/dts/dra7.dtsi | 2 --
> 1 file changed, 2 deletions(-)
>
> diff --git a/arch/arm/boot/dts/dra7.dtsi b/arch/arm/boot/dts/dra7.dtsi
> index 63bf99be1762..889e3023e68f 100644
> --- a/arch/arm/boot/dts/dra7.dtsi
> +++ b/arch/arm/boot/dts/dra7.dtsi
> @@ -1111,7 +1111,6 @@
> "wkupclk", "refclk",
> "div-clk", "phy-div";
> #phy-cells = <0>;
> - id = <1>;
> ti,hwmods = "pcie1-phy";
> };
>
> @@ -1132,7 +1131,6 @@
> "div-clk", "phy-div";
> #phy-cells = <0>;
> ti,hwmods = "pcie2-phy";
> - id = <2>;
> status = "disabled";
> };
> };
>
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 2/2] ARM: dts: DRA7X: drop id property in pcie_phy
2014-12-23 10:11 ` Kishon Vijay Abraham I
@ 2015-01-07 23:51 ` Tony Lindgren
0 siblings, 0 replies; 5+ messages in thread
From: Tony Lindgren @ 2015-01-07 23:51 UTC (permalink / raw)
To: Kishon Vijay Abraham I
Cc: Vignesh R, Benoit Cousson, Rob Herring, Pawel Moll, Mark Rutland,
Ian Campbell, Kumar Gala, Russell King, linux-omap, devicetree,
linux-arm-kernel, linux-kernel
* Kishon Vijay Abraham I <kishon@ti.com> [141223 02:14]:
>
>
> On Tuesday 16 December 2014 02:52 PM, Vignesh R wrote:
> > Since phyid is no longer used by pcie driver, this field can be dropped
> > from the DT.
> >
> > Signed-off-by: Vignesh R <vigneshr@ti.com>
>
> Acked-by: Kishon Vijay Abraham I <kishon@ti.com>
Applying into omap-for-v3.20/dt thanks.
Tony
> > ---
> > arch/arm/boot/dts/dra7.dtsi | 2 --
> > 1 file changed, 2 deletions(-)
> >
> > diff --git a/arch/arm/boot/dts/dra7.dtsi b/arch/arm/boot/dts/dra7.dtsi
> > index 63bf99be1762..889e3023e68f 100644
> > --- a/arch/arm/boot/dts/dra7.dtsi
> > +++ b/arch/arm/boot/dts/dra7.dtsi
> > @@ -1111,7 +1111,6 @@
> > "wkupclk", "refclk",
> > "div-clk", "phy-div";
> > #phy-cells = <0>;
> > - id = <1>;
> > ti,hwmods = "pcie1-phy";
> > };
> >
> > @@ -1132,7 +1131,6 @@
> > "div-clk", "phy-div";
> > #phy-cells = <0>;
> > ti,hwmods = "pcie2-phy";
> > - id = <2>;
> > status = "disabled";
> > };
> > };
> >
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2015-01-07 23:51 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-12-16 9:22 [PATCH 0/2] PCIe related fixes for DRA7xx Vignesh R
2014-12-16 9:22 ` [PATCH 1/2] phy: phy-ti-pipe3: fix inconsistent enumeration of PCIe gen2 cards Vignesh R
2014-12-16 9:22 ` [PATCH 2/2] ARM: dts: DRA7X: drop id property in pcie_phy Vignesh R
[not found] ` <1418721771-31184-3-git-send-email-vigneshr-l0cyMroinI0@public.gmane.org>
2014-12-23 10:11 ` Kishon Vijay Abraham I
2015-01-07 23:51 ` Tony Lindgren
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).