Re: [PATCH v4 12/15] usb: phy: msm: Add support for secondary PHY control

2013-12-11 Thread Ivan T. Ivanov
Hi, 

On Thu, 2013-12-05 at 10:42 +, Mark Rutland wrote: 
 On Mon, Nov 18, 2013 at 12:57:42PM +, Ivan T. Ivanov wrote:
  
  Hi Mark,
  
  On Fri, 2013-11-15 at 16:42 +, Mark Rutland wrote: 
   On Tue, Nov 12, 2013 at 02:51:47PM +, Ivan T. Ivanov wrote:
From: Ivan T. Ivanov iiva...@mm-sol.com

Allow support to use 2nd HSPHY with USB2 Core.
Some platforms may have configuration to allow USB controller
work with any of the two HSPHYs present. By default driver
configures USB core to use primary HSPHY. Add support to allow
user select 2nd HSPHY using DT parameter.

Signed-off-by: Ivan T. Ivanov iiva...@mm-sol.com
Cc: Manu Gautam mgau...@codeaurora.org
Cc: devicet...@vger.kernel.org
---
 .../devicetree/bindings/usb/msm-hsusb.txt  |6 +
 drivers/usb/phy/phy-msm-usb.c  |   24 
++--
 include/linux/usb/msm_hsusb.h  |1 +
 include/linux/usb/msm_hsusb_hw.h   |1 +
 4 files changed, 30 insertions(+), 2 deletions(-)

diff --git a/Documentation/devicetree/bindings/usb/msm-hsusb.txt 
b/Documentation/devicetree/bindings/usb/msm-hsusb.txt
index 3f21204..d105ba9 100644
--- a/Documentation/devicetree/bindings/usb/msm-hsusb.txt
+++ b/Documentation/devicetree/bindings/usb/msm-hsusb.txt
@@ -72,6 +72,12 @@ Optional properties:
 - qcom,phy-init-sequence: PHY configuration sequence. val, reg pairs
terminate with -1
 
+- qcom,phy-num:Select number of pyco-phy to use, can be one of
+   0 - PHY one, default
+   1 - Second PHY
+   Some platforms may have configuration 
to allow USB
+   controller work with any of the two 
HSPHYs present.
+
   
   Only one can be used at a time?
  
  Yes only one of them. Selected at driver init time. 
 
 Ok. For a given platform, is it likely that both are wired up and
 _possibly_ usable?


My guess is that this is possible :-) Regards. Ivan

 
 Thanks
 Mark.


--
To unsubscribe from this list: send the line unsubscribe linux-usb in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v4 12/15] usb: phy: msm: Add support for secondary PHY control

2013-12-05 Thread Mark Rutland
On Mon, Nov 18, 2013 at 12:57:42PM +, Ivan T. Ivanov wrote:
 
 Hi Mark,
 
 On Fri, 2013-11-15 at 16:42 +, Mark Rutland wrote: 
  On Tue, Nov 12, 2013 at 02:51:47PM +, Ivan T. Ivanov wrote:
   From: Ivan T. Ivanov iiva...@mm-sol.com
   
   Allow support to use 2nd HSPHY with USB2 Core.
   Some platforms may have configuration to allow USB controller
   work with any of the two HSPHYs present. By default driver
   configures USB core to use primary HSPHY. Add support to allow
   user select 2nd HSPHY using DT parameter.
   
   Signed-off-by: Ivan T. Ivanov iiva...@mm-sol.com
   Cc: Manu Gautam mgau...@codeaurora.org
   Cc: devicet...@vger.kernel.org
   ---
.../devicetree/bindings/usb/msm-hsusb.txt  |6 +
drivers/usb/phy/phy-msm-usb.c  |   24 
   ++--
include/linux/usb/msm_hsusb.h  |1 +
include/linux/usb/msm_hsusb_hw.h   |1 +
4 files changed, 30 insertions(+), 2 deletions(-)
   
   diff --git a/Documentation/devicetree/bindings/usb/msm-hsusb.txt 
   b/Documentation/devicetree/bindings/usb/msm-hsusb.txt
   index 3f21204..d105ba9 100644
   --- a/Documentation/devicetree/bindings/usb/msm-hsusb.txt
   +++ b/Documentation/devicetree/bindings/usb/msm-hsusb.txt
   @@ -72,6 +72,12 @@ Optional properties:
- qcom,phy-init-sequence: PHY configuration sequence. val, reg pairs
 terminate with -1

   +- qcom,phy-num:  Select number of pyco-phy to use, can be one of
   + 0 - PHY one, default
   + 1 - Second PHY
   + Some platforms may have configuration to allow 
   USB
   + controller work with any of the two HSPHYs 
   present.
   +
  
  Only one can be used at a time?
 
 Yes only one of them. Selected at driver init time. 

Ok. For a given platform, is it likely that both are wired up and
_possibly_ usable?

Thanks
Mark.
--
To unsubscribe from this list: send the line unsubscribe linux-usb in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v4 12/15] usb: phy: msm: Add support for secondary PHY control

2013-11-18 Thread Ivan T. Ivanov

Hi Mark,

On Fri, 2013-11-15 at 16:42 +, Mark Rutland wrote: 
 On Tue, Nov 12, 2013 at 02:51:47PM +, Ivan T. Ivanov wrote:
  From: Ivan T. Ivanov iiva...@mm-sol.com
  
  Allow support to use 2nd HSPHY with USB2 Core.
  Some platforms may have configuration to allow USB controller
  work with any of the two HSPHYs present. By default driver
  configures USB core to use primary HSPHY. Add support to allow
  user select 2nd HSPHY using DT parameter.
  
  Signed-off-by: Ivan T. Ivanov iiva...@mm-sol.com
  Cc: Manu Gautam mgau...@codeaurora.org
  Cc: devicet...@vger.kernel.org
  ---
   .../devicetree/bindings/usb/msm-hsusb.txt  |6 +
   drivers/usb/phy/phy-msm-usb.c  |   24 
  ++--
   include/linux/usb/msm_hsusb.h  |1 +
   include/linux/usb/msm_hsusb_hw.h   |1 +
   4 files changed, 30 insertions(+), 2 deletions(-)
  
  diff --git a/Documentation/devicetree/bindings/usb/msm-hsusb.txt 
  b/Documentation/devicetree/bindings/usb/msm-hsusb.txt
  index 3f21204..d105ba9 100644
  --- a/Documentation/devicetree/bindings/usb/msm-hsusb.txt
  +++ b/Documentation/devicetree/bindings/usb/msm-hsusb.txt
  @@ -72,6 +72,12 @@ Optional properties:
   - qcom,phy-init-sequence: PHY configuration sequence. val, reg pairs
  terminate with -1
   
  +- qcom,phy-num:Select number of pyco-phy to use, can be one of
  +   0 - PHY one, default
  +   1 - Second PHY
  +   Some platforms may have configuration to allow 
  USB
  +   controller work with any of the two HSPHYs 
  present.
  +
 
 Only one can be used at a time?

Yes only one of them. Selected at driver init time. 

 
 [...]
 
  @@ -1395,6 +1412,9 @@ static int msm_otg_read_dt(struct platform_device 
  *pdev, struct msm_otg *motg)
  if (!of_property_read_u32(node, qcom,otg-control, val))
  pdata-otg_control = val;
   
  +   if (!of_property_read_u32(node, qcom,phy-num, val))
  +   motg-phy_number = val;
 
 No sanity checking? If not all of your tests on the value of
 motg-phy_number are the same form, you may get undepected results...


All checks are the same, but will add explicit check.

Thanks, 
Ivan 

 
 Mark.


--
To unsubscribe from this list: send the line unsubscribe linux-usb in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v4 12/15] usb: phy: msm: Add support for secondary PHY control

2013-11-15 Thread Mark Rutland
On Tue, Nov 12, 2013 at 02:51:47PM +, Ivan T. Ivanov wrote:
 From: Ivan T. Ivanov iiva...@mm-sol.com
 
 Allow support to use 2nd HSPHY with USB2 Core.
 Some platforms may have configuration to allow USB controller
 work with any of the two HSPHYs present. By default driver
 configures USB core to use primary HSPHY. Add support to allow
 user select 2nd HSPHY using DT parameter.
 
 Signed-off-by: Ivan T. Ivanov iiva...@mm-sol.com
 Cc: Manu Gautam mgau...@codeaurora.org
 Cc: devicet...@vger.kernel.org
 ---
  .../devicetree/bindings/usb/msm-hsusb.txt  |6 +
  drivers/usb/phy/phy-msm-usb.c  |   24 
 ++--
  include/linux/usb/msm_hsusb.h  |1 +
  include/linux/usb/msm_hsusb_hw.h   |1 +
  4 files changed, 30 insertions(+), 2 deletions(-)
 
 diff --git a/Documentation/devicetree/bindings/usb/msm-hsusb.txt 
 b/Documentation/devicetree/bindings/usb/msm-hsusb.txt
 index 3f21204..d105ba9 100644
 --- a/Documentation/devicetree/bindings/usb/msm-hsusb.txt
 +++ b/Documentation/devicetree/bindings/usb/msm-hsusb.txt
 @@ -72,6 +72,12 @@ Optional properties:
  - qcom,phy-init-sequence: PHY configuration sequence. val, reg pairs
   terminate with -1
  
 +- qcom,phy-num:  Select number of pyco-phy to use, can be one of
 + 0 - PHY one, default
 + 1 - Second PHY
 + Some platforms may have configuration to allow 
 USB
 + controller work with any of the two HSPHYs 
 present.
 +

Only one can be used at a time?

[...]

 @@ -1395,6 +1412,9 @@ static int msm_otg_read_dt(struct platform_device 
 *pdev, struct msm_otg *motg)
   if (!of_property_read_u32(node, qcom,otg-control, val))
   pdata-otg_control = val;
  
 + if (!of_property_read_u32(node, qcom,phy-num, val))
 + motg-phy_number = val;

No sanity checking? If not all of your tests on the value of
motg-phy_number are the same form, you may get undepected results...

Mark.
--
To unsubscribe from this list: send the line unsubscribe linux-usb in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH v4 12/15] usb: phy: msm: Add support for secondary PHY control

2013-11-12 Thread Ivan T. Ivanov
From: Ivan T. Ivanov iiva...@mm-sol.com

Allow support to use 2nd HSPHY with USB2 Core.
Some platforms may have configuration to allow USB controller
work with any of the two HSPHYs present. By default driver
configures USB core to use primary HSPHY. Add support to allow
user select 2nd HSPHY using DT parameter.

Signed-off-by: Ivan T. Ivanov iiva...@mm-sol.com
Cc: Manu Gautam mgau...@codeaurora.org
Cc: devicet...@vger.kernel.org
---
 .../devicetree/bindings/usb/msm-hsusb.txt  |6 +
 drivers/usb/phy/phy-msm-usb.c  |   24 ++--
 include/linux/usb/msm_hsusb.h  |1 +
 include/linux/usb/msm_hsusb_hw.h   |1 +
 4 files changed, 30 insertions(+), 2 deletions(-)

diff --git a/Documentation/devicetree/bindings/usb/msm-hsusb.txt 
b/Documentation/devicetree/bindings/usb/msm-hsusb.txt
index 3f21204..d105ba9 100644
--- a/Documentation/devicetree/bindings/usb/msm-hsusb.txt
+++ b/Documentation/devicetree/bindings/usb/msm-hsusb.txt
@@ -72,6 +72,12 @@ Optional properties:
 - qcom,phy-init-sequence: PHY configuration sequence. val, reg pairs
terminate with -1
 
+- qcom,phy-num:Select number of pyco-phy to use, can be one of
+   0 - PHY one, default
+   1 - Second PHY
+   Some platforms may have configuration to allow 
USB
+   controller work with any of the two HSPHYs 
present.
+
 Example HSUSB OTG controller device node:
 
usb@f9a55000 {
diff --git a/drivers/usb/phy/phy-msm-usb.c b/drivers/usb/phy/phy-msm-usb.c
index 53fc645..01b571ff 100644
--- a/drivers/usb/phy/phy-msm-usb.c
+++ b/drivers/usb/phy/phy-msm-usb.c
@@ -340,6 +340,9 @@ static int msm_otg_phy_reset(struct msm_otg *motg)
if (!retries)
return -ETIMEDOUT;
 
+   if (motg-phy_number)
+   writel(readl(USB_PHY_CTRL2) | BIT(16), USB_PHY_CTRL2);
+
dev_info(motg-phy.dev, phy_reset: success\n);
return 0;
 }
@@ -394,6 +397,9 @@ static int msm_otg_reset(struct usb_phy *phy)
ulpi_write(phy, ulpi_val, ULPI_USB_INT_EN_FALL);
}
 
+   if (motg-phy_number)
+   writel(readl(USB_PHY_CTRL2) | BIT(16), USB_PHY_CTRL2);
+
return 0;
 }
 
@@ -406,6 +412,7 @@ static int msm_otg_suspend(struct msm_otg *motg)
struct usb_phy *phy = motg-phy;
struct usb_bus *bus = phy-otg-host;
struct msm_otg_platform_data *pdata = motg-pdata;
+   void __iomem *addr;
int cnt = 0;
 
if (atomic_read(motg-in_lpm))
@@ -465,9 +472,13 @@ static int msm_otg_suspend(struct msm_otg *motg)
 */
writel(readl(USB_USBCMD) | ASYNC_INTR_CTRL | ULPI_STP_CTRL, USB_USBCMD);
 
+   addr = USB_PHY_CTRL;
+   if (motg-phy_number)
+   addr = USB_PHY_CTRL2;
+
if (motg-pdata-phy_type == SNPS_28NM_INTEGRATED_PHY 
motg-pdata-otg_control == OTG_PMIC_CONTROL)
-   writel(readl(USB_PHY_CTRL) | PHY_RETEN, USB_PHY_CTRL);
+   writel(readl(addr) | PHY_RETEN, addr);
 
clk_disable_unprepare(motg-pclk);
clk_disable_unprepare(motg-clk);
@@ -497,6 +508,7 @@ static int msm_otg_resume(struct msm_otg *motg)
 {
struct usb_phy *phy = motg-phy;
struct usb_bus *bus = phy-otg-host;
+   void __iomem *addr;
int cnt = 0;
unsigned temp;
 
@@ -510,9 +522,14 @@ static int msm_otg_resume(struct msm_otg *motg)
 
if (motg-pdata-phy_type == SNPS_28NM_INTEGRATED_PHY 
motg-pdata-otg_control == OTG_PMIC_CONTROL) {
+
+   addr = USB_PHY_CTRL;
+   if (motg-phy_number)
+   addr = USB_PHY_CTRL2;
+
msm_hsusb_ldo_set_mode(motg, 1);
msm_hsusb_config_vddcx(motg, 1);
-   writel(readl(USB_PHY_CTRL)  ~PHY_RETEN, USB_PHY_CTRL);
+   writel(readl(addr)  ~PHY_RETEN, addr);
}
 
temp = readl(USB_USBCMD);
@@ -1395,6 +1412,9 @@ static int msm_otg_read_dt(struct platform_device *pdev, 
struct msm_otg *motg)
if (!of_property_read_u32(node, qcom,otg-control, val))
pdata-otg_control = val;
 
+   if (!of_property_read_u32(node, qcom,phy-num, val))
+   motg-phy_number = val;
+
if (!of_get_property(node, qcom,phy-init-sequence, len) || !len)
return 0;
 
diff --git a/include/linux/usb/msm_hsusb.h b/include/linux/usb/msm_hsusb.h
index 9bf8943..da3a974 100644
--- a/include/linux/usb/msm_hsusb.h
+++ b/include/linux/usb/msm_hsusb.h
@@ -156,6 +156,7 @@ struct msm_otg {
atomic_t in_lpm;
int async_int;
unsigned cur_power;
+   int phy_number;
struct delayed_work chg_work;
enum usb_chg_state chg_state;
enum usb_chg_type chg_type;
diff --git a/include/linux/usb/msm_hsusb_hw.h b/include/linux/usb/msm_hsusb_hw.h