[PATCH] xc5000: add set_config and other

2011-02-01 Thread Dmitri Belimov
Hi

Add one more radio input, usefull for tm6010
Add control output amplitude.
Add set_config function for configure tuner when TV card hasn't dvb part.

diff --git a/drivers/media/common/tuners/xc5000.c 
b/drivers/media/common/tuners/xc5000.c
index 76ac5cd..759f0cc 100644
--- a/drivers/media/common/tuners/xc5000.c
+++ b/drivers/media/common/tuners/xc5000.c
@@ -65,7 +65,7 @@ struct xc5000_priv {
 };
 
 /* Misc Defines */
-#define MAX_TV_STANDARD23
+#define MAX_TV_STANDARD24
 #define XC_MAX_I2C_WRITE_LENGTH64
 
 /* Signal Types */
@@ -92,6 +92,8 @@ struct xc5000_priv {
 #define XREG_IF_OUT   0x05
 #define XREG_SEEK_MODE0x07
 #define XREG_POWER_DOWN   0x0A /* Obsolete */
+/* Set the output amplitude - SIF for analog, DTVP/DTVN for digital */
+#define XREG_OUTPUT_AMP   0x0B
 #define XREG_SIGNALSOURCE 0x0D /* 0=Air, 1=Cable */
 #define XREG_SMOOTHEDCVBS 0x0E
 #define XREG_XTALFREQ 0x0F
@@ -173,6 +175,7 @@ struct XC_TV_STANDARD {
 #define DTV7   20
 #define FM_Radio_INPUT221
 #define FM_Radio_INPUT122
+#define FM_Radio_INPUT1_MONO   23
 
 static struct XC_TV_STANDARD XC5000_Standard[MAX_TV_STANDARD] = {
{M/N-NTSC/PAL-BTSC, 0x0400, 0x8020},
@@ -197,7 +200,8 @@ static struct XC_TV_STANDARD 
XC5000_Standard[MAX_TV_STANDARD] = {
{DTV7/8,0x00C0, 0x801B},
{DTV7,  0x00C0, 0x8007},
{FM Radio-INPUT2,   0x9802, 0x9002},
-   {FM Radio-INPUT1,   0x0208, 0x9002}
+   {FM Radio-INPUT1,   0x0208, 0x9002},
+   {FM Radio-INPUT1_MONO, 0x0278, 0x9002}
 };
 
 static int xc_load_fw_and_init_tuner(struct dvb_frontend *fe);
@@ -714,6 +718,8 @@ static int xc5000_set_params(struct dvb_frontend *fe,
return -EIO;
}
 
+   xc_write_reg(priv, XREG_OUTPUT_AMP, 0x8a);
+
xc_tune_channel(priv, priv-freq_hz, XC_TUNE_DIGITAL);
 
if (debug)
@@ -818,6 +824,8 @@ tune_channel:
return -EREMOTEIO;
}
 
+   xc_write_reg(priv, XREG_OUTPUT_AMP, 0x09);
+
xc_tune_channel(priv, priv-freq_hz, XC_TUNE_ANALOG);
 
if (debug)
@@ -845,6 +853,8 @@ static int xc5000_set_radio_freq(struct dvb_frontend *fe,
radio_input = FM_Radio_INPUT1;
else if  (priv-radio_input == XC5000_RADIO_FM2)
radio_input = FM_Radio_INPUT2;
+   else if  (priv-radio_input == XC5000_RADIO_FM1_MONO)
+   radio_input = FM_Radio_INPUT1_MONO;
else {
dprintk(1, %s() unknown radio input %d\n, __func__,
priv-radio_input);
@@ -871,6 +881,12 @@ static int xc5000_set_radio_freq(struct dvb_frontend *fe,
return -EREMOTEIO;
}
 
+   if ((priv-radio_input == XC5000_RADIO_FM1) ||
+   (priv-radio_input == XC5000_RADIO_FM2))
+   xc_write_reg(priv, XREG_OUTPUT_AMP, 0x09);
+   else if  (priv-radio_input == XC5000_RADIO_FM1_MONO)
+   xc_write_reg(priv, XREG_OUTPUT_AMP, 0x06);
+
xc_tune_channel(priv, priv-freq_hz, XC_TUNE_ANALOG);
 
return 0;
@@ -1021,6 +1037,23 @@ static int xc5000_release(struct dvb_frontend *fe)
return 0;
 }
 
+static int xc5000_set_config(struct dvb_frontend *fe, void *priv_cfg)
+{
+   struct xc5000_priv *priv = fe-tuner_priv;
+   struct xc5000_config *p = priv_cfg;
+
+   dprintk(1, %s()\n, __func__);
+
+   if (p-if_khz)
+   priv-if_khz = p-if_khz;
+
+   if (p-radio_input)
+   priv-radio_input = p-radio_input;
+
+   return 0;
+}
+
+
 static const struct dvb_tuner_ops xc5000_tuner_ops = {
.info = {
.name   = Xceive XC5000,
@@ -1033,6 +1066,7 @@ static const struct dvb_tuner_ops xc5000_tuner_ops = {
.init  = xc5000_init,
.sleep = xc5000_sleep,
 
+   .set_config= xc5000_set_config,
.set_params= xc5000_set_params,
.set_analog_params = xc5000_set_analog_params,
.get_frequency = xc5000_get_frequency,
diff --git a/drivers/media/common/tuners/xc5000.h 
b/drivers/media/common/tuners/xc5000.h
index 3756e73..e295745 100644
--- a/drivers/media/common/tuners/xc5000.h
+++ b/drivers/media/common/tuners/xc5000.h
@@ -40,6 +40,7 @@ struct xc5000_config {
 #define XC5000_RADIO_NOT_CONFIGURED0
 #define XC5000_RADIO_FM1   1
 #define XC5000_RADIO_FM2   2
+#define XC5000_RADIO_FM1_MONO  3
 
 /* For each bridge framework, when it attaches either analog or digital,
  * it has to store a reference back to its _core equivalent structure,

Signed-off-by: Beholder Intl. Ltd. Dmitry Belimov d.beli...@gmail.com


With my best regards, Dmitry.diff --git a/drivers/media/common/tuners/xc5000.c b/drivers/media/common/tuners/xc5000.c
index 76ac5cd..759f0cc 100644
--- a/drivers/media/common/tuners/xc5000.c
+++ 

[PATCH v2] Add a 10 bpp packed greyscale format.

2011-02-01 Thread Antonio Ospite
Add a 10 bits per pixel greyscale format in a packed array representation,
naming it Y10P. Such pixel format is supplied for instance by the Kinect
sensor device.

Signed-off-by: Antonio Ospite osp...@studenti.unina.it
---

Hi,

Changes since v1:
 * Fixed a trailing space, I forgot to run ./scripts/checkpatch.pl on v1

I also added maintainers from ./scripts/get_maintainer.pl to CC, this should
increase the chance for the patch to be noticed.

Please comment on that, so I can send the final version if needed and start
adding support for the format to libv4l.

Thanks,
   Antonio Ospite
   http://ao2.it

 Documentation/DocBook/media-entities.tmpl |1 +
 Documentation/DocBook/v4l/pixfmt-y10p.xml |   43 +
 Documentation/DocBook/v4l/pixfmt.xml  |1 +
 Documentation/DocBook/v4l/videodev2.h.xml |1 +
 include/linux/videodev2.h |1 +
 5 files changed, 47 insertions(+), 0 deletions(-)
 create mode 100644 Documentation/DocBook/v4l/pixfmt-y10p.xml

diff --git a/Documentation/DocBook/media-entities.tmpl 
b/Documentation/DocBook/media-entities.tmpl
index be34dcb..2b18de5 100644
--- a/Documentation/DocBook/media-entities.tmpl
+++ b/Documentation/DocBook/media-entities.tmpl
@@ -253,6 +253,7 @@
 !ENTITY sub-srggb10 SYSTEM v4l/pixfmt-srggb10.xml
 !ENTITY sub-srggb8 SYSTEM v4l/pixfmt-srggb8.xml
 !ENTITY sub-y10 SYSTEM v4l/pixfmt-y10.xml
+!ENTITY sub-y10p SYSTEM v4l/pixfmt-y10p.xml
 !ENTITY sub-pixfmt SYSTEM v4l/pixfmt.xml
 !ENTITY sub-cropcap SYSTEM v4l/vidioc-cropcap.xml
 !ENTITY sub-dbg-g-register SYSTEM v4l/vidioc-dbg-g-register.xml
diff --git a/Documentation/DocBook/v4l/pixfmt-y10p.xml 
b/Documentation/DocBook/v4l/pixfmt-y10p.xml
new file mode 100644
index 000..5323ffe
--- /dev/null
+++ b/Documentation/DocBook/v4l/pixfmt-y10p.xml
@@ -0,0 +1,43 @@
+refentry id=V4L2-PIX-FMT-Y10P
+  refmeta
+refentrytitleV4L2_PIX_FMT_Y10P ('Y10P')/refentrytitle
+manvol;
+  /refmeta
+  refnamediv
+refnameconstantV4L2_PIX_FMT_Y10P/constant/refname
+refpurposeGrey-scale image as a packed array/refpurpose
+  /refnamediv
+  refsect1
+titleDescription/title
+
+paraThis is a packed grey-scale image format with a depth of 10 bits per
+  pixel. Pixels are stored in a packed array of 10bit bits per pixel, with
+  no padding between them and with the most significant bits coming first
+  from the left./para
+
+example
+  titleconstantV4L2_PIX_FMT_Y10P/constant 4 pixel data stream taking 
5 bytes/title
+
+  formalpara
+   titlePacked representation/title
+   parapixels cross the byte boundary and have a ratio of 5 bytes for 
each 4
+  pixels.
+ informaltable frame=all
+   tgroup cols=5 align=center
+ colspec align=left colwidth=2* /
+ tbody valign=top
+   row
+ entryY'subscript00[9:2]/subscript/entry
+ 
entryY'subscript00[1:0]/subscriptY'subscript01[9:4]/subscript/entry
+ 
entryY'subscript01[3:0]/subscriptY'subscript02[9:6]/subscript/entry
+ 
entryY'subscript02[5:0]/subscriptY'subscript03[9:8]/subscript/entry
+ entryY'subscript03[7:0]/subscript/entry
+   /row
+ /tbody
+   /tgroup
+ /informaltable
+   /para
+  /formalpara
+/example
+  /refsect1
+/refentry
diff --git a/Documentation/DocBook/v4l/pixfmt.xml 
b/Documentation/DocBook/v4l/pixfmt.xml
index d7c4671..3682701 100644
--- a/Documentation/DocBook/v4l/pixfmt.xml
+++ b/Documentation/DocBook/v4l/pixfmt.xml
@@ -592,6 +592,7 @@ information./para
 sub-packed-yuv;
 sub-grey;
 sub-y10;
+sub-y10p;
 sub-y16;
 sub-yuyv;
 sub-uyvy;
diff --git a/Documentation/DocBook/v4l/videodev2.h.xml 
b/Documentation/DocBook/v4l/videodev2.h.xml
index 325b23b..eb39f6b 100644
--- a/Documentation/DocBook/v4l/videodev2.h.xml
+++ b/Documentation/DocBook/v4l/videodev2.h.xml
@@ -289,6 +289,7 @@ struct link 
linkend=v4l2-pix-formatv4l2_pix_format/link {
 #define link linkend=V4L2-PIX-FMT-Y4V4L2_PIX_FMT_Y4/link  
v4l2_fourcc('Y', '0', '4', ' ') /*  4  Greyscale */
 #define link linkend=V4L2-PIX-FMT-Y6V4L2_PIX_FMT_Y6/link  
v4l2_fourcc('Y', '0', '6', ' ') /*  6  Greyscale */
 #define link linkend=V4L2-PIX-FMT-Y10V4L2_PIX_FMT_Y10/link 
v4l2_fourcc('Y', '1', '0', ' ') /* 10  Greyscale */
+#define link linkend=V4L2-PIX-FMT-Y10PV4L2_PIX_FMT_Y10P/link
v4l2_fourcc('Y', '1', '0', 'P') /* 10  Greyscale as a packed array */
 #define link linkend=V4L2-PIX-FMT-Y16V4L2_PIX_FMT_Y16/link 
v4l2_fourcc('Y', '1', '6', ' ') /* 16  Greyscale */
 
 /* Palette formats */
diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h
index 5f6f470..7682581 100644
--- a/include/linux/videodev2.h
+++ b/include/linux/videodev2.h
@@ -288,6 +288,7 @@ struct v4l2_pix_format {
 #define V4L2_PIX_FMT_Y4  v4l2_fourcc('Y', '0', '4', ' ') /*  4  Greyscale  
   */
 #define V4L2_PIX_FMT_Y6

Re: Asus U3100 Mini Plus

2011-02-01 Thread Michal Bojda
WHat I have found on wiki and other sites, my last output looks that:

[3583.869018] usb 1-1: new high speed USB device using ehci_hcd and address 3
[ 3584.091259] usb 1-1: configuration #1 chosen from 1 choice
[ 3584.098609] DRIVER_RELEASE_VERSION : v2.0-1
[ 3584.098737] FW_RELEASE_VERSION : v8_8_52_0
[ 3584.098797] API_RELEASE_VERSION: 200.20081203.0
[ 3584.148489] [Device_init] Error 1
[ 3584.148568] dvb_usb_af903x: probe of 1-1:1.0 failed with error 9
[ 3584.170852] input: Afa Technologies Inc. AF9035A USB Device as
/devices/pci:00/:00:0b.0/usb1/1-1/1-1:1.1/input/input10
[ 3584.175995] generic-usb 0003:0B05:1779.0006: input,hidraw1: USB HID
v1.01 Keyboard [Afa Technologies Inc. AF9035A USB Device] on
usb-:00:0b.0-1/input1

Dont know what does those errors means, and I am again at freeze point.

2011/1/31 Michal Bojda rexearth.mbo...@gmail.com:
 Here are some specifications.

 Chip : AF9035A
 Demodulator : AF9035B
 Tuner : FCI2580

 lsusb :

 Bus 002 Device 005: ID 045e:074f Microsoft Corp.
 Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
 Bus 001 Device 016: ID 0b05:1779 ASUSTek Computer, Inc.
 Bus 001 Device 004: ID 04f2:b033 Chicony Electronics Co., Ltd
 Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

 dmesg :

 [141187.393085] usb 1-1: new high speed USB device using ehci_hcd and address 
 16
 [141187.531276] usb 1-1: configuration #1 chosen from 1 choice
 [141187.53] af9035: tuner ID:50 not supported, please report!
 [141187.543044] input: Afa Technologies Inc. AF9035A USB Device as
 /devices/pci:00/:00:04.1/usb1/1-1/1-1:1.1/input/input25
 [141187.543160] generic-usb 0003:0B05:1779.000F: input,hidraw1: USB
 HID v1.01 Keyboard [Afa Technologies Inc. AF9035A USB Device] on
 usb-:00:04.1-1/input1


 It looks that it is something with USBHID, but i didnt found any
 /etc/modprobe.d/usbhid.conf to change. Kernel version I got is
 2.6.32-28-generic-pae, Ubuntu 10.4.

 [141187.53] af9035: tuner ID:50 not supported, please report!
 -   I tried to make some changes, so this line is maybe my work.

 I will be glad for any help. Thanks.

 M. Bojda

 2011/1/30 Michal Bojda rexearth.mbo...@gmail.com:
 Hello there,

 DVB-T card passed trough my hands. Asus U3100 Mini Plus. I was looking
 trough the internet, to make it working, but still dont have succes.
 Any1 met with this card and make it works ?

 Thanks, best regards M. Bojda

 --
 Those who watches their backs, meet death from the front.




 --
 Those who watches their backs, meet death from the front.




-- 
Those who watches their backs, meet death from the front.
--
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: SoC Camera driver and TV decoder

2011-02-01 Thread Janusz Uzycki
include/linux/errno.h:#define ENOIOCTLCMD   515 /* No ioctl command 
*/


What did I forget below?
static const struct v4l2_subdev_video_ops tvp5150_video_ops = {
   .s_routing = tvp5150_s_routing,

   /* SoC camera: */
   .s_stream   = tvp5150_s_stream,
   .g_mbus_fmt = tvp5150_g_fmt,
   .s_mbus_fmt = tvp5150_s_fmt,
   .try_mbus_fmt   = tvp5150_try_fmt,
   .enum_mbus_fmt  = tvp5150_enum_fmt,
/*  .cropcap= tw9910_cropcap,
   .g_crop = tw9910_g_crop,
   .s_crop = tw9910_s_crop,*/
};

cropcap/g_crop/s_cros are necessary? why and when?

thanks
Janusz



On Thu, 27 Jan 2011, Janusz Uzycki wrote:


Hello Guennadi again.

I patched tvp5150.c according to tw9910 driver (without real cropping
support yet).
Unfortunately I got the messages:
camera 0-0: Probing 0-0
sh_mobile_ceu sh_mobile_ceu.0: SuperH Mobile CEU driver attached to 
camera 0

tvp5150 0-005d: chip found @ 0xba (i2c-sh_mobile)
tvp5150 0-005d: tvp5150am1 detected.


This looks good - i2c to the chip works!

sh_mobile_ceu sh_mobile_ceu.0: SuperH Mobile CEU driver detached from 
camera 0

camera: probe of 0-0 failed with error -515


This is strange, however - error code 515... Can you try to find out where
it is coming from?

Thanks
Guennadi



--
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: SoC Camera driver and TV decoder

2011-02-01 Thread Guennadi Liakhovetski
On Tue, 1 Feb 2011, Janusz Uzycki wrote:

 include/linux/errno.h:#define ENOIOCTLCMD   515 /* No ioctl command */
 
 What did I forget below?
 static const struct v4l2_subdev_video_ops tvp5150_video_ops = {
.s_routing = tvp5150_s_routing,
 
/* SoC camera: */
.s_stream   = tvp5150_s_stream,
.g_mbus_fmt = tvp5150_g_fmt,
.s_mbus_fmt = tvp5150_s_fmt,
.try_mbus_fmt   = tvp5150_try_fmt,
.enum_mbus_fmt  = tvp5150_enum_fmt,
 /*  .cropcap= tw9910_cropcap,
.g_crop = tw9910_g_crop,
.s_crop = tw9910_s_crop,*/
 };
 
 cropcap/g_crop/s_cros are necessary? why and when?

cropcap and g_crop might be necessary - at least minimal static versions.

Thanks
Guennadi

 
 thanks
 Janusz
 
 
  On Thu, 27 Jan 2011, Janusz Uzycki wrote:
  
   Hello Guennadi again.
   
   I patched tvp5150.c according to tw9910 driver (without real cropping
   support yet).
   Unfortunately I got the messages:
   camera 0-0: Probing 0-0
   sh_mobile_ceu sh_mobile_ceu.0: SuperH Mobile CEU driver attached to camera
   0
   tvp5150 0-005d: chip found @ 0xba (i2c-sh_mobile)
   tvp5150 0-005d: tvp5150am1 detected.
  
  This looks good - i2c to the chip works!
  
   sh_mobile_ceu sh_mobile_ceu.0: SuperH Mobile CEU driver detached from
   camera 0
   camera: probe of 0-0 failed with error -515
  
  This is strange, however - error code 515... Can you try to find out where
  it is coming from?
  
  Thanks
  Guennadi
  
 

---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
http://www.open-technology.de/
--
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: Hauppauge HVR-2200 analog

2011-02-01 Thread Mauro Carvalho Chehab
Em 08-01-2011 13:40, Julian Scheel escreveu:
 Am 06.01.2011 23:31, schrieb Julian Scheel:

 Attached is the diff I currently use.

 Some more process. Attached is a new patch, which allows me to capture video 
 and audio from a PAL tuner. Imho the video has wrong colours though (using 
 PAL-B). Maybe someone would want to test that patch and give some feedback?
 Ok some hours of debugging later, I figured out that only encoder 1 was not 
 working properly. This was due to a wrong addressing when sending the dif 
 setup commands. The attached new patch fixes this.
 

Is this patch already working properly?

If so, please:
1) Check its codingstyle with ./scripts/checkpatch.pl
(there are some issues there, like commenting with //)
2) Remove the dead code;
3) Provide a patch description and your Signed-off-by:

 
 saa7164-card-pal.diff
 
 
 Nur in linux-2.6.37/drivers/media/video/saa7164/: modules.order.
 diff -x '*.o' -x '*.ko' -x '*.cmd' -x '*.mod.*' -ru 
 linux-2.6.37.a/drivers/media/video/saa7164//saa7164-api.c 
 linux-2.6.37/drivers/media/video/saa7164//saa7164-api.c
 --- linux-2.6.37.a/drivers/media/video/saa7164//saa7164-api.c 2011-01-05 
 01:50:19.0 +0100
 +++ linux-2.6.37/drivers/media/video/saa7164//saa7164-api.c   2011-01-08 
 16:10:32.0 +0100
 @@ -548,7 +548,7 @@
   tvaudio.std = TU_STANDARD_NTSC_M;
   tvaudio.country = 1;
   } else {
 - tvaudio.std = TU_STANDARD_PAL_I;
 + tvaudio.std = 0x04; //TU_STANDARD_PAL_I;

Probably, you need to add a define for 0x04 and use its symbol here.

   tvaudio.country = 44;
   }
  
 @@ -608,7 +608,7 @@
   dprintk(DBGLVL_API, %s(nr=%d type=%d val=%x)\n, __func__,
   port-nr, port-type, val);
  
 - if (port-nr == 0)
 + if (port-nr  3) //== 0)
   mas = 0xd0;
   else
   mas = 0xe0;
 diff -x '*.o' -x '*.ko' -x '*.cmd' -x '*.mod.*' -ru 
 linux-2.6.37.a/drivers/media/video/saa7164//saa7164-cards.c 
 linux-2.6.37/drivers/media/video/saa7164//saa7164-cards.c
 --- linux-2.6.37.a/drivers/media/video/saa7164//saa7164-cards.c   
 2011-01-05 01:50:19.0 +0100
 +++ linux-2.6.37/drivers/media/video/saa7164//saa7164-cards.c 2011-01-06 
 16:16:56.0 +0100
 @@ -203,6 +203,66 @@
   .i2c_reg_len= REGLEN_8bit,
   } },
   },
 + [SAA7164_BOARD_HAUPPAUGE_HVR2200_4] = {
 + .name   = Hauppauge WinTV-HVR2200,
 + .porta  = SAA7164_MPEG_DVB,
 + .portb  = SAA7164_MPEG_DVB,
 +.portc  = SAA7164_MPEG_ENCODER,
 +.portd  = SAA7164_MPEG_ENCODER,
 +.porte  = SAA7164_MPEG_VBI,
 +.portf  = SAA7164_MPEG_VBI,
 + .chiprev= SAA7164_CHIP_REV3,
 + .unit   = {{
 + .id = 0x1d,
 + .type   = SAA7164_UNIT_EEPROM,
 + .name   = 4K EEPROM,
 + .i2c_bus_nr = SAA7164_I2C_BUS_0,
 + .i2c_bus_addr   = 0xa0  1,
 + .i2c_reg_len= REGLEN_8bit,
 + }, {
 + .id = 0x04,
 + .type   = SAA7164_UNIT_TUNER,
 + .name   = TDA18271-1,
 + .i2c_bus_nr = SAA7164_I2C_BUS_1,
 + .i2c_bus_addr   = 0xc0  1,
 + .i2c_reg_len= REGLEN_8bit,
 + }, {
 + .id = 0x05,
 + .type   = SAA7164_UNIT_ANALOG_DEMODULATOR,
 + .name   = TDA8290-1,
 + .i2c_bus_nr = SAA7164_I2C_BUS_1,
 + .i2c_bus_addr   = 0x84  1,
 + .i2c_reg_len= REGLEN_8bit,
 + }, {
 + .id = 0x1b,
 + .type   = SAA7164_UNIT_TUNER,
 + .name   = TDA18271-2,
 + .i2c_bus_nr = SAA7164_I2C_BUS_2,
 + .i2c_bus_addr   = 0xc0  1,
 + .i2c_reg_len= REGLEN_8bit,
 + }, {
 + .id = 0x1c,
 + .type   = SAA7164_UNIT_ANALOG_DEMODULATOR,
 + .name   = TDA8290-2,
 + .i2c_bus_nr = SAA7164_I2C_BUS_2,
 + .i2c_bus_addr   = 0x84  1,
 + .i2c_reg_len= REGLEN_8bit,
 + }, {
 + .id = 0x1e,
 + .type   = SAA7164_UNIT_DIGITAL_DEMODULATOR,
 + .name   = TDA10048-1,
 + .i2c_bus_nr = SAA7164_I2C_BUS_1,
 + .i2c_bus_addr   = 0x10  1,
 + 

Re: SoC Camera driver and TV decoder

2011-02-01 Thread Guennadi Liakhovetski
On Tue, 1 Feb 2011, Janusz Uzycki wrote:

 camera 0-0: Probing 0-0
 sh_mobile_ceu sh_mobile_ceu.0: SuperH Mobile CEU driver attached to camera 0
 tvp5150 0-005d: chip found @ 0xba (i2c-sh_mobile)
 tvp5150 0-005d: tvp5150am1 detected.
 sh_mobile_ceu sh_mobile_ceu.0: SuperH Mobile CEU driver detached from camera 0
 
 There is no error 515 but the driver is still detached.

Good, this is correct. It will be re-attached when you open it.

Thanks
Guennadi

 drivers/media/video/sh_mobile_ceu_camera.c:
 sh_mobile_ceu_remove_device() is called /* Called with .video_lock held */
 static struct soc_camera_host_ops sh_mobile_ceu_host_ops = {
.owner  = THIS_MODULE,
.add= sh_mobile_ceu_add_device,
.remove = sh_mobile_ceu_remove_device,
 It seems sh_mobile_ceu_add_device() was failed.
 I will try to explore that.
 
 Janusz
 
 - Original Message - From: Guennadi Liakhovetski
 g.liakhovet...@gmx.de
 To: Janusz Uzycki janusz.uzy...@elproma.com.pl
 Cc: g.dani...@elproma.com.pl; Linux Media Mailing List
 linux-media@vger.kernel.org
 Sent: Tuesday, February 01, 2011 2:21 PM
 Subject: Re: SoC Camera driver and TV decoder
 
 
  On Tue, 1 Feb 2011, Janusz Uzycki wrote:
  
   include/linux/errno.h:#define ENOIOCTLCMD   515 /* No ioctl
   command */
   
   What did I forget below?
   static const struct v4l2_subdev_video_ops tvp5150_video_ops = {
  .s_routing = tvp5150_s_routing,
   
  /* SoC camera: */
  .s_stream   = tvp5150_s_stream,
  .g_mbus_fmt = tvp5150_g_fmt,
  .s_mbus_fmt = tvp5150_s_fmt,
  .try_mbus_fmt   = tvp5150_try_fmt,
  .enum_mbus_fmt  = tvp5150_enum_fmt,
   /*  .cropcap= tw9910_cropcap,
  .g_crop = tw9910_g_crop,
  .s_crop = tw9910_s_crop,*/
   };
   
   cropcap/g_crop/s_cros are necessary? why and when?
  
  cropcap and g_crop might be necessary - at least minimal static versions.
  
  Thanks
  Guennadi
  
   
   thanks
   Janusz
   
   
On Thu, 27 Jan 2011, Janusz Uzycki wrote:
   
 Hello Guennadi again.

 I patched tvp5150.c according to tw9910 driver (without real cropping
 support yet).
 Unfortunately I got the messages:
 camera 0-0: Probing 0-0
 sh_mobile_ceu sh_mobile_ceu.0: SuperH Mobile CEU driver attached to 
camera
 0
 tvp5150 0-005d: chip found @ 0xba (i2c-sh_mobile)
 tvp5150 0-005d: tvp5150am1 detected.
   
This looks good - i2c to the chip works!
   
 sh_mobile_ceu sh_mobile_ceu.0: SuperH Mobile CEU driver detached from
 camera 0
 camera: probe of 0-0 failed with error -515
   
This is strange, however - error code 515... Can you try to find out 
   where
it is coming from?
   
Thanks
Guennadi
   
   
  
  ---
  Guennadi Liakhovetski, Ph.D.
  Freelance Open-Source Software Developer
  http://www.open-technology.de/
  
 

---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
http://www.open-technology.de/
--
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


Call for testers: V4L1 support dropped from tvtime

2011-02-01 Thread Devin Heitmueller
I know this is the linux-media mailing list and not the tvtime mailing
list, but it seems relevant given the overlap in the user base and the
fact that these changes are specifically in response to recent events
with v4l-dvb.

I have modified the KernelLabs build of tvtime to no longer depend on V4L1.

The tree can be found here:

http://www.kernellabs.com/hg/~dheitmueller/tvtime

More info including build instructions can be found here:

http://www.kernellabs.com/blog

Comments/testers welcome.

Regards,

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
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: omap3-isp segfault

2011-02-01 Thread Teemu Tuominen

On 01/28/2011 12:44 AM, Neil MacMunn wrote:

# gst-launch v4l2src device=/dev/video4 ! xvimagesink

Does anybody know how I can capture images from the camera? From 
previous posts it appears that I'm not the first to go through this 
process.


Thanks. Neil




Hi,

Afaik v4l2src does not support subdev's atm. There's though one gst 
source element that aims to be generic with MediaController and I assume 
its first of its kind. I'm working to integrate the thing into Meego 
from behalf of Nokia N900 adaptation team. See 'mcsrc' bundled with 
gst-nokia-videosrc 
(http://meego.gitorious.org/maemo-multimedia/gst-nokia-videosrc). It 
also deals with the pipeline setup (data/pipelines.conf) so no need to 
use media-ctl cli.


Br,
-Teemu
--
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: [REGRESSION: wm8775, ivtv] Please revert commit fcb9757333df37cf4a7feccef7ef6f5300643864

2011-02-01 Thread Mauro Carvalho Chehab
Hi Lawrence,

Em 08-01-2011 16:45, Lawrence Rust escreveu:
 Thanks for the info on the PVR-150.  It largely confirmed what I had
 surmised - that the two cards disagree about serial audio data format.
 Before my patch, the wm8775 was programmed for Philips mode but the
 CX25843 on the PVR-150 is setup for Sony I2S mode!!  On the Nova-S, the
 cx23883 is setup (in cx88-tvaudio.c) for Philips mode.  The patch
 changed the wm8775 to Sony I2S mode because the existing setup gave
 noise, indicative of a mismatch.
 
 It is my belief that either the wm8775 datasheet is wrong or there are
 inverters on the SCLK lines between the wm8775 and cx25843/23883. It is
 also plausible that Conexant have it wrong and both their datasheets are
 wrong.
 
 Anyway, I have revised the patch (attached) so that the wm8775 is kept
 in Philips mode (to please the PVR-150) and the cx23883 on the Nove-S is
 now switched to Sony I2S mode (like the PVR-150) and this works fine.
 The change is trivial, just 2 lines, so they're shouldn't be any other
 consequences.  However, could this affect any other cards? 
 
 NB I have only tested this patch on my Nova-S, no other.

As it was pointed, your patch affects other boards with wm8775. In order
to avoid it, you need to use platform_data to pass nova_s specific parameters,
and be sure that other boards won't be affected by your changes.

As you might not be able to see how this should be written, I modified your
patch in a way that, hopefully, it won't affect PVR-150. Please test.

Please notice that I don't have any board with wm8775 handy, so it is 
compiled-only.

If this patch doesn't break PVR-150 or Nova-S, then I think we can merge
it.

There are however two issues:
1) I don't think it is a good idea to keep the I2C group for wm8775 
inside
the wm8775 header. Instead, we should move it to some place were people can 
look on it
to avoid duplicated groups. We may instead just get rid of it, as I added tests 
for
wm8775 on all places. So, only if wm8775 is used, the i2c subdev commands will 
be
called.
2) I just added one platform_data info that indicates if the device is a
nova_s or not. I did it just because I was lazy enough to not go through wm8775
datasheet and add parameters for the parameters that are different. The better
is to split it into some more parameters.

If it works for you, please add your Signed-off-by:. 

Andy, 
please test if this don't break ivtv. If it breaks, please help us to fix,
as only you noticed an issue on the previous versions.

-

From: Lawrence Rust lawre...@softsystem.co.uk 

This patch adds audio DMA capture and ALSA mixer elements for the line
input jack of the Hauppauge Nova-S-plus DVB-S PCI card.  The Nova-S-plus
has a WM8775 ADC that is currently not detected.  This patch enables
this chip and exports volume, balance mute and ALC elements for ALSA
mixer controls.

[mche...@redhat.com: Changed the patch to only talk with wm8775 if board info 
says so. Also, added platform_data support, to avoid changing the behaviour for 
other boards, and fixed CodingStyle]

Signed-off-by: Mauro Carvalho Chehab mche...@redhat.com

diff --git a/drivers/media/video/cx88/cx88-alsa.c 
b/drivers/media/video/cx88/cx88-alsa.c
index 54b7fcd..a2d688e 100644
--- a/drivers/media/video/cx88/cx88-alsa.c
+++ b/drivers/media/video/cx88/cx88-alsa.c
@@ -40,6 +40,7 @@
 #include sound/control.h
 #include sound/initval.h
 #include sound/tlv.h
+#include media/wm8775.h
 
 #include cx88.h
 #include cx88-reg.h
@@ -577,6 +578,35 @@ static int snd_cx88_volume_get(struct snd_kcontrol 
*kcontrol,
return 0;
 }
 
+static void snd_cx88_wm8775_volume_put(struct snd_kcontrol *kcontrol,
+  struct snd_ctl_elem_value *value)
+{
+   snd_cx88_card_t *chip = snd_kcontrol_chip(kcontrol);
+   struct cx88_core *core = chip-core;
+   struct v4l2_control client_ctl;
+   int left = value-value.integer.value[0];
+   int right = value-value.integer.value[1];
+   int v, b;
+
+   memset(client_ctl, 0, sizeof(client_ctl));
+
+   /* Pass volume  balance onto any WM8775 */
+   if (left = right) {
+   v = left  10;
+   b = left ? (0x8000 * right) / left : 0x8000;
+   } else {
+   v = right  10;
+   b = right ? 0x - (0x8000 * left) / right : 0x8000;
+   }
+   client_ctl.value = v;
+   client_ctl.id = V4L2_CID_AUDIO_VOLUME;
+   call_hw(core, WM8775_GID, core, s_ctrl, client_ctl);
+
+   client_ctl.value = b;
+   client_ctl.id = V4L2_CID_AUDIO_BALANCE;
+   call_hw(core, WM8775_GID, core, s_ctrl, client_ctl);
+}
+
 /* OK - TODO: test it */
 static int snd_cx88_volume_put(struct snd_kcontrol *kcontrol,
   struct snd_ctl_elem_value *value)
@@ -587,25 +617,28 @@ static int snd_cx88_volume_put(struct snd_kcontrol 
*kcontrol,
int changed = 0;
u32 old;
 
+   if (core-board.audio_chip == V4L2_IDENT_WM8775)
+  

Call for testers: V4L1 support dropped from xawtv - Was: Re: Call for testers: V4L1 support dropped from tvtime

2011-02-01 Thread Mauro Carvalho Chehab
Em 01-02-2011 12:51, Devin Heitmueller escreveu:
 I know this is the linux-media mailing list and not the tvtime mailing
 list, but it seems relevant given the overlap in the user base and the
 fact that these changes are specifically in response to recent events
 with v4l-dvb.
 
 I have modified the KernelLabs build of tvtime to no longer depend on V4L1.
 
 The tree can be found here:
 
 http://www.kernellabs.com/hg/~dheitmueller/tvtime
 
 More info including build instructions can be found here:
 
 http://www.kernellabs.com/blog

Let me take a ride at Devin's call for tests ;)

I've also dropped V4L1 support from xawtv3 a few days ago. It would be
wonderful if people could test it. The upstream git tree is at:
http://git.linuxtv.org/xawtv3.git

A tarball for the latest version is at:
http://linuxtv.org/downloads/xawtv/xawtv-3.99.rc1.tar.bz2

For those that use Fedora, there are some rpm available For FC14/FC15 at:
http://kojipkgs.fedoraproject.org/packages/xawtv/3.99.rc1/

There's just one know caveat that affects mostly webcam usage. Xawtv now has 
two 
V4L2 plugins, one with libv4l and another with just v4l2. Currently, there's no 
way to select between them. I need some time to do a research about it and write
a patch to address this issue.

Tests, reports and patches are welcome!
Mauro.
--
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


[cron job] v4l-dvb daily build: ERRORS

2011-02-01 Thread Hans Verkuil
This message is generated daily by a cron job that builds v4l-dvb for
the kernels and architectures in the list below.

Results of the daily build of v4l-dvb:

date:Tue Feb  1 19:00:38 CET 2011
git master:   1b59be2a6cdcb5a12e18d8315c07c94a624de48f
git media-master: gcc version:  i686-linux-gcc (GCC) 4.5.1
host hardware:x86_64
host os:  2.6.32.5

linux-git-armv5: WARNINGS
linux-git-armv5-davinci: WARNINGS
linux-git-armv5-ixp: WARNINGS
linux-git-armv5-omap2: WARNINGS
linux-git-i686: OK
linux-git-m32r: OK
linux-git-mips: OK
linux-git-powerpc64: OK
linux-git-x86_64: OK
linux-2.6.31.12-i686: WARNINGS
linux-2.6.32.6-i686: WARNINGS
linux-2.6.33-i686: WARNINGS
linux-2.6.34-i686: WARNINGS
linux-2.6.35.3-i686: WARNINGS
linux-2.6.36-i686: WARNINGS
linux-2.6.37-i686: ERRORS
linux-2.6.31.12-x86_64: WARNINGS
linux-2.6.32.6-x86_64: OK
linux-2.6.33-x86_64: OK
linux-2.6.34-x86_64: OK
linux-2.6.35.3-x86_64: WARNINGS
linux-2.6.36-x86_64: WARNINGS
linux-2.6.37-x86_64: ERRORS
spec-git: OK
sparse: ERRORS

Detailed results are available here:

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

Full logs are available here:

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

The V4L-DVB specification 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 2/9 v2] ds3000: decrease mpeg clock output

2011-02-01 Thread Igor M. Liplianin
TeVii s480 works fine with that on DVB-S2 channels

Signed-off-by: Igor M. Liplianin liplia...@me.by
---
 drivers/media/dvb/frontends/ds3000.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/media/dvb/frontends/ds3000.c 
b/drivers/media/dvb/frontends/ds3000.c
index 4773916..b20005c 100644
--- a/drivers/media/dvb/frontends/ds3000.c
+++ b/drivers/media/dvb/frontends/ds3000.c
@@ -1230,7 +1230,7 @@ static int ds3000_tune(struct dvb_frontend *fe,
ds3000_writereg(state,
ds3000_dvbs2_init_tab[i],
ds3000_dvbs2_init_tab[i + 1]);
-   ds3000_writereg(state, 0xfe, 0x54);
+   ds3000_writereg(state, 0xfe, 0x98);
break;
default:
return 1;
-- 
1.7.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 3/9 v2] ds3000: loading firmware in bigger chunks

2011-02-01 Thread Igor M. Liplianin
Decrease firmware loading time. Before it is ~4000 i2c calls,
now it is ~256 i2c calls to load ds3000 firmware.

Signed-off-by: Igor M. Liplianin liplia...@me.by
---
 drivers/media/dvb/frontends/ds3000.c |8 
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/media/dvb/frontends/ds3000.c 
b/drivers/media/dvb/frontends/ds3000.c
index b20005c..02ba759 100644
--- a/drivers/media/dvb/frontends/ds3000.c
+++ b/drivers/media/dvb/frontends/ds3000.c
@@ -305,7 +305,7 @@ static int ds3000_writeFW(struct ds3000_state *state, int 
reg,
struct i2c_msg msg;
u8 *buf;
 
-   buf = kmalloc(3, GFP_KERNEL);
+   buf = kmalloc(33, GFP_KERNEL);
if (buf == NULL) {
printk(KERN_ERR Unable to kmalloc\n);
ret = -ENOMEM;
@@ -317,10 +317,10 @@ static int ds3000_writeFW(struct ds3000_state *state, int 
reg,
msg.addr = state-config-demod_address;
msg.flags = 0;
msg.buf = buf;
-   msg.len = 3;
+   msg.len = 33;
 
-   for (i = 0; i  len; i += 2) {
-   memcpy(buf + 1, data + i, 2);
+   for (i = 0; i  len; i += 32) {
+   memcpy(buf + 1, data + i, 32);
 
dprintk(%s: write reg 0x%02x, len = %d\n, __func__, reg, len);
 
-- 
1.7.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 5/9 v2] ds3000: clean up in tune procedure

2011-02-01 Thread Igor M. Liplianin
Variable 'retune' does not make sense.
Loop is not needed for only one try.
Remove unnecessary dprintk's.

Signed-off-by: Igor M. Liplianin liplia...@me.by
---
 drivers/media/dvb/frontends/ds3000.c |  442 +-
 1 files changed, 216 insertions(+), 226 deletions(-)

diff --git a/drivers/media/dvb/frontends/ds3000.c 
b/drivers/media/dvb/frontends/ds3000.c
index 3373890..7c61936 100644
--- a/drivers/media/dvb/frontends/ds3000.c
+++ b/drivers/media/dvb/frontends/ds3000.c
@@ -1049,7 +1049,7 @@ static int ds3000_tune(struct dvb_frontend *fe,
struct ds3000_state *state = fe-demodulator_priv;
struct dtv_frontend_properties *c = fe-dtv_property_cache;
 
-   int ret = 0, retune, i;
+   int ret = 0, i;
u8 status, mlpf, mlpf_new, mlpf_max, mlpf_min, nlpf;
u16 value, ndiv;
u32 f3db;
@@ -1072,249 +1072,239 @@ static int ds3000_tune(struct dvb_frontend *fe,
/* discard the 'current' tuning parameters and prepare to tune */
ds3000_clone_params(fe);
 
-   retune = 1; /* try 1 times */
-   dprintk(%s:   retune = %d\n, __func__, retune);
-   dprintk(%s:   frequency   = %d\n, __func__, state-dcur.frequency);
-   dprintk(%s:   symbol_rate = %d\n, __func__, state-dcur.symbol_rate);
-   dprintk(%s:   FEC   = %d \n, __func__,
-   state-dcur.fec);
-   dprintk(%s:   Inversion   = %d\n, __func__, state-dcur.inversion);
-
-   do {
-   /* Reset status register */
-   status = 0;
-   /* Tune */
-   /* unknown */
-   ds3000_tuner_writereg(state, 0x07, 0x02);
-   ds3000_tuner_writereg(state, 0x10, 0x00);
-   ds3000_tuner_writereg(state, 0x60, 0x79);
-   ds3000_tuner_writereg(state, 0x08, 0x01);
-   ds3000_tuner_writereg(state, 0x00, 0x01);
-   /* calculate and set freq divider */
-   if (state-dcur.frequency  1146000) {
-   ds3000_tuner_writereg(state, 0x10, 0x11);
-   ndiv = ((state-dcur.frequency * (6 + 8) * 4) +
-   (DS3000_XTAL_FREQ / 2)) /
-   DS3000_XTAL_FREQ - 1024;
-   } else {
-   ds3000_tuner_writereg(state, 0x10, 0x01);
-   ndiv = ((state-dcur.frequency * (6 + 8) * 2) +
-   (DS3000_XTAL_FREQ / 2)) /
-   DS3000_XTAL_FREQ - 1024;
-   }
+   /* Reset status register */
+   status = 0;
+   /* Tune */
+   /* unknown */
+   ds3000_tuner_writereg(state, 0x07, 0x02);
+   ds3000_tuner_writereg(state, 0x10, 0x00);
+   ds3000_tuner_writereg(state, 0x60, 0x79);
+   ds3000_tuner_writereg(state, 0x08, 0x01);
+   ds3000_tuner_writereg(state, 0x00, 0x01);
+   /* calculate and set freq divider */
+   if (state-dcur.frequency  1146000) {
+   ds3000_tuner_writereg(state, 0x10, 0x11);
+   ndiv = ((state-dcur.frequency * (6 + 8) * 4) +
+   (DS3000_XTAL_FREQ / 2)) /
+   DS3000_XTAL_FREQ - 1024;
+   } else {
+   ds3000_tuner_writereg(state, 0x10, 0x01);
+   ndiv = ((state-dcur.frequency * (6 + 8) * 2) +
+   (DS3000_XTAL_FREQ / 2)) /
+   DS3000_XTAL_FREQ - 1024;
+   }
 
-   ds3000_tuner_writereg(state, 0x01, (ndiv  0x0f00)  8);
-   ds3000_tuner_writereg(state, 0x02, ndiv  0x00ff);
-
-   /* set pll */
-   ds3000_tuner_writereg(state, 0x03, 0x06);
-   ds3000_tuner_writereg(state, 0x51, 0x0f);
-   ds3000_tuner_writereg(state, 0x51, 0x1f);
-   ds3000_tuner_writereg(state, 0x50, 0x10);
-   ds3000_tuner_writereg(state, 0x50, 0x00);
-   msleep(5);
-
-   /* unknown */
-   ds3000_tuner_writereg(state, 0x51, 0x17);
-   ds3000_tuner_writereg(state, 0x51, 0x1f);
-   ds3000_tuner_writereg(state, 0x50, 0x08);
-   ds3000_tuner_writereg(state, 0x50, 0x00);
-   msleep(5);
-
-   value = ds3000_tuner_readreg(state, 0x3d);
-   value = 0x0f;
-   if ((value  4)  (value  15)) {
-   value -= 3;
-   if (value  4)
-   value = 4;
-   value = ((value  3) | 0x01)  0x79;
-   }
+   ds3000_tuner_writereg(state, 0x01, (ndiv  0x0f00)  8);
+   ds3000_tuner_writereg(state, 0x02, ndiv  0x00ff);
+
+   /* set pll */
+   ds3000_tuner_writereg(state, 0x03, 0x06);
+   ds3000_tuner_writereg(state, 0x51, 0x0f);
+   ds3000_tuner_writereg(state, 0x51, 0x1f);
+   ds3000_tuner_writereg(state, 0x50, 0x10);
+   ds3000_tuner_writereg(state, 

[PATCH 4/9 v2] ds3000: loading firmware during demod init

2011-02-01 Thread Igor M. Liplianin
Speed up tuning, as firmware is not necessary to load every attempt to tune

Signed-off-by: Igor M. Liplianin liplia...@me.by
---
 drivers/media/dvb/frontends/ds3000.c |   14 ++
 1 files changed, 6 insertions(+), 8 deletions(-)

diff --git a/drivers/media/dvb/frontends/ds3000.c 
b/drivers/media/dvb/frontends/ds3000.c
index 02ba759..3373890 100644
--- a/drivers/media/dvb/frontends/ds3000.c
+++ b/drivers/media/dvb/frontends/ds3000.c
@@ -1056,14 +1056,6 @@ static int ds3000_tune(struct dvb_frontend *fe,
 
dprintk(%s() , __func__);
 
-   /* Load the firmware if required */
-   ret = ds3000_firmware_ondemand(fe);
-   if (ret != 0) {
-   printk(KERN_ERR %s: Unable initialise the firmware\n,
-   __func__);
-   return ret;
-   }
-
state-dnxt.delivery = c-modulation;
state-dnxt.frequency = c-frequency;
state-dnxt.rolloff = 2; /* fixme */
@@ -1353,6 +1345,12 @@ static int ds3000_initfe(struct dvb_frontend *fe)
ds3000_tuner_writereg(state, 0x42, 0x73);
ds3000_tuner_writereg(state, 0x05, 0x01);
ds3000_tuner_writereg(state, 0x62, 0xf5);
+   /* Load the firmware if required */
+   ret = ds3000_firmware_ondemand(fe);
+   if (ret != 0) {
+   printk(KERN_ERR %s: Unable initialize firmware\n, __func__);
+   return ret;
+   }
 
return 0;
 }
-- 
1.7.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 6/9 v2] ds3000: yet clean up in tune procedure

2011-02-01 Thread Igor M. Liplianin
Remove a lot of debug messages and delays.

Signed-off-by: Igor M. Liplianin liplia...@me.by
---
 drivers/media/dvb/frontends/ds3000.c |   50 +-
 1 files changed, 7 insertions(+), 43 deletions(-)

diff --git a/drivers/media/dvb/frontends/ds3000.c 
b/drivers/media/dvb/frontends/ds3000.c
index 7c61936..11f1aa2 100644
--- a/drivers/media/dvb/frontends/ds3000.c
+++ b/drivers/media/dvb/frontends/ds3000.c
@@ -536,25 +536,6 @@ static int ds3000_set_voltage(struct dvb_frontend *fe, 
fe_sec_voltage_t 
voltage)
return 0;
 }
 
-static void ds3000_dump_registers(struct dvb_frontend *fe)
-{
-   struct ds3000_state *state = fe-demodulator_priv;
-   int x, y, reg = 0, val;
-
-   for (y = 0; y  16; y++) {
-   dprintk(%s: %02x: , __func__, y);
-   for (x = 0; x  16; x++) {
-   reg = (y  4) + x;
-   val = ds3000_readreg(state, reg);
-   if (x != 15)
-   dprintk(%02x ,  val);
-   else
-   dprintk(%02x\n, val);
-   }
-   }
-   dprintk(%s: -- DS3000 DUMP DONE --\n, __func__);
-}
-
 static int ds3000_read_status(struct dvb_frontend *fe, fe_status_t* status)
 {
struct ds3000_state *state = fe-demodulator_priv;
@@ -589,16 +570,6 @@ static int ds3000_read_status(struct dvb_frontend *fe, 
fe_status_t* status)
return 0;
 }
 
-#define FE_IS_TUNED (FE_HAS_SIGNAL + FE_HAS_LOCK)
-static int ds3000_is_tuned(struct dvb_frontend *fe)
-{
-   fe_status_t tunerstat;
-
-   ds3000_read_status(fe, tunerstat);
-
-   return ((tunerstat  FE_IS_TUNED) == FE_IS_TUNED);
-}
-
 /* read DS3000 BER value */
 static int ds3000_read_ber(struct dvb_frontend *fe, u32* ber)
 {
@@ -1049,7 +1020,7 @@ static int ds3000_tune(struct dvb_frontend *fe,
struct ds3000_state *state = fe-demodulator_priv;
struct dtv_frontend_properties *c = fe-dtv_property_cache;
 
-   int ret = 0, i;
+   int i;
u8 status, mlpf, mlpf_new, mlpf_max, mlpf_min, nlpf;
u16 value, ndiv;
u32 f3db;
@@ -1292,22 +1263,15 @@ static int ds3000_tune(struct dvb_frontend *fe,
 
/* TODO: calculate and set carrier offset */
 
-   /* wait before retrying */
for (i = 0; i  30 ; i++) {
-   if (ds3000_is_tuned(fe)) {
-   dprintk(%s: Tuned\n, __func__);
-   ds3000_dump_registers(fe);
-   goto tuned;
-   }
-   msleep(1);
-   }
-
-   dprintk(%s: Not tuned\n, __func__);
-   ds3000_dump_registers(fe);
+   ds3000_read_status(fe, status);
+   if (status  FE_HAS_LOCK)
+   return 0;
 
+   msleep(10);
+   }
 
-tuned:
-   return ret;
+   return 1;
 }
 
 static enum dvbfe_algo ds3000_get_algo(struct dvb_frontend *fe)
-- 
1.7.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 9/9 v2] ds3000: hardware tune algorithm

2011-02-01 Thread Igor M. Liplianin
Signed-off-by: Igor M. Liplianin liplia...@me.by
---
 drivers/media/dvb/frontends/ds3000.c |   18 --
 1 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/drivers/media/dvb/frontends/ds3000.c 
b/drivers/media/dvb/frontends/ds3000.c
index e2037b5..3c6e08e 100644
--- a/drivers/media/dvb/frontends/ds3000.c
+++ b/drivers/media/dvb/frontends/ds3000.c
@@ -967,22 +967,21 @@ static int ds3000_set_carrier_offset(struct dvb_frontend 
*fe,
return 0;
 }
 
-static int ds3000_tune(struct dvb_frontend *fe,
+static int ds3000_set_frontend(struct dvb_frontend *fe,
struct dvb_frontend_parameters *p)
 {
struct ds3000_state *state = fe-demodulator_priv;
struct dtv_frontend_properties *c = fe-dtv_property_cache;
 
int i;
-   u8 status, mlpf, mlpf_new, mlpf_max, mlpf_min, nlpf, div4;
+   fe_status_t status;
+   u8 mlpf, mlpf_new, mlpf_max, mlpf_min, nlpf, div4;
s32 offset_khz;
u16 value, ndiv;
u32 f3db;
 
dprintk(%s() , __func__);
 
-   /* Reset status register */
-   status = 0;
/* Tune */
/* unknown */
ds3000_tuner_writereg(state, 0x07, 0x02);
@@ -1218,10 +1217,16 @@ static int ds3000_tune(struct dvb_frontend *fe,
return 1;
 }
 
+static int ds3000_tune(struct dvb_frontend *fe,
+   struct dvb_frontend_parameters *p)
+{
+   return ds3000_set_frontend(fe, p);
+}
+
 static enum dvbfe_algo ds3000_get_algo(struct dvb_frontend *fe)
 {
dprintk(%s()\n, __func__);
-   return DVBFE_ALGO_SW;
+   return DVBFE_ALGO_HW;
 }
 
 /*
@@ -1296,7 +1301,8 @@ static struct dvb_frontend_ops ds3000_ops = {
 
.set_property = ds3000_set_property,
.get_property = ds3000_get_property,
-   .set_frontend = ds3000_tune,
+   .set_frontend = ds3000_set_frontend,
+   .tune = ds3000_tune,
 };
 
 module_param(debug, int, 0644);
-- 
1.7.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: Call for testers: V4L1 support dropped from xawtv - Was: Re: Call for testers: V4L1 support dropped from tvtime

2011-02-01 Thread Mauro Carvalho Chehab
Em 01-02-2011 14:09, Mauro Carvalho Chehab escreveu:
 Em 01-02-2011 12:51, Devin Heitmueller escreveu:
 I know this is the linux-media mailing list and not the tvtime mailing
 list, but it seems relevant given the overlap in the user base and the
 fact that these changes are specifically in response to recent events
 with v4l-dvb.

 I have modified the KernelLabs build of tvtime to no longer depend on V4L1.

 The tree can be found here:

 http://www.kernellabs.com/hg/~dheitmueller/tvtime

 More info including build instructions can be found here:

 http://www.kernellabs.com/blog
 
 Let me take a ride at Devin's call for tests ;)
 
 I've also dropped V4L1 support from xawtv3 a few days ago. It would be
 wonderful if people could test it. The upstream git tree is at:
   http://git.linuxtv.org/xawtv3.git
 
 A tarball for the latest version is at:
   http://linuxtv.org/downloads/xawtv/xawtv-3.99.rc1.tar.bz2
 
 For those that use Fedora, there are some rpm available For FC14/FC15 at:
   http://kojipkgs.fedoraproject.org/packages/xawtv/3.99.rc1/
 
 There's just one know caveat that affects mostly webcam usage. Xawtv now has 
 two 
 V4L2 plugins, one with libv4l and another with just v4l2. Currently, there's 
 no 
 way to select between them. I need some time to do a research about it and 
 write
 a patch to address this issue.

Ok, I've added a patch fixing the libv4l issue, and released a -rc2 version of 
it.

All patches that were found in Fedora for F14 are now upstream. There's just one
patch at F15 that it is not upstream yet (a compilation breakage).

The new tarball is available at:
http://linuxtv.org/downloads/xawtv/

And the Fedora packages are at:
http://kojipkgs.fedoraproject.org/packages/xawtv/

Dmitry is looking some patches at Debian to apply upstream. After having them 
applied,
and getting some feedback, I'll release xawtv version 3.100.

Cheers,
Mauro.
--
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 7/9 v2] ds3000: remove unnecessary dnxt, dcur structures

2011-02-01 Thread Igor M. Liplianin
All necessary parameters already stored in frontend cache.

Signed-off-by: Igor M. Liplianin liplia...@me.by
---
 drivers/media/dvb/frontends/ds3000.c |  108 -
 1 files changed, 13 insertions(+), 95 deletions(-)

diff --git a/drivers/media/dvb/frontends/ds3000.c 
b/drivers/media/dvb/frontends/ds3000.c
index 11f1aa2..b2ba5f4 100644
--- a/drivers/media/dvb/frontends/ds3000.c
+++ b/drivers/media/dvb/frontends/ds3000.c
@@ -229,31 +229,11 @@ static u8 ds3000_dvbs2_init_tab[] = {
0xb8, 0x00,
 };
 
-/* DS3000 doesn't need some parameters as input and auto-detects them */
-/* save input from the application of those parameters */
-struct ds3000_tuning {
-   u32 frequency;
-   u32 symbol_rate;
-   fe_spectral_inversion_t inversion;
-   enum fe_code_rate fec;
-
-   /* input values */
-   u8 inversion_val;
-   fe_modulation_t delivery;
-   u8 rolloff;
-};
-
 struct ds3000_state {
struct i2c_adapter *i2c;
const struct ds3000_config *config;
-
struct dvb_frontend frontend;
-
-   struct ds3000_tuning dcur;
-   struct ds3000_tuning dnxt;
-
u8 skip_fw_load;
-
/* previous uncorrected block counter for DVB-S2 */
u16 prevUCBS2;
 };
@@ -401,45 +381,6 @@ static int ds3000_tuner_readreg(struct ds3000_state 
*state, u8 reg)
return b1[0];
 }
 
-static int ds3000_set_inversion(struct ds3000_state *state,
-   fe_spectral_inversion_t inversion)
-{
-   dprintk(%s(%d)\n, __func__, inversion);
-
-   switch (inversion) {
-   case INVERSION_OFF:
-   case INVERSION_ON:
-   case INVERSION_AUTO:
-   break;
-   default:
-   return -EINVAL;
-   }
-
-   state-dnxt.inversion = inversion;
-
-   return 0;
-}
-
-static int ds3000_set_symbolrate(struct ds3000_state *state, u32 rate)
-{
-   int ret = 0;
-
-   dprintk(%s()\n, __func__);
-
-   dprintk(%s() symbol_rate = %d\n, __func__, state-dnxt.symbol_rate);
-
-   /*  check if symbol rate is within limits */
-   if ((state-dnxt.symbol_rate 
-   state-frontend.ops.info.symbol_rate_max) ||
-   (state-dnxt.symbol_rate 
-   state-frontend.ops.info.symbol_rate_min))
-   ret = -EOPNOTSUPP;
-
-   state-dnxt.symbol_rate = rate;
-
-   return ret;
-}
-
 static int ds3000_load_firmware(struct dvb_frontend *fe,
const struct firmware *fw);
 
@@ -790,13 +731,6 @@ static int ds3000_read_ucblocks(struct dvb_frontend *fe, 
u32 *ucblocks)
return 0;
 }
 
-/* Overwrite the current tuning params, we are about to tune */
-static void ds3000_clone_params(struct dvb_frontend *fe)
-{
-   struct ds3000_state *state = fe-demodulator_priv;
-   memcpy(state-dcur, state-dnxt, sizeof(state-dcur));
-}
-
 static int ds3000_set_tone(struct dvb_frontend *fe, fe_sec_tone_mode_t tone)
 {
struct ds3000_state *state = fe-demodulator_priv;
@@ -1027,22 +961,6 @@ static int ds3000_tune(struct dvb_frontend *fe,
 
dprintk(%s() , __func__);
 
-   state-dnxt.delivery = c-modulation;
-   state-dnxt.frequency = c-frequency;
-   state-dnxt.rolloff = 2; /* fixme */
-   state-dnxt.fec = c-fec_inner;
-
-   ret = ds3000_set_inversion(state, p-inversion);
-   if (ret !=  0)
-   return ret;
-
-   ret = ds3000_set_symbolrate(state, c-symbol_rate);
-   if (ret !=  0)
-   return ret;
-
-   /* discard the 'current' tuning parameters and prepare to tune */
-   ds3000_clone_params(fe);
-
/* Reset status register */
status = 0;
/* Tune */
@@ -1053,14 +971,14 @@ static int ds3000_tune(struct dvb_frontend *fe,
ds3000_tuner_writereg(state, 0x08, 0x01);
ds3000_tuner_writereg(state, 0x00, 0x01);
/* calculate and set freq divider */
-   if (state-dcur.frequency  1146000) {
+   if (p-frequency  1146000) {
ds3000_tuner_writereg(state, 0x10, 0x11);
-   ndiv = ((state-dcur.frequency * (6 + 8) * 4) +
+   ndiv = ((p-frequency * (6 + 8) * 4) +
(DS3000_XTAL_FREQ / 2)) /
DS3000_XTAL_FREQ - 1024;
} else {
ds3000_tuner_writereg(state, 0x10, 0x01);
-   ndiv = ((state-dcur.frequency * (6 + 8) * 2) +
+   ndiv = ((p-frequency * (6 + 8) * 2) +
(DS3000_XTAL_FREQ / 2)) /
DS3000_XTAL_FREQ - 1024;
}
@@ -1106,8 +1024,8 @@ static int ds3000_tune(struct dvb_frontend *fe,
ds3000_tuner_writereg(state, 0x50, 0x00);
msleep(5);
 
-   f3db = ((state-dcur.symbol_rate / 1000)  2) / 5 + 2000;
-   if ((state-dcur.symbol_rate / 1000)  5000)
+   f3db = ((c-symbol_rate / 1000)  2) / 5 + 2000;
+   if ((c-symbol_rate / 1000)  5000)