Lines Matching full:layer
385 unsigned layer) in mb86a20s_get_modulation() argument
389 [0] = 0x86, /* Layer A */ in mb86a20s_get_modulation()
390 [1] = 0x8a, /* Layer B */ in mb86a20s_get_modulation()
391 [2] = 0x8e, /* Layer C */ in mb86a20s_get_modulation()
394 if (layer >= ARRAY_SIZE(reg)) in mb86a20s_get_modulation()
396 rc = mb86a20s_writereg(state, 0x6d, reg[layer]); in mb86a20s_get_modulation()
417 unsigned layer) in mb86a20s_get_fec() argument
422 [0] = 0x87, /* Layer A */ in mb86a20s_get_fec()
423 [1] = 0x8b, /* Layer B */ in mb86a20s_get_fec()
424 [2] = 0x8f, /* Layer C */ in mb86a20s_get_fec()
427 if (layer >= ARRAY_SIZE(reg)) in mb86a20s_get_fec()
429 rc = mb86a20s_writereg(state, 0x6d, reg[layer]); in mb86a20s_get_fec()
452 unsigned layer) in mb86a20s_get_interleaving() argument
460 [0] = 0x88, /* Layer A */ in mb86a20s_get_interleaving()
461 [1] = 0x8c, /* Layer B */ in mb86a20s_get_interleaving()
462 [2] = 0x90, /* Layer C */ in mb86a20s_get_interleaving()
465 if (layer >= ARRAY_SIZE(reg)) in mb86a20s_get_interleaving()
467 rc = mb86a20s_writereg(state, 0x6d, reg[layer]); in mb86a20s_get_interleaving()
478 unsigned layer) in mb86a20s_get_segment_count() argument
482 [0] = 0x89, /* Layer A */ in mb86a20s_get_segment_count()
483 [1] = 0x8d, /* Layer B */ in mb86a20s_get_segment_count()
484 [2] = 0x91, /* Layer C */ in mb86a20s_get_segment_count()
489 if (layer >= ARRAY_SIZE(reg)) in mb86a20s_get_segment_count()
492 rc = mb86a20s_writereg(state, 0x6d, reg[layer]); in mb86a20s_get_segment_count()
550 static void mb86a20s_layer_bitrate(struct dvb_frontend *fe, u32 layer, in mb86a20s_layer_bitrate() argument
624 "%s: layer %c bitrate: %d kbps; counter = %d (0x%06x)\n", in mb86a20s_layer_bitrate()
625 __func__, 'A' + layer, in mb86a20s_layer_bitrate()
629 state->estimated_rate[layer] = rate; in mb86a20s_layer_bitrate()
636 int layer, rc; in mb86a20s_get_frontend() local
652 /* Get per-layer data */ in mb86a20s_get_frontend()
654 for (layer = 0; layer < NUM_LAYERS; layer++) { in mb86a20s_get_frontend()
655 dev_dbg(&state->i2c->dev, "%s: getting data for layer %c.\n", in mb86a20s_get_frontend()
656 __func__, 'A' + layer); in mb86a20s_get_frontend()
658 rc = mb86a20s_get_segment_count(state, layer); in mb86a20s_get_frontend()
662 c->layer[layer].segment_count = rc; in mb86a20s_get_frontend()
664 c->layer[layer].segment_count = 0; in mb86a20s_get_frontend()
665 state->estimated_rate[layer] = 0; in mb86a20s_get_frontend()
668 c->isdbt_layer_enabled |= 1 << layer; in mb86a20s_get_frontend()
669 rc = mb86a20s_get_modulation(state, layer); in mb86a20s_get_frontend()
674 c->layer[layer].modulation = rc; in mb86a20s_get_frontend()
675 rc = mb86a20s_get_fec(state, layer); in mb86a20s_get_frontend()
680 c->layer[layer].fec = rc; in mb86a20s_get_frontend()
681 rc = mb86a20s_get_interleaving(state, layer); in mb86a20s_get_frontend()
686 c->layer[layer].interleaving = rc; in mb86a20s_get_frontend()
687 mb86a20s_layer_bitrate(fe, layer, c->layer[layer].modulation, in mb86a20s_get_frontend()
688 c->layer[layer].fec, in mb86a20s_get_frontend()
690 c->layer[layer].segment_count); in mb86a20s_get_frontend()
738 /* per-layer info is incomplete; discard all per-layer */ in mb86a20s_get_frontend()
809 unsigned layer, in mb86a20s_get_pre_ber() argument
817 if (layer >= NUM_LAYERS) in mb86a20s_get_pre_ber()
825 /* Check if data is available for that layer */ in mb86a20s_get_pre_ber()
826 if (!(rc & (1 << layer))) { in mb86a20s_get_pre_ber()
828 "%s: preBER for layer %c is not available yet.\n", in mb86a20s_get_pre_ber()
829 __func__, 'A' + layer); in mb86a20s_get_pre_ber()
834 rc = mb86a20s_readreg(state, 0x55 + layer * 3); in mb86a20s_get_pre_ber()
838 rc = mb86a20s_readreg(state, 0x56 + layer * 3); in mb86a20s_get_pre_ber()
842 rc = mb86a20s_readreg(state, 0x57 + layer * 3); in mb86a20s_get_pre_ber()
848 "%s: bit error before Viterbi for layer %c: %d.\n", in mb86a20s_get_pre_ber()
849 __func__, 'A' + layer, *error); in mb86a20s_get_pre_ber()
852 rc = mb86a20s_writereg(state, 0x50, 0xa7 + layer * 3); in mb86a20s_get_pre_ber()
859 rc = mb86a20s_writereg(state, 0x50, 0xa8 + layer * 3); in mb86a20s_get_pre_ber()
866 rc = mb86a20s_writereg(state, 0x50, 0xa9 + layer * 3); in mb86a20s_get_pre_ber()
875 "%s: bit count before Viterbi for layer %c: %d.\n", in mb86a20s_get_pre_ber()
876 __func__, 'A' + layer, *count); in mb86a20s_get_pre_ber()
886 if (state->estimated_rate[layer] in mb86a20s_get_pre_ber()
887 && state->estimated_rate[layer] != *count) { in mb86a20s_get_pre_ber()
889 "%s: updating layer %c preBER counter to %d.\n", in mb86a20s_get_pre_ber()
890 __func__, 'A' + layer, state->estimated_rate[layer]); in mb86a20s_get_pre_ber()
895 /* Update counter for this layer */ in mb86a20s_get_pre_ber()
896 rc = mb86a20s_writereg(state, 0x50, 0xa7 + layer * 3); in mb86a20s_get_pre_ber()
900 state->estimated_rate[layer] >> 16); in mb86a20s_get_pre_ber()
903 rc = mb86a20s_writereg(state, 0x50, 0xa8 + layer * 3); in mb86a20s_get_pre_ber()
907 state->estimated_rate[layer] >> 8); in mb86a20s_get_pre_ber()
910 rc = mb86a20s_writereg(state, 0x50, 0xa9 + layer * 3); in mb86a20s_get_pre_ber()
914 state->estimated_rate[layer]); in mb86a20s_get_pre_ber()
932 rc = mb86a20s_writereg(state, 0x53, val & ~(1 << layer)); in mb86a20s_get_pre_ber()
935 rc = mb86a20s_writereg(state, 0x53, val | (1 << layer)); in mb86a20s_get_pre_ber()
942 unsigned layer, in mb86a20s_get_post_ber() argument
951 if (layer >= NUM_LAYERS) in mb86a20s_get_post_ber()
959 /* Check if data is available for that layer */ in mb86a20s_get_post_ber()
960 if (!(rc & (1 << layer))) { in mb86a20s_get_post_ber()
962 "%s: post BER for layer %c is not available yet.\n", in mb86a20s_get_post_ber()
963 __func__, 'A' + layer); in mb86a20s_get_post_ber()
968 rc = mb86a20s_readreg(state, 0x64 + layer * 3); in mb86a20s_get_post_ber()
972 rc = mb86a20s_readreg(state, 0x65 + layer * 3); in mb86a20s_get_post_ber()
976 rc = mb86a20s_readreg(state, 0x66 + layer * 3); in mb86a20s_get_post_ber()
982 "%s: post bit error for layer %c: %d.\n", in mb86a20s_get_post_ber()
983 __func__, 'A' + layer, *error); in mb86a20s_get_post_ber()
986 rc = mb86a20s_writereg(state, 0x50, 0xdc + layer * 2); in mb86a20s_get_post_ber()
993 rc = mb86a20s_writereg(state, 0x50, 0xdd + layer * 2); in mb86a20s_get_post_ber()
1003 "%s: post bit count for layer %c: %d.\n", in mb86a20s_get_post_ber()
1004 __func__, 'A' + layer, *count); in mb86a20s_get_post_ber()
1013 if (!state->estimated_rate[layer]) in mb86a20s_get_post_ber()
1016 collect_rate = state->estimated_rate[layer] / 204 / 8; in mb86a20s_get_post_ber()
1023 "%s: updating postBER counter on layer %c to %d.\n", in mb86a20s_get_post_ber()
1024 __func__, 'A' + layer, collect_rate); in mb86a20s_get_post_ber()
1029 /* Update counter for this layer */ in mb86a20s_get_post_ber()
1030 rc = mb86a20s_writereg(state, 0x50, 0xdc + layer * 2); in mb86a20s_get_post_ber()
1036 rc = mb86a20s_writereg(state, 0x50, 0xdd + layer * 2); in mb86a20s_get_post_ber()
1061 rc = mb86a20s_writereg(state, 0x5f, val & ~(1 << layer)); in mb86a20s_get_post_ber()
1064 rc = mb86a20s_writereg(state, 0x5f, val | (1 << layer)); in mb86a20s_get_post_ber()
1070 unsigned layer, in mb86a20s_get_blk_error() argument
1078 if (layer >= NUM_LAYERS) in mb86a20s_get_blk_error()
1089 /* Check if data is available for that layer */ in mb86a20s_get_blk_error()
1091 if (!(rc & (1 << layer))) { in mb86a20s_get_blk_error()
1093 "%s: block counts for layer %c aren't available yet.\n", in mb86a20s_get_blk_error()
1094 __func__, 'A' + layer); in mb86a20s_get_blk_error()
1099 rc = mb86a20s_writereg(state, 0x50, 0xb9 + layer * 2); in mb86a20s_get_blk_error()
1106 rc = mb86a20s_writereg(state, 0x50, 0xba + layer * 2); in mb86a20s_get_blk_error()
1113 dev_dbg(&state->i2c->dev, "%s: block error for layer %c: %d.\n", in mb86a20s_get_blk_error()
1114 __func__, 'A' + layer, *error); in mb86a20s_get_blk_error()
1117 rc = mb86a20s_writereg(state, 0x50, 0xb2 + layer * 2); in mb86a20s_get_blk_error()
1124 rc = mb86a20s_writereg(state, 0x50, 0xb3 + layer * 2); in mb86a20s_get_blk_error()
1133 "%s: block count for layer %c: %d.\n", in mb86a20s_get_blk_error()
1134 __func__, 'A' + layer, *count); in mb86a20s_get_blk_error()
1143 if (!state->estimated_rate[layer]) in mb86a20s_get_blk_error()
1146 collect_rate = state->estimated_rate[layer] / 204 / 8; in mb86a20s_get_blk_error()
1154 "%s: updating PER counter on layer %c to %d.\n", in mb86a20s_get_blk_error()
1155 __func__, 'A' + layer, collect_rate); in mb86a20s_get_blk_error()
1165 /* Update this layer's counter */ in mb86a20s_get_blk_error()
1166 rc = mb86a20s_writereg(state, 0x50, 0xb2 + layer * 2); in mb86a20s_get_blk_error()
1172 rc = mb86a20s_writereg(state, 0x50, 0xb3 + layer * 2); in mb86a20s_get_blk_error()
1208 rc = mb86a20s_writereg(state, 0x51, val | (1 << layer)); in mb86a20s_get_blk_error()
1211 rc = mb86a20s_writereg(state, 0x51, val & ~(1 << layer)); in mb86a20s_get_blk_error()
1443 int rc, val, layer; in mb86a20s_get_blk_error_layer_CNR() local
1465 for (layer = 0; layer < NUM_LAYERS; layer++) { in mb86a20s_get_blk_error_layer_CNR()
1466 if (!(c->isdbt_layer_enabled & (1 << layer))) { in mb86a20s_get_blk_error_layer_CNR()
1467 c->cnr.stat[1 + layer].scale = FE_SCALE_NOT_AVAILABLE; in mb86a20s_get_blk_error_layer_CNR()
1471 rc = mb86a20s_writereg(state, 0x50, 0x52 + layer * 3); in mb86a20s_get_blk_error_layer_CNR()
1478 rc = mb86a20s_writereg(state, 0x50, 0x53 + layer * 3); in mb86a20s_get_blk_error_layer_CNR()
1485 rc = mb86a20s_writereg(state, 0x50, 0x54 + layer * 3); in mb86a20s_get_blk_error_layer_CNR()
1493 switch (c->layer[layer].modulation) { in mb86a20s_get_blk_error_layer_CNR()
1511 c->cnr.stat[1 + layer].scale = FE_SCALE_DECIBEL; in mb86a20s_get_blk_error_layer_CNR()
1512 c->cnr.stat[1 + layer].svalue = cnr; in mb86a20s_get_blk_error_layer_CNR()
1515 "%s: CNR for layer %c is %d.%03d dB (MER = %d).\n", in mb86a20s_get_blk_error_layer_CNR()
1516 __func__, 'A' + layer, cnr / 1000, cnr % 1000, mer); in mb86a20s_get_blk_error_layer_CNR()
1544 int layer; in mb86a20s_stats_not_ready() local
1553 /* Per-layer stats - 3 layers + global */ in mb86a20s_stats_not_ready()
1567 for (layer = 0; layer < NUM_LAYERS + 1; layer++) { in mb86a20s_stats_not_ready()
1568 c->cnr.stat[layer].scale = FE_SCALE_NOT_AVAILABLE; in mb86a20s_stats_not_ready()
1569 c->pre_bit_error.stat[layer].scale = FE_SCALE_NOT_AVAILABLE; in mb86a20s_stats_not_ready()
1570 c->pre_bit_count.stat[layer].scale = FE_SCALE_NOT_AVAILABLE; in mb86a20s_stats_not_ready()
1571 c->post_bit_error.stat[layer].scale = FE_SCALE_NOT_AVAILABLE; in mb86a20s_stats_not_ready()
1572 c->post_bit_count.stat[layer].scale = FE_SCALE_NOT_AVAILABLE; in mb86a20s_stats_not_ready()
1573 c->block_error.stat[layer].scale = FE_SCALE_NOT_AVAILABLE; in mb86a20s_stats_not_ready()
1574 c->block_count.stat[layer].scale = FE_SCALE_NOT_AVAILABLE; in mb86a20s_stats_not_ready()
1582 int rc = 0, layer; in mb86a20s_get_stats() local
1595 /* Get per-layer stats */ in mb86a20s_get_stats()
1606 for (layer = 0; layer < NUM_LAYERS; layer++) { in mb86a20s_get_stats()
1607 if (c->isdbt_layer_enabled & (1 << layer)) { in mb86a20s_get_stats()
1608 /* Layer is active and has rc segments */ in mb86a20s_get_stats()
1612 rc = mb86a20s_get_pre_ber(fe, layer, in mb86a20s_get_stats()
1615 c->pre_bit_error.stat[1 + layer].scale = FE_SCALE_COUNTER; in mb86a20s_get_stats()
1616 c->pre_bit_error.stat[1 + layer].uvalue += bit_error; in mb86a20s_get_stats()
1617 c->pre_bit_count.stat[1 + layer].scale = FE_SCALE_COUNTER; in mb86a20s_get_stats()
1618 c->pre_bit_count.stat[1 + layer].uvalue += bit_count; in mb86a20s_get_stats()
1624 c->pre_bit_error.stat[1 + layer].scale = FE_SCALE_NOT_AVAILABLE; in mb86a20s_get_stats()
1625 c->pre_bit_count.stat[1 + layer].scale = FE_SCALE_NOT_AVAILABLE; in mb86a20s_get_stats()
1627 "%s: Can't get BER for layer %c (error %d).\n", in mb86a20s_get_stats()
1628 __func__, 'A' + layer, rc); in mb86a20s_get_stats()
1630 if (c->block_error.stat[1 + layer].scale != FE_SCALE_NOT_AVAILABLE) in mb86a20s_get_stats()
1634 rc = mb86a20s_get_post_ber(fe, layer, in mb86a20s_get_stats()
1637 c->post_bit_error.stat[1 + layer].scale = FE_SCALE_COUNTER; in mb86a20s_get_stats()
1638 c->post_bit_error.stat[1 + layer].uvalue += bit_error; in mb86a20s_get_stats()
1639 c->post_bit_count.stat[1 + layer].scale = FE_SCALE_COUNTER; in mb86a20s_get_stats()
1640 c->post_bit_count.stat[1 + layer].uvalue += bit_count; in mb86a20s_get_stats()
1646 c->post_bit_error.stat[1 + layer].scale = FE_SCALE_NOT_AVAILABLE; in mb86a20s_get_stats()
1647 c->post_bit_count.stat[1 + layer].scale = FE_SCALE_NOT_AVAILABLE; in mb86a20s_get_stats()
1649 "%s: Can't get BER for layer %c (error %d).\n", in mb86a20s_get_stats()
1650 __func__, 'A' + layer, rc); in mb86a20s_get_stats()
1652 if (c->block_error.stat[1 + layer].scale != FE_SCALE_NOT_AVAILABLE) in mb86a20s_get_stats()
1656 rc = mb86a20s_get_blk_error(fe, layer, in mb86a20s_get_stats()
1660 c->block_error.stat[1 + layer].scale = FE_SCALE_COUNTER; in mb86a20s_get_stats()
1661 c->block_error.stat[1 + layer].uvalue += block_error; in mb86a20s_get_stats()
1662 c->block_count.stat[1 + layer].scale = FE_SCALE_COUNTER; in mb86a20s_get_stats()
1663 c->block_count.stat[1 + layer].uvalue += block_count; in mb86a20s_get_stats()
1669 c->block_error.stat[1 + layer].scale = FE_SCALE_NOT_AVAILABLE; in mb86a20s_get_stats()
1670 c->block_count.stat[1 + layer].scale = FE_SCALE_NOT_AVAILABLE; in mb86a20s_get_stats()
1672 "%s: Can't get PER for layer %c (error %d).\n", in mb86a20s_get_stats()
1673 __func__, 'A' + layer, rc); in mb86a20s_get_stats()
1676 if (c->block_error.stat[1 + layer].scale != FE_SCALE_NOT_AVAILABLE) in mb86a20s_get_stats()
1680 t_pre_bit_error += c->pre_bit_error.stat[1 + layer].uvalue; in mb86a20s_get_stats()
1681 t_pre_bit_count += c->pre_bit_count.stat[1 + layer].uvalue; in mb86a20s_get_stats()
1684 t_post_bit_error += c->post_bit_error.stat[1 + layer].uvalue; in mb86a20s_get_stats()
1685 t_post_bit_count += c->post_bit_count.stat[1 + layer].uvalue; in mb86a20s_get_stats()
1688 t_block_error += c->block_error.stat[1 + layer].uvalue; in mb86a20s_get_stats()
1689 t_block_count += c->block_count.stat[1 + layer].uvalue; in mb86a20s_get_stats()
1699 * At least one per-layer BER measure was read. We can now in mb86a20s_get_stats()
1720 * At least one per-layer BER measure was read. We can now in mb86a20s_get_stats()
1737 * At least one per-layer UCB measure was read. We can now in mb86a20s_get_stats()