From patchwork Thu Oct 1 11:43:43 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jean Delvare X-Patchwork-Id: 50923 Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by demeter.kernel.org (8.14.2/8.14.2) with ESMTP id n91BiH1F025201 for ; Thu, 1 Oct 2009 11:44:17 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756485AbZJALnp (ORCPT ); Thu, 1 Oct 2009 07:43:45 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1756466AbZJALnp (ORCPT ); Thu, 1 Oct 2009 07:43:45 -0400 Received: from poutre.nerim.net ([62.4.16.124]:52943 "EHLO poutre.nerim.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756449AbZJALno convert rfc822-to-8bit (ORCPT ); Thu, 1 Oct 2009 07:43:44 -0400 Received: from localhost (localhost [127.0.0.1]) by poutre.nerim.net (Postfix) with ESMTP id 4FED639DE61; Thu, 1 Oct 2009 13:43:45 +0200 (CEST) X-Virus-Scanned: amavisd-new at nerim.net Received: from poutre.nerim.net ([127.0.0.1]) by localhost (poutre.nerim.net [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id oJd6x90TWunM; Thu, 1 Oct 2009 13:43:43 +0200 (CEST) Received: from hyperion.delvare (jdelvare.pck.nerim.net [62.212.121.182]) by poutre.nerim.net (Postfix) with ESMTP id A399939DE5A; Thu, 1 Oct 2009 13:43:43 +0200 (CEST) Date: Thu, 1 Oct 2009 13:43:43 +0200 From: Jean Delvare To: Andy Walls Cc: =?UTF-8?B?UGF3ZcWC?= Sikora , linux-kernel@vger.kernel.org, LMML Subject: Re: [2.6.31] ir-kbd-i2c oops. Message-ID: <20091001134343.30e7cd98@hyperion.delvare> In-Reply-To: <1254354727.4771.13.camel@palomino.walls.org> References: <200909160300.28382.pluto@agmk.net> <200909301352.28362.pluto@agmk.net> <20090930142516.23eb09df@hyperion.delvare> <200909301822.29010.pluto@agmk.net> <1254354727.4771.13.camel@palomino.walls.org> X-Mailer: Claws Mail 3.5.0 (GTK+ 2.14.4; i586-suse-linux-gnu) Mime-Version: 1.0 Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org --- 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;