All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jean Delvare <khali@linux-fr.org>
To: Andy Walls <awalls@radix.net>
Cc: "Paweł Sikora" <pluto@agmk.net>,
	linux-kernel@vger.kernel.org, LMML <linux-media@vger.kernel.org>
Subject: Re: [2.6.31] ir-kbd-i2c oops.
Date: Thu, 1 Oct 2009 13:43:43 +0200	[thread overview]
Message-ID: <20091001134343.30e7cd98@hyperion.delvare> (raw)
In-Reply-To: <1254354727.4771.13.camel@palomino.walls.org>

On Wed, 30 Sep 2009 19:52:07 -0400, Andy Walls wrote:
> On Wed, 2009-09-30 at 18:22 +0200, Paweł Sikora wrote:
> > [   11.701267] ir_probe: addr=0x47
> > [   11.701271] ir_probe: [before override] ir_codes=(null), name=SAA713x remote, get_key=(null)
> > [   11.701273] ir_probe: [after  override] ir_codes=ffffffff814edde0, name=-q, get_key=ffffffff81479204
> > [   11.701276] ir_input_init: dev=ffff880227177000, ir=ffff880221186018, ir_type=99, ir_codes=ffffffff814edde0
> > [   11.701278] ir_input_init: [i=0] Setting bit 1768059695 of dev->keybit
> 
> 1768059695 = 0x6962732f = 'ibs/'
> 
> That doesn't seem right for ir->ir_codes[0] ...

You're right. And name=-q doesn't seem right either. So it would seem
that saa7134-input is passing garbage over to ir_input_init()... or the
data is corrupted meanwhile.

Pawel, please give a try to the following patch. Please keep the debug
patches apply too, in case we need additional info.

 drivers/media/video/saa7134/saa7134-input.c |   41 +++++++++++++--------------
 drivers/media/video/saa7134/saa7134.h       |    3 +
 2 files changed, 23 insertions(+), 21 deletions(-)

--- linux-2.6.31.orig/drivers/media/video/saa7134/saa7134-input.c	2009-09-10 10:08:22.000000000 +0200
+++ linux-2.6.31/drivers/media/video/saa7134/saa7134-input.c	2009-10-01 13:38:38.000000000 +0200
@@ -685,7 +685,6 @@ void saa7134_input_fini(struct saa7134_d
 void saa7134_probe_i2c_ir(struct saa7134_dev *dev)
 {
 	struct i2c_board_info info;
-	struct IR_i2c_init_data init_data;
 	const unsigned short addr_list[] = {
 		0x7a, 0x47, 0x71, 0x2d,
 		I2C_CLIENT_END
@@ -706,30 +705,30 @@ void saa7134_probe_i2c_ir(struct saa7134
 	}
 
 	memset(&info, 0, sizeof(struct i2c_board_info));
-	memset(&init_data, 0, sizeof(struct IR_i2c_init_data));
+	memset(&dev->ir_init_data, 0, sizeof(struct IR_i2c_init_data));
 	strlcpy(info.type, "ir_video", I2C_NAME_SIZE);
 
 	switch (dev->board) {
 	case SAA7134_BOARD_PINNACLE_PCTV_110i:
 	case SAA7134_BOARD_PINNACLE_PCTV_310i:
-		init_data.name = "Pinnacle PCTV";
+		dev->ir_init_data.name = "Pinnacle PCTV";
 		if (pinnacle_remote == 0) {
-			init_data.get_key = get_key_pinnacle_color;
-			init_data.ir_codes = ir_codes_pinnacle_color;
+			dev->ir_init_data.get_key = get_key_pinnacle_color;
+			dev->ir_init_data.ir_codes = ir_codes_pinnacle_color;
 		} else {
-			init_data.get_key = get_key_pinnacle_grey;
-			init_data.ir_codes = ir_codes_pinnacle_grey;
+			dev->ir_init_data.get_key = get_key_pinnacle_grey;
+			dev->ir_init_data.ir_codes = ir_codes_pinnacle_grey;
 		}
 		break;
 	case SAA7134_BOARD_UPMOST_PURPLE_TV:
-		init_data.name = "Purple TV";
-		init_data.get_key = get_key_purpletv;
-		init_data.ir_codes = ir_codes_purpletv;
+		dev->ir_init_data.name = "Purple TV";
+		dev->ir_init_data.get_key = get_key_purpletv;
+		dev->ir_init_data.ir_codes = ir_codes_purpletv;
 		break;
 	case SAA7134_BOARD_MSI_TVATANYWHERE_PLUS:
-		init_data.name = "MSI TV@nywhere Plus";
-		init_data.get_key = get_key_msi_tvanywhere_plus;
-		init_data.ir_codes = ir_codes_msi_tvanywhere_plus;
+		dev->ir_init_data.name = "MSI TV@nywhere Plus";
+		dev->ir_init_data.get_key = get_key_msi_tvanywhere_plus;
+		dev->ir_init_data.ir_codes = ir_codes_msi_tvanywhere_plus;
 		info.addr = 0x30;
 		/* MSI TV@nywhere Plus controller doesn't seem to
 		   respond to probes unless we read something from
@@ -741,9 +740,9 @@ void saa7134_probe_i2c_ir(struct saa7134
 			(1 == rc) ? "yes" : "no");
 		break;
 	case SAA7134_BOARD_HAUPPAUGE_HVR1110:
-		init_data.name = "HVR 1110";
-		init_data.get_key = get_key_hvr1110;
-		init_data.ir_codes = ir_codes_hauppauge_new;
+		dev->ir_init_data.name = "HVR 1110";
+		dev->ir_init_data.get_key = get_key_hvr1110;
+		dev->ir_init_data.ir_codes = ir_codes_hauppauge_new;
 		break;
 	case SAA7134_BOARD_BEHOLD_607FM_MK3:
 	case SAA7134_BOARD_BEHOLD_607FM_MK5:
@@ -757,9 +756,9 @@ void saa7134_probe_i2c_ir(struct saa7134
 	case SAA7134_BOARD_BEHOLD_M63:
 	case SAA7134_BOARD_BEHOLD_M6_EXTRA:
 	case SAA7134_BOARD_BEHOLD_H6:
-		init_data.name = "BeholdTV";
-		init_data.get_key = get_key_beholdm6xx;
-		init_data.ir_codes = ir_codes_behold;
+		dev->ir_init_data.name = "BeholdTV";
+		dev->ir_init_data.get_key = get_key_beholdm6xx;
+		dev->ir_init_data.ir_codes = ir_codes_behold;
 		break;
 	case SAA7134_BOARD_AVERMEDIA_CARDBUS_501:
 	case SAA7134_BOARD_AVERMEDIA_CARDBUS_506:
@@ -767,8 +766,8 @@ void saa7134_probe_i2c_ir(struct saa7134
 		break;
 	}
 
-	if (init_data.name)
-		info.platform_data = &init_data;
+	if (dev->ir_init_data.name)
+		info.platform_data = &dev->ir_init_data;
 	/* No need to probe if address is known */
 	if (info.addr) {
 		i2c_new_device(&dev->i2c_adap, &info);
--- linux-2.6.31.orig/drivers/media/video/saa7134/saa7134.h	2009-09-10 10:08:22.000000000 +0200
+++ linux-2.6.31/drivers/media/video/saa7134/saa7134.h	2009-10-01 13:36:53.000000000 +0200
@@ -584,6 +584,9 @@ struct saa7134_dev {
 	int                        nosignal;
 	unsigned int               insuspend;
 
+	/* I2C keyboard data */
+	struct IR_i2c_init_data    ir_init_data;
+
 	/* SAA7134_MPEG_* */
 	struct saa7134_ts          ts;
 	struct saa7134_dmaqueue    ts_q;

-- 
Jean Delvare

  reply	other threads:[~2009-10-01 11:43 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-09-16  1:00 [2.6.31] ir-kbd-i2c oops Paweł Sikora
2009-09-16  1:00 ` Paweł Sikora
     [not found] ` <200909160300.28382.pluto-PIIpFW8S9c0@public.gmane.org>
2009-09-16  6:57   ` Jean Delvare
2009-09-16  6:57     ` Jean Delvare
     [not found]     ` <20090916085701.6e883600-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2009-09-16  8:03       ` Paweł Sikora
2009-09-16  8:03         ` Paweł Sikora
     [not found]         ` <200909161003.33090.pluto-PIIpFW8S9c0@public.gmane.org>
2009-09-29 14:16           ` Jean Delvare
2009-09-29 14:16             ` Jean Delvare
     [not found]             ` <20090929161629.2a5c8d30-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2009-09-29 23:26               ` Hermann Pitton
2009-09-29 23:26                 ` Hermann Pitton
2009-09-30  8:16             ` Paweł Sikora
2009-09-30 10:57               ` Jean Delvare
2009-09-30 11:52                 ` Paweł Sikora
2009-09-30 12:25                   ` Jean Delvare
2009-09-30 16:22                     ` Paweł Sikora
2009-09-30 23:52                       ` Andy Walls
2009-10-01 11:43                         ` Jean Delvare [this message]
2009-10-03 10:08                           ` Paweł Sikora
2009-10-03 12:04                             ` Jean Delvare
2009-10-03 12:57                               ` [PATCH 1/3] gspca_gl860 Olivier Lorin
2009-10-03 13:01                                 ` [PATCH 2/3] gspca_gl860 Olivier Lorin
2009-10-03 13:03                                   ` [PATCH 3/3] gspca_gl860 Olivier Lorin
     [not found]                               ` <200910031730.45021.pluto@agmk.net>
2009-10-03 18:15                                 ` [2.6.31] ir-kbd-i2c oops Jean Delvare
2009-10-03 19:09                                   ` Paweł Sikora
2009-10-03 22:52                                     ` Hermann Pitton
2009-10-04  4:19                                       ` hermann pitton
2009-10-04  7:08                                       ` Paweł Sikora
2009-10-04 22:34                                         ` Hermann Pitton
2009-09-30 23:42                 ` Andy Walls
2009-10-01 10:06                   ` Jean Delvare
2009-10-01 10:17                     ` Paweł Sikora
2009-10-01 10:42                       ` Jean Delvare
2009-10-01 10:47                         ` Paweł Sikora

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20091001134343.30e7cd98@hyperion.delvare \
    --to=khali@linux-fr.org \
    --cc=awalls@radix.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=pluto@agmk.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.