mirror of
https://github.com/DigitalDevices/dddvb.git
synced 2023-10-10 13:37:43 +02:00
change IQ mode setting
This commit is contained in:
parent
93335e856e
commit
ee6eab9ead
@ -138,7 +138,6 @@ static int read_status(struct dvb_frontend *fe, enum fe_status *status)
|
|||||||
dvbs2_bits_per_symbol[
|
dvbs2_bits_per_symbol[
|
||||||
state->mci.signal_info.
|
state->mci.signal_info.
|
||||||
dvbs2_signal_info.pls_code];
|
dvbs2_signal_info.pls_code];
|
||||||
//printk("PLS %02x\n", state->mci.signal_info.dvbs2_signal_info.pls_code);
|
|
||||||
} else
|
} else
|
||||||
sx8_base->used_ldpc_bitrate[state->mci.nr] = 0;
|
sx8_base->used_ldpc_bitrate[state->mci.nr] = 0;
|
||||||
}
|
}
|
||||||
@ -165,6 +164,7 @@ static int stop_iq(struct dvb_frontend *fe)
|
|||||||
struct mci_base *mci_base = state->mci.base;
|
struct mci_base *mci_base = state->mci.base;
|
||||||
struct sx8_base *sx8_base = (struct sx8_base *) mci_base;
|
struct sx8_base *sx8_base = (struct sx8_base *) mci_base;
|
||||||
struct mci_command cmd;
|
struct mci_command cmd;
|
||||||
|
u32 input = state->mci.tuner;
|
||||||
|
|
||||||
if (!state->iq_started)
|
if (!state->iq_started)
|
||||||
return -1;
|
return -1;
|
||||||
@ -173,8 +173,19 @@ static int stop_iq(struct dvb_frontend *fe)
|
|||||||
cmd.demod = state->mci.demod;
|
cmd.demod = state->mci.demod;
|
||||||
ddb_mci_cmd(&state->mci, &cmd, NULL);
|
ddb_mci_cmd(&state->mci, &cmd, NULL);
|
||||||
ddb_mci_config(&state->mci, SX8_TSCONFIG_MODE_NORMAL);
|
ddb_mci_config(&state->mci, SX8_TSCONFIG_MODE_NORMAL);
|
||||||
state->iq_started = 0;
|
|
||||||
|
mutex_lock(&mci_base->tuner_lock);
|
||||||
|
sx8_base->tuner_use_count[input]--;
|
||||||
|
if (!sx8_base->tuner_use_count[input])
|
||||||
|
mci_set_tuner(fe, input, 0);
|
||||||
|
if (state->mci.demod != SX8_DEMOD_NONE) {
|
||||||
|
sx8_base->demod_in_use[state->mci.demod] = 0;
|
||||||
|
state->mci.demod = SX8_DEMOD_NONE;
|
||||||
|
}
|
||||||
|
sx8_base->used_ldpc_bitrate[state->mci.nr] = 0;
|
||||||
sx8_base->iq_mode = 0;
|
sx8_base->iq_mode = 0;
|
||||||
|
state->iq_started = 0;
|
||||||
|
mutex_unlock(&mci_base->tuner_lock);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -229,7 +240,14 @@ static int start(struct dvb_frontend *fe, u32 flags, u32 modmask, u32 ts_config)
|
|||||||
u32 input = state->mci.tuner;
|
u32 input = state->mci.tuner;
|
||||||
u32 bits_per_symbol = 0;
|
u32 bits_per_symbol = 0;
|
||||||
int i = -1, stat = 0;
|
int i = -1, stat = 0;
|
||||||
|
struct ddb_link *link = state->mci.base->link;
|
||||||
|
|
||||||
|
if (link->ids.device == 0x000b) {
|
||||||
|
/* Mask out higher modulations and MIS for Basic
|
||||||
|
or search command will fail */
|
||||||
|
modmask &= 3;
|
||||||
|
p->stream_id = NO_STREAM_ID_FILTER;
|
||||||
|
}
|
||||||
if (p->symbol_rate >= MCLK / 2)
|
if (p->symbol_rate >= MCLK / 2)
|
||||||
flags &= ~1;
|
flags &= ~1;
|
||||||
if ((flags & 3) == 0)
|
if ((flags & 3) == 0)
|
||||||
@ -244,7 +262,6 @@ static int start(struct dvb_frontend *fe, u32 flags, u32 modmask, u32 ts_config)
|
|||||||
bits_per_symbol++;
|
bits_per_symbol++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
mutex_lock(&mci_base->tuner_lock);
|
mutex_lock(&mci_base->tuner_lock);
|
||||||
if (sx8_base->iq_mode) {
|
if (sx8_base->iq_mode) {
|
||||||
stat = -EBUSY;
|
stat = -EBUSY;
|
||||||
@ -358,6 +375,7 @@ static int start_iq(struct dvb_frontend *fe, u32 flags,
|
|||||||
u32 input = state->mci.tuner;
|
u32 input = state->mci.tuner;
|
||||||
int i, stat = 0;
|
int i, stat = 0;
|
||||||
|
|
||||||
|
if (!state->iq_started) {
|
||||||
mutex_lock(&mci_base->tuner_lock);
|
mutex_lock(&mci_base->tuner_lock);
|
||||||
if (sx8_base->iq_mode) {
|
if (sx8_base->iq_mode) {
|
||||||
stat = -EBUSY;
|
stat = -EBUSY;
|
||||||
@ -375,17 +393,18 @@ static int start_iq(struct dvb_frontend *fe, u32 flags,
|
|||||||
mci_set_tuner(fe, input, 1);
|
mci_set_tuner(fe, input, 1);
|
||||||
sx8_base->tuner_use_count[input]++;
|
sx8_base->tuner_use_count[input]++;
|
||||||
sx8_base->iq_mode = (ts_config > 1);
|
sx8_base->iq_mode = (ts_config > 1);
|
||||||
unlock:
|
unlock:
|
||||||
mutex_unlock(&mci_base->tuner_lock);
|
mutex_unlock(&mci_base->tuner_lock);
|
||||||
if (stat)
|
if (stat)
|
||||||
return stat;
|
return stat;
|
||||||
|
}
|
||||||
memset(&cmd, 0, sizeof(cmd));
|
memset(&cmd, 0, sizeof(cmd));
|
||||||
cmd.command = SX8_CMD_START_IQ;
|
cmd.command = SX8_CMD_START_IQ;
|
||||||
cmd.sx8_start_iq.flags = flags;
|
cmd.sx8_start_iq.flags = flags >> 8;
|
||||||
cmd.sx8_start_iq.roll_off = roll_off;
|
cmd.sx8_start_iq.roll_off = roll_off;
|
||||||
cmd.sx8_start_iq.frequency = p->frequency * 1000;
|
cmd.sx8_start_iq.frequency = p->frequency * 1000;
|
||||||
cmd.sx8_start_iq.symbol_rate = p->symbol_rate;
|
cmd.sx8_start_iq.symbol_rate = p->symbol_rate;
|
||||||
|
cmd.sx8_start_iq.gain = flags & 0xff;
|
||||||
cmd.tuner = state->mci.tuner;
|
cmd.tuner = state->mci.tuner;
|
||||||
cmd.demod = state->mci.demod;
|
cmd.demod = state->mci.demod;
|
||||||
stat = ddb_mci_cmd(&state->mci, &cmd, NULL);
|
stat = ddb_mci_cmd(&state->mci, &cmd, NULL);
|
||||||
@ -395,6 +414,13 @@ unlock:
|
|||||||
return stat;
|
return stat;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int set_lna(struct dvb_frontend *fe)
|
||||||
|
{
|
||||||
|
printk("set_lna\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static int set_parameters(struct dvb_frontend *fe)
|
static int set_parameters(struct dvb_frontend *fe)
|
||||||
{
|
{
|
||||||
int stat = 0;
|
int stat = 0;
|
||||||
@ -441,7 +467,7 @@ static int set_parameters(struct dvb_frontend *fe)
|
|||||||
state->mci.signal_info.status = MCI_DEMOD_WAIT_SIGNAL;
|
state->mci.signal_info.status = MCI_DEMOD_WAIT_SIGNAL;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
stat = start_iq(fe, iq_mode & 1, 4, ts_config);
|
stat = start_iq(fe, (isi >> 8) & 0xffff, 4, ts_config);
|
||||||
if (!stat) {
|
if (!stat) {
|
||||||
state->iq_started = 1;
|
state->iq_started = 1;
|
||||||
state->first_time_lock = 1;
|
state->first_time_lock = 1;
|
||||||
@ -530,6 +556,7 @@ static struct dvb_frontend_ops sx8_ops = {
|
|||||||
.release = release,
|
.release = release,
|
||||||
.read_status = read_status,
|
.read_status = read_status,
|
||||||
.set_input = set_input,
|
.set_input = set_input,
|
||||||
|
.set_lna = set_lna,
|
||||||
.sleep = sleep,
|
.sleep = sleep,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user