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

Merge branch 'v4l_for_linus' into staging/for_v3.4

* v4l_for_linus:
[media] cxd2820r: sleep on DVB-T/T2 delivery system switch
[media] anysee: fix CI init
[media] cxd2820r: remove unused parameter from cxd2820r_attach
[media] cxd2820r: fix dvb_frontend_ops

+27 -13
+9 -2
drivers/media/dvb/dvb-usb/anysee.c
··· 887 887 888 888 /* attach demod */ 889 889 adap->fe_adap[state->fe_id].fe = dvb_attach(cxd2820r_attach, 890 - &anysee_cxd2820r_config, &adap->dev->i2c_adap, 891 - NULL); 890 + &anysee_cxd2820r_config, &adap->dev->i2c_adap); 892 891 893 892 state->has_ci = true; 894 893 ··· 1185 1186 state->ci.data = d; 1186 1187 1187 1188 ret = anysee_wr_reg_mask(d, REG_IOA, (1 << 7), 0x80); 1189 + if (ret) 1190 + return ret; 1191 + 1192 + ret = anysee_wr_reg_mask(d, REG_IOD, (0 << 2)|(0 << 1)|(0 << 0), 0x07); 1193 + if (ret) 1194 + return ret; 1195 + 1196 + ret = anysee_wr_reg_mask(d, REG_IOD, (1 << 2)|(1 << 1)|(1 << 0), 0x07); 1188 1197 if (ret) 1189 1198 return ret; 1190 1199
+2 -4
drivers/media/dvb/frontends/cxd2820r.h
··· 77 77 (defined(CONFIG_DVB_CXD2820R_MODULE) && defined(MODULE)) 78 78 extern struct dvb_frontend *cxd2820r_attach( 79 79 const struct cxd2820r_config *config, 80 - struct i2c_adapter *i2c, 81 - struct dvb_frontend *fe 80 + struct i2c_adapter *i2c 82 81 ); 83 82 #else 84 83 static inline struct dvb_frontend *cxd2820r_attach( 85 84 const struct cxd2820r_config *config, 86 - struct i2c_adapter *i2c, 87 - struct dvb_frontend *fe 85 + struct i2c_adapter *i2c 88 86 ) 89 87 { 90 88 printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
+15 -5
drivers/media/dvb/frontends/cxd2820r_core.c
··· 482 482 483 483 /* switch between DVB-T and DVB-T2 when tune fails */ 484 484 if (priv->last_tune_failed) { 485 - if (priv->delivery_system == SYS_DVBT) 485 + if (priv->delivery_system == SYS_DVBT) { 486 + ret = cxd2820r_sleep_t(fe); 487 + if (ret) 488 + goto error; 489 + 486 490 c->delivery_system = SYS_DVBT2; 487 - else if (priv->delivery_system == SYS_DVBT2) 491 + } else if (priv->delivery_system == SYS_DVBT2) { 492 + ret = cxd2820r_sleep_t2(fe); 493 + if (ret) 494 + goto error; 495 + 488 496 c->delivery_system = SYS_DVBT; 497 + } 489 498 } 490 499 491 500 /* set frontend */ ··· 571 562 .delsys = { SYS_DVBT, SYS_DVBT2, SYS_DVBC_ANNEX_A }, 572 563 /* default: DVB-T/T2 */ 573 564 .info = { 574 - .name = "Sony CXD2820R (DVB-T/T2)", 565 + .name = "Sony CXD2820R", 575 566 576 567 .caps = FE_CAN_FEC_1_2 | 577 568 FE_CAN_FEC_2_3 | ··· 581 572 FE_CAN_FEC_AUTO | 582 573 FE_CAN_QPSK | 583 574 FE_CAN_QAM_16 | 575 + FE_CAN_QAM_32 | 584 576 FE_CAN_QAM_64 | 577 + FE_CAN_QAM_128 | 585 578 FE_CAN_QAM_256 | 586 579 FE_CAN_QAM_AUTO | 587 580 FE_CAN_TRANSMISSION_MODE_AUTO | ··· 613 602 }; 614 603 615 604 struct dvb_frontend *cxd2820r_attach(const struct cxd2820r_config *cfg, 616 - struct i2c_adapter *i2c, 617 - struct dvb_frontend *fe) 605 + struct i2c_adapter *i2c) 618 606 { 619 607 struct cxd2820r_priv *priv = NULL; 620 608 int ret;
+1 -2
drivers/media/video/em28xx/em28xx-dvb.c
··· 853 853 case EM28174_BOARD_PCTV_290E: 854 854 dvb->fe[0] = dvb_attach(cxd2820r_attach, 855 855 &em28xx_cxd2820r_config, 856 - &dev->i2c_adap, 857 - NULL); 856 + &dev->i2c_adap); 858 857 if (dvb->fe[0]) { 859 858 /* FE 0 attach tuner */ 860 859 if (!dvb_attach(tda18271_attach,