• Home
  • Raw
  • Download

Lines Matching +full:2 +full:c

2  * Panasonic MN88473 DVB-T/T2/C demodulator driver
4 * Copyright (C) 2014 Antti Palosaari <crope@iki.fi>
8 * the Free Software Foundation; either version 2 of the License, or
30 struct dtv_frontend_properties *c = &fe->dtv_property_cache; in mn88473_set_frontend() local
39 c->delivery_system, c->modulation, c->frequency, in mn88473_set_frontend()
40 c->bandwidth_hz, c->symbol_rate, c->inversion, c->stream_id); in mn88473_set_frontend()
47 switch (c->delivery_system) { in mn88473_set_frontend()
68 switch (c->delivery_system) { in mn88473_set_frontend()
71 switch (c->bandwidth_hz) { in mn88473_set_frontend()
115 if_val[2] = (uitmp >> 0) & 0xff; in mn88473_set_frontend()
117 ret = regmap_write(dev->regmap[2], 0x05, 0x00); in mn88473_set_frontend()
120 ret = regmap_write(dev->regmap[2], 0xfb, 0x13); in mn88473_set_frontend()
123 ret = regmap_write(dev->regmap[2], 0xef, 0x13); in mn88473_set_frontend()
126 ret = regmap_write(dev->regmap[2], 0xf9, 0x13); in mn88473_set_frontend()
129 ret = regmap_write(dev->regmap[2], 0x00, 0x18); in mn88473_set_frontend()
132 ret = regmap_write(dev->regmap[2], 0x01, 0x01); in mn88473_set_frontend()
135 ret = regmap_write(dev->regmap[2], 0x02, 0x21); in mn88473_set_frontend()
138 ret = regmap_write(dev->regmap[2], 0x03, delivery_system_val); in mn88473_set_frontend()
141 ret = regmap_write(dev->regmap[2], 0x0b, 0x00); in mn88473_set_frontend()
146 ret = regmap_write(dev->regmap[2], 0x10 + i, if_val[i]); in mn88473_set_frontend()
151 switch (c->delivery_system) { in mn88473_set_frontend()
155 ret = regmap_write(dev->regmap[2], 0x13 + i, in mn88473_set_frontend()
170 ret = regmap_write(dev->regmap[2], 0x2d, reg_bank2_2d_val); in mn88473_set_frontend()
173 ret = regmap_write(dev->regmap[2], 0x2e, 0x00); in mn88473_set_frontend()
176 ret = regmap_write(dev->regmap[2], 0x56, 0x0d); in mn88473_set_frontend()
207 ret = regmap_bulk_write(dev->regmap[0], 0x40, "\xf4\x08", 2); in mn88473_set_frontend()
227 if (c->delivery_system == SYS_DVBT2) { in mn88473_set_frontend()
228 ret = regmap_write(dev->regmap[2], 0x36, in mn88473_set_frontend()
229 (c->stream_id == NO_STREAM_ID_FILTER) ? 0 : in mn88473_set_frontend()
230 c->stream_id ); in mn88473_set_frontend()
236 ret = regmap_write(dev->regmap[2], 0xf8, 0x9f); in mn88473_set_frontend()
250 struct dtv_frontend_properties *c = &fe->dtv_property_cache; in mn88473_read_status() local
261 switch (c->delivery_system) { in mn88473_read_status()
279 ret = regmap_read(dev->regmap[2], 0x8b, &utmp); in mn88473_read_status()
322 for (i = 0; i < 2; i++) { in mn88473_read_status()
323 ret = regmap_bulk_read(dev->regmap[2], 0x86 + i, in mn88473_read_status()
330 utmp1 = buf[0] << 8 | buf[1] << 0 | buf[0] >> 2; in mn88473_read_status()
333 c->strength.stat[0].scale = FE_SCALE_RELATIVE; in mn88473_read_status()
334 c->strength.stat[0].uvalue = utmp1; in mn88473_read_status()
336 c->strength.stat[0].scale = FE_SCALE_NOT_AVAILABLE; in mn88473_read_status()
340 if (*status & FE_HAS_VITERBI && c->delivery_system == SYS_DVBT) { in mn88473_read_status()
342 ret = regmap_bulk_read(dev->regmap[0], 0x8f, buf, 2); in mn88473_read_status()
357 c->cnr.stat[0].svalue = stmp; in mn88473_read_status()
358 c->cnr.stat[0].scale = FE_SCALE_DECIBEL; in mn88473_read_status()
360 c->delivery_system == SYS_DVBT2) { in mn88473_read_status()
363 ret = regmap_bulk_read(dev->regmap[2], 0xb7 + i, in mn88473_read_status()
369 utmp = buf[1] << 8 | buf[2] << 0; in mn88473_read_status()
370 utmp1 = (buf[0] >> 2) & 0x01; /* 0=SISO, 1=MISO */ in mn88473_read_status()
391 c->cnr.stat[0].svalue = stmp; in mn88473_read_status()
392 c->cnr.stat[0].scale = FE_SCALE_DECIBEL; in mn88473_read_status()
394 c->delivery_system == SYS_DVBC_ANNEX_A) { in mn88473_read_status()
395 /* DVB-C CNR */ in mn88473_read_status()
401 utmp2 = buf[2] << 8 | buf[3] << 0; /* noise */ in mn88473_read_status()
413 c->cnr.stat[0].svalue = stmp; in mn88473_read_status()
414 c->cnr.stat[0].scale = FE_SCALE_DECIBEL; in mn88473_read_status()
416 c->cnr.stat[0].scale = FE_SCALE_NOT_AVAILABLE; in mn88473_read_status()
420 if (*status & FE_HAS_LOCK && (c->delivery_system == SYS_DVBT || in mn88473_read_status()
421 c->delivery_system == SYS_DVBC_ANNEX_A)) { in mn88473_read_status()
422 /* DVB-T & DVB-C BER */ in mn88473_read_status()
427 utmp1 = buf[0] << 16 | buf[1] << 8 | buf[2] << 0; in mn88473_read_status()
433 c->post_bit_error.stat[0].scale = FE_SCALE_COUNTER; in mn88473_read_status()
434 c->post_bit_error.stat[0].uvalue += utmp1; in mn88473_read_status()
435 c->post_bit_count.stat[0].scale = FE_SCALE_COUNTER; in mn88473_read_status()
436 c->post_bit_count.stat[0].uvalue += utmp2; in mn88473_read_status()
438 c->post_bit_error.stat[0].scale = FE_SCALE_NOT_AVAILABLE; in mn88473_read_status()
439 c->post_bit_count.stat[0].scale = FE_SCALE_NOT_AVAILABLE; in mn88473_read_status()
449 utmp2 = buf[2] << 8 | buf[3] << 0; in mn88473_read_status()
453 c->block_error.stat[0].scale = FE_SCALE_COUNTER; in mn88473_read_status()
454 c->block_error.stat[0].uvalue += utmp1; in mn88473_read_status()
455 c->block_count.stat[0].scale = FE_SCALE_COUNTER; in mn88473_read_status()
456 c->block_count.stat[0].uvalue += utmp2; in mn88473_read_status()
458 c->block_error.stat[0].scale = FE_SCALE_NOT_AVAILABLE; in mn88473_read_status()
459 c->block_count.stat[0].scale = FE_SCALE_NOT_AVAILABLE; in mn88473_read_status()
472 struct dtv_frontend_properties *c = &fe->dtv_property_cache; in mn88473_init() local
530 ret = regmap_write(dev->regmap[2], 0x09, 0x08); in mn88473_init()
533 ret = regmap_write(dev->regmap[2], 0x08, 0x1d); in mn88473_init()
540 c->strength.len = 1; in mn88473_init()
541 c->strength.stat[0].scale = FE_SCALE_NOT_AVAILABLE; in mn88473_init()
542 c->cnr.len = 1; in mn88473_init()
543 c->cnr.stat[0].scale = FE_SCALE_NOT_AVAILABLE; in mn88473_init()
544 c->post_bit_error.len = 1; in mn88473_init()
545 c->post_bit_error.stat[0].scale = FE_SCALE_NOT_AVAILABLE; in mn88473_init()
546 c->post_bit_count.len = 1; in mn88473_init()
547 c->post_bit_count.stat[0].scale = FE_SCALE_NOT_AVAILABLE; in mn88473_init()
548 c->block_error.len = 1; in mn88473_init()
549 c->block_error.stat[0].scale = FE_SCALE_NOT_AVAILABLE; in mn88473_init()
550 c->block_count.len = 1; in mn88473_init()
551 c->block_count.stat[0].scale = FE_SCALE_NOT_AVAILABLE; in mn88473_init()
571 ret = regmap_write(dev->regmap[2], 0x05, 0x3e); in mn88473_sleep()
666 * Also, register bank 2 do not support sequential I/O. Only single in mn88473_probe()
683 dev->client[2] = i2c_new_dummy(client->adapter, 0x1c); in mn88473_probe()
684 if (dev->client[2] == NULL) { in mn88473_probe()
686 dev_err(&client->dev, "2nd I2C registration failed\n"); in mn88473_probe()
690 dev->regmap[2] = regmap_init_i2c(dev->client[2], &regmap_config); in mn88473_probe()
691 if (IS_ERR(dev->regmap[2])) { in mn88473_probe()
692 ret = PTR_ERR(dev->regmap[2]); in mn88473_probe()
695 i2c_set_clientdata(dev->client[2], dev); in mn88473_probe()
698 ret = regmap_read(dev->regmap[2], 0xff, &uitmp); in mn88473_probe()
710 ret = regmap_write(dev->regmap[2], 0x05, 0x3e); in mn88473_probe()
724 regmap_exit(dev->regmap[2]); in mn88473_probe()
726 i2c_unregister_device(dev->client[2]); in mn88473_probe()
746 regmap_exit(dev->regmap[2]); in mn88473_remove()
747 i2c_unregister_device(dev->client[2]); in mn88473_remove()
778 MODULE_DESCRIPTION("Panasonic MN88473 DVB-T/T2/C demodulator driver");