Re: [PATCH] tuner-core: return tuner name with ioctl VIDIOC_G_TUNER

2013-01-23 Thread Hans Verkuil
On Wed January 23 2013 16:57:40 Frank Schäfer wrote:
 Am 23.01.2013 08:35, schrieb Hans Verkuil:
  On Tue January 22 2013 20:46:21 Frank Schäfer wrote:
  tuner_g_tuner() is supposed to fill struct v4l2_tuner passed by ioctl
  VIDIOC_G_TUNER, but misses setting the name field.
 
  Signed-off-by: Frank Schäfer fschaefer@googlemail.com
  Cc: sta...@kernel.org
  ---
   drivers/media/v4l2-core/tuner-core.c |1 +
   1 Datei geändert, 1 Zeile hinzugefügt(+)
 
  diff --git a/drivers/media/v4l2-core/tuner-core.c 
  b/drivers/media/v4l2-core/tuner-core.c
  index b5a819a..95a47cf 100644
  --- a/drivers/media/v4l2-core/tuner-core.c
  +++ b/drivers/media/v4l2-core/tuner-core.c
  @@ -1187,6 +1187,7 @@ static int tuner_g_tuner(struct v4l2_subdev *sd, 
  struct v4l2_tuner *vt)
   
 if (check_mode(t, vt-type) == -EINVAL)
 return 0;
  +  strcpy(vt-name, t-name);
 if (vt-type == t-mode  analog_ops-get_afc)
 vt-afc = analog_ops-get_afc(t-fe);
 if (analog_ops-has_signal)
 
  Nacked-by: Hans Verkuil hans.verk...@cisco.com
 
  And the reason is that the tuner field should be filled in by the bridge
  driver. That's because you may have multiple tuners and it's only the
  bridge driver that will know which tuner is which and what name to give
  it.
 
 Hmmm... I don't understand.
 Isn't his a per-tuner (subdev) operation ? If a device has multiple
 tuners (subdevs) it is called for each of them.
 So how can the returned tuner name be wrong and why should the bridge
 driver know better than the subdevice itself which name is correct ?

The name that's filled in is exposed to userspace, so it should be something
meaningful and not some internal name. In the case of multiple tuners that
means that the name should be something like 'TV 1' or 'TV 2', where the name
matches a name (label) of a tuner input of the product. There is no way a
subdev driver can know that, only the bridge driver knows what product it is
and thus what the labels on the inputs are.

It is somewhat theoretical since we don't have any multi-tuner devices (yet),
so for now names like 'Radio' and 'TV' are sufficient, but we made the same
mistake (letting subdevs set the name) in the past for regular video/audio
inputs and outputs and it took a lot of work to fix that.

The golden rule is that sub-devices should not assume anything about how they
are hooked up in the actual product.

Regards,

Hans
--
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 RFC v3 06/14] s5p-fimc: Change platform subdevs registration method

2013-01-23 Thread Sylwester Nawrocki
The previous method of registering platform entities into the main
driver using driver_find() and then iterating over devices bound to
a driver was racy and is being removed here. Nothing was preventing
module from unloading during a call to try_module_get(driver-owner).
Instead, we look up a device first and then check for its driver while
holding device lock.

The platform sub-devices are looked up and registered to the top
level driver. When any sub-device is not yet initialized and ready
the main driver's probe() will be deferred.

Signed-off-by: Sylwester Nawrocki s.nawro...@samsung.com
Signed-off-by: Kyungmin Park kyungmin.p...@samsung.com
---
 drivers/media/platform/s5p-fimc/fimc-mdevice.c |  203 +---
 1 file changed, 108 insertions(+), 95 deletions(-)

diff --git a/drivers/media/platform/s5p-fimc/fimc-mdevice.c 
b/drivers/media/platform/s5p-fimc/fimc-mdevice.c
index 501ac48..abf6000 100644
--- a/drivers/media/platform/s5p-fimc/fimc-mdevice.c
+++ b/drivers/media/platform/s5p-fimc/fimc-mdevice.c
@@ -1,8 +1,8 @@
 /*
  * S5P/EXYNOS4 SoC series camera host interface media device driver
  *
- * Copyright (C) 2011 Samsung Electronics Co., Ltd.
- * Contact: Sylwester Nawrocki, s.nawro...@samsung.com
+ * Copyright (C) 2011 - 2012 Samsung Electronics Co., Ltd.
+ * Sylwester Nawrocki s.nawro...@samsung.com
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published
@@ -312,138 +312,149 @@ static int fimc_md_register_sensor_entities(struct 
fimc_md *fmd)
 }
 
 /*
- * MIPI CSIS and FIMC platform devices registration.
+ * MIPI-CSIS, FIMC and FIMC-LITE platform devices registration.
  */
