cron job: media_tree daily build: WARNINGS

2013-09-21 Thread Hans Verkuil
This message is generated daily by a cron job that builds media_tree for
the kernels and architectures in the list below.

Results of the daily build of media_tree:

date:   Sun Sep 22 04:00:28 CEST 2013
git branch: test
git hash:   f66b2a1c7f2ae3fb0d5b67d07ab4f5055fd3cf16
gcc version:i686-linux-gcc (GCC) 4.8.1
sparse version: 0.4.5-rc1
host hardware:  x86_64
host os:3.10.1

linux-git-arm-at91: OK
linux-git-arm-davinci: OK
linux-git-arm-exynos: OK
linux-git-arm-mx: OK
linux-git-arm-omap: OK
linux-git-arm-omap1: OK
linux-git-arm-pxa: OK
linux-git-blackfin: OK
linux-git-i686: OK
linux-git-m32r: OK
linux-git-mips: OK
linux-git-powerpc64: OK
linux-git-sh: OK
linux-git-x86_64: OK
linux-2.6.31.14-i686: OK
linux-2.6.32.27-i686: OK
linux-2.6.33.7-i686: OK
linux-2.6.34.7-i686: OK
linux-2.6.35.9-i686: OK
linux-2.6.36.4-i686: OK
linux-2.6.37.6-i686: OK
linux-2.6.38.8-i686: OK
linux-2.6.39.4-i686: OK
linux-3.0.60-i686: OK
linux-3.10.1-i686: OK
linux-3.1.10-i686: OK
linux-3.11.1-i686: OK
linux-3.12-rc1-i686: OK
linux-3.2.37-i686: OK
linux-3.3.8-i686: OK
linux-3.4.27-i686: OK
linux-3.5.7-i686: OK
linux-3.6.11-i686: OK
linux-3.7.4-i686: OK
linux-3.8-i686: OK
linux-3.9.2-i686: OK
linux-2.6.31.14-x86_64: OK
linux-2.6.32.27-x86_64: OK
linux-2.6.33.7-x86_64: OK
linux-2.6.34.7-x86_64: OK
linux-2.6.35.9-x86_64: OK
linux-2.6.36.4-x86_64: OK
linux-2.6.37.6-x86_64: OK
linux-2.6.38.8-x86_64: OK
linux-2.6.39.4-x86_64: OK
linux-3.0.60-x86_64: OK
linux-3.10.1-x86_64: OK
linux-3.1.10-x86_64: OK
linux-3.11.1-x86_64: OK
linux-3.12-rc1-x86_64: OK
linux-3.2.37-x86_64: OK
linux-3.3.8-x86_64: OK
linux-3.4.27-x86_64: OK
linux-3.5.7-x86_64: OK
linux-3.6.11-x86_64: OK
linux-3.7.4-x86_64: OK
linux-3.8-x86_64: OK
linux-3.9.2-x86_64: OK
apps: WARNINGS
spec-git: OK
ABI WARNING: change for arm-at91
ABI WARNING: change for arm-davinci
ABI WARNING: change for arm-exynos
ABI WARNING: change for arm-mx
ABI WARNING: change for arm-omap
ABI WARNING: change for arm-omap1
ABI WARNING: change for arm-pxa
ABI WARNING: change for blackfin
ABI WARNING: change for i686
ABI WARNING: change for m32r
ABI WARNING: change for mips
ABI WARNING: change for powerpc64
ABI WARNING: change for sh
ABI WARNING: change for x86_64
sparse version: 0.4.5-rc1
sparse: ERRORS

Detailed results are available here:

http://www.xs4all.nl/~hverkuil/logs/Sunday.log

Full logs are available here:

http://www.xs4all.nl/~hverkuil/logs/Sunday.tar.bz2

The Media Infrastructure API from this daily build is here:

http://www.xs4all.nl/~hverkuil/spec/media.html
--
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


[PATCH 05/19] media: Change variable type to bool

2013-09-21 Thread Peter Senna Tschudin
The variable vco_select is only assigned the values true and false.
Change its type to bool.

The simplified semantic patch that find this problem is as
follows (http://coccinelle.lip6.fr/):

@exists@
type T;
identifier b;
@@
- T
+ bool
  b = ...;
  ... when any
  b = \(true\|false\)

Signed-off-by: Peter Senna Tschudin 
---
 drivers/media/tuners/fc0012.c | 2 +-
 drivers/media/tuners/fc0013.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/media/tuners/fc0012.c b/drivers/media/tuners/fc0012.c
index f4d0e79..d74e920 100644
--- a/drivers/media/tuners/fc0012.c
+++ b/drivers/media/tuners/fc0012.c
@@ -139,7 +139,7 @@ static int fc0012_set_params(struct dvb_frontend *fe)
unsigned char reg[7], am, pm, multi, tmp;
unsigned long f_vco;
unsigned short xtal_freq_khz_2, xin, xdiv;
-   int vco_select = false;
+   bool vco_select = false;
 
if (fe->callback) {
ret = fe->callback(priv->i2c, DVB_FRONTEND_COMPONENT_TUNER,
diff --git a/drivers/media/tuners/fc0013.c b/drivers/media/tuners/fc0013.c
index bd8f0f1..b416231 100644
--- a/drivers/media/tuners/fc0013.c
+++ b/drivers/media/tuners/fc0013.c
@@ -233,7 +233,7 @@ static int fc0013_set_params(struct dvb_frontend *fe)
unsigned char reg[7], am, pm, multi, tmp;
unsigned long f_vco;
unsigned short xtal_freq_khz_2, xin, xdiv;
-   int vco_select = false;
+   bool vco_select = false;
 
if (fe->callback) {
ret = fe->callback(priv->i2c, DVB_FRONTEND_COMPONENT_TUNER,
-- 
1.8.3.1

--
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


[PATCH 06/19] media: Change variable type to bool

2013-09-21 Thread Peter Senna Tschudin
The variable frame_ready is only assigned the values true and false.
Change its type to bool.

The simplified semantic patch that find this problem is as
follows (http://coccinelle.lip6.fr/):

@exists@
type T;
identifier b;
@@
- T
+ bool
  b = ...;
  ... when any
  b = \(true\|false\)

Signed-off-by: Peter Senna Tschudin 
---

This fails at checkpatch due initializing static variable to false.
I haven't changed the assignment.

 drivers/media/usb/cpia2/cpia2_usb.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/media/usb/cpia2/cpia2_usb.c 
b/drivers/media/usb/cpia2/cpia2_usb.c
index be17192..351a78a 100644
--- a/drivers/media/usb/cpia2/cpia2_usb.c
+++ b/drivers/media/usb/cpia2/cpia2_usb.c
@@ -209,7 +209,7 @@ static void cpia2_usb_complete(struct urb *urb)
 {
int i;
unsigned char *cdata;
-   static int frame_ready = false;
+   static bool frame_ready = false;
struct camera_data *cam = (struct camera_data *) urb->context;
 
if (urb->status!=0) {
-- 
1.8.3.1

--
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 24/51] DMA-API: dma: pl330: add dma_set_mask_and_coherent() call

2013-09-21 Thread Russell King - ARM Linux
On Fri, Sep 20, 2013 at 07:26:27PM +0200, Heiko Stübner wrote:
> Am Donnerstag, 19. September 2013, 23:49:01 schrieb Russell King:
> > The DMA API requires drivers to call the appropriate dma_set_mask()
> > functions before doing any DMA mapping.  Add this required call to
> > the AMBA PL08x driver.
>   ^--- copy and paste error - should of course be PL330

Fixed, thanks.
--
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


[PATCH] driver: firewire: remove unnecessary #if 0 code

2013-09-21 Thread Govindarajulu Varadarajan
Signed-off-by: Govindarajulu Varadarajan 
---
 drivers/media/firewire/firedtv-avc.c | 41 
 1 file changed, 41 deletions(-)

diff --git a/drivers/media/firewire/firedtv-avc.c 
b/drivers/media/firewire/firedtv-avc.c
index d1a1a13..786e273 100644
--- a/drivers/media/firewire/firedtv-avc.c
+++ b/drivers/media/firewire/firedtv-avc.c
@@ -912,37 +912,6 @@ void avc_remote_ctrl_work(struct work_struct *work)
avc_register_remote_control(fdtv);
 }
 
-#if 0 /* FIXME: unused */
-int avc_tuner_host2ca(struct firedtv *fdtv)
-{
-   struct avc_command_frame *c = (void *)fdtv->avc_data;
-   int ret;
-
-   mutex_lock(&fdtv->avc_mutex);
-
-   c->ctype   = AVC_CTYPE_CONTROL;
-   c->subunit = AVC_SUBUNIT_TYPE_TUNER | fdtv->subunit;
-   c->opcode  = AVC_OPCODE_VENDOR;
-
-   c->operand[0] = SFE_VENDOR_DE_COMPANYID_0;
-   c->operand[1] = SFE_VENDOR_DE_COMPANYID_1;
-   c->operand[2] = SFE_VENDOR_DE_COMPANYID_2;
-   c->operand[3] = SFE_VENDOR_OPCODE_HOST2CA;
-   c->operand[4] = 0; /* slot */
-   c->operand[5] = SFE_VENDOR_TAG_CA_APPLICATION_INFO; /* ca tag */
-   clear_operands(c, 6, 8);
-
-   fdtv->avc_data_length = 12;
-   ret = avc_write(fdtv);
-
-   /* FIXME: check response code? */
-
-   mutex_unlock(&fdtv->avc_mutex);
-
-   return ret;
-}
-#endif
-
 static int get_ca_object_pos(struct avc_response_frame *r)
 {
int length = 1;
@@ -955,16 +924,6 @@ static int get_ca_object_pos(struct avc_response_frame *r)
 
 static int get_ca_object_length(struct avc_response_frame *r)
 {
-#if 0 /* FIXME: unused */
-   int size = 0;
-   int i;
-
-   if (r->operand[7] & 0x80)
-   for (i = 0; i < (r->operand[7] & 0x7f); i++) {
-   size <<= 8;
-   size += r->operand[8 + i];
-   }
-#endif
return r->operand[7];
 }
 
-- 
1.8.4

--
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


[PATCH v5 0/4] media: s5p-tv: clean-up and fixes

2013-09-21 Thread Mateusz Krawczuk
This patch series add restoring previous vpll rate after driver offs stream 
or recives error.
It also replace mxr_info, mxr_dbg, mxr_warn and mxr_err macro 
by generic solution.

Mateusz Krawczuk (4):
  media: s5p-tv: Replace mxr_ macro by default dev_
  media: s5p-tv: Restore vpll clock rate
  media: s5p-tv: Fix sdo driver to work with CCF
  media: s5p-tv: Fix mixer driver to work with CCF

 drivers/media/platform/s5p-tv/mixer.h   |  12 ---
 drivers/media/platform/s5p-tv/mixer_drv.c   |  81 ---
 drivers/media/platform/s5p-tv/mixer_grp_layer.c |   2 +-
 drivers/media/platform/s5p-tv/mixer_reg.c   |   6 +-
 drivers/media/platform/s5p-tv/mixer_video.c | 100 
 drivers/media/platform/s5p-tv/mixer_vp_layer.c  |   2 +-
 drivers/media/platform/s5p-tv/sdo_drv.c |  39 +++--
 7 files changed, 137 insertions(+), 105 deletions(-)

-- 
1.8.1.2

--
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


[PATCH v5 3/4] media: s5p-tv: Fix sdo driver to work with CCF

2013-09-21 Thread Mateusz Krawczuk
Replace clk_enable by clock_enable_prepare and clk_disable with 
clk_disable_unprepare.
Clock prepare is required by Clock Common Framework, and old clock driver 
didn`t support it.
Without it Common Clock Framework prints a warning.

Signed-off-by: Mateusz Krawczuk 
Signed-off-by: Kyungmin Park 
---
 drivers/media/platform/s5p-tv/sdo_drv.c | 20 
 1 file changed, 12 insertions(+), 8 deletions(-)

diff --git a/drivers/media/platform/s5p-tv/sdo_drv.c 
b/drivers/media/platform/s5p-tv/sdo_drv.c
index e49ac6c..17272e1 100644
--- a/drivers/media/platform/s5p-tv/sdo_drv.c
+++ b/drivers/media/platform/s5p-tv/sdo_drv.c
@@ -208,9 +208,9 @@ static int sdo_streamon(struct sdo_device *sdev)
clk_get_rate(sdev->fout_vpll));
/* enable clock in SDO */
sdo_write_mask(sdev, SDO_CLKCON, ~0, SDO_TVOUT_CLOCK_ON);
-   ret = clk_enable(sdev->dacphy);
+   ret = clk_prepare_enable(sdev->dacphy);
if (ret < 0) {
-   dev_err(sdev->dev, "clk_enable(dacphy) failed\n");
+   dev_err(sdev->dev, "clk_prepare_enable(dacphy) failed\n");
goto fail;
}
/* enable DAC */
@@ -229,7 +229,7 @@ static int sdo_streamoff(struct sdo_device *sdev)
int tries;
 
sdo_write_mask(sdev, SDO_DAC, 0, SDO_POWER_ON_DAC);
-   clk_disable(sdev->dacphy);
+   clk_disable_unprepare(sdev->dacphy);
sdo_write_mask(sdev, SDO_CLKCON, 0, SDO_TVOUT_CLOCK_ON);
for (tries = 100; tries; --tries) {
if (sdo_read(sdev, SDO_CLKCON) & SDO_TVOUT_CLOCK_READY)
@@ -273,7 +273,7 @@ static int sdo_runtime_suspend(struct device *dev)
dev_info(dev, "suspend\n");
regulator_disable(sdev->vdet);
regulator_disable(sdev->vdac);
-   clk_disable(sdev->sclk_dac);
+   clk_disable_unprepare(sdev->sclk_dac);
return 0;
 }
 
@@ -285,7 +285,7 @@ static int sdo_runtime_resume(struct device *dev)
 
dev_info(dev, "resume\n");
 
-   ret = clk_enable(sdev->sclk_dac);
+   ret = clk_prepare_enable(sdev->sclk_dac);
if (ret < 0)
return ret;
 
@@ -318,7 +318,7 @@ static int sdo_runtime_resume(struct device *dev)
 vdac_r_dis:
regulator_disable(sdev->vdac);
 dac_clk_dis:
-   clk_disable(sdev->sclk_dac);
+   clk_disable_unprepare(sdev->sclk_dac);
return ret;
 }
 
@@ -424,7 +424,11 @@ static int sdo_probe(struct platform_device *pdev)
}
 
/* enable gate for dac clock, because mixer uses it */
-   clk_enable(sdev->dac);
+   ret = clk_prepare_enable(sdev->dac);
+   if (ret < 0) {
+   dev_err(dev, "clk_prepare_enable(dac) failed\n");
+   goto fail_fout_vpll;
+   }
 
/* configure power management */
pm_runtime_enable(dev);
@@ -463,7 +467,7 @@ static int sdo_remove(struct platform_device *pdev)
struct sdo_device *sdev = sd_to_sdev(sd);
 
pm_runtime_disable(&pdev->dev);
-   clk_disable(sdev->dac);
+   clk_disable_unprepare(sdev->dac);
clk_put(sdev->fout_vpll);
clk_put(sdev->dacphy);
clk_put(sdev->dac);
-- 
1.8.1.2

--
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


[PATCH v5 1/4] media: s5p-tv: Replace mxr_ macro by default dev_

2013-09-21 Thread Mateusz Krawczuk
Replace mxr_dbg, mxr_info and mxr_warn by generic solution.

Signed-off-by: Mateusz Krawczuk 
Signed-off-by: Kyungmin Park 
---
 drivers/media/platform/s5p-tv/mixer.h   |  12 ---
 drivers/media/platform/s5p-tv/mixer_drv.c   |  47 ++-
 drivers/media/platform/s5p-tv/mixer_grp_layer.c |   2 +-
 drivers/media/platform/s5p-tv/mixer_reg.c   |   6 +-
 drivers/media/platform/s5p-tv/mixer_video.c | 100 
 drivers/media/platform/s5p-tv/mixer_vp_layer.c  |   2 +-
 6 files changed, 78 insertions(+), 91 deletions(-)

diff --git a/drivers/media/platform/s5p-tv/mixer.h 
b/drivers/media/platform/s5p-tv/mixer.h
index 04e6490..c054106 100644
--- a/drivers/media/platform/s5p-tv/mixer.h
+++ b/drivers/media/platform/s5p-tv/mixer.h
@@ -327,18 +327,6 @@ void mxr_streamer_put(struct mxr_device *mdev);
 void mxr_get_mbus_fmt(struct mxr_device *mdev,
struct v4l2_mbus_framefmt *mbus_fmt);
 
-/* Debug */
-
-#define mxr_err(mdev, fmt, ...)  dev_err(mdev->dev, fmt, ##__VA_ARGS__)
-#define mxr_warn(mdev, fmt, ...) dev_warn(mdev->dev, fmt, ##__VA_ARGS__)
-#define mxr_info(mdev, fmt, ...) dev_info(mdev->dev, fmt, ##__VA_ARGS__)
-
-#ifdef CONFIG_VIDEO_SAMSUNG_S5P_MIXER_DEBUG
-   #define mxr_dbg(mdev, fmt, ...)  dev_dbg(mdev->dev, fmt, ##__VA_ARGS__)
-#else
-   #define mxr_dbg(mdev, fmt, ...)  do { (void) mdev; } while (0)
-#endif
-
 /* accessing Mixer's and Video Processor's registers */
 
 void mxr_vsync_set_update(struct mxr_device *mdev, int en);
diff --git a/drivers/media/platform/s5p-tv/mixer_drv.c 
b/drivers/media/platform/s5p-tv/mixer_drv.c
index 51805a5..8ce7c3e 100644
--- a/drivers/media/platform/s5p-tv/mixer_drv.c
+++ b/drivers/media/platform/s5p-tv/mixer_drv.c
@@ -59,7 +59,7 @@ void mxr_streamer_get(struct mxr_device *mdev)
 {
mutex_lock(&mdev->mutex);
++mdev->n_streamer;
-   mxr_dbg(mdev, "%s(%d)\n", __func__, mdev->n_streamer);
+   dev_dbg(mdev->dev, "%s(%d)\n", __func__, mdev->n_streamer);
if (mdev->n_streamer == 1) {
struct v4l2_subdev *sd = to_outsd(mdev);
struct v4l2_mbus_framefmt mbus_fmt;
@@ -91,7 +91,7 @@ void mxr_streamer_put(struct mxr_device *mdev)
 {
mutex_lock(&mdev->mutex);
--mdev->n_streamer;
-   mxr_dbg(mdev, "%s(%d)\n", __func__, mdev->n_streamer);
+   dev_dbg(mdev->dev, "%s(%d)\n", __func__, mdev->n_streamer);
if (mdev->n_streamer == 0) {
int ret;
struct v4l2_subdev *sd = to_outsd(mdev);
@@ -113,7 +113,7 @@ void mxr_output_get(struct mxr_device *mdev)
 {
mutex_lock(&mdev->mutex);
++mdev->n_output;
-   mxr_dbg(mdev, "%s(%d)\n", __func__, mdev->n_output);
+   dev_dbg(mdev->dev, "%s(%d)\n", __func__, mdev->n_output);
/* turn on auxiliary driver */
if (mdev->n_output == 1)
v4l2_subdev_call(to_outsd(mdev), core, s_power, 1);
@@ -124,7 +124,7 @@ void mxr_output_put(struct mxr_device *mdev)
 {
mutex_lock(&mdev->mutex);
--mdev->n_output;
-   mxr_dbg(mdev, "%s(%d)\n", __func__, mdev->n_output);
+   dev_dbg(mdev->dev, "%s(%d)\n", __func__, mdev->n_output);
/* turn on auxiliary driver */
if (mdev->n_output == 0)
v4l2_subdev_call(to_outsd(mdev), core, s_power, 0);
@@ -159,42 +159,42 @@ static int mxr_acquire_plat_resources(struct mxr_device 
*mdev,
 
res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "mxr");
if (res == NULL) {
-   mxr_err(mdev, "get memory resource failed.\n");
+   dev_err(mdev->dev, "get memory resource failed.\n");
ret = -ENXIO;
goto fail;
}
 
mdev->res.mxr_regs = ioremap(res->start, resource_size(res));
if (mdev->res.mxr_regs == NULL) {
-   mxr_err(mdev, "register mapping failed.\n");
+   dev_err(mdev->dev, "register mapping failed.\n");
ret = -ENXIO;
goto fail;
}
 
res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "vp");
if (res == NULL) {
-   mxr_err(mdev, "get memory resource failed.\n");
+   dev_err(mdev->dev, "get memory resource failed.\n");
ret = -ENXIO;
goto fail_mxr_regs;
}
 
mdev->res.vp_regs = ioremap(res->start, resource_size(res));
if (mdev->res.vp_regs == NULL) {
-   mxr_err(mdev, "register mapping failed.\n");
+   dev_err(mdev->dev, "register mapping failed.\n");
ret = -ENXIO;
goto fail_mxr_regs;
}
 
res = platform_get_resource_byname(pdev, IORESOURCE_IRQ, "irq");
if (res == NULL) {
-   mxr_err(mdev, "get interrupt resource failed.\n");
+   dev_err(mdev->dev, "get interrupt resource failed.\n");
ret = -ENXIO;
goto fail_vp_regs;
}
 
ret = request_irq(res->start, mxr_irq_hand

[PATCH v5 4/4] media: s5p-tv: Fix mixer driver to work with CCF

2013-09-21 Thread Mateusz Krawczuk
Replace clk_enable by clock_enable_prepare and clk_disable with 
clk_disable_unprepare.
Clock prepare is required by Clock Common Framework, and old clock driver 
didn`t support it.
Without it Common Clock Framework prints a warning.

Signed-off-by: Mateusz Krawczuk 
Signed-off-by: Kyungmin Park 
---
 drivers/media/platform/s5p-tv/mixer_drv.c | 34 +--
 1 file changed, 28 insertions(+), 6 deletions(-)

diff --git a/drivers/media/platform/s5p-tv/mixer_drv.c 
b/drivers/media/platform/s5p-tv/mixer_drv.c
index 8ce7c3e..7eea286 100644
--- a/drivers/media/platform/s5p-tv/mixer_drv.c
+++ b/drivers/media/platform/s5p-tv/mixer_drv.c
@@ -347,19 +347,41 @@ static int mxr_runtime_resume(struct device *dev)
 {
struct mxr_device *mdev = to_mdev(dev);
struct mxr_resources *res = &mdev->res;
+   int ret;
 
dev_dbg(mdev->dev, "resume - start\n");
mutex_lock(&mdev->mutex);
/* turn clocks on */
-   clk_enable(res->mixer);
-   clk_enable(res->vp);
-   clk_enable(res->sclk_mixer);
+   ret = clk_prepare_enable(res->mixer);
+   if (ret < 0) {
+   dev_err(mdev->dev, "clk_prepare_enable(mixer) failed\n");
+   goto fail;
+   }
+   ret = clk_prepare_enable(res->vp);
+   if (ret < 0) {
+   dev_err(mdev->dev, "clk_prepare_enable(vp) failed\n");
+   goto fail_mixer;
+   }
+   ret = clk_prepare_enable(res->sclk_mixer);
+   if (ret < 0) {
+   dev_err(mdev->dev, "clk_prepare_enable(sclk_mixer) failed\n");
+   goto fail_vp;
+   }
/* apply default configuration */
mxr_reg_reset(mdev);
dev_dbg(mdev->dev, "resume - finished\n");
 
mutex_unlock(&mdev->mutex);
return 0;
+
+fail_vp:
+   clk_disable_unprepare(res->vp);
+fail_mixer:
+   clk_disable_unprepare(res->mixer);
+fail:
+   mutex_unlock(&mdev->mutex);
+   dev_err(mdev->dev, "resume failed\n");
+   return ret;
 }
 
 static int mxr_runtime_suspend(struct device *dev)
@@ -369,9 +391,9 @@ static int mxr_runtime_suspend(struct device *dev)
dev_dbg(mdev->dev, "suspend - start\n");
mutex_lock(&mdev->mutex);
/* turn clocks off */
-   clk_disable(res->sclk_mixer);
-   clk_disable(res->vp);
-   clk_disable(res->mixer);
+   clk_disable_unprepare(res->sclk_mixer);
+   clk_disable_unprepare(res->vp);
+   clk_disable_unprepare(res->mixer);
mutex_unlock(&mdev->mutex);
dev_dbg(mdev->dev, "suspend - finished\n");
return 0;
-- 
1.8.1.2

--
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


[PATCH v5 2/4] media: s5p-tv: Restore vpll clock rate

2013-09-21 Thread Mateusz Krawczuk
Restore vpll clock rate if start stream fail or stream is off.

Signed-off-by: Mateusz Krawczuk 
Signed-off-by: Kyungmin Park 
---
 drivers/media/platform/s5p-tv/sdo_drv.c | 23 +--
 1 file changed, 21 insertions(+), 2 deletions(-)

diff --git a/drivers/media/platform/s5p-tv/sdo_drv.c 
b/drivers/media/platform/s5p-tv/sdo_drv.c
index 0afa90f..e49ac6c 100644
--- a/drivers/media/platform/s5p-tv/sdo_drv.c
+++ b/drivers/media/platform/s5p-tv/sdo_drv.c
@@ -55,6 +55,8 @@ struct sdo_device {
struct clk *dacphy;
/** clock for control of VPLL */
struct clk *fout_vpll;
+   /** vpll rate before sdo stream was on */
+   unsigned long vpll_rate;
/** regulator for SDO IP power */
struct regulator *vdac;
/** regulator for SDO plug detection */
@@ -193,17 +195,33 @@ static int sdo_s_power(struct v4l2_subdev *sd, int on)
 
 static int sdo_streamon(struct sdo_device *sdev)
 {
+   int ret;
+
/* set proper clock for Timing Generator */
-   clk_set_rate(sdev->fout_vpll, 5400);
+   sdev->vpll_rate = clk_get_rate(sdev->fout_vpll);
+   ret = clk_set_rate(sdev->fout_vpll, 5400);
+   if (ret < 0) {
+   dev_err(sdev->dev, "Failed to set vpll rate\n");
+   return ret;
+   }
dev_info(sdev->dev, "fout_vpll.rate = %lu\n",
clk_get_rate(sdev->fout_vpll));
/* enable clock in SDO */
sdo_write_mask(sdev, SDO_CLKCON, ~0, SDO_TVOUT_CLOCK_ON);
-   clk_enable(sdev->dacphy);
+   ret = clk_enable(sdev->dacphy);
+   if (ret < 0) {
+   dev_err(sdev->dev, "clk_enable(dacphy) failed\n");
+   goto fail;
+   }
/* enable DAC */
sdo_write_mask(sdev, SDO_DAC, ~0, SDO_POWER_ON_DAC);
sdo_reg_debug(sdev);
return 0;
+   
+fail:
+   sdo_write_mask(sdev, SDO_CLKCON, 0, SDO_TVOUT_CLOCK_ON);
+   clk_set_rate(sdev->fout_vpll, sdev->vpll_rate);
+   return ret;
 }
 
 static int sdo_streamoff(struct sdo_device *sdev)
@@ -220,6 +238,7 @@ static int sdo_streamoff(struct sdo_device *sdev)
}
if (tries == 0)
dev_err(sdev->dev, "failed to stop streaming\n");
+   clk_set_rate(sdev->fout_vpll, sdev->vpll_rate);
return tries ? 0 : -EIO;
 }
 
-- 
1.8.1.2

--
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


поспособствует Вам неизменно пребывать приятной любой час, круглый год

2013-09-21 Thread tungvi
Наиболее уместный лиф http://jdem.cz/69rp3

--
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