[PATCH] xc5000: add set_config and other
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 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 +++ b/drivers/
[PATCH v2] Add a 10 bpp packed greyscale format.
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 --- 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 @@ + 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 @@ + + +V4L2_PIX_FMT_Y10P ('Y10P') +&manvol; + + +V4L2_PIX_FMT_Y10P +Grey-scale image as a packed array + + +Description + +This 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. + + + V4L2_PIX_FMT_Y10P 4 pixel data stream taking 5 bytes + + + Packed representation + pixels cross the byte boundary and have a ratio of 5 bytes for each 4 + pixels. + + + + + + Y'00[9:2] + Y'00[1:0]Y'01[9:4] + Y'01[3:0]Y'02[9:6] + Y'02[5:0]Y'03[9:8] + Y'03[7:0] + + + + + + + + + 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. &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 v4l2_pix_format { #define V4L2_PIX_FMT_Y4 v4l2_fourcc('Y', '0', '4', ' ') /* 4 Greyscale */ #define V4L2_PIX_FMT_Y6 v4l2_fourcc('Y', '0', '6', ' ') /* 6 Greyscale */ #define V4L2_PIX_FMT_Y10 v4l2_fourcc('Y', '1', '0', ' ') /* 10 Greyscale */ +#define V4L2_PIX_FMT_Y10P v4l2_fourcc('Y', '1', '0', 'P') /* 10 Greyscale as a packed array */ #define V4L2_PIX_FMT_Y16 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 v4l2_fourcc('Y', '0', '6', ' ') /* 6 Greyscale */ #define V4L2_PIX_FMT_Y10 v4l2_fourcc('Y', '1', '0', ' ') /* 10 Greyscale */ +#define V4L2_PIX_FMT_Y10Pv4l2_fourcc('Y', '1', '0', 'P') /* 10 Greyscale as a packed array */ #define V4L2_PIX_FMT_Y16 v4l2_fourcc('Y', '1', '6', ' ') /* 16 Greyscale */ /* Palette formats */ -- 1.7.2.3 -- 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: Asus U3100 Mini Plus
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 : > 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 : >> 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
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
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
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", >
Re: SoC Camera driver and TV decoder
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. 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" To: "Janusz Uzycki" Cc: ; "Linux Media Mailing List" 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/ -- 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
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" > > To: "Janusz Uzycki" > Cc: ; "Linux Media Mailing List" > > 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
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
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
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 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 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 #include #include +#include #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) + snd_cx88_wm8775_volume_put(kcontrol, value); +
Call for testers: V4L1 support dropped from xawtv - Was: Re: Call for testers: V4L1 support dropped from tvtime
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
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 1/9 v2] ds3000: fill in demod init function
Make some initializations in init, not in tune function Signed-off-by: Igor M. Liplianin --- drivers/media/dvb/frontends/ds3000.c | 16 1 files changed, 12 insertions(+), 4 deletions(-) diff --git a/drivers/media/dvb/frontends/ds3000.c b/drivers/media/dvb/frontends/ds3000.c index 125dfad..4773916 100644 --- a/drivers/media/dvb/frontends/ds3000.c +++ b/drivers/media/dvb/frontends/ds3000.c @@ -1092,10 +1092,6 @@ static int ds3000_tune(struct dvb_frontend *fe, /* Reset status register */ status = 0; /* Tune */ - /* TS2020 init */ - ds3000_tuner_writereg(state, 0x42, 0x73); - ds3000_tuner_writereg(state, 0x05, 0x01); - ds3000_tuner_writereg(state, 0x62, 0xf5); /* unknown */ ds3000_tuner_writereg(state, 0x07, 0x02); ds3000_tuner_writereg(state, 0x10, 0x00); @@ -1345,7 +1341,19 @@ static enum dvbfe_algo ds3000_get_algo(struct dvb_frontend *fe) */ static int ds3000_initfe(struct dvb_frontend *fe) { + struct ds3000_state *state = fe->demodulator_priv; + int ret; + dprintk("%s()\n", __func__); + /* hard reset */ + ds3000_writereg(state, 0x08, 0x01 | ds3000_readreg(state, 0x08)); + msleep(1); + + /* TS2020 init */ + ds3000_tuner_writereg(state, 0x42, 0x73); + ds3000_tuner_writereg(state, 0x05, 0x01); + ds3000_tuner_writereg(state, 0x62, 0xf5); + 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 2/9 v2] ds3000: decrease mpeg clock output
TeVii s480 works fine with that on DVB-S2 channels Signed-off-by: Igor M. Liplianin --- 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
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 --- 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
Variable 'retune' does not make sense. Loop is not needed for only one try. Remove unnecessary dprintk's. Signed-off-by: Igor M. Liplianin --- 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); + ds3
[PATCH 4/9 v2] ds3000: loading firmware during demod init
Speed up tuning, as firmware is not necessary to load every attempt to tune Signed-off-by: Igor M. Liplianin --- 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
Remove a lot of debug messages and delays. Signed-off-by: Igor M. Liplianin --- 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 8/9 v2] ds3000: add carrier offset calculation
Signed-off-by: Igor M. Liplianin --- drivers/media/dvb/frontends/ds3000.c | 30 -- 1 files changed, 28 insertions(+), 2 deletions(-) diff --git a/drivers/media/dvb/frontends/ds3000.c b/drivers/media/dvb/frontends/ds3000.c index b2ba5f4..e2037b5 100644 --- a/drivers/media/dvb/frontends/ds3000.c +++ b/drivers/media/dvb/frontends/ds3000.c @@ -948,6 +948,25 @@ static int ds3000_get_property(struct dvb_frontend *fe, return 0; } +static int ds3000_set_carrier_offset(struct dvb_frontend *fe, + s32 carrier_offset_khz) +{ + struct ds3000_state *state = fe->demodulator_priv; + s32 tmp; + + tmp = carrier_offset_khz; + tmp *= 65536; + tmp = (2 * tmp + DS3000_SAMPLE_RATE) / (2 * DS3000_SAMPLE_RATE); + + if (tmp < 0) + tmp += 65536; + + ds3000_writereg(state, 0x5f, tmp >> 8); + ds3000_writereg(state, 0x5e, tmp & 0xff); + + return 0; +} + static int ds3000_tune(struct dvb_frontend *fe, struct dvb_frontend_parameters *p) { @@ -955,7 +974,8 @@ static int ds3000_tune(struct dvb_frontend *fe, struct dtv_frontend_properties *c = &fe->dtv_property_cache; int i; - u8 status, mlpf, mlpf_new, mlpf_max, mlpf_min, nlpf; + u8 status, mlpf, mlpf_new, mlpf_max, mlpf_min, nlpf, div4; + s32 offset_khz; u16 value, ndiv; u32 f3db; @@ -970,9 +990,12 @@ static int ds3000_tune(struct dvb_frontend *fe, ds3000_tuner_writereg(state, 0x60, 0x79); ds3000_tuner_writereg(state, 0x08, 0x01); ds3000_tuner_writereg(state, 0x00, 0x01); + div4 = 0; + /* calculate and set freq divider */ if (p->frequency < 1146000) { ds3000_tuner_writereg(state, 0x10, 0x11); + div4 = 1; ndiv = ((p->frequency * (6 + 8) * 4) + (DS3000_XTAL_FREQ / 2)) / DS3000_XTAL_FREQ - 1024; @@ -1076,6 +1099,9 @@ static int ds3000_tune(struct dvb_frontend *fe, ds3000_tuner_writereg(state, 0x50, 0x00); msleep(60); + offset_khz = (ndiv - ndiv % 2 + 1024) * DS3000_XTAL_FREQ + / (6 + 8) / (div4 + 1) / 2 - p->frequency; + /* ds3000 global reset */ ds3000_writereg(state, 0x07, 0x80); ds3000_writereg(state, 0x07, 0x00); @@ -1179,7 +1205,7 @@ static int ds3000_tune(struct dvb_frontend *fe, /* start ds3000 build-in uC */ ds3000_writereg(state, 0xb2, 0x00); - /* TODO: calculate and set carrier offset */ + ds3000_set_carrier_offset(fe, offset_khz); for (i = 0; i < 30 ; i++) { ds3000_read_status(fe, &status); -- 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
Signed-off-by: Igor M. Liplianin --- 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
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
All necessary parameters already stored in frontend cache. Signed-off-by: Igor M. Liplianin --- 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
Re: [PATCH v5 2/5] omap3: Remove unusued ISP CBUFF resource
* Laurent Pinchart [110127 04:38]: > From: Sergio Aguirre > > The ISP CBUFF module isn't use, its resource isn't needed. > > Signed-off-by: Sergio Aguirre > Acked-by: Laurent Pinchart Assuming you want to queue all of these via linux-media: Acked-by: Tony Lindgren -- 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 v5 4/5] omap2: Fix camera resources for multiomap
* Laurent Pinchart [110127 04:38]: > From: Sergio Aguirre > > Make sure the kernel can be compiled with both OMAP2 and OMAP3 camera > support linked in, and give public symbols proper omap2/omap3 prefixes. > > Signed-off-by: Sergio Aguirre > Acked-by: Laurent Pinchart Acked-by: Tony Lindgren -- 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