[media] dvb:tc90522: fix stats report

* report the fixed per-transponder symbolrate instead of per-TS ones
* add output TS-ID report

Signed-off-by: Akihiro Tsukada <tskd08@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
This commit is contained in:
Akihiro Tsukada 2014-10-31 10:23:18 -03:00 committed by Mauro Carvalho Chehab
parent cba63cf8f9
commit 906aaf5a19

View File

@ -216,32 +216,30 @@ static int tc90522s_get_frontend(struct dvb_frontend *fe)
c->delivery_system = SYS_ISDBS;
layers = 0;
ret = reg_read(state, 0xe8, val, 3);
ret = reg_read(state, 0xe6, val, 5);
if (ret == 0) {
int slots;
u8 v;
c->stream_id = val[0] << 8 | val[1];
/* high/single layer */
v = (val[0] & 0x70) >> 4;
v = (val[2] & 0x70) >> 4;
c->modulation = (v == 7) ? PSK_8 : QPSK;
c->fec_inner = fec_conv_sat[v];
c->layer[0].fec = c->fec_inner;
c->layer[0].modulation = c->modulation;
c->layer[0].segment_count = val[1] & 0x3f; /* slots */
c->layer[0].segment_count = val[3] & 0x3f; /* slots */
/* low layer */
v = (val[0] & 0x07);
v = (val[2] & 0x07);
c->layer[1].fec = fec_conv_sat[v];
if (v == 0) /* no low layer */
c->layer[1].segment_count = 0;
else
c->layer[1].segment_count = val[2] & 0x3f; /* slots */
c->layer[1].segment_count = val[4] & 0x3f; /* slots */
/* actually, BPSK if v==1, but not defined in fe_modulation_t */
c->layer[1].modulation = QPSK;
layers = (v > 0) ? 2 : 1;
slots = c->layer[0].segment_count + c->layer[1].segment_count;
c->symbol_rate = 28860000 * slots / 48;
}
/* statistics */