Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[media] tda10071: remove legacy media attach

All users are now using I2C binding and old attach could be removed.
Use I2C client for proper logging at the same.

Signed-off-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>

authored by

Antti Palosaari and committed by
Mauro Carvalho Chehab
59ca2ce1 3250a550

+108 -238
+101 -174
drivers/media/dvb-frontends/tda10071.c
··· 29 29 static int tda10071_wr_regs(struct tda10071_priv *priv, u8 reg, u8 *val, 30 30 int len) 31 31 { 32 + struct i2c_client *client = priv->client; 32 33 int ret; 33 34 u8 buf[MAX_XFER_SIZE]; 34 35 struct i2c_msg msg[1] = { 35 36 { 36 - .addr = priv->cfg.demod_i2c_addr, 37 + .addr = client->addr, 37 38 .flags = 0, 38 39 .len = 1 + len, 39 40 .buf = buf, ··· 42 41 }; 43 42 44 43 if (1 + len > sizeof(buf)) { 45 - dev_warn(&priv->i2c->dev, 46 - "%s: i2c wr reg=%04x: len=%d is too big!\n", 47 - KBUILD_MODNAME, reg, len); 44 + dev_warn(&client->dev, "i2c wr reg=%04x: len=%d is too big!\n", 45 + reg, len); 48 46 return -EINVAL; 49 47 } 50 48 51 49 buf[0] = reg; 52 50 memcpy(&buf[1], val, len); 53 51 54 - ret = i2c_transfer(priv->i2c, msg, 1); 52 + ret = i2c_transfer(client->adapter, msg, 1); 55 53 if (ret == 1) { 56 54 ret = 0; 57 55 } else { 58 - dev_warn(&priv->i2c->dev, 59 - "%s: i2c wr failed=%d reg=%02x len=%d\n", 60 - KBUILD_MODNAME, ret, reg, len); 56 + dev_warn(&client->dev, "i2c wr failed=%d reg=%02x len=%d\n", 57 + ret, reg, len); 61 58 ret = -EREMOTEIO; 62 59 } 63 60 return ret; ··· 65 66 static int tda10071_rd_regs(struct tda10071_priv *priv, u8 reg, u8 *val, 66 67 int len) 67 68 { 69 + struct i2c_client *client = priv->client; 68 70 int ret; 69 71 u8 buf[MAX_XFER_SIZE]; 70 72 struct i2c_msg msg[2] = { 71 73 { 72 - .addr = priv->cfg.demod_i2c_addr, 74 + .addr = client->addr, 73 75 .flags = 0, 74 76 .len = 1, 75 77 .buf = &reg, 76 78 }, { 77 - .addr = priv->cfg.demod_i2c_addr, 79 + .addr = client->addr, 78 80 .flags = I2C_M_RD, 79 81 .len = len, 80 82 .buf = buf, ··· 83 83 }; 84 84 85 85 if (len > sizeof(buf)) { 86 - dev_warn(&priv->i2c->dev, 87 - "%s: i2c wr reg=%04x: len=%d is too big!\n", 88 - KBUILD_MODNAME, reg, len); 86 + dev_warn(&client->dev, "i2c wr reg=%04x: len=%d is too big!\n", 87 + reg, len); 89 88 return -EINVAL; 90 89 } 91 90 92 - ret = i2c_transfer(priv->i2c, msg, 2); 91 + ret = i2c_transfer(client->adapter, msg, 2); 93 92 if (ret == 2) { 94 93 memcpy(val, buf, len); 95 94 ret = 0; 96 95 } else { 97 - dev_warn(&priv->i2c->dev, 98 - "%s: i2c rd failed=%d reg=%02x len=%d\n", 99 - KBUILD_MODNAME, ret, reg, len); 96 + dev_warn(&client->dev, "i2c rd failed=%d reg=%02x len=%d\n", 97 + ret, reg, len); 100 98 ret = -EREMOTEIO; 101 99 } 102 100 return ret; ··· 160 162 static int tda10071_cmd_execute(struct tda10071_priv *priv, 161 163 struct tda10071_cmd *cmd) 162 164 { 165 + struct i2c_client *client = priv->client; 163 166 int ret, i; 164 167 u8 tmp; 165 168 ··· 188 189 usleep_range(200, 5000); 189 190 } 190 191 191 - dev_dbg(&priv->i2c->dev, "%s: loop=%d\n", __func__, i); 192 + dev_dbg(&client->dev, "loop=%d\n", i); 192 193 193 194 if (i == 0) { 194 195 ret = -ETIMEDOUT; ··· 197 198 198 199 return ret; 199 200 error: 200 - dev_dbg(&priv->i2c->dev, "%s: failed=%d\n", __func__, ret); 201 + dev_dbg(&client->dev, "failed=%d\n", ret); 201 202 return ret; 202 203 } 203 204 ··· 205 206 enum fe_sec_tone_mode fe_sec_tone_mode) 206 207 { 207 208 struct tda10071_priv *priv = fe->demodulator_priv; 209 + struct i2c_client *client = priv->client; 208 210 struct tda10071_cmd cmd; 209 211 int ret; 210 212 u8 tone; ··· 215 215 goto error; 216 216 } 217 217 218 - dev_dbg(&priv->i2c->dev, "%s: tone_mode=%d\n", __func__, 219 - fe_sec_tone_mode); 218 + dev_dbg(&client->dev, "tone_mode=%d\n", fe_sec_tone_mode); 220 219 221 220 switch (fe_sec_tone_mode) { 222 221 case SEC_TONE_ON: ··· 225 226 tone = 0; 226 227 break; 227 228 default: 228 - dev_dbg(&priv->i2c->dev, "%s: invalid fe_sec_tone_mode\n", 229 - __func__); 229 + dev_dbg(&client->dev, "invalid fe_sec_tone_mode\n"); 230 230 ret = -EINVAL; 231 231 goto error; 232 232 } ··· 242 244 243 245 return ret; 244 246 error: 245 - dev_dbg(&priv->i2c->dev, "%s: failed=%d\n", __func__, ret); 247 + dev_dbg(&client->dev, "failed=%d\n", ret); 246 248 return ret; 247 249 } 248 250 ··· 250 252 enum fe_sec_voltage fe_sec_voltage) 251 253 { 252 254 struct tda10071_priv *priv = fe->demodulator_priv; 255 + struct i2c_client *client = priv->client; 253 256 struct tda10071_cmd cmd; 254 257 int ret; 255 258 u8 voltage; ··· 260 261 goto error; 261 262 } 262 263 263 - dev_dbg(&priv->i2c->dev, "%s: voltage=%d\n", __func__, fe_sec_voltage); 264 + dev_dbg(&client->dev, "voltage=%d\n", fe_sec_voltage); 264 265 265 266 switch (fe_sec_voltage) { 266 267 case SEC_VOLTAGE_13: ··· 273 274 voltage = 0; 274 275 break; 275 276 default: 276 - dev_dbg(&priv->i2c->dev, "%s: invalid fe_sec_voltage\n", 277 - __func__); 277 + dev_dbg(&client->dev, "invalid fe_sec_voltage\n"); 278 278 ret = -EINVAL; 279 279 goto error; 280 280 } ··· 288 290 289 291 return ret; 290 292 error: 291 - dev_dbg(&priv->i2c->dev, "%s: failed=%d\n", __func__, ret); 293 + dev_dbg(&client->dev, "failed=%d\n", ret); 292 294 return ret; 293 295 } 294 296 ··· 296 298 struct dvb_diseqc_master_cmd *diseqc_cmd) 297 299 { 298 300 struct tda10071_priv *priv = fe->demodulator_priv; 301 + struct i2c_client *client = priv->client; 299 302 struct tda10071_cmd cmd; 300 303 int ret, i; 301 304 u8 tmp; ··· 306 307 goto error; 307 308 } 308 309 309 - dev_dbg(&priv->i2c->dev, "%s: msg_len=%d\n", __func__, 310 - diseqc_cmd->msg_len); 310 + dev_dbg(&client->dev, "msg_len=%d\n", diseqc_cmd->msg_len); 311 311 312 312 if (diseqc_cmd->msg_len < 3 || diseqc_cmd->msg_len > 6) { 313 313 ret = -EINVAL; ··· 322 324 usleep_range(10000, 20000); 323 325 } 324 326 325 - dev_dbg(&priv->i2c->dev, "%s: loop=%d\n", __func__, i); 327 + dev_dbg(&client->dev, "loop=%d\n", i); 326 328 327 329 if (i == 0) { 328 330 ret = -ETIMEDOUT; ··· 348 350 349 351 return ret; 350 352 error: 351 - dev_dbg(&priv->i2c->dev, "%s: failed=%d\n", __func__, ret); 353 + dev_dbg(&client->dev, "failed=%d\n", ret); 352 354 return ret; 353 355 } 354 356 ··· 356 358 struct dvb_diseqc_slave_reply *reply) 357 359 { 358 360 struct tda10071_priv *priv = fe->demodulator_priv; 361 + struct i2c_client *client = priv->client; 359 362 struct tda10071_cmd cmd; 360 363 int ret, i; 361 364 u8 tmp; ··· 366 367 goto error; 367 368 } 368 369 369 - dev_dbg(&priv->i2c->dev, "%s:\n", __func__); 370 + dev_dbg(&client->dev, "\n"); 370 371 371 372 /* wait LNB RX */ 372 373 for (i = 500, tmp = 0; i && !tmp; i--) { ··· 377 378 usleep_range(10000, 20000); 378 379 } 379 380 380 - dev_dbg(&priv->i2c->dev, "%s: loop=%d\n", __func__, i); 381 + dev_dbg(&client->dev, "loop=%d\n", i); 381 382 382 383 if (i == 0) { 383 384 ret = -ETIMEDOUT; ··· 407 408 408 409 return ret; 409 410 error: 410 - dev_dbg(&priv->i2c->dev, "%s: failed=%d\n", __func__, ret); 411 + dev_dbg(&client->dev, "failed=%d\n", ret); 411 412 return ret; 412 413 } 413 414 ··· 415 416 enum fe_sec_mini_cmd fe_sec_mini_cmd) 416 417 { 417 418 struct tda10071_priv *priv = fe->demodulator_priv; 419 + struct i2c_client *client = priv->client; 418 420 struct tda10071_cmd cmd; 419 421 int ret, i; 420 422 u8 tmp, burst; ··· 425 425 goto error; 426 426 } 427 427 428 - dev_dbg(&priv->i2c->dev, "%s: fe_sec_mini_cmd=%d\n", __func__, 429 - fe_sec_mini_cmd); 428 + dev_dbg(&client->dev, "fe_sec_mini_cmd=%d\n", fe_sec_mini_cmd); 430 429 431 430 switch (fe_sec_mini_cmd) { 432 431 case SEC_MINI_A: ··· 435 436 burst = 1; 436 437 break; 437 438 default: 438 - dev_dbg(&priv->i2c->dev, "%s: invalid fe_sec_mini_cmd\n", 439 - __func__); 439 + dev_dbg(&client->dev, "invalid fe_sec_mini_cmd\n"); 440 440 ret = -EINVAL; 441 441 goto error; 442 442 } ··· 449 451 usleep_range(10000, 20000); 450 452 } 451 453 452 - dev_dbg(&priv->i2c->dev, "%s: loop=%d\n", __func__, i); 454 + dev_dbg(&client->dev, "loop=%d\n", i); 453 455 454 456 if (i == 0) { 455 457 ret = -ETIMEDOUT; ··· 470 472 471 473 return ret; 472 474 error: 473 - dev_dbg(&priv->i2c->dev, "%s: failed=%d\n", __func__, ret); 475 + dev_dbg(&client->dev, "failed=%d\n", ret); 474 476 return ret; 475 477 } 476 478 477 479 static int tda10071_read_status(struct dvb_frontend *fe, enum fe_status *status) 478 480 { 479 481 struct tda10071_priv *priv = fe->demodulator_priv; 482 + struct i2c_client *client = priv->client; 480 483 int ret; 481 484 u8 tmp; 482 485 ··· 504 505 505 506 return ret; 506 507 error: 507 - dev_dbg(&priv->i2c->dev, "%s: failed=%d\n", __func__, ret); 508 + dev_dbg(&client->dev, "failed=%d\n", ret); 508 509 return ret; 509 510 } 510 511 511 512 static int tda10071_read_snr(struct dvb_frontend *fe, u16 *snr) 512 513 { 513 514 struct tda10071_priv *priv = fe->demodulator_priv; 515 + struct i2c_client *client = priv->client; 514 516 int ret; 515 517 u8 buf[2]; 516 518 ··· 530 530 531 531 return ret; 532 532 error: 533 - dev_dbg(&priv->i2c->dev, "%s: failed=%d\n", __func__, ret); 533 + dev_dbg(&client->dev, "failed=%d\n", ret); 534 534 return ret; 535 535 } 536 536 537 537 static int tda10071_read_signal_strength(struct dvb_frontend *fe, u16 *strength) 538 538 { 539 539 struct tda10071_priv *priv = fe->demodulator_priv; 540 + struct i2c_client *client = priv->client; 540 541 struct tda10071_cmd cmd; 541 542 int ret; 542 543 u8 tmp; ··· 570 569 571 570 return ret; 572 571 error: 573 - dev_dbg(&priv->i2c->dev, "%s: failed=%d\n", __func__, ret); 572 + dev_dbg(&client->dev, "failed=%d\n", ret); 574 573 return ret; 575 574 } 576 575 577 576 static int tda10071_read_ber(struct dvb_frontend *fe, u32 *ber) 578 577 { 579 578 struct tda10071_priv *priv = fe->demodulator_priv; 579 + struct i2c_client *client = priv->client; 580 580 struct tda10071_cmd cmd; 581 581 int ret, i, len; 582 582 u8 tmp, reg, buf[8]; ··· 609 607 goto error; 610 608 611 609 if (priv->meas_count[i] == tmp) { 612 - dev_dbg(&priv->i2c->dev, "%s: meas not ready=%02x\n", __func__, 613 - tmp); 610 + dev_dbg(&client->dev, "meas not ready=%02x\n", tmp); 614 611 *ber = priv->ber; 615 612 return 0; 616 613 } else { ··· 638 637 639 638 return ret; 640 639 error: 641 - dev_dbg(&priv->i2c->dev, "%s: failed=%d\n", __func__, ret); 640 + dev_dbg(&client->dev, "failed=%d\n", ret); 642 641 return ret; 643 642 } 644 643 645 644 static int tda10071_read_ucblocks(struct dvb_frontend *fe, u32 *ucblocks) 646 645 { 647 646 struct tda10071_priv *priv = fe->demodulator_priv; 647 + struct i2c_client *client = priv->client; 648 648 int ret = 0; 649 649 650 650 if (!priv->warm || !(priv->fe_status & FE_HAS_LOCK)) { ··· 659 657 660 658 return ret; 661 659 error: 662 - dev_dbg(&priv->i2c->dev, "%s: failed=%d\n", __func__, ret); 660 + dev_dbg(&client->dev, "failed=%d\n", ret); 663 661 return ret; 664 662 } 665 663 666 664 static int tda10071_set_frontend(struct dvb_frontend *fe) 667 665 { 668 666 struct tda10071_priv *priv = fe->demodulator_priv; 667 + struct i2c_client *client = priv->client; 669 668 struct tda10071_cmd cmd; 670 669 struct dtv_frontend_properties *c = &fe->dtv_property_cache; 671 670 int ret, i; 672 671 u8 mode, rolloff, pilot, inversion, div; 673 672 enum fe_modulation modulation; 674 673 675 - dev_dbg(&priv->i2c->dev, 676 - "%s: delivery_system=%d modulation=%d frequency=%d symbol_rate=%d inversion=%d pilot=%d rolloff=%d\n", 677 - __func__, c->delivery_system, c->modulation, 678 - c->frequency, c->symbol_rate, c->inversion, c->pilot, 679 - c->rolloff); 674 + dev_dbg(&client->dev, 675 + "delivery_system=%d modulation=%d frequency=%u symbol_rate=%d inversion=%d pilot=%d rolloff=%d\n", 676 + c->delivery_system, c->modulation, c->frequency, c->symbol_rate, 677 + c->inversion, c->pilot, c->rolloff); 680 678 681 679 priv->delivery_system = SYS_UNDEFINED; 682 680 ··· 698 696 inversion = 3; 699 697 break; 700 698 default: 701 - dev_dbg(&priv->i2c->dev, "%s: invalid inversion\n", __func__); 699 + dev_dbg(&client->dev, "invalid inversion\n"); 702 700 ret = -EINVAL; 703 701 goto error; 704 702 } ··· 724 722 break; 725 723 case ROLLOFF_AUTO: 726 724 default: 727 - dev_dbg(&priv->i2c->dev, "%s: invalid rolloff\n", 728 - __func__); 725 + dev_dbg(&client->dev, "invalid rolloff\n"); 729 726 ret = -EINVAL; 730 727 goto error; 731 728 } ··· 740 739 pilot = 2; 741 740 break; 742 741 default: 743 - dev_dbg(&priv->i2c->dev, "%s: invalid pilot\n", 744 - __func__); 742 + dev_dbg(&client->dev, "invalid pilot\n"); 745 743 ret = -EINVAL; 746 744 goto error; 747 745 } 748 746 break; 749 747 default: 750 - dev_dbg(&priv->i2c->dev, "%s: invalid delivery_system\n", 751 - __func__); 748 + dev_dbg(&client->dev, "invalid delivery_system\n"); 752 749 ret = -EINVAL; 753 750 goto error; 754 751 } ··· 756 757 modulation == TDA10071_MODCOD[i].modulation && 757 758 c->fec_inner == TDA10071_MODCOD[i].fec) { 758 759 mode = TDA10071_MODCOD[i].val; 759 - dev_dbg(&priv->i2c->dev, "%s: mode found=%02x\n", 760 - __func__, mode); 760 + dev_dbg(&client->dev, "mode found=%02x\n", mode); 761 761 break; 762 762 } 763 763 } 764 764 765 765 if (mode == 0xff) { 766 - dev_dbg(&priv->i2c->dev, "%s: invalid parameter combination\n", 767 - __func__); 766 + dev_dbg(&client->dev, "invalid parameter combination\n"); 768 767 ret = -EINVAL; 769 768 goto error; 770 769 } ··· 804 807 805 808 return ret; 806 809 error: 807 - dev_dbg(&priv->i2c->dev, "%s: failed=%d\n", __func__, ret); 810 + dev_dbg(&client->dev, "failed=%d\n", ret); 808 811 return ret; 809 812 } 810 813 811 814 static int tda10071_get_frontend(struct dvb_frontend *fe) 812 815 { 813 816 struct tda10071_priv *priv = fe->demodulator_priv; 817 + struct i2c_client *client = priv->client; 814 818 struct dtv_frontend_properties *c = &fe->dtv_property_cache; 815 819 int ret, i; 816 820 u8 buf[5], tmp; ··· 862 864 863 865 return ret; 864 866 error: 865 - dev_dbg(&priv->i2c->dev, "%s: failed=%d\n", __func__, ret); 867 + dev_dbg(&client->dev, "failed=%d\n", ret); 866 868 return ret; 867 869 } 868 870 869 871 static int tda10071_init(struct dvb_frontend *fe) 870 872 { 871 873 struct tda10071_priv *priv = fe->demodulator_priv; 874 + struct i2c_client *client = priv->client; 872 875 struct tda10071_cmd cmd; 873 876 int ret, i, len, remaining, fw_size; 874 877 const struct firmware *fw; ··· 889 890 }; 890 891 struct tda10071_reg_val_mask tab2[] = { 891 892 { 0xf1, 0x70, 0xff }, 892 - { 0x88, priv->cfg.pll_multiplier, 0x3f }, 893 + { 0x88, priv->pll_multiplier, 0x3f }, 893 894 { 0x89, 0x00, 0x10 }, 894 895 { 0x89, 0x10, 0x10 }, 895 896 { 0xc0, 0x01, 0x01 }, ··· 954 955 /* cold state - try to download firmware */ 955 956 956 957 /* request the firmware, this will block and timeout */ 957 - ret = request_firmware(&fw, fw_file, priv->i2c->dev.parent); 958 + ret = request_firmware(&fw, fw_file, &client->dev); 958 959 if (ret) { 959 - dev_err(&priv->i2c->dev, 960 - "%s: did not find the firmware file. (%s) Please see linux/Documentation/dvb/ for more details on firmware-problems. (%d)\n", 961 - KBUILD_MODNAME, fw_file, ret); 960 + dev_err(&client->dev, 961 + "did not find the firmware file. (%s) Please see linux/Documentation/dvb/ for more details on firmware-problems. (%d)\n", 962 + fw_file, ret); 962 963 goto error; 963 964 } 964 965 ··· 987 988 if (ret) 988 989 goto error_release_firmware; 989 990 990 - dev_info(&priv->i2c->dev, 991 - "%s: found a '%s' in cold state, will try to load a firmware\n", 992 - KBUILD_MODNAME, tda10071_ops.info.name); 993 - dev_info(&priv->i2c->dev, 994 - "%s: downloading firmware from file '%s'\n", 995 - KBUILD_MODNAME, fw_file); 991 + dev_info(&client->dev, 992 + "found a '%s' in cold state, will try to load a firmware\n", 993 + tda10071_ops.info.name); 994 + dev_info(&client->dev, "downloading firmware from file '%s'\n", 995 + fw_file); 996 996 997 997 /* do not download last byte */ 998 998 fw_size = fw->size - 1; 999 999 1000 1000 for (remaining = fw_size; remaining > 0; 1001 - remaining -= (priv->cfg.i2c_wr_max - 1)) { 1001 + remaining -= (priv->i2c_wr_max - 1)) { 1002 1002 len = remaining; 1003 - if (len > (priv->cfg.i2c_wr_max - 1)) 1004 - len = (priv->cfg.i2c_wr_max - 1); 1003 + if (len > (priv->i2c_wr_max - 1)) 1004 + len = (priv->i2c_wr_max - 1); 1005 1005 1006 1006 ret = tda10071_wr_regs(priv, 0xfa, 1007 1007 (u8 *) &fw->data[fw_size - remaining], len); 1008 1008 if (ret) { 1009 - dev_err(&priv->i2c->dev, 1010 - "%s: firmware download failed=%d\n", 1011 - KBUILD_MODNAME, ret); 1009 + dev_err(&client->dev, 1010 + "firmware download failed=%d\n", ret); 1012 1011 goto error_release_firmware; 1013 1012 } 1014 1013 } ··· 1029 1032 goto error; 1030 1033 1031 1034 if (tmp) { 1032 - dev_info(&priv->i2c->dev, "%s: firmware did not run\n", 1033 - KBUILD_MODNAME); 1035 + dev_info(&client->dev, "firmware did not run\n"); 1034 1036 ret = -EFAULT; 1035 1037 goto error; 1036 1038 } else { ··· 1046 1050 if (ret) 1047 1051 goto error; 1048 1052 1049 - dev_info(&priv->i2c->dev, "%s: firmware version %d.%d.%d.%d\n", 1050 - KBUILD_MODNAME, buf[0], buf[1], buf[2], buf[3]); 1051 - dev_info(&priv->i2c->dev, "%s: found a '%s' in warm state\n", 1052 - KBUILD_MODNAME, tda10071_ops.info.name); 1053 + dev_info(&client->dev, "firmware version %d.%d.%d.%d\n", 1054 + buf[0], buf[1], buf[2], buf[3]); 1055 + dev_info(&client->dev, "found a '%s' in warm state\n", 1056 + tda10071_ops.info.name); 1053 1057 1054 1058 ret = tda10071_rd_regs(priv, 0x81, buf, 2); 1055 1059 if (ret) 1056 1060 goto error; 1057 1061 1058 1062 cmd.args[0] = CMD_DEMOD_INIT; 1059 - cmd.args[1] = ((priv->cfg.xtal / 1000) >> 8) & 0xff; 1060 - cmd.args[2] = ((priv->cfg.xtal / 1000) >> 0) & 0xff; 1063 + cmd.args[1] = ((priv->clk / 1000) >> 8) & 0xff; 1064 + cmd.args[2] = ((priv->clk / 1000) >> 0) & 0xff; 1061 1065 cmd.args[3] = buf[0]; 1062 1066 cmd.args[4] = buf[1]; 1063 - cmd.args[5] = priv->cfg.pll_multiplier; 1064 - cmd.args[6] = priv->cfg.spec_inv; 1067 + cmd.args[5] = priv->pll_multiplier; 1068 + cmd.args[6] = priv->spec_inv; 1065 1069 cmd.args[7] = 0x00; 1066 1070 cmd.len = 8; 1067 1071 ret = tda10071_cmd_execute(priv, &cmd); 1068 1072 if (ret) 1069 1073 goto error; 1070 1074 1071 - if (priv->cfg.tuner_i2c_addr) 1072 - tmp = priv->cfg.tuner_i2c_addr; 1075 + if (priv->tuner_i2c_addr) 1076 + tmp = priv->tuner_i2c_addr; 1073 1077 else 1074 1078 tmp = 0x14; 1075 1079 ··· 1095 1099 1096 1100 cmd.args[0] = CMD_MPEG_CONFIG; 1097 1101 cmd.args[1] = 0; 1098 - cmd.args[2] = priv->cfg.ts_mode; 1102 + cmd.args[2] = priv->ts_mode; 1099 1103 cmd.args[3] = 0x00; 1100 1104 cmd.args[4] = 0x04; 1101 1105 cmd.args[5] = 0x00; ··· 1138 1142 error_release_firmware: 1139 1143 release_firmware(fw); 1140 1144 error: 1141 - dev_dbg(&priv->i2c->dev, "%s: failed=%d\n", __func__, ret); 1145 + dev_dbg(&client->dev, "failed=%d\n", ret); 1142 1146 return ret; 1143 1147 } 1144 1148 1145 1149 static int tda10071_sleep(struct dvb_frontend *fe) 1146 1150 { 1147 1151 struct tda10071_priv *priv = fe->demodulator_priv; 1152 + struct i2c_client *client = priv->client; 1148 1153 struct tda10071_cmd cmd; 1149 1154 int ret, i; 1150 1155 struct tda10071_reg_val_mask tab[] = { ··· 1183 1186 1184 1187 return ret; 1185 1188 error: 1186 - dev_dbg(&priv->i2c->dev, "%s: failed=%d\n", __func__, ret); 1189 + dev_dbg(&client->dev, "failed=%d\n", ret); 1187 1190 return ret; 1188 1191 } 1189 1192 ··· 1196 1199 1197 1200 return 0; 1198 1201 } 1199 - 1200 - static void tda10071_release(struct dvb_frontend *fe) 1201 - { 1202 - struct tda10071_priv *priv = fe->demodulator_priv; 1203 - kfree(priv); 1204 - } 1205 - 1206 - struct dvb_frontend *tda10071_attach(const struct tda10071_config *config, 1207 - struct i2c_adapter *i2c) 1208 - { 1209 - int ret; 1210 - struct tda10071_priv *priv = NULL; 1211 - u8 tmp; 1212 - 1213 - /* allocate memory for the internal priv */ 1214 - priv = kzalloc(sizeof(struct tda10071_priv), GFP_KERNEL); 1215 - if (priv == NULL) { 1216 - ret = -ENOMEM; 1217 - goto error; 1218 - } 1219 - 1220 - /* make sure demod i2c address is specified */ 1221 - if (!config->demod_i2c_addr) { 1222 - dev_dbg(&i2c->dev, "%s: invalid demod i2c address\n", __func__); 1223 - ret = -EINVAL; 1224 - goto error; 1225 - } 1226 - 1227 - /* make sure tuner i2c address is specified */ 1228 - if (!config->tuner_i2c_addr) { 1229 - dev_dbg(&i2c->dev, "%s: invalid tuner i2c address\n", __func__); 1230 - ret = -EINVAL; 1231 - goto error; 1232 - } 1233 - 1234 - /* setup the priv */ 1235 - priv->i2c = i2c; 1236 - memcpy(&priv->cfg, config, sizeof(struct tda10071_config)); 1237 - 1238 - /* chip ID */ 1239 - ret = tda10071_rd_reg(priv, 0xff, &tmp); 1240 - if (ret || tmp != 0x0f) 1241 - goto error; 1242 - 1243 - /* chip type */ 1244 - ret = tda10071_rd_reg(priv, 0xdd, &tmp); 1245 - if (ret || tmp != 0x00) 1246 - goto error; 1247 - 1248 - /* chip version */ 1249 - ret = tda10071_rd_reg(priv, 0xfe, &tmp); 1250 - if (ret || tmp != 0x01) 1251 - goto error; 1252 - 1253 - /* create dvb_frontend */ 1254 - memcpy(&priv->fe.ops, &tda10071_ops, sizeof(struct dvb_frontend_ops)); 1255 - priv->fe.demodulator_priv = priv; 1256 - 1257 - return &priv->fe; 1258 - error: 1259 - dev_dbg(&i2c->dev, "%s: failed=%d\n", __func__, ret); 1260 - kfree(priv); 1261 - return NULL; 1262 - } 1263 - EXPORT_SYMBOL(tda10071_attach); 1264 1202 1265 1203 static struct dvb_frontend_ops tda10071_ops = { 1266 1204 .delsys = { SYS_DVBS, SYS_DVBS2 }, ··· 1220 1288 FE_CAN_RECOVER | 1221 1289 FE_CAN_2G_MODULATION 1222 1290 }, 1223 - 1224 - .release = tda10071_release, 1225 1291 1226 1292 .get_tune_settings = tda10071_get_tune_settings, 1227 1293 ··· 1267 1337 } 1268 1338 1269 1339 dev->client = client; 1270 - dev->i2c = client->adapter; 1271 - dev->cfg.demod_i2c_addr = client->addr; 1272 - dev->cfg.i2c_wr_max = pdata->i2c_wr_max; 1273 - dev->cfg.ts_mode = pdata->ts_mode; 1274 - dev->cfg.spec_inv = pdata->spec_inv; 1275 - dev->cfg.xtal = pdata->clk; 1276 - dev->cfg.pll_multiplier = pdata->pll_multiplier; 1277 - dev->cfg.tuner_i2c_addr = pdata->tuner_i2c_addr; 1340 + dev->clk = pdata->clk; 1341 + dev->i2c_wr_max = pdata->i2c_wr_max; 1342 + dev->ts_mode = pdata->ts_mode; 1343 + dev->spec_inv = pdata->spec_inv; 1344 + dev->pll_multiplier = pdata->pll_multiplier; 1345 + dev->tuner_i2c_addr = pdata->tuner_i2c_addr; 1278 1346 1279 1347 /* chip ID */ 1280 1348 ret = tda10071_rd_reg(dev, 0xff, &u8tmp); ··· 1303 1375 1304 1376 /* create dvb_frontend */ 1305 1377 memcpy(&dev->fe.ops, &tda10071_ops, sizeof(struct dvb_frontend_ops)); 1306 - dev->fe.ops.release = NULL; 1307 1378 dev->fe.demodulator_priv = dev; 1308 1379 i2c_set_clientdata(client, dev); 1309 1380
+1 -62
drivers/media/dvb-frontends/tda10071.h
··· 21 21 #ifndef TDA10071_H 22 22 #define TDA10071_H 23 23 24 - #include <linux/kconfig.h> 25 24 #include <linux/dvb/frontend.h> 26 25 27 26 /* 28 27 * I2C address 29 - * 0x55, 28 + * 0x05, 0x55, 30 29 */ 31 30 32 31 /** ··· 51 52 52 53 struct dvb_frontend* (*get_dvb_frontend)(struct i2c_client *); 53 54 }; 54 - 55 - struct tda10071_config { 56 - /* Demodulator I2C address. 57 - * Default: none, must set 58 - * Values: 0x55, 59 - */ 60 - u8 demod_i2c_addr; 61 - 62 - /* Tuner I2C address. 63 - * Default: none, must set 64 - * Values: 0x14, 0x54, ... 65 - */ 66 - u8 tuner_i2c_addr; 67 - 68 - /* Max bytes I2C provider can write at once. 69 - * Note: Buffer is taken from the stack currently! 70 - * Default: none, must set 71 - * Values: 72 - */ 73 - u16 i2c_wr_max; 74 - 75 - /* TS output mode. 76 - * Default: TDA10071_TS_SERIAL 77 - * Values: 78 - */ 79 - #define TDA10071_TS_SERIAL 0 80 - #define TDA10071_TS_PARALLEL 1 81 - u8 ts_mode; 82 - 83 - /* Input spectrum inversion. 84 - * Default: 0 85 - * Values: 0, 1 86 - */ 87 - bool spec_inv; 88 - 89 - /* Xtal frequency Hz 90 - * Default: none, must set 91 - * Values: 92 - */ 93 - u32 xtal; 94 - 95 - /* PLL multiplier. 96 - * Default: none, must set 97 - * Values: 98 - */ 99 - u8 pll_multiplier; 100 - }; 101 - 102 - 103 - #if IS_REACHABLE(CONFIG_DVB_TDA10071) 104 - extern struct dvb_frontend *tda10071_attach( 105 - const struct tda10071_config *config, struct i2c_adapter *i2c); 106 - #else 107 - static inline struct dvb_frontend *tda10071_attach( 108 - const struct tda10071_config *config, struct i2c_adapter *i2c) 109 - { 110 - dev_warn(&i2c->dev, "%s: driver disabled by Kconfig\n", __func__); 111 - return NULL; 112 - } 113 - #endif 114 55 115 56 #endif /* TDA10071_H */
+6 -2
drivers/media/dvb-frontends/tda10071_priv.h
··· 26 26 #include <linux/firmware.h> 27 27 28 28 struct tda10071_priv { 29 - struct i2c_adapter *i2c; 30 29 struct dvb_frontend fe; 31 30 struct i2c_client *client; 32 - struct tda10071_config cfg; 31 + u32 clk; 32 + u16 i2c_wr_max; 33 + u8 ts_mode; 34 + bool spec_inv; 35 + u8 pll_multiplier; 36 + u8 tuner_i2c_addr; 33 37 34 38 u8 meas_count[2]; 35 39 u32 ber;