Lines Matching full:layer

377 				   unsigned layer)  in mb86a20s_get_modulation()  argument
381 [0] = 0x86, /* Layer A */ in mb86a20s_get_modulation()
382 [1] = 0x8a, /* Layer B */ in mb86a20s_get_modulation()
383 [2] = 0x8e, /* Layer C */ in mb86a20s_get_modulation()
386 if (layer >= ARRAY_SIZE(reg)) in mb86a20s_get_modulation()
388 rc = mb86a20s_writereg(state, 0x6d, reg[layer]); in mb86a20s_get_modulation()
409 unsigned layer) in mb86a20s_get_fec() argument
414 [0] = 0x87, /* Layer A */ in mb86a20s_get_fec()
415 [1] = 0x8b, /* Layer B */ in mb86a20s_get_fec()
416 [2] = 0x8f, /* Layer C */ in mb86a20s_get_fec()
419 if (layer >= ARRAY_SIZE(reg)) in mb86a20s_get_fec()
421 rc = mb86a20s_writereg(state, 0x6d, reg[layer]); in mb86a20s_get_fec()
444 unsigned layer) in mb86a20s_get_interleaving() argument
452 [0] = 0x88, /* Layer A */ in mb86a20s_get_interleaving()
453 [1] = 0x8c, /* Layer B */ in mb86a20s_get_interleaving()
454 [2] = 0x90, /* Layer C */ in mb86a20s_get_interleaving()
457 if (layer >= ARRAY_SIZE(reg)) in mb86a20s_get_interleaving()
459 rc = mb86a20s_writereg(state, 0x6d, reg[layer]); in mb86a20s_get_interleaving()
470 unsigned layer) in mb86a20s_get_segment_count() argument
474 [0] = 0x89, /* Layer A */ in mb86a20s_get_segment_count()
475 [1] = 0x8d, /* Layer B */ in mb86a20s_get_segment_count()
476 [2] = 0x91, /* Layer C */ in mb86a20s_get_segment_count()
481 if (layer >= ARRAY_SIZE(reg)) in mb86a20s_get_segment_count()
484 rc = mb86a20s_writereg(state, 0x6d, reg[layer]); in mb86a20s_get_segment_count()
542 static void mb86a20s_layer_bitrate(struct dvb_frontend *fe, u32 layer, in mb86a20s_layer_bitrate() argument
616 "%s: layer %c bitrate: %d kbps; counter = %d (0x%06x)\n", in mb86a20s_layer_bitrate()
617 __func__, 'A' + layer, in mb86a20s_layer_bitrate()
621 state->estimated_rate[layer] = rate; in mb86a20s_layer_bitrate()
628 int layer, rc; in mb86a20s_get_frontend() local
644 /* Get per-layer data */ in mb86a20s_get_frontend()
646 for (layer = 0; layer < NUM_LAYERS; layer++) { in mb86a20s_get_frontend()
647 dev_dbg(&state->i2c->dev, "%s: getting data for layer %c.\n", in mb86a20s_get_frontend()
648 __func__, 'A' + layer); in mb86a20s_get_frontend()
650 rc = mb86a20s_get_segment_count(state, layer); in mb86a20s_get_frontend()
654 c->layer[layer].segment_count = rc; in mb86a20s_get_frontend()
656 c->layer[layer].segment_count = 0; in mb86a20s_get_frontend()
657 state->estimated_rate[layer] = 0; in mb86a20s_get_frontend()
660 c->isdbt_layer_enabled |= 1 << layer; in mb86a20s_get_frontend()
661 rc = mb86a20s_get_modulation(state, layer); in mb86a20s_get_frontend()
666 c->layer[layer].modulation = rc; in mb86a20s_get_frontend()
667 rc = mb86a20s_get_fec(state, layer); in mb86a20s_get_frontend()
672 c->layer[layer].fec = rc; in mb86a20s_get_frontend()
673 rc = mb86a20s_get_interleaving(state, layer); in mb86a20s_get_frontend()
678 c->layer[layer].interleaving = rc; in mb86a20s_get_frontend()
679 mb86a20s_layer_bitrate(fe, layer, c->layer[layer].modulation, in mb86a20s_get_frontend()
680 c->layer[layer].fec, in mb86a20s_get_frontend()
682 c->layer[layer].segment_count); in mb86a20s_get_frontend()
730 /* per-layer info is incomplete; discard all per-layer */ in mb86a20s_get_frontend()
801 unsigned layer, in mb86a20s_get_pre_ber() argument
809 if (layer >= NUM_LAYERS) in mb86a20s_get_pre_ber()
817 /* Check if data is available for that layer */ in mb86a20s_get_pre_ber()
818 if (!(rc & (1 << layer))) { in mb86a20s_get_pre_ber()
820 "%s: preBER for layer %c is not available yet.\n", in mb86a20s_get_pre_ber()
821 __func__, 'A' + layer); in mb86a20s_get_pre_ber()
826 rc = mb86a20s_readreg(state, 0x55 + layer * 3); in mb86a20s_get_pre_ber()
830 rc = mb86a20s_readreg(state, 0x56 + layer * 3); in mb86a20s_get_pre_ber()
834 rc = mb86a20s_readreg(state, 0x57 + layer * 3); in mb86a20s_get_pre_ber()
840 "%s: bit error before Viterbi for layer %c: %d.\n", in mb86a20s_get_pre_ber()
841 __func__, 'A' + layer, *error); in mb86a20s_get_pre_ber()
844 rc = mb86a20s_writereg(state, 0x50, 0xa7 + layer * 3); in mb86a20s_get_pre_ber()
851 rc = mb86a20s_writereg(state, 0x50, 0xa8 + layer * 3); in mb86a20s_get_pre_ber()
858 rc = mb86a20s_writereg(state, 0x50, 0xa9 + layer * 3); in mb86a20s_get_pre_ber()
867 "%s: bit count before Viterbi for layer %c: %d.\n", in mb86a20s_get_pre_ber()
868 __func__, 'A' + layer, *count); in mb86a20s_get_pre_ber()
878 if (state->estimated_rate[layer] in mb86a20s_get_pre_ber()
879 && state->estimated_rate[layer] != *count) { in mb86a20s_get_pre_ber()
881 "%s: updating layer %c preBER counter to %d.\n", in mb86a20s_get_pre_ber()
882 __func__, 'A' + layer, state->estimated_rate[layer]); in mb86a20s_get_pre_ber()
887 /* Update counter for this layer */ in mb86a20s_get_pre_ber()
888 rc = mb86a20s_writereg(state, 0x50, 0xa7 + layer * 3); in mb86a20s_get_pre_ber()
892 state->estimated_rate[layer] >> 16); in mb86a20s_get_pre_ber()
895 rc = mb86a20s_writereg(state, 0x50, 0xa8 + layer * 3); in mb86a20s_get_pre_ber()
899 state->estimated_rate[layer] >> 8); in mb86a20s_get_pre_ber()
902 rc = mb86a20s_writereg(state, 0x50, 0xa9 + layer * 3); in mb86a20s_get_pre_ber()
906 state->estimated_rate[layer]); in mb86a20s_get_pre_ber()
924 rc = mb86a20s_writereg(state, 0x53, val & ~(1 << layer)); in mb86a20s_get_pre_ber()
927 rc = mb86a20s_writereg(state, 0x53, val | (1 << layer)); in mb86a20s_get_pre_ber()
934 unsigned layer, in mb86a20s_get_post_ber() argument
943 if (layer >= NUM_LAYERS) in mb86a20s_get_post_ber()
951 /* Check if data is available for that layer */ in mb86a20s_get_post_ber()
952 if (!(rc & (1 << layer))) { in mb86a20s_get_post_ber()
954 "%s: post BER for layer %c is not available yet.\n", in mb86a20s_get_post_ber()
955 __func__, 'A' + layer); in mb86a20s_get_post_ber()
960 rc = mb86a20s_readreg(state, 0x64 + layer * 3); in mb86a20s_get_post_ber()
964 rc = mb86a20s_readreg(state, 0x65 + layer * 3); in mb86a20s_get_post_ber()
968 rc = mb86a20s_readreg(state, 0x66 + layer * 3); in mb86a20s_get_post_ber()
974 "%s: post bit error for layer %c: %d.\n", in mb86a20s_get_post_ber()
975 __func__, 'A' + layer, *error); in mb86a20s_get_post_ber()
978 rc = mb86a20s_writereg(state, 0x50, 0xdc + layer * 2); in mb86a20s_get_post_ber()
985 rc = mb86a20s_writereg(state, 0x50, 0xdd + layer * 2); in mb86a20s_get_post_ber()
995 "%s: post bit count for layer %c: %d.\n", in mb86a20s_get_post_ber()
996 __func__, 'A' + layer, *count); in mb86a20s_get_post_ber()
1005 if (!state->estimated_rate[layer]) in mb86a20s_get_post_ber()
1008 collect_rate = state->estimated_rate[layer] / 204 / 8; in mb86a20s_get_post_ber()
1015 "%s: updating postBER counter on layer %c to %d.\n", in mb86a20s_get_post_ber()
1016 __func__, 'A' + layer, collect_rate); in mb86a20s_get_post_ber()
1021 /* Update counter for this layer */ in mb86a20s_get_post_ber()
1022 rc = mb86a20s_writereg(state, 0x50, 0xdc + layer * 2); in mb86a20s_get_post_ber()
1028 rc = mb86a20s_writereg(state, 0x50, 0xdd + layer * 2); in mb86a20s_get_post_ber()
1053 rc = mb86a20s_writereg(state, 0x5f, val & ~(1 << layer)); in mb86a20s_get_post_ber()
1056 rc = mb86a20s_writereg(state, 0x5f, val | (1 << layer)); in mb86a20s_get_post_ber()
1062 unsigned layer, in mb86a20s_get_blk_error() argument
1070 if (layer >= NUM_LAYERS) in mb86a20s_get_blk_error()
1081 /* Check if data is available for that layer */ in mb86a20s_get_blk_error()
1083 if (!(rc & (1 << layer))) { in mb86a20s_get_blk_error()
1085 "%s: block counts for layer %c aren't available yet.\n", in mb86a20s_get_blk_error()
1086 __func__, 'A' + layer); in mb86a20s_get_blk_error()
1091 rc = mb86a20s_writereg(state, 0x50, 0xb9 + layer * 2); in mb86a20s_get_blk_error()
1098 rc = mb86a20s_writereg(state, 0x50, 0xba + layer * 2); in mb86a20s_get_blk_error()
1105 dev_dbg(&state->i2c->dev, "%s: block error for layer %c: %d.\n", in mb86a20s_get_blk_error()
1106 __func__, 'A' + layer, *error); in mb86a20s_get_blk_error()
1109 rc = mb86a20s_writereg(state, 0x50, 0xb2 + layer * 2); in mb86a20s_get_blk_error()
1116 rc = mb86a20s_writereg(state, 0x50, 0xb3 + layer * 2); in mb86a20s_get_blk_error()
1125 "%s: block count for layer %c: %d.\n", in mb86a20s_get_blk_error()
1126 __func__, 'A' + layer, *count); in mb86a20s_get_blk_error()
1135 if (!state->estimated_rate[layer]) in mb86a20s_get_blk_error()
1138 collect_rate = state->estimated_rate[layer] / 204 / 8; in mb86a20s_get_blk_error()
1146 "%s: updating PER counter on layer %c to %d.\n", in mb86a20s_get_blk_error()
1147 __func__, 'A' + layer, collect_rate); in mb86a20s_get_blk_error()
1157 /* Update this layer's counter */ in mb86a20s_get_blk_error()
1158 rc = mb86a20s_writereg(state, 0x50, 0xb2 + layer * 2); in mb86a20s_get_blk_error()
1164 rc = mb86a20s_writereg(state, 0x50, 0xb3 + layer * 2); in mb86a20s_get_blk_error()
1200 rc = mb86a20s_writereg(state, 0x51, val | (1 << layer)); in mb86a20s_get_blk_error()
1203 rc = mb86a20s_writereg(state, 0x51, val & ~(1 << layer)); in mb86a20s_get_blk_error()
1435 int rc, val, layer; in mb86a20s_get_blk_error_layer_CNR() local
1457 for (layer = 0; layer < NUM_LAYERS; layer++) { in mb86a20s_get_blk_error_layer_CNR()
1458 if (!(c->isdbt_layer_enabled & (1 << layer))) { in mb86a20s_get_blk_error_layer_CNR()
1459 c->cnr.stat[1 + layer].scale = FE_SCALE_NOT_AVAILABLE; in mb86a20s_get_blk_error_layer_CNR()
1463 rc = mb86a20s_writereg(state, 0x50, 0x52 + layer * 3); in mb86a20s_get_blk_error_layer_CNR()
1470 rc = mb86a20s_writereg(state, 0x50, 0x53 + layer * 3); in mb86a20s_get_blk_error_layer_CNR()
1477 rc = mb86a20s_writereg(state, 0x50, 0x54 + layer * 3); in mb86a20s_get_blk_error_layer_CNR()
1485 switch (c->layer[layer].modulation) { in mb86a20s_get_blk_error_layer_CNR()
1503 c->cnr.stat[1 + layer].scale = FE_SCALE_DECIBEL; in mb86a20s_get_blk_error_layer_CNR()
1504 c->cnr.stat[1 + layer].svalue = cnr; in mb86a20s_get_blk_error_layer_CNR()
1507 "%s: CNR for layer %c is %d.%03d dB (MER = %d).\n", in mb86a20s_get_blk_error_layer_CNR()
1508 __func__, 'A' + layer, cnr / 1000, cnr % 1000, mer); in mb86a20s_get_blk_error_layer_CNR()
1536 int layer; in mb86a20s_stats_not_ready() local
1545 /* Per-layer stats - 3 layers + global */ in mb86a20s_stats_not_ready()
1559 for (layer = 0; layer < NUM_LAYERS + 1; layer++) { in mb86a20s_stats_not_ready()
1560 c->cnr.stat[layer].scale = FE_SCALE_NOT_AVAILABLE; in mb86a20s_stats_not_ready()
1561 c->pre_bit_error.stat[layer].scale = FE_SCALE_NOT_AVAILABLE; in mb86a20s_stats_not_ready()
1562 c->pre_bit_count.stat[layer].scale = FE_SCALE_NOT_AVAILABLE; in mb86a20s_stats_not_ready()
1563 c->post_bit_error.stat[layer].scale = FE_SCALE_NOT_AVAILABLE; in mb86a20s_stats_not_ready()
1564 c->post_bit_count.stat[layer].scale = FE_SCALE_NOT_AVAILABLE; in mb86a20s_stats_not_ready()
1565 c->block_error.stat[layer].scale = FE_SCALE_NOT_AVAILABLE; in mb86a20s_stats_not_ready()
1566 c->block_count.stat[layer].scale = FE_SCALE_NOT_AVAILABLE; in mb86a20s_stats_not_ready()
1574 int rc = 0, layer; in mb86a20s_get_stats() local
1587 /* Get per-layer stats */ in mb86a20s_get_stats()
1598 for (layer = 0; layer < NUM_LAYERS; layer++) { in mb86a20s_get_stats()
1599 if (c->isdbt_layer_enabled & (1 << layer)) { in mb86a20s_get_stats()
1600 /* Layer is active and has rc segments */ in mb86a20s_get_stats()
1604 rc = mb86a20s_get_pre_ber(fe, layer, in mb86a20s_get_stats()
1607 c->pre_bit_error.stat[1 + layer].scale = FE_SCALE_COUNTER; in mb86a20s_get_stats()
1608 c->pre_bit_error.stat[1 + layer].uvalue += bit_error; in mb86a20s_get_stats()
1609 c->pre_bit_count.stat[1 + layer].scale = FE_SCALE_COUNTER; in mb86a20s_get_stats()
1610 c->pre_bit_count.stat[1 + layer].uvalue += bit_count; in mb86a20s_get_stats()
1616 c->pre_bit_error.stat[1 + layer].scale = FE_SCALE_NOT_AVAILABLE; in mb86a20s_get_stats()
1617 c->pre_bit_count.stat[1 + layer].scale = FE_SCALE_NOT_AVAILABLE; in mb86a20s_get_stats()
1619 "%s: Can't get BER for layer %c (error %d).\n", in mb86a20s_get_stats()
1620 __func__, 'A' + layer, rc); in mb86a20s_get_stats()
1622 if (c->block_error.stat[1 + layer].scale != FE_SCALE_NOT_AVAILABLE) in mb86a20s_get_stats()
1626 rc = mb86a20s_get_post_ber(fe, layer, in mb86a20s_get_stats()
1629 c->post_bit_error.stat[1 + layer].scale = FE_SCALE_COUNTER; in mb86a20s_get_stats()
1630 c->post_bit_error.stat[1 + layer].uvalue += bit_error; in mb86a20s_get_stats()
1631 c->post_bit_count.stat[1 + layer].scale = FE_SCALE_COUNTER; in mb86a20s_get_stats()
1632 c->post_bit_count.stat[1 + layer].uvalue += bit_count; in mb86a20s_get_stats()
1638 c->post_bit_error.stat[1 + layer].scale = FE_SCALE_NOT_AVAILABLE; in mb86a20s_get_stats()
1639 c->post_bit_count.stat[1 + layer].scale = FE_SCALE_NOT_AVAILABLE; in mb86a20s_get_stats()
1641 "%s: Can't get BER for layer %c (error %d).\n", in mb86a20s_get_stats()
1642 __func__, 'A' + layer, rc); in mb86a20s_get_stats()
1644 if (c->block_error.stat[1 + layer].scale != FE_SCALE_NOT_AVAILABLE) in mb86a20s_get_stats()
1648 rc = mb86a20s_get_blk_error(fe, layer, in mb86a20s_get_stats()
1652 c->block_error.stat[1 + layer].scale = FE_SCALE_COUNTER; in mb86a20s_get_stats()
1653 c->block_error.stat[1 + layer].uvalue += block_error; in mb86a20s_get_stats()
1654 c->block_count.stat[1 + layer].scale = FE_SCALE_COUNTER; in mb86a20s_get_stats()
1655 c->block_count.stat[1 + layer].uvalue += block_count; in mb86a20s_get_stats()
1661 c->block_error.stat[1 + layer].scale = FE_SCALE_NOT_AVAILABLE; in mb86a20s_get_stats()
1662 c->block_count.stat[1 + layer].scale = FE_SCALE_NOT_AVAILABLE; in mb86a20s_get_stats()
1664 "%s: Can't get PER for layer %c (error %d).\n", in mb86a20s_get_stats()
1665 __func__, 'A' + layer, rc); in mb86a20s_get_stats()
1668 if (c->block_error.stat[1 + layer].scale != FE_SCALE_NOT_AVAILABLE) in mb86a20s_get_stats()
1672 t_pre_bit_error += c->pre_bit_error.stat[1 + layer].uvalue; in mb86a20s_get_stats()
1673 t_pre_bit_count += c->pre_bit_count.stat[1 + layer].uvalue; in mb86a20s_get_stats()
1676 t_post_bit_error += c->post_bit_error.stat[1 + layer].uvalue; in mb86a20s_get_stats()
1677 t_post_bit_count += c->post_bit_count.stat[1 + layer].uvalue; in mb86a20s_get_stats()
1680 t_block_error += c->block_error.stat[1 + layer].uvalue; in mb86a20s_get_stats()
1681 t_block_count += c->block_count.stat[1 + layer].uvalue; in mb86a20s_get_stats()
1691 * At least one per-layer BER measure was read. We can now in mb86a20s_get_stats()
1712 * At least one per-layer BER measure was read. We can now in mb86a20s_get_stats()
1729 * At least one per-layer UCB measure was read. We can now in mb86a20s_get_stats()