diff options
| author | Ricardo Cerqueira <devnull@localhost> | 2005-11-10 02:06:34 +0000 | 
|---|---|---|
| committer | Ricardo Cerqueira <devnull@localhost> | 2005-11-10 02:06:34 +0000 | 
| commit | b1b1574e4e2b44751d2a18c065799830a2836354 (patch) | |
| tree | 74e2eb4826da5b91f9684d24f8c2eb718132b93d /v4l_experimental/bttv-input/bttv-input.diff | |
| parent | 970c5905cb9c2f7613ceb203591cd3862d0df53e (diff) | |
| download | mediapointer-dvb-s2-b1b1574e4e2b44751d2a18c065799830a2836354.tar.gz mediapointer-dvb-s2-b1b1574e4e2b44751d2a18c065799830a2836354.tar.bz2 | |
EXPERIMENTAL merge of ir-kbd-gpio into bttv
From:
	- To keep consistency with other chips, bttv input is now handled
	by bttv-input.c (i.e., the bttv module itself)
	- ir-kbd-gpio is redundant, and was killed
Signed-off-by: Ricardo Cerqueira <v4l@cerqueira.org>
Diffstat (limited to 'v4l_experimental/bttv-input/bttv-input.diff')
| -rw-r--r-- | v4l_experimental/bttv-input/bttv-input.diff | 253 | 
1 files changed, 253 insertions, 0 deletions
| diff --git a/v4l_experimental/bttv-input/bttv-input.diff b/v4l_experimental/bttv-input/bttv-input.diff new file mode 100644 index 000000000..50dee8b45 --- /dev/null +++ b/v4l_experimental/bttv-input/bttv-input.diff @@ -0,0 +1,253 @@ +Index: linux/drivers/media/video/bttv-cards.c +=================================================================== +RCS file: /cvs/video4linux/v4l-kernel/linux/drivers/media/video/bttv-cards.c,v +retrieving revision 1.101 +diff -u -r1.101 bttv-cards.c +--- linux/drivers/media/video/bttv-cards.c	8 Nov 2005 18:02:29 -0000	1.101 ++++ linux/drivers/media/video/bttv-cards.c	10 Nov 2005 01:59:57 -0000 +@@ -2160,7 +2160,6 @@ + 		.has_remote	= 1, + 		.gpiomask	= 0x1b, + 		.no_gpioirq     = 1, +-		.any_irq		= 1, + 	}, + 	[BTTV_BOARD_PV143] = { + 		/* Jorge Boncompte - DTI2 <jorge@dti2.net> */ +@@ -3420,8 +3419,6 @@ + 		btv->has_remote=1; + 	if (!bttv_tvcards[btv->c.type].no_gpioirq) + 		btv->gpioirq=1; +-	if (bttv_tvcards[btv->c.type].any_irq) +-		btv->any_irq = 1; + 	if (bttv_tvcards[btv->c.type].audio_hook) + 		btv->audio_hook=bttv_tvcards[btv->c.type].audio_hook; +  +Index: linux/drivers/media/video/bttv-driver.c +=================================================================== +RCS file: /cvs/video4linux/v4l-kernel/linux/drivers/media/video/bttv-driver.c,v +retrieving revision 1.67 +diff -u -r1.67 bttv-driver.c +--- linux/drivers/media/video/bttv-driver.c	9 Nov 2005 18:30:51 -0000	1.67 ++++ linux/drivers/media/video/bttv-driver.c	10 Nov 2005 02:00:07 -0000 +@@ -3698,8 +3698,8 @@ + 	btv=(struct bttv *)dev_id; +  + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) +-	if (btv->any_irq) +-		handled = bttv_any_irq(&btv->c); ++	if (btv->custom_irq) ++		handled = btv->custom_irq(btv); + #endif +  + 	count=0; +@@ -3736,10 +3736,10 @@ + 		if (astat&BT848_INT_VSYNC) + 			btv->field_count++; +  +-		if (astat & BT848_INT_GPINT) { ++		if ((astat & BT848_INT_GPINT) && btv->remote) { + 			wake_up(&btv->gpioq); + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) +-			bttv_gpio_irq(&btv->c); ++			bttv_input_irq(btv); + #endif + 		} +  +@@ -4080,6 +4080,8 @@ + 		bttv_sub_add_device(&btv->c, "dvb"); + #endif +  ++	bttv_input_init(btv); ++ + 	/* everything is fine */ + 	bttv_num++; + 	return 0; +@@ -4114,8 +4116,9 @@ + 	/* tell gpio modules we are leaving ... */ + 	btv->shutdown=1; + 	wake_up(&btv->gpioq); ++	bttv_input_fini(btv); + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) +-	bttv_sub_del_devices(&btv->c); ++	//bttv_sub_del_devices(&btv->c); + #endif +  + 	/* unregister i2c_bus + input */ +Index: linux/drivers/media/video/bttv-gpio.c +=================================================================== +RCS file: /cvs/video4linux/v4l-kernel/linux/drivers/media/video/bttv-gpio.c,v +retrieving revision 1.9 +diff -u -r1.9 bttv-gpio.c +--- linux/drivers/media/video/bttv-gpio.c	8 Nov 2005 18:02:29 -0000	1.9 ++++ linux/drivers/media/video/bttv-gpio.c	10 Nov 2005 02:00:08 -0000 +@@ -114,24 +114,6 @@ + 	} + } +  +-int bttv_any_irq(struct bttv_core *core) +-{ +-	struct bttv_sub_driver *drv; +-	struct bttv_sub_device *dev; +-	struct list_head *item; +-	int handled = 0; +- +-	list_for_each(item,&core->subs) { +-		dev = list_entry(item,struct bttv_sub_device,list); +-		drv = to_bttv_sub_drv(dev->dev.driver); +-		if (drv && drv->any_irq) { +-			if (drv->any_irq(dev)) +-				handled = 1; +-		} +-	} +-	return handled; +-} +- + /* ----------------------------------------------------------------------- */ + /* external: sub-driver register/unregister                                */ +  +Index: linux/drivers/media/video/bttv.h +=================================================================== +RCS file: /cvs/video4linux/v4l-kernel/linux/drivers/media/video/bttv.h,v +retrieving revision 1.34 +diff -u -r1.34 bttv.h +--- linux/drivers/media/video/bttv.h	8 Nov 2005 18:02:29 -0000	1.34 ++++ linux/drivers/media/video/bttv.h	10 Nov 2005 02:00:09 -0000 +@@ -18,6 +18,8 @@ + #include "compat.h" + #include <linux/videodev.h> + #include <linux/i2c.h> ++#include <media/ir-common.h> ++#include <media/ir-kbd-i2c.h> +  + /* ---------------------------------------------------------- */ + /* exported by bttv-cards.c                                   */ +@@ -212,6 +214,34 @@ +  + struct bttv; +  ++ ++struct bttv_ir { ++	struct input_dev        dev; ++	struct ir_input_state   ir; ++	char                    name[32]; ++	char                    phys[32]; ++ ++	/* Usual gpio signalling */ ++ ++	u32                     mask_keycode; ++	u32                     mask_keydown; ++	u32                     mask_keyup; ++	u32                     polling; ++	u32                     last_gpio; ++	struct work_struct      work; ++	struct timer_list       timer; ++ ++	/* RC5 gpio */ ++	u32 rc5_gpio; ++	struct timer_list timer_end;	/* timer_end for code completion */ ++	struct timer_list timer_keyup;	/* timer_end for key release */ ++	u32 last_rc5;			/* last good rc5 code */ ++	u32 last_bit;			/* last raw bit seen */ ++	u32 code;			/* raw code under construction */ ++	struct timeval base_time;	/* time of last seen code */ ++	int active;			/* building raw code */ ++}; ++ + struct tvcard + { + 	char *name; +@@ -237,7 +267,6 @@ + 	unsigned int has_dvb:1; + 	unsigned int has_remote:1; + 	unsigned int no_gpioirq:1; +-	unsigned int any_irq:1; +  + 	/* other settings */ + 	unsigned int pll; +@@ -344,7 +373,6 @@ + 	struct device_driver   drv; + 	char                   wanted[BUS_ID_SIZE]; + 	void                   (*gpio_irq)(struct bttv_sub_device *sub); +-	int                    (*any_irq)(struct bttv_sub_device *sub); + }; + #define to_bttv_sub_drv(x) container_of((x), struct bttv_sub_driver, drv) +  +@@ -380,6 +408,10 @@ + 			 unsigned char b2, int both); + extern void bttv_readee(struct bttv *btv, unsigned char *eedata, int addr); +  ++extern int bttv_input_init(struct bttv *dev); ++extern void bttv_input_fini(struct bttv *dev); ++extern void bttv_input_irq(struct bttv *dev); ++ + #endif /* _BTTV_H_ */ + /* +  * Local variables: +Index: linux/drivers/media/video/bttvp.h +=================================================================== +RCS file: /cvs/video4linux/v4l-kernel/linux/drivers/media/video/bttvp.h,v +retrieving revision 1.25 +diff -u -r1.25 bttvp.h +--- linux/drivers/media/video/bttvp.h	8 Nov 2005 18:02:29 -0000	1.25 ++++ linux/drivers/media/video/bttvp.h	10 Nov 2005 02:00:10 -0000 +@@ -218,7 +218,6 @@ + int bttv_sub_add_device(struct bttv_core *core, char *name); + int bttv_sub_del_devices(struct bttv_core *core); + void bttv_gpio_irq(struct bttv_core *core); +-int bttv_any_irq(struct bttv_core *core); +  + #endif +  +@@ -288,7 +287,8 @@ + 	struct bttv_pll_info pll; + 	int triton1; + 	int gpioirq; +-	int any_irq; ++	int (*custom_irq)(struct bttv *btv); ++ + 	int use_i2c_hw; +  + 	/* old gpio interface */ +@@ -313,7 +313,7 @@ +  + 	/* infrared remote */ + 	int has_remote; +-	struct bttv_input *remote; ++	struct bttv_ir *remote; +  + 	/* locking */ + 	spinlock_t s_lock; +Index: v4l/Makefile +=================================================================== +RCS file: /cvs/video4linux/v4l-kernel/v4l/Makefile,v +retrieving revision 1.97 +diff -u -r1.97 Makefile +--- v4l/Makefile	9 Nov 2005 19:11:03 -0000	1.97 ++++ v4l/Makefile	10 Nov 2005 02:00:11 -0000 +@@ -16,7 +16,7 @@ +  + # drivers objects + bttv-objs	:= bttv-driver.o bttv-cards.o bttv-risc.o bttv-if.o \ +-		   bttv-vbi.o bttv-i2c.o ++		   bttv-vbi.o bttv-i2c.o bttv-input.o + saa7134-objs    := saa7134-core.o saa7134-i2c.o saa7134-video.o \ + 		   saa7134-vbi.o saa7134-tvaudio.o \ + 		   saa7134-cards.o saa7134-ts.o saa7134-input.o +@@ -68,7 +68,7 @@ + ifeq ($(VERSION).$(PATCHLEVEL),2.6) +   ifeq ($(CONFIG_VIDEO_BTTV),m) +     bttv-objs			+= bttv-gpio.o +-    obj-$(CONFIG_VIDEO_IR)	+= ir-kbd-gpio.o ir-kbd-i2c.o  ++    obj-$(CONFIG_VIDEO_IR)	+= ir-kbd-i2c.o  +   endif +   ifeq ($(CONFIG_VIDEO_SAA7134),m) +     obj-$(CONFIG_VIDEO_IR)	+= ir-kbd-i2c.o  +@@ -165,7 +165,7 @@ + inst_video := btcx-risc.ko bttv.ko tda9887.ko tuner.ko tvaudio.ko tveeprom.ko saa6588.ko + inst_video += tvmixer.ko v4l1-compat.ko v4l2-common.ko wm8775.ko cs53l32a.ko + inst_video += video-buf.ko video-buf-dvb.ko +-inst_video += ir-kbd-gpio.ko ir-kbd-i2c.ko msp3400.ko ++inst_video += ir-kbd-i2c.ko msp3400.ko + inst_video += tvp5150.ko saa711x.ko saa7134-alsa.ko saa7134-oss.ko + inst_video += saa7115.ko cx25840.ko saa7127.ko compat_ioctl32.ko + inst_cx88 := cx8800.ko cx8802.ko cx88-alsa.ko  | 