-static int fimc_register_callback(struct device *dev, void *p)
+
+static int register_fimc_lite_entity(struct fimc_md *fmd,
+struct fimc_lite *fimc_lite)
 {
-   struct fimc_dev *fimc = dev_get_drvdata(dev);
struct v4l2_subdev *sd;
-   struct fimc_md *fmd = p;
int ret;
 
-   if (fimc == NULL || fimc-id = FIMC_MAX_DEVS)
-   return 0;
+   if (WARN_ON(fimc_lite-index = FIMC_LITE_MAX_DEVS ||
+   fmd-fimc_lite[fimc_lite-index]))
+   return -EBUSY;
 
-   sd = fimc-vid_cap.subdev;
-   sd-grp_id = GRP_ID_FIMC;
+   sd = fimc_lite-subdev;
+   sd-grp_id = GRP_ID_FLITE;
v4l2_set_subdev_hostdata(sd, (void *)fimc_pipeline_ops);
 
ret = v4l2_device_register_subdev(fmd-v4l2_dev, sd);
-   if (ret) {
-   v4l2_err(fmd-v4l2_dev, Failed to register FIMC.%d (%d)\n,
-fimc-id, ret);
-   return ret;
-   }
-
-   fmd-fimc[fimc-id] = fimc;
-   return 0;
+   if (!ret)
+   fmd-fimc_lite[fimc_lite-index] = fimc_lite;
+   else
+   v4l2_err(fmd-v4l2_dev, Failed to register FIMC.LITE%d\n,
+fimc_lite-index);
+   return ret;
 }
 
