From 3778a64de5bffccf2bdcd4d83ab27a34b88af36f Mon Sep 17 00:00:00 2001 From: Ralph Metzler Date: Wed, 11 Oct 2017 13:47:50 +0200 Subject: [PATCH] add MODULATOR_RESET property --- ddbridge/ddbridge-modulator.c | 24 ++++++++++++++---------- include/linux/dvb/mod.h | 1 + 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/ddbridge/ddbridge-modulator.c b/ddbridge/ddbridge-modulator.c index f37f247..9f9bddd 100644 --- a/ddbridge/ddbridge-modulator.c +++ b/ddbridge/ddbridge-modulator.c @@ -474,17 +474,16 @@ static int mod_fsm_setup(struct ddb *dev, u32 MaxUsedChannels) u32 Capacity; u32 tmp = ddbreadl(dev, FSM_STATUS); - if ((tmp & FSM_STATUS_READY) == 0) { - status = mod_setup_max2871(dev, max2871_fsm); - if (status) - return status; - ddbwritel(dev, FSM_CMD_RESET, FSM_CONTROL); - msleep(20); + status = mod_setup_max2871(dev, max2871_fsm); + if (status) + return status; + ddbwritel(dev, FSM_CMD_RESET, FSM_CONTROL); + msleep(20); + + tmp = ddbreadl(dev, FSM_STATUS); + if ((tmp & FSM_STATUS_READY) == 0) + return -1; - tmp = ddbreadl(dev, FSM_STATUS); - if ((tmp & FSM_STATUS_READY) == 0) - return -1; - } Capacity = ddbreadl(dev, FSM_CAPACITY); if (((tmp & FSM_STATUS_QAMREADY) != 0) && ((Capacity & FSM_CAPACITY_INUSE) != 0)) @@ -1529,6 +1528,11 @@ static int mod_prop_proc(struct ddb_mod *mod, struct dtv_property *tvp) if (mod->port->dev->link[0].info->version == 2) return mod_set_vga(mod->port->dev, tvp->u.data); return -EINVAL; + + case MODULATOR_RESET: + if (mod->port->dev->link[0].info->version == 2) + return mod_fsm_setup(mod->port->dev,0 ); + return -EINVAL; } return 0; } diff --git a/include/linux/dvb/mod.h b/include/linux/dvb/mod.h index eeba3e7..3d57643 100644 --- a/include/linux/dvb/mod.h +++ b/include/linux/dvb/mod.h @@ -30,6 +30,7 @@ struct dvb_mod_channel_params { #define MODULATOR_INPUT_BITRATE 33 /* Hz */ #define MODULATOR_PCR_MODE 34 /* 1=pcr correction enabled */ #define MODULATOR_GAIN 35 +#define MODULATOR_RESET 36 #define MODULATOR_OUTPUT_ARI 64 #endif /*_UAPI_DVBMOD_H_*/