Message ID | 1426460275-3766-4-git-send-email-benjamin@southpole.se (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 03/15/2015 11:57 PM, Benjamin Larsson wrote: > Some devices have 2 demodulators, when this is the case > make the slave demod be listed first. Enumerating the slave > first will help legacy applications to use the hardware. > Ignore this patch for now. Stuff gets broken if applied. /Benjamin -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 03/16/2015 10:44 PM, Benjamin Larsson wrote: > On 03/15/2015 11:57 PM, Benjamin Larsson wrote: >> Some devices have 2 demodulators, when this is the case >> make the slave demod be listed first. Enumerating the slave >> first will help legacy applications to use the hardware. >> > > Ignore this patch for now. Stuff gets broken if applied. I will not apply it even you fix it. I don't like idea adding such hack to kernel in order to workaround buggy applications. There is many older devices having similar situation, having 2 demods - one for DVB-T and one for DVB-C. So there has been surely enough time for app developers to add support for multiple frontends... laziness. Quite same happened for DVB-T2 support. I added initially hack for CXD2820R driver in order to support DVB-T2 even applications are not supporting it. That was implemented using trick driver did DVB-T2 tune when DVB-T tune fails. After many years I did another DVB-T2 driver Si2168 and didn't add such hack anymore. And what was result; almost all applications were still lacking proper DVB-T2 support, after many many years... So I will never ever add any hacks to driver to workaround application support as application developers are so lazy to add support or new things if there is some workaround available. regards Antti
On 03/16/2015 10:04 PM, Antti Palosaari wrote: > On 03/16/2015 10:44 PM, Benjamin Larsson wrote: >> On 03/15/2015 11:57 PM, Benjamin Larsson wrote: >>> Some devices have 2 demodulators, when this is the case >>> make the slave demod be listed first. Enumerating the slave >>> first will help legacy applications to use the hardware. >>> >> >> Ignore this patch for now. Stuff gets broken if applied. > > I will not apply it even you fix it. I don't like idea adding such hack > to kernel in order to workaround buggy applications. There is many older > devices having similar situation, having 2 demods - one for DVB-T and > one for DVB-C. So there has been surely enough time for app developers > to add support for multiple frontends... laziness. > > Quite same happened for DVB-T2 support. I added initially hack for > CXD2820R driver in order to support DVB-T2 even applications are not > supporting it. That was implemented using trick driver did DVB-T2 tune > when DVB-T tune fails. After many years I did another DVB-T2 driver > Si2168 and didn't add such hack anymore. And what was result; almost all > applications were still lacking proper DVB-T2 support, after many many > years... > > So I will never ever add any hacks to driver to workaround application > support as application developers are so lazy to add support or new > things if there is some workaround available. > > regards > Antti > While I agree with your reasoning, the point with this patch is just to register one demod before another. If that is a hack or not I don't know. I have used it locally for test purposes and it is not needed for actual use so consider the patch withdrawn. MvH Benjamin Larsson -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/media/usb/dvb-usb-v2/rtl28xxu.c b/drivers/media/usb/dvb-usb-v2/rtl28xxu.c index ea75b3a..bb5003d 100644 --- a/drivers/media/usb/dvb-usb-v2/rtl28xxu.c +++ b/drivers/media/usb/dvb-usb-v2/rtl28xxu.c @@ -853,6 +853,7 @@ static int rtl2832u_frontend_attach(struct dvb_usb_adapter *adap) if (dev->slave_demod) { struct i2c_board_info info = {}; + struct dvb_frontend *tmp_fe; /* * We continue on reduced mode, without DVB-T2/C, using master @@ -907,6 +908,11 @@ static int rtl2832u_frontend_attach(struct dvb_usb_adapter *adap) dev->i2c_client_slave_demod = client; } + + /* Swap frontend order */ + tmp_fe = adap->fe[0]; + adap->fe[0] = adap->fe[1]; + adap->fe[1] = tmp_fe; } return 0; @@ -1134,12 +1140,6 @@ static int rtl2832u_tuner_attach(struct dvb_usb_adapter *adap) adap->fe[0]->ops.tuner_ops.get_rf_strength; break; case TUNER_RTL2832_R828D: - fe = dvb_attach(r820t_attach, adap->fe[0], - dev->demod_i2c_adapter, - &rtl2832u_r828d_config); - adap->fe[0]->ops.read_signal_strength = - adap->fe[0]->ops.tuner_ops.get_rf_strength; - if (adap->fe[1]) { fe = dvb_attach(r820t_attach, adap->fe[1], dev->demod_i2c_adapter, @@ -1147,6 +1147,12 @@ static int rtl2832u_tuner_attach(struct dvb_usb_adapter *adap) adap->fe[1]->ops.read_signal_strength = adap->fe[1]->ops.tuner_ops.get_rf_strength; } + + fe = dvb_attach(r820t_attach, adap->fe[0], + dev->demod_i2c_adapter, + &rtl2832u_r828d_config); + adap->fe[0]->ops.read_signal_strength = + adap->fe[0]->ops.tuner_ops.get_rf_strength; break; default: dev_err(&d->intf->dev, "unknown tuner %d\n", dev->tuner);
Some devices have 2 demodulators, when this is the case make the slave demod be listed first. Enumerating the slave first will help legacy applications to use the hardware. Signed-off-by: Benjamin Larsson <benjamin@southpole.se> --- drivers/media/usb/dvb-usb-v2/rtl28xxu.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-)