From ffe4f0ac431dc707cc1cea4bd2df9fe50cca6478 Mon Sep 17 00:00:00 2001 From: Chris Pascoe Date: Sun, 2 Dec 2007 09:30:55 -0300 Subject: [PATCH] --- yaml --- r: 76647 b: refs/heads/master c: ef207feddf826f099562b239543c447e68991b84 h: refs/heads/master i: 76645: 3c30d8388c05bc45f66aa9805734308c09753316 76643: 591567bd8e7ac7328e350d2ecc66e73e59710a71 76639: 01d6b18e1d289c30aed60b32031eca7c86b33ad7 v: v3 --- [refs] | 2 +- trunk/drivers/media/video/tuner-xc2028.c | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index af89f1e56a24..1373ac19141b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 0e614cd1a5a09b36a3b6d0fff8a08a97800d3cce +refs/heads/master: ef207feddf826f099562b239543c447e68991b84 diff --git a/trunk/drivers/media/video/tuner-xc2028.c b/trunk/drivers/media/video/tuner-xc2028.c index ddd94f1d6a6f..1817bf67dad1 100644 --- a/trunk/drivers/media/video/tuner-xc2028.c +++ b/trunk/drivers/media/video/tuner-xc2028.c @@ -395,6 +395,7 @@ static int seek_firmware(struct dvb_frontend *fe, unsigned int type, { struct xc2028_data *priv = fe->tuner_priv; int i, best_i = -1, best_nr_matches = 0; + unsigned int ign_firm_type_mask = 0; tuner_dbg("%s called, want type=", __FUNCTION__); if (debug) { @@ -412,16 +413,18 @@ static int seek_firmware(struct dvb_frontend *fe, unsigned int type, if (type & BASE) type &= BASE_TYPES; - else if (type & SCODE) + else if (type & SCODE) { type &= SCODE_TYPES; - else if (type & DTV_TYPES) + ign_firm_type_mask = HAS_IF; + } else if (type & DTV_TYPES) type &= DTV_TYPES; else if (type & STD_SPECIFIC_TYPES) type &= STD_SPECIFIC_TYPES; /* Seek for exact match */ for (i = 0; i < priv->firm_size; i++) { - if ((type == priv->firm[i].type) && (*id == priv->firm[i].id)) + if ((type == (priv->firm[i].type & ~ign_firm_type_mask)) && + (*id == priv->firm[i].id)) goto found; } @@ -430,7 +433,7 @@ static int seek_firmware(struct dvb_frontend *fe, unsigned int type, v4l2_std_id match_mask; int nr_matches; - if (type != priv->firm[i].type) + if (type != (priv->firm[i].type & ~ign_firm_type_mask)) continue; match_mask = *id & priv->firm[i].id;