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

[media] DVB: allow to read back of detected parameters through S2API

Signed-off-by: Andreas Oberritter <obi@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>

authored by

Andreas Oberritter and committed by
Mauro Carvalho Chehab
bbe880b4 a5959dbe

+15 -4
+15 -4
drivers/media/dvb/dvb-core/dvb_frontend.c
··· 1023 1023 * it's being used for the legacy or new API, reducing code and complexity. 1024 1024 */ 1025 1025 static void dtv_property_cache_sync(struct dvb_frontend *fe, 1026 - struct dvb_frontend_parameters *p) 1026 + struct dtv_frontend_properties *c, 1027 + const struct dvb_frontend_parameters *p) 1027 1028 { 1028 - struct dtv_frontend_properties *c = &fe->dtv_property_cache; 1029 - 1030 1029 c->frequency = p->frequency; 1031 1030 c->inversion = p->inversion; 1032 1031 ··· 1199 1200 struct file *file) 1200 1201 { 1201 1202 const struct dtv_frontend_properties *c = &fe->dtv_property_cache; 1203 + struct dvb_frontend_private *fepriv = fe->frontend_priv; 1204 + struct dtv_frontend_properties cdetected; 1202 1205 int r; 1206 + 1207 + /* 1208 + * If the driver implements a get_frontend function, then convert 1209 + * detected parameters to S2API properties. 1210 + */ 1211 + if (fe->ops.get_frontend) { 1212 + cdetected = *c; 1213 + dtv_property_cache_sync(fe, &cdetected, &fepriv->parameters_out); 1214 + c = &cdetected; 1215 + } 1203 1216 1204 1217 switch(tvp->cmd) { 1205 1218 case DTV_FREQUENCY: ··· 1823 1812 1824 1813 memcpy (&fepriv->parameters_in, parg, 1825 1814 sizeof (struct dvb_frontend_parameters)); 1826 - dtv_property_cache_sync(fe, &fepriv->parameters_in); 1815 + dtv_property_cache_sync(fe, c, &fepriv->parameters_in); 1827 1816 } 1828 1817 1829 1818 memset(&fetunesettings, 0, sizeof(struct dvb_frontend_tune_settings));