summaryrefslogtreecommitdiff
path: root/drivers/media
diff options
context:
space:
mode:
authorMartin Samek <martin@marsark.sytes.net>2009-09-30 22:59:09 -0300
committerMauro Carvalho Chehab <mchehab@redhat.com>2009-11-07 12:55:03 -0200
commit7646b9de26c54cf4bc9c446d7ada9f91ece31e0a (patch)
treedc58f5d7fe2aa94d6d84114f9c7db6192fe3d947 /drivers/media
parent1e13c8f0c97c883287b1940719d0040fd38fcd58 (diff)
downloadlinux-3.10-7646b9de26c54cf4bc9c446d7ada9f91ece31e0a.tar.gz
linux-3.10-7646b9de26c54cf4bc9c446d7ada9f91ece31e0a.tar.bz2
linux-3.10-7646b9de26c54cf4bc9c446d7ada9f91ece31e0a.zip
V4L/DVB (13079): dib0700: fixed xc2028 firmware loading kernel oops
Fixing kernel oops when driver attemps to load xc2028 firmware. Note by djh: the patch contribute by Martin is a port of a fix I made during the PCTV 340e development. It's a temporary workaround that fixes a regression (an OOPS condition) and the real fix should be in the code that manages the i2c master on the dib7000p. But this fix does address the immmediate regression and should be merged upstream until we do a cleaner fix. Signed-off-by: Martin Samek <martin@marsark.sytes.net> Signed-off-by: Devin Heitmueller <dheitmueller@kernellabs.com> CC: stable@kernel.org Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media')
-rw-r--r--drivers/media/dvb/frontends/dib7000p.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/media/dvb/frontends/dib7000p.c b/drivers/media/dvb/frontends/dib7000p.c
index 55ef6eeb076..0781f94e05d 100644
--- a/drivers/media/dvb/frontends/dib7000p.c
+++ b/drivers/media/dvb/frontends/dib7000p.c
@@ -1375,6 +1375,11 @@ struct dvb_frontend * dib7000p_attach(struct i2c_adapter *i2c_adap, u8 i2c_addr,
if (dib7000p_identify(st) != 0)
goto error;
+ /* FIXME: make sure the dev.parent field is initialized, or else
+ request_firmware() will hit an OOPS (this should be moved somewhere
+ more common) */
+ st->i2c_master.gated_tuner_i2c_adap.dev.parent = i2c_adap->dev.parent;
+
dibx000_init_i2c_master(&st->i2c_master, DIB7000P, st->i2c_adap, st->i2c_addr);
dib7000p_demod_reset(st);