Commit 3dfefc50 authored by Chris Pascoe's avatar Chris Pascoe Committed by Mauro Carvalho Chehab

V4L/DVB (6855): xc2028: select DTV78 firmware if tuning 7MHz VHF / 8MHz UHF

It seems that the DTV78 firmware is intended for use in locations where
VHF channels have 7MHz bandwidth and UHF channels have 8MHz bandwidth.
If we switch to DTV78 firmware when we detect this condition, we can
avoid firmware reloads when switching between VHF and UHF transponders.

Place the state for this in the control structure so that card drivers
can hint to us to use DTV78 firmware from the first tuning attempt.
Signed-off-by: default avatarChris Pascoe <c.pascoe@itee.uq.edu.au>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@infradead.org>
parent 897b8422
...@@ -998,20 +998,27 @@ static int xc2028_set_params(struct dvb_frontend *fe, ...@@ -998,20 +998,27 @@ static int xc2028_set_params(struct dvb_frontend *fe,
return -EINVAL; return -EINVAL;
} }
/* FIXME:
There are two Scodes that will never be selected:
DTV78 ZARLINK456, DTV78 DIBCOM52
When it should opt for DTV78 instead of DTV7 or DTV8?
*/
switch (bw) { switch (bw) {
case BANDWIDTH_8_MHZ: case BANDWIDTH_8_MHZ:
type |= DTV8 | F8MHZ; if (p->frequency < 470000000)
priv->ctrl.vhfbw7 = 0;
else
priv->ctrl.uhfbw8 = 1;
type |= (priv->ctrl.vhfbw7 && priv->ctrl.uhfbw8) ? DTV78 : DTV8;
type |= F8MHZ;
break; break;
case BANDWIDTH_7_MHZ: case BANDWIDTH_7_MHZ:
type |= DTV7 | F8MHZ; if (p->frequency < 470000000)
priv->ctrl.vhfbw7 = 1;
else
priv->ctrl.uhfbw8 = 0;
type |= (priv->ctrl.vhfbw7 && priv->ctrl.uhfbw8) ? DTV78 : DTV7;
type |= F8MHZ;
break; break;
case BANDWIDTH_6_MHZ: case BANDWIDTH_6_MHZ:
type |= DTV6 ; type |= DTV6;
priv->ctrl.vhfbw7 = 0;
priv->ctrl.uhfbw8 = 0;
break; break;
default: default:
tuner_err("error: bandwidth not supported.\n"); tuner_err("error: bandwidth not supported.\n");
......
...@@ -30,6 +30,8 @@ struct xc2028_ctrl { ...@@ -30,6 +30,8 @@ struct xc2028_ctrl {
unsigned int mts :1; unsigned int mts :1;
unsigned int d2633 :1; unsigned int d2633 :1;
unsigned int input1:1; unsigned int input1:1;
unsigned int vhfbw7:1;
unsigned int uhfbw8:1;
unsigned int demod; unsigned int demod;
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment