V4L/DVB: af9013: af9013_read_status() refactoring
authorAntti Palosaari <crope@iki.fi>
Thu, 17 Jun 2010 23:56:27 +0000 (20:56 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Mon, 2 Aug 2010 19:43:12 +0000 (16:43 -0300)
Function af9013_read_status() refactoring. Read lock bits in different
order to save count of register reads.

Signed-off-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/dvb/frontends/af9013.c

index c85ab3e31773f59bd198ce3e50aedffc8901ab69..c10271aa362893da0efdbe79855065a51905a956 100644 (file)
@@ -1184,45 +1184,49 @@ static int af9013_read_status(struct dvb_frontend *fe, fe_status_t *status)
        u8 tmp;
        *status = 0;
 
-       /* TPS lock */
-       ret = af9013_read_reg_bits(state, 0xd330, 3, 1, &tmp);
-       if (ret)
-               goto error;
-       if (tmp)
-               *status |= FE_HAS_VITERBI | FE_HAS_CARRIER | FE_HAS_SIGNAL;
-
        /* MPEG2 lock */
        ret = af9013_read_reg_bits(state, 0xd507, 6, 1, &tmp);
        if (ret)
                goto error;
        if (tmp)
-               *status |= FE_HAS_SYNC | FE_HAS_LOCK;
+               *status |= FE_HAS_SIGNAL | FE_HAS_CARRIER | FE_HAS_VITERBI |
+                       FE_HAS_SYNC | FE_HAS_LOCK;
 
-       if (!(*status & FE_HAS_SIGNAL)) {
-               /* AGC lock */
-               ret = af9013_read_reg_bits(state, 0xd1a0, 6, 1, &tmp);
+       if (!*status) {
+               /* TPS lock */
+               ret = af9013_read_reg_bits(state, 0xd330, 3, 1, &tmp);
                if (ret)
                        goto error;
                if (tmp)
-                       *status |= FE_HAS_SIGNAL;
+                       *status |= FE_HAS_SIGNAL | FE_HAS_CARRIER |
+                               FE_HAS_VITERBI;
        }
 
-       if (!(*status & FE_HAS_CARRIER)) {
+       if (!*status) {
                /* CFO lock */
                ret = af9013_read_reg_bits(state, 0xd333, 7, 1, &tmp);
                if (ret)
                        goto error;
                if (tmp)
-                       *status |= FE_HAS_CARRIER;
+                       *status |= FE_HAS_SIGNAL | FE_HAS_CARRIER;
        }
 
-       if (!(*status & FE_HAS_CARRIER)) {
+       if (!*status) {
                /* SFOE lock */
                ret = af9013_read_reg_bits(state, 0xd334, 6, 1, &tmp);
                if (ret)
                        goto error;
                if (tmp)
-                       *status |= FE_HAS_CARRIER;
+                       *status |= FE_HAS_SIGNAL | FE_HAS_CARRIER;
+       }
+
+       if (!*status) {
+               /* AGC lock */
+               ret = af9013_read_reg_bits(state, 0xd1a0, 6, 1, &tmp);
+               if (ret)
+                       goto error;
+               if (tmp)
+                       *status |= FE_HAS_SIGNAL;
        }
 
        ret = af9013_update_statistics(fe);
This page took 0.027319 seconds and 5 git commands to generate.