V4L/DVB (12698): em28xx: ir-kbd-i2c init data needs a persistent object
commitd2ebd0f806fdb6104903365e355675934eec22b2
authorMauro Carvalho Chehab <mchehab@redhat.com>
Mon, 7 Sep 2009 05:16:47 +0000 (7 02:16 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Sat, 12 Sep 2009 15:20:15 +0000 (12 12:20 -0300)
tree8455ec9d42ac4a8cff60a4b5261a88814bca5818
parent4d708a5e9e5db74da28965fa00082d8c9323f523
V4L/DVB (12698): em28xx: ir-kbd-i2c init data needs a persistent object

ir-kbd-i2c's ir_probe() function can be called much later (i.e. at
ir-kbd-i2c module load), than the lifetime of a struct IR_i2c_init_data
allocated off of the stack in cx18_i2c_new_ir() at registration time.
Make sure we pass a pointer to a persistent IR_i2c_init_data object at
i2c registration time.

Thanks to Brian Rogers, Dustin Mitchell, Andy Walls and Jean Delvare to
rise this question.

Before this patch, if ir-kbd-i2c were probed after em28xx, trash data
were used. After the patch, no matter what order, it is properly
reported as tested by me:

input: i2c IR (i2c IR (EM2840 Hauppaug as /class/input/input10
ir-kbd-i2c: i2c IR (i2c IR (EM2840 Hauppaug detected at i2c-4/4-0030/ir0 [em28xx #0]

Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/video/em28xx/em28xx-cards.c
drivers/media/video/em28xx/em28xx.h