Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3b6a567a authored by Antti Palosaari's avatar Antti Palosaari Committed by Mauro Carvalho Chehab
Browse files

[media] cxd2820r: do not allow get_frontend() when demod is not initialized



This fixes bug introduced by multi-frontend to single-frontend change.

Finally HAS_LOCK is got back!
We are not allowed to access hardware in sleep mode...
Chip did not like when .get_frontend() reads some registers while
chip was sleeping and due to that HAS_LOCK bit was never gained.

TODO: We should add logic for dvb-core to drop out illegal calls like that.

Signed-off-by: default avatarAntti Palosaari <crope@iki.fi>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 1f649729
Loading
Loading
Loading
Loading
+5 −0
Original line number Original line Diff line number Diff line
@@ -309,9 +309,14 @@ static int cxd2820r_read_status(struct dvb_frontend *fe, fe_status_t *status)


static int cxd2820r_get_frontend(struct dvb_frontend *fe)
static int cxd2820r_get_frontend(struct dvb_frontend *fe)
{
{
	struct cxd2820r_priv *priv = fe->demodulator_priv;
	int ret;
	int ret;


	dbg("%s: delsys=%d", __func__, fe->dtv_property_cache.delivery_system);
	dbg("%s: delsys=%d", __func__, fe->dtv_property_cache.delivery_system);

	if (priv->delivery_system == SYS_UNDEFINED)
		return 0;

	switch (fe->dtv_property_cache.delivery_system) {
	switch (fe->dtv_property_cache.delivery_system) {
	case SYS_DVBT:
	case SYS_DVBT:
		ret = cxd2820r_get_frontend_t(fe);
		ret = cxd2820r_get_frontend_t(fe);