• Home
  • Raw
  • Download

Lines Matching +full:2 +full:c

2  * Panasonic MN88472 DVB-T/T2/C demodulator driver
4 * Copyright (C) 2013 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 mn88472_read_status() local
40 switch (c->delivery_system) { in mn88472_read_status()
52 ret = regmap_read(dev->regmap[2], 0x92, &utmp); in mn88472_read_status()
83 for (i = 0; i < 2; i++) { in mn88472_read_status()
84 ret = regmap_bulk_read(dev->regmap[2], 0x8e + i, in mn88472_read_status()
90 utmp1 = buf[0] << 8 | buf[1] << 0 | buf[0] >> 2; in mn88472_read_status()
93 c->strength.stat[0].scale = FE_SCALE_RELATIVE; in mn88472_read_status()
94 c->strength.stat[0].uvalue = utmp1; in mn88472_read_status()
96 c->strength.stat[0].scale = FE_SCALE_NOT_AVAILABLE; in mn88472_read_status()
100 if (*status & FE_HAS_VITERBI && c->delivery_system == SYS_DVBT) { in mn88472_read_status()
102 ret = regmap_bulk_read(dev->regmap[0], 0x9c, buf, 2); in mn88472_read_status()
108 /* CNR[dB]: 10 * log10(65536 / value) + 2 */ in mn88472_read_status()
118 c->cnr.stat[0].svalue = stmp; in mn88472_read_status()
119 c->cnr.stat[0].scale = FE_SCALE_DECIBEL; in mn88472_read_status()
121 c->delivery_system == SYS_DVBT2) { in mn88472_read_status()
124 ret = regmap_bulk_read(dev->regmap[2], 0xbc + i, in mn88472_read_status()
130 utmp = buf[1] << 8 | buf[2] << 0; in mn88472_read_status()
131 utmp1 = (buf[0] >> 2) & 0x01; /* 0=SISO, 1=MISO */ in mn88472_read_status()
141 /* CNR[dB]: 10 * log10(65536 / value) + 2 */ in mn88472_read_status()
153 c->cnr.stat[0].svalue = stmp; in mn88472_read_status()
154 c->cnr.stat[0].scale = FE_SCALE_DECIBEL; in mn88472_read_status()
156 c->delivery_system == SYS_DVBC_ANNEX_A) { in mn88472_read_status()
157 /* DVB-C CNR */ in mn88472_read_status()
163 utmp2 = buf[2] << 8 | buf[3] << 0; /* noise */ in mn88472_read_status()
176 c->cnr.stat[0].svalue = stmp; in mn88472_read_status()
177 c->cnr.stat[0].scale = FE_SCALE_DECIBEL; in mn88472_read_status()
179 c->cnr.stat[0].scale = FE_SCALE_NOT_AVAILABLE; in mn88472_read_status()
189 utmp2 = buf[2] << 8 | buf[3] << 0; in mn88472_read_status()
193 c->block_error.stat[0].scale = FE_SCALE_COUNTER; in mn88472_read_status()
194 c->block_error.stat[0].uvalue += utmp1; in mn88472_read_status()
195 c->block_count.stat[0].scale = FE_SCALE_COUNTER; in mn88472_read_status()
196 c->block_count.stat[0].uvalue += utmp2; in mn88472_read_status()
198 c->block_error.stat[0].scale = FE_SCALE_NOT_AVAILABLE; in mn88472_read_status()
199 c->block_count.stat[0].scale = FE_SCALE_NOT_AVAILABLE; in mn88472_read_status()
212 struct dtv_frontend_properties *c = &fe->dtv_property_cache; in mn88472_set_frontend() local
222 c->delivery_system, c->modulation, c->frequency, in mn88472_set_frontend()
223 c->bandwidth_hz, c->symbol_rate, c->inversion, c->stream_id); in mn88472_set_frontend()
230 switch (c->delivery_system) { in mn88472_set_frontend()
257 switch (c->delivery_system) { in mn88472_set_frontend()
260 switch (c->bandwidth_hz) { in mn88472_set_frontend()
308 ret = regmap_write(dev->regmap[2], 0x00, 0x66); in mn88472_set_frontend()
311 ret = regmap_write(dev->regmap[2], 0x01, 0x00); in mn88472_set_frontend()
314 ret = regmap_write(dev->regmap[2], 0x02, 0x01); in mn88472_set_frontend()
317 ret = regmap_write(dev->regmap[2], 0x03, delivery_system_val); in mn88472_set_frontend()
320 ret = regmap_write(dev->regmap[2], 0x04, bandwidth_val); in mn88472_set_frontend()
328 buf[2] = (utmp >> 0) & 0xff; in mn88472_set_frontend()
330 ret = regmap_write(dev->regmap[2], 0x10 + i, buf[i]); in mn88472_set_frontend()
338 ret = regmap_write(dev->regmap[2], 0x13 + i, in mn88472_set_frontend()
358 switch (c->delivery_system) { in mn88472_set_frontend()
371 ret = regmap_write(dev->regmap[2], 0x2b, 0x13); in mn88472_set_frontend()
374 ret = regmap_write(dev->regmap[2], 0x4f, 0x05); in mn88472_set_frontend()
380 ret = regmap_write(dev->regmap[2], 0x32, in mn88472_set_frontend()
381 (c->stream_id == NO_STREAM_ID_FILTER) ? 0 : in mn88472_set_frontend()
382 c->stream_id ); in mn88472_set_frontend()
393 ret = regmap_write(dev->regmap[2], 0xf8, 0x9f); in mn88472_set_frontend()
415 ret = regmap_write(dev->regmap[2], 0x05, 0x00); in mn88472_init()
418 ret = regmap_write(dev->regmap[2], 0x0b, 0x00); in mn88472_init()
421 ret = regmap_write(dev->regmap[2], 0x0c, 0x00); in mn88472_init()
484 ret = regmap_write(dev->regmap[2], 0x08, utmp); in mn88472_init()
522 ret = regmap_write(dev->regmap[2], 0x0c, 0x30); in mn88472_sleep()
525 ret = regmap_write(dev->regmap[2], 0x0b, 0x30); in mn88472_sleep()
528 ret = regmap_write(dev->regmap[2], 0x05, 0x3e); in mn88472_sleep()
589 struct dtv_frontend_properties *c; in mn88472_probe() local
621 * Also, register bank 2 do not support sequential I/O. Only single in mn88472_probe()
638 dev->client[2] = i2c_new_dummy(client->adapter, 0x1c); in mn88472_probe()
639 if (!dev->client[2]) { in mn88472_probe()
641 dev_err(&client->dev, "2nd I2C registration failed\n"); in mn88472_probe()
645 dev->regmap[2] = regmap_init_i2c(dev->client[2], &regmap_config); in mn88472_probe()
646 if (IS_ERR(dev->regmap[2])) { in mn88472_probe()
647 ret = PTR_ERR(dev->regmap[2]); in mn88472_probe()
650 i2c_set_clientdata(dev->client[2], dev); in mn88472_probe()
653 ret = regmap_read(dev->regmap[2], 0xff, &utmp); in mn88472_probe()
665 ret = regmap_write(dev->regmap[2], 0x05, 0x3e); in mn88472_probe()
676 c = &dev->fe.dtv_property_cache; in mn88472_probe()
677 c->strength.len = 1; in mn88472_probe()
678 c->cnr.len = 1; in mn88472_probe()
679 c->block_error.len = 1; in mn88472_probe()
680 c->block_count.len = 1; in mn88472_probe()
689 regmap_exit(dev->regmap[2]); in mn88472_probe()
691 i2c_unregister_device(dev->client[2]); in mn88472_probe()
711 regmap_exit(dev->regmap[2]); in mn88472_remove()
712 i2c_unregister_device(dev->client[2]); in mn88472_remove()
743 MODULE_DESCRIPTION("Panasonic MN88472 DVB-T/T2/C demodulator driver");