add support for using multiproto drivers with old api
PATCH 1/1 add support for using multiproto drivers with old api
Hi!
The attached adds support for using multiproto drivers with the old api.
Signature · 1 line
Anssi Hannula
From: Anssi Hannula <[email protected]>
multiproto: add support for using multiproto drivers with old api
Allow using multiproto drivers with the old API. Multiproto drivers will provide one frontend type over the old API. For STB0899 this is FE_QPSK. olddrv_to_newapi() and newapi_to_olddrv() are renamed to oldapi_to_newapi() and newapi_to_oldapi(), respectively.
---
linux/drivers/media/dvb/dvb-core/dvb_frontend.c +35 -4
@@ -354,7 +354,7 @@return 0 ; } -int newapi_to_olddrv (struct dvbfe_params *params, +int newapi_to_oldapi (struct dvbfe_params *params,struct dvb_frontend_parameters *p,enum dvbfe_delsys delsys) {
@@ -466,7 +466,7 @@return 0 ; } -int olddrv_to_newapi (struct dvb_frontend *fe, +int oldapi_to_newapi (struct dvb_frontend *fe,struct dvbfe_params *params,struct dvb_frontend_parameters *p,enum fe_type fe_type)
@@ -1649,6 +1649,9 @@memset (&fetunesettings,0 ,sizeof (struct dvb_frontend_tune_settings ));memcpy (&fetunesettings.parameters, parg,sizeof (struct dvb_frontend_parameters )); +/* Request the search algorithm to search */ + fepriv->algo_status |=DVBFE_ALGO_SEARCH_AGAIN ; +/* force auto frequency inversion if requested */ if (dvb_force_auto_inversion) { fepriv->parameters.inversion =INVERSION_AUTO ;
@@ -1697,6 +1700,27 @@if (dvb_override_tune_delay >0 ) fepriv->min_delay = (dvb_override_tune_delay *HZ ) /1000 ; +if (oldapi_to_newapi (fe, &fepriv->fe_params, &fepriv->parameters, fe->ops.info.type) == -EINVAL ) +printk ("%s: ERROR !!! Converting Old parameters --> New parameters\n" , __func__); + +/* set delivery system to the default old-API one */ +if (fe->ops.set_delsys) { +switch (fe->ops.info.type) { +case FE_QPSK : + fe->ops.set_delsys (fe,DVBFE_DELSYS_DVBS ); + fe->ops.set_delsys (fe,DVBFE_DELSYS_DVBS ); +case FE_QAM : + fe->ops.set_delsys (fe,DVBFE_DELSYS_DVBC ); +break ; +case FE_OFDM : + fe->ops.set_delsys (fe,DVBFE_DELSYS_DVBT ); +break ; +case FE_ATSC : + fe->ops.set_delsys (fe,DVBFE_DELSYS_ATSC ); +break ; + } + } + fepriv->state =FESTATE_RETUNE ;dvb_frontend_wakeup (fe);dvb_frontend_add_event (fe,0 );
@@ -1720,6 +1744,13 @@if (fe->ops.get_frontend) {memcpy (parg, &fepriv->parameters,sizeof (struct dvb_frontend_parameters )); err = fe->ops.get_frontend (fe, (struct dvb_frontend_parameters *) parg); + }else if (fe->ops.get_params) { + err = fe->ops.get_params (fe, &fepriv->fe_params); +if (!err) { +if (newapi_to_oldapi (&fepriv->fe_params, &fepriv->parameters, fepriv->delsys) == -EINVAL ) +printk ("%s: ERROR !!! Converting New parameters --> Old parameters\n" , __func__); +memcpy (parg, &fepriv->parameters,sizeof (struct dvb_frontend_parameters )); + } }break ;
@@ -1751,7 +1782,7 @@ (delsys & DVBFE_DELSYS_DVBT) || (delsys & DVBFE_DELSYS_ATSC)) { -if (newapi_to_olddrv (&fepriv->fe_params, &fepriv->parameters, fepriv->delsys) == -EINVAL ) +if (newapi_to_oldapi (&fepriv->fe_params, &fepriv->parameters, fepriv->delsys) == -EINVAL )printk ("%s: ERROR !!! Converting New parameters --> Old parameters\n" , __func__); }/* Request the search algorithm to search */
@@ -1841,7 +1872,7 @@ }else if (fe->ops.get_frontend) { err = fe->ops.get_frontend (fe, &fepriv->parameters);if (!err) { -if (olddrv_to_newapi (fe, &fepriv->fe_params, &fepriv->parameters, fe->ops.info.type) == -EINVAL ) +if (oldapi_to_newapi (fe, &fepriv->fe_params, &fepriv->parameters, fe->ops.info.type) == -EINVAL )printk ("%s: ERROR !!! Converting Old parameters --> New parameters\n" , __func__);memcpy (parg, &fepriv->fe_params,sizeof (struct dvbfe_params )); }
linux/drivers/media/dvb/frontends/stb0899_drv.c +1 -0
@@ -2036,6 +2036,7 @@ .info = { .name = "STB0899 Multistandard", + .type = FE_QPSK, /* with old API */ }, .release = stb0899_release,
_______________________________________________
linux-dvb mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb
Hello Anssi,
Quoted 1 line · Anssi Hannula
The attached adds support for using multiproto drivers with the old api.
there seems to be a needlessly duplicated line in your patch:
+ /* set delivery system to the default old-API one */
+ if (fe->ops.set_delsys) {
+ switch(fe->ops.info.type) {
+ case FE_QPSK:
+ fe->ops.set_delsys(fe, DVBFE_DELSYS_DVBS);
+ fe->ops.set_delsys(fe, DVBFE_DELSYS_DVBS);
Regards,
Andreas
_______________________________________________
linux-dvb mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb
Review
Quoted 13 lines · Andreas Oberritter
Hello Anssi,
Quoted 1 line · Anssi Hannula
The attached adds support for using multiproto drivers with the old api.
there seems to be a needlessly duplicated line in your patch:
(quoted diff) +6
-0+ /* set delivery system to the default old-API one */ + if (fe->ops.set_delsys) { + switch(fe->ops.info.type) { + case FE_QPSK: + fe->ops.set_delsys(fe, DVBFE_DELSYS_DVBS); + fe->ops.set_delsys(fe, DVBFE_DELSYS_DVBS);
Strange, the latter one should be 'break;'.
Attached again.
Signature · 1 line
Anssi Hannula
From: Anssi Hannula <[email protected]>
multiproto: add support for using multiproto drivers with old api
Allow using multiproto drivers with the old API. Multiproto drivers will provide one frontend type over the old API. For STB0899 this is FE_QPSK. olddrv_to_newapi() and newapi_to_olddrv() are renamed to oldapi_to_newapi() and newapi_to_oldapi(), respectively.
---
linux/drivers/media/dvb/dvb-core/dvb_frontend.c +35 -4
@@ -354,7 +354,7 @@return 0 ; } -int newapi_to_olddrv (struct dvbfe_params *params, +int newapi_to_oldapi (struct dvbfe_params *params,struct dvb_frontend_parameters *p,enum dvbfe_delsys delsys) {
@@ -466,7 +466,7 @@return 0 ; } -int olddrv_to_newapi (struct dvb_frontend *fe, +int oldapi_to_newapi (struct dvb_frontend *fe,struct dvbfe_params *params,struct dvb_frontend_parameters *p,enum fe_type fe_type)
@@ -1649,6 +1649,9 @@memset (&fetunesettings,0 ,sizeof (struct dvb_frontend_tune_settings ));memcpy (&fetunesettings.parameters, parg,sizeof (struct dvb_frontend_parameters )); +/* Request the search algorithm to search */ + fepriv->algo_status |=DVBFE_ALGO_SEARCH_AGAIN ; +/* force auto frequency inversion if requested */ if (dvb_force_auto_inversion) { fepriv->parameters.inversion =INVERSION_AUTO ;
@@ -1697,6 +1700,27 @@if (dvb_override_tune_delay >0 ) fepriv->min_delay = (dvb_override_tune_delay *HZ ) /1000 ; +if (oldapi_to_newapi (fe, &fepriv->fe_params, &fepriv->parameters, fe->ops.info.type) == -EINVAL ) +printk ("%s: ERROR !!! Converting Old parameters --> New parameters\n" , __func__); + +/* set delivery system to the default old-API one */ +if (fe->ops.set_delsys) { +switch (fe->ops.info.type) { +case FE_QPSK : + fe->ops.set_delsys (fe,DVBFE_DELSYS_DVBS ); +break ; +case FE_QAM : + fe->ops.set_delsys (fe,DVBFE_DELSYS_DVBC ); +break ; +case FE_OFDM : + fe->ops.set_delsys (fe,DVBFE_DELSYS_DVBT ); +break ; +case FE_ATSC : + fe->ops.set_delsys (fe,DVBFE_DELSYS_ATSC ); +break ; + } + } + fepriv->state =FESTATE_RETUNE ;dvb_frontend_wakeup (fe);dvb_frontend_add_event (fe,0 );
@@ -1720,6 +1744,13 @@if (fe->ops.get_frontend) {memcpy (parg, &fepriv->parameters,sizeof (struct dvb_frontend_parameters )); err = fe->ops.get_frontend (fe, (struct dvb_frontend_parameters *) parg); + }else if (fe->ops.get_params) { + err = fe->ops.get_params (fe, &fepriv->fe_params); +if (!err) { +if (newapi_to_oldapi (&fepriv->fe_params, &fepriv->parameters, fepriv->delsys) == -EINVAL ) +printk ("%s: ERROR !!! Converting New parameters --> Old parameters\n" , __func__); +memcpy (parg, &fepriv->parameters,sizeof (struct dvb_frontend_parameters )); + } }break ;
@@ -1751,7 +1782,7 @@ (delsys & DVBFE_DELSYS_DVBT) || (delsys & DVBFE_DELSYS_ATSC)) { -if (newapi_to_olddrv (&fepriv->fe_params, &fepriv->parameters, fepriv->delsys) == -EINVAL ) +if (newapi_to_oldapi (&fepriv->fe_params, &fepriv->parameters, fepriv->delsys) == -EINVAL )printk ("%s: ERROR !!! Converting New parameters --> Old parameters\n" , __func__); }/* Request the search algorithm to search */
@@ -1841,7 +1872,7 @@ }else if (fe->ops.get_frontend) { err = fe->ops.get_frontend (fe, &fepriv->parameters);if (!err) { -if (olddrv_to_newapi (fe, &fepriv->fe_params, &fepriv->parameters, fe->ops.info.type) == -EINVAL ) +if (oldapi_to_newapi (fe, &fepriv->fe_params, &fepriv->parameters, fe->ops.info.type) == -EINVAL )printk ("%s: ERROR !!! Converting Old parameters --> New parameters\n" , __func__);memcpy (parg, &fepriv->fe_params,sizeof (struct dvbfe_params )); }
linux/drivers/media/dvb/frontends/stb0899_drv.c +1 -0
@@ -2036,6 +2036,7 @@ .info = { .name = "STB0899 Multistandard", + .type = FE_QPSK, /* with old API */ }, .release = stb0899_release,
_______________________________________________
linux-dvb mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb
2008/5/23 Anssi Hannula <[email protected]>:
Quoted 15 lines
linux/drivers/media/dvb/dvb-core/dvb_frontend.c
Quoted 13 lines · Andreas Oberritter
Hello Anssi,
Quoted 1 line · Anssi Hannula
The attached adds support for using multiproto drivers with the old api.
there seems to be a needlessly duplicated line in your patch:
linux/drivers/media/dvb/dvb-core/dvb_frontend.c +6
-0+/* set delivery system to the default old-API one */ +if (fe->ops.set_delsys) { +switch (fe->ops.info.type) { +case FE_QPSK : + fe->ops.set_delsys (fe,DVBFE_DELSYS_DVBS ); + fe->ops.set_delsys (fe,DVBFE_DELSYS_DVBS );
Quoted 6 lines
Strange, the latter one should be 'break;'.
Attached again.
--
Anssi Hannula
Thank you so much :)
I can't believe I'm watching tv in kaffeine with my multiproto card.
My card is Technotred TT Connect S2-3650 CI
Using this drivers:
dvb-core.ko
dvb-pll.ko
stb6100.ko
insmod stb0899.ko
lnbp22.ko
idvb-usb.ko
dvb-usb-pctv452e.ko
Faruk
_______________________________________________
linux-dvb mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb
Quoted 13 lines
Quoted 13 lines
linux/drivers/media/dvb/dvb-core/dvb_frontend.c
Quoted 10 lines
Quoted 1 line
The attached adds support for using multiproto drivers with the old api.
there seems to be a needlessly duplicated line in your patch:
linux/drivers/media/dvb/dvb-core/dvb_frontend.c +6
-0+/* set delivery system to the default old-API one */ +if (fe->ops.set_delsys) { +switch (fe->ops.info.type) { +case FE_QPSK : + fe->ops.set_delsys (fe,DVBFE_DELSYS_DVBS ); + fe->ops.set_delsys (fe,DVBFE_DELSYS_DVBS );Strange, the latter one should be 'break;'.
Quoted 7 lines
Quoted 4 lines
Attached again.
--
Anssi HannulaThank you so much :)
I can't believe I'm watching tv in kaffeine with my multiproto card.
what about dvb-s2 channels on your kaffeine ? how can you watch their ?
Goga
Quoted 9 lines
My card is Technotred TT Connect S2-3650 CI
Using this drivers:
dvb-core.ko
dvb-pll.ko
stb6100.ko
insmod stb0899.ko
lnbp22.ko
idvb-usb.ko
dvb-usb-pctv452e.ko
_______________________________________________
linux-dvb mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb
Quoted 3 lines
what about dvb-s2 channels on your kaffeine ? how can you watch their ?
Goga
Hi!
Right now I'm only interested in DVB-S and my CI is not supported yet.
Faruk
_______________________________________________
linux-dvb mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb
Quoted 8 lines · Goga777 wrote:
Quoted 4 lines
Quoted 1 line
Thank you so much :)
I can't believe I'm watching tv in kaffeine with my multiproto card.what about dvb-s2 channels on your kaffeine ? how can you watch their ?
i've got a kaffeine multiproto patch coming soon, it should fully support multiproto api but has been only tested on dvb-s/s2 with my cards dvbs fullfeatured and budget dvb-s2
dvb-s2 chans are working fine, other problems are h264 HD / xine / ffh264 related, i'm on 64 bit.
i'll have to test my patch against that new multiproto patch and i'll probably post my kaffeine patch on kaffeine forum later next week.. Or somewhere else if kaffeine guys don't want to see multiproto content there as i know they won't support multiproto..
the patch is supposed to be v4l-dvb / multiproto compatible so you don't need two different versions of kaffeine if you're switching api versions..
Later
Marc
_______________________________________________
linux-dvb mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb