Re: [PATCH] i2c: qup: Fix order of runtime pm initialization

2014-10-02 Thread Wolfram Sang
On Mon, Sep 29, 2014 at 05:00:51PM -0500, Andy Gross wrote:
 The runtime pm calls need to be done before populating the children via the
 i2c_add_adapter call.  If this is not done, a child can run into issues trying
 to do i2c read/writes due to the pm_runtime_sync failing.
 
 Signed-off-by: Andy Gross agr...@codeaurora.org

Applied to for-current, thanks!



signature.asc
Description: Digital signature


Re: [PATCH] i2c: qup: Fix order of runtime pm initialization

2014-09-30 Thread Andy Gross
On Mon, Sep 29, 2014 at 06:53:24PM -0700, Bjorn Andersson wrote:
 On Mon 29 Sep 15:00 PDT 2014, Andy Gross wrote:
 
  The runtime pm calls need to be done before populating the children via the
  i2c_add_adapter call.  If this is not done, a child can run into issues 
  trying
  to do i2c read/writes due to the pm_runtime_sync failing.
  
 
 May I ask in what case this would fail?  I thought we tested this as we found
 the faulty error check after calling pm_runtime_get_sync().

This is a different kind of failure.   If during probe, the children do some I2C
activity, they will encounter issues with the runtime_sync due to the pm_runtime
not being initialized.  However, once the qup probe completes, everything works
fine.

The original runtime_sync issue revolved around the runtime_sync return value
being misinterpreted due to the incorrect check.

snip


-- 
sent by an employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation
--
To unsubscribe from this list: send the line unsubscribe linux-arm-msm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] i2c: qup: Fix order of runtime pm initialization

2014-09-30 Thread Bjorn Andersson
On Tue 30 Sep 12:59 PDT 2014, Andy Gross wrote:

 On Mon, Sep 29, 2014 at 06:53:24PM -0700, Bjorn Andersson wrote:
  On Mon 29 Sep 15:00 PDT 2014, Andy Gross wrote:
  
   The runtime pm calls need to be done before populating the children via 
   the
   i2c_add_adapter call.  If this is not done, a child can run into issues 
   trying
   to do i2c read/writes due to the pm_runtime_sync failing.
   
  
  May I ask in what case this would fail?  I thought we tested this as we 
  found
  the faulty error check after calling pm_runtime_get_sync().
 
 This is a different kind of failure.   If during probe, the children do some 
 I2C
 activity, they will encounter issues with the runtime_sync due to the 
 pm_runtime
 not being initialized.  However, once the qup probe completes, everything 
 works
 fine.
 
 The original runtime_sync issue revolved around the runtime_sync return value
 being misinterpreted due to the incorrect check.
 

Yeah, I just wondered why my testing didn't trigger this. But I suspect that
the answer is simply that the client I ran with did not do i2c accesses from
probe.

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


[PATCH] i2c: qup: Fix order of runtime pm initialization

2014-09-29 Thread Andy Gross
The runtime pm calls need to be done before populating the children via the
i2c_add_adapter call.  If this is not done, a child can run into issues trying
to do i2c read/writes due to the pm_runtime_sync failing.

Signed-off-by: Andy Gross agr...@codeaurora.org
---
 drivers/i2c/busses/i2c-qup.c |   12 
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/drivers/i2c/busses/i2c-qup.c b/drivers/i2c/busses/i2c-qup.c
index 3a4d64e..092d89b 100644
--- a/drivers/i2c/busses/i2c-qup.c
+++ b/drivers/i2c/busses/i2c-qup.c
@@ -674,16 +674,20 @@ static int qup_i2c_probe(struct platform_device *pdev)
qup-adap.dev.of_node = pdev-dev.of_node;
strlcpy(qup-adap.name, QUP I2C adapter, sizeof(qup-adap.name));
 
-   ret = i2c_add_adapter(qup-adap);
-   if (ret)
-   goto fail;
-
pm_runtime_set_autosuspend_delay(qup-dev, MSEC_PER_SEC);
pm_runtime_use_autosuspend(qup-dev);
pm_runtime_set_active(qup-dev);
pm_runtime_enable(qup-dev);
+
+   ret = i2c_add_adapter(qup-adap);
+   if (ret)
+   goto fail_runtime;
+
return 0;
 
+fail_runtime:
+   pm_runtime_disable(qup-dev);
+   pm_runtime_set_suspended(qup-dev);
 fail:
qup_i2c_disable_clocks(qup);
return ret;
-- 
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation

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


Re: [PATCH] i2c: qup: Fix order of runtime pm initialization

2014-09-29 Thread Felipe Balbi
On Mon, Sep 29, 2014 at 05:00:51PM -0500, Andy Gross wrote:
 The runtime pm calls need to be done before populating the children via the
 i2c_add_adapter call.  If this is not done, a child can run into issues trying
 to do i2c read/writes due to the pm_runtime_sync failing.
 
 Signed-off-by: Andy Gross agr...@codeaurora.org

Reviewed-by: Felipe Balbi ba...@ti.com

-- 
balbi


signature.asc
Description: Digital signature


Re: [PATCH] i2c: qup: Fix order of runtime pm initialization

2014-09-29 Thread Bjorn Andersson
On Mon 29 Sep 15:00 PDT 2014, Andy Gross wrote:

 The runtime pm calls need to be done before populating the children via the
 i2c_add_adapter call.  If this is not done, a child can run into issues trying
 to do i2c read/writes due to the pm_runtime_sync failing.
 

May I ask in what case this would fail?  I thought we tested this as we found
the faulty error check after calling pm_runtime_get_sync().

Nontheless,

Acked-by: Bjorn Andersson bjorn.anders...@sonymobile.com

Regards,
Bjorn

 Signed-off-by: Andy Gross agr...@codeaurora.org
 ---
  drivers/i2c/busses/i2c-qup.c |   12 
  1 file changed, 8 insertions(+), 4 deletions(-)
 
 diff --git a/drivers/i2c/busses/i2c-qup.c b/drivers/i2c/busses/i2c-qup.c
 index 3a4d64e..092d89b 100644
 --- a/drivers/i2c/busses/i2c-qup.c
 +++ b/drivers/i2c/busses/i2c-qup.c
 @@ -674,16 +674,20 @@ static int qup_i2c_probe(struct platform_device *pdev)
   qup-adap.dev.of_node = pdev-dev.of_node;
   strlcpy(qup-adap.name, QUP I2C adapter, sizeof(qup-adap.name));
  
 - ret = i2c_add_adapter(qup-adap);
 - if (ret)
 - goto fail;
 -
   pm_runtime_set_autosuspend_delay(qup-dev, MSEC_PER_SEC);
   pm_runtime_use_autosuspend(qup-dev);
   pm_runtime_set_active(qup-dev);
   pm_runtime_enable(qup-dev);
 +
 + ret = i2c_add_adapter(qup-adap);
 + if (ret)
 + goto fail_runtime;
 +
   return 0;
  
 +fail_runtime:
 + pm_runtime_disable(qup-dev);
 + pm_runtime_set_suspended(qup-dev);
  fail:
   qup_i2c_disable_clocks(qup);
   return ret;
 -- 
 The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
 hosted by The Linux Foundation
 
--
To unsubscribe from this list: send the line unsubscribe linux-arm-msm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html