v4l-09 saa7134 driver update
PATCH 1/1 v4l-09 saa7134 driver update
Hi,
This is a saa7134 driver update. Changes:
* add infrared remote support.
* add support for more TV cards.
* misc minor fixes.
This patch depends on the ir-input patch.
Gerd
drivers/media/video/saa7134/Makefile +1 -1
@@ -1,7 +1,7 @@ saa7134-objs := saa7134-cards.o saa7134-core.o saa7134-i2c.o \ saa7134-oss.o saa7134-ts.o saa7134-tvaudio.o \ - saa7134-vbi.o saa7134-video.o + saa7134-vbi.o saa7134-video.o saa7134-input.o obj-$(CONFIG_VIDEO_SAA7134) += saa7134.o
drivers/media/video/saa7134/saa6752hs.c +13 -8
@@ -168,13 +168,13 @@ }// wait a bit - current->state =TASK_INTERRUPTIBLE ; -schedule_timeout (1 ); +set_current_state (TASK_INTERRUPTIBLE ); +schedule_timeout (HZ /100 ); }// delay a bit to let encoder settle - current->state =TASK_INTERRUPTIBLE ; -schedule_timeout (5 ); +set_current_state (TASK_INTERRUPTIBLE ); +schedule_timeout (HZ /20 );// done return status;
@@ -230,6 +230,7 @@static int saa6752hs_init (struct i2c_client * client,struct mpeg_params * params) {unsigned char buf[3 ]; +void *data;// check the bitrate parameters first if (params !=NULL ) {
@@ -281,12 +282,13 @@i2c_master_send (client,buf,3 );// setup bitrate settings + data =i2c_get_clientdata (client);if (params) {saa6752hs_set_bitrate (client, params); -memcpy (client->data, params,sizeof (struct mpeg_params )); +memcpy (data, params,sizeof (struct mpeg_params )); }else {// parameters were not supplied. use the previous set -saa6752hs_set_bitrate (client, (struct mpeg_params *) client->data); +saa6752hs_set_bitrate (client, (struct mpeg_params *) data); }// Send SI tables
@@ -324,7 +326,7 @@if (NULL == (params =kmalloc (sizeof (struct mpeg_params ),GFP_KERNEL )))return -ENOMEM ;memcpy (params,&mpeg_params_template,sizeof (struct mpeg_params )); - client->data = params; +i2c_set_clientdata (client, params);i2c_attach_client (client);
@@ -341,8 +343,11 @@static int saa6752hs_detach (struct i2c_client *client) { +void *data; + + data =i2c_get_clientdata (client);i2c_detach_client (client); -kfree (client->data); +kfree (data);kfree (client);return 0 ; }
drivers/media/video/saa7134/saa7134-cards.c +382 -10
498 lines not on this page · raw message
drivers/media/video/saa7134/saa7134-core.c +10 -19
@@ -599,12 +599,10 @@if ((report &SAA7134_IRQ_REPORT_DONE_RA3 ))saa7134_irq_oss_done (dev,status); -#ifdef CONFIG_VIDEO_IR if ((report & (SAA7134_IRQ_REPORT_GPIO16 |SAA7134_IRQ_REPORT_GPIO18 )) && dev->remote)saa7134_input_irq (dev); -#endif };if (10 == loop) {
@@ -636,9 +634,7 @@saa7134_vbi_init1 (dev);if (card_has_ts (dev))saa7134_ts_init1 (dev); -#ifdef CONFIG_VIDEO_IR saa7134_input_init1 (dev); -#endif switch (dev->pci->device) {case PCI_DEVICE_ID_PHILIPS_SAA7134 :
@@ -714,9 +710,7 @@ }if (card_has_ts (dev))saa7134_ts_fini (dev); -#ifdef CONFIG_VIDEO_IR saa7134_input_fini (dev); -#endif saa7134_vbi_fini (dev);saa7134_video_fini (dev);saa7134_tvaudio_fini (dev);
@@ -907,7 +901,7 @@ }/* wait a bit, register i2c bus */ - current->state =TASK_INTERRUPTIBLE ; +set_current_state (TASK_INTERRUPTIBLE );schedule_timeout (HZ /10 );saa7134_i2c_register (dev);
@@ -922,6 +916,10 @@if (card_has_ts (dev))request_module ("saa6752hs" ); +#ifdef VIDIOC_G_PRIORITY +v4l2_prio_init (&dev->prio); +#endif +/* register v4l devices */ dev->video_dev =vdev_init (dev,&saa7134_video_template,"video" ); err = video_register_device(dev->video_dev,VFL_TYPE_GRABBER,
@@ -1041,18 +1039,7 @@saa_writel (SAA7134_MAIN_CTRL ,0 );/* shutdown subsystems */ -switch (dev->pci->device) { -case PCI_DEVICE_ID_PHILIPS_SAA7134 : -case PCI_DEVICE_ID_PHILIPS_SAA7133 : -case PCI_DEVICE_ID_PHILIPS_SAA7135 : -saa7134_oss_fini (dev); -break ; - } -if (card_has_ts (dev)) -saa7134_ts_fini (dev); -saa7134_vbi_fini (dev); -saa7134_video_fini (dev); -saa7134_tvaudio_fini (dev); +saa7134_hwfini (dev);/* unregister */ saa7134_i2c_unregister (dev);
@@ -1099,6 +1086,10 @@ (SAA7134_VERSION_CODE >>16 ) &0xff , (SAA7134_VERSION_CODE >>8 ) &0xff , SAA7134_VERSION_CODE & 0xff); +#ifdef SNAPSHOT +printk (KERN_INFO "saa7130/34: snapshot date %04d-%02d-%02d\n" , +SNAPSHOT /10000 , (SNAPSHOT /100 )%100 ,SNAPSHOT %100 ); +#endif return pci_module_init (&saa7134_pci_driver); }
drivers/media/video/saa7134/saa7134-input.c +218 -0
218 lines not on this page · raw message
drivers/media/video/saa7134/saa7134-oss.c +6 -5
@@ -40,7 +40,7 @@MODULE_PARM_DESC (oss_rate,"sample rate (valid are: 32000,48000)" ); #define dprintk(fmt, arg...) if (oss_debug) \ - printk(KERN_DEBUG "%s/oss: " fmt, dev->name, ## arg) + printk(KERN_DEBUG "%s/oss: " fmt, dev->name , ## arg)/* ------------------------------------------------------------------ */
@@ -295,8 +295,10 @@break ; }up (&dev->oss.lock); - current->state =TASK_INTERRUPTIBLE ; -schedule (); +set_current_state (TASK_INTERRUPTIBLE ); +if (0 == dev->oss.read_count) +schedule (); +set_current_state (TASK_RUNNING );down (&dev->oss.lock);if (signal_pending (current)) {if (0 == ret)
@@ -328,7 +330,6 @@ }up (&dev->oss.lock);remove_wait_queue (&dev->oss.wq, &wait); - current->state =TASK_RUNNING ;return ret; }
@@ -777,7 +778,7 @@spin_lock (&dev->slock);if (UNSET == dev->oss.dma_blk) { -dprintk ("irq: recording stopped%s\n" ,"" ); +dprintk ("irq: recording stopped\n" ); goto done; }if (0 != (status &0x0f000000 ))
drivers/media/video/saa7134/saa7134-ts.c +3 -3
@@ -45,7 +45,7 @@#define TS_NR_PACKETS 312 #define dprintk(fmt, arg...) if (ts_debug) \ - printk(KERN_DEBUG "%s/ts: " fmt, dev->name, ## arg) + printk(KERN_DEBUG "%s/ts: " fmt, dev->name , ## arg)/* ------------------------------------------------------------------ */
@@ -173,7 +173,7 @@saa_writeb (SAA7134_SPECIAL_MODE ,0x00 );mdelay (10 );saa_writeb (SAA7134_SPECIAL_MODE ,0x01 ); - current->state =TASK_INTERRUPTIBLE ; +set_current_state (TASK_INTERRUPTIBLE );schedule_timeout (HZ /10 ); }
@@ -196,7 +196,7 @@list_for_each (list,&saa7134_devlist) { h = list_entry(list, struct saa7134_dev, devlist); -if (h->ts_dev->minor == minor) +if (h->ts_dev && h->ts_dev->minor == minor) dev = h; }if (NULL == dev)
drivers/media/video/saa7134/saa7134-tvaudio.c +76 -40
214 lines not on this page · raw message
drivers/media/video/saa7134/saa7134-vbi.c +1 -1
@@ -39,7 +39,7 @@MODULE_PARM_DESC (vbibufs,"number of vbi buffers, range 2-32" ); #define dprintk(fmt, arg...) if (vbi_debug) \ - printk(KERN_DEBUG "%s/vbi: " fmt, dev->name, ## arg) + printk(KERN_DEBUG "%s/vbi: " fmt, dev->name , ## arg)/* ------------------------------------------------------------------ */
drivers/media/video/saa7134/saa7134-video.c +61 -5
145 lines not on this page · raw message
drivers/media/video/saa7134/saa7134.h +22 -11
@@ -29,14 +29,11 @@#include <asm/io.h> -#ifdef CONFIG_VIDEO_IR -#include "ir-common.h" -#endif -#include <media/video-buf.h> #include <media/tuner.h> #include <media/audiochip.h> #include <media/id.h> +#include <media/ir-common.h> #ifndef TRUE # define TRUE (1==1)
@@ -116,6 +113,7 @@ unsigned int wswap:1; unsigned int yuv:1; unsigned int planar:1; + unsigned int uvswap:1; };/* ----------------------------------------------------------- */
@@ -143,6 +141,16 @@#define SAA7134_BOARD_BMK_MPEX_NOTUNER 18#define SAA7134_BOARD_VIDEOMATE_TV 19#define SAA7134_BOARD_CRONOS_PLUS 20 +#define SAA7134_BOARD_10MOONSTVMASTER 21 +#define SAA7134_BOARD_MD2819 22 +#define SAA7134_BOARD_BMK_MPEX_TUNER 23 +#define SAA7134_BOARD_TVSTATION_DVR 24 +#define SAA7134_BOARD_ASUSTEK_TVFM7133 25 +#define SAA7134_BOARD_PINNACLE_PCTV_STEREO 26 +#define SAA7134_BOARD_MANLI_MTV002 27 +#define SAA7134_BOARD_MANLI_MTV001 28 +#define SAA7134_BOARD_TG3000TV 29 +#define SAA7134_BOARD_ECS_TVP3XP 30#define SAA7134_INPUT_MAX 8
@@ -242,11 +250,15 @@struct saa7134_dev *dev;unsigned int radio;enum v4l2_buf_type type; +unsigned int resources; +#ifdef VIDIOC_G_PRIORITY +enum v4l2_priority prio; +#endif +/* video overlay */ struct v4l2_window win;struct v4l2_clip clips[8 ];unsigned int nclips; -unsigned int resources;/* video capture */ struct saa7134_format *fmt;
@@ -298,7 +310,6 @@unsigned int read_count; }; -#ifdef CONFIG_VIDEO_IR/* IR input */ struct saa7134_ir {struct input_dev dev;
@@ -307,14 +318,17 @@char phys[32 ];u32 mask_keycode;u32 mask_keydown; +u32 mask_keyup; }; -#endif /* global device status */ struct saa7134_dev {struct list_head devlist;struct semaphore lock;spinlock_t slock; +#ifdef VIDIOC_G_PRIORITY +struct v4l2_prio_state prio; +#endif /* various device info */ unsigned int resources;
@@ -327,9 +341,7 @@/* infrared remote */ int has_remote; -#ifdef CONFIG_VIDEO_IR struct saa7134_ir *remote; -#endif /* pci i/o */ char name[32 ];
@@ -358,6 +370,7 @@struct saa7134_dmaqueue video_q;struct saa7134_dmaqueue ts_q;struct saa7134_dmaqueue vbi_q; +unsigned int video_fieldcount;unsigned int vbi_fieldcount;/* various v4l controls */
@@ -403,9 +416,7 @@#define saa_setb (reg,bit) saa_andorb((reg),(bit),(bit))#define saa_clearb (reg,bit) saa_andorb((reg),(bit),0) -//#define saa_wait(d) { if (need_resched()) schedule(); else udelay(d);} #define saa_wait (d) { udelay(d); } -//#define saa_wait(d) { schedule_timeout(HZ*d/1000 ?:1); } /* ----------------------------------------------------------- */ /* saa7134-core.c */
Signature · 1 line
You have a new virus in /var/mail/kraxel