-static int fimc_lite_register_callback(struct device *dev, void *p)
+static int register_fimc_entity(struct fimc_md *fmd, struct fimc_dev *fimc)
 {
-   struct fimc_lite *fimc = dev_get_drvdata(dev);
-   struct fimc_md *fmd = p;
+   struct v4l2_subdev *sd;
int ret;
 
-   if (fimc == NULL || fimc-index = FIMC_LITE_MAX_DEVS)
-   return 0;
+   if (WARN_ON(fimc-id = FIMC_MAX_DEVS || fmd-fimc[fimc-id]))
+   return -EBUSY;
 
-   fimc-subdev.grp_id = GRP_ID_FLITE;
-   v4l2_set_subdev_hostdata(fimc-subdev, (void *)fimc_pipeline_ops);
+   sd = fimc-vid_cap.subdev;
+   sd-grp_id = GRP_ID_FIMC;
+   v4l2_set_subdev_hostdata(sd, (void *)fimc_pipeline_ops);
 
-   ret = v4l2_device_register_subdev(fmd-v4l2_dev, fimc-subdev);
-   if (ret) {
-   v4l2_err(fmd-v4l2_dev,
-Failed to register FIMC-LITE.%d (%d)\n,
-fimc-index, ret);
-   return ret;
+   ret = v4l2_device_register_subdev(fmd-v4l2_dev, sd);
+   if (!ret) {
+   fmd-fimc[fimc-id] = fimc;
+   fimc-vid_cap.user_subdev_api = fmd-user_subdev_api;
+   } else {
+   v4l2_err(fmd-v4l2_dev, Failed to register FIMC.%d (%d)\n,
+fimc-id, ret);
}
-
-   fmd-fimc_lite[fimc-index] = fimc;
-   return 0;
+   return ret;
 }
 
-static int csis_register_callback(struct device *dev, void *p)
+static int register_csis_entity(struct fimc_md *fmd,
+   struct platform_device *pdev,
+   struct v4l2_subdev *sd)
 {
-   struct v4l2_subdev *sd = dev_get_drvdata(dev);
-   struct platform_device *pdev;
-   struct fimc_md *fmd = p;
+   struct device_node *node = pdev-dev.of_node;
int id, ret;
 
-   if (!sd)
-   return 0;
-   pdev = v4l2_get_subdevdata(sd);
-   if (!pdev || pdev-id  0 || pdev-id = CSIS_MAX_ENTITIES)
+   id = 

[GIT PULL for v3.8-rc5] media fixes

2013-01-23 Thread Mauro Carvalho Chehab
Hi Linus,

Please pull from:
  git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media 
v4l_for_linus

For some fixes:
- gspca: add needed delay for I2C traffic for sonixb/sonixj cameras;
- gspca: add one missing Kinect USB ID;
- usbvideo: some regression fixes;
- omap3isp: fix some build issues;
- videobuf2: fix video output handling;
- exynos s5p/m5mols: a few regression fixes.

Thank you!
Mauro

-
The following changes since commit 9931faca02c604c22335f5a935a501bb2ace6e20:

  Linux 3.8-rc3 (2013-01-09 18:59:55 -0800)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media 
v4l_for_linus

for you to fetch changes up to 68d6f84ba0c47e658beff3a4bf0c43acee4b4690:

  [media] uvcvideo: Set error_idx properly for S_EXT_CTRLS failures (2013-01-11 
13:30:27 -0200)


Hans de Goede (2):
  [media] gspca_sonixb: Properly wait between i2c writes
  [media] gspca_sonixj: Add a small delay after i2c_w1

Jacob Schloss (1):
  [media] gspca_kinect: add Kinect for Windows USB id

Kamil Debski (1):
  [media] s5p-mfc: Fix interrupt error handling routine

Laurent Pinchart (6):
  [media] [FOR,v3.8] omap3isp: Don't include deleted OMAP plat/ header files
  [media] v4l: vb2: Set data_offset to 0 for single-plane output buffers
  [media] omap3isp: Don't include plat/cpu.h
  [media] uvcvideo: Return -EACCES when trying to set a read-only control
  [media] uvcvideo: Cleanup leftovers of partial revert
  [media] uvcvideo: Set error_idx properly for S_EXT_CTRLS failures

Mauro Carvalho Chehab (1):
  Merge tag 'v3.8-rc3' into v4l_for_linus

Sylwester Nawrocki (2):
  [media] m5mols: Fix typo in get_fmt callback
  [media] s5p-fimc: Fix return value of 
__fimc_md_create_flite_source_links()

 drivers/media/i2c/m5mols/m5mols_core.c |  2 +-
 drivers/media/platform/omap3isp/ispvideo.c |  3 -
 drivers/media/platform/s5p-fimc/fimc-mdevice.c |  2 +-
 drivers/media/platform/s5p-mfc/s5p_mfc.c   | 88 +++---
 drivers/media/usb/gspca/kinect.c   |  1 +
 drivers/media/usb/gspca/sonixb.c   | 13 ++--
 drivers/media/usb/gspca/sonixj.c   |  1 +
 drivers/media/usb/uvc/uvc_ctrl.c   |  4 +-
 drivers/media/usb/uvc/uvc_v4l2.c   |  6 +-
 drivers/media/v4l2-core/videobuf2-core.c   |  4 +-
 10 files changed, 57 insertions(+), 67 deletions(-)

--
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] Add lock to af9035 driver for dual mode

2013-01-23 Thread Antti Palosaari

On 01/24/2013 12:34 AM, Jose Alberto Reguero wrote:

Add lock to af9035 driver for dual mode.


May I ask why you do that?

regards
Antti



Signed-off-by: Jose Alberto Reguero jaregu...@telefonica.net


diff -upr linux/drivers/media/usb/dvb-usb-v2/af9035.c
linux.new/drivers/media/usb/dvb-usb-v2/af9035.c
--- linux/drivers/media/usb/dvb-usb-v2/af9035.c 2013-01-07 05:45:57.0
+0100
+++ linux.new/drivers/media/usb/dvb-usb-v2/af9035.c 2013-01-23
23:18:18.544788327 +0100
@@ -824,6 +824,104 @@ static int af9035_get_adapter_count(stru
return state-dual_mode + 1;
  }

+static int af9035_lock_set_frontend(struct dvb_frontend* fe)
+{
+   int result;
+   struct dvb_usb_adapter *adap = fe_to_adap(fe);
+   struct state *state = adap_to_priv(adap);
+
+   if (mutex_lock_interruptible(state-fe_mutex))
+   return -EAGAIN;
+
+   result = state-fe_ops[adap-id].set_frontend(fe);
+   mutex_unlock(state-fe_mutex);
+   return result;
+}
+
+static int af9035_lock_get_frontend(struct dvb_frontend* fe)
+{
+   int result;
+   struct dvb_usb_adapter *adap = fe_to_adap(fe);
+   struct state *state = adap_to_priv(adap);
+
+   if (mutex_lock_interruptible(state-fe_mutex))
+   return -EAGAIN;
+
+   result = state-fe_ops[adap-id].get_frontend(fe);
+   mutex_unlock(state-fe_mutex);
+   return result;
+}
+
+static int af9035_lock_read_status(struct dvb_frontend* fe, fe_status_t*
status)
+{
+   int result;
+   struct dvb_usb_adapter *adap = fe_to_adap(fe);
+   struct state *state = adap_to_priv(adap);
+
+   if (mutex_lock_interruptible(state-fe_mutex))
+   return -EAGAIN;
+
+   result = state-fe_ops[adap-id].read_status(fe, status);
+   mutex_unlock(state-fe_mutex);
+   return result;
+}
+
+static int af9035_lock_read_ber(struct dvb_frontend* fe, u32* ber)
+{
+   int result;
+   struct dvb_usb_adapter *adap = fe_to_adap(fe);
+   struct state *state = adap_to_priv(adap);
+
+   if (mutex_lock_interruptible(state-fe_mutex))
+   return -EAGAIN;
+
+   result = state-fe_ops[adap-id].read_ber(fe, ber);
+   mutex_unlock(state-fe_mutex);
+   return result;
+}
+
+static int af9035_lock_read_signal_strength(struct dvb_frontend* fe, u16*
strength)
+{
+   int result;
+   struct dvb_usb_adapter *adap = fe_to_adap(fe);
+   struct state *state = adap_to_priv(adap);
+
+   if (mutex_lock_interruptible(state-fe_mutex))
+   return -EAGAIN;
+
+   result = state-fe_ops[adap-id].read_signal_strength(fe, strength);
+   mutex_unlock(state-fe_mutex);
+   return result;
+}
+
+static int af9035_lock_read_snr(struct dvb_frontend* fe, u16* snr)
+{
+   int result;
+   struct dvb_usb_adapter *adap = fe_to_adap(fe);
+   struct state *state = adap_to_priv(adap);
+
+   if (mutex_lock_interruptible(state-fe_mutex))
+   return -EAGAIN;
+
+   result = state-fe_ops[adap-id].read_snr(fe, snr);
+   mutex_unlock(state-fe_mutex);
+   return result;
+}
+
+static int af9035_lock_read_ucblocks(struct dvb_frontend* fe, u32* ucblocks)
+{
+   int result;
+   struct dvb_usb_adapter *adap = fe_to_adap(fe);
+   struct state *state = adap_to_priv(adap);
+
+   if (mutex_lock_interruptible(state-fe_mutex))
+   return -EAGAIN;
+
+   result = state-fe_ops[adap-id].read_ucblocks(fe, ucblocks);
+   mutex_unlock(state-fe_mutex);
+   return result;
+}
+
  static int af9035_frontend_attach(struct dvb_usb_adapter *adap)
  {
struct state *state = adap_to_priv(adap);
@@ -862,6 +960,22 @@ static int af9035_frontend_attach(struct
adap-fe[0]-ops.i2c_gate_ctrl = NULL;
adap-fe[0]-callback = af9035_frontend_callback;

+   memcpy(state-fe_ops[adap-id], adap-fe[0]-ops, sizeof(struct
dvb_frontend_ops));
+   if (adap-fe[0]-ops.set_frontend)
+   adap-fe[0]-ops.set_frontend = af9035_lock_set_frontend;
+   if (adap-fe[0]-ops.get_frontend)
+   adap-fe[0]-ops.get_frontend = af9035_lock_get_frontend;
+   if (adap-fe[0]-ops.read_status)
+   adap-fe[0]-ops.read_status = af9035_lock_read_status;
+   if (adap-fe[0]-ops.read_ber)
+   adap-fe[0]-ops.read_ber = af9035_lock_read_ber;
+   if (adap-fe[0]-ops.read_signal_strength)
+   adap-fe[0]-ops.read_signal_strength =
af9035_lock_read_signal_strength;
+   if (adap-fe[0]-ops.read_snr)
+   adap-fe[0]-ops.read_snr = af9035_lock_read_snr;
+   if (adap-fe[0]-ops.read_ucblocks)
+   adap-fe[0]-ops.read_ucblocks = af9035_lock_read_ucblocks;
+
return 0;

  err:
@@ -1130,6 +1244,8 @@ static int af9035_init(struct dvb_usb_de
packet_size=%02x\n, __func__,
d-udev-speed, frame_size, packet_size);

+   mutex_init(state-fe_mutex);
+
/* init endpoints */
for (i = 0; i  ARRAY_SIZE(tab); 

Re: [PATCH] Add lock to af9035 driver for dual mode

2013-01-23 Thread Jose Alberto Reguero
On Jueves, 24 de enero de 2013 00:36:25 Antti Palosaari escribió:
 On 01/24/2013 12:34 AM, Jose Alberto Reguero wrote:
  Add lock to af9035 driver for dual mode.
 
 May I ask why you do that?
 
 regards
 Antti


Just to avoid interference between the two demods.

Jose Alberto

  Signed-off-by: Jose Alberto Reguero jaregu...@telefonica.net
  
  
  diff -upr linux/drivers/media/usb/dvb-usb-v2/af9035.c
  linux.new/drivers/media/usb/dvb-usb-v2/af9035.c
  --- linux/drivers/media/usb/dvb-usb-v2/af9035.c 2013-01-07
  05:45:57.0 +0100
  +++ linux.new/drivers/media/usb/dvb-usb-v2/af9035.c 2013-01-23
  23:18:18.544788327 +0100
  @@ -824,6 +824,104 @@ static int af9035_get_adapter_count(stru
  
  return state-dual_mode + 1;

}
  
  +static int af9035_lock_set_frontend(struct dvb_frontend* fe)
  +{
  +   int result;
  +   struct dvb_usb_adapter *adap = fe_to_adap(fe);
  +   struct state *state = adap_to_priv(adap);
  +
  +   if (mutex_lock_interruptible(state-fe_mutex))
  +   return -EAGAIN;
  +
  +   result = state-fe_ops[adap-id].set_frontend(fe);
  +   mutex_unlock(state-fe_mutex);
  +   return result;
  +}
  +
  +static int af9035_lock_get_frontend(struct dvb_frontend* fe)
  +{
  +   int result;
  +   struct dvb_usb_adapter *adap = fe_to_adap(fe);
  +   struct state *state = adap_to_priv(adap);
  +
  +   if (mutex_lock_interruptible(state-fe_mutex))
  +   return -EAGAIN;
  +
  +   result = state-fe_ops[adap-id].get_frontend(fe);
  +   mutex_unlock(state-fe_mutex);
  +   return result;
  +}
  +
  +static int af9035_lock_read_status(struct dvb_frontend* fe, fe_status_t*
  status)
  +{
  +   int result;
  +   struct dvb_usb_adapter *adap = fe_to_adap(fe);
  +   struct state *state = adap_to_priv(adap);
  +
  +   if (mutex_lock_interruptible(state-fe_mutex))
  +   return -EAGAIN;
  +
  +   result = state-fe_ops[adap-id].read_status(fe, status);
  +   mutex_unlock(state-fe_mutex);
  +   return result;
  +}
  +
  +static int af9035_lock_read_ber(struct dvb_frontend* fe, u32* ber)
  +{
  +   int result;
  +   struct dvb_usb_adapter *adap = fe_to_adap(fe);
  +   struct state *state = adap_to_priv(adap);
  +
  +   if (mutex_lock_interruptible(state-fe_mutex))
  +   return -EAGAIN;
  +
  +   result = state-fe_ops[adap-id].read_ber(fe, ber);
  +   mutex_unlock(state-fe_mutex);
  +   return result;
  +}
  +
  +static int af9035_lock_read_signal_strength(struct dvb_frontend* fe, u16*
  strength)
  +{
  +   int result;
  +   struct dvb_usb_adapter *adap = fe_to_adap(fe);
  +   struct state *state = adap_to_priv(adap);
  +
  +   if (mutex_lock_interruptible(state-fe_mutex))
  +   return -EAGAIN;
  +
  +   result = state-fe_ops[adap-id].read_signal_strength(fe,
  strength); +   mutex_unlock(state-fe_mutex);
  +   return result;
  +}
  +
  +static int af9035_lock_read_snr(struct dvb_frontend* fe, u16* snr)
  +{
  +   int result;
  +   struct dvb_usb_adapter *adap = fe_to_adap(fe);
  +   struct state *state = adap_to_priv(adap);
  +
  +   if (mutex_lock_interruptible(state-fe_mutex))
  +   return -EAGAIN;
  +
  +   result = state-fe_ops[adap-id].read_snr(fe, snr);
  +   mutex_unlock(state-fe_mutex);
  +   return result;
  +}
  +
  +static int af9035_lock_read_ucblocks(struct dvb_frontend* fe, u32*
  ucblocks) +{
  +   int result;
  +   struct dvb_usb_adapter *adap = fe_to_adap(fe);
  +   struct state *state = adap_to_priv(adap);
  +
  +   if (mutex_lock_interruptible(state-fe_mutex))
  +   return -EAGAIN;
  +
  +   result = state-fe_ops[adap-id].read_ucblocks(fe, ucblocks);
  +   mutex_unlock(state-fe_mutex);
  +   return result;
  +}
  +
  
static int af9035_frontend_attach(struct dvb_usb_adapter *adap)
{

  struct state *state = adap_to_priv(adap);
  
  @@ -862,6 +960,22 @@ static int af9035_frontend_attach(struct
  
  adap-fe[0]-ops.i2c_gate_ctrl = NULL;
  adap-fe[0]-callback = af9035_frontend_callback;
  
  +   memcpy(state-fe_ops[adap-id], adap-fe[0]-ops, sizeof(struct
  dvb_frontend_ops));
  +   if (adap-fe[0]-ops.set_frontend)
  +   adap-fe[0]-ops.set_frontend = af9035_lock_set_frontend;
  +   if (adap-fe[0]-ops.get_frontend)
  +   adap-fe[0]-ops.get_frontend = af9035_lock_get_frontend;
  +   if (adap-fe[0]-ops.read_status)
  +   adap-fe[0]-ops.read_status = af9035_lock_read_status;
  +   if (adap-fe[0]-ops.read_ber)
  +   adap-fe[0]-ops.read_ber = af9035_lock_read_ber;
  +   if (adap-fe[0]-ops.read_signal_strength)
  +   adap-fe[0]-ops.read_signal_strength =
  af9035_lock_read_signal_strength;
  +   if (adap-fe[0]-ops.read_snr)
  +   adap-fe[0]-ops.read_snr = af9035_lock_read_snr;
  +   if 

[GIT PULL for v3.8-rc] DaVinci media fixes for v3.8

2013-01-23 Thread Prabhakar Lad
Hi Mauro,

Please pull the following patches which fixes display on DA850 EVM . To
avoid conflicts I have included a arm patch, which has been Acked by
its maintainer.

Fixes :
 - adv7343 encoder: fix configuring the encoder.
 - da850: pass data for adv7343 encoder for required configuration.

Thank you!
Prabhakar

The following changes since commit 7d1f9aeff1ee4a20b1aeb377dd0f579fe9647619:

  Linux 3.8-rc4 (2013-01-17 19:25:45 -0800)

are available in the git repository at:
  git://linuxtv.org/mhadli/v4l-dvb-davinci_devices.git davinci_media

Lad, Prabhakar (2):
  media: adv7343: accept configuration through platform data
  ARM: davinci: da850 evm: pass platform data for adv7343 encoder

 arch/arm/mach-davinci/board-da850-evm.c |   13 
 drivers/media/i2c/adv7343.c |   36 ++---
 include/media/adv7343.h |   52 +++
 3 files changed, 96 insertions(+), 5 deletions(-)
--
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