From 5403bbae9bfebe1f2df3a022c83e54f70906cefe Mon Sep 17 00:00:00 2001 From: Michel Ludwig Date: Fri, 16 Nov 2007 07:49:49 -0300 Subject: V4L/DVB (6612): Allow RESET_CLK callback and avoids unneeded loading TM5600/TM6000 needs clock reset during firmware load. This patch adds the capability of caling a callback method for this. Also, avoids uneeded firmware loads. Signed-off-by: Michel Ludwig Signed-off-by: Mauro Carvalho Chehab --- drivers/media/video/tuner-xc2028.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'drivers/media') diff --git a/drivers/media/video/tuner-xc2028.c b/drivers/media/video/tuner-xc2028.c index 0a2ffe4f38d..89e6e64786e 100644 --- a/drivers/media/video/tuner-xc2028.c +++ b/drivers/media/video/tuner-xc2028.c @@ -461,6 +461,23 @@ static int load_firmware(struct dvb_frontend *fe, unsigned int type, } continue; } + if (size >= 0xff00) { + switch (size) { + case 0xff00: + rc = priv->tuner_callback(priv->video_dev, + XC2028_RESET_CLK, 0); + if (rc < 0) { + tuner_err("Error at RESET code %d\n", + (*p) & 0x7f); + return -EINVAL; + } + default: + tuner_info("Invalid RESET code %d\n", + size & 0x7f); + return -EINVAL; + + } + } /* Checks for a sleep command */ if (size & 0x8000) { @@ -627,6 +644,9 @@ static int check_firmware(struct dvb_frontend *fe, enum tuner_mode new_mode, priv->bandwidth = bandwidth; } + if (!change_digital_bandwidth && priv->mode == T_DIGITAL_TV) + return 0; + /* Load INIT1, if needed */ tuner_dbg("Load init1 firmware, if exists\n"); type0 = BASE | INIT1; -- cgit v1.2.3