[media] drx-j: be sure to do a full software reset
authorMauro Carvalho Chehab <m.chehab@samsung.com>
Thu, 27 Feb 2014 11:48:44 +0000 (08:48 -0300)
committerMauro Carvalho Chehab <m.chehab@samsung.com>
Tue, 4 Mar 2014 17:40:54 +0000 (14:40 -0300)
Mimic what windows driver does here: it writes 0x07 to
SIO_CC_SOFT_RST__A, instead of just 0x03.

Acked-by: Devin Heitmueller <dheitmueller@kernellabs.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
drivers/media/dvb-frontends/drx39xyj/drxj.c

index 97a30057ff0984ad73767ccde8fcbcd33522d034..ed68c52f4e962270b3cc8e38f977c0157a38074b 100644 (file)
@@ -19876,8 +19876,15 @@ int drxj_open(struct drx_demod_instance *demod)
                goto rw_error;
        }
 
-       /* Soft reset of sys- and osc-clockdomain */
-       rc = drxj_dap_write_reg16(dev_addr, SIO_CC_SOFT_RST__A, (SIO_CC_SOFT_RST_SYS__M | SIO_CC_SOFT_RST_OSC__M), 0);
+       /*
+        * Soft reset of sys- and osc-clockdomain
+        *
+        * HACK: On windows, it writes a 0x07 here, instead of just 0x03.
+        * As we didn't load the firmware here yet, we should do the same.
+        * Btw, this is coherent with DRX-K, where we send reset codes
+        * for modulation (OFTM, in DRX-k), SYS and OSC clock domains.
+        */
+       rc = drxj_dap_write_reg16(dev_addr, SIO_CC_SOFT_RST__A, (0x04 | SIO_CC_SOFT_RST_SYS__M | SIO_CC_SOFT_RST_OSC__M), 0);
        if (rc != 0) {
                pr_err("error %d\n", rc);
                goto rw_error;