* [GIT PULL 0/3] phy: for 4.2 -rc
@ 2015-08-04 16:47 Kishon Vijay Abraham I
2015-08-04 16:47 ` [PATCH 1/3] phy-sun4i-usb: Add missing EXPORT_SYMBOL_GPL for sun4i_usb_phy_set_squelch_detect Kishon Vijay Abraham I
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Kishon Vijay Abraham I @ 2015-08-04 16:47 UTC (permalink / raw)
To: gregkh; +Cc: kishon, linux-kernel
Hi Greg,
Got a couple of more fixes for this -rc cycle. One fixes a compiler
error when the driver is built as module and the other fixes a
SATA lockup. The fix also requires a dts patch which I've included
in this series after Tony's ACK. Please find the pull request below and
consider merging in this -rc cycle.
Let me know If I have to modify something.
Cheers
Kishon
The following changes since commit dcb54fcb3483862e993abdae99cec22fb3ae4099:
phy: berlin-usb: fix divider for BG2 (2015-07-15 20:02:09 +0530)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/kishon/linux-phy.git tags/phy-for-4.2-rc6
for you to fetch changes up to 257d5d9a9f19ee6c6801589c74791d5422c374e9:
ARM: dts: dra7: Add syscon-pllreset syscon to SATA PHY (2015-08-04 21:11:50 +0530)
----------------------------------------------------------------
phy: for 4.2-rc6
*) Fix compiler error when sun4i usb phy driver is built as module
*) Fix SATA Lockup issue in dra7 SoC
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
----------------------------------------------------------------
Hans de Goede (1):
phy-sun4i-usb: Add missing EXPORT_SYMBOL_GPL for sun4i_usb_phy_set_squelch_detect
Roger Quadros (2):
phy: ti-pipe3: i783 workaround for SATA lockup after dpll unlock/relock
ARM: dts: dra7: Add syscon-pllreset syscon to SATA PHY
Documentation/devicetree/bindings/phy/ti-phy.txt | 16 ++++++
arch/arm/boot/dts/dra7.dtsi | 1 +
drivers/phy/phy-sun4i-usb.c | 1 +
drivers/phy/phy-ti-pipe3.c | 61 +++++++++++++++++++---
4 files changed, 73 insertions(+), 6 deletions(-)
--
1.7.9.5
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 1/3] phy-sun4i-usb: Add missing EXPORT_SYMBOL_GPL for sun4i_usb_phy_set_squelch_detect
2015-08-04 16:47 [GIT PULL 0/3] phy: for 4.2 -rc Kishon Vijay Abraham I
@ 2015-08-04 16:47 ` Kishon Vijay Abraham I
2015-08-04 16:47 ` [PATCH 2/3] phy: ti-pipe3: i783 workaround for SATA lockup after dpll unlock/relock Kishon Vijay Abraham I
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Kishon Vijay Abraham I @ 2015-08-04 16:47 UTC (permalink / raw)
To: gregkh; +Cc: kishon, linux-kernel
From: Hans de Goede <hdegoede@redhat.com>
sun4i_usb_phy_set_squelch_detect is used by other code, which may be built
as a module, so it should be exported.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
---
drivers/phy/phy-sun4i-usb.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/phy/phy-sun4i-usb.c b/drivers/phy/phy-sun4i-usb.c
index e17c539..2dad7e8 100644
--- a/drivers/phy/phy-sun4i-usb.c
+++ b/drivers/phy/phy-sun4i-usb.c
@@ -212,6 +212,7 @@ void sun4i_usb_phy_set_squelch_detect(struct phy *_phy, bool enabled)
sun4i_usb_phy_write(phy, PHY_SQUELCH_DETECT, enabled ? 0 : 2, 2);
}
+EXPORT_SYMBOL_GPL(sun4i_usb_phy_set_squelch_detect);
static struct phy_ops sun4i_usb_phy_ops = {
.init = sun4i_usb_phy_init,
--
1.7.9.5
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/3] phy: ti-pipe3: i783 workaround for SATA lockup after dpll unlock/relock
2015-08-04 16:47 [GIT PULL 0/3] phy: for 4.2 -rc Kishon Vijay Abraham I
2015-08-04 16:47 ` [PATCH 1/3] phy-sun4i-usb: Add missing EXPORT_SYMBOL_GPL for sun4i_usb_phy_set_squelch_detect Kishon Vijay Abraham I
@ 2015-08-04 16:47 ` Kishon Vijay Abraham I
2015-08-04 16:47 ` [PATCH 3/3] ARM: dts: dra7: Add syscon-pllreset syscon to SATA PHY Kishon Vijay Abraham I
2015-08-05 17:12 ` [GIT PULL 0/3] phy: for 4.2 -rc Greg KH
3 siblings, 0 replies; 5+ messages in thread
From: Kishon Vijay Abraham I @ 2015-08-04 16:47 UTC (permalink / raw)
To: gregkh; +Cc: kishon, linux-kernel
From: Roger Quadros <rogerq@ti.com>
SATA_PLL_SOFT_RESET bit of CTRL_CORE_SMA_SW_0 must be toggled
between a SATA DPLL unlock and re-lock to prevent SATA lockup.
Introduce a new DT parameter 'syscon-pllreset' to provide the syscon
regmap access to this register which sits in the control module.
If the register is not provided we fallback to the old behaviour
i.e. SATA DPLL refclk will not be disabled and we prevent SoC low
power states.
Signed-off-by: Roger Quadros <rogerq@ti.com>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
---
Documentation/devicetree/bindings/phy/ti-phy.txt | 16 ++++++
drivers/phy/phy-ti-pipe3.c | 61 +++++++++++++++++++---
2 files changed, 71 insertions(+), 6 deletions(-)
diff --git a/Documentation/devicetree/bindings/phy/ti-phy.txt b/Documentation/devicetree/bindings/phy/ti-phy.txt
index 305e3df..9cf9446 100644
--- a/Documentation/devicetree/bindings/phy/ti-phy.txt
+++ b/Documentation/devicetree/bindings/phy/ti-phy.txt
@@ -82,6 +82,9 @@ Optional properties:
- id: If there are multiple instance of the same type, in order to
differentiate between each instance "id" can be used (e.g., multi-lane PCIe
PHY). If "id" is not provided, it is set to default value of '1'.
+ - syscon-pllreset: Handle to system control region that contains the
+ CTRL_CORE_SMA_SW_0 register and register offset to the CTRL_CORE_SMA_SW_0
+ register that contains the SATA_PLL_SOFT_RESET bit. Only valid for sata_phy.
This is usually a subnode of ocp2scp to which it is connected.
@@ -100,3 +103,16 @@ usb3phy@4a084400 {
"sysclk",
"refclk";
};
+
+sata_phy: phy@4A096000 {
+ compatible = "ti,phy-pipe3-sata";
+ reg = <0x4A096000 0x80>, /* phy_rx */
+ <0x4A096400 0x64>, /* phy_tx */
+ <0x4A096800 0x40>; /* pll_ctrl */
+ reg-names = "phy_rx", "phy_tx", "pll_ctrl";
+ ctrl-module = <&omap_control_sata>;
+ clocks = <&sys_clkin1>, <&sata_ref_clk>;
+ clock-names = "sysclk", "refclk";
+ syscon-pllreset = <&scm_conf 0x3fc>;
+ #phy-cells = <0>;
+};
diff --git a/drivers/phy/phy-ti-pipe3.c b/drivers/phy/phy-ti-pipe3.c
index 3510b81..08020dc 100644
--- a/drivers/phy/phy-ti-pipe3.c
+++ b/drivers/phy/phy-ti-pipe3.c
@@ -28,6 +28,8 @@
#include <linux/delay.h>
#include <linux/phy/omap_control_phy.h>
#include <linux/of_platform.h>
+#include <linux/mfd/syscon.h>
+#include <linux/regmap.h>
#define PLL_STATUS 0x00000004
#define PLL_GO 0x00000008
@@ -52,6 +54,8 @@
#define PLL_LOCK 0x2
#define PLL_IDLE 0x1
+#define SATA_PLL_SOFT_RESET BIT(18)
+
/*
* This is an Empirical value that works, need to confirm the actual
* value required for the PIPE3PHY_PLL_CONFIGURATION2.PLL_IDLE status
@@ -82,6 +86,9 @@ struct ti_pipe3 {
struct clk *refclk;
struct clk *div_clk;
struct pipe3_dpll_map *dpll_map;
+ struct regmap *dpll_reset_syscon; /* ctrl. reg. acces */
+ unsigned int dpll_reset_reg; /* reg. index within syscon */
+ bool sata_refclk_enabled;
};
static struct pipe3_dpll_map dpll_map_usb[] = {
@@ -249,8 +256,11 @@ static int ti_pipe3_exit(struct phy *x)
u32 val;
unsigned long timeout;
- /* SATA DPLL can't be powered down due to Errata i783 */
- if (of_device_is_compatible(phy->dev->of_node, "ti,phy-pipe3-sata"))
+ /* If dpll_reset_syscon is not present we wont power down SATA DPLL
+ * due to Errata i783
+ */
+ if (of_device_is_compatible(phy->dev->of_node, "ti,phy-pipe3-sata") &&
+ !phy->dpll_reset_syscon)
return 0;
/* PCIe doesn't have internal DPLL */
@@ -276,6 +286,14 @@ static int ti_pipe3_exit(struct phy *x)
}
}
+ /* i783: SATA needs control bit toggle after PLL unlock */
+ if (of_device_is_compatible(phy->dev->of_node, "ti,phy-pipe3-sata")) {
+ regmap_update_bits(phy->dpll_reset_syscon, phy->dpll_reset_reg,
+ SATA_PLL_SOFT_RESET, SATA_PLL_SOFT_RESET);
+ regmap_update_bits(phy->dpll_reset_syscon, phy->dpll_reset_reg,
+ SATA_PLL_SOFT_RESET, 0);
+ }
+
ti_pipe3_disable_clocks(phy);
return 0;
@@ -350,6 +368,21 @@ static int ti_pipe3_probe(struct platform_device *pdev)
}
} else {
phy->wkupclk = ERR_PTR(-ENODEV);
+ phy->dpll_reset_syscon = syscon_regmap_lookup_by_phandle(node,
+ "syscon-pllreset");
+ if (IS_ERR(phy->dpll_reset_syscon)) {
+ dev_info(&pdev->dev,
+ "can't get syscon-pllreset, sata dpll won't idle\n");
+ phy->dpll_reset_syscon = NULL;
+ } else {
+ if (of_property_read_u32_index(node,
+ "syscon-pllreset", 1,
+ &phy->dpll_reset_reg)) {
+ dev_err(&pdev->dev,
+ "couldn't get pllreset reg. offset\n");
+ return -EINVAL;
+ }
+ }
}
if (of_device_is_compatible(node, "ti,phy-pipe3-pcie")) {
@@ -402,10 +435,16 @@ static int ti_pipe3_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, phy);
pm_runtime_enable(phy->dev);
- /* Prevent auto-disable of refclk for SATA PHY due to Errata i783 */
- if (of_device_is_compatible(node, "ti,phy-pipe3-sata"))
- if (!IS_ERR(phy->refclk))
+
+ /*
+ * Prevent auto-disable of refclk for SATA PHY due to Errata i783
+ */
+ if (of_device_is_compatible(node, "ti,phy-pipe3-sata")) {
+ if (!IS_ERR(phy->refclk)) {
clk_prepare_enable(phy->refclk);
+ phy->sata_refclk_enabled = true;
+ }
+ }
generic_phy = devm_phy_create(phy->dev, NULL, &ops);
if (IS_ERR(generic_phy))
@@ -472,8 +511,18 @@ static void ti_pipe3_disable_clocks(struct ti_pipe3 *phy)
{
if (!IS_ERR(phy->wkupclk))
clk_disable_unprepare(phy->wkupclk);
- if (!IS_ERR(phy->refclk))
+ if (!IS_ERR(phy->refclk)) {
clk_disable_unprepare(phy->refclk);
+ /*
+ * SATA refclk needs an additional disable as we left it
+ * on in probe to avoid Errata i783
+ */
+ if (phy->sata_refclk_enabled) {
+ clk_disable_unprepare(phy->refclk);
+ phy->sata_refclk_enabled = false;
+ }
+ }
+
if (!IS_ERR(phy->div_clk))
clk_disable_unprepare(phy->div_clk);
}
--
1.7.9.5
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 3/3] ARM: dts: dra7: Add syscon-pllreset syscon to SATA PHY
2015-08-04 16:47 [GIT PULL 0/3] phy: for 4.2 -rc Kishon Vijay Abraham I
2015-08-04 16:47 ` [PATCH 1/3] phy-sun4i-usb: Add missing EXPORT_SYMBOL_GPL for sun4i_usb_phy_set_squelch_detect Kishon Vijay Abraham I
2015-08-04 16:47 ` [PATCH 2/3] phy: ti-pipe3: i783 workaround for SATA lockup after dpll unlock/relock Kishon Vijay Abraham I
@ 2015-08-04 16:47 ` Kishon Vijay Abraham I
2015-08-05 17:12 ` [GIT PULL 0/3] phy: for 4.2 -rc Greg KH
3 siblings, 0 replies; 5+ messages in thread
From: Kishon Vijay Abraham I @ 2015-08-04 16:47 UTC (permalink / raw)
To: gregkh; +Cc: kishon, linux-kernel
From: Roger Quadros <rogerq@ti.com>
This register is required to be passed to the SATA PHY driver
to workaround errata i783 (SATA Lockup After SATA DPLL Unlock/Relock).
Signed-off-by: Roger Quadros <rogerq@ti.com>
Acked-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
---
arch/arm/boot/dts/dra7.dtsi | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/arm/boot/dts/dra7.dtsi b/arch/arm/boot/dts/dra7.dtsi
index 8f1e25b..4a0718c 100644
--- a/arch/arm/boot/dts/dra7.dtsi
+++ b/arch/arm/boot/dts/dra7.dtsi
@@ -1140,6 +1140,7 @@
ctrl-module = <&omap_control_sata>;
clocks = <&sys_clkin1>, <&sata_ref_clk>;
clock-names = "sysclk", "refclk";
+ syscon-pllreset = <&scm_conf 0x3fc>;
#phy-cells = <0>;
};
--
1.7.9.5
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [GIT PULL 0/3] phy: for 4.2 -rc
2015-08-04 16:47 [GIT PULL 0/3] phy: for 4.2 -rc Kishon Vijay Abraham I
` (2 preceding siblings ...)
2015-08-04 16:47 ` [PATCH 3/3] ARM: dts: dra7: Add syscon-pllreset syscon to SATA PHY Kishon Vijay Abraham I
@ 2015-08-05 17:12 ` Greg KH
3 siblings, 0 replies; 5+ messages in thread
From: Greg KH @ 2015-08-05 17:12 UTC (permalink / raw)
To: Kishon Vijay Abraham I; +Cc: linux-kernel
On Tue, Aug 04, 2015 at 10:17:41PM +0530, Kishon Vijay Abraham I wrote:
> Hi Greg,
>
> Got a couple of more fixes for this -rc cycle. One fixes a compiler
> error when the driver is built as module and the other fixes a
> SATA lockup. The fix also requires a dts patch which I've included
> in this series after Tony's ACK. Please find the pull request below and
> consider merging in this -rc cycle.
>
> Let me know If I have to modify something.
>
> Cheers
> Kishon
>
> The following changes since commit dcb54fcb3483862e993abdae99cec22fb3ae4099:
>
> phy: berlin-usb: fix divider for BG2 (2015-07-15 20:02:09 +0530)
>
> are available in the git repository at:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/kishon/linux-phy.git tags/phy-for-4.2-rc6
Pulled and pushed out, thanks.
greg k-h
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2015-08-05 17:12 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-08-04 16:47 [GIT PULL 0/3] phy: for 4.2 -rc Kishon Vijay Abraham I
2015-08-04 16:47 ` [PATCH 1/3] phy-sun4i-usb: Add missing EXPORT_SYMBOL_GPL for sun4i_usb_phy_set_squelch_detect Kishon Vijay Abraham I
2015-08-04 16:47 ` [PATCH 2/3] phy: ti-pipe3: i783 workaround for SATA lockup after dpll unlock/relock Kishon Vijay Abraham I
2015-08-04 16:47 ` [PATCH 3/3] ARM: dts: dra7: Add syscon-pllreset syscon to SATA PHY Kishon Vijay Abraham I
2015-08-05 17:12 ` [GIT PULL 0/3] phy: for 4.2 -rc Greg KH
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox