1
0
mirror of https://github.com/DigitalDevices/dddvb.git synced 2023-10-10 13:37:43 +02:00

prepare new init for revision 1 FSM but do not use it for now

This commit is contained in:
rjkm 2022-02-16 15:52:53 +01:00
parent 4b69ae5399
commit d5d63ea2ef

View File

@ -322,14 +322,21 @@ int ddbridge_mod_output_start(struct ddb_output *output)
CHANNEL_CONTROL(output->nr)); CHANNEL_CONTROL(output->nr));
udelay(10); udelay(10);
ddbwritel(dev, mod->Control, CHANNEL_CONTROL(output->nr)); ddbwritel(dev, mod->Control, CHANNEL_CONTROL(output->nr));
switch (dev->link[0].info->version) {
if (dev->link[0].info->version == 2) { case 2:
{
u32 Output = (mod->frequency - 114000000) / 8000000; u32 Output = (mod->frequency - 114000000) / 8000000;
u32 KF = Symbolrate; u32 KF = Symbolrate;
u32 LF = 9000000UL; u32 LF = 9000000UL;
u32 d = gcd(KF, LF); u32 d = gcd(KF, LF);
u32 checkLF; u32 checkLF;
#if 0
if (dev->link[0].ids.revision == 1) {
mod->Control |= CHANNEL_CONTROL_ENABLE_DVB;
return -EINVAL;
break;
}
#endif
ddbwritel(dev, mod->modulation - 1, CHANNEL_SETTINGS(Channel)); ddbwritel(dev, mod->modulation - 1, CHANNEL_SETTINGS(Channel));
ddbwritel(dev, Output, CHANNEL_SETTINGS2(Channel)); ddbwritel(dev, Output, CHANNEL_SETTINGS2(Channel));
@ -356,16 +363,21 @@ int ddbridge_mod_output_start(struct ddb_output *output)
CHANNEL_CONTROL_CMD_SETUP)) CHANNEL_CONTROL_CMD_SETUP))
return -EINVAL; return -EINVAL;
mod->Control |= CHANNEL_CONTROL_ENABLE_DVB; mod->Control |= CHANNEL_CONTROL_ENABLE_DVB;
} else if (dev->link[0].info->version <= 1) { break;
}
case 0:
case 1:
/* QAM: 600 601 602 903 604 = 16 32 64 128 256 */ /* QAM: 600 601 602 903 604 = 16 32 64 128 256 */
/* ddbwritel(dev, 0x604, CHANNEL_SETTINGS(output->nr)); */ /* ddbwritel(dev, 0x604, CHANNEL_SETTINGS(output->nr)); */
ddbwritel(dev, qamtab[mod->modulation], ddbwritel(dev, qamtab[mod->modulation],
CHANNEL_SETTINGS(output->nr)); CHANNEL_SETTINGS(output->nr));
mod->Control |= (CHANNEL_CONTROL_ENABLE_IQ | mod->Control |= (CHANNEL_CONTROL_ENABLE_IQ |
CHANNEL_CONTROL_ENABLE_DVB); CHANNEL_CONTROL_ENABLE_DVB);
} else if (dev->link[0].info->version >= 16) { break;
default:
mod->Control |= (CHANNEL_CONTROL_ENABLE_IQ | mod->Control |= (CHANNEL_CONTROL_ENABLE_IQ |
CHANNEL_CONTROL_ENABLE_DVB); CHANNEL_CONTROL_ENABLE_DVB);
break;
} }
if (dev->link[0].info->version < 16) { if (dev->link[0].info->version < 16) {
mod_set_rateinc(dev, output->nr); mod_set_rateinc(dev, output->nr);
@ -1877,6 +1889,18 @@ int ddbridge_mod_do_ioctl(struct file *file, unsigned int cmd, void *parg)
return ret; return ret;
} }
static int mod_init_2_1(struct ddb *dev, u32 Frequency)
{
int i, streams = dev->link[0].info->port_num;
dev->mod_base.frequency = Frequency;
for (i = 0; i < streams; i++) {
struct ddb_mod *mod = &dev->mod[i];
mod->port = &dev->port[i];
}
return 0;
}
static int mod_init_2(struct ddb *dev, u32 Frequency) static int mod_init_2(struct ddb *dev, u32 Frequency)
{ {
int i, status, streams = dev->link[0].info->port_num; int i, status, streams = dev->link[0].info->port_num;
@ -1888,8 +1912,6 @@ static int mod_init_2(struct ddb *dev, u32 Frequency)
dev_err(dev->dev, "FSM setup failed!\n"); dev_err(dev->dev, "FSM setup failed!\n");
return -1; return -1;
} }
if (dev->link[0].ids.revision == 1)
return 0;
for (i = 0; i < streams; i++) { for (i = 0; i < streams; i++) {
struct ddb_mod *mod = &dev->mod[i]; struct ddb_mod *mod = &dev->mod[i];
@ -2056,8 +2078,6 @@ static int mod_init_sdr_iq(struct ddb *dev)
ddbwritel(dev, 0x01, 0x240); ddbwritel(dev, 0x01, 0x240);
if (dev->link[0].ids.revision == 1)
return 0;
//mod3_set_base_frequency(dev, 602000000); //mod3_set_base_frequency(dev, 602000000);
dev->mod_base.frequency = 570000000; dev->mod_base.frequency = 570000000;
@ -2065,9 +2085,11 @@ static int mod_init_sdr_iq(struct ddb *dev)
struct ddb_mod *mod = &dev->mod[i]; struct ddb_mod *mod = &dev->mod[i];
mod->port = &dev->port[i]; mod->port = &dev->port[i];
if (dev->link[0].ids.revision != 1)
ddbwritel(dev, 0x00, SDR_CHANNEL_CONTROL(i)); ddbwritel(dev, 0x00, SDR_CHANNEL_CONTROL(i));
} }
if (dev->link[0].ids.revision == 1)
return ret;
mod_set_sdr_attenuator(dev, 0); mod_set_sdr_attenuator(dev, 0);
udelay(10); udelay(10);
mod_set_sdr_gain(dev, 120); mod_set_sdr_gain(dev, 120);