Re: [PATCH] [media] exynos-gsc: Remove PM_RUNTIME dependency

2014-07-22 Thread Shaik Ameer Basha
Hi Sachin,

Thanks for testing.

Even I tested with both PM enable/disable with EXYNOS_IOMMU. I didn't
face any issues.
Let me check with out IOMMU. I will update the status soon.

Regards,
Shaik Ameer Basha

On Tue, Jul 22, 2014 at 10:31 AM, Sachin Kamat spk.li...@gmail.com wrote:
 Hi Shaik,

 On Mon, Jul 21, 2014 at 10:24 AM, Shaik Ameer Basha
 shaik.am...@samsung.com wrote:
 1] Currently Gscaler clock is enabled only inside pm_runtime callbacks.
If PM_RUNTIME is disabled, driver hangs. This patch removes the
PM_RUNTIME dependency by keeping the clock enable/disable functions
in m2m start/stop streaming callbacks.

 2] For Exynos5420/5800, Gscaler clock has to be Turned ON before powering
on/off the Gscaler power domain. This dependency is taken care by
this patch at driver level.

 Signed-off-by: Shaik Ameer Basha shaik.am...@samsung.com
 ---
  drivers/media/platform/exynos-gsc/gsc-core.c |   10 ++
  drivers/media/platform/exynos-gsc/gsc-m2m.c  |   13 +
  2 files changed, 15 insertions(+), 8 deletions(-)

 diff --git a/drivers/media/platform/exynos-gsc/gsc-core.c 
 b/drivers/media/platform/exynos-gsc/gsc-core.c
 index 9d0cc04..39c0953 100644
 --- a/drivers/media/platform/exynos-gsc/gsc-core.c
 +++ b/drivers/media/platform/exynos-gsc/gsc-core.c
 @@ -1132,23 +1132,17 @@ static int gsc_probe(struct platform_device *pdev)

 platform_set_drvdata(pdev, gsc);
 pm_runtime_enable(dev);
 -   ret = pm_runtime_get_sync(pdev-dev);
 -   if (ret  0)
 -   goto err_m2m;

 /* Initialize continious memory allocator */
 gsc-alloc_ctx = vb2_dma_contig_init_ctx(dev);
 if (IS_ERR(gsc-alloc_ctx)) {
 ret = PTR_ERR(gsc-alloc_ctx);
 -   goto err_pm;
 +   goto err_m2m;
 }

 dev_dbg(dev, gsc-%d registered successfully\n, gsc-id);
 -
 -   pm_runtime_put(dev);
 return 0;
 -err_pm:
 -   pm_runtime_put(dev);
 +
  err_m2m:
 gsc_unregister_m2m_device(gsc);
  err_v4l2:
 diff --git a/drivers/media/platform/exynos-gsc/gsc-m2m.c 
 b/drivers/media/platform/exynos-gsc/gsc-m2m.c
 index e434f1f0..a98462c 100644
 --- a/drivers/media/platform/exynos-gsc/gsc-m2m.c
 +++ b/drivers/media/platform/exynos-gsc/gsc-m2m.c
 @@ -60,19 +60,32 @@ static void __gsc_m2m_job_abort(struct gsc_ctx *ctx)
  static int gsc_m2m_start_streaming(struct vb2_queue *q, unsigned int count)
  {
 struct gsc_ctx *ctx = q-drv_priv;
 +   struct gsc_dev *gsc = ctx-gsc_dev;
 int ret;

 +   ret = clk_enable(gsc-clock);
 +   if (ret)
 +   return ret;
 +
 ret = pm_runtime_get_sync(ctx-gsc_dev-pdev-dev);
 +
 +   if (!pm_runtime_enabled(gsc-pdev-dev)) {
 +   gsc_hw_set_sw_reset(gsc);
 +   gsc_wait_reset(gsc);
 +   }
 +
 return ret  0 ? 0 : ret;
  }

  static void gsc_m2m_stop_streaming(struct vb2_queue *q)
  {
 struct gsc_ctx *ctx = q-drv_priv;
 +   struct gsc_dev *gsc = ctx-gsc_dev;

 __gsc_m2m_job_abort(ctx);

 pm_runtime_put(ctx-gsc_dev-pdev-dev);
 +   clk_disable(gsc-clock);
  }

  void gsc_m2m_job_finish(struct gsc_ctx *ctx, int vb_state)
 --
 1.7.9.5


 Looks like there is some issue while runtime PM is disabled. The
 conversion operation hangs. Tested on 5420 based Arndale Octa
 board with latest next kernel.

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


Re: [PATCH] [media] exynos-gsc: Remove PM_RUNTIME dependency

2014-07-21 Thread Sylwester Nawrocki
On 21/07/14 06:54, Shaik Ameer Basha wrote:
 1] Currently Gscaler clock is enabled only inside pm_runtime callbacks.
If PM_RUNTIME is disabled, driver hangs. This patch removes the
PM_RUNTIME dependency by keeping the clock enable/disable functions
in m2m start/stop streaming callbacks.
 
 2] For Exynos5420/5800, Gscaler clock has to be Turned ON before powering
on/off the Gscaler power domain. This dependency is taken care by
this patch at driver level.
 
 Signed-off-by: Shaik Ameer Basha shaik.am...@samsung.com

Acked-by: Sylwester Nawrocki s.nawro...@samsung.com

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


Re: [PATCH] [media] exynos-gsc: Remove PM_RUNTIME dependency

2014-07-21 Thread Sachin Kamat
Hi Shaik,

On Mon, Jul 21, 2014 at 10:24 AM, Shaik Ameer Basha
shaik.am...@samsung.com wrote:
 1] Currently Gscaler clock is enabled only inside pm_runtime callbacks.
If PM_RUNTIME is disabled, driver hangs. This patch removes the
PM_RUNTIME dependency by keeping the clock enable/disable functions
in m2m start/stop streaming callbacks.

 2] For Exynos5420/5800, Gscaler clock has to be Turned ON before powering
on/off the Gscaler power domain. This dependency is taken care by
this patch at driver level.

 Signed-off-by: Shaik Ameer Basha shaik.am...@samsung.com
 ---
  drivers/media/platform/exynos-gsc/gsc-core.c |   10 ++
  drivers/media/platform/exynos-gsc/gsc-m2m.c  |   13 +
  2 files changed, 15 insertions(+), 8 deletions(-)

 diff --git a/drivers/media/platform/exynos-gsc/gsc-core.c 
 b/drivers/media/platform/exynos-gsc/gsc-core.c
 index 9d0cc04..39c0953 100644
 --- a/drivers/media/platform/exynos-gsc/gsc-core.c
 +++ b/drivers/media/platform/exynos-gsc/gsc-core.c
 @@ -1132,23 +1132,17 @@ static int gsc_probe(struct platform_device *pdev)

 platform_set_drvdata(pdev, gsc);
 pm_runtime_enable(dev);
 -   ret = pm_runtime_get_sync(pdev-dev);
 -   if (ret  0)
 -   goto err_m2m;

 /* Initialize continious memory allocator */
 gsc-alloc_ctx = vb2_dma_contig_init_ctx(dev);
 if (IS_ERR(gsc-alloc_ctx)) {
 ret = PTR_ERR(gsc-alloc_ctx);
 -   goto err_pm;
 +   goto err_m2m;
 }

 dev_dbg(dev, gsc-%d registered successfully\n, gsc-id);
 -
 -   pm_runtime_put(dev);
 return 0;
 -err_pm:
 -   pm_runtime_put(dev);
 +
  err_m2m:
 gsc_unregister_m2m_device(gsc);
  err_v4l2:
 diff --git a/drivers/media/platform/exynos-gsc/gsc-m2m.c 
 b/drivers/media/platform/exynos-gsc/gsc-m2m.c
 index e434f1f0..a98462c 100644
 --- a/drivers/media/platform/exynos-gsc/gsc-m2m.c
 +++ b/drivers/media/platform/exynos-gsc/gsc-m2m.c
 @@ -60,19 +60,32 @@ static void __gsc_m2m_job_abort(struct gsc_ctx *ctx)
  static int gsc_m2m_start_streaming(struct vb2_queue *q, unsigned int count)
  {
 struct gsc_ctx *ctx = q-drv_priv;
 +   struct gsc_dev *gsc = ctx-gsc_dev;
 int ret;

 +   ret = clk_enable(gsc-clock);
 +   if (ret)
 +   return ret;
 +
 ret = pm_runtime_get_sync(ctx-gsc_dev-pdev-dev);
 +
 +   if (!pm_runtime_enabled(gsc-pdev-dev)) {
 +   gsc_hw_set_sw_reset(gsc);
 +   gsc_wait_reset(gsc);
 +   }
 +
 return ret  0 ? 0 : ret;
  }

  static void gsc_m2m_stop_streaming(struct vb2_queue *q)
  {
 struct gsc_ctx *ctx = q-drv_priv;
 +   struct gsc_dev *gsc = ctx-gsc_dev;

 __gsc_m2m_job_abort(ctx);

 pm_runtime_put(ctx-gsc_dev-pdev-dev);
 +   clk_disable(gsc-clock);
  }

  void gsc_m2m_job_finish(struct gsc_ctx *ctx, int vb_state)
 --
 1.7.9.5


Looks like there is some issue while runtime PM is disabled. The
conversion operation hangs. Tested on 5420 based Arndale Octa
board with latest next kernel.

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