Commit cb2444df authored by Ricardo Cerqueira's avatar Ricardo Cerqueira Committed by Linus Torvalds

[PATCH] V4L: 913: saa713x cards with i2c remotes now autoload ir-kbd-i2c

SAA713x cards with i2c remotes now autoload ir-kbd-i2c (disable_ir works, as
it does for GPIO remotes)
Signed-off-by: default avatarRicardo Cerqueira <v4l@cerqueira.org>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@brturbo.com.br>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent f1bcef88
......@@ -3038,7 +3038,7 @@ int saa7134_board_init1(struct saa7134_dev *dev)
switch (dev->board) {
case SAA7134_BOARD_FLYVIDEO2000:
case SAA7134_BOARD_FLYVIDEO3000:
dev->has_remote = 1;
dev->has_remote = SAA7134_REMOTE_GPIO;
board_flyvideo(dev);
break;
case SAA7134_BOARD_FLYTVPLATINUM_MINI2:
......@@ -3068,7 +3068,7 @@ int saa7134_board_init1(struct saa7134_dev *dev)
case SAA7134_BOARD_GOTVIEW_7135:
case SAA7134_BOARD_KWORLD_TERMINATOR:
case SAA7134_BOARD_PCTV_CARDBUS:
dev->has_remote = 1;
dev->has_remote = SAA7134_REMOTE_GPIO;
break;
case SAA7134_BOARD_MD5044:
printk("%s: seems there are two different versions of the MD5044\n"
......@@ -3108,6 +3108,11 @@ int saa7134_board_init1(struct saa7134_dev *dev)
saa_writeb (SAA7134_PRODUCTION_TEST_MODE, 0x00);
break;
/* i2c remotes */
case SAA7134_BOARD_PINNACLE_PCTV_110i:
case SAA7134_BOARD_UPMOST_PURPLE_TV:
dev->has_remote = SAA7134_REMOTE_I2C;
break;
}
return 0;
}
......
......@@ -712,10 +712,12 @@ static int saa7134_hwinit2(struct saa7134_dev *dev)
SAA7134_IRQ2_INTE_PE |
SAA7134_IRQ2_INTE_AR;
if (dev->has_remote)
if (dev->has_remote == SAA7134_REMOTE_GPIO)
irq2_mask |= (SAA7134_IRQ2_INTE_GPIO18 |
SAA7134_IRQ2_INTE_GPIO18A |
SAA7134_IRQ2_INTE_GPIO16 );
else if (dev->has_remote == SAA7134_REMOTE_I2C)
request_module("ir-kbd-i2c");
saa_writel(SAA7134_IRQ1, 0);
saa_writel(SAA7134_IRQ2, irq2_mask);
......
......@@ -716,7 +716,7 @@ int saa7134_input_init1(struct saa7134_dev *dev)
int polling = 0;
int ir_type = IR_TYPE_OTHER;
if (!dev->has_remote)
if (dev->has_remote != SAA7134_REMOTE_GPIO)
return -ENODEV;
if (disable_ir)
return -ENODEV;
......@@ -877,6 +877,7 @@ void saa7134_input_fini(struct saa7134_dev *dev)
void saa7134_set_i2c_ir(struct saa7134_dev *dev, struct IR_i2c *ir)
{
if (disable_ir) {
dprintk("Found supported i2c remote, but IR has been disabled\n");
ir->get_key=NULL;
return;
}
......
......@@ -212,6 +212,12 @@ struct saa7134_format {
#define SAA7134_MAXBOARDS 8
#define SAA7134_INPUT_MAX 8
/* ----------------------------------------------------------- */
/* Since we support 2 remote types, lets tell them apart */
#define SAA7134_REMOTE_GPIO 1
#define SAA7134_REMOTE_I2C 2
/* ----------------------------------------------------------- */
/* Video Output Port Register Initialization Options */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment